↓ 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 to read the story behind it.

9 things to try 44 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.

2026

BoulderTimer: a countdown clock for bouldering

A Raspberry Pi shows a fullscreen countdown on a TV, with beeps and a spoken warning, and you control it from a phone.

climbingpythonraspberry pi
2026

Watch Your Six: people tracking for LED totems

Several cameras and a pose-detection model turn people walking around an LED installation into OSC events that drive visuals in Resolume.

computer visionpythonyolo
2025

KABE: an interactive climbing wall

An interactive climbing wall: a camera finds the climbers with a pose-detection model, and a projector turns the wall into a game written in Lua.

climbingc++computer vision
2019

Timeotron 3000: a speed-climbing timer

A start/stop timer for speed climbing with a large LED matrix display.

climbingarduinoesp8266
2019

Backdoor: reception software for climbing gyms

Landing page for Backdoor, software that runs the front desk of a climbing gym locally: RFID at the gate and a real-time reception panel.

rfidreactlanding page
2016

Cinder

A look at the Cinder creative-coding library, which gave the climbing-wall project its name (in Polish).

2016

Processing

First steps in Processing for the climbing-wall project: setup(), draw() and the first sketches (in Polish).

computervisiondsp
2016

Cinder Climb

Games on a climbing wall: a Kinect depth camera finds the climbers and a projector draws Lua-scripted activities around them.

2016

Wybór technologii

Choosing the technology for Cinder Climb: Processing, Wiring and augmented reality on a wall (in Polish).

computervisiondsp
2016

Cinder climb

The start of Cinder Climb: catching points projected on a climbing wall, against the clock (in Polish).

computer visiondsp

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 ESP32 firmware that drive iDotMatrix LED pixel panels from a computer, 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 lets LabVIEW drive a CAEN FERS-5200 data-acquisition board through CAEN's open-source Janus software.

c++labviewdata acquisition
2021

A coin-operated liquid dispenser on a Raspberry Pi

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

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, with 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

comments-tool: finding Japanese comments in C/C++

A small Python script that collects the Japanese comments from a C/C++ code base into a JSON file, ready for translation.

pythonc++tools
2026

Dancing with Friends and Enemies: millions of dancers on the GPU

A swarm simulation on WebGPU where every dancer follows one friend and avoids one enemy, up to four million dancers in the browser.

webgpujavascriptsimulation
2026

AI_Devs 4: course solutions and the Dave agent

My solutions from the AI_Devs 4 course on building LLM applications, and Dave, an agent I wrote to solve the course's capture-the-flag tasks.

llmagentspython
2026

Siedzieje: finding local events with a pipeline of agents

A pipeline of agents that reads web pages, 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 that describes a song as blocks with their own tempo and time signature, played live or exported as a WAV click track.

web audiojavascriptmusic
2025

Personas Chat: talk to a local LLM as an uncle or an aunt

A web chat where a local language model answers in Polish in the voice of a persona such as an uncle or an aunt.

llmpythonvue
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 Python 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 when children inherit their parents' knowledge?

c++qtgenetic algorithms
2015

upmux: an MPEG-TS re-multiplexer

A C tool built on the Upipe framework that takes apart 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