Keeping Software and Cash Hardware in Sync
How an event-driven teller cash recycler platform stays consistent: idempotency, duplicate-message protection, timeouts, and recovery when the backend and a physical device disagree.
Senior Software Engineer with 12+ years designing and developing backend services, distributed systems, and scalable enterprise applications. Java, Spring Boot, Kafka, and cloud-native infrastructure.
Explore professional background, architectural career timeline, core technical skills, and download resume details.
Writing on systems, design, and the lessons that have stuck from building software.
Projects I'm building outside my day job, and where I'm open to collaborating.
Senior Software Engineer with 12+ years of experience designing and developing backend services, distributed systems, and scalable enterprise applications. Strong expertise in Java, Spring Boot, microservices, event-driven architectures, Kafka, and cloud-native infrastructure. Experienced in system integration, production troubleshooting, security, and building reliable systems for enterprise clients.
PG Diploma โ Mobile Solutions Development
Bachelor of Technology โ Computer Science
Notes from building and operating software: system design, production lessons, and how I keep learning.
How to document enum values in a Swagger spec so API clients see the allowed set instead of free text.
Read on BaeldungHow extends and implements differ, and why a class can implement many interfaces but extend only one class.
Read on BaeldungWhy production systems move from a hand-rolled TTL cache to Redis, and what you gain.
Read on LinkedInStrings, hashes, sets, sorted sets and lists, and how the right pick can make or break performance.
Read on LinkedInHow Redis keeps data across restarts, and the trade-offs between snapshots and append-only logs.
Read on LinkedInOne question that reshaped how I think about eviction, expiry and cache correctness.
Read on LinkedInAfter 11+ years in software, why I stopped treating learning as something I only did before interviews.
Read on LinkedInWhat it is like to steer several AI coding agents from a phone.
Read on LinkedInHow an event-driven teller cash recycler platform stays consistent: idempotency, duplicate-message protection, timeouts, and recovery when the backend and a physical device disagree.
Lessons from building an IAM layer at Expedia: authorization code and client credentials flows, and integrating Okta, AWS Cognito, and ADFS.
Projects I'm building outside my day job. If one of them overlaps with something you're working on, I'd be glad to compare notes.
A multi-tenant platform for fitness studios: a Java backend service, a Flutter member app, and a web UI, designed with tenant isolation from day one.
Offline-first exam prep for Alberta Class 7 and Ontario G1 learner tests, taken from idea to App Store submission.
An automated treasury and payment escrow API gateway. Integrates banking rails directly with ledger tables via event-driven messaging, ensuring audit trails and transactional guarantees.
High-throughput document compilation API. Designed to intake dynamic schemas and output PDF reports at scale, featuring compliance formatting, signatures, and localized caching.