I got a job, but I still found time to watch Jiu Jitsu
I don't know which part will be less shocking to you
I’ll get to Jiu Jitsu, the Nicolas Cage martial arts movie. But first, let’s talk about me. No, you’re not allowed to scroll past that part.
My blogging (and newslettering) frequency on smarx.com is a bit… inconsistent. Here are the number of posts I’ve published per month:
2020-08 10 **********
2020-09 8 ********
2020-10 0
2020-11 0
2020-12 1 *
2021-01 5 *****
2021-02 2 **
2021-03 0
I’m sure you’re wondering, so I’ll tell you that I made the histogram with the following hideous command, and I still had to add the zeros manually like an ancient Mesopotamian:
hugo list all | mlr --icsv --ojson cat | jq -s 'sort_by(.publishDate)[]|select(.path | startswith("content/posts/"))|.publishDate[:7]' -r | histogram -w 25
So what happened in those gaps in the histogram? I was employed! Towards the end of last year, I was coding for the Ethereum-based decentralized exchange 0x, and since late January, I’ve been doing technical writing for a startup called Metronome. I was there on a contract basis, but starting on Monday, I’ll be a full-time employee with health care and everything. For now, my role will be a mix of technical writing and API strategy.
If past performance is indicative of future results, me having a job doesn’t bode well for my blogging and newslettering frequency. Sorry.
Even if I’m not in your inbox every week, I promise to still visit every once in a while, much like the alien warriors in the movie Jiu Jitsu visit Earth every time their comet gets close enough.
I’m one of several people who watched Jiu Jitsu. It earned $90,000 at the box office on a budget of $25,000,000. This movie is Bourne Identity meets Predator with the addition of Nicolas Cage. I know it sounds amazing, but somehow it’s actually pretty boring.
In that sense, Jiu Jitsu is the exact opposite of my new employer. Metronome sounds pretty boring, but it turns out to be amazing. I’m going to have a lot more to say about that when we launch, but for now I’ll leave it at that.
Here are the blog posts I’ve written since the last newsletter, in chronological order. The first four are part of a series about Firebase Firestore, and the last two are writeups from an Ethereum capture the flag competition that my team won:
Here are some things I didn’t write but did enjoy reading:
A Word on NFTs — I understand NFTs quite thoroughly from a technical standpoint, but I don’t understand collecting art, digital or otherwise. This piece helped me at least understand what people are talking about when they talk about the value of NFTs.
Bitcoin is Time — This article is longer than it needs to be, but it’s good. A concise summary is in the article itself: “What is a new idea … is how to independently agree upon a history of events without central coordination.” I believe this is a good way to understand what value (public, decentralized) blockchains bring.
Netcode: Explaining how fighting games use delay-based and rollback netcode — If you’ve ever wondered how fighting games work over the latency-riddled internet (or if you’re just now wondering that because I mentioned it), I think you’ll love this article. It’s written well, and it takes you step by step to understanding some simple but effective techniques for hiding latency and keeping games fair.
A Data Pipeline Is a Materialized View — This is a great way to think about data pipelines. It’s simultaneously obvious and insightful, which is my favorite flavor combination.
What are Capabilities? — The title refers to capabilities in the security sense. This is a fantastic introduction to the concepts, and I’m sad it took me this long to come across this 2017 article. Capabilities are such a useful and applicable concept that everyone who writes code should learn about them.
Wizards and Warriors, Part One — This is a five-part series, but it’s a quick read. It’s an example of how pleasurable it is to watch an expert work through a problem. In this case, Eric Lippert is working through modeling an interesting domain in an object-oriented programming paradigm where the naive design just doesn’t work. You could also just view it as a cautionary tale about object-oriented programming.