Convivial Design Heuristics for Software Systems

Illich’s notion of conviviality centres on the balance between individual freedom to act and collective freedom from domination. This balance, or tension, is present in the design of most user-facing computer systems, and especially in the design of programming systems. Software lore has arisen with at best a skewed perspective on such issues, having developed from an industrial viewpoint. In this paper I survey some tentative design principles, extracted from examples of research work or (more often) systems used in practice, which (sometimes by accident) do show some regard for conviviality. Although preliminary, my hope is that these principles may yet develop into a collection of design hints at least equal, and largely countervailing, to the less conviviality-prone ideas circulating in today’s software folklore. Relevant topics include language design, information hiding, language virtual machines, portability, classical logic, and layered system design. I also briefly consider the intertwined social and political constructs, such as copyleft, ownership and community responsibility, asking how to evolve or generalise these towards convivial ends.

Exploring the Supply Chain of the Pfizer/BioNTech and Moderna COVID-19 vaccines · Neubertify

Interesting OCaml exercises from François Pottier available online - Learning - OCaml

See for example François’ exercises on:

John Carlos Baez: This Week’s Finds (1–50)

These are the first 50 issues of /This Week’s Finds of Mathematical Physics/. This series has sometimes been called the world’s first blog, though it was originally posted on a “usenet newsgroup” called sci.physics.research — a form of communication that predated the world-wide web. I began writing this series as a way to talk about papers I was reading and writing, and in the first 50 issues I stuck closely to this format. These issues focus rather tightly on quantum gravity, topological quantum field theory, knot theory, and applications of /n/-categories to these subjects. There are, however, digressions into elliptic curves, Lie algebras, linear logic and various other topics.

John Milnor Differential Topology Lectures

Great lectures, fun to watch.

Rebuilding the most popular spellchecker. Part 1

Interesting look into the world of spellcheckers and how they work. Mostly focused on the Hunspell library (which I’d never heard of before, despite being used as the spell checker in Chrome, MacOS, Mozilla products, etc). [Lookup](Rebuilding the spellchecker, pt.2: Just look in the dictionary, they said!) is nontrivial and [this post](Rebuilding the spellchecker, pt.3: Lookup—compounds and solutions) is a great example of just how complicated natural language can be.

Change Actions

To the extent that building software is about interpretation, we should study semiotics. To the extent it’s about naming, we should study analytic philosophy . To the extent that it’s reasoning about systems that are too large for any one person to understand, we should study sociology . We should learn whatever we can, and share it as widely as possible; even if computer science is a branch of mathematics, software design is not, and we should stop pretending otherwise. composition is interpretation

code history visualization engine Powered by Gource - a software version control visualization tool Also see Logstalgia - a website access log visualization tool

The Race to Make Vials for Coronavirus Vaccines | The New Yorker

Still File - Skrekkøgle

‘Still File’ is a series of 4 photographs recreating computer renderings as physical scenes. The photos’ artifacts, surroundings, camera settings and lighting has been shaped intending to resemble 3d graphics of different types.


See replies (in particular @davidad)