This is a belated and probably too-skinny version of a post I decided I’d do every year, starting with last year. Usually, when I say ‘learned,’ I really mean I engaged enough to understand a little bit of what’s going on, and not that I am wizard-level user in any of these. In 2018, I spent time learning fewer new things than in 2017, but I probably went slightly deeper.
Working with FaaS
The first time I had ever completed an intro to programming course, particularly a Python one, I remember having this feeling of, ‘now what?’ I could script a game of hangman, but didn’t have any idea how to manage an environment, package something for deployment, launch a VM (at the time, containers weren’t a big thing) configure a webserver… honestly the entire stack was opaque and intimidating. That’s one of the reasons I find serverless to be an appealing paradigm–a developer can focus on writing code that actually has a job to be done, rather than the endless train of yak shaving that could otherwise be involved in launching something. I’m not trying to diminish the importance of well-orchestrated infrastructure, which is critical to scaling effectively–but more just love the idea that the number of hurdles to building something small has been reduced.
For this foray into learning, I started first with Lambda, but quickly grew frustrated with the complexity of the AWS dashboard and configuring API Gateways. Serverless was my next stop, and I really love it. It abstracts away a lot of the complexity and has templates with sensible defaults for a lot of different microservice structures. I played around with Netlify’s functions and I have it on my list to check out Zeit too. Decoupling code from infrastructure is a long-running trend, and this next evolution of it has a lot of promise for modularizing the ‘connective tissue’ of a lot of businesses.
Netlify is a leading company in this ecosystem, and it was one of those rare products that made me say ‘oh, wow,’ the first time I used it for a static site deployment. This site is built in Jekyll (legacy from Github pages), but I also tried out Hugo for the first time. Some of Hugo felt less intuitive, but true to Go’s promise, it was blazing fast. I have Gatsby on my list to try soon.
Dabbling in Lisp
I have spent precious little time with any functional programming language, so I decided to start working my way through The Wizard Book and dabbling in Scheme, a Lisp dialect. Perhaps because I didn’t start out in OO rather than functional languages, or perhaps its just a lack of mental dexterity, I find a lot of the principles to be non-intuitive. In that regard, it’s been mentally rewarding even though it’s a challenge. I’m not done with the book and I intend to finish it this year.
A bit of Machine Learning
Perhaps more than the others on this list, I wanted to just build a baseline understanding of the moving pieces of machine learning. I went through Andrew Ng’s amazing Machine Learning class on Coursera and through fast.ai’s Deep Learning course. Each was spectacular in its own ways; Ng’s class focused on building into algorithms from the ground up, while fast.ai’s started with practical examples using their libraries and then dug into the moving parts.
I tend to prefer the fast.ai approach, but the Ng class was really a perfect foundation. Related to this, I had to brush up on some calculus and linear algebra that had been gathering dust in my brain for a decade. The only other thing I’d say about this is that Octave is horrible and was the worst part of the Ng course!