bookmarks

RFC 9413, aka "Postel Was Wrong"
#rfc, #software-engineering
An examination of the long-term ecosystem effects of Postel's Law ("be conservative with what you send and liberal with what you accept"), and in particular the problems it creates with interoperability and evolution.
NATO Software Engineering Report, 1968
#gov, #software-engineering
In late 1968, NATO's Scientific Affairs Division ran a conference on the emerging field of software engineering, discussing problems in production of software and possible solutions to them. A lot of it turned out to be true.
Hints and Principles for Computer System Design
#paper, #software-engineering
Butler Lampson, of Xerox PARC fame, summarizes a lot of conventional engineering wisdom and provides a bunch of his own. Immensely quoteable :)
Man-Computer Symbiosis, 1960
#cybernetics, #paper
J. C. R. Licklider's starry-eyed vision of the future of human-computer interaction, including the infamous "language problem" (which we still struggle with today!) and some UI proposals which are still science fiction.
The Emperor's Old Clothes
#compilers, #software-engineering
The text of C. A. R. Hoare's Turing Award lecture from 1980, which is basically an extended vent about how annoying it was to work on ALGOL 68 and why the resulting language is so bad. Essential reading for anyone on a standards body, or just anyone who wants to understand why large software systems are often so bad.
A Plea for Lean Software
#operating-systems, #software-engineering
Niklaus Wirth writes in February 1995 about the catastrophic loss of intellectual control in modern software, caused by feature creep and undisciplined engineering leadership. There are a lot of echoes of the 1968 NATO report in here. He also writes a bit about Oberon, the OS he built with a small team.
Can Programming Be Liberated From The Von Neumann Style?
#functional-programming, #software-engineering
John Backus (of Backus-Naur fame) writes about the state of the functional programming art, circa 1978.
The Gemini FAQ
#internet
Gemini, an alternative to HTTP, has a lot of cool design thinking going on. The FAQ summarizes a bunch of it in very few words. Worth a read for any aspiring protocol designer.
Nanopass
#compilers
The nanopass paper lays out a very slick incremental way of building a compiler, as dozens or even hundreds of tiny passes that gradually transform a program from source to target, rather than a few larger ones.
HAKMEM, aka AIM-239
#hacker-culture, #programming
One of the earliest widely-circulated works of hacker culture. HAKMEM was part of a tradition of "memos" circulated within and outside the MIT AI lab. This one is basically a collection of puzzles, open problems, neat tricks, and sketches of proofs.
The Twelve-Factor App
#software-engineering, #webdev
How to write web apps in a way that won't make you wish you were dead later, but most of the advice is applicable more generally than that. Parts of it are spiritually related to crash-only software (see below).
Crash-Only Software
#software-engineering, #systems-programming
Why handle errors when you can just crash and restart the thing in a known good state? "Since your software has to be able to recover from a sudden crash anyway, why not simply always use the crash path to recover from failures?" Pretty neat stuff, and the precursor of the modern "just let it crash and restart the worker" approach to scaling services.
A Unified Theory of Garbage Collection
#compilers, #programming-languages
An overview of existing garbage collection techniques which ends up drawing a profound connection between refcounting and tracing GCs.
RFC 1710: Simple Internet Protocol Plus
#internet, #rfc
An early document (1994) in what would eventually become IPv6, which lays out the problems with IPv4 that were understood at the time and possible ways of solving them.
Networking Named Content
#internet, #paper
This paper proposes an approach called "content-centric networking", which is a pretty straightforward routing system based on a key insight: users of a network generally know what they want but not where to get it, and the existing mechanism of finding out where it is and then getting it is complicated and insecure. It would be better if the network was optimized for routing based on what, instead of based on where.
A Database Without Dynamic Memory
#databases, #software-engineering
How Tigerbeetle avoids dynamic memory allocation after startup, and how they design for high performance despite using static limits and a fundamentally synchronous design everywhere. Quite impressive stuff and a great illustration of how simplicity and performance are friends.
How NAT Traversal Works
#blog, #internet
From the lovely folks at Tailscale, a very detailed explanation of the state of the art in NAT traversal, including how STUN works and what Tailscale does when all else fails.
Weathering Software Winter
#blog, #lowtech, #permacomputing
A blog post from 100 Rabbits about their formative experiences trying to use modern integrated software stacks while on a tiny sailboat far from land, with strictly limited power and no networking, leading into their decision to build the uxn virtual machine.
Earthstar
#internet, #privacy
A distributed storage protocol designed for offline-first use, and which is happy to be transported over a sneakernet or anything else. Good privacy properties, pretty slick design.
This Is Fine: Optimism & Emergency in the P2P Network
#internet, #privacy
An examination from the New Design Congress of the tension between decentralization and privacy, and between decentralization and centralization, and ultimately of the political aims and achievements of the decentralized software movement.
Energy and Equity
#lowtech, #politics
A long essay about the spiraling individual energy usage of advanced societies which lays out the possibility of a "low-energy economy".
The Tyranny of Structurelessness
#leftism, #politics
A look at the consequences of the 1970s leftist movement's focus on avoiding explicit structure and hierarchy in its own organizations, and what actually happened: structure emerged anyway, but invisible, unaccountable, and unchallengeable.
Radical Computer Science
#computers, #politics
Phillip Rogaway's reflections on the politics of computer science and the need for profound changes in the field.
Situated Software
#computers, #software
An essay about the idea of "situated software", which is software that exists only in a specific context or social group, and about the different design tradeoffs such software can use. Super interesting if you're thinking about building a tool for a friend group!
An App Can Be A Home-Cooked Meal
#computers, #software
A journal about building an app just for use by your own family, and how that lets you purpose-fit it to what your family needs. A lovely idea.