§1 Two seats, one satellite
Eleven hours, New York to somewhere east. The cabin lights go amber. Seat 24B opens the seat-back screen, scrolls a catalogue of four hundred titles, and selects a film it has already seen three times. This is not a criticism. It is the single most reasonable thing to do with eleven hours in a pressurised aluminium tube, and most of us have done it.
Seat 24C takes out a phone.
seat 24b
19:04 play — film, 118 min
21:02 play — film, again
23:10 idle — cabin dark
05:41 wake — descent
seat 24c
19:04 attach — 4 sessions, 1 grid
21:02 merge — three branches
23:10 green — failing suite cleared
05:41 kick — stuck job restarted
Both seats are on the same Wi-Fi. Both are the same distance from the ground. By the time the wheels touch down, one of them will have watched a film it could already quote, and the other will have merged three branches, cleared a failing test suite and restarted a stuck job on a machine four thousand miles away.
The interesting part is not that this is possible. It is why it is possible — and why the obvious approach, the one most people try once and abandon somewhere over Greenland, does not work at all.
Same aircraft, same antenna, same bad Wi-Fi. The difference is entirely in what you put on the far end of it.
§2 What is actually above you
There are two radically different things an airline can mean by "Wi-Fi," and which one is bolted to your particular fuselage decides everything that follows.
The old arrangement is a geostationary satellite, parked at 35,786 km. That altitude is not a design choice anyone made for your benefit; it is the exact distance at which an orbit takes twenty-four hours, so the satellite appears to hang still. The consequence is arithmetic that no engineering budget can argue with: up and back down, twice, is 477 ms of round trip for light itself, before a single router is involved.
The new arrangement is a low-Earth-orbit constellation at roughly 550 km — about sixty-five times closer, and 7.3 ms of propagation round trip.
Measurements from the air match the physics. Analysis of Ookla's Q1 2025 in-flight speed tests found a median round-trip time of 44 ms on Starlink versus 703–757 ms on Hughes, Intelsat and Viasat — a gap of roughly sixteen times. A separate team, instrumenting real devices across 25 flights on 7 airlines for ACM IMC 2025, measured the same shape independently: under 40 ms on LEO, above 550 ms on GEO.
Bars to a common linear scale. Source 1.
For a long-haul ocean crossing the honest number is a little worse than the headline. The same research measured a median of 62 ms over the Pacific, ranging 19–86 ms. That is the figure to carry in your head. It is still excellent. It is not 44.
§3 The deflating part
Here is where a blog post on a product site is supposed to tell you the future has arrived.
It has not arrived evenly, and the aircraft it has reached last is yours.
Narrowbodies get refitted first — they are numerous, they turn around quickly, and they fly short domestic hops where nobody is trying to do eleven hours of anything. The widebodies that actually cross oceans are last in the queue. As of mid-2026, United had more than 400 aircraft on Starlink and expected to approach a thousand by year end — but only about sixty of those were widebodies, its first Starlink widebody transatlantic flight (Newark–Heathrow) operated only in June 2026, and the full widebody fleet is not due until summer 2027. Virgin Atlantic had finished its twelve A350s — around 28% of its widebody fleet — with 787s scheduled through the second half of 2026 and A330neos into 2027.
Sources 5 and 6. Remaining United widebodies due by summer 2027; Virgin 787s through H2 2026 and A330neos into 2027.
So: if you are reading this on an intercontinental flight in 2026, the odds are still against you. You are probably on the 700 ms link, not the 62 ms one.
Which makes the rest of this post more useful, not less.
The plane you are on is the last one they will upgrade. Plan for 700 ms and be delighted by 62.
§4 Why the film works and the terminal does not
$ time echo "a" | ssh shed 'cat' # a whole session to move one character
A film and a shell fail in opposite directions, and in-flight Wi-Fi is precisely the wrong network for one of them.
A film is a bandwidth problem that does not care about latency. It buffers. If the first frame arrives 700 ms late, nobody notices, because nothing about the experience depends on the film reacting to you. Press play, wait, watch. The round trip happens once.
An interactive shell is the mirror image. It needs almost no bandwidth — a terminal session is measured in kilobits, not megabits — but it pays the round trip on every single keystroke you expect to see echoed back. At 700 ms, that is not a slow connection. That is a conversation with a two-thirds-of-a-second pause after every character.
This is the thing people get wrong. They see "50 Mbps" on the in-flight portal, conclude the connection is fine, open a terminal, and discover that fine has nothing to do with it. Bandwidth is not the currency here. Round trips are.
§5 What actually breaks (it is not typing)
The failure is more specific than "it feels slow," and the research is unusually clear about where the pain lands.
In a controlled study of 31 participants comparing 20 ms against 200 ms of end-to-end input latency, bulk typing barely moved: 290.9 ms per character versus 302.7, a difference the authors could not call significant. Error rates were identical.
Schmid et al., MUM '23 — n = 31, 20 ms vs 200 ms input latency
| task | 20 ms | 200 ms | verdict |
|---|---|---|---|
| typing / char | 290.9 | 302.7 | n.s. |
| correction task | 38.9 s | 46.5 s | +20% |
| frustration | 20.9 | 31.3 | p=0.004 |
But the correction task — repositioning a cursor with arrow keys and fixing text, the thing you actually do in an editor — went from 38.9 seconds to 46.5 seconds, about 20% slower, with a very large effect size (p < 0.001, d = 1.673). The authors put the mechanism plainly: during navigation, you have to keep waiting for the screen, because where the cursor landed determines what you do next.
Subjective load got worse even where speed did not. On the typing task, where performance was statistically unchanged, self-reported frustration still rose from 20.9 to 31.3.
Translate that to a terminal and it names exactly what falls apart at altitude: not typing
out a command. It is vim navigation, tab completion, scrolling through
less, and the poke-and-look rhythm of a REPL. Every one of those is a loop
where the next thing you do depends on what just came back.
Latency does not tax your typing. It taxes every decision that waits on the screen.
§6 Move the work, not the keystrokes
Once you accept that round trips are the scarce resource, the fix stops being "get a faster plane" and becomes an architecture question: take fewer round trips, and make each one carry more.
There is a well-known tool that attacks this head-on. Mosh predicts what your keystrokes will do and echoes them locally before the server confirms. The measured effect is dramatic: on a link with roughly half a second of round-trip time, median keystroke response fell from 503 ms to under 5 ms. On a trans-oceanic path from MIT to Singapore, 273 ms to under 5 ms.
But read the fine print, because it is the whole point. Mosh predicts about 70% of keystrokes. The roughly 30% it cannot predict is, in the authors' own word, principally navigation — and for those, its latency profile looks like plain SSH again. Which is to say: the one interaction that high latency punishes hardest is precisely the one local echo cannot rescue.
predicted vs not
Source 4.
So prediction helps, and it does not save you. The thing that actually saves you is refusing to be in the loop that often.
Stop typing into the latency. Put long-running work on the far end and check on it. A build, a test suite, a migration, a coding agent — none of these need you present for the round trip. They need you present at the beginning and at the decision. Everything between is the machine's problem, and the machine is on the ground with a good connection.
That is also why parallelism beats interactivity at altitude. You cannot type quickly through 700 ms. You can absolutely supervise four servers at once, because supervision is not latency-bound — it is attention-bound, and you have eleven hours of attention and nothing else to spend it on.
§7 What seat 24C is actually doing
$ tmux list-windows -t atlantic
Concretely, on a phone, on a bad link:
-
0: sessions-that-outlive-the-connection
The aircraft hands off, the portal re-authenticates, the connection drops.
tmuxkeeps the shell running on the server regardless; the session is a thing on the far end, not a thing in your hand. Eternal Terminal takes the same idea further and lets the session survive the TCP connection itself, buffering and replaying what you missed. (Fair warning for a filtered network: ET needs its own port — 2022 by default — in addition to SSH's 22.) -
1: more-than-one-problem-at-a-time
Several sessions in a grid, several saved servers, each running something that does not need supervision between decisions.
-
2: agents-doing-the-typing
Coding agents run on your servers, at ground latency, where the code is. They are not paying the satellite tax; you are only paying it when you answer them.
-
3: push-when-it-matters ! (bell)
Agent Alerts fire when something actually needs a human — so the flight is spent reviewing and deciding, not staring at a prompt waiting for an echo.
None of this was invented for aircraft. It is simply what remote work over a hostile link has always looked like, and a plane is just an unusually honest hostile link.
§8 One honest caveat
Two things we could not verify, and will not pretend to:
Whether your airline's network will let SSH out at all. We found no reliable public evidence on port blocking, VPN policy or idle timeouts across airline Wi-Fi providers — and plenty of confident forum claims that do not survive checking. It varies by carrier, by provider and by aircraft. Test it on a short flight before you plan a long one around it.
How the cabin actually spends its time. The most-quoted in-flight entertainment statistics turn out to trace back to advertising rate cards with no methodology, and we binned them. The best survey evidence we found — Inmarsat/Censuswide, 11,231 passengers across ten countries, though fielded back in 2022 and asking about intent rather than measuring time — has entertainment ahead of work by a wide margin: 41% wanted to watch downloaded films and 35% to stream, against 26% who wanted to do work.
So treat seat 24B as a character, not a statistic. The point was never that watching a film is wrong. It is that the alternative is no longer unavailable.
§9 Descent
The film ends where it ended the last three times. The descent begins. Seat 24B has had a perfectly good flight, and will land rested, which is worth something.
Seat 24C lands with the work done — because the work was never in the seat. It was on a machine on the ground the whole time, and the phone was only ever a window onto it.
Eleven hours is a long time to spend at 700 ms. It is a very short time to spend supervising four servers that do not care about the satellite at all.
seat24c@phone:~$ mobile-ssh --join-beta # free · open source · Apache-2.0
Your next long-haul is eleven hours of server time.
Mobile SSH is a native SSH, SFTP and terminal client for Android, iPhone and iPad. Multiple sessions, a built-in tmux manager, Eternal Terminal, and push alerts when an agent needs you. Free, no account, no ads, open source.
Android is in closed testing — opt in with the Google account you'll test with, and open the link in your mobile browser; the closed test may not be visible inside the Google Play app.