Where I’ve worked, what’s come out of it
Three projects I’d show first, then every role I’ve had.
Featured work
-
Agency Platform & Ops
The plumbing a small agency runs on.
-
Kiveo
Native iOS reading tracker and journal app
-
Natural Language Queries
Ask your analytics a question instead of learning a reporting UI.
The whole record
Every project hangs off the job it came from. Open a role for the context, open a shipped thing for the full story — as many at once as you like.
Backbone TechnologyDeveloperAug 2015 — Aug 2016
Developed responsive websites using proprietary CMS with pixel-perfect implementation from design mockups.
Fanxie LabCTO — Co-Founder2016 — now
I run Fanxie Lab, building full-stack applications for clients on Vue.js, React, Laravel, and Node.js, plus dashboards on React, TypeScript, Tailwind, and Supabase. I also built the SEO infrastructure inside Fanxie Cloud, our internal client-management platform, handling automated sitemap submission and site-health diagnostics across every client site we run. On the side I'm building Kiveo, a native iOS reading tracker in Swift and SwiftUI, while keeping the whole client stack on AWS and DigitalOcean at 99.9% uptime.
Kiveo2025 — Now
Native iOS reading tracker and journal app
Reading tracker and journal app, iOS native.
Designed for intentional readers. Users can track their books, save quotes, and create reflections.
- No account required to use the app.
- Private by default: no leaderboards, no social feeds.
struct LibraryView: View {
@Query(
sort: \Book.dateAdded, order: .reverse
)
var books: [Book]
// ...
}Agency Platform & Ops2026 — Now
The plumbing a small agency runs on.
API design, transactional email, R2 storage, server provisioning, and the operational tooling that keeps partner infrastructure boring.
- One-click client site creation: droplet, DNS, TLS, storage, mail.
- Built so a two-person team can run real infrastructure without an ops hire.
async create(
serverId: string | null,
dto: CreateSiteDto,
userId: string,
): Promise {
// Check if domain already exists (excluding deleted sites)
const existingSite = await this.sitesRepository.findOne({
where: {
domain: dto.domain,
status: Not(SiteStatus.DELETED),
},
});
// ...
}ImaginamosFull-Stack DeveloperApr — June 2019
I co-architected a fintech platform meant to handle real money without falling over. Scalability and security weren't checkboxes; they were the whole point.
I also owned the AWS side (EC2, RDS, load balancers) and kept uptime above 99.95%, since real transactions were riding on it.
Along the way I mentored three junior developers: code reviews, pair programming, the usual. Except I actually cared about what they were learning, not just what they shipped.
Full-Stack DeveloperJuly — Dec 2019
I pushed Vue.js as the standard frontend framework. Component-driven architecture, Vuex for state, Webpack tuned so builds didn't drag. Not a trend chase; the old way was slowing everyone down.
Then I proposed decoupling the frontend entirely. It worked: feature delivery got about 20% faster, and teams stopped stepping on each other.
I also designed the REST contracts between Vue and the PHP backends, clean enough that both sides could move without waiting on the other.
Solutions Architect2019 — 2021
I architected the e-commerce and booking platform for Colombia's largest cinema chain: PHP and Node.js microservices built to hold up under millions of monthly visitors. I also ran the full project lifecycle, building reusable component libraries and CI/CD workflows so delivery didn't reinvent itself every sprint.
Developer2021 — 2023
I designed and launched a WordPress plugin from scratch; it's still running on 200,000+ sites today. I pushed test coverage past 90% on new modules and cut user-reported issues by 30% in six months, working closely with QA and product instead of just shipping and moving on. I also automated the GA4 migration for legacy users, provisioning properties via API so nobody had to lift a finger.
Senior Developer2023 — 2024
I designed and shipped MonsterInsights's first AI analytics feature, letting users query their metrics in plain language instead of digging through dashboards. I also built the event tracking API wrapping Google Analytics's Measurement Protocol at 400K+ daily requests, built the Vue dashboards that visualized it in real time, and led the backend modernization that cut technical debt and sped up delivery.
On the ops side, I shaved 20% off load times through SQL and caching work and wrote the automation scripts that cut manual deployment time by a third.
Developer Team Lead2024 — 2026
I led the development team behind MonsterInsights, shipping plugins with 2M+ combined active installs and owning the architecture for our next-gen AI analytics assistant: a natural-language interface over Google Analytics data built on Python, LangSmith, and Gemini. I drove the Laravel migration and the Vue 3 rewrite, cut feature development time by 30%, and pushed the team onto an AI-native workflow with coding agents, directing and reviewing about 90% of shipped code.
Along the way, a cross-sell plugin I designed pulled a 25% take rate on Black Friday.
Natural Language Queries2026
Ask your analytics a question.
AI-powered natural language queries that let site owners ask about their traffic in plain English instead of learning a reporting UI.
- Ships inside a plugin that updates unattended on 3M+ sites: no breaking changes allowed.
- Answers have to be simple and true at once; a confident wrong number is worse than no answer.
> which posts grew last month? /blog/getting-started +23% /blog/wp-cli-tricks +18% /pricing +15%
Dates and titles only get you so far. What these years actually felt like is in the writing.