About
I'm a full-stack developer who keeps ending up on the backend. I started on React, learned Java in five days to get a backend job on a dating app, and moved that team's new services to AdonisJS. Now I'm a software engineer at Mine, a marketplace where sellers run live auctions. I work on its backend and on the dashboards for sellers and for our own team.
Outside work I build Perch. It started because managing three access points meant three browser windows plus iftop. Now it runs my home network and a friend's. It's free and MIT licensed. I built it with a lot of agentic coding, and I didn't want to charge for that.
I care about setup being boring and animations being smooth. Perch installs as one controller plus a daemon per device. The Liquid Glass library exists because I wanted iOS 26 materials in React Native on both platforms.
Experience
- Jun 2025 to now
Software engineer · Mine
A live-shopping marketplace where sellers run auctions on stream.
- Load-tested the auction purchase path and reworked it. One product went from 6 to over 32 purchases a second. The row lock now covers 10 statements instead of 22, and the round-close deadlock is gone.
- Built pinned messages in livestreams and DMs, go-live push notifications in FCM batches of 500, and payout holds for new sellers.
- Work on Mine's two web dashboards, one for sellers and one for our own team, in React with TanStack Query and Tailwind.
- Jan 2025 to Feb 2026
Frontend developer · Thundr
A dating app by Tanders Inc., part of TRE Ventures in Parañaque. My first React Native job.
- Reworked parts of the app's UX, made it faster and built Thundr Safe Spaces.
- Helped the new backend developer finish the service rewrite I had started.
- Mar 2024 to Nov 2024
Backend developer · Thundr
I joined in February to build internal apps and marketing sites. A month in, the backend role opened up, and I learned Java in five days to pass the solutions architect's evaluation.
- Fixed an N+1 in the card feed, where each card fetched its user and each user fetched profile details. Loading cards went from about 5s to 2s.
- Traced slow presigned S3 URLs to client startup under ECS task credentials. One shared client cut those requests from 30s to about 5s.
- Wrote the payments service on Maya Business, face verification with Rekognition, and a Community service for feeds and groups. I picked AdonisJS v6 for both new services and designed Community in Figma with our frontend dev and QA.
- Rewrote matching, chat and suggested matches as one AdonisJS service. Filtering moved into indexed MySQL queries on a normalized match table, so responses held at about 400ms instead of 2 to 5s with timeouts.
- Built thundr-web with React, TanStack Query and React Router.
- Nov 2023 to Feb 2024
Software developer · Intellect Philippines
Worked on IntelliResource, a CRM suite with a React frontend and a Laravel backend. Construction workers at Fonda Global Engineering used it on the job. Fonda is the group behind Intellect Singapore and its Philippine branch. My main wins were performance fixes and JSDoc types that made the code easier to work in.
BS Computer Engineering, STI College Carmona, 2019 to 2023
Projects
- 2026
KantaLang
Karaoke in the browser and on Android TV, with timed lyrics, phone reservations, offline song packs and Community uploads.

- 2026
Perch
A controller for OpenWrt home networks, in the spirit of UniFi. A Go collector on the router classifies traffic with nDPI, and a daemon runs on each access point. Both dial out over WebSocket, so no device needs an open port. Packages cover five router architectures, MIPS included.
- 2026
expo-liquid-glass-ui
iOS 26 Liquid Glass for React Native. Apple's own glass on iOS 26, a Metal renderer on older iOS, and an AGSL port for Android 13 and up. Ships a tab bar, switch, slider and bottom sheet. It started as a fork of rit3zh's expo-liquid-glass-view.
- 2026
cloudx
Self-hosted hub for my Claude and Codex sessions. A small agent on each machine runs the official CLIs and reports to the hub, so I can answer an approval from my phone.
- discord-voice-recorder Records each speaker on its own track, then mixes them with FFmpeg.
- cloudflare_auto Cloudflare DDNS that finds records by a comment tag, with failover.
- School and commissions Face-recognition attendance that unlocks the door, a GPS and LTE motorcycle tracker with remote lock, and a smart doghouse with live video and a remote food dispenser.
- Everything else on GitHub
Writing
Stack
Backend
- TypeScript
- AdonisJS
- Java, Spring Boot
- MySQL, MariaDB
- AWS, Socket.IO
Networks
- Go
- libpcap, nDPI
- OpenWrt
- Docker
- Cloudflare
Mobile
- Expo
- React Native
- Swift, Metal
- Kotlin, AGSL