What an RTOS Actually Does: Tasks, Scheduling and Why It Matters
A practical introduction to real-time operating systems: what a task scheduler does, why timing guarantees matter in embedded systems and how FreeRTOS implements preemptive multitasking on a microcontroller.
15 Jun 2026
UART From Scratch: Serial Communication Without a Library
How to set up UART on an AVR microcontroller using bare metal C, configure baud rate registers, transmit and receive bytes and debug embedded systems over a serial monitor.
1 Jun 2026
Getting Started with FPGAs: What They Are and How to Think About Them
A beginner-friendly introduction to FPGAs and VHDL: what an FPGA actually is, how it differs from a microcontroller, why hardware description languages feel so different from programming and the mental model shift you need to make sense of it all.
29 May 2026
Bare Metal AVR: Building a Nine-Mode State Machine Without Any Framework
How I built a nine-mode state machine on an ATmega644P from scratch using bare metal C, writing directly to hardware registers with no framework, no HAL and no shortcuts. Still ongoing.
1 Apr 2026
Why Every Software Engineer Should Understand Hardware
An argument for why understanding hardware - registers, memory, timing, power - makes you a significantly better software engineer, regardless of whether you ever write firmware.
10 Mar 2026
Resources for Engineering and Technology
A curated list of books, courses, documentation, tools and videos I have found genuinely useful for learning embedded systems, software engineering, computer science and the craft of building things. Updated as I find new things worth recommending.
20 Feb 2026
SPI vs I2C: When to Use Which
A detailed technical comparison of SPI and I2C for embedded projects: signalling, timing, addressing, clock modes, pull-ups, edge cases and when the choice actually matters.
14 Jan 2026
Security Gaps in Consumer IoT: A Survey of Common Attack Vectors
A technical review of the most common vulnerabilities in consumer IoT devices: hardcoded credentials, unencrypted traffic, insufficient update mechanisms and insecure interfaces, with reference to real incidents, CVEs and regulatory standards.
30 Nov 2025
Embedded
Retargeting `printf` to UART lets you use standard C stdio for debug output on an MCU
11 Jun 2026
Embedded
`pdMS_TO_TICKS()` converts milliseconds to RTOS ticks portably across tick rate configs
9 Jun 2026
Embedded
SPI CPOL and CPHA choose which clock edge data is sampled on: mismatch means garbage
22 May 2026
C
`volatile` tells the compiler a variable can change outside of program control
18 May 2026
Embedded
PWM duty cycle on a microcontroller comes from the ratio of compare register to period
15 May 2026
C
A format string vulnerability in C lets an attacker read or write arbitrary memory
11 May 2026
C
A `static` local variable in C keeps its value between function calls
8 May 2026