06About
From a private game server in junior high to systems companies run on
I started writing code in junior high, in an unusual place to learn: a private game server. I was both a GM and part of the dev team — patching what broke, balancing the in-game economy, and facing players who complained within minutes of anything going wrong. The feedback was blunt and immediate, and it was my first lesson in systems real people depend on.
In high school I started getting paid for the same work: a handful of company websites, built around classes. After graduating I worked at several companies, including one abroad — and that is where I learned what solo projects never teach: writing code someone in another time zone has to read, without me sitting next to them to explain it.
The work is broader now: sites for companies and small businesses alike, web and desktop apps people open every day, and automation running the rest behind the scenes. Full-stack, so the part a customer sees and the part holding it up are both mine — and the seam between them is usually where the trouble is.
What I still watch hardest is failure modes: what happens when a third party stops responding, when someone closes the tab mid-flow, and when two requests land in the same millisecond. Nobody asks about this at the start of a project, yet it is almost always why a system stops being trusted.
Timeline
Where I learned different things, in order.
GM & dev team — private game server
Patching a server that kept breaking, balancing the in-game economy, and facing players who complained within minutes. My first schooling in production systems, without calling it that.
Company websites — freelance
A handful of company websites, built around classes. The first paid work, and the first deadlines someone else set.
Developer — several companies, one abroad
Working inside a team rather than alone. The overseas work forced one habit that stuck: writing so someone in another time zone can follow it without asking.
Full-stack — freelance, from Jakarta
Sites and applications for companies and small businesses, plus the automation running behind them. Two slots open per quarter.
How I work
Four things I hold to, and why
Not slogans. These are the calls that repeat on nearly every project, and you feel them in the maintenance bill a year later.
Fail loudly
A visible failure gets fixed the same day. A silent one surfaces when a customer calls, and by then it costs several times more.
Boring by default
New technology gets used when there is a reason, not because it is new. Something that has to run three years from now does not need my experiments.
Unprovable claims stay off the page
This site included. Sections without real data are absent rather than filled with sample numbers — you are welcome to check.
Documentation is part of the work
Not an extra at the end. If someone else cannot run it again without asking me, it is not finished.
Colophon
What this site is built with
A portfolio that will not say how it was made usually has a reason. Here is mine, version numbers included.
- Framework
- Next.js 16.3.1
- Interface
- React 19.2.8
- Styling
- Tailwind CSS 4, no off-the-shelf UI kit
- Bilingual
- next-intl 4.13.7 — /id and /en routes, URLs included
- Writing
- MDX files in the repo, no CMS
- Type
- Bricolage Grotesque, Instrument Sans, JetBrains Mono
- Hosting
- Vercel
- Live data
- GitHub and Spotify, fetched at render time
- Analytics
- No third parties. The only cookie stores your language choice.
Seen enough?
Tell me what you want built or fixed. I usually reply within one working day.
