Born in a Singapore coffee shop
That header still sits at the top of app.php, the entry point of Aurora, the system that ran our business for a decade:
/*
Created: 27 August 2015 12:49:03 GMT+8, Singapore
*/
I typed it in a coffee shop in Singapore. I'd been up late the night before, turning the same idea over and over: stop patching the system I already had, and build my own SPA‑like application instead — no framework, my rules, one page that behaved like an app.
The commit from that day says exactly what it was:
2015-08-27 "thought experiments to a full SPA"
Not a roadmap. Not a spec. A thought experiment, committed from a café table, that ended up processing every order, delivery note, invoice and mailshot the company produced for the next ten years.
What came before
Aurora wasn't a blank page. The repository it lives in starts seven years earlier:
2008-10-03 22:58 "Initial import"
That first system was called inikoo — and before the tickets said anything else, they said KAKTUS-304, because even a one‑person project deserves an issue tracker with a codename. It was built the way you built web software in 2008: Smarty templates, YUI widgets, jQuery, page reloads. It worked. It also taught me everything I would later refuse to do again.
By 2015 the web had moved. Single‑page applications were the obvious future, but the frameworks were young and I was stubborn. So Aurora got a hand‑rolled router, a hand‑rolled active‑record ORM with its own audit trail, a hand‑rolled forking job system years before I'd ever hear the word "Horizon", and translations in sixteen languages extracted by a script I wrote myself. When you're one developer, the framework is just the part of the codebase you wrote first.
Around that time the internet was inventing a name for people who worked like this — "digital nomad" had existed as a phrase since a 1997 book, but it only became a movement with a website and a hashtag around 2014. I didn't know I was one. I had a business to run and a laptop, and the laptop didn't care which country the coffee was in.
The proof is in the headers
I had a habit: every file I created got a header with the exact time and the place where I was sitting. Nobody asked for it. Eighteen years later, those headers are a travel diary — Mijas Costa, Sheffield, Macau, Penang, Yiwu, Bali, Bangkok, Mexico City, Kuala Lumpur, Tokyo. Three files were created on planes; one header just says "Flight Delhi India to Bangkok". The typos — "Sain" for Spain, "Malaydia" — are the proof they were typed live, not templated.
And in October 2020, in Kuala Lumpur, one of those headers quietly named the future:
// trait.Aiku.php
Created: Fri, 16 Oct 2020 15:03:29 Malaysia Time, Kuala Lumpur, Malaysia
Before aiku was a product, Aiku was a trait mixed into Aurora's base ORM class — the mechanism that made every customer, order and delivery note hydrate outward into something new. The successor didn't get a made‑up name. It got the name of the escape hatch.
Aurora is still alive — 14,880 commits and counting, roughly 85% of them mine, the most recent one from this month. It began in that coffee shop in Singapore, at 12:49 in the afternoon, GMT+8 — the moment the old system stopped being the future. How we eventually walked out of Aurora too, one company at a time, is its own story; this one is about the day it began.