aiku
Engineering notes

Born in a Singapore coffee shop

· #history · #aurora · #origins

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.

Watercolor and pencil sketch: a man with a laptop and a steaming kopi at a night hawker stall, string lights under a red awning, a crescent moon and lit windows behind
One table, one laptop, one thought experiment. Singapore, 2015.

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.

Related notes