Staff Software Engineer · London, UK · demin.ws · LinkedIn
I design and build distributed systems and cloud infrastructure, currently at iProov (biometric identity verification). 20+ years of engineering across backend, platform, embedded and low-level work.
Away from work I write compilers, emulators and solvers, mostly for Soviet-era 8-bit machines and classic algorithms. Things that are slightly closer to the metal, and occasionally problems that probably did not need solving.
- Distributed systems at iProov. I work on the backend platform behind iProov's biometric identity verification service. The work spans service boundaries, data flows, latency budgets, reliability and cloud cost.
- Cloud and platform engineering. Infrastructure as code, CI/CD, observability and release engineering on GCP and AWS. Certified on AWS (Solutions Architect, Developer, SysOps), Google Cloud (Professional Cloud Developer) and Terraform.
- Technical leadership. Design reviews, mentoring, setting engineering standards and turning loosely defined product goals into systems that ship and keep running.
- Depth below the framework. 20+ years across backend, embedded and systems programming means I debug protocols, performance and memory problems at whatever layer they live in, from Kubernetes down to the instruction set.
- Writing and teaching. Author of the blog Programming DIY since 2009 (also in Russian), and of articles for PragPub on iOS development, Go concurrency and CPU design.
- PhD in Computer Science from Moscow Aviation Institute. The thesis, the Combined Method for integer linear programming, is published with its implementation and benchmarks.
Languages and stack: Go, Python, TypeScript/JavaScript, C, Zig, Assembly (Intel 8080/Z80), Svelte, WASM, GCP, AWS, Kubernetes, Terraform, Docker, GitHub Actions.
| Project | Why it is interesting | |
|---|---|---|
| i8080-core | Cycle-accurate Intel 8080 (KR580VM80A) core in C, verified against the 8080/8085 CPU exercisers; the basis of several emulators | ★83 |
| rapira | Full interpreter for the Soviet educational language Rapira in TypeScript, with an online playground and npx rapira |
★57 |
| rk86-js | Радио-86РК emulator with built-in debugger, assembler, C and PL/M compilers, shipped as a web component on rk86.ru and in the terminal via npx rk86 |
★28 |
| dissertation | Combined Method for Integer Linear Programming: a four-stage MILP solver (LP relaxation, vector-lattice search, filter row, bounded final search), with implementation, analysis and benchmarks | |
| gomoku | Gomoku AI in Zig/WASM: Minimax with alpha-beta pruning, local move pre-sorting and quiescence deepening to mitigate the horizon problem (play) | |
| go-tcpspy | TCP/IP proxy and traffic spy in Go, with Python and Erlang ports | ★53 |
The full list of public repositories sorted by stars is in stars.md.
Compilers, interpreters and assemblers, all written from scratch and runnable in the browser or via npx.
- c8080-js - Intel 8080 C compiler ported to TypeScript (
npx c8080, online) - plm80 - PL/M compiler for Intel 8080 and Радио-86РК (
npx plm80, online) - asm8 - Intel 8080 assembler in TypeScript (
npx asm8080, online) - easy - compiler for the EASY language (
npx @begoon/easyc, online) - snobol - SNOBOL4 interpreter in TypeScript (
npx snobol) - trac - TRAC 64 interpreter (
npx trac64i, online) - peg - PEG parser generator in Python: ordered choice, predicates, character classes, AST construction
- nor - one-instruction CPU (OISC) based on NOR: DSL, compiler and executor
- rapira - Rapira (Рапира) interpreter, see Highlights
- rk86-js - Радио-86РК emulator, see Highlights; also available as a web component
- i8080-js - Intel 8080 core in JavaScript (★48)
- rk86-tape - WAV tape decoder for Радио-86РК, with a signal visualiser and a write-up of the encoding
- rk86-monitor - annotated disassembly of the original 2 KB ROM monitor
- rk86-reverse - Claude Code skills for disassembling and reverse-engineering Intel 8080 programs
- Byte-exact annotated disassemblies and remakes of 1980s Радио-86РК games: Volcano, Лестница, Диверсант, Алмаз, ПВО, Клад, SPACE
- dissertation - Combined Method for ILP, see Highlights
- svg-draw - web playground for a JavaScript DSL that draws scientific illustrations (online)
- gomoku - Gomoku AI agent, see Highlights
- zig-sokoban-solver - Sokoban solver in Zig and WASM (online), plus 60 Sokoban maps (★49)
- mastermind - Mastermind solver using Knuth's five-guess algorithm, implemented in Python, V and Zig (at most 5 guesses, 4.48 on average)
- mastermind-web - the same solver as a browser game: you think of a code, the computer guesses it, and it detects impossible or dishonest answers (play)
- etudes-vegenere - Vigenère cipher breaker, the etude from Wetherell's "Etudes for Programmers"
- ssb - in-browser demonstration of Single Side Band radio modulation (online)
- Mayne-James compression (an LZ precursor) and the GPM macro processor
- xc - portable single-file dual-panel file manager with a VFS layer (S3, GCS, SSH),
uvx xcfmfrom PyPI - go-tcpspy - TCP/IP proxy and spy, see Highlights
- http-server - the same minimal HTTP REST server implemented in many languages, down to assembly (★37)
- go-svelte - Svelte + Go hybrid SPA/MPA application (★32)
- ghasha - GitHub Action exposing SHA, SHORT_SHA and BRANCH for the current commit (marketplace)
- ghasecret - GitHub Action for debugging CI: encodes a value so it survives the workflow log masking (marketplace)
- tube - Transport for London timetable and line status viewer (online)
- imf - diet setup calculator for Lyle McDonald's Intermittent Modified Fasting book (online)
Browser remakes of classic and Soviet-era games, playable online.
- paratrooper - the 1982 arcade classic (play)
- fighter - Fighter from the Агат-7 (play)
- kling - Космические Войны from the Агат-9 (play)
- skittles - a web reimagining of Городки (play)
- durak - the card game Переводной Дурак (play)
- psycho - a reflexive game "Платный психолог" (play)
- conix - port of
conixto Python and TypeScript - ucl - HTML/JS remake of the 1996 UCL DOS demo (view)
I have been writing the blog "Программирование - это просто!" (Programming DIY) at demin.ws since 2009, mostly about low-level programming, emulation and algorithms.




