I've been building software for over 20 years. At this point, I'm not sure if I chose this career or it chose me while I was distracted debugging something.
I like making things that actually work. Code, furniture, electronics, welded contraptions β if it solves a problem and doesn't catch fire, I'm happy. Usually it doesn't catch fire.
Based in ΕΓ³dΕΊ, Poland π΅π± β yes, that's pronounced "Woodge." No, I can't explain why.
| Project | What it does | Why it exists |
|---|---|---|
| bimmerz-box | Bimmerz Suite ina Box | Plug it in connect via phone or tablet and enjoy |
| ediabasx | BMW diagnostic interface β TypeScript port π§ | The VM runs. Everything else is "coming soon." |
| ediabasx-embedded | BMW diagnostic interface β TypeScript port π§ | The VM runs. Everything else is "coming soon." |
| inpax | INPA scripting β cross-platform π§ | Not everyone likes Windows. Even in the garage. |
| ncsx | BMW NCS Expert in the browser | Factory coding tool ported to TypeScript β no installer, no Wine needed |
| nfsx | NFS / WinKFP + JMG Flasher + MS4x Flasher in one tool | Flash what you need on any platform you want |
| wdsx | BMW Wiring Diagram System β web port | The original Java applet stopped working. My car didn't stop needing repairs. |
| etkx | BMW Electronic Parts Catalogue β reverse engineered | Because PDF parts lists are for quitters |
| tunex | ECU firmware editor with TunerPro's XDF support in your browser | For a comlete flashing experience |
| xbusx | BMW I-Bus / K-Bus protocol + tools | Reference implementation for in-vehicle comms (E31βE87) |
| dashx | BMW CAN Dashboard | What you really need is just your phone (and BimmerzBox) |
| tisx | BMW TIS reimplementation | Workshop manuals without dusting off Windows XP |
| bimmerz-core | Shared workspace for the suite β Svelte components, theme tokens, loggers, utilities | Seven apps, one look. Copy-paste stopped scaling around app three. |
| ncsx-community-patches | Community coding patches for ncsx β FSW/PSW changes as small YAML files | Retrofits and tweaks someone already figured out, shared instead of rediscovered |
| ipo-community-patches | Community patches for INPA .IPO scripts β translations, labels, thresholds |
German-only diagnostics are a feature only for Germans |
| Project | What it does | Why it exists |
|---|---|---|
| ddtx | Renault / Dacia / Nissan ECU diagnostics in the browser β ddtx.emdzej.pl | A DDT4All port that reads a real vehicle over K-line. Turns out browser latency is noise next to an ECU. |
| dialogysx | Renault / Dacia parts catalogue and repair documentation β dialogysx.emdzej.pl | Dialogys 7.5.6, reverse engineered. 576,034 index keys, 0 failures, no backend. |
| eperx | Fiat, Lancia, Alfa Romeo, Abarth, Chrysler parts catalogue β eperx.emdzej.pl | ePER 8.3 without the Java installer. VIN in, exact factory build out. |
| masax | Mitsubishi After Sales parts catalogue β masax.emdzej.pl | 9,495,097 records decoded exactly and all 17,977 drawings de-obfuscated. The discs still work; the application doesn't. |
| mitsudocs | Mitsubishi service manual viewer + AI-powered indexing | Local vision models doing OCR on scanned wiring diagrams |
| Project | What it does | Why it exists |
|---|---|---|
| swsrs | Self-hostable WebSocket relay for peers behind NAT/firewalls + OIDC-protected admin plane | Because "just open a port" stops being funny behind CGNAT |
| npvm | Monorepo versioning CLI | Semantic versioning across 47 packages shouldn't require a PhD |
| stm | Serial Terminal & Monitor on the web | My way, anywhere |
| bass | Self hosted service + library for synchronising backendless web apps | Not every app needs backend, and I like switching devices |
| avrdudeui | UI for avrdude CLI | Because AVRDUDESS was not updated in a while |
| bleach | macOS cleanup that explains itself β bleach.emdzej.pl | 128 GB of ~/Library belonged to apps I uninstalled years ago. Nothing on disk says which. |
| airlock | Raspberry Pi network card-reader appliance β SMB, web UI, and a macOS menubar companion | Someone else's thumb drive plugs into a $50 Pi mounted noexec, not into the machine you actually work on |
| spinup | Cloud-functions platform for Spin WebAssembly components on Kubernetes β spinup.emdzej.pl | Write Go / Rust / TS in the browser, hit Build & Deploy, get an HTTP endpoint. Lambda without the vendor. |
| gasm | Portable games on WebAssembly: one .wasm, native and browser runners, WebGPU, lockstep netplay. gasm.emdzej.pl |
A NES emulator and a 3D sumo game run bit-identically on a Mac, in a browser and on Windows. Write the game once, port the runner instead. |
| notesmyway | Apple Notes on the outside, a folder of Markdown on the inside β Mac, iPhone, iPad β notesmyway.emdzej.pl | My notes should outlive the app I write them in |
| visextract | Unpacks MindVision Installer VISE archives β no installer, no Wine, every file CRC-checked | The game was on the CD. Inside an installer nothing else could open. |
| kcctl | Keycloak admin CLI in one binary β names instead of UUIDs, browser sign-in, live completion, Keycloak 26.6.3+ | kcadm needs a JVM and a 166 MB download, and my admin account has no password to give it |
| beigebox | A 1996 PC on a desk in the browser β v86 on the monitor's glass, floppies from the box, hard drives from the drawer β beigebox.emdzej.pl | A browser emulator should have a power button you can actually press |
| opencluster | Open-source car instrument cluster on ESP32 and LVGL β skinnable gauges, CAN native | The cluster is just a screen that reads CAN. So is a $10 ESP32. |
| anycard | iOS app for adding any loyalty card to Apple Wallet | My wallet was thicker than my phone |
| Project | What it does | Why it exists |
|---|---|---|
| openrf | Return Fire (1996) reimplemented natively from the original executable β openrf.emdzej.pl | The CD still reads. Windows 95 doesn't. Bring the disc; the game, its movies and the orchestral score come from it. |
| openballance | Ballance (2004): the original Virtools scripts on a new runtime, with a port of its Ipion physics engine β openballance.emdzej.pl | The game is the ball's feel, so the physics engine was read out of physics_RT.dll instead of guessed. Bring the CD; it runs in a browser too. |
| opengta | Grand Theft Auto (1997) reimplemented from the original Windows executable β opengta.emdzej.pl | Point it at the unzipped 2002 installer; it doesn't even need to run. 23.33 frames a second, because that's what the sound timer says. |
| opensheep | Sheep (2000) reimplemented from the original Windows executable β opensheep.emdzej.pl | You don't lead the flock, you stand in the right place. DirectDraw, on the other hand, just stopped standing. |
| openbv | Babo Violent 2 on gasm β the original GPL source, native and in the browser β openbv.emdzej.pl | Little balls with guns. The source was published in 2012; it deserved a runtime that still exists. |
| opennfspu | Need for Speed: Porsche Unleashed (2000) reimplemented in C11 for gasm π§ | Single player is back from the menus through the races. Bring your own copy. |
| opencmr2 | Colin McRae Rally 2.0 (2000) reimplemented from CMR2.exe for gasm π§ β opencmr2.emdzej.pl |
Every asset on the disc decodes. Driving comes later. |
| openoni | Oni (2001) reimplemented for gasm π§ | Early days: the files are off the CD, the engine is next |
| nowhereinparticular-releases | Nowhere in Particular β a calm exploration game in real places built from real-world data β nowhereinparticular.emdzej.pl | Not every game needs a goal. Some need a lake in GΕowno on a sunny afternoon. |
| Project | What it does | Why it exists |
|---|---|---|
| microagent | Minimal AI agent with tools + MCP in ~1500 LOC | Reference implementation for "how do agents actually work?" |
| microagent-rust | microagent in Rust β same loop, tools and MCP client, interoperable | Same agent, very different constraints |
| ragclaw | Local-first RAG engine with SQLite vector search | Because sometimes you want AI to know things without sending your secrets to the cloud |
| acc | Agents Control Centre β watch, organise and interact with your coding-agent sessions β acc.emdzej.pl | Six terminals of Claude Code and Codex, and one of them has been waiting for me for twenty minutes |
| Project | What it does | Why it exists |
|---|---|---|
| keycloak-api-keys | API key management for Keycloak | OAuth2 is great until your IoT toaster needs to authenticate |
| config | Runtime config service for SPAs (build once, run everywhere) | Env/secretβdriven config without rebuilds |
| itw-decoder | BMW ITW image format decoder | Because things should be accessible and live forever |
| j2534 | TypeScript SAE J2534 PassThru API (Node + WebUSB) π§ | Cross-platform replacement for Windows-only DLLs |
| csfs | One read API over anything a browser can reach: static HTTP, a picked folder, OPFS β or a zip inside any of them β csfs.emdzej.pl | Reading part of a remote file is what makes 15 GB of catalogue data usable at all |
| elmo | Schematics as code β a text DSL that renders circuits as SVG β elmo.emdzej.pl | Mermaid and PlantUML for electronics. ~45 symbols, markdown-it / remark / CLI / browser. |
| markdownkit | Native Markdown editor for macOS and iOS on TextKit 2 β blend editing, tables with formulas | The editor behind Notes my Way, as a Swift package |
| vitepress-plugin-markdownformula | Excel-like formulas in VitePress markdown tables, evaluated at build time | Totals that add up without a spreadsheet next to the docs |
| wasm-plugins-examples | Untrusted image-filter plugins sandboxed in WebAssembly, hosted by Svelte β demo | Plugins you can run without trusting whoever wrote them |
| Project | What it does | Why it exists |
|---|---|---|
| apple-container-guide | Migrating from Docker Desktop to Apple's container runtime β scripts and measured behaviour | README claims are not measurements |
| ediabasx-docs | EdiabasX documentation | The VM runs; now it has a manual |
| ediabasx-docs-sgbd | SGBD reference β 2,400+ files | Somebody had to read them all |
- π§ I fix things. Cars, appliances, furniture, pride after failed deployments.
- π οΈ I build things in the physical world too. Wood, metal, electronics β whatever gets the job done.
The Right to Repair movement advocates for consumers' ability to fix the products they own β from electronics to vehicles β without being locked out by manufacturers through proprietary tools, paywalled documentation, or artificial restrictions.
I build these tools because I believe repair is a fundamental right, not a privilege.
Too often, service manuals, diagnostic software, and technical documentation are kept behind closed doors β unavailable to individuals even when they're willing to pay. This wasn't always the case. Products once shipped with schematics and repair guides as standard. The increasing complexity of modern technology doesn't change the fact that capable people exist who can β and should be allowed to β use that information.
These projects exist to preserve access to technical knowledge and ensure that owners aren't left at the mercy of vendors who may discontinue support, charge prohibitive fees, or simply refuse service.
- π emdzej.pl
- π¬ Discord
- π§ michal@jaskolski.pro
If you find my work useful, consider buying me a coffee β or sponsoring on GitHub or if it's your thing: via PayPal




