Selected work

Three engineering examples

Three systems I designed and wrote myself.

These are my own products and internal automation. Client work is not shown here.

Own product 2026

Tool rental through smart lockers

Someone picks a tool in the app, on the website or in Telegram, pays, and the locker opens on a command from the cloud.

The gateways sit on site and hold a permanent connection. Drop it and a customer is standing at a closed locker with a rental they have already paid for. The locks speak the manufacturer's own binary protocol, and there was no library for it, so I wrote the codec.

Network handling went to Go — thousands of live connections is what it is for. Rentals, pricing and payments stayed in Python. Between them sits an event queue with the format described once, and the code for both sides is generated from that description. Otherwise the two halves drift apart within a year; it is only a question of when.

I also built a stand-in for the gateway that misbehaves on purpose: drops the link, answers with garbage, goes quiet. Without it every change to the network code would have meant a trip to a site.

Built with: Go, Python, FastAPI, Redis Streams, PostgreSQL, Kubernetes, Terraform.

Own product 2026

White-label rental platform

A rental platform each chain runs under its own name: an owner's dashboard, a mobile workspace for staff at the counter, a separate console for subscriptions and domains.

One person had to operate it, with no on-call rota and no budget for a fault-tolerant cluster, so reliability is built as rungs. The base stack comes up with one command on a single server and works as it is. Production limits and TLS, a second copy of the database, connection pooling, logs in one place — each rung is a separate layer, switched on when the system grows into it.

A customer with one server gets a working system on day one. When downtime starts costing money, they climb a rung instead of rewriting.

Built with: Go, PostgreSQL, PgBouncer, Caddy, Loki, Vector, Docker Compose.

Internal automation 2020

Environments for development teams

Virtual machines for the teams used to be created by hand. A new team, or a rebuild of the environments, and round it went again: create the machines, write down the addresses, distribute the keys, assemble a host list for Ansible.

I described the whole estate in a single variable: a team and its machines. The nested structure expands into a flat list, and the resources are created from that. Adding a team is a one-line change.

The access key goes into the machine at creation, so you can log in straight away. Addresses are assigned dynamically, so the created machines are read back and the host list is rendered from a template, keeping the grouping by team. Provisioning and configuration became a single run.

Built with: Terraform with the oVirt provider, Ansible. 2020.