You are trapped in a box. You have been for a long time. —D. R. MacIver Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. —Zawinski's Law of Software Envelopment switching costs and growth most tools simultaneously think too small and too big. “i will let you do anything!”, they promise, “as long as you give up your other tools and switch to me!” this is true of languages too. any new programming language makes an implicit claim that “using this language will give you an advantage over any other language”, at least for your current problem. once you start using a tool for one purpose, due to switching costs, you want to keep using that tool. so you start using it for things that wasn’t designed for, and as a result, tools tend to grow and grow and grow until they stagnate. in a sense, we have replicated the business boom-and-bust cycle in our own tools. interoperability there are two possible ways to escape this trap. the first is to impose a limit on growth, so that tools can’t grow until they bust. this makes a lot of people very unhappy and is generally regarded as a bad idea. the second is to decrease switching costs. by making it easier to switch between tools, or to interoperate between multiple tools in the same system, there is not as much pressure to have “one big hammer” that gets used for every problem. back-compat tools and languages can decrease switching costs by keeping backwards compatibility with older tools, or at least being close enough that they’re easy to learn for people coming from those tools. for example, ripgrep has almost exactly the same syntax as GNU grep, and nearly every compiled language since C has kept the curly braces. standardization tools can also collaborate on standards that make it easier to interoperate. this is the basis of nearly every network protocol, since there's no guarantee that the same tool will be on the other side of the connection. to s...
First seen: 2025-07-14 16:00
Last seen: 2025-07-14 21:00