what i’ve been reading: november 2020 edition
This blog post is a continuation of my ongoing experiment with collecting and summing up the best technical (with a bit of non-technical) stuff I’ve read and watched this past month.
I’m still experimenting with the format, so feedback is definitely welcome.
(P.s.: You can now subscribe to my newsletter too!)
This month I’ve gone a bit down the rabbit hole of the GDC (Game Developers Conference) youtube archives. Even if you’re not interested in the gaming industry, there’s amazing engineering and design efforts going on there, and there’s a lot to be learned from the top companies in that field.
1. Magic: the Gathering: Twenty Years, Twenty Lessons Learned (Conference Talk):
This talk is a masterclass in design. Replace player with user and game with product and every single item still applies and is incredibly relevant. If you watch one talk I link to in this post, make it this one!
2. Up Sh*t Creek: Pro Tips for Managing the Unmanageable Project (Conference Talk):
The presenter describes her experience on being brought into software (game) projects that are spiraling out of control, and their approach and recommendations to "turn the ship around" and make the project a success.
3. 50 Game Camera Mistakes (Conference Talk):
This talk is not generally applicable as the others above, but a through analysis into how much goes into making something that seems as simple as "the camera" behave in such a way that you never even notice it is there.
4. Game Balance Concepts (Blog Posts):
I’ve ran into this collection of blog posts by Ian Schreiber for his class on Game Balancing. I’m still going through them, but I really liked Level 4: Probability and Randomness as a great refresher on probability (and got stuck on the monty hall problem as well), and Level 3: Transitive Mechanics and Cost Curves with a really interesting analysis of how costs work in Magic: The Gathering.
5. BPF binaries: BTF, CO-RE, and the future of BPF perf tools (Blog Post):
If you haven’t heard about eBPF/BPF, it’s an amazingly interesting tool that was added to the Linux kernel, and that allows tiny scripts to be run inside the kernel itself. Its origins come from networking — you could use it to write very flexible + efficient firewall rules, but it’s now possible to use it to instrument many many things in the kernel, enabling A LOT of new observability and debugging use cases (as well as profiling, my main interest!).
But thus far getting it to work is still a bit awkward: the API is still being expanded, so many features need very recent Linux kernels, and often you need to compile your eBPF application with the headers of the exact kernel it’s going to run on. This blog post details the ongoing work to solve this by making eBPF applications portable.
6. Getting noticed as a remote engineer – and why it matters (Blog Post):
A few things that remote engineers should keep in mind when working remotely.
7. Breakpoint Day 1.4: Technology constraints drive automation (Talk):
Shopify’s director of production engineering describes the approach taken by his team to boost their tech stack through careful selective standardization while also being open to evolution and feedback, and in cooperating with the product teams that need to deliver using the stack daily.
A very though-provoking presentation, as this approach doesn’t seem to be very common in the industry: many other companies either have a lot more freedom in the software stack, but then have a lot of integration headaches and duplicated efforts, or they have a very strict top-down mandate on their whole tech stack, but are very closed to evolution, feedback, and re-evaluating their choices.
Shopify more and more seems to be a company to be on the look out for ;)
8. One Size Fits None - (Everything You Learned in Your DBMS Class is Wrong) (Talk):
A critique of the database design foundations that were (and still are?) taught to students, driven by a careful analysis on how databases are used nowadays: by whom, using which data, on which hardware, and with what expectations of performance, reliability and cost.
This talk is presented by Michael Stonebraker, which has a Turing award for his 40+ years of research and contributions on the field of databases, so he knows a thing or two about the foundations of the field.
9. THE TYRANNY of STRUCTURELESSNESS (Essay):
This thoughtful analysis, written in the context of female rights movement, but completely applicable to every such group, discusses how groups and organizations that decide to be entirely without structure end up coming short, because in the absence of a formal structure, informal structures (elites) spring up, and how that ends up blocking such a group from attaining concrete goals (e.g beyond raising awareness).
10. The Impact of Toxic Influencers on Communities (Blog Post):
Great (and depressing) analysis of the patterns exhibited by toxic influencers in the context of online communities, how they establish themselves, and the behaviors that they display.
11. UX request: Tell, don’t hide (Blog Post):
How you really shouldn’t hide UX elements when a given user doesn’t have permissions to access them, because then the users can’t tell what’s going on.
If options would show up on a given screen, disable, rather than hide them!
12. ARM and Lock-Free Programming (Blog Post):
With the release of Apple’s M1 chips, excitement over ARM CPUs seems to be at an all-high (and the chips do look amazing).
This blog post discusses how the ARM architecture has a weaker memory model than our usual x86 machines, and how it can break low-level concurrency code that accidentally relied on having a stricter model.