Chosen links

Links - 1st January 2023

I do not care about the current raspi discourse but the raspi annoys me so much because it fouled the market

this is a kind of crime that i regularly assign to Products. the problem with the Raspberry Pi is that it came out at a time when the thing that it is had more or less just become feasible - meaning, something else could have filled the gap, but the pi got there first, and anyone who was thinking of competing just turned away in disinterest

no, i don’t care about the beagleboard or some other thing. come on. come on, don’t bullshit me, you know how this works. if you want:

  • a price low enough to buy one on a whim

  • the ability to google problems relating to the underlying hardware

  • regular software updates

  • access to a wide variety of hardware addons

then you buy the one, single thing that the market has decided "filled the gap." There is not a second thing, only second-class things. The Pi is the tiny single-board computer, and trying to use anything else casually - that is, not writing your own goddamn kernel drivers - is going to be a worse experience.

I call this “fouling the market”: there can only be one Canonical Single Board Computer, and it is the Pi. Nobody is ever going to create a competitor, because it’s a foregone conclusion that it will never have more than 1% of the market share. There was one bite at the hook, and the raspi took it. The problem is that the Pi bit at the wrong hook. It’s a terrible SBC, because it’s not meant to be one.

20 things I’ve learned as a systems (over) thinker

  1. Your default description of (almost) any problem will be too threatening/overwhelming.

  2. Do your deepest thinking with co-conspirators (not the people you’re trying to influence).

  3. The people you’re trying to influence spend 98% of their day overwhelmed by business as usual.

  4. You’ll need a support network. And not just a venting network. Real support.


Phlex is a framework for building fast, reusable, testable views in pure Ruby.

class Nav < Phlex::HTML
	def template
		nav(class: "main-nav") {
			ul {
				li { a(href: "/") { "Home" } }
				li { a(href: "/about") { "About" } }
				li { a(href: "/contact") { "Contact" } }

Programming languages: application and interpretation

This is the Web site for Programming Languages: Application and Interpretation, often referred to by its initials as PLAI (pronounce it like “play”). Over the years well over fifty academic institutions (that I know of) have used PLAI.

PLAI is designed for upper-level courses that introduce the main ideas of programming languages. In the US, it is designed for students in their second- through fourth-years of college, as well as starting graduate students. However, PLAI has been used with students much younger, including in a few select high school classes.

The worst-selling Microsoft software product of all time: OS/2 for the Mach 20

During this era, technology was advancing far faster than the accounting industry could keep up. Computers were classified as office equipment, which at the time had a seven-year depreciation schedule. But computers were improving so rapidly that a seven-year-old computer was beyond obsolete. Companies needed to upgrade their computers, but their accountants wouldn’t let them just throw out the old ones since they still had several years of depreciation left and consequently had no budget for buying new computers. “The government says that these have to last seven years, so by golly, you’re going to make them last seven years!”

A new old idea

The intricacy of design and manufacture here isn’t what I’m after, it’s the feeling you get from using an old hammer, or of starting an old truck: the feeling that this tool has been used for a long time and is nowhere near the end of its usefulness. The problem, setting aside for the moment whether this is a real problem or merely one of perception, is that as computers age, our sense is that they actually do reach the end of their usefulness, well before they actually stop doing the things they could do when they were brand new.

What I want is a computer that functions in the same way as a typewriter. What I mean is not that it’s an expensive Alphasmart with an e-Ink screen and an Ernest Hemingway endorsement to sell to Nanowrimo enthusiasts with too much disposable income. What I mean is that it doesn’t very many things, but what it does do is help me write, organize my thoughts, create things, correspond with people, and it will do those things for a very long time.

Small systems have their place, but an ideal permacomputer is comprehensible without being artificially limited. The line between those two things can probably only be found through experimentation.

A brief history & ethos of the digital garden

A newly revived philosophy for publishing personal knowledge on the web

Sorting things out: classification and its consequences

Introduction: a good infrastructure is hard to find

Information infrastructure is a tricky thing to analyze. Good, usable systems disappear almost by definition. The easier they are to use, the harder they are to see. As well, most of the time, the bigger they are, the harder they are to see. Unless we are electricians or building inspectors, we rarely think about the myriad of databases, standards, and instruction manuals subtending our reading lamps, much less about the politics of the electric grid that they tap into. And so on, as many layers of technology accrue and expand over space and time. Systems of classification (and of standardization) form a juncture of social organization, moral order, and layers of technical integration. Each subsystem inherits, increasingly as it scales up, the inertia of the installed base of systems that have come before.

Infrastructures are never transparent for everyone, and their workability as they scale up becomes increasingly complex. Through due methodological attention to the architecture and use of these systems, we can achieve a deeper understanding of how it is that individuals and communities meet infrastructure.

Truth comes at the point of a list

List making has frequently been seen as one of the foundational activities of advanced human society. The first written records are lists (of kings and of equipment). Leroi-Gourhan pointed out that what gets written down first are things that cannot be retained in the head. This is especially true of lists. The earlier feats of memorization by Welsh poets (up to 100,000 lines for professional bards) were of lists within epic poems. The memorization task was aided by numerous cues within the text, and they were embedded in social practice.

Michel Foucault and Patrick Tort have, in different ways, claimed that the production of lists (of languages, races, the minerals, and animals) revolutionized science in the nineteenth century and led directly to modern science. The list in this case is both a hierarchical ordering and a practical tool for organizing work and the division of labor. The prime job of the bureaucrat, according to Latour, is to compile lists that can then be shuffled and compared. Yates makes a similar point about the humble file folder. And so empires are controlled from a distance, using these simplest of technologies.

These diverse authors have all looked at the work involved in making these productions possible. Instead of analyzing the dazzling end products of data collection and analysis — in the various forms of Hammurabi’s code, mythologies, the theory of evolution, the welfare state — they have instead chosen to dust off the archives and discover piles and piles of lowly, dull, mechanical lists. The material culture of bureaucracy and empire is not found in pomp and circumstance, nor even in the first instance at the point of a gun, but rather at the point of a list.

Today, with the emergence of new information infrastructures, these classification systems are becoming ever more densely interconnected. This integration began roughly in the 1850s, coming to maturity in the late nineteenth century with the flourishing of systems of standardization for international trade and epidemiology. Local classification schemes (of diseases, nursing work, viruses) are now increasingly giving way to these standardized international schemes that themselves are being aligned with other large-scale information systems. In this process, it is becoming easier for the individual to act and perceive him or her self as a completely naturalized part of the “classification society”, since this thicket of classifications is both operative (defining the possibilities for action) and descriptive. As we are socialized to become that which can be measured by our increasingly sophisticated measurement tools, the classifications increasingly naturalize across wider scope. On a pessimistic view, we are taking a series of increasingly irreversible steps toward a given set of highly limited and problematic descriptions of what the world is and how we are in the world.

For these reasons, we have argued in this book that it is politically and ethically crucial to recognize the vital role of infrastructure in the “built moral environment”. Seemingly purely technical issues like how to name things and how to store data in fact constitute much of human interaction and much of what we come to know as natural. We have argued that a key for the future is to produce flexible classifications whose users are aware of their political and organizational dimensions and which explicitly retain traces of their construction. In the best of all possible worlds, at any given moment, the past could be reordered to better reflect multiple constituencies now and then. Only then we will be able to fully learn the lessons of the past. In this same optimal world, we could tune our classifications to reflect new institutional arrangements or personal trajectories reconfigure the world on the fly. The only good classification is a living classification.

Weathering software winter

Imagine two people in a small sailboat in the tropics, somewhere like the Marquesas, or another island in the South Pacific Ocean. These islands are covered with beautiful lush forests, they require rain and sun, that’s all, then there’s us sharing that same space, busy lifting a smartphone in a Ziploc bag up the mast to try and get one bar of signal to update Xcode, which at the time was 11 gigs. We had a stack of cards, each worth two gigabytes of mobile data, but with Xcode you can’t resume the download if it fails. We could swap the codes for the cards, and if we did it within 10 seconds it would detect a timeout and would continue. The problem is that if the download is not done by 1600, then the sun is setting, the solar panels aren’t charging the batteries anymore, and our laptops are dying. The download is at 7 gigs with three more hours left to download the update, it won’t finish, and we will have spent all that data for nothing.

Going back and forth between Forth and Lisp, I couldn’t make up my mind, but I kept seeing people who would fall in love with Forth, but were really bad at selling it. With Lisp it’s really hard to find any Lisp code that you can actually copy/paste in a project because everyone’s using weird macros, and libraries, and nothing is portable.

Forth had a different problem, everyone I’d talk to would say Forth was the best, and that I should really use it, but then I’d ask them questions like, “how do I calculate the distance between two points?” I walked away from that interaction thinking, well, it seems like a lot of people like Forth, but don’t write it. It was hard to find any code at all. I know Forth is not portable, but it was hard to find just actual use-case of Forth that wasn’t someone trying to learn Forth by implementing Forth and then moving on back to Rust.