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.
| Date | Milestone |
|---|---|
| 15 April | First commit. Work begins on the first map, ortho-map, and on a tool for storing data |
| 22 April | Cataract surgery on my left eye |
| 29 April | Cataract surgery on my right eye. I can see again |
| 10 May | Work begins on GIS-HUB (today's GeoPBF demo) |
| 26 May | Gint encoding: geographic data in a form the GPU reads directly |
| 12 June | The container for geographic data takes shape as GeoPBF |
| 13 June | The domain ortho-earth.com, and an account on Cloudflare. The draughtsman's name, Sonnet 4.6, first appears in a commit |
| 18 June | Drawing rebuilt on WebGL2 |
| 1 July | Opus 4.8 joins the drafting table |
| 4 July | Japan's official vector tiles drawn on the sphere; extruded buildings, and terrain raised from elevation |
| 6 July | Drawing moves into a worker, the start of keeping the main thread free |
| 8 July | PLATEAU LOD2 buildings on the globe, extended to all 300 cities and wards; Fable 5 joins the drafting table |
| 10 July | The map of Japan, ortho-japan, goes public on www.ortho-earth.com |
| 12 July | One line of code brings up Japan: the map becomes a part any page can embed |
| 22 July | Japan's terrain moves to the 10 m digital elevation model |
| 1 August | Drawing ported to WebGPU: globe, terrain, buildings, Gint and the sky in one day |
| 2 August | WebGPU runs on a real iPhone; WebGPU becomes the default |
| 5 August | Opus 5 joins the drafting table |
| 6 August | A new MacBook Pro (M5 Pro, 64 GB) |
| 10 August | ortho-solar, a true-scale Solar System |
| 13 August | A visualisation of Japan's 2020 census |
| 19 August | ortho-japan 1.0.0; the next day, the first package on npm |
| 24 August | The first public demo of ortho-earth, at CNG Japan |
| 31 August | A world base map grows beyond Japan |
| 4 September | The draughtsman becomes Fable 5.1 |
| 5 September | Satellite imagery as COG, read directly with no server |
| 10–19 September | The interface in 26 languages |
| 18–20 September | Equal Earth, and moving between it and the globe |
| 22 September | www rebuilt under "Equal to all, fair to the Earth" |
| 23 September | The globe cut out as @ortho-earth/globe; I3S support; Opus 5.5 joins the drafting table |
| 26–27 September | MapLibre GL JS compatibility, measured against the 139 official examples |
| 2–11 October | Travelling abroad; development carried on from my phone, 35 commits |
| 14 October | The last 1.x release (globe 1.16.0) |
| 15 October | Every library moves to TypeScript (strict) |
| 17 October | The 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.