Work

I flip 1s and 0s for a living. Messaging infra, data pipelines, real-time game servers, search indexing, and the occasional full-stack detour when the team was small enough that "backend" was more of a suggestion. Seven companies in eight years — not because I get bored, but because the interesting problems kept being somewhere else.

Experience

TikTok

1 yr 4 mo
Software Engineer Jul 2025 – Present · Singapore

Backend engineer on the Direct Messaging team. The real-time infra that keeps conversations working for a billion-ish users — I help make sure it stays that way.

Shopee

1 yr 10 mo
Senior Software Engineer Sep 2023 – Jul 2025 · Jakarta, Indonesia

Ran a four-person backend team in Shopee Games. Migrated 150 billion user records off a legacy database (with retry and rollback, because the first attempt will always fail). Cut Redis CPU by ~48% and query latency by ~75% on Puzzle Bobble. Shipped a Word Puzzle game mode using a Trie — the one data structure from university that actually turned out to be useful.

  • Built Tile Match, a real-time PvP matchmaking game over WebSocket. Thousands of concurrent players, surprisingly few race conditions.
  • Pushed panic handling and rate limiting across teams — the kind of work nobody wants to own until something breaks at 2am.
  • Set up knowledge rotation so the team didn’t have a bus factor of one.
  • Wrote a shared library for error codes and metrics. Less "what does error 5023 mean?" in Slack.
  • Monthly one-on-ones and tech reviews. Management work that doesn’t show up in git log.

Grab

1 yr 8 mo
Senior Software Engineer Jan 2022 – Sep 2023 · Singapore / Jakarta

Owned a few projects end-to-end — mostly around keeping services from falling over. Built a state-machine-based reward system with message queues and distributed locking, which is a fancy way of saying "make sure people get their vouchers exactly once."

  • Wrote RFCs and runbooks for problems that kept recurring across services. Documentation nobody reads until they need it, then suddenly it’s the most important file in the repo.
  • Prototyped auto-generating API docs from protobuf specs. It worked. Nobody adopted it. Classic.
  • Trimmed cloud resource usage across several services. The savings were real; the gratitude was not.
  • Onboarded a new engineer with an actual plan instead of the usual "read the wiki and ask if you’re stuck."

Tokopedia

2 yr 7 mo
Senior Software Engineer Jul 2020 – Nov 2021 · Jakarta, Indonesia

Built a trending products pipeline — ~3 million products per week, ~2 million keywords per day, all going into Elasticsearch with an index retention engine so the cluster wouldn’t eventually eat itself. Also found a concurrency bug in Go graceful-shutdown handling and turned the fix into a company-wide pattern.

  • Built a burst prevention engine for real-time stats. The system was sending alerts for non-events; now it doesn’t.
  • Real-time stat monitoring with in-memory connection management. Sounds straightforward until you try to do it without leaking goroutines.
  • Helped with cloud migration prep and execution — the kind of project where "it went fine" is the best possible outcome.
  • Interviewed candidates for SE and senior SE roles.
  • Spoke at START Summit Extension Feb 2021, DevCamp 2021, and a few internal talks.
Software Engineer Apr 2019 – Jun 2020 · Jakarta, Indonesia

Built the dynamic layout (~500 RPS) and widget (~2.1K RPS) platform for the seller dashboard. Wrote a concurrency-aware library for handling widget upstream calls — basically a way to fan out requests without melting the downstream services. Also shipped the first React version of the seller home page.

  • Created an ETL background job for a backward-compatible new feature (review with attachment). The "backward-compatible" part took longer than the feature itself.

MyWishes

11 mo
Software Engineer Apr 2018 – Mar 2019 · Remote (London, UK)

Remote gig for a small London fintech building a digital will-writing app. I did a bit of everything — Docker, Rancher, Node.js, Next.js. The kind of role where "full stack" actually means full stack, not "React developer who also writes API routes."

Telekomunikasi Indonesia

2 mo
Full Stack Developer Jan 2018 – Mar 2018 · Bandung, Indonesia

Rewrote a travel/tourism app from PHP to Node.js and migrated the database from MySQL to MongoDB. Whether that last decision aged well is a conversation for another time.

Alter Indonesia

4 mo
Android Developer Mar 2017 – Jul 2017 · Indonesia

Sole Android developer. Built a rental marketplace app. Learned that being the only dev on a project means you also do QA, project management, and arguing with the designer. (I do not miss Android development.)

Education

Universitas Gunadarma

Bachelor of Engineering, Informatics Engineering · 2014–2018