Skip to content

Experience

9 years across Java/Spring and TypeScript/Node.js/NestJS backend systems. Presented here by focus area rather than as a company-by-company timeline — each area links to the Projects or Case Studies where it shows up concretely.

Backend API Design & Development

Designing and building REST APIs and backend architecture across Java/Spring and TypeScript/NestJS services, with an emphasis on making boundaries and contracts explicit before implementation.

  • API and service boundary design for systems that connect multiple internal and external consumers
  • Backend architecture for both greenfield services (see Projects) and systems with existing constraints

Enterprise System Integration & Distributed Data Flows

Connecting systems that were not designed to talk to each other, and keeping the resulting data flow understandable, observable, and recoverable when a step fails.

  • Mapping and transformation between systems with different data models
  • Designing for partial failure: retry, dead-letter handling, and replay rather than best-effort delivery
  • See RelayHub (Projects) and the Case Studies for concrete examples of this focus area in practice

Transaction & Data Consistency

Reasoning about transaction boundaries and consistency guarantees in systems where a single business operation spans multiple services or data stores.

  • Identifying race conditions and inconsistent-state windows in asynchronous processing paths
  • Choosing between strict consistency, eventual consistency, and compensating actions based on the actual failure modes involved

Authentication & Identity Integration

Integrating authentication and identity across services using OAuth2, OIDC, and SAML.

  • OAuth2/OIDC integration for user-facing services (see English Core Speaking, Projects)
  • Session and identity boundaries between a frontend, backend API, and third-party identity providers

Batch, Asynchronous & Event-driven Processing

Building processing pipelines — batch, asynchronous, and event-driven — that stay correct and debuggable as scale and failure scenarios grow.

  • Event-driven pipelines with Kafka as the backbone (see RelayHub, Projects)
  • Batch processing constraints when legacy state and new configuration must coexist (see Case Studies)

Performance Bottleneck Analysis & Production Troubleshooting

Diagnosing real production incidents — not only reproducing failures locally, but verifying root cause and fix against the actual running system.

  • Root-cause analysis for intermittent, timing-dependent, and load-dependent failures
  • Distinguishing a fix that passes a test from one that is verified against production behavior

AI / LLM API Integration

Integrating external AI/LLM APIs into product backends as one more external dependency to design around — with its own latency, failure, and cost characteristics.

  • External AI/LLM API integration for a user-facing evaluation feature (see English Core Speaking, Projects)