Normally, when I’m leading an engineering team, or consulting for one, I’m always firmly in the camp of avoiding a full re-write of your codebase. If you’ve got a functioning product, and customers, you just can’t press pause on development there, leaving current customers without bug fixes or improvements while the team spends 6-12 months rewriting everything from scratch… But I digress. Luckily(!?) in this case I don’t have a functional system or any existing customers… just a dusty codebase. In fact, I did a little infrastructural work this weekend, just trying to power some things on, I got a warning that a component I was using was deprecated… not that uncommon, generally, but this deprecation warning was SO OLD that the component it was recommending I upgrade to HAS ALSO SINCE BEEN DEPRECATED. That’s how old it is 😧

(Cue joke about Arthur in Hitchhiker’s Guide searching for files in a disused lavatory)

Cedar-10 is dead! Long Live Cedar-14... oh.

Cedar-14 was deprecated in April 2019.

So for this rebuild, I can go block by block, porting near-identical logic that needs to exist from python to ruby, layering each piece of the system together as things going. So maybe less like a rebuild, and more like a really, really extensive remodel.