← Blog

Field report

Departures 08:41
Time Flight Destination Remarks

Eleven hours over the Atlantic

Seat 24B is watching a film it has seen three times. Seat 24C is reviewing four servers on the same Wi-Fi. The difference is not the connection — it is what each of them put on the other end of it.

§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.

GEO 35,786 km 477 ms light LEO 550 km 7.3 ms light seat 24C, 11,000 m
Not to scale — nothing that includes 35,786 km ever is.

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.

GEO — Hughes / Intelsat / Viasat, median703 ms
LEO over the Pacific — long-haul median62 ms
LEO — Starlink in-flight, overall median44 ms

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.

United ≈60 widebodies flying Starlink, out of 400+ aircraft fitted. The rest of the widebody fleet is not due until summer 2027.
Virgin Atlantic 12 of ~43 widebodies done — about 28 per cent. 787s run through H2 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

task20 ms200 msverdict
typing / char290.9302.7n.s.
correction task38.9 s46.5 s+20%
frustration20.931.3p=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

keystrokes mosh echoes instantly≈70%
unpredicted — “principally navigation”≈30%

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. tmux keeps 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.

No adsNo accountOn-device dataApache-2.0

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.