I ship things that scale. Here's proof.
4.5 years · 2 companies · I've seen what breaks at scale. I build around it.
At Dimagi, I build CommCare Connect, an open-source Django platform for frontline health worker programs, part of a product family used across 130+ countries. At Xcaliber, I built one Spring Boot backend that powered web, Android, and iOS simultaneously. I build things that work, and more importantly, keep working after I stop looking at them.
Where I've shipped
- ▸Built the microplanning module end to end on PostGIS, including a CSV import that handles 1M rows
- ▸Traced production bugs to the root cause, from a payment deadlock to a cache bug that let suspended users back in
- ▸197 merged PRs on CommCare Connect, an open-source Django platform for frontline health programs
Work you can verify
- #1536Made a page that kept timing out 420x faster: 36.8s → 0.09s
- #1515Cut the database work behind a common check from 501,300 rows to 6
Xcaliber Infotech Pvt. Ltd.
- ▸Migrated the backend from Spring MVC to Spring Boot, then built REST APIs on it serving web, Android, and iOS clients, including Amazon S3 file uploads and Google Sign-In
- ▸Ran production on AWS (EC2, S3, Route 53, CloudFront) and maintained the CI/CD pipelines, cutting deployment time by 20%
- ▸Cut page load times by 15% by tuning backend APIs and SQL queries
Started at Saral Technologies, which was later acquired by Xcaliber Infotech Pvt. Ltd.
Things I built
personal projects · real decisions · code on GitHub
KickTrack
Football analytics from match video: tracks every player in real time and measures their distance, speed and passes in metres.
- frames skipped on 50fps footage, down to almost none
- 64% → 1%
- frames two overlapping players keep their IDs (was 3)
- 19 / 19
- hand-labelled passes found, none invented
- 8 of 9
Match footage is full of performance data (distance, speed, positioning, passes), but getting at it means tracking every player in every frame, in real time.
YOLO26s detection on Apple's Neural Engine via CoreML, BoT-SORT tracking that corrects for camera pans, identities anchored to jersey colour, and pitch calibration that turns pixels into metres. The model runs on its own thread, so playback never stutters.
Runs in real time on 50fps broadcast footage on a MacBook. Skipped frames fell from 64% to about 1%, overlapping players keep their IDs, and pass detection found 8 of 9 hand-labelled passes without inventing any.
syncsim
Several phones edit the same record offline. syncsim merges their changes when they reconnect, so nobody's work silently disappears, and lets you watch every step.
- random offline histories replayed on every test run
- 700
- deliberately planted bugs caught by the tests
- 5 / 5
- merge strategies and CRDTs, compared on the same edits
- 3 + 2
Phones that edit offline must agree once they reconnect. A naive merge keeps one edit and silently drops the other, and a phone whose clock runs fast wins every conflict.
A sync engine written from scratch in TypeScript: hybrid logical clocks, an operation log with version vectors, three merge strategies and two CRDTs. A seeded network simulator drops, delays, duplicates and reorders messages.
Every test run replays 700 random histories with clocks up to an hour wrong and up to 30% message loss, and every phone must end up identical. The design doc spells out where it would break in production.
Earlier projects · learning buildstracking 3 objects
Angular search UI over the Google Books API: search by title, author or keyword, with detail views. No backend.
AngularTypeScriptBootstrapFull-stack shop: Spring Boot REST API, Angular SPA and PostgreSQL, with JWT auth and a layered service/repository design.
JavaSpring BootAngularPostgreSQLMERN app built to learn the stack end to end: React UI, Node/Express APIs, MongoDB with Mongoose, auth and sessions.
ReactNodeExpressMongoDB
What I bring to your team
Interactive CLI. Type 'help' to start. Some commands have surprises.
Let's talk
Hiring for a backend or full-stack role? Send me a note and I'll get back to you within 24 hours.
