With year 2012 over it is perhaps time to look back and see what interesting has happend, what I have done, written, learned, what articles I have enjoyed most etc.
This has been my second year in Norway and I am still very much enjoying it, there is a very active developer community organizing great conferences such as JavaZone (followed by an amazing trip to the nature a.k.a. SurvivalZone) and Smidig (Agile) where I have also presented, Scala-focused flatMap, many meetups etc.
Events & side jobs
Thanks to my company I had the opportunity to do some real consulting work, namely helping with a technical audit of an R&D department and co-organizing a TDD and refactoring workshop for the customer, and I have learned a lot from both of these.
The most exciting event was a week long educational stay with Ken Beck that has resulted in the most popular blog post ever of my company and myself, Programming Like Kent Beck. Another exciting event was the workshop BDD – Specification by Example by Gojko Adzic, simply the best workshop/course I have ever attended, with plenty of valuable content about how to build the right software. I also very much enjoyed preparing and presenting an introductory workshop into Clojure with my friends and collegues Lars and Ivar.
I have worked the whole year with a partner company that aims at creating innovative internet solutions such as on-line entertainment and communication services. I have learned a lot about the cloud, the Amazon Web Services platform, Puppet and DevOps, Vagrant, big data scale warehousing using Hadoop and Hive, NoSQL databases such as MongoDB, REST, and running distributed services. I have wasted too much time trying to get Zabbix to monitor what I want (despite of its shortcomings and lack of friendliness towards troubleshooting, it is sadly still one of the best monitoring tools, I have been told). I have done too little pair-programming and I have spent too much time in Java, bash, and Zabbix instead of learning more about modern web UI development and using more productive languages such as Clojure, Groovy, and Scala (though I have managed to sneak two of them in).
The work is great. I miss only three things – pair programming, Clojure, and opportunities to learn from smart and skilled people. Regarding the last point, I have smart and skilled co-workers – only the opportunities to learn from them are way too limited (partly due to the first point, lack of pairing).
I have started to focus on functional programming in general and Clojure and partially Scala in particular. I believe there is a lot we can learn from this paradigm and higher-order functions and immutability have really nice benefits. I hope to continue exploring when these laguages might be a better choice then Java in 2013 with my collegues in the Iterate Functional Programming Group.
Some books I have read and appreciated:
I have thought a lot about testing, maintainable test, code quality, legacy code and software development and evolution and my opinions are slowly crystalizing, partly here under the opinions tag.
I have published 57 blog posts, multiple of them about topics such as CleanCode, craftsmanship, Testing, DevOps and ops, puppet, clojure, bigdata, book, design.
My blog posts of this year that I personally appreciate most are these:
Another blog post that I really like and that I haven’t written but have motivated it, is Iterate’s Books Our Developers Should Read presenting the 4 books we believe are crucial for all our developers/consultants.
Some of the best articles I have read and talks I have seen in 2013, in the reverse chronological order:
I have begun to use screen (via the wrapper byobu) for long-running sessions on servers, switched to IntelliJ 12 for Java development, begun to re-learn Emacs for the sake of Clojure. I have also adopted Cluster SSH for multi-server ops tasks, started to experiment with the fish shell (with addons) instead of bash or the growingly popular zsh