#01 · The Origin//3 min read

Hello, World!

The weight of 14 bytes — why every system, language, and fresh start begins with the same humble cry.

In 1974, Brian Kernighan sat at a terminal at Bell Labs writing an internal memorandum titled Programming in C: A Tutorial. Near the opening, he typed out a small six-line program designed to print twelve lowercase letters, a comma, and a newline.

Fifty years later, we are still doing it. Every time you open a blank directory, install a new compiler, spin up a foreign runtime, or launch a personal blog, you write it. It is computing's oldest reflex.

hello.c
#include <stdio.h>

int main(void) {
    printf("hello, world\n");
    return 0;
}
💡 Classic K&R 1974. 6 lines, 0 dependencies outside libc. The blueprint for everything that followed.

The Sanity Check for the Machine

We often treat "Hello, World" as a beginner's toy. But to a systems programmer, getting those fourteen characters onto a screen is a profound validation of the entire physical and logical stack.

For printf to work:

  • The text editor must encode the glyphs into UTF-8 bytes.
  • The compiler must parse the AST and emit valid machine instructions.
  • The linker must resolve symbols against the dynamic C library.
  • The OS loader must map memory pages, set up the stack, and transfer control to _start.
  • A syscall trap must cross the user-to-kernel boundary to hand bytes to file descriptor 1.
  • The terminal emulator must rasterize those bytes into phosphors or pixels.

If any single link in that chain fails, you get silence, a segmentation fault, or an obscure linker error. When the words actually appear, it is the machine’s first heartbeat. It means: I can hear you, and I can speak back.

“Before you can teach a machine to calculate orbits or simulate physics, you must first teach it to say hello.”

Building From Scratch

That’s why I wanted this to be the very first entry here. Whether I'm building an HTTP server from raw POSIX sockets, tinkering with an ECS 2D game engine in C++, or assembling modern web systems with Next.js and TypeScript, every new journey begins in the same exact place.

No abstractions, no bloated boilerplate. Just a blinking cursor, an empty file, and fourteen characters that prove the canvas is ready.

$./hello→Hello, World!