Hindsight: 2009
I’m late to the game with my ”What was 2009” post but I’ve been really busy working on some stuff. 10 days late… sue me.
2009 was a big year for me. I set some real goals for the year, some a little far reaching that I missed, but that’s alright.
How the year started
I went into 2009 rather optimistic. We had just gotten the green light on starting up the Bodega project (originally called Prospector, just in case you were wondering), and hired Phil at IDFusion. We knew “we want to build this thing” but really had no clue how we were going to go about it by Jan 1, 2009. This was the first time I was going to get to work full time on a Cocoa project that was my own idea. FridgeNotes 1.0 was weeks away from being ready for the AppStore. NetworkLocation 3.1 development was coming along nicely… was expecting a release in February.
The New Years Eve for 2009 was probably the funnest NYE I’ve ever had. Spent it with some great friends, some of which were moving away very shortly after.
I pretty much started the year off by taking a week to go to Puerto Vallarta, Mexico with the parents. That was a great experience, on top of being a well-deserved vacation, after nearly 3 years without taking any real time off. I was actually a little surprised by how much I enjoyed it. Having internet access only when we were back at our apartment and only via my iPhone (I had mentally prepped myself for actually having to be unplugged for a week). I got to hang out with my parents in a way that we’ve never been able to before, we had a lot of really interesting conversations. Loved the scenery and the people down there. Came back ready to rock.
2009 actually sort of sucked musically for me. I didn’t get to see too many good shows. Actually… well… that might not be true. I saw Above & Beyond in Vancouver which was “omfg, heaven!” good. In Winnipeg I saw… Armin van Buuren, Arnej, Glenn Morrisson, Markus Schulz, and Tiesto. Really wanted to see Aly & Fila at some point in 2009 though.
What Wasn’t So Good
If I had to pick something about 2009 that I didn’t like… the development (or lack-thereof) of FridgeNotes 1.0. For 7 months that project was at a near stand-still because the server component wasn’t 100% completed and I was too stubborn to learn Ruby on Rails properly to finish it. I’ve done some Rails before and I hated every minute of it. I still hate rails, and I still refuse to touch the server component of FridgeNotes beyond doing queries in the database. This caused me an insane amount of stress; I went into 2009 with no gray hair… and now I have more than a handful of the bastards. The lesson I learned from this is to not let someone else choose the technology without my input if there’s any chance of my having to get my hands dirty in it later. I literally gave the go-ahead to “use whatever you see fit.” It bit me in the ass. Not happening again.
The other thing I’m not too happy with is that NetworkLocation 3.1 never happened. We released something labeled 3.1 in September, but it wasn’t what I was working in Dec 2008. Every feature I was working on was moved over to v3.2, and 3.1 became a “Make NL work in Snow Leopard” release. There were quite a few bugfix releases of NL during the year, but no big feature releases.
What Actually Was Good
Bodega became a reality. From zero lines of code to many tens of thousands in both the Cocoa client and the server component. v0.9 was released just before the year ended; I’m very proud of what we’ve been able to produce in this amount of time, with the little resources we’ve had. Props to Chris V for stepping up to the plate, and coding like a mad-man day in day out. He’s logged a lot more lines of code on this app than I have. Getting the opportunity to sponsor the SFMacIndie party at WWDC on Bodega’s behalf thanks to IDFusion was huge.
Along with that… finding an ObjC/Cocoa buddy. Winnipeg is a pretty desolate place when it comes to Mac development. More or less boils down to us (Centrix.ca (i.e. Phil and I)), and Dan Messing’s Stunt Software. Bodega needed at LEAST 2 developers, that I knew. I didn’t have 6 months to train a guy on what NSURLConnection was and why we have to type so many damn brackets, so this was tricky. Twitter to the rescue! I knew Chris V on Twitter… he was looking for a job… knew some cocoa… so we interviewed him and he fit the bill. He went from being pretty green to someone I can throw any task at, in a hell of a hurry.
Jet Lag 1.0. This was our 2nd “real” Mac app/utility under Centrix.ca. I ripped AutoLocate out of NetworkLocation, modified it a bit (ok a lot, in the end it shared only maybe 40% of the code), and put it into a utility whose sole purpose was to update your timezone on your Mac. Neat little utility. But when it was rumored that Snow Leopard was coming out with this functionality built-in, it took the wind out of our sails. On top of the fact that the Mac-using pilots I had testing it weren’t reporting back very promising results. It probably sat for 3 months before WWDC untouched. At WWDC we got the developer preview build of Snow Leopard, and sure enough Jet Lag’s functionality was built-in. Chris installed SL on his Mac, and on our way back we ran a little experiment: whose laptop would get better results on our way home? The result wasn’t all that surprising: they both returned the same thing. I say that this isn’t surprising because they’re both built around very similar technologies. Jet Lag uses Skyhook WPS, and Snow Leopard’s timezone detector uses CoreLocation which is a Cocoa wrapper around Skyhook WPS on the Mac. Both were getting the same geographical positions, I guess I just thought that maybe Apple would find a way that I never thought of to detect whether a position was actually accurate. When one worked, both worked. When one failed, both failed. I went from “This is too unreliable to ship” to “Let’s. Ship. It.” within a few hours. Since this was going to be free functionality in Snow Leopard, I ripped out my licensing code that I had put in, and prepped it be a free app. Jet Lag’s gotten a good number of downloads, and we’ve even gotten a couple emails from users asking us to fix it to work in Snow Leopard since the Skyhook Library mysteriously doesn’t work in 10.6.
Where to Wee. This was an interesting one. We (Centrix.ca) were given the opportunity to be part of a team building an iPhone app that had some real potential. What I liked most about this one was that it was an arrangement unlike any I’ve done before. Usually a prospective client approaches us, and they assume that we can do everything for them: develop the app, build its web presence, and market it. We can build websites, Phil does all of our web stuff… but we don’t ENJOY doing it. And we’re no marketer-extraordinaires. Here we were given the opportunity to do just the parts that we do best: the app itself. Since it’s a client/server app, I had a bit of say in the server stuff, but only as far as “here’s what my app needs” and “here’s what my app’s going to give you.” I really liked this arrangement; being able to concentrate on stuff that I enjoy doing more, and that I actually excel at.
Drunkify. I’ll include here because we got it submitted on Dec 23rd. It was approved on Dec 28th or so, but didn’t go on sale until Jan 4th because we had set the released date to then to allow Phil to finish up the (rather slick) website (http://drunkify.com). This was a fun app to work on, very very very small feature set compared to what I’m used to. It really gave us the opportunity to polish the hell out of it. It was also more string manipulation that I had ever done in ObjC before. I have a NSString+Drunkify category that I’m pretty sure will never get imported into another project.
FridgeNotes. Only in the sense that I’m happy that it’s out, I’m happy with the app… and hope I never have to touch it again. If someone wants to buy this project off of us, make me an offer (I’m serious).
Other than code? You mean… there’s something else to do in life?
Highlights… I got to see a more or less traditional Indian wedding, which was super interesting (and insanely long!). Bonus points for getting to do that with one of the coolest people I’ve met in my life. Getting to watch my niece go from being an infant to something that resembles a little person that can walk around and almost make herself be understood… awesome. Getting the “so, you’re no longer Catholic?” talk over with my sister (the ultra-religious arm of my family), and it ending rather well was a welcome surprise.
I went into 2009 with one goal over all others: you have to be doing what it is that you enjoy doing. I had spent 3 years since I graduated university working on boring stuff during the day. I think I’ve succeeded at changing that. It’s been a super fun year at work on Bodega, and with Centrix.ca stuff at night.
What to expect from 2010… Probably no iPhone apps from me. UIKit’s neat, but I prefer coding for the Mac. I’ve started on Mac app #3 for Centrix.ca. Not telling much of anyone about it just yet, but it’s to the point where I can use it on a daily basis. I really like how it’s coming along so far. Bodega 1.0, it’s coming. NetworkLocation 3.2 and 3.5 (I’m sloowwwwwly working on 3.2, Chris F has been working on 3.5). I’ll be open-sourcing a bunch of code of mine in the coming months. Starting with a handful of classes.
And now with that said, time for some beer and more code.