January 09, 2014

2013 Personal Learning Retrospective (Software)

At work, It was an intense and exciting year:

  • I got the chance to focus more in one product.
  • Grew and focused on building the “new” team.
  • Lot of contributions from the team to upstream. And the momentum is just growing.
  • Had the chance to get my hands dirty a lot, and it was very useful to do it while building the team.
  • Because of working very close with development, I got to refresh a lot skills on HTML5, Javascript, CSS and Java.
  • Participated in a lot of interviews of people applying to the company.
  • Had the chance to take part in Scrum training.
  • While hacking my own development tools, learned a lot about libvirt and its API.
  • Redid one of my internal dashboard/report tools with angularjs.
  • Did two ruby-rpm (ffi) releases.

I completed two classes at Coursera:

Here I learned a formal basis for functional programming (recursion and non-termination, working with functions as values, reasoning by reduction, pattern matching, lazy evaluation, etc) implementing the assignments in Scala.

Functional Programming Principles in Scala

Here I learned a lot about for-expressions, monads, futures, promises, reactive stream processing, actors, supervision, etc.

Principles of Reactive Programming

I am very proud of those two achievements because it was not easy. Both courses involved between 5-10 hours a week of lectures and assignments (the 2nd was harder…) and I did them entirely in my private time and almost without disrupting my day job or family duties. I had to organize myself better. It still meant some weeks going very late to bed and trying to do the assignments while being very tired. But I managed to complete them all: got “with distinction” in the first course and I hope also in the second.

But I am also happy because both courses give you knowledge that is very applicable to the current problems in Software. With more cores but same stupid brain, you need new models, languages and tools for writing concurrent, distributed and resilient software. These courses gave me a very good foundation into it.

Various misc. hacking & learning:

  • A front-end in angularjs with a web service in Go (intended to be run on the Raspberry Pi later on).
  • Played a bit with compiler construction using Parsing Expression Grammars. Discovered the beauty of Parslet (ruby), but did most of the experiments with greg/C++.
  • Learned about lua (and bought the book), and constructed a small tool by embedding its JVM based implementation luaj.


While it is very hard for me to plan what will get me motivated or enthusiastic over the year, at least from now, I am looking forward to:

  • Travel a bit more. In 2013 it was hard and my wife needed to attend conferences more than me. First step in that direction is Devconf.cz.
  • Do some courses about Music/Sound theory.
  • Hack on some abandoned experiments in my git repos or contribute to some similar topic. Compilers, may be Music, not sure yet.
  • Look at some new ideas in the web arena like react.
  • Learn some Rust and follow either Kotlin or Ceylon on the JVM.