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
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
One architecture rule, three languages: archlint now does Go + TypeScript + Python
In a polyglot repo, 'domain must not import infrastructure' is the same rule in every language — only how the import resolves differs. I added TypeScript and Python to archlint: one architecture.json enforces all three in CI.
Being Polyglot Is an Outcome, Not a Goal
How becoming a multi-language developer turned into a supposed goal, why it never really was one, and how I actually got there.
Four Languages in One Year: The Mental Flexibility That Polyglot Practice Brings
A reflection on how moving between PHP, Go, Python, and TypeScript within a single year shaped the way I think about software.
What I have built in this area
SentryFixer: reading a Sentry error against the code and drafting the fix
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.
Two languages sharing one queue without the serialization lock-in
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.
What shipped in this area
BabelQueue
OngoingFounder & 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.
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.