Blog
UART driver on the STM32, printf build issues, and how the ST-LINK debugger was hijacking my serial output.
Handmade drone part 1: building the devFrame from scratch
Part 1 of a series on building a slow-flying camera drone from 3D printed parts, off-the-shelf hardware, and hand-sourced electronics. This post covers printing and assembling the devFrame open source quadcopter frame.
Bare-Metal Embedded C Programming: Chapter 8 - SysTick Timer
Implementing a SysTick driver for millisecond delays on the STM32F446RE, then using it to debounce a button press that toggles an LED.
Debugging My First GPIO Driver
I found two typos in my GPIO code by stepping through CLion's debugger with the peripherals view. Sometimes the bugs teach you more than the working code.
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.
STM32F446 + CMake + CLion Integration
Setting up one-click build and flash for STM32F446 bare-metal development with CMake and CLion on Arch Linux.
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.