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.
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.
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.