Six months to the second edition

2026-10-22 · Kenji Yoshida

On 15 April 2026 I made the first commit. Its message was "Workspace setup". Six months later there are nearly 3,500 commits, and on 17 October ortho-earth reached its second edition, 2.0. It feels like a good moment to look back at the road so far.

Spring: the invisible half first

April began with a first map, ortho-map, but what May and June went into was not the map itself. It was the layer underneath: GeoPBF, a container that carries geographic data as shapes, and Gint, which holds those shapes in a form the GPU can read directly. Nothing appeared on screen, so from the outside it looked as if I was doing nothing. Still, I was sure that if I skipped this part I would have to rebuild everything later.

Summer: putting Japan on the globe

In July the PLATEAU buildings went onto the globe. One district at first, then all 300 cities and wards in the dataset. For days I chased the seven districts whose buildings refused to appear, one at a time. I remember well the moment the streets of Tokyo rose up from a round Earth.

On 1 August the drawing moved to WebGPU. Globe, terrain, buildings, Gint and the starry sky all went across in a single day. The next day I spent facing a white screen on an iPhone, building one tool after another to name the cause, until it finally ran on the real device. That same day I decided WebGPU would be the default. Older devices still get WebGL2.

In the same month came ortho-solar, a true-scale Solar System, and a visualisation of Japan's 2020 census. A map does not have to stop at the surface of the Earth, and statistics do not have to stay in tables.

Autumn: to the world, and to compatibility

September was the month a map of Japan became a map of the world. The interface went into 26 languages, and you can now move back and forth between the round globe and Equal Earth, a flat map of the whole world. I rebuilt the top page of www and put these words at the top: "Equal to all, fair to the Earth." The Earth is round, and maps belong to everyone. I wanted to say that first.

At the end of the month I cut the globe out as its own package, @ortho-earth/globe, and made it usable with the same code as MapLibre GL JS. The yardstick was MapLibre's own gallery of 139 official examples: each one runs side by side with the real MapLibre, and the picture and the answers are graded. At first not a single example drew the same picture. Today 66 draw the same picture, 50 give the same answers, and none fail to run. I did not want people to learn a new API. I wanted the code they already know to run, unchanged, on a round Earth. That was the thing I wanted most.

What 2.0 threw away

In a word, the second edition is a rewrite and a clean-up. Every library is now written in TypeScript (strict), and the old names and back doors that 1.x kept for compatibility are closed. It is a slightly unkind change for users, but the rule in this workshop is that when you move into a new form, you throw the old one away. What changed is set out in detail in "Ortho Earth 2.0 is out".

After 2.0

Right after the release I measured the engine against four others. Measuring turned up weaknesses I had not noticed myself: on iPhone it was holding back its downloads too much, the screen flashed white for an instant when the camera stopped, and its memory accounting was too loose. Within a few days they were fixed, in 2.0.2 and in the next release. That story is in "Rendering PLATEAU 3D city models: MapLibre, Cesium, TerriaJS, Navara and ortho-earth compared".

Milestones to the second edition

The main milestones up to the second edition, taken from the commit history.

DateMilestone
15 AprilFirst commit. Work begins on the first map, ortho-map, and on a tool for storing data
22 AprilCataract surgery on my left eye
29 AprilCataract surgery on my right eye. I can see again
10 MayWork begins on GIS-HUB (today's GeoPBF demo)
26 MayGint encoding: geographic data in a form the GPU reads directly
12 JuneThe container for geographic data takes shape as GeoPBF
13 JuneThe domain ortho-earth.com, and an account on Cloudflare. The draughtsman's name, Sonnet 4.6, first appears in a commit
18 JuneDrawing rebuilt on WebGL2
1 JulyOpus 4.8 joins the drafting table
4 JulyJapan's official vector tiles drawn on the sphere; extruded buildings, and terrain raised from elevation
6 JulyDrawing moves into a worker, the start of keeping the main thread free
8 JulyPLATEAU LOD2 buildings on the globe, extended to all 300 cities and wards; Fable 5 joins the drafting table
10 JulyThe map of Japan, ortho-japan, goes public on www.ortho-earth.com
12 JulyOne line of code brings up Japan: the map becomes a part any page can embed
22 JulyJapan's terrain moves to the 10 m digital elevation model
1 AugustDrawing ported to WebGPU: globe, terrain, buildings, Gint and the sky in one day
2 AugustWebGPU runs on a real iPhone; WebGPU becomes the default
5 AugustOpus 5 joins the drafting table
6 AugustA new MacBook Pro (M5 Pro, 64 GB)
10 Augustortho-solar, a true-scale Solar System
13 AugustA visualisation of Japan's 2020 census
19 Augustortho-japan 1.0.0; the next day, the first package on npm
24 AugustThe first public demo of ortho-earth, at CNG Japan
31 AugustA world base map grows beyond Japan
4 SeptemberThe draughtsman becomes Fable 5.1
5 SeptemberSatellite imagery as COG, read directly with no server
10–19 SeptemberThe interface in 26 languages
18–20 SeptemberEqual Earth, and moving between it and the globe
22 Septemberwww rebuilt under "Equal to all, fair to the Earth"
23 SeptemberThe globe cut out as @ortho-earth/globe; I3S support; Opus 5.5 joins the drafting table
26–27 SeptemberMapLibre GL JS compatibility, measured against the 139 official examples
2–11 OctoberTravelling abroad; development carried on from my phone, 35 commits
14 OctoberThe last 1.x release (globe 1.16.0)
15 OctoberEvery library moves to TypeScript (strict)
17 OctoberThe second edition, 2.0, published on npm

Looking back

Six months ago I did not imagine I would get this far. I have not written a single line of the code. What I did every day was look at the screen and say "that's wrong", and say "fix the root cause". Even so, pile up 3,500 small decisions and it really does become a map, and I am a little surprised by that.

2.0 is not an ending. The foundations have only just set. From here on I intend to put on this Earth the things I truly want to draw.

Kenji Yoshida @ Yokohama