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.
- i8080-core (★83) - Cycle-accurate Intel 8080 (KR580VM80A) core in C, verified against the 8080/8085 CPU exercisers; the basis of several emulators
- rapira (★57) - Full interpreter for the Soviet educational language Rapira in TypeScript, with an online playground and
npx rapira - rk86-js (★28) - Радио-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 - 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 (★53) - TCP/IP proxy and traffic spy in Go, with Python and Erlang ports
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.
- volcano - JavaScript remake of Volcano (Вулкан) from the Радио-86РК (play)
- 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.




