I guess like many a geek, I've a laundry list of half-started or only-exists-in-my-head projects. Every year I decide I'm going to work on them more, and then I don't really. (See: last year, the year before that, and the year before THAT.)

So, in keeping with tradition I'm going to come up with another way to get me working on these maybe-cool-ideas I have. Maybe I'll even break with tradition and stick with it. Who knows?

This year's half-arsed attempt at personal productivity will come from the combination of the schedule I tried to stick to a couple of months ago (and will be reinstating after the holidays) and focussing on a single project.

But what project to pick? I've a handful of different ideas that I've either started on or been pondering for a while. In no particular order:

  1. A cat-based social networking website. No, seriously. It's a bit more niche an idea than Catster, and I've got an existing proof of concept in the form of a LiveJournal community. The actual trick here isn't the site per se, it's that I want to build it as an example of a highly-resilient web application which should be able to scale automatically and have a worst case (ie, losing an entire data centre/Amazon Region) MTTR that's limited mainly by DNS TTLs. This project is rated 'very hard'.
  2. Version 2 of The major work with the 'business logic' has already been done, so the interesting part of this is that it's going to use SQLite for storage and needs to be able to scale to many people viewing it at once. My plan for that is to cache objects, possibly JSON objects, in Redis. This project is rated 'moderate'.
  3. An iPhone app based on the idea I tweeted here. This would involve learning ObjectiveC, which I've never really used before. Historically I've not had much success with statically-typed languages. It's also involve some machine vision stuff, although there's libraries available to help with that stuff. This project is rated 'very hard'.
  4. An implementation of a TinyMUSH-like game in Ruby, with the in-game language being derived from Ruby and Redis for the datastore. (TinyMUSH used GDBM, which is a simple key/value store, I reckon Redis' additional object types might be useful here). This is a pretty big undertaking, not least because my lack of traditional CompSci background means I've never written a parser before (and even if the built-in language is derived from Ruby it'd still need a full parser since you can't just eval() user input and not expect to have problems). There's also the minor issue of writing a stable multi-user server. I'd probably develop this one as open source, so at least once it gets to a certain level of development I can maybe find other people who look back on telnet-based services with the same nostalgia I do. This project is rated 'really fucking hard'.

I think all four are good projects in their own right, plus offer a good learning opportunity even if the core idea turns out to be rubbish.

So starting from next week which should I be hacking on in the evenings? Let me know what you think of these four ideas in comments to this post, or by sending me a tweet!