Principles before libraries
Read the constraints of the problem before picking a tool. Tools change every few years; the way data moves and the way failures spread do not.
Backend Engineer · Ho Chi Minh City, Vietnam
Backend in TypeScript for Singapore clients — APIs, data, queues, payments. I take the work from architecture and third-party integrations through to deployment and the runbook.
Engineering
FOR UPDATE SKIP LOCKED and side effects that tolerate at-least-once delivery. Retries, TTL and concurrency limits are part of the design, not something improvised during an incident.
worker_threads into OCR, with TTL-scoped storage; the output is text ready for embeddings and semantic search. Heavy jobs are concurrency-capped so they never drag the API down.
How I work
Read the constraints of the problem before picking a tool. Tools change every few years; the way data moves and the way failures spread do not.
Where to write, where to refund, where to reconcile are decisions made before the first line of code — not patches after a transaction goes out of balance.
A system is finished only when someone else can run it without asking the author: deploy, rollback, health checks, and knowing where it usually breaks.
About
I am Phan Gia Phát, a backend engineer working mostly with Node.js and TypeScript. I design, build and operate production systems for Singapore clients, most of them end to end on my own.
Most of the work sits where it is hard to see: transaction boundaries when a payment fails halfway, multi-tenancy where the tenant is chosen by domain, queues that never produce a duplicate row, and runbooks good enough for whoever comes next. I would rather read the principle than the tutorial.
Contact
If you have a role in mind, or just want to talk through a backend problem — get in touch.