Claude Meets MicroPython: Hands-On with the ViperIDE Extension

Claude can write MicroPython just fine. The annoying part is everything after that, getting the code onto a board, connecting to the REPL, figuring out why the pin numbers are wrong, iterating. I wanted Claude to be able to do all of that itself, talk directly to the hardware while I watch. ViperIDE is a browser-based IDE for MicroPython and CircuitPython by Volodymyr Shymanskyy. It connects to devices over USB, Bluetooth, or WiFi and gives you a file manager, editor, and REPL terminal. If you haven’t tried MicroPython before it’s one of the easier ways to get started. ...

April 22, 2026 · 4 min · Andrew Leech

Claude Code From Anywhere: Tailscale, Eternal Terminal, and a Phone

I’m writing this blog post on my Pixel 5, standing in the kitchen. Termux open, connected to my home server through three layers of infrastructure that make the whole thing feel like I’m sitting at my desk. The same Claude Code session I started on my workstation this morning is right here on a 6" screen, and I can type a prompt, put the phone down, come back in an hour, and nothing has dropped. ...

April 20, 2026 · 6 min · Andrew Leech

Triaging 1500 Open Issues: Local LLMs, Sonnet, and a GPU in the Closet

MicroPython has about 1500 open issues across its repos. Some of them have been there for years. A bunch are duplicates of each other, a bunch more are already fixed by PRs that got merged without anyone linking them back, and a pretty solid chunk are just noise (support questions, cross-posts, wrong-repo stuff). Nobody’s going to sit down and manually review 1500 issues against 8000+ PRs looking for connections though. ...

April 17, 2026 · 9 min · Andrew Leech

Five Hours, Five Root Causes, Crisis Averted: A Case Study in Agentic Embedded Debugging

A colleague had just reached a critical milestone, getting a stable LVGL-based UI running on our product’s 5" MIPI display. It was a significant piece of driver work: MicroPython application code on an NXP i.MX RT1176 (Cortex-M7 @ 1 GHz), driving LVGL v9 on a 720x1280 MIPI DSI touchscreen. An embedded system, not a phone or PC. The UI worked, but the on-screen keyboard was unusable. Each keypress took nearly 200ms to render, dropping to 1-2 FPS while typing, missing many keypresses entirely. For context, touchscreen input generally needs 30+ FPS (under 33ms per frame) to feel responsive, and 60+ FPS to feel smooth. We were at 5 FPS on a good frame. That performance is unusable for a client demo, let alone a shipping product, and without any obvious cause for the lag it wasn’t clear if we had a fundamental hardware/design failure or a fixable configuration issue. ...

April 13, 2026 · 16 min · Andrew Leech

Teaching Claude to Write Like Me (Not Like Claude)

I’ve been using Claude Code daily for months now. It writes most of my code, documentation, commit messages, PR descriptions. The code is great. The prose, not so much. Not because it’s bad writing, it’s perfectly competent. The problem is it sounds like AI. Every PR description comes out with “This PR implements…” and “Additionally…” and perfect parallel structure across all bullet points. It’s polished in a way that I’m not, and that’s exactly what makes it obvious. ...

April 9, 2026 · 7 min · Andrew Leech

Getting Qwen3-ASR into Handy, 114 experiments deep

Handy is a local voice-to-text desktop app by @cjpais that I’ve been contributing to for a few months. Push a key, speak, release, and whatever you said appears at the cursor. No cloud, no API key, no latency across the wire. The transcription is done by transcribe-rs, a Rust crate that wraps a handful of ASR engines (whisper, Parakeet, SenseVoice, Canary, openai) behind a unified interface. ...

April 5, 2026 · 22 min · Andrew Leech