↓ Skip to main content

Things I build

Lab

Games, simulators and tools that run right in your browser, and below them every project I can show: climbing walls that see people, garden automation, radios, pipelines of AI agents, old experiments and new ones. Click a card to play, or read the story behind it.

8 things to try 38 projects since 2011

Try it in your browser

Game · simulator

Core War arena

Programs fight inside an 8000-cell memory. A full ICWS'94 simulator with seven classic warriors, a live view of their code and a tournament.

Teaching · debugger

Redcode debugger

The language of Core War, one animation per instruction, and a debugger that shows every phase of every step, with breakpoints and time travel.

Game

A kysz!

A joke page with a news ticker. Press Space and the headlines turn into enemies: a shooter and an Arkanoid, on the keyboard or a phone.

Performance engineering

GPU and systems work from my day job, told without names: what was slow, what changed, and by how much.

Climbing walls and installations

Cameras, projectors and timers for climbing gyms and interactive spaces.

Games and game design

Playable games, prototypes and concepts.

Hardware and embedded

Microcontrollers, radios, frame grabbers and machines that pour liquids.

2026

iDotMatrix client and ESP32 bridge

A Python library and Rust ESP32 firmware for driving iDotMatrix LED pixel panels without the phone app, also over Wi-Fi.

pythonrustesp32
2024

Garden of Eden: ESPHome garden automation

Five ESP32 boards that water the garden, watch the rain barrel and the greenhouse, and report to Home Assistant.

esp32esphomehome assistant
2024

lvJanus: a CAEN FERS readout board in LabVIEW

A Windows DLL that wraps CAEN's open-source Janus readout software, so LabVIEW can drive a CAEN FERS-5200 data-acquisition board.

c++labviewdata acquisition
2021

A coin-operated liquid dispenser on a Raspberry Pi

Controller software for a self-service windscreen-fluid dispenser: coins and a card terminal, a flow meter, two pumps and a touchscreen kiosk.

raspberry pipythonembedded
2021

milInterface: a Matrox frame grabber in LabVIEW

A small C++ DLL that lets LabVIEW grab image sequences from a camera through a Matrox frame grabber.

c++labviewimaging
2019

midiHost: a Raspberry Pi MIDI router

A Raspberry Pi with a small screen that lets a MIDI keyboard play a Novation Circuit or a Korg Kaossilator without a computer.

raspberry pimidipython
2015

Pogodynka: reading a wireless weather station

An Arduino that receives and decodes the 433 MHz radio packets of an Auriol weather-station sensor.

arduinoradioreverse engineering
2015

avr_flow: a new brain for a liquid vending machine

An ATmega328 controller that replaced the limited PLC of a coin-operated liquid dispenser: coins, a flow meter, a pump and a 4-digit display.

avrarduinoembedded
2012

urJTAG – uruchomienie pod ubuntu

Notes on building urJTAG with libftdi on Ubuntu and connecting to a JTAG interface (in Polish).

2011

JTAG in the SC2105, which means by stupidity I have more work to do

Taking control of the processor in an SC2105 board over JTAG with OpenOCD, urJTAG and an FT2232-based adapter.

AI, tools and experiments

Agents, pipelines, music tools, video and small experiments.

2026

AI_Devs 4: course solutions and the Dave agent

My work from the AI_Devs 4 course on building applications with LLMs, including an autonomous agent for the course's capture-the-flag tasks.

llmagentspython
2026

Siedzieje: finding local events with a pipeline of agents

A multi-agent system that reads websites, social media posts, posters and audio, and turns them into a structured calendar of local events.

llmgopython
2026

MetroBlocks: a block-based metronome

A browser metronome where a song is built from blocks with their own tempo and time signature, played live or exported as a WAV click track.

web audiojavascriptmusic
2022

Pchords

A tool for practising piano chords: it shows a random chord, listens to a MIDI keyboard and checks what you played.

2021

Following-of-following monitor

A script that takes daily snapshots of whom the accounts I follow are following, and reports what changed.

pythontwitter
2018

luaBox2D: Box2D physics for Lua

Lua bindings for the Box2D physics engine, so games can be scripted in Lua with real physics.

luac++physics
2017

Parents: can children inherit knowledge?

A small genetic-algorithm experiment: what happens to a population if children inherit their parents' knowledge?

c++qtgenetic algorithms
2015

upmux: an MPEG-TS re-multiplexer

A C tool built on the Upipe framework that demultiplexes broadcast MPEG transport streams, optionally re-encodes them, and muxes them again with correct clock timing.

cvideobroadcast
2012

Messaging experiments: Redis and ZeroMQ

Two small 2012 experiments with message queues: a threaded Redis consumer in C++ and a ZeroMQ request-reply link between C++ and Python.

c++zeromqredis

Teaching

Work for clients