On the subject of using other people's computers: How do people who use a heavily customised environment -- like Emacs with modifications (like caps-lock key for CONTROL) -- cope with this?
I think the same way other people on the thread can swap to QWERTY when on someone else's computer - it always takes me a minute to stop using caps as ctrl, but I get it after 3 mistakes or so. The convenience for my everyday definitely outweighs 10 seconds or so of adjustment (and after that a bit slower speed than normal) on someone else's machine rarely.
This is exactly the reason I don't have a heavily personalized environment anymore. Copying it around to every machine was more hassle than it was worth. This is also why I get so mad when the defaults are bad, especially when they're changed to be bad.
A good example is how ls now adds fake quote characters if your file listing has spaces in it. As someone who mastered the Tab key ages ago those quotes are useless visual noise and I find myself typing them occasionally because I forgot. You can set an environment variable to disable them, but I have to to look it up each time and you have to do it on every new machine.
If you're mostly on Linux/Mac I can strongly recommend using a dotfiles repository containing all of your config files and a script that you can run to create symlinks to all of these files in the correct places.
With small tweaks like a non-symlinked file that contains only machine local variables (I call mine .bashrc.local and source it from the main bashrc), you can evem make the configs vary across machines on the subtler things.
This works wonders for me getting custom configs everywhere, with the exception of windows machines that are always a huge headache to work with.
This kind of scheme goes to hell once you're bouncing between networks unfortunately. Especially when you're on completely disconnected machines half of the time.
I think this is why I don't heavily customize my environment. I started my career doing desktop IT and sysadmining, where I had to use other computers all the time (either the customer's or some server that I had to log into to diagnose). Because of that, my custom setups were never available, so I just kinda stopped doing it.
Despite the fact that I haven't had to do that for many years, I still don't spend a lot of time customizing. Old habits are hard to break.
It normally takes me 3-5 minutes to force my brain back to a "standard" layout. Up until then, there end up being RANDOM STRINGS OF CAPS and letters since I'm so used to ctrl in the capslock position as well as random jjs trying to exit insert mode.
I've actually noticed another thing: using someone else's keyboard can be frustrating, even if everything else is the same. I just moved for my job for a few months and I accidentally grabbed my wife's MS4000 instead of mine on the first day in my new office. Despite it being the exact same keyboard and having all my customizations available, I had to put it away and use the keyboard on my laptop after less than an hour. The wear patterns in the key mechanisms were different enough that I was dropping characters all over the place. The spacebar was by far the worst offender.
I cope by doing very little customization. Maximize the defaults first. Work that way where it makes sense.
What this has done is improve on overall flexibility.
At times, my role is one where I do end up using other people's environments.
First thing I do is get them to tell me, then work that way as much as is possible.
Some peak efficiency is left on the table, but the impact is usually minor and I can optimize somewhere else and do just fine.
Dependence on muscle memory is a double edged sword.
If one does not environment hop much, it is worth it. Where that needs to happen, exercising "stretch" to work differently can be equally worth it.
Not sure there is a free lunch here. I find state changes difficult. When it is reverted to default, or my preference, the others are not happy, and it takes time to put it all back, and sometimes more time to remember how to do those things and debug having done them.
I have a pretty customized setup--Dvorak, caps-lock remapped to control, vim a custom vimrc and set of plugins I'm used to, etc.
It's certainly a mild annoyance when using someone else's computer, but in practice, seldom do I actually need to use someone else's computer, and even more seldom that I need to do development work on someone else's computer. It's usually helping someone out real quick, in which case it's easy enough to just deal with it. If I had to work on another machine for an extended period of time, it's easy enough to copy over my settings.
I use an ergonomic keyboard and IntelliJ with emacs key bindings. The answer is that nobody else ever uses my computer, or they use it for about two minutes before giving up and telling me what they want.
At some point you just stop using other people's computers or having to share yours with anyone. It's not necessary nor productive for software development.