by Leon Rosenshein

Assumptions

You know what happens when you assume. That happens everywhere. Especially with computers. They're logical. They do exactly what you tell them, even if that's not what you want. And of course, they're all the same. Or maybe they're not. Look at this from the 90s.

How many times have you heard the phrase "It works on my machine."? Of course it does. You built a bespoke system in an environment and it works. And our machines are centrally managed, so they're all alike, aren't they? Well I don't know about you, but I know mine is a snowflake. It's been adjusted to make me happy. It has my toolset. In the places I want them. It has my bash setup. My path, my macros. You have the same setup, don't you? What do you mean you're not on a Mac. And you're running tcshell. How are we supposed to interop? Very carefully. Just look at what it takes to decide what OS you're on in a bash shell
And then there's kernel and tool versions. Right now we have a mix of Ubuntu 16 and 18. I think we've gotten rid of the last of the Jessie machines, but I'm not sure. OSx tools are different from the tools on Ubuntu. And not esoteric tools, tools like duheadps and netstat have different options and act differently. And the FileSystem is laid out slightly differently, including your home directory. So you need to be aware of those differences when you write tools/scripts/libraries for others to use.

And then there's the general assumptions developers make. Things like address formats, name formats, time is a monotonically increasing function. My personal favorite is assumptions about distributed programming, and we're all involved in distributed programming.

So what's your (least) favorite assumption you've had to fight against? Share it in the thread.