I like to write up a bit of geek tech review each year, this is the 2008 instalment.
Professionally, what can I say? It's been a good year. Wrote lots and lots of Java and read lots of C++. I think I'm quite firmly a back-end developer now, I've barely touched html or jsps this year, and I don't mind saying that I don't miss it much. Lots of hairy multi-threading, interesting libraries and utilities, some grid computing experimentation, lots of web services.
The most interesting and significant thing for me this year has been an exposure to distributed / service-oriented systems development. Not in the marketechturish all-your-base-are-belong-to-our-ESB kind of way, but in a 'deploy n instances of your app into a completely chaotic and heterogenous cluster of nodes and start seeing how things can go wrong' kind of way. I've been privileged to have many of my (and my colleagues') preconceptions about design and architecture challenged and turned upside down by some very clever distributed systems architects, and I've emerged with new perspectives on performance and scalability because of it.
On the personal geekery front, it's been a mixed bag. My quasi-goal for 2008 had been to get back to C++ and to polish off some low-level Unixy type stuff I've been tinkering on for ages, before moving onto something more exotic and new (to me), like Ruby or Python.
Then in Feb, after finishing my last Honours exams, I reactivated my Eve Online account. I decided to park my plans, write a GUI app to help my in-game trading instead, and share that. Didn't get very far - firstly because I spent too much time playing and too little time coding, and because I just couldn't get going with a GUI framework. I decided to write the app in Java to get it done quickly (ha ha), played with Swing and SWT/JFace/RCP, and didn't get very far with either.
By halfway through the year I'd reached a decent profit target from trading, still had no decent or sharable trading app, and was starting to get a bit bored. I cancelled my Eve subscription and decided I'd had enough of Java GUIs. I opened up the Unix books again and started getting some traction with that.
Then in August, an opportunity to do an interesting work-related pet project came up, and I spent the better part of the next 3 months devoting every free moment to that. It involved things like Apache Mina and asynchronous I/O, and a lot of C++ interaction. Because it was work-related, couldn't talk about it, and no interesting code to share. But it was a really worthwhile chunk of work, and I learned a lot from it.
In November I finally geared down and started casting about for something new to do. I picked up yet another fun pet project which is yet again a little too close to work to blog about. Decided not do it in Java, and chose C++ instead: web services and a bit of multithreading, so it's really interesting tackling familiar problems using a different language.
So, despite some diversions and the first half of the year not being productive at all, I'm happily tinkering away again.
My goals for 2009? Not entirely sure exactly what I'm going to do, but:
- I'm not going to spend my hobby time writing Java code. Java is my day job language: it's a great language, but I want (and need) to broaden my horizons.
- I live in Ubuntu again, I almost never boot into Windows at home. I intend to keep it that way.
- I want to achieve a level of C++ proficiency I'm happy with, before moving on to something else.
- I want to finish the Unix systems programming stuff I've been tinkering on for the past 3 years. Again, this is a 'foundation' thing I want under my belt, even if I never write a single
select
professionally.
- If I get through that by the end of 2009, I'll pick a new language to start on. It'll probably be Ruby.
That's it. Let's see how 2009 turns out.