Monday, May 31, 2010


In the last year or so, I've launched maybe four legitimately-sized personal projects: The Voting Game, Dinnnner, Is It A Party?, and Whistle Weasel.

The Voting Game still exists, albeit with some big flaws (when you create a game, it's public; the workflow is unintuitive; doesn't really support people not voting for certain things; you can accidentally delete an object). Dinnnner crashed and burned due to issues with people not getting emails; plus, it was not really any better than a mailing list. (I didn't talk about it much; don't worry about it.) Is It A Party? is still rocking, for all four of its users (literally), and Whistle Weasel... has issues:

First of all, it crashes if you try to use a Motorola Droid, despite Android's attempts to be the one OS for a lot of phones. Second of all, I just found out the new version of Android (2.2, or "Froyo" as it's unfortunately known) changes something about the audio recorder calibration. So even if you whistle a very high note, you can't get more than 1/4 of the way up the screen. This makes gameplay less than fun, to say the least.

What to do?
1. I hard-coded the calibration values; I could just re-hard-code them with a value that works on Froyo. But then, if you still had the old OS (Eclair), it would not work.
2. Add a new startup flow where it shows the splash screen, then there's a screen that says "whistle as low as you can", then "whistle as high as you can", then it lets you actually start the game. This would be a lot of work.
3. Scrap it.
4. Hard-code the Froyo value so at least it's on my phone and I can demo it as a party trick, then otherwise scrap it.

I'm leaning towards #4, and here's why: I'm not interested anymore. I didn't set out to make an enterprise-grade bit of software, or even a game that's worth $1. I set out to make a silly game that you control by whistling. Also, my code is not very good; the audio recording code I could probably fix up, but I think I've made big mistakes with the UI code design, which is to say, there is not much UI code design.

So what's the big deal? I feel like I'm trying to build up a portfolio. Sure I can write servers at work, but I can also write mobile apps, see? And if it's alive and kicking, I can point to it as a legit Thing That I've Done. (why? I dunno...) Also, I've hit the UI-code-sucks snag with all four of my side projects, and while they've been mostly small enough to limp along with ugly code, I've never relished diving back in to the UI. I'd like to actually make a solid maintainable program.

But I think I should let it go. I'm learning each time, so maybe next time when I'm interested in another program, I can design it better from the start. Software is transient anyway, and any energy maintaining this would be more energy not spent doing something else exciting and useful, and either way, nobody will remember it in 5 years. Finally, I should really lighten up: writing software on the side while you already have a full-time job writing software is hard work. Sheesh, this is supposed to be fun!

Side note: pretty much all of my problems with Android have come from the AudioRecord class, which is supposed to let you record audio and fiddle with it on-the-fly (as opposed to saving it to a file). I think my next project should not involve recording audio.

No comments: