I’m not really one for New Year’s resolutions, but this year I thought I’d create a sort of bucket list of programming related things to learn. But it’s more of a bucket set because the items are unique, I really want to focus on algorithms and data structures as well as a plethora of functional programming languages. So without further ado, here’s all the things I want to accomplish next year, this may grow considerably.

  • Khan Academy algorithms as well as anything else I can fit in. Especially math and computer science related topics. I want to have something on the go at all times.

  • Algorithms part I and part II as well as Data Visualisation courses on Coursera. I’ve completed the Functional Programming in Scala course and completed most of Algo I, but this time I want to really ace it. I’ll have way more free time when I don’t have to commute for 2:30/3:00 hours a day.

  • More Vim plugins, I want to have five by the end of the year. So that’s three more on top of vim-enmasse and vim-expand. I have a few ideas lined up, but I can always rip good configuration out of my dotfiles and flesh it out.

  • A brainfuck VM (idea courtesy of Kris Jenkins, thanks Kris!).

  • A simple and useless language I am yet to design. I think it could end up being a project I can take as far as I want. Or drop it as soon as I get an MVP if I won’t learn any more.

And the languages I’d like to learn and apply to this sort of thing are as follows.

  • Clojure (I’m going to ClojureX at the end of 2015, so there’s an incentive!)

  • ClojureScript

  • Haskell

  • Elixir

Other languages I may dip into if I feel like it.

  • C

  • Java

  • Scala

  • Erlang

  • Ruby

I’m pretty handy with JavaScript, but I’d like to build some stuff with React at some point too.

The projects and language lists may still grow, but I’d like to build and use these as a minimum. I’ll continue to blog about my endeavours and probably write a wrap up at the end of the year with a new set of goals for 2016. I think this goal based approach will help to accelerate my learning even more than my day to day work does. I may has skipped on university, but there’s no way I’m letting that leave a hole in my knowledge.

In closing

What’s better than a brainfuck VM?

A whole repository of them in different languages and styles. I’m going to implement a VM in languages I’m trying to learn that runs a brainfuck “Hello, World!”. I think that’ll teach me a fair amount about each language. I think it’ll be pretty cool if I use brainfuck as my platform for learning over the next year, it also gives me an excuse to litter my posts with profanities. So expect to see them appearing over at Wolfy87/brainfucks in the near future.