The Best of 2015

Some of the interesting things I did, read, or otherwise discovered in 2015. Inspired by Michael Fogus' yearly wrap-up, which is also worth reading.

Great blog posts

Ai Weiwei is Living in Our Future
- An incredible look at how the world of science fiction is quickly being overtaken by the realities of our world, especially with respect to persistant, pervasive monitoring.

This Is What Impactful Engineering Leadership Looks Like
- This article is the first one I've read that was able to put into words some of the issues and challenges I've had with managers as a programmer on an engineering team.

Self-Driving Trucks Are Going to Hit Us Like a Human-Driven Truck
- Everyone is talking about the imminent self-driving cars, but the effect AI drivers are going to have on the trucking industry is just as - if not more - dramatic.

Skyscrapers and Doghouses
- It's no secret that a lot of software written these days is put together as fast as possible, at the cost of performance and bugs. Can we build more structurally sound software without giving up too much of our development speed?

What Happens Next Will Amaze You
- I must have been feeling a bit dystopian this year. This post is a summary of the the state of the world of surveilance in mid-2015, and a call-to-arms for all of us to dream bigger.

Volkswagen’s Diesel Fraud Makes Critic of Secret Code a Prophet
- An article that appeared in the New York Times this year after the Volkswagen emissions cheat was revealed, and makes a very interesting case for the dangers of having so much of our daily lives dependent on closed-source software.

TIFU by using Math.random()
- The random number generator in the V8 Javascript engine is completely broken. This article by the CTO of an online gambling company explains how it's broken, and how it happened.

The Most Notable Medical Findings of 2015
- 2015 was a pretty interesting year for medical advances, as it turns out. As an aside, I'm continually amazed at how much medical science has advanced in just the past 15 years. When I read about a medical subject on Wikipedia, it feels like most of the cited sources for any topic have occurred very recently.

The Missing 11th of the Month
- When searching through the results of Google's book scanning project, it seems universally true that the 11th day of every month gets very little mention compared to the other days of the month - even as far back as the early 1800s. This post uncovers the cause.

Books read

A Composer's Guide to Game Music
- Writing music for video games is a much different challenge even from writing music for film. Winifred Phillips discusses some of the techniques, and even talks a bit about how to break into the industry.

The Knowledge: How to Rebuild Our World from Scratch
- There are tens of thousands of years worth of technology separating us from our ancient ancestors. This book is less about actually rebuilding our society than it is a documentation of some of the most important discoveries and technologies that got us here.

Working Effectively with Legacy Code
- This book is commonly recommended as one of the top 20 books a programmer should read, and for good reason. This book is the thing that finally convinced me of the value of writing unit tests for code, and actually helped me deal with a particularly tricky bit of code at work.

The Martian
- Here's a book that was written for a person just like me. An engineer on Mars has to figure out how to survive and be rescued. A great read, and the movie was fantastic as well.

Favourite musicians discovered

Kelley Joe Phelps
- A fantastic delta blues musician that makes me think of some backwater planet in a sci-fi movie.

Punch Brothers
- Their instrumentation is that of a typical bluegrass ensemble, but their music breaks through all genre boundaries. I came across them while looking for good mandolin players and theirs, Chris Thile, is one of the best.

Games played

Dragon Age II
- While certainly not as entertaining as its predecessor, if you enjoy the world and lore set up in the previous Dragon Age game, the sequel could be worth playing to experience more of it.

Assassin's Creed Revelations
- The fourth game in the Assassin's Creed series, this time based in Istanbul. Only really for the players who have played the previous games in the series.

Brothers - A Tale of Two Sons
- A shorter puzzle game with a decent story and pretty good gameplay and art. Probably worth a play through.

Fallout 4
- An incredibly complex and deep world, with a huge amount to do and explore. I've only just scratched the surface of the story because there's so much to do and see.

Mini Metro
- A quick and accessible puzzle game with a minimalistic art style that has you planning the subway systems of the world. Thumbs up from me.

Online courses completed

Write Like Mozart: An Introduction to Classical Music Composition
- Pretty much as the title says, this course is a 6 week look at the musical theory behind the compositions of the Classical era.

Learning How to Learn: Powerful mental tools to help you master tough subjects
- A four week look at the psychology behind how we learn. Absolutely a must-do for anybody who is a student, or is interested in taking online courses.

Online courses not completed

Fantasy and Science Fiction: The Human Mind, Our Modern World
- I've signed up for this course twice now, and both times have fallen behind on the required reading material. Just one week's worth of material could easily be 40 hours of reading for me. I may have to try and pre-read some of the course material if I hope to get through it.

Finding Hidden Messages in DNA (Bioinformatics I)
- The future of healthcare seems to strongly depend on our ability to develop computer algorithms for quickly and rapidly processing DNA. I'd love to learn more about this, but my work schedule often seems to conflict with when the course is offered.

Programming languages I'd like to try in 2016

Rust
- A programming language with guaranteed thread and memory safety. Getting a lot of interest right now from OS developers.

Nim
- A language with an expressive, python-like syntax that compiles to fast and efficient machine code. Has all kinds of cool features like compile-time evaluation of user-defined functions and low-level systems programming features.

Elixir
- A dynamic and functional language that runs on the Erlang VM. Incredibly cool looking for distributed and fault-tolerant systems.

Haskell
- I have not yet dived into the world of Haskell, but so many other interesting languages are taking inspiration from it that I'll probably need to learn it soon or I'll risk falling behind.

State of plans from 2014

Spend less time reading about things and more time doing interesting things
- Partial success. I built a longbow earlier this year, which was pretty interesting.

Blog more
- Failed.

Create a couple of game prototypes with Unity or Unreal, ideally for the Oculus Rift
- Oculus appears to have dropped support for my DK1 dev kit, so this was a no-go.

Write an interesting story for at least one of those game prototypes
- Failed.

Write a few pieces of original music for one of those game prototypes
- I didn't write any music for a game, but I did play and learn a lot of music this year.

Expand my guitar flashcard program to help me learn scales and chords on the guitar
- Partial success. I expanded it to help learn scales, but didn't do anything with chords.

Learn how to operate a sewing machine and make... something
- Done! I made a bag for holding my sewing tools.

Melt some aluminium
- Failed. Turns out setting up a forge in a condo is easier said than done.

Try writing a project in Nim and Rust
- Nope. I did end up diving pretty deep into Javascript through Node.js though, which has been a fascinating learning experience.

Plans for 2016