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 my far 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

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