Articles
Deep-dive technical articles on computer science, networking, and systems programming.
-
Type Qualifiers
The three C type qualifiers — const, volatile, and restrict — what they mean, and how to apply them to variables, pointers, and objects.
-
RFC
What an RFC is, how the RFC Editor works, the types of RFCs, the Internet standards track, and the tradition of joke RFCs.
-
Processor Modes
Why grouping similar CPU instructions together improves performance by reducing mode-switching overhead, illustrated with the Pentium MMX example.
-
Null Pointer
Why NULL is reserved for pointer operations in C, how it is defined, and why mixing it with integer zero causes problems.
-
Magic Numbers
Why hardcoded numeric literals in code are harmful, and how to replace them with named constants, macros, enumerations, or typed constants.
-
Macro Usage
A key rule for defining macros in C — always parenthesize macro definitions to avoid operator precedence bugs.
-
Macro Overloading
How a macro and a function can share the same name in C, and how to force the function version to be called by wrapping the name in parentheses.
-
Linux Bootup
A walkthrough of the Linux boot process, from kernel initialization through init, runlevels, and getty login.
-
Introduction to Templates
How C++ templates enable generic programming — template functions, behind-the-scenes instantiation, overloading, specialisation, explicit instantiation, and template classes.
-
Introduction to Operator Overloading
How C++ operator overloading lets you define the behaviour of operators for user-defined types, covering member functions, global functions, friend functions, and unary operators.
-
Introduction to DNS
A comprehensive introduction to the Domain Name System — name space, resolution, caching, and DNS configuration.
-
Introduction to DHCP
How DHCP dynamically allocates IP addresses — message structure, options, the DORA flow, leases, and bindings.
-
Introduction to C++ Streams
A comprehensive introduction to the C++ stream I/O library, covering cin, cout, cerr, clog, stream operators, error handling, and character-level input.
-
Global Variables
Why global variables are harmful to software design, and what environment variables and lessons from C and .NET era teach us.
-
Game Trees
An introduction to game trees and the minimax algorithm for building AI in two-player games like chess and tic-tac-toe.
-
Debug and Release Builds
The differences between debug and release builds, symbol tables, and how to use GDB for debugging compiled programs.
-
Comments
Best practices for writing code comments, documentation tools like JavaDoc and Doxygen, and using CVS and XML documentation comments.
-
C++ Streams and Formatting Manipulators
How to control output formatting in C++ using ios_base flags, setf/unsetf, precision, width, fill, and stream manipulators.