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
- I think I can do a better job
- All tools out there sucks (mine doesn't)
- I feel macho when I can write a web-server (hehe I am going to give Apache and IIS run for there money)
- 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?
- 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...