The Nature of Software

Archive

Deep Interlock & Ambiguity

# Deep Interlock & Ambiguity The property of *deep interlock and ambiguity* has been one of the more difficult for *me* to understand—unusual name aside—on one hand because it appears to *conflict* with properties like *contrast*, *good shape*, and *strong centers*—though that one could go either way—while appearing *redundant* to properties like *positive space* and *not-separateness*. On the other hand, neither “deep interlock” *nor* “ambiguity” are things we typically look for in good software. To work with this property, then, we must once again mine it for its semiotic and topological essence. > [![houses with verandas on Martha's Vineyard](https://the.natureof.software/marthas-vineyard-verandas;crop=88,0,922,615;scale=900,600)](https://flickr.com/photos/69392382@N04/20333268780/) [![an arcade in Portugal](https://the.natureof.software/portugal-arcades;crop=24,0,3672,2448;scale=900,600)](https://flickr.com/photos/pedrocaetano/30222505972/) From verandas on Martha's Vineyard, to arcades in Portugal, this common structural pattern knits together the outside with the inside. An example of *deep interlock and ambiguity* in *architecture* which is both common and familiar is the large porch or veranda, or the similar structure, the arcade. Another which comes to mind immediately, which these structures partially embody, is [number 163 from A Pattern Language](https://www.iwritewordsgood.com/apl/patterns/apl163.htm), *outdoor room*. What these have in common is a sort of *liminality*: are they part of the building, or are they part of the outside? To the extent that they are part of the building, these structures are formed by recesses and protrusions in the building's envelope. In the sense that they're part of the outside, there is often nothing but air between a person on a porch and a person on the street. Birds can fly through them, they might get rained on, and so forth… --- # ⁂ # Notice to Subscribers Warmest thanks to my subscribers for your patience and continued support. I hope you enjoyed this chapter. This chapter is the product of numerous false starts. I began writing it in late June, early July of 2023, and got about a third of the way in. During this period I was participating in the inaugural [Summer of Protocols](https://summerofprotocols.com/) program, and I mistakenly expected I would be able to juggle writing Nature of Software chapters with the work involved over that interval. What I discovered was that it doesn't satisfice to chip away at one of these chapters with an hour or two here and there; I need at least one, if not *two* solid, contiguous weeks of nothing else on the docket to grind one out (this one apparently took *three*). I didn't manage to sequester that unbroken stretch of time until mid-March of this year. > I've found that a lot of the effort of this particular project reduces to just sitting and thinking about the property in question for extended periods, and taking even a few days off from it means starting all over again. I also had kind of a dumb hang-up about not messing up the serial number of this newsletter, which you can't change (although I later learned you *can* prevent it from displaying). So I was like, hold off on putting out an interim notice—which would have just been tap-dancing anyway—because I'm bound to finish this chapter Any Day Now™. That was silly; I'm not going to do that anymore. This brings me to the matter of what I was doing *instead* of writing these chapters. It was always my intention that The Nature of Software would amount to a conventional printed *book*, but there is *so* much more material that is valuable in all sorts of applications, woven throughout the content, that is decidedly *not* book-shaped. I would like to be able to surface *that*. The capability to do this resides in a piece of infrastructure software I wrote that I'm calling [`Intertwingler`](https://intertwingler.net/). This is an engine for creating and managing Web content according a structural style I've dubbed *dense hypermedia*—a very large number of very small objects, typed and represented as computable data wherever possible, heavily interconnected by a thick network of durable, (again) typed, bidirectional links. This is in contrast to how the Web comes out of the box, which is *sparse* hypermedia: big chunky documents with only a handful of links, that are brittle, and untyped, with no backlinks, with poor to nonexistent fine-grained addressability, with any formal structure flattened and washed out so it can't be used as input to a program without human eyes at *least* first identifying that's what it is, if not also firming it up enough to compute over. > I know you can use *AI* to rehabilitate structures—such as data tables—out of formats intended only for human consumption, like vanilla *HTML*, or *PDF*, or even images. One of the goals of `Intertwingler` is to create the conditions to keep all this business in the realm of boring old deterministic computing, so you don't *have* to use *AI* to pull computable data out of the mud. The main goal of `Intertwingler` is a thing called [*FAIR* data](https://en.wikipedia.org/wiki/FAIR_data): *Findable*, *Accessible* (I prefer “addressable” because [“accessible” has a specific meaning](https://en.wikipedia.org/wiki/Accessibility) and is an orthogonal concern, but whatever), *Interoperable* and *Reusable*. There really isn't a more concise description of the objective. When I try to hone in on just *one* of these values, another one of them—at *least*—pops into view. `Intertwingler` comes out of the frustration that the Web is *embarrassingly* underutilized as a medium for effective communication. It comes out of the frustration that content on the Web goes stale or disappears outright. It comes out of the frustration that every time you make a copy of some information, that's another copy you now have to manage. The frustration that you often can't *use* the same copy of some information or other for reading with your eyeballs as you do for feeding into a program; that sourcing always involves copying (and thus a slippage in accuracy); that you can't even *point* at a segment of content with enough granularity to reuse it, and that you couldn't trust it to be there in the future if you did. That we all rely on *one* increasingly capricious company to *find* anything in this mess. The answer, it turns out, is *It's the *URLs*, Stupid*. The problem with *URLs* is that it's really easy to change both what they *say* and what they *point to*, and really hard to update all the places that refer to them. There are all sorts of other equities involved in *URLs*, like making them nice-looking to human onlookers as well as search engines, and the desire—often expressed by people in the marketing department—to change them from time to time. There is also the utterly preposterous situation that in order to put anything on the Web, you first have to decide what to call it. The root cause of *URL* breakage, at least according to my diagnosis, is that often a *URL*, or at least a *part* of it, comes from something like a database—or file system—that is altogether unsuited to the task of preserving the relation of the identifier to its content over time. People rename files, they delete them, they renumber keys in a database, they “redesign”, et cetera. The way you fix this is you assign every information resource a durable identifier for life, and then you can *map* all the other identifiers to it that you like. And—this is the best part—you keep a *list* of all the things a given information resource was ever called. That way, arbitrarily far into the future, if somebody hasn't gotten the memo that the *URL* of a given resource was changed from `/product` to `/products` or whatever, they still get what they're expecting. At its core—literally, this is the first code I wrote back in 2018, based on similar code I had written a decade earlier—`Intertwingler` is a mechanism for managing *URL* continuity. It has existed in breadboard form since then, capable of punting out static websites like [my personal site](https://doriantaylor.com/) and [`the.natureof.software`](https://the.natureof.software/ "The Nature of Software"). What I did last summer, and ostensibly stretching into the first quarter of this year, is turn that into an application server that will run live code. > I started out [Summer of Protocols](https://summerofprotocols.com/) with a much more conservative vision of what I was going to create, and then about 3/4 of the way in I decided to go large and do the transformation function infrastructure, which I had dreamed up all the way back in *2006*. *That's* where all the time went, or at least a chunk of it. The next step is to migrate all my Web properties to Intertwingler. I count five, including [`the.natureof.software`](https://the.natureof.software/ "The Nature of Software"), which is one of the easier ones. Indeed, the source material is already in a configuration that gets consumed by the static site generator, so there isn't much to change. There are a couple mundane back-end things I have to do to the engine first (like beefing up caching) but it's otherwise good to go. You won't notice much of a difference at the outset, but this change puts The Nature of Software in a position to display (and manipulate) structured data in real time. From there, I'm going to start building out a *knowledge graph* that envelops and suffuses the main text, available to subscribers, in the following stages: 1. **Indices:** glossary ([which is already up](https://the.natureof.software/glossary-index)), bibliography, media credits. 2. **Entities:** people, places, things, organizations. I have found entities like these are great focal points for exploration, because they bundle up not only *works*, but social relationships, collaborations, movements, etc. 3. **Argumentation:** I intend to dig into the text *I* wrote, and the text it depends on, and put the claims, positions, and arguments into a formal structure. I will also (probably) start using the site itself to host notes about future chapters. 4. **Community annotation:** The ultimate plan is to open the space up to subscribers to discuss the corpus and make their own connections. There is no standing technical impediment to delivering these except for the last one, which is going to require some thinking about designing a sensible way to give everybody their own space in the graph, but also afford the commingling of data. That is an `Intertwingler` problem (or rather its underlying graph database) to solve, not a Nature of Software problem. Although, I made `Intertwingler` in part as a substrate for applications—[like the *IBIS* tool](https://intertwingler.ibis.makethingsmakesense.com/26702743-b8b9-4279-971e-bf0a68ba777d)—that facilitate the design of software, and I'm writing The Nature of Software to try to suss out how the *fifteen properties* look when applied as transformations to a software project. Here, `Intertwingler` can serve as a live specimen. At any rate, changes to the knowledge graph are going to be very fine-grained, and clump up as I do “sessions” of graph editing. As such, I may set up a feed to broadcast the play-by-play to anybody who is interested, and maybe only actively report on the highlights. Once again, this is all taking place on [`the.natureof.software`](https://the.natureof.software/ "The Nature of Software"), to which all subscribers should have access. > If you *don't* have access for some reason, reach out and I'll fix that. Once again, I extend my utmost appreciation to all of you for your continued support. See you soon for Chapter 9: *Contrast*.

The property of deep interlock and ambiguity has been one of the more difficult for me to understand—unusual name aside—on one hand because it appears to conflict with properties like contrast, good shape, and strong centers—though that one could go either way—while appearing redundant to properties like positive space and not-separateness. On the other hand, neither “deep interlock” nor “ambiguity” are things we typically look for in good software. To work with this property, then, we must once again mine it for its semiotic and topological essence.

houses with verandas on Martha's Vineyard an arcade in Portugal From verandas on Martha's Vineyard, to arcades in Portugal, this common structural pattern knits together the outside with the inside.

An example of deep interlock and ambiguity in architecture which is both common and familiar is the large porch or veranda, or the similar structure, the arcade. Another which comes to mind immediately, which these structures partially embody, is number 163 from A Pattern Language, outdoor room. What these have in common is a sort of liminality: are they part of the building, or are they part of the outside? To the extent that they are part of the building, these structures are formed by recesses and protrusions in the building's envelope. In the sense that they're part of the outside, there is often nothing but air between a person on a porch and a person on the street. Birds can fly through them, they might get rained on, and so forth.

Free post
#9
April 22, 2024
Read more

Local Symmetries

# Digression on the Objectivity of the Fifteen Properties Christopher Alexander expressed a strong moral conviction that what he called *living structure* was *good*, and a lack of it was *bad*. The way to create living structure, according to Alexander, was through successive applications of (again, what he termed) the *fundamental differentiating process*, each step featuring one or more of these properties as *structure-preserving transformations*. Whether living structure is a real phenomenon—and furthermore, whether it is immoral *not* to create it when you have the opportunity—are assertions you can have a genuine, good-faith debate about. You can even argue over whether or not a stepwise process of incremental differentiation is necessary to produce it (to the extent that it exists in the first place). *That* these fifteen properties are present in the built environment, in greater or lesser degree, is not as negotiable. They are conspicuous features of the geometry of the space in question; you shouldn't have to go digging into the drawings to perceive them. They require neither a certification in architecture, nor any professional interpretation to recognize. The only training necessary is the list of properties itself, with handful of examples, that anybody can memorize in an otherwise idle afternoon. *Why* we're interested in [The Nature of Order](https://www.eurospanbookstore.com/book/detail/the-nature-of-order-four-volume-set/?k=9780972652902), again, is because the *fundamental differentiating process* looks a heck of a lot like a particular known-good way for making software: a stepwise, incremental process of iteration and refinement, most recently incarnated as *Agile*, but that has been [on the books for decades prior to that.](https://doriantaylor.com/agile-as-trauma) The fifteen geometric properties are at once the nouns and the verbs of an otherwise content-free grammar for creating *buildings*; the goal of this project is to get a clue to their semiotic and topological analogues for creating *software*.

Digression on the Objectivity of the Fifteen Properties

Christopher Alexander expressed a strong moral conviction that what he called living structure was good, and a lack of it was bad. The way to create living structure, according to Alexander, was through successive applications of (again, what he termed) the fundamental differentiating process, each step featuring one or more of these properties as structure-preserving transformations.

Whether living structure is a real phenomenon—and furthermore, whether it is immoral not to create it when you have the opportunity—are assertions you can have a genuine, good-faith debate about. You can even argue over whether or not a stepwise process of incremental differentiation is necessary to produce it (to the extent that it exists in the first place). That these fifteen properties are present in the built environment, in greater or lesser degree, is not as negotiable. They are conspicuous features of the geometry of the space in question; you shouldn't have to go digging into the drawings to perceive them. They require neither a certification in architecture, nor any professional interpretation to recognize. The only training necessary is the list of properties itself, with handful of examples, that anybody can memorize in an otherwise idle afternoon.

Free post
#8
June 12, 2023
Read more

Good Shape

In the chapter in [Nature of Order](https://www.amazon.com/dp/0972652914?tag=doriantaylor-20) introducing *good shape*, Christopher Alexander admitted that it was one of the more elusive of the fifteen properties. Not only is it the only one of them whose name explicitly expresses an opinion, he defined it in terms of *itself*: analogous to *strong centers*, a good shape is made up of good shapes. He nevertheless got more specific with an enumerated list of criteria for what he meant: > 1. High degree of internal symmetries. > 2. Bilateral symmetry (almost always). > 3. A well-marked center (not necessarily at the geometric middle). > 4. The spaces it creates next to it are also positive (*positive space*). > 5. It is very strongly distinct from what surrounds it. > 6. It is relatively compact (i.e., not very different in overall outline from something between 1:1 and 1:2 — exceptions may go as high as 1:4, but almost never higher). > 7. It has closure, a feeling of being closed and complete. > > The Nature of Order, Book 1, Chapter 2.6, p. 183. For me, the most salient of these ingredients is probably the [aspect ratio](https://en.wikipedia.org/wiki/Aspect_ratio), because exemplars of *good shape* rarely contain elements that are excessively long and skinny (that is, more than four times longer along one dimension than the next longest). Other features, like being [convex](https://en.wikipedia.org/wiki/Convex_hull) (at least on average) and closed, having a conspicuous [centroid](https://en.wikipedia.org/wiki/Centroid), containing lots of symmetries, etc., all follow from what we know of the other properties. If any of the assertions are surprising, it's the one about [bilateral symmetry](https://en.wikipedia.org/wiki/Reflection_symmetry)—that there are respective notions of “left” and “right”, and that they are mirror images of each other. (*Why* it's surprising will have to be a discussion for the the next chapter, *Local Symmetries*.) > Worth noting that the plane along which bilateral organisms are symmetrical is called the [*sagittal* plane](https://en.wikipedia.org/wiki/Sagittal), [the etymology of the term](https://www.etymonline.com/search?q=sagittal) being “shaped like an arrowhead”—that is, an object which has reflection symmetry about an axis—another circular definition. Indeed, *good shape* is one of those “fundamental” properties that calls the notion of *fundamentality* into question: a clear and distinct center, not too bent or jagged, not too long and skinny, made up of other elements with the same characteristics. A skeptic would say most of these are already accounted for: too amorphous is not a *strong center*, too jagged and it will not create *positive space* or *local symmetries*, no recursive composition means no *levels of scale* or *gradients*. Yet *good shape* seems to yoke these all together in a way that is meaningful in its own right.

Preface to Chapter 6

Writing this chapter has been mixed up with developing the augmented archive at the.natureof.software. The goal, as I mentioned previously, is to provide a space for the community of subscribers to read the entirety of the work in one place, as well as—eventually—discuss and annotate it, and further distill the concepts into material that can be applied directly, and where applicable, programmatically. This is still a work in progress, with a handful of items outstanding—in no particular order—to reach “minimum viable” status:

  • The visual design, which I will undoubtedly noodle on ad infinitum,
  • generated / boilerplate content, and the infrastructure to support it,
  • some mechanism that syncs subscribers from the newsletter to the website…

…and later on, when I implement them, dynamic elements and structured data. Whenever possible, I will be streaming these interventions on Twitch and YouTube.

The current list of subscribers, as of this writing, will have access to the.natureof.software. through an initial manual sync. To log in, use the same e-mail address where you get the newsletter delivered. I want to underscore that this site is still lumpy as heck and I am actively hacking on it. I'll try to get automatic syncing online as soon as possible.

And now, enjoy Chapter 6: Good Shape.


In the chapter in Nature of Order introducing good shape, Christopher Alexander admitted that it was one of the more elusive of the fifteen properties. Not only is it the only one of them whose name explicitly expresses an opinion, he defined it in terms of itself: analogous to strong centers, a good shape is made up of good shapes. He nevertheless got more specific with an enumerated list of criteria for what he meant:

Free post
#7
March 8, 2023
Read more

Positive Space

> ![Rubin vase](https://methodandstructure.com/rubin-vase) > > The quintessential figure-ground inversion: [the Rubin vase](https://en.wikipedia.org/wiki/Rubin_vase). The third and final chapter in the cluster I am calling “the zone between two *centers* is also a center” is *positive space*. This refers to [figure-ground inversion](https://en.wikipedia.org/wiki/Figure%E2%80%93ground_\(perception\)), or the shaping of what is typically called [*negative* space](https://en.wikipedia.org/wiki/Negative_space)—that is, the part on the page *without* the ink—into something meaningful. The phrase *positive space* is an Alexanderism, and he meant something a little more specific, that (in the case of architecture) if you could magically swap wall with air, the resulting shape would still be coherent, and more or less *convex*. Think the three-dimensional analogue to the [Rubin vase](https://en.wikipedia.org/wiki/Rubin_vase), the FedEx logo, or an [Olly Moss](https://ollymoss.com/) poster. > ![The FedEx logo](https://methodandstructure.com/fedex-logo) > > The rightward-facing arrow in the space between the **E** and the **x** in the FedEx logo is a staple topic of discussion in elementary graphic design courses. ----- > ![Olly Moss poster depicting C-3PO's eyes as the twin suns of Tattooine](https://methodandstructure.com/olly-moss-a-new-hope) > > [Olly Moss](https://ollymoss.com/) has built a reputation as the go-to guy for movie posters that do clever things with figure-ground inversion.

Introductory Note to Chapter 5

I started this chapter maybe a few days before Halloween, and shelved it temporarily to take care of something, thinking I'd get back to it in a week. This, I sheepishly admit, did not happen as soon as I'd have liked it to.

What I was working on lay at the nexus of probably three separate decade-spanning threads of inquiry. My professional focus is, and has been for at least this long, about comprehension: helping people understand complex situations so they can make intelligent decisions and operate as a unit.

Now, I write documents and do slide presentations just like the next tech consultant, but I have had the growing impression, especially as the Web matures and we tuck into the early-mid 21st century, that the capabilities of digital media are still going miserably underutilized.

I have remarked in a number of places that if you take a garden-variety webpage and you shave off the navigation bar and the various insets, headers, footers etc., what you get is scarcely distinguishable from a Word document, which itself might as well be a printed piece of paper. Exceptions to this are mainly when the Web is being used as a delivery mechanism for software, rather than content. The latter is my source of interest, specifically dense hypermedia content, where traversing links—which themselves take many forms—is a major part of the experience.

When I say dense hypermedia, I mean it in contrast to sparse hypermedia, which is what we get with the Web as it is currently tooled: a lot of text and not a lot of links, and moreover a lot of things that could be links but aren't.

- Hiving off details, digressions, parentheticals: hypermedia (text or otherwise) could be unparalleled in its ability to get to the point. When you write an ordinary document, you have to include all this ancillary information inline: em-dash asides, parentheses, insets, marginalia, footnotes, endnotes, and so on. Making this content optional means busy people don't have to read any more than they need to. - Providing background information: the same mechanism used to abridge digressive details also works to discreetly help the reader get up to speed if they aren't familiar with some aspect the subject matter—say a particular concept, term, or entity. No need to be seen asking “dumb questions”. - Reusing content: not just to save time, but to avoid creating duplicates, ensuring all referring documents remain accurate when said reused content is updated. - Mixing media: something the Web is already pretty good at: integrating text, graphics, audiovisual, and interactive elements. Although… - Providing computable representations of structured data: mixing media, especially interactive visualizations, depends on data that can be used directly by the computer without any additional (human-powered) formatting or interpretation. Structured data may be represented in a table, record set, or chart for human consumption, but without formal structure and labels, it can't be repurposed for computation. We solve this by generating variants—ways of asking for the same content in a different container—and by embedding this formal structure into the documents themselves.

When I made a new website in 2007-2008 (after not having one since around 2002), I was determined to write it under a “proto” dense-hypermedia paradigm (I hadn't yet come up with the term): short documents, never more than a screen worth of content, completely stuffed with links—every thought gets its own page. This, it turns out, is really hard, so I eventually gave up and started writing ordinary essays—apparently hundreds of them.

The problems I was running into at the time reduce to the fact that the overhead of managing the hypertext got in the way of actually writing it. Specifically:

- If I wanted to link to something that didn't exist yet, I had to stop and think up a URL for it. Now, wikis handle this, but they do it badly, as URL naming is consequential, and half the reason for so much link rot on the Web is people renaming them willy-nilly. - Then, I had to create a stub document so there was something to link to. Or otherwise, disable the inbound links so there is no route to a nonexistent or otherwise unfinished document. Again wikis do handle this, but also badly. The real problem here though was just keeping track of the stubs that I had started but not yet finished. - The surface area of hypertext is surreptitiously huge. I would set out to write something without the faintest sense of how much effort it would take, in part due to raw overhead, but mainly because there's an invisible dimension that absorbs all your effort.

Conventional documents are simultaneously bigger and smaller—or, perhaps, thinner—than comparable hypertext networks. Due to the constraint that all parts of an essay, for example, have to show up on the page, it has a relatively well-defined scope. Hypermedia, by contrast, has an infinite number of nooks and crannies in which to sock away more stuff. It is actually reasonable to expect the amount of work involved in any hyperdocument to be proportional to the square of a comparable ordinary text. The formal reason has to do with graph theory, but the intuition is that there's another dimension that we can't see when we're looking at a document—itself strictly-speaking a one-dimensional object—because we're looking “down” at that second dimension edgewise.

In the last 15 years, I have developed techniques and tools that solved the bulk of the aforementioned problems, with the ultimate aim of returning to the dense hypermedia question. Outside of a few specialized engagements, though, I did not tackle it head-on until late 2022. (I had one of those “if not now, when” moments.) Remarks:

- Content reuse is essential, if for no other reason than a big chunk of linkable content can and absolutely should be reused. It's a whole universe of extra work otherwise, and a wild one at that. Microcontent and metadata is individually small enough to deem it not worth the candle to look up instead of writing anew, but (especially since it is linked together too) adds up to a formidable time suck. I spent about a week and a half just consolidating a bunch of duplicates I had generated over the last five years or so, a debt that had finally come time to repay. - The tooling and infrastructure I had written got quite a workout. In some cases it was because there was a particular effect I wanted to achieve that I hadn't previously anticipated in the tooling, in others because I was trying to fit together parts that hadn't previously been put together, and others still because of reconciling changes with third parties. As I wrote elsewhere, I probably stepped on every rake in the system, but the good news is, I'm now out of rakes. - There is all sorts of hidden work in the final presentation. Once you create all the parts and gather them up, it might not be immediately obvious how to arrange them. You will need time to do a final curatorial packaging of the artifact. This could be palliated somewhat by establishing a set of archetypal hypermedia artifacts, but those archetypes are only going to be identified by stumbling around in the dark. - I'm actually inclined to say that the logic of deliverable = artifact is anathema to the spirit of hypertext. It costs asymptotically nothing to add a single connection or piece of content to a hypermedia network, such that to cut all that activity off because the product is “done” seems like a bad idea. While there should perhaps be checkpoints of “done-ishness”, these artifacts (if we can call them unitary artifacts) should never really be considered fully “finished”.

The way I did this dense hypermedia project—and the wisdom of this is still debatable—was to write out the full-length document, and then start bucking it up, separating it into gloss versus details. There is also a completely stripped-down, structured version of the rationale itself, which is linked throughout the document(s).

Venn diagram of audiences

What I have found in my career—and what ultimately motivated me into this line of inquiry—is that technically-inclined readers insist on details that cause the rest of the population—which includes business leaders—to bristle. What little technical discussion you absolutely cannot scrub away is going to have to be nerfed with a like-I'm-five explanation of what the detail is, and why I insist on bothering you with it. The technical people will naturally find this boring and remedial. You just can't reconcile these two audiences with the same document, but you should be able to with a hyperdocument, even if it's just to share content common to both audiences without having to make a duplicate copy of it.

What does this mean for you, a Nature of Software subscriber?

- Well, for one, the resumption of a monthly publishing schedule, as the thing that has been eating my waking life for the last several weeks is now done, and monthly seems to be what I can ordinarily manage. - But more importantly, since I just ironed out the kinks on a whackload of new capability, I'm setting up a second archive on the.natureof.software where I'm going to put augmented versions of published chapters and other resources, to which all subscribers will have access.

This project is, at root, an attempt to make Christopher Alexander's The Nature of Order relevant to software development, while at the same time abridging the reading task by an order of magnitude. This is still on track. Indeed, I suspect that part of the reason for friction around the uptake of Alexander's ideas is that there is just so damn much material to read. While the main artifact here will still be a book-like thing serialized as a newsletter, there is still plenty of opportunity to both compress and enrich the message even more. Alexander's work is furthermore full of concepts and processes that can be spun out as structured data to remix and build upon.

In general I endeavour to move into the hypermedia space and live there permanently, such that conventional documents like the one you're reading are projections of higher-dimensional structures, flattened and desiccated for less dynamic media. The newsletter will continue, of course, but it will be a snapshot of what's happening online. That's the goal, at least.

At the time of this writing, there is nothing on the.natureof.software, because I just bought it. There are a few things I need to do before I have something minimally viable up there, like setting something up to sync accounts, and making an index page. Then I can work on certain data products like a concept scheme (the bulk of which I have almost certainly written down elsewhere), and interactive capabilities like collaborative annotation. Definitely by next issue there will be something there to log into.

And now, enjoy Chapter 5 of The Nature of Software: Positive Space.


Rubin vase

The quintessential figure-ground inversion: the Rubin vase.

Free post
#6
January 7, 2023
Read more

Alternating Repetition

*Alternating repetition* is the second of three consecutive properties in [The Nature of Order](https://www.eurospanbookstore.com/book/detail/the-nature-of-order-four-volume-set/?k=9780972652902) which make little sense if you apply them directly to software. It is curious that [Christopher Alexander](https://doriantaylor.com/at-any-given-moment-in-a-process) arranged them consecutively, because, as I have mentioned in [the previous chapter, *Boundaries*](https://buttondown.email/natureofsoftware/archive/boundaries/), this and the following chapter (*Positive Space*) share a sort of meta-characteristic, which can be pronounced like “the space between the centers is itself a center”. Given this state of affairs, I am going to use this space to talk more about this meta-property, and how it is inflected by the original geometric property from the book. This is of course after I tell you what it means for buildings. # In Buildings Buildings tend to have, for instance, structural elements that repeat. Whether they are piers, or bays, or vaults, or columns, or joists, or rafters (they don't have to be load-bearing either, they could be dormers or even ornaments), buildings are full of features that are usually evenly-spaced, identical copies of an elementary structure. Alexander argues that the space is more *whole* when the gaps between these features are discernible features in themselves.

Alternating repetition is the second of three consecutive properties in The Nature of Order which make little sense if you apply them directly to software. It is curious that Christopher Alexander arranged them consecutively, because, as I have mentioned in the previous chapter, Boundaries, this and the following chapter (Positive Space) share a sort of meta-characteristic, which can be pronounced like “the space between the centers is itself a center”.

Given this state of affairs, I am going to use this space to talk more about this meta-property, and how it is inflected by the original geometric property from the book. This is of course after I tell you what it means for buildings.

In Buildings

Free post
#5
October 4, 2022
Read more

Boundaries

Christopher Alexander approached his fifteen geometric properties from a roughly phenomenological standpoint. They are “fundamental” in the sense that they are sufficiently differentiated from one another for each to warrant its own distinct treatment. It is nevertheless possible to view commonalities among the properties, suggesting that they can be broken down to even more elementary concepts. Alexander himself hinted at this when he proposed a separate set of *eleven* properties for colour. Some years ago, I even considered a grouping of the properties [in terms of their pertinence to information theory](https://doriantaylor.com/fifteen-properties-through-an-information-theoretic-lens). A few of Alexander's properties share a characteristic that can be articulated roughly like **the space between two (or more) centers is itself a (strong) center**. *Boundaries* is one such property. *Alternating repetition* and *positive space*, which also happen to constitute the next two chapters, have the same characteristic as well. > [In my information-theoretic meta-categorization scheme](https://doriantaylor.com/fifteen-properties-through-an-information-theoretic-lens), I put *boundaries* in a separate category (conveying a signal) from *alternating repetition* and *positive space* (compression). This demonstrates that there is more than one way to cluster the properties. We expect this, however, since we're ultimately trying to bucket continuous phenomena like *space*, *colour*, and *feeling* into discrete concepts and conceptual structures. # Boundaries in Buildings Like his other fundamental properties, Alexander approached *boundaries* primarily as a geometric phenomenon. He wrote that a boundary strengthens the center it bounds by “forming a field of force” while it “unites…with the world beyond the boundary”. This refers to *any* boundary-like structure, not just functional components like gateways and thresholds. > [![Eishin great hall](https://methodandstructure.com/eishin-great-hall;crop=0,240,2448,1632;scale=1000,667)](https://flickr.com/photos/morville/19641322519/) > > The great hall at Eishin is suffused with *boundaries*, along with plenty of the rest of the fifteen properties.

Christopher Alexander approached his fifteen geometric properties from a roughly phenomenological standpoint. They are “fundamental” in the sense that they are sufficiently differentiated from one another for each to warrant its own distinct treatment. It is nevertheless possible to view commonalities among the properties, suggesting that they can be broken down to even more elementary concepts. Alexander himself hinted at this when he proposed a separate set of eleven properties for colour. Some years ago, I even considered a grouping of the properties in terms of their pertinence to information theory.

A few of Alexander's properties share a characteristic that can be articulated roughly like the space between two (or more) centers is itself a (strong) center. Boundaries is one such property. Alternating repetition and positive space, which also happen to constitute the next two chapters, have the same characteristic as well.

In my information-theoretic meta-categorization scheme, I put boundaries in a separate category (conveying a signal) from alternating repetition and positive space (compression). This demonstrates that there is more than one way to cluster the properties. We expect this, however, since we're ultimately trying to bucket continuous phenomena like space, colour, and feeling into discrete concepts and conceptual structures.

Free post
#4
September 1, 2022
Read more

Strong Centers

# What is a *Center*? If Christopher Alexander's latter-career methodology has a centre, it's the *center*. A center can be understood as a region of space (or space*time* if you like), that is *differentiated* from its surroundings somehow. A center is identifiable; you should be able to point to it, maybe even name it. A center has *thing*-ness. It need not, however, have a crisp boundary: centers, according to Alexander, are *field*-like. This tracks, because they don't call it the spacetime *continuum* for nothing. A center, therefore, is kind of like a “minimum viable *thing*”: any thing is also a center, and if it's not a center, then it's a *non*-thing. The reason why one would bother introducing a new term *center* and not just say *thing* is to call attention, for one, to what I just wrote about the fuzziness of boundaries, but also to further specify that centers are *recursive*: centers are made of centers, and *compose* to make up other centers. If you're versed in design at all, you might have encountered the term *affordance* from cognitive psychology. An affordance can be understood as a relation between a living being and its environment, or an object *in* the environment, that governs *potentials*—what can happen next. A center is somewhat analogous, indeed possibly more primitive: using the language of affordances, we can say that a center affords—at *least*—noticing, identifying, pointing at, focusing on, moving toward. While a center is always an objective, physical, geometric phenomenon, it has a strong coupling to life through its capacity to carry information. > ![SS West > Mahomet](https://methodandstructure.com/mahomet;crop=0,627,2645,2645;scale=1000,1000) > > [Dazzle camouflage](https://en.wikipedia.org/wiki/Dazzle_camouflage) > deliberately *disrupts* the apprehension of centers, incidentally by > doing the exact opposite of the Alexandrian methodology.

Recap

For those of you who just arrived, this project is about reconciling the work of the recently-deceased architect Christopher Alexander—inventor of pattern languages—with the craft of software development. Patterns were a big hit with us in software, but we didn't keep up with current events—and by current I mean 26 years ago. You see, Alexander personally renounced patterns. Said they weren't good enough. He told his audience he was working on something simpler—much simpler, and much more profound. And that's what we're exploring here.

This essay explores the second of the fifteen properties from Alexander's magnum opus, The Nature of Order. If you don't know what I mean by that, then read the introduction, as well as the first chapter, Levels of Scale.

What is a Center?

If Christopher Alexander's latter-career methodology has a centre, it's the center. A center can be understood as a region of space (or spacetime if you like), that is differentiated from its surroundings somehow. A center is identifiable; you should be able to point to it, maybe even name it. A center has thing-ness. It need not, however, have a crisp boundary: centers, according to Alexander, are field-like. This tracks, because they don't call it the spacetime continuum for nothing.

Free post
#3
July 9, 2022
Read more

Levels of Scale

# Levels of Scale In Buildings What did Christopher Alexander mean by *levels of scale*? Literal levels of literal geometric scale. That is, the architecture has prominent features that are big, medium, small, and tiny, and potentially many levels in between. We ask: - How many discernible levels of scale are detectable? - What is the relationship between the ratios of scale *A* to scale *B*, scale *B* to *C*, *C* to *D*, and so on? The way you get levels of scale, he argued, is through a recursive process of differentiation, and if you're not at least *simulating* that, then you're going to get those big, discontinuous jumps in scale that you see in modern architecture. Here are some examples:

Preface to the Fifteen Properties

The program of this serialized essay is to go through the fifteen properties/transformations that Christopher Alexander defined for buildings in The Nature of Order, and try to map them onto software and software development. I do not promise to address them in the sequence they appear in the book, though so far it looks like the book's sequence is fine for now. I also do not expect the properties of software to match up perfectly 1:1 to the properties of buildings, but I am nevertheless proceeding through the properties as given to try to see how well, or even if, they fit. I will address any amendments in a conclusory issue.

This first property, levels of scale, which is also the first one in the book, is fortunately an easy one.


Levels of Scale In Buildings

Free post
#2
June 16, 2022
Read more

The Nature of Software

Preface

This project was conceived in part by the overwhelming response to what I ended up calling a retrospective of Christopher Alexander's work at the time of his passing. In it, I referenced a keynote address he gave in 1996 to a room full of programmers. The keynote covers three major points:

  1. Patterns are inadequate (for producing what he called living structure),
  2. A new theory replaces—or rather, subsumes—pattern languages,
  3. Software people are uniquely positioned to help.

For starters, there are an order of magnitude more programmers than there are architects.

Free post
#1
May 25, 2022
Read more
This email brought to you by Buttondown, the easiest way to start and grow your newsletter.