TetherMax
Crypto trading-fee cashback platform with 100K+ users. Took over the web + mobile frontend, rebuilt it in-house, and own it end to end.
I build fast, readable, product-driven interfaces — with an auditor's eye for what breaks.
Five years in engineering — two of them auditing Solidity, now focused on frontend. I care about interaction, reliability, and ownership, and I ship products that are easy to use, easy to read, and easy to maintain.
BASED IN SINGAPORE · EMPLOYMENT PASS HOLDER
Rebuilt the web + mobile frontend of TetherMax, a crypto cashback platform with 100K+ users, in-house —cutting the JS bundle 85–90% (~2MB → 200–300KB). Now leading the frontend team.
Contract from 2019, full-time from late 2020. Delivered 100+ DeFi & ERC-20 audits securing $5B+ in TVL, and shipped production Solidity to client spec.
Crypto trading-fee cashback platform with 100K+ users. Took over the web + mobile frontend, rebuilt it in-house, and own it end to end.
Couples track shared expenses and assets in one place. Web, app, server, DB — built solo, live on Google Play.
A fog-of-war map over real GPS. Offline tiles, one-polygon fog, noise-hardened dwell detection.
100+ DeFi & ERC-20 smart contract audits at HAECHI LABS — where I learned to read code by asking how it breaks.
Image pipelines, dynamic imports, bundle trimming — cut TetherMax's JS ~85–90%. When React itself is the bottleneck, I move work out of the render loop (refs + rAF, zero per-frame re-renders).
Next.js App Router per-route caching, TanStack Query for server state — aggressive where content is static, exempt where staleness costs users money.
React Native alongside web from a ~90% shared codebase — one team, both platforms, releases in lockstep.
CI/CD and code-review standards set up and adopted team-wide. Sentry + Mixpanel observability. Pure-core architecture that makes logic unit-testable.
Two years auditing Solidity — untrusted input, exploit scenarios, and "how does this break?" carried into every frontend.
A personal AI agent with a face — and the face grows itself: new skills declare their own dashboard tabs.
Upload markdown, pick a theme, get a URL. The gap between writing and publishing, closed.
Grab a can, it spins with your drag — then coasts before settling back to idle.
Photo cards wrap onto a 3D ring around the camera. Scroll to zoom, move to rotate, click to fan out an album.
Ownership doesn't stop at the merged PR. When something breaks at 3am, I want to be the one who knows why.
Auditing Solidity taught me to ask "how does this break?" before "does this work?" The same habit shapes how I write for others: if a teammate can't follow it in one read, it's not done.
Users never notice when it works — they leave when it doesn't. I'd rather catch a failure in CI than in a support ticket.