Mind.random()

random ramblings of an eccentric programmer

Am I a Boiling Frog?

This is some writeup i wrote for our technical forum in Credit Suisse. Thought you’d be interested.

Rephrasing the adage in relation to the vi and the emacs, “Nobody uses two programming languages in a single sentence and gets away without getting involved in a war”.  This article is definitely not supposed to moot a language war or a Babel Tower scene.  This is just a “-verbose” of what is currently running in my mind and i am sure there will be agreements and disagreements to the thought.

Most of us here have been programming primarily in one single language for the past 5~ years and I personally feel that we are giving Larry Wall’s quote a whole different meaning - “The three chief virtues of a programmer are: Laziness, Impatience and Hubris” - We are lazy to do things the right way, we are impatient with deadlines and we are amazingly arrogant of the useless years of experience we have. The quote, not surprisingly, just meant this - http://www.hhhh.org/wiml/virtues.html. Talking about experience, a friend of mine (who had 4 years of IT experience) was asked an interesting question when he took up an interview - “What do you think your experience factor is?  Meaning, Is your experience 41 year or 22 years or 1*4 years?”. The interviewer is basically asking him the amount of repetitive work he has done over the past 4 years and how much of new learning is involved.

When was the last time we read a technical book?

Most of us commute by train and I am sure most of us are sick seeing the same old trees and roads. Pick a book, any technical book this month and see the difference in your confidence.

Is our testing process systematic?

Diving into a fully blown Agile methodology or XP (http://en.wikipedia.org/wiki/Extreme_Programming) overnight is a difficult task. However, it is not difficult going for Test Driven Development (http://en.wikipedia.org/wiki/Test-driven_development) or incremental writing of JUnit/NUnit testcases to cover major portion of your code.

Are we writing code which are actually Object oriented or reusable?

This is tricky. We know that just because we use a Object Oriented language doesn’t make our code object oriented.  For example, programming to interface and not implementation is something which was advocated in Gang of Four back in 1995 (http://www.c2.com/cgi/wiki?GangOfFour) but except for the forced coding to interface in EJBs, I personally didn’t see its usage anywhere else. And even more demotivating is our usage of Abstractions.

Do we have a proper code review mechanism?

“Given enough eyeballs, all bugs are shallow”. That was Eric Raymond in “The Cathedral and the Bazaar” (http://www.catb.org/~esr/writings/cathedral-bazaar /cathedral-bazaar/) talking about Linux and the Open Source movement. We definitely can’t/don’t do pair programming to have line-by-line reviews. However, it is always good to have a review, at the least for a major enhancement.

Are we taking the “shortcut” method to fix an issue instead of the “long but right” method?

Is our code a broken window? (http://www.artima.com/intv/fixit2.html).

Lastly, Are we becoming the Boiling Frog? (http://en.wikipedia.org/wiki/Boiling_frog)

What do you think?

Stories for Programmer

I compiled few interesting problem solving stories for a training today in my office. Thought you might be interested. I am sure every story will be helpful.

Programmer Stories.ppt

Immediate sources for the stories : The Holy Bible The Pragmatic Programmer - Andrew Hunt & David Thomas How To Think Like a Programmer: Problem-solving for the Bewildered - Paul Vicker The Mythical Man Month  - Frederick Brooks Jr.

The Yin and Yang

Last night, I was watching the movie “Street Fighter - The Legend of Chun Li”. Though the storyline is about a girl who takes revenge for the abduction and murder of her father, there was subtle yet strong message in the movie. Master Gen, who trains Chun Li in Wushu, was actually a former accomplice of the villain. He mends his ways and tries to make good of his former evil actions. At one point in the movie during the training, he drew the “Yin and Yang” with his legs on sand. How meaningful and thoughful.

I slept over with this thought. After reading the rest of this text, I am sure many would say to themselves “Hey, I’ve been through this” or “I have done this” or even “I was this”. Over a period of time we have all seen the good and the bad side of life and people. Our fight has always been more to prove that other people were wrong than to satisfy our measly ego. In simple words, we are fighting for those people who show their summer side after proving them wrong.

Toggling between the mean Booking supervisor in one station and sweetest and caring Booking Supervisor in another station in Railways, between the exploiting Senior booking clerk who forced me to work his shifts and another Senior Clerk who helped me buy the first branded shirt for my first birthday alone and between the supervisor who made me have lunch everyday at 4 and the supervisor who bothered to bring me lunch everytime he returned from his home in Trichy, between the molesting whores and Khalasis when I slept on the platform and seniors who offered to share their homes for me to stay, between the Police Senior Reporter who bailed me out of the greatest personal problem in my life and the chief reporter who purposefully prevented me from attending classes at 7 in business school saying “I wouldn’t allow you to use this office as your launchpad”, between the Inspector who treated me like $hit just because I was 20 and the DSP who treated me like his son bringing me tea on late nights, between the considerate SP who cared to ask why I refused to take a work and a chief reporter who got me transferred to Sivagangai for the same reason, between the girlfriend who ditched me for my own friend and the girl who attempted suicide for me (I am lucky to have married her) … the list goes on an on… and things arent any better today.

Yesterday, I saw an Indian who shivered and offered his seat for a man who carried a “few days old” infant. The man was standing with the kid for at least 10 seconds in the middle of the train and nobody else bothered. Previously, I used to have the general thought that everybody gets when they travel across seas.. “why am I not good looking?” or “why don’t I belong to that race?”. Those thoughts were long gone and yesterday I felt really proud that I am an Indian. If it were India, the same scene would have been funny. The whole train/bus would have stood. Of course, I don’t deny the existence of those “confused Desis”.

The downside of the past and the way “Yin and Yang” is balanced is painful but I have something to carry for the rest of my life. Somebody quoted, “If a book is able to give you one single point to ponder, then it has served its purpose”. Taking the nature of my job into consideration, I am done reading more than half of the book and have a lot of things to think over. A month ago, I was reading the book “The Last Lecture” by Randy Pausch, a Professor from Carnegie Mellon, diagnosed as having terminal Pancreatic cancer, having three children - two of them infants. He wrote some valuable notes for his children. The read was emotional. The downside is that he was dying and is trying hard to instill memories of him on his children. The upside - he knows when he is going to die.

PowerISO for Linux (Unrecognized Parameter Error)

Just realised today that PowerISO (http://www.poweriso.com/download.htm) is available for Linux and its free too.  I have a weird feeling of liberation nowadays though i have been using Linux for more than two years now.

The manual goes like this

PowerISO   Copyright(C) 2004-2008 PowerISO Computing, Inc Type poweriso -? for help

Usage:    poweriso <command> [parameters] [-switches]

<Commands>

list <image file> <directory>    List files and directories in image file. Example:  List all files and directories in root direcory of /home/sam/test.iso . Command: ** poweriso list /home/sam/test.iso / -r**

extract <image file> <dir/file name>   Extract files/directories from image file. Example:  Extract all files and directories in root direcory of /home/sam/test.iso to /home/sam/test recursively. Command:  **poweriso extract /home/sam/test.iso / -od /home/sam/test**

convert <image file>    Convert image file to other format. Example:  Convert /home/sam/test.daa to standard iso file Command:  **poweriso convert /home/sam/test.daa -o /home/sam/test.iso -ot iso**

Do take note of the “/” before -od and -r. It throws a weird “Unrecognized parameter:”

Middle Finger for Microsoft !!!

Microsoft is becoming a house of ironies in more ways than one.   Sick support of ODF on Office 2007 SP2 has been old news. Now the latest news hanging around is that their search is going to be Hadoop/Hbase based.  I am sure you are already thinking “Isnt Hadoop, an Apache project?”. Yes it is. So much for the anti-open source shouts from them.

MS Search = ( ( ((Hadoop)Lucene)Java) + ASF) && (! .Net) && (!Dignity)

That’s their business formula, I guess. I wish i could curse now !!!

http://news.cnet.com/8301-13505_3-10235400-16.html

http://tech.slashdot.org/article.pl?sid=09/05/09/201210

Random Thoughts

1) Read that the open source movement got a big spur during the 2000 slow down and researchers estimate another spur now. Very evident by the increase in the number of participants and projects. Blessing in disguise but lets keep the laid off in our prayers.

2) Planning for integrating IzPack into Snapman over the weekend. Successfully implemented the InfixToPostFix conversion and evaluation algorithm. Need to have more tricks in my bag (Man !! i really wish i got good comp science education)

3) Had trouble running azureus on Jaunty Jantelope (Ubuntu 9.04). Executing from terminal showed that it is looking for open jdk 6. So, just installed Open JDK after uninstalling the gcj. Noob fix but still it solves my problem.

4) Bug # 1 in Ubuntu bugs.. hahhaha https://launchpad.net/ubuntu/+bug/1 Yup. Thats the real bug.

I think i seriously need to develop some expertise to write something daily for my blog.

SnapMan 1.0 Released

I was looking for something like JScreenSpy for monitoring my laptop’s usage. Unfortunately, there isnt something around except JScreenSpy and a portion of JScreenSpy rewritten in Python (pyScreenSpy). More to my disappointment, I found no source code for the project.

So, I thought I could write something myself and released “SnapMan” yesterday. https://sourceforge.net/projects/snapman/

Here goes the description of the project

SnapMan is a tiny java program with an integrated timer (opensymphony quartz). It takes snapshots of your desktop in regular intervals and saves it into a specified folder. Intervals and target folder is made configurable. Intervales are all Cron/At compatible.

The code is released under GPL. This is my first “public” code. So, please let me know if i need to improve (or tell me i am nowhere).  All constructive and destructive comments are welcome.

I will probably be writing a Cron expression generator this weekend because i find it very difficult to pick up.  I specially like the Gnome Scheduler interface (Python) with immediate translations to plain english.

I am also planning to make the target folder of the pictures encrypted (any pointers will be highly appreciated)