I had been taking a lot of digital pictures over the last few months, especially of my daughter. The numbers had grown so much that managing them was getting out of hand, so I did what most programers would do. I wrote code to do the backup. I used Ruby for the project and at the end I was the proud owner of a command line utility that backs up all pictures taken after a specific date and I then burn them onto CDs. After I wrote the program one of the things that bugged me is why did I do this? There are already tons of programs out there which do the same and I'm sure does a better job of it. Many of them are free as well, so price is not an issue. Over the last year I wrote a lot of major stuff which I could have done without. The list goes like WinForm custom-controls, web-cam motion detectors, ruby web server, C++ web server, text web-browser (similar to lynx), chat client/server, shell-extensions, lot of console utilities, game of tic-tac-toe, screen-saver framework, Rss aggregator/generators, source line count utility and the list goes on.

I have seen other coders have this similar do-it yourself trait where they write redundant stuff to take care of their day-to-day requirements or just for fun. But the question is why they do it. I think the reasons are varied and may include

  1. I think I can do a better job
  2. All tools out there sucks (mine doesn't)
  3. I feel macho when I can write a web-server (hehe I am going to give Apache and IIS run for there money)
  4. Plain paranoia, I cannot live without knowing how motion-detection works and the fact that the author of that sample knows it. Does he think he knows more then me?
  5. The fun when you get it done and the thing actually works!!!

But seriously, I think this do it yourself teaches you a lot. And when one experiments with existing things new ideas come up and innovation takes place. So onto my next redundant project...