Skip to content
View begoon's full-sized avatar
💭
Eating
💭
Eating

Block or report begoon

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
begoon/README.md

Alexander Demin

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.

What I do professionally

  • 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.

Highlights

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.

Language implementation

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

Emulation and reverse engineering

Algorithms and research

Systems and tooling

  • xc - portable single-file dual-panel file manager with a VFS layer (S3, GCS, SSH), uvx xcfm from 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)

Games

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 conix to Python and TypeScript
  • ucl - HTML/JS remake of the 1996 UCL DOS demo (view)

Writing

I have been writing the blog "Программирование - это просто!" (Programming DIY) at demin.ws since 2009, mostly about low-level programming, emulation and algorithms.

Pinned Loading

  1. i8080-core i8080-core Public

    Intel 8080 (KR580VM80A) microprocessor core model

    C 83 24

  2. i8080-js i8080-js Public

    Intel 8080 (KR580VM80A) core model in JavaScript

    JavaScript 48 10

  3. go-tcpspy go-tcpspy Public

    TCP/IP proxy (spy, redirector) in Go

    Go 53 19

  4. sokoban-maps sokoban-maps Public

    60 maps for Sokoban

    C 49 13

  5. http-server http-server Public

    A simple HTTP REST API server in different languages

    Assembly 37 3

  6. easy easy Public

    "Easy" language compiler

    C 18