[{"data":1,"prerenderedAt":170},["ShallowReactive",2],{"navigation":3,"workbench-page":46,"workbench-entries":60},[4],{"title":5,"path":6,"stem":7,"children":8,"page":45},"Blog","/blog","blog",[9,13,17,21,25,29,33,37,41],{"title":10,"path":11,"stem":12},"Automating Google Docs with Claude Code: Build a CLI That Pulls, Edits, and Pushes","/blog/automating-google-docs-with-claude-code","blog/automating-google-docs-with-claude-code",{"title":14,"path":15,"stem":16},"Building a Garmin Connect IQ App in Monkey C: Lessons from a BLE Remote Control","/blog/building-a-garmin-connect-iq-app-in-monkey-c","blog/building-a-garmin-connect-iq-app-in-monkey-c",{"title":18,"path":19,"stem":20},"Building a YouTube Video Research Pipeline with Whisper and Claude","/blog/building-a-youtube-video-research-pipeline-with-whisper-and-claude","blog/building-a-youtube-video-research-pipeline-with-whisper-and-claude",{"title":22,"path":23,"stem":24},"The very first attempt to implement 4DX in Bravelab.io","/blog/implementing-4dx-in-bravelab","blog/implementing-4dx-in-bravelab",{"title":26,"path":27,"stem":28},"Learning Embedded Rust: A C/Python Developer's Rosetta Stone","/blog/learning-embedded-rust-rosetta-stone","blog/learning-embedded-rust-rosetta-stone",{"title":30,"path":31,"stem":32},"Mirroring a Wearable OLED Display to a Projector for Live Demos","/blog/mirroring-a-wearable-oled-display-to-a-projector-for-live-demos","blog/mirroring-a-wearable-oled-display-to-a-projector-for-live-demos",{"title":34,"path":35,"stem":36},"NFC Tag Emulation on nRF52840 with Rust — No SDK Required","/blog/nfc-tag-emulation-nrf52840-rust-embassy","blog/nfc-tag-emulation-nrf52840-rust-embassy",{"title":38,"path":39,"stem":40},"A quick introduction to profit sharing implementation","/blog/profit-sharing-implementation","blog/profit-sharing-implementation",{"title":42,"path":43,"stem":44},"Smart Home on a Budget: BLE Window Sensors with Two Pico Ws and MicroPython","/blog/smart-home-pico-w-ble-window-sensor-micropython","blog/smart-home-pico-w-ble-window-sensor-micropython",false,{"id":47,"title":48,"body":49,"description":50,"extension":52,"links":53,"meta":54,"navigation":55,"path":56,"seo":57,"stem":58,"__hash__":59},"pages/workbench.yml","Workbench",{"title":48,"description":50,"links":51},"Everything I build and write, in one place. Projects I run or ran, and the notes I write while building, so the next person ships faster.",[],"yml",[],{},true,"/workbench",{"title":48,"description":50},"workbench","VlDQeRiMN3gKzLFiMdKUdtW_AfTuvMMyBLajYjm9KaM",[61,67,72,75,79,84,88,91,100,106,113,119,125,131,137,141,146,152,158,164],{"kind":62,"category":62,"title":18,"description":63,"image":64,"date":65,"to":19,"label":66},"article","How I built a CLI tool that downloads YouTube videos, transcribes them with Whisper, and generates structured market intelligence using Claude — all with one command.","/images/stock/1611162616475-46b635cb6868.webp","2026-02-19T00:00:00.000Z","10 min read",{"kind":62,"category":62,"title":10,"description":68,"image":69,"date":70,"to":11,"label":71},"How I built a Python CLI tool that lets Claude Code read and write Google Docs directly — editing DOCX files programmatically, fixing typos, styling tables, and reading comments, all from the terminal.","/images/stock/1555066931-4365d14bab8c.webp","2026-02-18T00:00:00.000Z","8 min read",{"kind":62,"category":62,"title":14,"description":73,"image":74,"date":70,"to":15,"label":66},"What I learned building a Garmin watch app that controls a swim metronome over BLE — from GATT command queues to manual ASCII parsing in a language with no regex.","/images/stock/1523475496153-3d6cc0f0bf19.webp",{"kind":62,"category":62,"title":42,"description":76,"image":77,"date":70,"to":43,"label":78},"How I built a wireless window monitoring system using two Raspberry Pi Pico Ws, reed switches, and BLE — with async MicroPython, aioble, and zero cloud dependencies.","/images/stock/1629654297299-c8506221ca97.webp","9 min read",{"kind":62,"category":62,"title":30,"description":80,"image":81,"date":82,"to":31,"label":83},"How to stream a tiny OLED screen from an embedded device to a laptop and projector in real-time using UART and Python. A practical guide for hardware demos and presentations.","/images/stock/1535016120720-40c646be5580.webp","2026-02-17T00:00:00.000Z","12 min read",{"kind":62,"category":62,"title":26,"description":85,"image":86,"date":87,"to":27,"label":83},"A practical guide for C and Python developers transitioning to embedded Rust. Side-by-side comparisons of ownership, error handling, pattern matching, and more — mapped to concepts you already know.","/images/stock/1518773553398-650c184e0bb3.webp","2026-02-15T00:00:00.000Z",{"kind":62,"category":62,"title":34,"description":89,"image":90,"date":87,"to":35,"label":66},"How to turn a bare nRF52840 into an NFC Type 2 Tag using only PAC registers and Embassy async, running alongside BLE SoftDevice. A practical walkthrough with full code.","/images/stock/1611663806011-b37e091090f0.webp",{"kind":92,"category":93,"title":94,"description":95,"image":96,"date":97,"to":98,"label":99},"project","past-life","SmartFeed Media","AI-curated newsletters for the music industry. The platform reads trade news every day, scores each article against what a team cares about, and sends a short newsletter with summaries of the top stories. Built at MusicTech Lab for a Polish collective rights organisation.","/images/stock/1432888622747-4eb9a8efeb07.webp","2024-07-12T00:00:00.000Z","/projects/smartfeed-media","Archive",{"kind":92,"category":93,"title":101,"description":102,"image":103,"date":104,"to":105,"label":99},"Spotify PedalBoard","Open source GUI for real-time audio effects, built on Spotify's Pedalboard library. Written in Python and published by MusicTech Lab.","/images/stock/1598488035139-bdbb2231ce04.webp","2024-06-30T00:00:00.000Z","/projects/spotify-pedalboard",{"kind":92,"category":92,"title":107,"description":108,"image":109,"date":110,"to":111,"label":112},"MusicTech Poland","MusicTech Poland is an initiative emerging in response to the rapidly blurring boundaries between the music sector and the new technology industry. The primary goal of MusicTech Poland is to build a community integrating those interested in the development and exploration of the MusicTech sector. We bring together musicians, developers, entrepreneurs, and innovators to shape the future of music technology in Poland.","/images/stock/1511671782779-c97d3d27a1d4.webp","2024-04-01T00:00:00.000Z","/projects/musictech-poland","Now",{"kind":92,"category":92,"title":114,"description":115,"image":116,"date":117,"to":118,"label":112},"Vimo Swim","Programmable swim metronome that sits under the swim cap, plus free apps for swimmers and coaches. Formerly BeatBuddy. I founded it and lead the engineering. Now in a testing program with Total Immersion coaches in Poland and Spain.","/images/projects/vimo-swim/beta-batch-poolside.webp","2023-10-01T00:00:00.000Z","/projects/vimo-swim",{"kind":92,"category":92,"title":120,"description":121,"image":122,"date":123,"to":124,"label":112},"MusicTech Lab","Software company for the music industry that I founded in 2023. The team builds tools such as royalty analytics and AI content platforms, and publishes open source music metadata tools.","/images/stock/1511379938547-c1f69419868d.webp","2023-01-15T00:00:00.000Z","/projects/musictech-lab",{"kind":92,"category":92,"title":126,"description":127,"image":128,"date":129,"to":130,"label":112},"Total Immersion Cracow","Freestyle swimming courses in Kraków using the Total Immersion method. I coach there, and it is where my sport products meet real swimmers first.","/images/landing/total-immersion-cracow.webp","2022-06-15T00:00:00.000Z","/projects/total-immersion-cracow",{"kind":92,"category":93,"title":132,"description":133,"image":134,"date":135,"to":136,"label":99},"Closer Music","Music streaming and discovery platform designed to connect artists with fans. A web application focused on building closer relationships between musicians and their audience through personalized content and direct engagement features.","/images/stock/1514320291840-2e0a9bf2a9ae.webp","2021-05-15T00:00:00.000Z","/projects/closer-music",{"kind":62,"category":93,"title":22,"description":138,"image":139,"date":140,"to":23,"label":71},"A real-life example of implementing the Four Disciplines of Execution framework in a software development company. Learn what worked, what didn't, and how to get started with 4DX.","/images/stock/1552664730-d307ca884978.webp","2021-04-20T00:00:00.000Z",{"kind":62,"category":93,"title":38,"description":142,"image":143,"date":144,"to":39,"label":145},"My company does not offer any employee benefits. Learn how we implemented a simple profit sharing system and whether it's worth considering for your organization.","/images/stock/1554224155-8d04cb21cd6c.webp","2021-04-09T00:00:00.000Z","5 min read",{"kind":92,"category":93,"title":147,"description":148,"image":149,"date":150,"to":151,"label":99},"Wundr","Travel discovery platform that helps users find unique experiences and hidden gems. MVP built for non-tech founders, featuring curated recommendations, personalized itineraries, and a community-driven approach to travel exploration.","/images/stock/1469854523086-cc02fe5d8800.webp","2021-02-10T00:00:00.000Z","/projects/wundr",{"kind":92,"category":93,"title":153,"description":154,"image":155,"date":156,"to":157,"label":99},"Memosonic App","Mobile application that combines music with memory and learning. An innovative approach to audio-based education and recall, using sound patterns to enhance memory retention and create engaging learning experiences.","/images/stock/1574517947730-55cb23e608c2.webp","2018-08-20T00:00:00.000Z","/projects/memosonic-app",{"kind":92,"category":93,"title":159,"description":160,"image":161,"date":162,"to":163,"label":99},"Gcloud pubsub example","Example of event-driven audio analysis on Google Cloud Run with Pub/Sub. Open source Python code on my GitHub.","/images/stock/1451187580459-43490279c0fa.webp","2018-04-10T00:00:00.000Z","/projects/gcloud-pubsub-example",{"kind":92,"category":93,"title":165,"description":166,"image":167,"date":168,"to":169,"label":99},"Arduino and midi Ableton","Arduino MIDI controller with two buttons for Ableton Live. Open source C++ code on my GitHub.","/images/stock/1563330232-57114bb0823c.webp","2016-09-12T00:00:00.000Z","/projects/arduino-midi-ableton",1793026958428]