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 to read the story behind it.
9 things to try 44 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.
A 13-chapter interactive lesson on tropical climates: a 3D globe, climate charts and simulations. In Polish.
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.
A Raspberry Pi shows a fullscreen countdown on a TV, with beeps and a spoken warning, and you control it from a phone.
2026Several cameras and a pose-detection model turn people walking around an LED installation into OSC events that drive visuals in Resolume.
2025An 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.
2019A start/stop timer for speed climbing with a large LED matrix display.
2019Landing page for Backdoor, software that runs the front desk of a climbing gym locally: RFID at the gate and a real-time reception panel.
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.
My TypeScript port of the 1984 platformer Bruce Lee, with 20 chambers, on a 320x176 canvas. Not playable on this site.
2026A concept for a cozy management game in which an AI model reads every order through the character's personality before the character decides what to do.
2026A joke countdown page with a ticker of Polish news headlines. Press Space and the headlines become targets in a shooter and an Arkanoid.
2026A browser game with nothing to win: click to release paper lanterns onto a night river and watch them drift toward the horizon.
2025Experiments with an endless, generated river for a River Raid-style shooter: how the 1982 original did it, my wave function collapse try, 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, with 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 ESP32 firmware that drive iDotMatrix LED pixel panels from a computer, 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 lets LabVIEW drive a CAEN FERS-5200 data-acquisition board through CAEN's open-source Janus software.
2021Controller software for a self-service windscreen-fluid dispenser with coins, a card terminal, a flow meter, two pumps and a touchscreen.
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, with 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.
A small Python script that collects the Japanese comments from a C/C++ code base into a JSON file, ready for translation.
2026A swarm simulation on WebGPU where every dancer follows one friend and avoids one enemy, up to four million dancers in the browser.
2026My 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.
2026A pipeline of agents that reads web pages, social media posts, posters and audio and turns them into a structured calendar of local events.
2026A browser metronome that describes a song as blocks with their own tempo and time signature, played live or exported as a WAV click track.
2025A web chat where a local language model answers in Polish in the voice of a persona such as an uncle or an aunt.
2022A tool for practising piano chords: it shows a random chord, listens to a MIDI keyboard and checks what you played.
2021A Python 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 when children inherit their parents' knowledge?
2015A 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.
2012Two small 2012 experiments with message queues: a threaded Redis consumer in C++ and a ZeroMQ request-reply link between C++ and Python.
A 13-chapter interactive geography lesson on tropical climates, with a 3D globe, climate charts and small simulations. In Polish, runs in the browser.
2013Three-day C++ courses I ran in Kraków in 2013 and 2014 on threads and synchronisation and on real-time programming on Linux.
A short list of the commercial software and firmware I built for companies. Details stay with the clients.
2026I rebuilt an internet provider's GPON operations tool from a blocking Python 2 app into an async FastAPI and Vue 3 system that protects the network hardware.