Reinventing the Wheel

Examining my schedule today, I counted five active software projects (discounting PhD-related projects) I am currently involved with:

  1. Let's Build A Compiler: Redux
  2. DexOS/ARM9, a port of the Intel i386 DexOS to an ARM9 Development Board
  3. DexOS/CPADS, a platform-independent virtual machine for Assembly Language Operating Systems
  4. DexOS Wiki, comprehensive documentation for the DexOS community
  5. A Confidential iPhone Application Project

That list doesn't encompass ideas that are in varying stages of fertilization, like Arduino32, ProcessingDS and Menuet.NET. Then there are more projects I than I care to count that have been thrown to the wayside. Reflecting upon this messy state of affairs, I declared to myself that I needed to pick a project and follow it through to completion (or at least until I can palm it off to a maintainer who actually cares). This reflection lead to further thought on my programming practices...

I like to start a project tabula rasa, usually with me reinventing the wheel. It usually starts-out as a cool idea which then proceeds to first-page google searches for existing solutions, a cursory read if the search yields related or tangential results. Finally, it ends up with either a prototype system or complete failure followed by relegation to the dusty project archives.

While this state of affairs leads to the exploration of many cool ideas, these projects never see the light of day or contribute significantly to ongoing software projects. So with my free time (ha!) being significantly small, what do I do?

Prototype the next cool idea!