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.

Aug 9, 2026 · 46 min

Kafka or RabbitMQ? What the Message's Lifecycle Changes

Kafka keeps messages in a log, RabbitMQ tracks their delivery state. We build the same workload on both brokers and see where each one struggles — so you know which to pick, and why.

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.