Skip to content
Muhammet Şafak
tr

Expertise

I use Python for three jobs: automation, data wrangling, tooling

When opening Composer just to read and reshape a file feels wrong, I switch to Python; my depth is in PHP, and Python is here because it took these jobs over.

Since
2014 Since
years
12 years
posts
7 posts
project
1 project

Me in the Python ecosystem

The full story: About

Python is not a field of expertise for me; it is a narrow, well-defined tool. When a file has to be read and reshaped, or a repetitive job automated, moving to a language that asks for no setup ceremony gets the work done faster. This page describes the limits of that narrow area as they are.

The brevity of this page is not a gap but a measure: I write as much as I can claim. If you are asking the same question about a broader ecosystem, the PHP page is much longer — as it should be.

The three jobs I open Python for

What the three share is that the job ends in a few lines against the standard library: for anything outside them I go to another language.

  • Data conversion

    Moving data from one format to another; the scripts that read, reshape and write a file sit here.

  • Automation

    Turning a repetitive workflow into a script; the jobs where a step gets skipped by hand come here first.

  • Small helper tools

    Programs with one job and no setup ceremony. I could write the same thing in PHP, and some of it in Go; at this scale the ceremony is too much.

I do not only write Python, I analyse it

On the rule-checking side I parse Python as well. Enforcing code layout in a language takes more than knowing its syntax: it takes modelling how an import is written and where it resolves. The rule itself does not change between languages — the surface it is applied to does.

When a job earns a script

I decide with three questions; as the yes answers add up, the script earns its keep.

01 How often is it done
A job done rarely does not earn a script; the more often it comes back, the more the script is worth.
02 Are the steps fixed
A job that changes on every run needs a decision, not a script. Fixed steps are the precondition for automation.
03 Can a step be skipped by hand
Doing it by hand leaves room for a skipped step. If a step can be skipped, the value of the script comes from consistency rather than speed.

What I do not claim

Django, FastAPI and Flask sit on the skill list in my résumé, but none of the work described on this page runs on a Python web framework, and there is no point hiding that. If I had to take over a Python service I could; claiming "I ship product in Python" would not be accurate.

Recent writing in this area

See all

What I have built in this area

All Labs records

A Claude Code skill that reads a Sentry issue against the working tree and proposes a fix as a diff and a regression test, touching no file until approved.

What it does today

Reads a Sentry issue against the working tree, produces a root-cause analysis and a fix plan, and touches no file without explicit approval. Anyone using Claude Code who needs to triage a production error can install the skill.

Open source Python Bash Sentry API +3 more
July 2026 — Ongoing

A frozen JSON envelope in place of language-specific serialization; it became BabelQueue, a polyglot queue standard.

What it does today

The frozen JSON envelope has four languages — PHP, Python, Go, Node.js — reading the same bytes, with no sidecar and no broker plugin. Teams running a polyglot queue can pick up the spec and the SDKs today.

Open source JSON Redis RabbitMQ +4 more
March 2026 — June 2026

What shipped in this area

All projects
BabelQueue cover — a canonical JSON envelope flowing from a producer through the queue to a consumer in another language, alongside the list of polyglot SDKs

BabelQueue

Ongoing

Founder & Developer

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, adding under 2% overhead.

JSON Redis RabbitMQ +6 more
June 2026 — Ongoing

Technologies I pair it with

  • Python

    The default for scripting, data conversion and automation; most of it ends with the standard library.

Frequently asked

6 questions

  • How long have you used Python?

    Since 2014, so 12 years. The span does not mean depth here: Python has always done the same narrow job for me and never moved outside it.

  • What do you use Python for?

    Three jobs: converting data from one format to another, turning a repetitive workflow into a script, and writing small helper tools. For anything outside those three I go to another language.

  • Why not do this in PHP?

    PHP was designed to answer web requests. I do not want to open a composer.json and build a class hierarchy just to read, reshape and write a file — the ceremony is too much for that task. In Python the same job is a few lines against the standard library.

  • Do you build products with Django or FastAPI?

    All three (Django, FastAPI, Flask) sit on the skill list in my résumé, but none of the work described on this page runs on a Python web framework. If I had to take over a Python service I could; claiming "I ship product in Python" would not be accurate.

  • How much have you written about Python?

    There are 7 Python-tagged posts on this site — the smallest of the ecosystems. That is also why this page is short: I write as much as I can evidence.

  • How does polyglot work decide Python's place?

    Being polyglot is not a goal for me; it is the sum of answers given to problems. Python holds a narrow, well-defined spot in that sum: the jobs where PHP asks for too much ceremony and Go asks for too much compilation.

Let us work together

If you have work in this ecosystem, tell me what you are building and we will talk about how to build it.

Search the site

Start typing to search posts, projects and pages.

Esc to close Powered by Pagefind