3.5 years
Since 2023
I get hired for the
systems. I get kept
for the constraints.
Most backend work I have shipped was not limited by what I could build. It was limited by what I was not allowed to touch — a legacy application nobody could modify, a database policy with no exceptions, a client whose engineering team had no time for us. The design work is finding the path that survives those, and then being honest about what it costs.

Mount Raung base camp, East Java.
I am a backend engineer in Jakarta, three and a half years into building fault-tolerant microservices for financial and enterprise systems across Alibaba Cloud, Google Cloud and Azure. I was promoted to Senior within twelve months at Berijalan, then selected as the only engineer to pass Bank Saqu's technical assessment and staff their virtual account build.
I own systems end to end — design, implementation, CI/CD, and the conversation with the business about what is actually possible. At Integrity Asia I do that while mentoring two junior engineers and acting as the translator between requirements and buildable design.
My depth is Spring Boot, Kafka, Redis and event-driven architecture. I work across the stack with React and TypeScript when the system needs it, and I use AI-assisted development seriously enough to have built a delivery pipeline around it.
Outside client work I maintain encrypted-search-service, an Apache-2.0 service for substring search over personal data that stores only field-scoped, HMAC-keyed n-grams — my answer to a problem Indonesia’s UU PDP made unavoidable. I write the reasoning up rather than only the result.
Start from what cannot change
Policy, legacy systems, budget, other people's roadmaps. Those are the real design inputs. An architecture that ignores them is a document, not a plan.
Make the trade-off visible
Every fast system is paying for speed somewhere. Surfacing that — a last-sync timestamp, an explicit stale marker — earns more trust than pretending the cost is not there.
Build a platform, not a fork
The second client is the test. If onboarding them means copying the first client's code, the design was wrong — configuration at runtime beats a branch per customer.
Translate before you build
Surfacing a system constraint early, in language the business can act on, prevents more rework than any amount of clean code later.
M.Sc. Informatics
Atma Jaya University Yogyakarta · GPA 3.74
B.Sc. Informatics
Atma Jaya University Yogyakarta · GPA 3.79
Indonesian
Native
English
Professional working proficiency
Away from the terminal
Hiking into the forest and then sitting still in it — away from the crowd, near the fire. Raung, Prau, Bandung.
Stories told well. The structural kind, where the constraint is the plot — Prison Break is still the recommendation.
Indonesia has 1,340 ethnic groups and 840 languages. There is not enough time to see all of it, which is the appeal.