A good year for learningSun, 30th Dec '12, 9:00 pm::
Instead of making new resolutions for 2013, I'm sticking with my goals for 2012 - keep on learning. Earlier this year I decided to learn as many different things as interest me - both in depth and breadth. I had no specific target in mind and let my curiosity roam free. Along the way I learned new programming languages, design patterns, and frameworks. I spent weeks digging into the history of the Middle-East conflict and petroleum extraction processes. I learned how to solve the Rubik's Cube in under 3 minutes. I watched hundreds of hours of videos on topics ranging from bio-mechanical engineering and sociology to linguistics and quantum electrodynamics.
I don't think my new-found understanding of how to efficiently compare nucleotide sequences is going to come in handy during my next database project but it makes me realize how much there is to know and how little I still do. I feel I know one percent of one percent of an iota of a minuscule amount of things that are knowable in my own field of computer science. And I know a millionth of that when it comes to biology, astronomy, or art history.
I've been programming since I was ten. During my over two decades of programming, I have spent countless hours digging into everything from transliteration and linear programming to network services and video encoding. Yet I have barely touched the surface of computer vision, neural networks, natural language processing, or machine learning. I have yet to build my own robots! 2013 is going to be the year I learn a lot more things. And I'm looking forward to it more than ever. Happy New Year!
Bank Error in Your FavorSat, 8th Dec '12, 1:20 pm::
It's a gorgeous winter day here in Florida. Perfect weather, sunny skies, and best of all, someone else made a mistake in my favor. I went to the county services to file some paperwork and they made a mistake. Since they could not reverse the transaction, they offered to provide me two future services at no charge. Now I don't go around looking for free deals or figure out ways to beat the system; not worth the effort in most cases. But I do appreciate those "Bank Error in Your Favor. Collect $200" instances because more often than not, the error is not in my favor and I have to waste a lot of time correcting someone else's fault.
On the topic of fault, having written quite a few business software applications, I have a tremendous amount of empathy for clerical workers and customer service personnel. Not just because they have to face irate customers and frantic callers on a daily basis but rather because their fault is not usually theirs. I do not blame the clerk today for processing my paperwork incorrectly when she clicked A instead of B. All humans make mistakes. I fault the developers of the system who do not provide her a way to fix the mistake by reversing the transaction with minimal effort.
In defense of the developers, it is not always easy to build an "undo" transaction in every system and there is a significant cost associated with reversing entries that have already been posted. Instead of having just two types of transactions "purchase" and "sales", you now need two more - "purchase return" and "sales return". If you were selling ID tags with serial numbers, now you need "undo issue" and "undo payment" transactions. These additional types of transactions have to be included in every screen, journal, table, and report, increasing the cost of development.
Since I have yet to come across a software development project with infinite budget, usually the features that get cut are the ones that would help reverse human errors. Instead of paying for an expensive undo button, administrators prefer to provide additional training to the users so they do not make mistakes. But humans always make mistakes. And when they cannot fix it, the feeling of helplessness causes low morale, irritability, and overall loss in productivity. If you see a long line and stressed out customer service personnel, be nice to them because the fault is most likely not entirely theirs, even when they type 3 instead of 2.