2016: Year in review
I’m mostly writing this for me, but maybe it will be interesting to you too! Here’s are some things that happened in 2016. (just to me personally, mostly about programming)
a new zine!
I wrote another zine in 2016! Here’s the cover. (or you can click it to read it)
I’m really happy with how this one turned out. I also made a dedicated page at jvns.ca/zines where you can read all of the zines.
I’m working on another zine right now about computer networking which should be out in January or so.
(also I ran an indiegogo campaign to help me print zines!! people were really really helpful and it raised enough money to print SO MUCH STUFF. it was very heartwarming.)
comics!
I drew a comic about programming every day in November. This turned out AWESOME. Way better than I thought they would. You can read them all at drawings.jvns.ca
It’s been really interesting to see how many people LOVE learning basic stuff about operating systems (assembly! threads! the stack! floating point!). Often the things I go over that I think are relatively basic are the ones where people respond “wow, I had no idea how that worked, that’s really cool!” (and they’re right! It IS really cool!)
It’s somewhat shocking to me that some people now refer to me as an “artist” given my sorta nonexistant drawing skills, but, hey, whatever works :). It’s been a really good way to communicate ideas.
talks!
I
- spoke at PyData Berlin about some reasons to be skeptical about / excited about machine learning (also, I went to Berlin for 6 weeks! That was fun!)
- keynoted RustConf
- talked at Strange Loop about linux debugging tools (and gave the same talk at PolyConf)
- did a lightning talk at !!Con about how to trick neural networks
- spoke at CUSEC about how understanding operating systems fundamentals is important
Doing the RustConf keynote was kind of exciting/scary (me??? keynote???) and I think it turned out well and I’m happy I did it. I love the Rust community and I’m happy with the talk I gave.
Transcribing my talks was a cool idea and I’d like to keep doing that.
It’s looking like 2017 will be the year of Julia going to a few operations / SRE conferences, so watch out for that. I like going to new conferences instead of going to the same ones all the time. I want to try to keep the number of conferences I travel for down.
cool: writing about work
This year I wrote my first work blog post (on service discovery at Stripe. This is a kind of weird thing to celebrate (I’ve written way way more on this blog), but it made me surprisingly happy to be able to write in public about some of the stuff we work on / think about. I guess I like being able to write a little bit at work. I also worked on a job description for my job.
I’ve been thinking a little about Kelsey Hightower’s advice to not let your job title limit your impact.
I like that I have some flexibility in my job to do things like write blog posts / try to make our job descriptions better / organize events featuring some of my favorite speakers. My manager is excited about me doing that stuff which makes me happy.
also cool: switching to infrastructure
Last year I wrote:
Apparently I like writing about how things work, and how to make computers go fast. I did some fun performance optimization at work. Maybe I will do more of that next year!
I did a little more performance optimization work in 2016, and I was maybe hoping to do even more, but that did not seem to be what the company needed. That’s okay! I did get to learn how A LOT OF THINGS WORK THOUGH. I switched to the team that’s responsible for networking
- code deployment + running programs (“like heroku, but harder to use”) and it’s really fun partly because it’s now my job to understand a lot of the nitty-gritty details about how all of our infrastructure works. And I get to work with a lot of fantastic people who know a lot of things about operating systems and networking and operations. There have been a lot of interesting “infrastructure as a product” conversations.
And then now that I understand how a lot of it works, I can help make the internal “product” we provide better! So that’s what I’ve been working on. I like my new team a lot.
seeing a thing I worked on ship
Last year at this time I was excited about interpretable machine learning algorithms (how do you know why the machine learning model decided to do that thing?) because I think it’s important for users of those models. This year stripe released a fraud detection tool called Radar that (as well as lot of other things) gives you a reason for why the ML model made the decision it did (you can see examples at the docs here)!
About a bajillion awesome people worked on this (and in particular others did most of the work on the interpretability stuff), and I worked on the machine learning system behind it for a while so it’s awesome to see it out there.
blogging
I wrote 87 blog posts this year, and I think about 70,000 words. So!
a few I liked:
- I liked writing this discussion of how rkt runs containers because I think it’s important to be able to walk through what a complex piece of software is doing when you run it (if not necessarily rkt specifically)
- a critique of the CAP theorem because I would maybe eventually like to understand more about distributed systems
- learning to like design documents has been kind of a theme this year – I’m trying to get better at designing and iterating on systems
- I learned how a CDN works, why UDP packets get dropped, and a lot more about networking
- this collection of drawings about Linux
- this post about how stock options work helped me understand how stock options work, which was useful (technically from the dying days of 2015)
- how much memory is my process using? was a long standing mystery in my head and I finally understand (I think) all the basic facts about virtual memory on Linux. Victory.
conclusions?
some things that worked:
- drawing comics (this was a surprise)
- asking a lot of questions about how computers work (not a surprise)
- working on a team of people who know more stuff than me, and listening to what they have to say
- asking for advice from people who are more experienced than me.
- at work, figuring out what’s important to do and then doing the work to get it done, especially if that work is boring / tedious
- working on one thing at a time (or at least not too many things)
- doing the things I’m excited about in my spare time (writing about programming) at work a tiiiiny bit more
- getting a bit better at software “process” things like design documents