About
I Build the System, and I Write Down Why
My name is Muhammet Şafak. I have been building software since 2008, and today I work as a Staff Engineer on the R&D team of a technology company. Thinking about and designing high-traffic architectures is the part I enjoy most. I am loyal to the problem, not to the language. What I know, what I learn and the real-world cases I run into, I share in several places — this site first of all.
This page tries to explain both who I am and why this site exists.
Staff Engineer Istanbul, Türkiye
What I decide by
I have been at this a long time and plenty has changed; the ones below have not. Each one has a cost, and I have written that down too.
- 01 I choose what can be changed tomorrow
- The thing that finishes fastest today is rarely the thing still standing a year later. When the two conflict I take the second one; the price is a slower first delivery.
- 02 I write down the reasoning
- Making the call is half the work; writing down why it was made is the other half. An unrecorded reason turns into code nobody can defend six months later.
- 03 I name the cost
- Every choice comes with a bill. A recommendation that hides its bill is not advice, it is sales copy. Nothing here is a cure-all.
- 04 I am loyal to the problem, not the language
- PHP, Go, Python and JavaScript all stay on the table; the problem decides which one opens, not my habit.
- 05 I say so when I do not know
- If I have a limit on a topic, I do not hide it. Seniority is not knowing every answer; it is drawing the line in the right place.
Where I go deep
The subjects I have read into, measured, and shipped production work with. On anything outside this list, I will tell you I do not know.
-
Developer tooling and CI
Tools that do one thing well, and the pipeline that runs them. A green CI is not enough; what it proves has to be written down too.
-
Event-driven and messaging
The event itself carries the contract between services; queues, retries and idempotency are the bill that comes with it.
-
AI-assisted development
I keep an LLM inside the development loop — at the point where I review the decision it produced, not the code. The real work is knowing what the model does not know.
-
Automation and data processing
Every manual repetition is an error budget. Collection, transformation and scheduled jobs; what separates a small script from a durable pipeline is how it handles failure.
How did I get here?
I started freelancing in 2008. For fourteen years I delivered corporate sites, e-commerce systems and integrations. That is where I learned the commercial side of the work, what a delivery date actually means, and that no system survives without an owner.
From 2012 I was also on the core team of a vertical search engine: an index of tens of millions of documents, a crawler measured in millions of URLs an hour, and query latency dragged from seconds down to milliseconds. That is where I first saw what “scale” means, bill included.
Since 2022 I have been full-time at a technology company — first as a Senior Software Developer, and since 2025 as a Staff Engineer. The job is no longer only writing code: designing the microservice and event-driven architecture of a high-traffic platform, acting as the technical compass on critical design calls, and putting product strategy and technology vision on the same table. Over the same period I mentored small teams on TDD and DDD.
I did not learn software at school — my degree is in history. That started as a gap and turned into a habit: read everything at its source, and note down what you read with the date on it. That habit explains a fair amount about what this site looks like.
Company names, dates and the skill list live on the résumé; this page is about the work itself.
See the résuméAbout this site
Built with Astro, Tailwind CSS and MDX, published on Cloudflare. The content does not live in a database but inside the git repository, as markdown.
No accounts, no dashboard, no forms and no ads — none of them planned either.
If you have a question, an offer, or plain curiosity: no form, straight to email.
Write to meWhat AI does to these posts
AI is not here to write the text; it is here to anonymise what I wrote and clean up the language. Every post I publish today goes through three steps.
- 01 Draft
- I pick the topic, and I write the text from cases I actually hit in production. The draft cannot be published as it stands: whatever makes the customer, the system or the data recognisable is still in it.
- 02 Scrubbing
- AI anonymises the text: it generalises anything recognisable without breaking the example. Typos and clumsy sentences are fixed in the same step.
- 03 Final review
- Before it goes live I read the text line by line, fix whatever needs fixing and give it its final shape.
This is where AI does not reach: the topic, the claim, the real examples and the measurements are mine. The machine works on the language layer, not the decision layer.
What lives where
This site is not a showcase, it is a ledger. It is not one pile either: each section answers a different question and none of them does another’s job. Your question decides where you should go.
-
Blog
How did I build this?
A hands-on development journal, dated from 2014 to today. Every post stays inside the knowledge of the year it was written; I do not go back and correct the past with what I know now.
-
Labs
What am I building, and what does it do today?
The development centre. Everything listed works today and none of it is final; whatever reaches its final form moves to the portfolio and leaves its record behind.
-
Research
Which question did I chase, and what did I find?
The research centre. Measurements, analyses, surveys and reviews — each record states its method, its sources, and how far I trust the result.
-
Portfolio
What shipped?
Work that actually went live: what it does, who it is for, and whether it is still alive. A record, not a pitch.
Satellite · sade.dev
The line is drawn by mode, not by person
Everything written here is dated and first-person — “I did this, on this date, this way.” sade.dev speaks without a date and without an author — “this is how it is done.” The same topic can live in both; one carries the finding, the other the principle. When something here touches system-level depth, I do not write that depth — I link to it.
Go to sade.dev