Micro-friction, SSH lag, and macOS's stupid animation

Two sources of "micro friction" I want to talk about, and how they affect my workflow. I call these "latency taxes" that compound over time and progressively become more frustrating.

macOS workspaces. I'm referring to "Spaces" on macOS (desktop workspaces). They're really annoying after a while, because of the transition animation when you have to cycle between workspaces with the cmd key. This can be mitigated to some extent by disabling motion in accessibility settings, but it doesn't completely disappear. Some people work around this with window managers or system hacks like Yabai. A few years ago I tried Yabai and found it to be quite buggy (maybe things have changed since then). The other solution is a window manager, and I presume that at least some of them work by programatically shuffling windows around within a single Space to give the illusion of multiple worksapces. That sounds fine, apart from the fact that there is something I find really aesthetically unpleasing about different windows stacked against each other when not in full screen. I know, this is a really pedantic nitpick. I prefer all of my windows to be in full screen.

Terminal "workspaces". The other window manager "alternative" is to just live in the terminal. Not everything can be done in the terminal of course, but when you can do enough things in there you can start to organise your terminal apps with tabs, split panes, sessions, and things of that sort. And these tend to not force stupid animations down your throat.

Many terminal power users run text editors inside them. These are great if they're run locally, but in my case almost all of my dev work is on a remote box via SSH. Because every keystroke gets round-tripped, the experience is not as smooth. Unless I'm working overseas I don't think it's objectively that bad, but I type super fast, and it is a micro-friction that bothers me.

Current workflow. Figuring out what should live in the terminal vs outside of it is the crux of my workflow. I'm a heavy terminal user -- my iTerm runs as a "Quake terminal" which drops down instantly (shortcut: cmd + \), and it's a super integral part of my day-to-day work (as of time of writing, I have ~20 tabs open, though most of these are local). But I try to avoid "high throughput" tasks when I am working over SSH. Previously that meant writing code, but since I barely write code anymore, now it means conversing with agents through text. Also, since I try to do as much as I can in the terminal, I avoid having to succumb myself to macOS's stupid space switching animations.

My daily driver for work is Cursor (basically a VSCode fork) and this pretty much solves the input keystroke issue. Since VSCode / Cursor's remote SSH runs a server process on the remote box and keeps input handling on the local client, keystrokes are rendered locally while only the text that changes syncs, whereas a naive terminal round-trips every keystroke. If I were to use a text editor to do remote work in a terminal, my "high throughput" task would simply switch from writing code to conversing with agents, which is still just as annoying. This is why I enjoy having the agent conversation pane as a part of the local client as well. (You can also get this with VSCode, but via an extension.)

What's next? Perhaps this is for a future blog post, but I made the realisation that most of my day to day is in reading and writing docs, specifically Markdown files. Before agents, I wrote everything manually, and over time this gave me enough low-level understanding of the code in order to think at a higher level. Now, I spend a lot of time talking to agents, sifting through large volumes of information, and extracting and summarising things into documents (mostly Markdown) to help me plan at a higher level. Of course, this is no substitute for deep undestanding of the code, but when everyone is moving at "agentic pace" within an organsation, time spent reading code deeply makes me feel like I'm the bottleneck. (Yes, there are times when one needs to actually slow down and read code, but that is a seperate conversation here.)

Since documentation is so important now, I'm gravitating towards text editors which make docs (in particular Markdown) first class citizens. I'm assessing the viability of Obsidian, though it requires lots of plugins to get it up to feature parity. Cursor does a good job for the most part, though as of time of writing it has two Markdown modes: one is WYSIWYG, updates in real time, and is editable in the rendered view; the other is not real-time, has to be toggled from rich text / raw, but actually renders LaTeX. The fact these are not one and the same is annoying. I guess this is my next micro-friction to solve.

footnotes

(I'm aware of mosh, though that requires opening ports on a remote box which you may not have admin access on.)

I tried vibe-coding my own Emacs config to do all of this. But my impression of LaTeX rendering here is that it renders the equation(s) externally and embeds the image in the buffer, and the size of the image also dictates how well it renders with the rest of the text. I prefer the browser way of properly rendering LaTeX in-line with the text.