Further reading
A collection of links to other things worth checking out
Software
-
Guy Steele: Computer Science Metanotation
A video mostly about the language used to talk about PL theory in whitepapers, but also includes some interesting PL history.
-
Richard Feldman: Why Isn't Functional Programming the Norm?
The title of the video is unintentional misdirection, most of the time is spent talking about how OOP came to be popular. In short, it was by complete accident: designers of the early now-popular OOP languages wanted FP features like modules and privacy but discovered OOP as a way to emulate those behaviors before, decades later, coming to agree that what we actually wanted was modules from the beginning. (See C With Classes, and C++ slated to add modules.) Also there's passing mention of the fact that JavaScript was originally going to be a Scheme, but enterprise hype for Java was overwhelming. Can you imagine if that went differently? Insane.
Reliability and robustness
-
Dan Luu: Given that devs spend the effort they do on testing, what can we do to improve testing?
An interesting article about testing software from the perspective of someone with more experience testing hardware. Most of the article is spent discussing tools that automatically generate tests, that is, automatic automated testing. Inspired by this article, I got
cargo-fuzz
working with myfar
crate and discovered a bug! I like fuzzers now. -
Alexis King: Parse, don't validate
Great post that articulates how to leverage type-driven design to ensure program correctness. I highly, highly, highly recommend reading this.
-
Drew DeVault: Software developers have stopped caring about reliability
This is more of a rant than anything else, but if you excuse that aspect of it, I feel like this article makes some very good points and addresses some very important issues. There is a (probably unintentional) allusion to Parse, Don't Validate in there too so that's cool.
-
Dan Luu: One week of bugs
Dan must've read Drew's post above because this seems like a direct response to Drew's call-to-action at the very end. TL;DR: everything is on fire.
-
Graham: When to "address" "technical debt"?
If you're in a hurry, just read the last 3 paragraphs. If you're in an even bigger hurry, the short version is "don't create technical debt in the first place".
-
Ben Kuhn: Why are software tool vendors so unbelievably horrible?
A very funny yet depressing twitter tirade. The moral of the story is to do your best to not end up on another twitter thread like this one.
Developer responsibility
-
Drew DeVault: We are complicit in our employer's deeds
To keep the world from becoming shittier, avoid implementing shitty things.
Rust
-
johnthagen: min-sized-rust
Useful reference for when you're doing embedded and need to make your binary not massive.
Python
-
Ned Batchelder: Facts and Myths about Python names and values
This is a good video about how Python's memory model works.
-
Larry Hastings: Removing Python's GIL
A video on the efforts for removing Python's GIL. In short, Python's memory model is not amenable to performance once you're allowed to use threads because suddenly everything must be atomically reference counted, so you can say goodbye to your CPU cache. If you add a borrow checker and move semantics you could alleviate this problem, but we already have that and it's called Rust.
Git
-
krick: "conventional commits" are the stupidest thing ever
Someone complaining about conventional commits, and I'm very much in agreement with their analysis