Blog.

Aug 14, 2025

Zephyr: What `__ASSERT` Means, Interrupt Context, and Why You Must Not Create Threads in ISRs

Clear, practical explanation of Zephyr’s __ASSERT, what interrupt context (ISR) is, and why creating threads inside an ISR is forbidden—with safe alternatives and code snippets.

Aug 12, 2025

Running Zephyr OS on a DigitalOcean Ubuntu 22.04 Droplet with QEMU

Step-by-step guide to install and run Zephyr OS on a DigitalOcean Ubuntu 22.04 Intel droplet using QEMU, including a small code change to prove it is running.

Jul 17, 2025

Mastering Dynamic Input in C: Understanding `my_getline`

A deep dive into creating a C function like `getline` for dynamic input, explaining `ssize_t`, `char**`, and memory management.

Jul 16, 2025

Mastering File I/O in C: A Comprehensive Guide to Streams and Standard Library Functions

A deep dive into C's standard I/O library, exploring file streams, buffering, binary I/O, and efficient data handling with practical code examples.

Jul 15, 2025

Mastering File I/O in C: A Deep Dive into Linux System Calls

Explore the intricacies of file I/O in C on Linux, from basic read/write operations to advanced system calls like fcntl, ioctl, and fdatasync. Understand file descriptors, buffering, and atomic operations with practical code examples.

Jul 13, 2025

Understanding Linux's System.map File: The Kernel's Debugging Rosetta Stone

A deep dive into the System.map file in the Linux kernel — what it is, why it matters, and how it empowers kernel debugging.

Jul 13, 2025

Understanding the Linux Kernel Directory Structure

A clear and complete breakdown of the Linux kernel's top-level folders and build artifacts.

Jul 8, 2025

Building and Booting a Custom Linux Kernel: A Real-World Journey

Jul 8, 2025

Building and Booting a Custom Linux Kernel: How GRUB works?