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.
Things I build
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
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.
The language of Core War, one animation per instruction, and a debugger that shows every phase of every step, with breakpoints and time travel.
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.
Click and a paper lantern drifts away on a night river. No score, no timer, no goal. Just watch.
A metronome for real songs: blocks with their own tempo and time signature, a clickable timeline and WAV export. In Polish.
Any number, even your phone number, has a multiple written only with 1s and 0s. Type it in and get the proof.
Interactive diagrams for my assembly course: segment:offset, registers, flags, the stack, text attributes and VGA mode 13h. In Polish.
Reception software for climbing gyms: RFID at the gate, a real-time desk panel, everything running locally.
GPU and systems work from my day job, told without names: what was slow, what changed, and by how much.
Cameras, projectors and timers for climbing gyms and interactive spaces.
Several cameras, a pose-detection model and a state machine turn people walking around an installation into OSC events that drive LED visuals in Resolume.
2025A camera finds the climbers with a pose-detection model, and a projector turns the wall into a game written in Lua.
2019A start/stop timer for speed climbing with a large LED matrix display.
2019Landing page for Backdoor, offline-first operations software for climbing gyms: RFID at the gate, a real-time reception panel, everything running locally.
2016A look at the Cinder creative-coding library, which gave the climbing-wall project its name (in Polish).
2016First steps in Processing for the climbing-wall project: setup(), draw() and the first sketches (in Polish).
2016Games on a climbing wall: a Kinect depth camera finds the climbers and a projector draws Lua-scripted activities around them.
2016Choosing the technology for Cinder Climb: Processing, Wiring and augmented reality on a wall (in Polish).
2016The start of Cinder Climb: catching points projected on a climbing wall, against the clock (in Polish).
Playable games, prototypes and concepts.
A concept for a cozy management game in which the characters don't simply obey: an AI model interprets every order through the character's personality.
2026A minimalist countdown with a ticker of Polish news headlines. Press Space and the headlines become targets in a small arcade game: a shooter and an Arkanoid.
2026A meditative browser game: click to release paper lanterns onto a night river and watch them drift toward the horizon. No score, no timer, no goal.
2025A series of experiments with a River Raid-style shooter: how the 1982 original made its river, my try with wave function collapse, and a path-and-rules generator in Python and Godot.
2024A concept for a top-down action-adventure and survival game in a dark abyss: a design document, a story, concept art and a small Godot prototype.
2017A brute-force Python solver for peg solitaire on a triangular board, written to impress my daughter.
Microcontrollers, radios, frame grabbers and machines that pour liquids.
A Python library and Rust ESP32 firmware for driving iDotMatrix LED pixel panels without the phone app, also over Wi-Fi.
2024Five ESP32 boards that water the garden, watch the rain barrel and the greenhouse, and report to Home Assistant.
2024A Windows DLL that wraps CAEN's open-source Janus readout software, so LabVIEW can drive a CAEN FERS-5200 data-acquisition board.
2021Controller software for a self-service windscreen-fluid dispenser: coins and a card terminal, a flow meter, two pumps and a touchscreen kiosk.
2021A small C++ DLL that lets LabVIEW grab image sequences from a camera through a Matrox frame grabber.
2019A Raspberry Pi with a small screen that lets a MIDI keyboard play a Novation Circuit or a Korg Kaossilator without a computer.
2015An Arduino that receives and decodes the 433 MHz radio packets of an Auriol weather-station sensor.
2015An ATmega328 controller that replaced the limited PLC of a coin-operated liquid dispenser: coins, a flow meter, a pump and a 4-digit display.
2012Notes on building urJTAG with libftdi on Ubuntu and connecting to a JTAG interface (in Polish).
2011Taking control of the processor in an SC2105 board over JTAG with OpenOCD, urJTAG and an FT2232-based adapter.
Agents, pipelines, music tools, video and small experiments.
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.
2026A multi-agent system that reads websites, social media posts, posters and audio, and turns them into a structured calendar of local events.
2026A 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.
2022A tool for practising piano chords: it shows a random chord, listens to a MIDI keyboard and checks what you played.
2021A script that takes daily snapshots of whom the accounts I follow are following, and reports what changed.
2018Lua bindings for the Box2D physics engine, so games can be scripted in Lua with real physics.
2017A small genetic-algorithm experiment: what happens to a population if children inherit their parents' knowledge?
2015A 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.
2012Two small 2012 experiments with message queues: a threaded Redis consumer in C++ and a ZeroMQ request-reply link between C++ and Python.
A short overview of commercial projects. Details stay with the clients.
2026Rebuilding an internet provider's GPON operations tool: from a blocking Python 2 app to an async FastAPI and Vue 3 system with a cache, request deduplication and circuit breakers in front of the network hardware.