- learn Clojure and write some bigger-than-hello-world app with it. I intended to learn it this year but didn't manage to. I really liked the Haskell course at the univeristy and enjoy using tools such as Google Guava that bring a bit of functional programming into Java. Clojure seems to have an active community and integrates nicely with Java so one day it might get useful in my daily work. And learning a different programming paradigm than OO is supposed to make me a better software developer :)
- Create a kind-of-real-world app using Event Sourcing (and possibly NoSQL). I have been reading /watching about CQRS and ES all the time and feel ashamed I haven't done an app using ES by now. We're now starting to have CQRS and events in our projects at work but there's still a long way to get to ES (suffering from the poison pill architecture that CQRS with events and ORM is). So - off to work. I even have an idea for such app but have to think about it some more.
- Become proficient with git. I'm using git for my pet projects, code katas etc at home but never got beyond the usage similar to SVN. I read a couple of good tutorials about git and have to get deeply familiar with it, learn how to do feature branching etc. Git seems the future of VCSs so I can't afford to stay far behind.
- Create a roguelike game. I'm a long time lurker at RGRD but haven't started even a hello-dungeon roguelike project. Enough of theory, time to get some @ running!
That would be it for my primary objectives. Hopefully will get the mission completed during next 12 months.
There's also a couple of other things I would like to do but they are not that high on my todo list:
- learn Scala. It seems to be a cool, JVM-based language that is gaining much attention right now. Additionally there's Akka that I would like to learn (Alternatively I might try learning Erlang).
- finally read whole Java Language Specification. I did read excerpts from it but never read all of it. Time to fill in the gaps in my knowledge about Java.
- go through Spring 3 documentation and see the new and shiny things they've added since 2.5.6. I was following the release notes but don't think I have a good understanding of what has been added/changed.
- try to do some development for the cloud. Just to start and learn the new possibilities and fallacies.