Gürkan UÇAR

Gürkan UÇAR

I’m a software engineer interested in backend development, self-hosted systems, electronics, and aviation. This blog is my personal knowledge base where I document what I learn, the projects I build, and the solutions I discover.

Latest posts

All posts →
Infographic: the Adapter pattern converts different external languages into one common model, the Strategy pattern decides which adapter runs — Controller to Use case to the MenuAdapter port, then on to XFirmMenuAdapter (X API, JSON) and YFirmMenuAdapter (Y API, XML)
Aug 8, 2026 · 8 min

Adapter and Strategy: Keeping External Services Outside the Domain

How to integrate with multiple external services without letting any of them leak into your business logic: one port, multiple adapters, and two ways to choose which adapter should run.

Infographic: on the left the arrow anti-pattern built from nested if-else blocks, on the right the same rules written as a list of early returns followed by the happy path
Aug 8, 2026 · 9 min

Clean Code: Guard Clauses and Early Return

Getting rid of the arrow anti-pattern and writing business rules as a flat flow: guard clauses, early return, and how to test them with unit tests.

Infographic: a single INSERT atomically enqueues the request, then the email queue table, an idempotent claim and delivery to the provider; below it duplicate sends, silent loss, stuck-job recovery, retry and retention, plus a DB poll versus message broker comparison
Aug 8, 2026 · 15 min

An Async Email Sending System: A Stack-Independent Design

An email queue that accepts work with a single INSERT and lets workers handle it reliably: the data model, the race conditions, why exactly-once does not exist, and how to choose between DB polling and a broker.

Infographic: a booking request passes through the links of a chain — flight, seat availability, no-fly list, passport validity and total amount checks pass, and the chain stops at the promo code check
Aug 8, 2026 · 14 min

Chain of Responsibility: Turning Complex Rules Into a Pipeline

Splitting the seat, no-fly, passport, amount and promo checks of an airline booking into independent links of a chain, with Spring Boot.