Blog
Setting up one-click build and flash for STM32F446 bare-metal development with CMake and CLion on Arch Linux.
Understanding ARM CMSIS: Memory-Mapped Hardware
How I learned to work with ARM CMSIS standard by rewriting a blinky program and understanding memory-mapped peripheral structures.
Building a Custom Makefile for STM32 Bare-Metal Development
I wrote a custom Makefile for my STM32F446 bare-metal C project, learning about target-prerequisite relationships and Make's reserved keywords along the way.
Building an Analytics Dashboard with SvelteKit and Cloudflare D1
Built a self-hosted analytics dashboard that captures pageviews, enriches data with Cloudflare geo and user-agent parsing, and displays real-time stats and trends using uPlot.
On AI Coding Part 1: Death of the Free Lunch
AI coding tools are burning through VC capital at an unsustainable rate. What happens when the subsidies dry up and users have to pay what the tech actually costs?
STM32 bare metal: writing a linker script and startup code from scratch
Chapter 4 of Gbati's Bare-Metal-C: replacing the auto-generated startup assembly and linker script with hand-written C equivalents, then debugging through five attempts before the LED blinked.
STM32 bare metal blinky: walking the GNU ARM toolchain
Chapter 3 of Gbati's Bare-Metal-C: upgrading from a static LED to a proper blinky, then manually running each stage of the GNU ARM toolchain to see what STM32CubeIDE normally hides.
Planning a bar velocity tracker from scratch
A tentative design for a barbell velocity tracker: STM32L4, a high-resolution accelerometer, e-ink display, and a CR2032 coin cell. This is the optimistic version of the plan.
Building dilates-education.com: a multi-tenant Pilates LMS in Phoenix and Ash
Notes on architecting a multi-tenant learning management system for a Pilates studio in Elixir, Phoenix LiveView, and the Ash framework, including why Ash was the right call and where it pushed back.
JDExtractor: a local-first job search CRM
A single Go binary that wraps a Svelte UI, an LLM-driven resume tailoring pipeline, and a filesystem-as-database job tracker. Notes on the constraints I picked and what they bought me.