







Software: do you write it like a book, grow it like a plant, accrete it like a pearl, or construct it like a building? As Steve McConnell notes in Code Complete 2, there’s no shortage of software development metaphors: A confusing abundance of metaphors has grown up around software
Software Bonkers
I’m software bonkers: I can’t stop thinking about software. And I can’t stop building software.

Software Design is Knowledge Building
The product of software development is not code but a mental model, a theory: a specific way of explaining the world.

Sustainable software manifesto
The systems we build are never neutral. They can magnify harm or support a just and sustainable society. How we build today shapes tomorrow’s possibilities.

Perfect Software - Software for an Audience of One
We have many names to describe personal tools. Malleable software speaks to how it behaves. Home-cooked software speaks to who makes it.


Malleable Software in the Age of AI - Geoffrey Litt
Seeing Like a Programmer (LambdaConf 2024) — Sympolymathesy, by Chris Krycho
How do we make good software, and indeed, what makes software good: both as software, and in terms of its place in the world?

Where Did Software Go Wrong? | Jesse Li
Software is broken, but it's not because of NPM, startups, AI, or venture capitalists. A deep dive into how we think about and produce code, and how our software systems reflect the manic state of the modern world.

Code Is Cheap Now. Software Isn’t.
The barrier to entry for building software has collapsed. The barrier to building something that matters hasn’t moved an inch.
Code Galaxies Visualization
Code galaxies visualization allows you to explore huge graphs of software package managers (npm, go, ruby gems, composer, etc.)

The Evolutionary Ecology of Software: Constraints, Innovation, and the AI Disruption
This chapter investigates the evolutionary ecology of software, focusing on the symbiotic relationship between software and innovation. An interplay between constraints, tinkering, and frequency-dependent selection drives the complex evolutionary trajectories of these socio-technological systems. Our approach integrates agent-based modeling and case studies, drawing on complex network analysis and evolutionary theory to explore how software evolves under the competing forces of novelty generation and imitation. By examining the evolution of programming languages and their impact on developer practices, we illustrate how technological artifacts co-evolve with and shape societal norms, cultural dynamics, and human interactions. This ecological perspective also informs our analysis of the emerging role of AI-driven development tools in software evolution. While large language models (LLMs) provide unprecedented access to information, their widespread adoption introduces new evolutionary pressures that may contribute to cultural stagnation, much like the decline of diversity in past software ecosystems. Understanding the evolutionary pressures introduced by AI-mediated software production is critical for anticipating broader patterns of cultural change, technological adaptation, and the future of software innovation.

Principles for crafting software
My principles for deciding what to work on and how to build it.

Breaking Smart: How Software is Eating the World
21 essays on the software revolution — how agile, networked approaches are disrupting industries and remaking society. In English, German, and French.

I love this idea of "houseplant programming" and have long thought gardening was a great metaphor for a lot of what I do as a software developer. Nice to see Miren setting up a cozy home for plants in the garden <3 miren.dev/blog/garden-server
Everybody Could Use a Garden Server - Miren
miren.dev