Post

Isolating a program from complex systems for testing is a lot of effort. Often solved with dependency injection of mocks, or exterior composition (to mocks). Mocks can drift and DI introduces codepath complexity. So: Build mock env from specs

1 repost65 likes

Distributing software libraries for multiple languages is extremely costly for a software company (such as bluesky). Quality drifts between languages, maintenance burden is huge. So: Build _ API in our teams' lang from specs

Enduring specs protect users but shift complexity into adapters, migrations and ops, creating hidden integration cost. Do you prioritise stable external contracts or internal simplicity when planning a regeneration?

easing your platform to make leveraging shear layers (Stewart Brand et al) easier is probably required, probably something you need to get good at if you are serious about regeneration. internal simplicity seems very much not the point, that things can become weird mutants, destined to be replaced

This one might be too extravagant so we'll see, but... Writing software for each platform (native ios, native android, web, etc) is extremely costly and requires middleware ecosystems like react native So: Build app for target platform from specs

Amending upstream is extremely hard to do. Monkeypatching, inheritance, configuration (if allowed), or forking. So: import spec, amend with your specs, lock in with tests

Ok ok wait, then you build a reference endpoint - a server that's basically a dummy, no live data, stateless as far as possible - that can be used during development to verify against. Then it's basically a oneshot project to build apps on any platform, any language.

Oh I so want this, a static pds and a static api server that return known results and reject api calls that aren’t in a known state. And publish the JSON for both requests and responses.

Yeah. I took a run at it about 5 months ago, but didn't have time to get to (that's right!) the 2nd 80%, so I had to leave it at "promising but unproven."

“Nondeterministicly build other platform from specs” is a bandaid. If the spec is precise enough to do that effectively, it will look *a lot* like real code. And If we’re close to real code, we might as well be writing it with a compiler.