2103 — the year's code and tooling in review
I saw the #code2013 hashtag on Twitter last night and joined in. It got me thinking about the stuff around the programming languages I use, and my professional skillset in general.
I’ll briefly touch on how a few major events in my life forced me to cut the fat and become more focused.
A few notes, then.
The programming languages
Scala
My new, old favourite. My go-to language since 2009. I can’t add much for 2013 apart from that I’m happy to see the community mature around it. We’ve gone from “How we adopted Scala at company X” to “How to go back in time using Akka, Play! and XYZ”. Oh, and then the reactive course was fun too, and highlighted a few holes in my Akka education.
Java
Java still mostly pays the bills, and I’m writing even better Java thanks to Scala. My editor is told to highlight everything in a shade of gray, apart from re-assignables which are red. It all just flows.
Python
I’m a big fan of Pylons and have used Python since 2006-ish for tiny webapps, but this year sees me going down the finance route with SciPy and Pandas thanks to a handful of courses I did recently.
R
Strangely addictive. I did a data analysis course with the famed Johns Hopkins university earlier this year, and thought I would be “learning” R along the way. If anything, it felt like I already knew R, and the thing that I learned was making a good analysis, writing it perfectly and succintly, and performing an honest peer review. R is perfect for slicing and dicing your data, and it doesn’t get in the way.
Dart
The main attraction to Dart for me was the promise of compiling to a better Javascript which you can ever hope to write by hand. The Dart syntax itself is familiar, and then you have the odd goodies like the cascade operator (borrowed from Smalltalk) which lets you chain methods without having to return the instance in your API, and being a Scala guy, I love having rockets (=>) scattered all over my code (Dart’s syntactic sugar for concise getters).
Javascript
Being a backend programmer by trade, I usually don’t go for frontend gigs, but a client this year said they don’t mind me learning on the job, and I’ve heard good things about AngularJS, so I dove right in. I’ve touched on Javascript a lot in the past, but this year I spent a significant tenth of my professional time fiddling with it.
Haskell
Yes, I really did spend the tiniest amount of time with Haskell, but enough to mention it here. I downloaded, chopped and changed the XMonad code and the take-away for me was that 2014 will see more Haskell.
Other languages, not-so-much-languages, and tools
My starter Dart project is a game (where do I find the time?), hence WebGL and subsequently GLSL. I’m particularly excited about getting my hands even dirtier with shaders with Mozilla recently announcing live-editing of shaders using Firefox.
I’ve always used Capistrano and Chef for my provisioning and configuration needs, but this year I gave Ansible a shot. I hope Ansible stays the way it is: small, simple, elegant. No agents; just SSH.
Conclusion
2013 was a bumpy ride. We had a beautiful daughter in June, and I quit my job soon after to freelance from home and be 2 flights of stairs away from her. To be able to learn a few new skills and do 4 courses, I had to make some changes. There are the 5AM starts, the highly-condensed exercise routine in the morning, diligently deleting anything which doesn’t contribute to the plan I have for our life (this includes articles, emails, etc), and just generally getting things done.
The game I mentioned seems like a distraction, but I feel it’s important that I do it. I’ve been in love with doodling since I was a kid, and really took it up this year. I’m an able musician, and since I can code I thought I’d bring these ingredients together and make something nice. (Those umpteen characters and storylines in my head will finally be unleashed!).
Thanks for reading this far. May you have a great 2014.
I leave you with a doodle I made a few days ago entitled “The Polar Bear who might have eaten Xmas”. (Don’t worry — this isn’t one of my games ideas ;-)