My foray into web development: GWT/CRON-o-Meter
It’s not fully functional yet, and I don’t have a hosting environment set up yet, but you can see from this screenshot that it’s looking pretty decent. I’ve written the whole codebase from scratch, although it’s design is obviously heavily patterned from the current CRON-o-Meter application. I haven’t done any serious web programming since about 2003, so things have changed quite a bit. The technologies have improved greatly, but one thing that hasn’t changed is that web programming is still a giant pile of ass. CSS sucks, browsers suck, SQL databases suck, and client/server communication over http sucks. GWT helps immensely at hiding much of this, but to do anything non-trivial means getting down and dirty into all of these niggle idiosyncrasies of web development. Ranting aside, it has still been fun and I have enjoyed getting back up to speed with the latest cutting edge web technologies.
A big design decision was that you can only log in using a google account (using a service called OpenId that lets other websites authenticate your identity). I had initially started building it with my own home-baked user authentication system, but decided that for now it is ultimately a huge time saver to just use OpenId. It removes a huge amount of hassle from developing a system to securely manage accounts. I can just piggyback off of google this way, which is just great. I don’t have to worry about account creation, secure password hashing, validating email addresses, resetting forgotten passwords, and so on. If I had to write this all myself, it would likely have bugs and security holes. Instead, I can just focus on the application core.
It’s hard to put together a serious application like this in my spare time, as coding generally needs long sessions of uninterrupted flow time to make progress. Most evenings I’m too burnt out from work to do more coding, or I’ve got all that pesky socializing to do. So generally it’s a little fit of progress each Sunday afternoon. Alas, don’t expect a finished product anytime soon.