Learning Systems by Building and Explaining Them
I write about C, C++, systems programming, memory, operating systems, developer tooling, compiler and runtime foundations, reproducible research, and trustworthy machine learning. These articles preserve what I learn and turn difficult technical ideas into structured explanations.
Using fgets and strtol Safely in C
A practical guide to robust console input in C. This article
explains why direct numeric input functions can fail, how
fgets and strtol work together, how to
validate conversion results, detect overflow, reject unwanted
characters, and design reusable input functions.
Latest Technical Articles
Practical explanations, implementation notes, debugging lessons, research insights, and foundations for deeper systems work.
Why C Pointers Matter
Understanding addresses, indirection, object lifetime, arrays, function parameters, memory ownership, and why pointers are central to low-level software.
What Unix Tools Teach About Operating Systems
How rebuilding familiar command-line utilities reveals deeper lessons about files, processes, streams, permissions, system calls, abstractions, and kernel services.
Arrays and Pointers: Related but Not Identical
A careful explanation of array-to-pointer conversion, function parameters, object size, indexing, decay, and the differences that matter in real C programs.
What Makes an ML Experiment Reproducible?
Seeds, manifests, environments, dataset versions, metrics, artifacts, experiment protocols, and the difference between code that runs and evidence that can be trusted.
When Does Synthetic Data Actually Help?
Why visual realism alone is insufficient, how downstream utility should be measured, and why class balance, budgets, selection policies, and failure modes matter.
A Practical Method for Debugging Memory Errors
A structured process for reproducing failures, inspecting ownership, narrowing the fault, using GDB and sanitizers, correcting the cause, and preventing regression.
What I Write About
The blog follows the same progression as my technical work: foundations, implementation, evidence, systems depth, and future compiler/runtime specialization.
Systems Foundations
C, C++, pointers, memory, data structures, processes, files, system interfaces, concurrency, and architecture.
Building Tools
Command-line utilities, reusable libraries, testing, build systems, debugging, profiling, automation, and project design.
Research & Evidence
Synthetic data, cybersecurity ML, experiment design, reproducibility, evaluation, uncertainty, and research infrastructure.
Compiler & Runtime Journey
Parsing, intermediate representations, virtual machines, execution engines, optimization, runtime services, and performance engineering.
From Technical Notes to Working Systems
The articles document the reasoning behind my systems projects, research workflows, debugging process, and deliberate progression toward compiler and runtime engineering.