Buckaroo
Software Developer
A Dutch payment service provider handling high volumes for European merchants. In a team of five, I help break a live payment platform into .NET microservices and own the services I build in production.
- C# / .NET
- MySQL
- RabbitMQ
- OpenSearch
- AWS
- TypeScript
Architecture
- Decomposing a large legacy payment platform into .NET microservices while it stays live: versioned APIs, incremental cutover, and moving hundreds of thousands of records with minimal downtime.
- Designed the service template and shared packages other teams start new services from, and wrote the company-wide code guideline.
- Event-driven integration over RabbitMQ with a transactional outbox, and search read models kept in sync under eventual consistency.
- Write the design documents behind the work: state machines, migration and rollback plans, observability and explicit non-goals.
Built and owned
- An invoicing service from scaffold to production, with a state machine, per-status idempotency and a retrying saga worker.
- A reporting service that delivers scheduled reports to S3, SFTP and email.
- Core work on the merchant platform across three API versions, including a grouping model with a settings cascade that reports where each value came from.
- A hosted-fields payment SDK in TypeScript: card inputs load in cross-origin iframes, so card data never reaches the merchant's servers.
Financial correctness
- A four-stage reconciliation matcher that escalates ambiguous matches instead of guessing.
- Bank statement import with three idempotency layers, an append-only ledger, and a fee allocator whose parts always add up to the total.
Reliability
- Fixed a race in ID allocation with an advisory lock, and owned the follow-up incident.
- Rewrote the shared cache client after two incidents. About 30% faster retrieval from a schema and index redesign, and about 20% lower API response times.
- Week-long on-call every five to six weeks. I review the team's SQL and application changes, and mentored a QA engineer.