Selected experience
Technical responsibility in existing systems, alongside other engineers.
Taking over a distributed platform
Context. Two senior developers were leaving. I had two weeks to take over a platform spanning several projects and languages.
Contribution. I went on to lead the engineering team. Together we fixed concurrency and performance problems, reduced resource use and made the platform easier to run.
Building a product and its engineering team
Context. A digital health product needed new backend features while the engineering team was still taking shape.
Contribution. I built therapy features, worked on CI/CD to make releases easier, and helped with planning, hiring and onboarding.
Making production behavior visible
Context. It was hard to see what the application was doing in production, and configuration was spread across the codebase.
Contribution. I added tracing, brought configuration together and helped establish clear ownership for recurring problems.
Where I can help
A specific technical problem, a substantial change, or a piece of work that needs a hands-on lead.
Production debugging and performance
Processing slows down, resource use grows, or failures are hard to reproduce. I trace the behavior, test likely causes and separate evidence from assumptions.
You get: findings your team can act on, an agreed fix where the evidence supports it, and a check of whether it actually helps.
Migrations and system modernization
An upgrade or migration needs doing, but the existing system makes it risky. I work through dependencies and break the change into steps your team can review and release.
You get: a migration approach, implemented changes and a release plan that accounts for the existing product.
Cross-service engineering
A feature spans services, a shared data model or several teams. I work out the interfaces with the people who own them, implement the critical parts and coordinate the release.
You get: agreed interfaces, reviewed code and a clear sequence for getting the pieces into production.
Hands-on technical leadership
Your team needs someone to own the technical direction of a substantial piece of work, not just advise from the sidelines. I make decisions with the team, write code and stay involved through release.
You get: technical ownership, implementation and decisions explained well enough for the team to carry the work forward.
Technical background
I’ve worked across telecom, e-commerce, digital health and data platforms since 2013. Ruby and Rails have been a large part of that work, alongside Java, JRuby, PostgreSQL and MySQL.
That includes e-commerce performance, merging applications into one codebase, and internal software with complex permissions. I work across backend, frontend, data and infrastructure when the problem crosses those boundaries.
Working together
Agree on the first useful outcome
We define what needs to change, how we’ll check it, who makes decisions and what access is needed. If the cause is still unknown, the first engagement can be an investigation with findings and next steps as the deliverable.
Work in your repository, with your team
I keep changes reviewable, explain tradeoffs and use your existing tools. Calls are for decisions that need discussion. Routine progress updates can stay async.
Leave work your team can maintain
You get the implementation, verification results and handover context. For investigations, you get the evidence, what I tried, remaining uncertainty and recommended next steps.
A good fit
You have an existing product, a technical problem or change to own, and someone who can make decisions and arrange access. Unclear requirements are fine. We can work through them together. I work on scoped engagements, not full-time employment, a 24-hour pager rota or running your team’s daily work.
Scope and fees
Investigations and implementation projects are quoted at a fixed fee once we agree on the scope, access and deliverables. For ongoing work, we agree on a monthly allocation and price before it starts. Additional work is approved separately.