A recent ex_money v6 upgrade was blocked because Timex pins an old gettext. Rather than one big remove-and-rewrite PR, I used a shim: a module that mirrors only the slice of the Timex API we used, backed by the standard library, and proven with tests that compare its output against real Timex. Then a second PR swaps the call sites and deletes Timex.
The post also covers the simpler case (just deleting a small-footprint dependency, like Faker, in a side project) and ties the approach back to seams, characterization tests, and the strangler-fig pattern.






















