2018 Review Discussion

Here’s a pattern I’d like to be able to talk about. It might be known under a certain name somewhere, but if it is, I don’t know it. I call it a Spaghetti Tower. It shows up in large complex systems that are built haphazardly.

Someone or something builds the first Part A.

Later, someone wants to put a second Part B on top of Part A, either out of convenience (a common function, just somewhere to put it) or as a refinement to Part A.

Now, suppose you want to tweak Part A. If you do that, you might break Part B, since it interacts with bits of Part A. So you might instead build Part C on top of the previous ones.

And by the time your...

First, thank you for writing this. I would ask that you continue to think & refine and share back what you discover, prove, or disprove.

To me, it seems quite likely that B will have a lot of regularity to it. It will not be good code from the human perspective, but there will be a lot of structure I think, simply because that structure is in T and the environment.

I'm interested to see if we can (i) do more than claim this is likely and (ii) unpack reasons that might require that it be the case.

One argument for (ii) would go like this. Assume the ge... (read more)

3David James
See also Nomic, a game by Peter Suber where a move in the game is a proposal to change the rules of the game.
1David James
I grant that legalese increases the total page count, but I don't think it has necessarily changes the depth of the tree very much (by depth I mean how many documents refer back to other documents). I've seen spaghetti towers written in very concise computer languages (such as Ruby) that nevertheless involve perhaps 50+ levels (in this context, a level is a function call).
1David James
In my experience, programming languages with {static or strong} typing are considerably easier to refactor in comparison to languages with {weak or dynamic} typing.* * The {static vs dynamic} and {strong vs weak} dimensions are sometimes blurred together, but this Stack Overflow Q&A unpacks the differences pretty well.


  • Epistemic status: trying to share a simplified model of a thing to make it easier to talk about; confident there’s something there, but not confident that my read of it or this attempt at simplification is good.
  • This post is a rewrite of a talk I gave at a CFAR event that seemed well-received; a couple of people who weren’t there heard about it and asked if I’d explain the thing. I tried to write this relatively quickly and keep it relatively short, which may mean it’s less clear than ideal - happy to hash things out in the comments if so.
  • The thing is much easier to describe if I occasionally use some woo-y language like “aura” and “energy” to gesture in the direction of what I

Just wanted to flag that this post was the most helpful single thing I read about social status in the course of writing my own recent posts on that topic (part 1, part 2). Thanks!!

Load More