Writing
On mobile architecture, real-time systems, and engineering judgment.
Restructuring NU Online to support 40x user growth
When I joined NU Online in 2020, the app had 40,000 users. Two years later: 1.6M+, after a full architectural rebuild.
When the right solution isn't fixing the bugs — it's diagnosing why the bugs exist
The server was hanging with 5 users. These weren't bugs — they were the predictable consequences of an architecture that wasn't designed for real-time communication.
60fps animation and real-time audio — both fighting for the same thread
The UI and the audio pipeline were competing for the same thread. Three things happening simultaneously created a problem we didn't anticipate.
No product manager. No designer. No spec.
When I joined S.ID, the mobile app did not exist. With no dedicated PM or designer for mobile, I worked with the founding team to define scope and validate wireframes before building.
E2EE for Chat — When Simple Isn't Simple Enough (Part 1)
The chat module had encryption hooks. Sodium was already integrated. Adding E2EE should have taken a week. Then Signal Protocol showed up.