2010-10-11

What to do?

I have the tendency to start projects and never complete them. I'm not sure why I'm doing this, but I guess it's because I tend to get bored after a while.
At the moment I have several projects in mind, but I'm not sure what to choose.

My current/upcoming projects:
  • musikCube 2: We started this project some years ago and I've done the mayor part of the codebase, but it got stalled when there was only I left in the project and we had also decided to switch to QT and that was a real energy drainer. I'd like to get this project going again, but there is so much effort to be put down before there will be any kind of release.
  • webspeed project: I've been researching how to get the maximum speed out of the web and found out that I'd like to do a C++ fastcgi framework. The project is all in my mind right now and I really think it could become a brilliant project.
  • Radix trie: You may have seen my latest blog posts about "associative array" benchmarks. I've started on a radix trie that is almost finished, but at the moment I actually do not have the use for it myself and therefore I do not see the point in finishing it.
  • Work projects: I have 2 projects for work that I'd like to do. But work projects should be done during working hours.

All of the projects are really interesting, but why should I complete them?
A project should have any or several of the following motivation factors:
  • Money. The work projects are partially motivated by money, but I do not earn more money if I develop them outside working hours.
  • Curiosity. Like my radix trie project. Can I do this better/faster than everyone else?
  • Need. A project that fulfills a need. musikCube 2 was this kind of project in the beginning. But nowadays I just use spotify instead.
  • Kudos. Sometimes a project is driven by the fact that other users/developers express their gratitude for the project. The best gratitude is when a project is being used alot by others.
For a project to really take of, it probably requires more than one of the motivation factors.
Right now, I'm not sure if any of my projects fall into more than one factor, so I guess that's why I'm not developing anything instead.

2 comments:

  1. I would say "go for mC2", but your reasons against such decision make sense. Being the last man standing is no fun, especially when own needs are lower than before (well, in Germany there is no Spotify and I haven't found a mC-like audio player)...

    The other projects seem to be very special interest stuff, so there is intersection of the motivation factors even smaller.

    Keep ya head up!
    -Doc

    ReplyDelete
  2. It will be hard to push mc2 when you are alone. But mc2 has an attractive BSD license, which makes it unique among other players.

    If you want to see how to get maximum speed out of the web - I suggest to see gevent WSGI server code. I doubt you'll find anything faster and more featured. It is under MIT license.

    I do not know why do you prefer C++ while Objective-C is going to be the language of the year and me personally prefer Python when working alone. Python has standard dict type that may (or may not) benefit from your radix trie implementation. You will receive a better feedback from Python community in any case.

    Choosing Qt is not that bad, really. Now that Nokia released their PySide bindings, it is possible to quickly prototype a cross-platform GUI in Python using underlying audio layer from C++. I can help with getting started, but its better discuss this in ML.

    In order to make mc2 picked up I can suggest several steps.
    1. switch to Mercurial so that people can fork and patch it more easily
    2. define some timeframe for development (like two weeks), so that we can synchronize to do some features
    3. real plan to minimize energy drains - like making one little feature at a time

    ReplyDelete