# Muhammet Şafak — Software Engineer, System Architect & Researcher

> Software engineer, system architect and engineering researcher Muhammet Şafak. Writing on distributed systems, software architecture and reproducible measurements; a development journal since 2014.

- Role: Software Engineer · System Architect · Engineering Researcher
- Location: Istanbul, Türkiye
- Source: https://muhammetsafak.com/
- Language: en-US
- Author: Muhammet Şafak

---
## I design, build and study production software systems.

**Software Engineer · System Architect · Engineering Researcher**

I have been building software since 2008; today my focus is the architecture, scalability and reliability of high-traffic distributed systems. Here I share the reasoning behind decisions, the lessons drawn from real projects, and measurements anyone can reproduce.

- Location: Istanbul, Türkiye
- Experience: Since 2008 (18+ years)
- Focus: Distributed Systems

## About

I have been building software since 2008. Today I work as a Staff Engineer at Bulutklinik, focusing on the architecture, scalability and reliability of high-traffic distributed systems. My work spans three connected areas: building production systems, designing their boundaries and trade-offs, and investigating how they behave through experiments and measurement. I work with PHP, Go, Python and JavaScript/TypeScript, choosing technology by the problem rather than the language. Outside work I build open-source tools and infrastructure software.

What I care about is the reasoning behind an engineering decision: why a design works, what it costs, where it fails, and under which conditions it remains a reasonable choice. I publish research with its methodology, environment, results and limitations; the goal is not to declare universal winners, but to produce findings others can examine, challenge and reproduce.

[Go to the about page](https://muhammetsafak.com/about/)

## Explore

- **Blog** — https://muhammetsafak.com/blog/ (Markdown: https://muhammetsafak.com/blog.md)
- **Just Ask** — https://muhammetsafak.com/just-ask/ (Markdown: https://muhammetsafak.com/just-ask.md)
- **Books** — https://muhammetsafak.com/books/ (Markdown: https://muhammetsafak.com/books.md)
- **Portfolio** — https://muhammetsafak.com/portfolio/ (Markdown: https://muhammetsafak.com/portfolio.md)
- **Research** — https://muhammetsafak.com/research/ (Markdown: https://muhammetsafak.com/research.md)
- **Labs** — https://muhammetsafak.com/labs/ (Markdown: https://muhammetsafak.com/labs.md)
- **Expertise** — https://muhammetsafak.com/expertise/ (Markdown: https://muhammetsafak.com/expertise.md)
- **Résumé** — https://muhammetsafak.com/resume/ (Markdown: https://muhammetsafak.com/resume.md)
- **Contact** — https://muhammetsafak.com/contact/ (Markdown: https://muhammetsafak.com/contact.md)

## Featured Projects

A selection of products and projects I build and maintain.

- **[BabelQueue](https://muhammetsafak.com/portfolio/babelqueue/)** — BabelQueue is a language-agnostic message queue standard that lets services written in different languages share the same queue without getting trapped by serialization lock-in. Instead of language-specific formats like PHP's serialize(), it defines a strict JSON envelope — frozen at schema_version 1 — that every language can read natively. It runs on Redis and RabbitMQ with no sidecar or broker plugin, with an overhead target of under 2%.
- **[CommitBrief](https://muhammetsafak.com/portfolio/commitbrief/)** — CommitBrief is a provider-agnostic Go CLI tool that performs LLM-powered local code review on git diffs. It reviews any scope — from staged/unstaged changes to a single commit to PR-style three-dot ranges — without leaving the terminal, without leaking the diff, and with customizable project rules.
- **[Ragmux](https://muhammetsafak.com/portfolio/ragmux/)** — Ragmux is a self-hosted, single-binary AI gateway that sits between your application and providers like OpenAI, Anthropic, Gemini, DeepSeek and Ollama. It exposes one OpenAI-compatible API, injects RAG context from the documents you upload into every request of a project that has a store linked, and keeps provider credentials encrypted and away from the application. Users, connections, projects, documents, vectors and metrics all live in one PostgreSQL with pgvector — no Redis, no separate vector database.
- **[Contextator](https://muhammetsafak.com/portfolio/contextator/)** — Contextator is a self-hosted, multi-tenant documentation server that takes a project's documentation from wherever it already lives — a mounted folder, a git repository, an uploaded archive, an Obsidian vault or a Notion workspace — and makes it searchable behind a single MCP endpoint. Every project gets its own URL and its own document collection; embeddings are generated on the machine's CPU by default, and the documents never reach a third party.
- **[QueryProxy](https://muhammetsafak.com/portfolio/queryproxy/)** — QueryProxy is a self-hosted query approval portal I built so developers can reach production data without ever holding production credentials. Submitted SQL is parsed and guarded, runs on a queue once a DBA approves it, is masked as the results are written to disk, and every step lands in an immutable audit record.

## Latest Posts

My latest writing on software, architecture and product development.

- [My development setup in 2026: editor, terminal, and flow](https://muhammetsafak.com/blog/my-development-setup-in-2026/) — A development environment that has grown simpler over the years — which tools I've kept and why I let most new ones pass me by.
- [The third MCP server was reasonable. The rest were not](https://muhammetsafak.com/blog/one-mcp-server-per-project-stops-scaling/) — MCP was the right answer for giving an agent a project's documentation. As the count grew, the servers themselves became the thing needing maintenance.
- [You chose RAG. The real work starts now](https://muhammetsafak.com/blog/the-real-work-starts-after-you-choose-rag/) — RAG or fine-tuning gets answered everywhere. The three questions left after it — the key, the model choice, the budget — get answered nowhere.

## Frequently asked

What I get asked most: how I started, what I build with, and how I choose.

### How did you get into software development?

I met my first computer in 2000, an IBM my family bought. It did not take long to realise that what I really enjoyed was not using the machine but creating something with it; that feeling of making things was incredibly satisfying. My software development journey started there.

### Which programming languages and frameworks do you use?

I am fluent in PHP, Go and JavaScript, and I use all three actively. I use Python in a narrow area: scripting, data conversion and automation. Among frameworks, Laravel and Symfony, Gin and Fiber, and the Node.js side are part of my toolbox. My focus is never the language or the framework, it is the problem to be solved.

### How do you decide which language or framework to use?

There is no single answer, but a few parameters drive the decision: the time available for the MVP, the knowledge and experience of the rest of the team, and the specific needs of the product. If nobody on the team knows Go, that product should not be written in Go. By the same logic, I would not write PHP Laravel for a consumer/worker whose only job is to fire a single cURL or SOAP request.

### What is this site, and why does it exist?

This is a personal corner of the internet where I share what I know and what I have lived through, in detail. It exists so that I can pass on my experience freely, with no advertising and no revenue motive behind it.

### Do you use AI?

I have been using AI actively, as a driving force, since 2023. For the time-consuming grunt work such as reviewing codebases and writing code, agentic AI tools do a good job as accelerators.

### How long have you been developing software?

I have been making my living as a software developer since 2008, so 18 years of professional experience.

### What kind of software do you build?

My specialisms are web software and CLI tools. I enjoy designing and writing the backend of a system more than anything else.

### Are you a developer, an engineer or an architect?

I started out as a developer. Over the years I have done hands-on development in almost every domain, and the engineering solutions I produced made those systems better, stronger and more resilient. Today I define and implement the architecture of high-traffic systems in line with their goals. The three are not alternatives; they are layers stacked on top of each other.

### Which domains have you worked in?

I have worked in HealthTech, FinTech and EdTech as lead/main developer, active in both the decision-making and the implementation.
