---
title: "Side Effects"
description: "Marcin Klimek writes C++ and CUDA for computed tomography and teaches computer architecture."
url: https://klimek.link/
author: "Marcin Klimek"
source: https://klimek.link/
---

# Side Effects

Marcin Klimek writes C++ and CUDA for computed tomography and teaches computer architecture.

An index of the site for language models: https://klimek.link/llms.txt

- [Unordered erase](https://klimek.link/posts/unordered-erase/) · 2026-10-16
- [Lab](https://klimek.link/lab/) · 2026-10-16 · Games, simulators and tools you can use right in the browser, and every project behind them.
- [/projects/atch-your-six/](https://klimek.link/projects/atch-your-six/) · 2026-10-01
- [Bruce Lee: a browser port of a 1984 platformer](https://klimek.link/projects/bruce-lee/) · 2026-10-01 · My TypeScript port of the 1984 platformer Bruce Lee, with 20 chambers, on a 320x176 canvas. Not playable on this site.
- [Tropical climate zone: an interactive geography lesson](https://klimek.link/projects/strefa-zwrotnikowa/) · 2026-10-01 · A 13-chapter interactive geography lesson on tropical climates, with a 3D globe, climate charts and small simulations. In Polish, runs in the browser.
- [comments-tool: finding Japanese comments in C/C++](https://klimek.link/projects/comments-tool/) · 2026-10-01 · A small Python script that collects the Japanese comments from a C/C++ code base into a JSON file, ready for translation.
- [Redcode, instruction by instruction](https://klimek.link/posts/redcode/) · 2026-10-01 · Redcode, the language of Core War, with every addressing mode, modifier and opcode as an animation you can step through, and a debugger for your own warriors.
- [Game development](https://klimek.link/game-development/) · 2026-10-01 · Ten console and PC games I worked on at X-Ray Interactive and Tate Interactive in Kraków, including the Kao the Kangaroo series, with credits, publishers and producers.
- [Core War: programs that fight inside memory](https://klimek.link/posts/core-war/) · 2026-10-01 · A Core War arena in the browser where classic Redcode warriors fight in an 8000-cell core, with a live view of their code and a tournament mode.
- [Every number has a multiple made of 0s and 1s](https://klimek.link/posts/binary-multiples/) · 2026-09-30 · Pick any number, such as your phone number, and find a second number that multiplies it into a number written only with the digits 1 and 0.
- [Work for clients](https://klimek.link/projects/client-work/) · 2026-09-28 · A short list of the commercial software and firmware I built for companies. Details stay with the clients.
- [Dancing with Friends and Enemies: millions of dancers on the GPU](https://klimek.link/projects/dancing-with-friends/) · 2026-08-12 · A swarm simulation on WebGPU where every dancer follows one friend and avoids one enemy, up to four million dancers in the browser.
- [Casa de Lgin: a game concept](https://klimek.link/projects/casa-de-lgin/) · 2026-07-26 · A 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.
- [A kysz! A joke page that turns into a game](https://klimek.link/projects/a-kysz/) · 2026-06-06 · A joke countdown page with a ticker of Polish news headlines. Press Space and the headlines become targets in a shooter and an Arkanoid.
- [iDotMatrix client and ESP32 bridge](https://klimek.link/projects/idotmatrix/) · 2026-05-19 · A Python library and ESP32 firmware that drive iDotMatrix LED pixel panels from a computer, also over Wi-Fi.
- [Search](https://klimek.link/search/) · 2026-05-05
- [Posts](https://klimek.link/archives/) · 2026-05-05
- [BoulderTimer: a countdown clock for bouldering](https://klimek.link/projects/bouldertimer/) · 2026-04-24 · A Raspberry Pi shows a fullscreen countdown on a TV, with beeps and a spoken warning, and you control it from a phone.
- [Watch Your Six: people tracking for LED totems](https://klimek.link/projects/watch-your-six/) · 2026-04-22 · Several cameras and a pose-detection model turn people walking around an LED installation into OSC events that drive visuals in Resolume.
- [AI_Devs 4: course solutions and the Dave agent](https://klimek.link/projects/aidevs4/) · 2026-03-11 · 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.
- [A new control panel for a fiber network](https://klimek.link/projects/gpon-monitoring/) · 2026-02-03 · I 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.
- [Siedzieje: finding local events with a pipeline of agents](https://klimek.link/projects/siedzieje/) · 2026-01-31 · A pipeline of agents that reads web pages, social media posts, posters and audio and turns them into a structured calendar of local events.
- [MetroBlocks: a block-based metronome](https://klimek.link/projects/metroblocks/) · 2026-01-26 · 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.
- [Lantern River: a game with nothing to win](https://klimek.link/projects/lantern-river/) · 2026-01-14 · A browser game with nothing to win: click to release paper lanterns onto a night river and watch them drift toward the horizon.
- [KABE: an interactive climbing wall](https://klimek.link/projects/kabe/) · 2025-12-30 · 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.
- [Faster CT reconstruction: GPU performance engineering](https://klimek.link/projects/ct-reconstruction/) · 2025-12-23 · Performance work on an industrial X-ray CT reconstruction engine: more than 2× faster end to end, up to 99.8% less data sent to the GPU, huge volumes now routine, and output unchanged bit for bit.
- [/posts/pervices---crimson/](https://klimek.link/posts/pervices---crimson/) · 2025-12-03
- [Collected Notes](https://klimek.link/posts/collected_notes/) · 2025-12-03
- [A Small Trick That Turns O(n) Vector Erase Into O(1)](https://klimek.link/posts/a-small-trick-that-turns-o_n-vector-erase-into-o_1/) · 2025-12-03
- [EnumArray - A Practical Mapping Trick Without Paying Hash-Map Tax](https://klimek.link/posts/enumarray/) · 2025-12-01
- [Skrypt](https://klimek.link/student/2025-arch/skrypt/) · 2025-11-02
- [Organizacja zajęć](https://klimek.link/student/2025-arch/organizacja-zaj%C4%99%C4%87/) · 2025-11-02
- [BLOK 2: Pętle, tablice i łańcuchy](https://klimek.link/student/2025-arch/blok2_skrypt/) · 2025-11-01
- [BLOK 1 - Podstawy I/O i operacje na danych](https://klimek.link/student/2025-arch/blok1_skrypt/) · 2025-11-01
- [River Raid: many attempts at an endless river](https://klimek.link/projects/river-raid/) · 2025-05-13 · Experiments 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.
- [Personas Chat: talk to a local LLM as an uncle or an aunt](https://klimek.link/projects/personas-chat/) · 2025-04-17 · A web chat where a local language model answers in Polish in the voice of a persona such as an uncle or an aunt.
- [Troubleshooting GoogleTest Linking Issues in Mixed C++/C# Projects](https://klimek.link/posts/troubleshooting-googletest-issues-in-mixed-projects/) · 2025-03-20
- [Structured Exception Handling (SEH)](https://klimek.link/posts/structured-exception-handling-seh/) · 2025-03-19
- [The Catch2 adapter for Visual Studio](https://klimek.link/posts/test-discovery---catch2-adapter-for-visual-studio/) · 2025-02-26
- [How many hours a day can you write code](https://klimek.link/posts/how-many-hours-you-can-work/) · 2025-02-19
- [Pisanie jako inżynier oprogramowania](https://klimek.link/posts/2025-02-05-pisanie/) · 2025-02-05
- [Garden of Eden: ESPHome garden automation](https://klimek.link/projects/garden-automation/) · 2024-10-14 · Five ESP32 boards that water the garden, watch the rain barrel and the greenhouse, and report to Home Assistant.
- [lvJanus: a CAEN FERS readout board in LabVIEW](https://klimek.link/projects/lv-janus/) · 2024-06-14 · A Windows DLL that lets LabVIEW drive a CAEN FERS-5200 data-acquisition board through CAEN's open-source Janus software.
- [Understanding Spectre: A Explainer on the Speculative Execution Vulnerability](https://klimek.link/posts/2024-03-25-how-does-spectre-work/) · 2024-03-25
- [The First Microcomputer](https://klimek.link/posts/2024-02-26-the-first-microcomputer/) · 2024-02-26
- [Correct Decimal to Floating Point Using Big Integers](https://klimek.link/posts/2024-02-26-correct-decimal-to-floating-point-using-big-integers/) · 2024-02-26
- [Water Surface Shader for 2D Pixel Art Games](https://klimek.link/posts/2024-02-26-water-surface-shader-for-2d-pixel-art-games/) · 2024-02-26
- [Gaussian Elimination](https://klimek.link/posts/2024-02-26-gaussian-elimination/) · 2024-02-26
- [Delta-Void: a game design document](https://klimek.link/projects/delta-void/) · 2024-02-07 · A 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.
- [Flowblade an Opensource Video Editing Tool](https://klimek.link/posts/2024-01-17-flowblade-an-opensource-video-editing-tool/) · 2024-01-17
- [Systemy Operacyjne - Lab06](https://klimek.link/student/2024-so/so-lab-06/) · 2024-01-10
- [Links](https://klimek.link/links/) · 2024-01-01
- [A Batch for a New Post in Hugo](https://klimek.link/posts/a-batch-for-a-new-post-in-hugo/) · 2023-11-29
- [Systemy Operacyjne - Lab05](https://klimek.link/student/2024-so/so-lab-05/) · 2023-11-28
- [Systemy Operacyjne - Lab04](https://klimek.link/student/2024-so/so-lab-04/) · 2023-11-28
- [Systemy Operacyjne - Lab03](https://klimek.link/student/2024-so/so-lab-03/) · 2023-11-28
- [Systemy Operacyjne - Pomoc](https://klimek.link/student/2024-so/so-lab-help/) · 2023-11-19
- [Systemy Operacyjne - Lab02](https://klimek.link/student/2024-so/so-lab-02/) · 2023-11-18
- [Systemy Operacyjne - Lab01](https://klimek.link/student/2024-so/so-lab-01/) · 2023-11-18
- [Systemy Operacyjne - Krótki wstęp](https://klimek.link/student/2024-so/so-lab-intro/) · 2023-11-18
- [RDP Windows 11 with Microsoft Account MFA](https://klimek.link/posts/2023-07-12-rdp_windows_11_with_microsoft_account_mfa/) · 2023-07-12
- [Software Performance](https://klimek.link/posts/2023-05-28-software-performance/) · 2023-05-28
- [Architektura komputerów - Lab](https://klimek.link/student/2023-arch/architektura-komp-lab/) · 2023-05-28
- [Test](https://klimek.link/student/2023-arch/2023-05-27-test-studenci/) · 2023-04-25
- [Zadania](https://klimek.link/student/2023-arch/2023-05-27-lab_sobota_niedziela_28/) · 2023-04-25
- [About](https://klimek.link/about/) · 2023-03-28 · Who am I? This question bothers me at times.
- [Workout Timer with a phone remote](https://klimek.link/projects/workout-timer/) · 2023-03-04 · A round timer for workouts with sound cues and a built-in web server, so it can be started from a phone.
- [Pchords](https://klimek.link/projects/pchord/) · 2022-05-08 · A tool for practising piano chords: it shows a random chord, listens to a MIDI keyboard and checks what you played.
- [Following-of-following monitor](https://klimek.link/projects/twitter-follow-diff/) · 2021-12-31 · A Python script that takes daily snapshots of whom the accounts I follow are following, and reports what changed.
- [Cinder Climb](https://klimek.link/cinder-climb-2/) · 2021-11-15
- [A coin-operated liquid dispenser on a Raspberry Pi](https://klimek.link/projects/vending-dispenser/) · 2021-08-26 · Controller software for a self-service windscreen-fluid dispenser with coins, a card terminal, a flow meter, two pumps and a touchscreen.
- [milInterface: a Matrox frame grabber in LabVIEW](https://klimek.link/projects/milinterface/) · 2021-05-24 · A small C++ DLL that lets LabVIEW grab image sequences from a camera through a Matrox frame grabber.
- [Music recommendations. Nils Frahm and others](https://klimek.link/music/) · 2019-12-13
- [midiHost: a Raspberry Pi MIDI router](https://klimek.link/projects/midihost/) · 2019-09-09 · A Raspberry Pi with a small screen that lets a MIDI keyboard play a Novation Circuit or a Korg Kaossilator without a computer.
- [Markdown Syntax Guide](https://klimek.link/posts/2023-01-31-markdown-syntax/) · 2019-03-11 · Sample article showcasing basic Markdown syntax and formatting for HTML elements.
- [Contact](https://klimek.link/contact/) · 2019-02-28 · Contact
- [Timeotron 3000: a speed-climbing timer](https://klimek.link/projects/timeotron3000/) · 2019-02-24 · A start/stop timer for speed climbing with a large LED matrix display.
- [Backdoor: reception software for climbing gyms](https://klimek.link/projects/backdoor/) · 2019-02-24 · 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.
- [Privacy Policy](https://klimek.link/privacy/) · 2018-05-24
- [luaBox2D: Box2D physics for Lua](https://klimek.link/projects/luabox2d/) · 2018-04-05 · Lua bindings for the Box2D physics engine, so games can be scripted in Lua with real physics.
- [Parents: can children inherit knowledge?](https://klimek.link/projects/parents/) · 2017-04-21 · A small genetic-algorithm experiment: what happens to a population when children inherit their parents' knowledge?
- [Peg solitaire solver](https://klimek.link/projects/peg-solitaire/) · 2017-04-08 · A brute-force Python solver for peg solitaire on a triangular board, written to impress my daughter.
- [Cinder](https://klimek.link/cinder/) · 2016-03-24 · A look at the Cinder creative-coding library, which gave the climbing-wall project its name (in Polish).
- [Processing](https://klimek.link/processing/) · 2016-03-17 · First steps in Processing for the climbing-wall project: setup(), draw() and the first sketches (in Polish).
- [Cinder Climb](https://klimek.link/projects/cc/) · 2016-03-11 · Games on a climbing wall: a Kinect depth camera finds the climbers and a projector draws Lua-scripted activities around them.
- [Wybór technologii](https://klimek.link/wybor-technologii/) · 2016-03-10 · Choosing the technology for Cinder Climb: Processing, Wiring and augmented reality on a wall (in Polish).
- [Cinder climb](https://klimek.link/cinder-climb/) · 2016-03-06 · The start of Cinder Climb: catching points projected on a climbing wall, against the clock (in Polish).
- [upmux: an MPEG-TS re-multiplexer](https://klimek.link/projects/upmux/) · 2015-05-08 · 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.
- [Pogodynka: reading a wireless weather station](https://klimek.link/projects/pogodynka/) · 2015-03-01 · An Arduino that receives and decodes the 433 MHz radio packets of an Auriol weather-station sensor.
- [avr_flow: a new brain for a liquid vending machine](https://klimek.link/projects/avr-flow/) · 2015-03-01 · 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.
- [Dobry zbiór informacji z okolic demosceny](https://klimek.link/dobry-zbior-informacji-z-okolic-demosceny/) · 2014-01-08
- [C++ concurrency and real-time Linux training](https://klimek.link/projects/cpp-concurrency-training/) · 2013-11-26 · Three-day C++ courses I ran in Kraków in 2013 and 2014 on threads and synchronisation and on real-time programming on Linux.
- [std::async pod ubuntu](https://klimek.link/stdasync-pod-ubuntu/) · 2012-08-23
- [Messaging experiments: Redis and ZeroMQ](https://klimek.link/projects/zeromq-redis-2012/) · 2012-07-13 · Two small 2012 experiments with message queues: a threaded Redis consumer in C++ and a ZeroMQ request-reply link between C++ and Python.
- [urJTAG – uruchomienie pod ubuntu](https://klimek.link/urjtag-uruchomienie-pod-ubuntu/) · 2012-05-21 · Notes on building urJTAG with libftdi on Ubuntu and connecting to a JTAG interface (in Polish).
- [nvidia cuda](https://klimek.link/nvidia-cuda/) · 2011-10-28
- [JTAG in the SC2105, which means by stupidity I have more work to do](https://klimek.link/projects/2011-09-30-jtag-w-sc2105/) · 2011-09-29 · Taking control of the processor in an SC2105 board over JTAG with OpenOCD, urJTAG and an FT2232-based adapter.

Source: https://klimek.link/
