R21: Tech Entropy

A running project is not a static thing. It is a garden. The moment you stop weeding, the weeds grow. Leave it alone for two years and the plants you planted are dead. The code text on disk is fine. What rots is the fit between your code and the world: Node versions upgrade, dependencies publish breaking releases, database providers sunset your instance, the build tool is now deprecated. Nothing is still, even when nothing is touched.

How A Project Dies In Two Years

Picture a typical modern web app shipped today. A React front end, a Node back end, a Postgres database, deployed on some platform-as-a-service. You shipped, it worked, you stopped touching it. Come back two years later and you find:

No single failure kills it. They combine. The cost to bring it back up exceeds the cost of rewriting, so you rewrite, so the same cycle starts again.

The Four Vectors Of Decay

flowchart TD Project[Your Project] Deps[Dependencies drift
npm, apt, OS patches] Data[Data evaporates
DB pruned, provider sunset, no backups] Knowledge[Knowledge fades
you forget, teammates leave] Tooling[Tooling shifts
new frameworks, deprecated APIs] Deps --> Project Data --> Project Knowledge --> Project Tooling --> Project Project -->|two years untouched| Dead[Does not run]

Every project is pushed on by all four at once. The bigger the surface area, the faster the decay. A 200-dependency React app decays faster than a 5-dependency Go binary, which decays faster than a folder of HTML and markdown.

How To Fix It: Keep It Simple

The cost of keeping a system alive scales with its complexity. Every dependency is a relationship to maintain. Every clever abstraction is something your future self has to re-learn. Every moving part can break independently.

Plain Text Is The Escape Hatch

Markdown files with a tiny build system are shockingly durable. A markdown file is just text. Any editor on any machine can open it. Any human who can read English can understand it without running any program at all. It does not require npm install, a specific Node version, a database, or an internet connection.

The file outlives the app. Apps come and go. Proprietary formats die with the vendor. Plain text survives. Markdown was designed in 2004 and a document written then still renders today in any renderer with zero changes. Try that with a 2004 Flash app.

The site you are reading is built this way on purpose. Lessons are markdown files in a folder. The build is a small Python script that turns them into HTML. If the script disappears tomorrow, every lesson is still readable in any text editor. If the hosting dies, the content survives as files you can copy to a USB stick. Nothing rots because nothing fancy is in the chain.

Three Working Rules

Nothing you build will run forever untouched. The only question is how much it costs to bring back. Cheap to rebuild beats expensive to maintain. Give entropy less surface to chew on.

Key Takeaways

  • Two years of neglect is usually enough to kill a modern web app. Not the code, everything around it moved
  • Four decay vectors: dependencies, data, knowledge, tooling. Every project is pushed on by all four at once
  • Simplicity is the fix. Fewer dependencies, boring tech, no build when no build works, readable over clever
  • Plain text and markdown are the most durable format we have. Any editor, any OS, any future
  • Back up the data separately from the app. Write the stack down. The README is a gift to future-you