Systems and hardware

37 sources on what lies beneath ordinary code.

These sources look at what lies under ordinary code. They cover memory, binary files, processors and very small chips. This page lists 37 sources, oldest first where dated.

Themes here: Close to the machine (10), Getting good (3), What the senses do (2), Small means (2), Given away (1), Art through code (1), Checking the work (1).

Dataflow Architectures

Arvind and David E. Culler, MIT Laboratory for Computer Science. 12 February 1986. Technical memo and survey paper, written in 1986.

The memo explains the dataflow model, then compares static and tagged-token machines. It also contrasts functional data structures with I-structures. It closes with a survey of projects and a prognosis, argued rather than benchmarked.

The Nitty Gritty of “Hello World” on macOS

Joe Savage. 8 November 2014. Personal blog walkthrough, based on hands-on inspection of one binary.

The post opens a tiny macOS executable and explains its header, load commands and segments. It then outlines how the system loads and runs it. Evidence is output from otool and a byte visualisation of one binary.

C Is Not a Low-level Language

David Chisnall. 30 April 2018. Opinion essay in ACM Queue, with no new experiments.

Chisnall argues that processors and compilers hide modern hardware behind a C-shaped model. The essay ties Spectre and Meltdown to that effort. It rests on argument, cited figures and one published survey. It closes with sketches of processors not designed around C.

What is Systems Programming, Really?

Will Crichton. 9 September 2018. Personal essay with a short historical survey.

Will Crichton traces how the phrase "systems programming" has been defined since the 1970s. The essay quotes three 1972 papers, a 1998 article and a 2014 panel. Its evidence is quotation and argument. It ends with a proposal to rename the low-level half.

Exploring Mach-O, Part 1

Gregory Anders. 16 January 2022. Personal blog post, part 1 of a series, with hands-on shell commands.

The post builds the smallest macOS ARM64 executable and checks it on the command line. It then starts on the Mach-O header and its magic number. Evidence is shell output from one machine.

Making a rickroll laser:

Not stated. 2024-09-12. Personal hardware project write-up, with a built prototype.

The post describes a parametric speaker made from an array of 73 ultrasonic transducers. It explains why a larger speaker is more directional and gives a beam formula. Evidence is the author's own prototype and what the author observed.

Hacker News comment thread on loudspeaker directionality

Posted by kazinator, with replies from numb7rs, ano-ther, mannyv and ramenbytes. 15 September 2024. Short forum comment thread, practical opinion and anecdote.

Kazinator's comment and four replies discuss why speakers beam and how sound crews limit it. The thread sits under a story about a parametric ultrasonic speaker. Evidence is practical experience with guitar cabinets and concerts.

Making Software

Posted by calme_toi, with replies from many commenters. 14 April 2025. Hacker News discussion thread about a book announcement page.

The thread is about a landing page for a planned visual book on everyday technology. Replies mix praise for the art with complaints about layout, motion and accuracy. Evidence is commenter opinion and a few factual corrections. The linked page itself was not read.

Show HN: Air Lab – A portable and open air quality measuring device

Posted by 256dpi, with replies from many commenters. 5 June 2025. Hacker News launch thread for a crowdfunded hardware device.

The maker introduces Air Lab, a battery-powered monitor, and answers many comments. Commenters compare price, sensors and displays with AirGradient and Aranet. Evidence is the maker's statements and users' own experience.

Launch HN: Vassar Robotics (YC X25) – $219 robot arm that learns new skills

Posted by charleszyong, with replies from many commenters. 10 June 2025. Hacker News launch post with discussion thread.

The founder introduces a $219 robot arm kit and answers questions in the thread. Replies cover pricing, safety, accuracy, shipping and how the arm is taught. Evidence is the founder's own claims and commenter experience. The product was not tested by the thread.

We built a solar data center on a farm

Ben James. 13 June 2025. Short personal blog post on a one-week hardware project.

Ben James describes a one-week proof of concept built with volunteers and borrowed parts. The post is short and has photos and drone credits. It gives few measurements and no costs.

SmolBSD – build your own minimal BSD system

Posted by birdculture, with replies from many commenters. 14 October 2025. Hacker News discussion thread.

The thread has 265 points. Commenters compare SmolBSD with unikernels and rump kernels. One commenter reports trying it and praises build and boot speed. Others ask about size, documentation and BSD compatibility.

A Friendly Tour of Process Memory on Linux

0xkato. 1 November 2025. Personal blog explainer, with shell commands and no measurements.

The post explains Linux process memory in short steps. A small definition follows each new term. It covers mmap, page faults, copy on write, huge pages and Meltdown defences. It offers explanation and commands to run, not benchmarks. It targets Linux on x86-64.

Pure Silicon Demo Coding: No CPU, No Memory, Just 4k Gates

Not stated. 19 December 2025. Personal technical write-up of two hardware demos, with Verilog and Python code.

The post describes a demoscene intro and a Nyan Cat demo. Each is a tiny chip design. It walks through the graphics, music and data tricks needed to fit about 4000 gates. Evidence is the author's own code listings and photos of the working chips.

I’ve built a virtual museum with nearly every operating system you can think of

Posted by andreww591, with replies from many commenters. 19 May 2026. Hacker News discussion thread, with replies from the project's builder.

The thread has 974 points, and the project's builder answers many questions. Commenters ask for a searchable list of included systems. They report download problems and name systems they hoped to find. The builder replies with details on emulators and contents.

The Return of Rigorous Full-System Timing Simulation

Shanqing Lin, Mohammad Alian and Babak Falsafi, on the ACM SIGARCH blog. 8 June 2026. Opinion blog post by researchers, with a results table and figures.

Three researchers argue that cycle-level simulation of whole systems is slow but still needed. They advocate statistical sampling with checkpoints over fixed windows or phase sampling. The evidence is their own measurements, reported partly in a table and figures.

To study how chips really work, MIT researchers built their own operating system

Rachel Gordon, MIT CSAIL. 10 June 2026. University news article about a research paper.

This is a news release from MIT's own news office about a paper. It describes a research kernel and what it found about Apple's M1 chip. Evidence is the researchers' statements and one outside quote. The paper itself was not read.

Object code

Not stated. Last edited 16 June 2026. Encyclopedia article, short.

A brief reference entry with two short sections and four references. It defines object code and explains how a linker uses it. It has no examples or code.

AMD Strix Halo RDMA Cluster Setup Guide

Posted by jakogut, with replies from many commenters. 28 June 2026. Hacker News discussion thread about a GitHub setup guide.

The thread has 232 points. Most comments debate hardware prices, memory bandwidth and Mac alternatives. A few discuss network choices such as copper cables and Thunderbolt. Commenters credit the guide to kyuz0.

Girls Just Wanna Have Fast MPMC Queues with bounded waiting

Nahla. 10 July 2026. Personal blog post with a Rust design and throughput benchmarks.

The post describes a ticket-based ring-buffer queue with bounded waiting. A correction says it is not wait-free, though some text still says so. Evidence is the author's own throughput tables from one machine.

8× faster binary search: from compiled code to mechanical sympathy

Itamar Turner-Trauring. 11 July 2026 (last updated 18 July 2026). Company blog post with a worked, benchmarked Rust example.

The post rewrites a binary search from scikit-learn in Rust, step by step. Each version is timed with CPU hardware counters on one million values. It reports fewer branch mispredictions and higher instruction throughput. The author also promotes a book on Python performance.

Small Programs and Languages

Dave Gauer (ratfactor). 28 July 2026. Personal essay in note form, on a notes site.

The page is a personal essay in note form. It collects examples of very small programs, from a 46-byte Forth to a Lisp interpreter. It then asks why small things feel good, citing writers on miniatures. It offers opinion and examples, not experiments.

Reverse Engineering Unknown File Formats with ImHex

Posted by carlos-menezes, with replies from many commenters. 31 August 2026. Hacker News discussion thread about a blog post.

The thread has 256 points. Replies include practical tips for decoding unknown formats and personal stories of reverse engineering. A few commenters criticize ImHex, and others suggest alternatives such as Kaitai Struct.

A Brief History of Microprogramming

Mark Smotherman. September 2026. Long web history page with worked example, appendices and references.

The page mixes a tutorial, a dated history and a reference list. A small worked example contrasts hardwired control with a control store. Most dates and figures come from cited papers, books and patents. The page ends with advantages and disadvantages.

ZX Spectrum: Experimenting With 1-Bit Sound

Michael Martin. 5 September 2026. Personal lab-notebook blog post with assembly code and listening tests.

The author tries 1-bit sample playback, arpeggios and channel summing on a Z80 machine. Z80 assembly listings and cycle counts accompany each method. Results come from the author's listening, partly in an emulator. The author also reports one technique that did not work.

We can do better than line-buffered output

Chris Wellons. 5 November 2026. Personal blog post, with C code sketches.

The post shows how glibc and CPython flush output when a line completes. It proposes a time-based flush in place of a flush on every newline. The evidence is write traces and a short C sketch, with no timing figures.

Scanwheel

Not stated. Undated. GitHub README for a self-build hardware project.

The README documents a small mechanical television with five tiny windows. It gives a parts list, printing advice, wiring diagrams and a software layout. Evidence is the author's own build notes and measured resistor values. The images and build video were not viewed.

Asterinas

Not stated. Undated. Project homepage.

A project homepage that explains the framekernel idea and the OSDK toolkit. It shows four commands and a small test example. The security and speed claims are stated without benchmarks on this page.

HelloSilicon

Not stated. Undated. GitHub README acting as a chapter-by-chapter porting guide.

The README walks through a book chapter by chapter. For each one it notes how Apple's platform differs from the book's Linux setting. Evidence is code snippets, error messages and links to Apple and LLVM documentation. It was written by the repository owner and gives no name in the text.

Bedrock

Not stated (hosted on benbridle.com). Undated. Project overview page with live demos.

A project page that defines Bedrock and lists its tutorials, emulators and demos. It says the specification matters more than any one emulator. It gives no benchmarks. The live demos were not run.

You're the OS!

Pier-Luc Brault. Undated. GitHub README for a free software game.

The README introduces a small game about managing processes, memory and I/O. It lists how to play online and how to run the desktop version. Most of the page covers build commands, contribution rules and licenses. It has no gameplay results or reviews.

Tumble Forth

Virgil Dupras. Undated. Landing page for an article series, with a table of contents.

The page is short. It introduces the series and lists chapter titles for its first story arc. It has no technical content, so this record covers only the plan.

Memory Safe Context Switching

Not stated (a Fil-C documentation page, written in the first person). Undated. Project design document.

A technical document from the Fil-C project. It explains each mechanism with C examples and assembly. It names the two spots where a bug would most likely hide. It gives no benchmarks.

Tiny Emulators

Not stated. Undated. Index page of browser emulators, thin.

The page is a long list of machines and programs, with few words of explanation. It names demo groups and game titles. The emulators were not opened.

The Garbage Collection Handbook

Richard Jones, Antony Hosking, Eliot Moss (CRC Press). Undated. Book website, short.

A short publisher-style page for the book. It lists the contents and the online bibliography. It describes the book but does not teach the subject.

LinuxByExample-2e

Arnold Robbins. Undated. GitHub README for book example code.

The README is a short note about a code repository. It covers the book's examples, an errata file and a license folder. It has no technical content of its own. A last-updated line is dated October 2025.

binary-samples

Not stated. Undated. GitHub repository README, saved link points to a binary sample file.

The README is two lines long. It says the repository collects binaries in different formats and architectures. The purpose is to test binary analysis tools. The saved file itself was not opened.

Connections to other subjects

These links are this wiki's own reading, not claims the sources make.

Glossary

1-bit sound
Audio where the speaker is only ever fully on or fully off.
Abstract machine
The simplified computer model that a language's rules describe.
Address space
The range of memory addresses a program or kernel can use.
API
A set of functions a program can call to use a system service.
Apple silicon
Apple's own ARM-based processors, such as the M1.
ARM64
The 64-bit instruction set used by Apple silicon chips.
Arpeggio
Playing the notes of a chord one after another, very fast.
ASIC
A chip made for one purpose, rather than a general processor.
Assembler
A tool that turns assembly language into machine instructions.
Assembly
Machine-specific code written as short human-readable instructions.
Backlash
Loose play in gears or joints that blurs precise motion.
Bare metal
Running code directly on hardware, with no operating system underneath.
Binary analysis
Studying compiled programs without their source code.
Binary search
Finding a value in sorted data by repeatedly halving the range.
BOM
Bill of materials, the list and cost of parts in a product.
Bounds check
A test that an array index is in range before the access.
Branch misprediction
A wrong CPU guess about which way an if or loop goes, wasting work.
Branch predictor
A CPU part that guesses which code will run next.
Capability model
Fil-C's rule that each pointer carries the limits of memory it may touch.
Capacitive touch screen
A screen that senses a finger by the change in electric charge.
Cardioid
A heart-shaped pattern that is loud in front and quiet behind.
CAS loop
A retry loop built on an atomic compare-and-swap instruction.
Checkpoint
A saved snapshot of simulated machine state that a run can restart from.
CO2 sensor
A device that estimates carbon dioxide level in air.
Code golf
Writing a program in as few characters as possible, as a game.
Concurrent collector
A collector that runs at the same time as the program.
Control store
The memory that holds a processor's microinstructions.
Copy on write
Sharing a page until one side writes, then giving that side a private copy.
Cycle counting
Timing code by the exact clock cycles each instruction takes.
DAC cable
A copper cable with fixed connectors for short high-speed network links.
Dangling stack
Stack memory that has been freed or overwritten but is still used.
Darwin
The Unix-based core of macOS and iOS.
Dataflow
A model where an operation runs as soon as all its input data has arrived.
Demo
A program made to show off graphics and sound on a machine.
Demoscene
A computer art community that makes tiny, showy programs.
Directionality
How much a speaker sends sound along one direction instead of all around.
DOF
Degrees of freedom, meaning the number of ways a robot arm can move.
Domain/OS
An operating system from Apollo Computer, later bought by HP.
Dusk OS
An operating system by the same author, named on the page.
Dyld
The dynamic linker that loads shared libraries when a program starts.
Emulation
Making one computer run the programs of another, here done with microcode.
Emulator
A program that imitates one computer on another.
Entropy
A measure of how random the bytes in a file look.
Errata
A list of corrections to a printed book.
False sharing
Slowdown when threads write different data on one cache line.
Fiber
A lightweight thread that the program itself schedules.
Firecracker
A tool that starts small, fast virtual machines.
Firmware
Microcode or other code stored in a machine's own memory.
Flip-flop
A circuit cell that stores one bit of state.
Forth
A very small programming language built around a stack.
Framekernel
A kernel design with a small privileged core and safe-code services.
Full-range speaker
A single driver meant to cover most of the audible range.
Fully buffered
Holding output until a buffer fills or is flushed by hand.
Garbage collection
Automatic freeing of memory a program no longer uses.
Garbage collector
A runtime part that finds and frees memory the program no longer uses.
Glibc
The standard C library used on most Linux systems.
GPL
A free-software license that requires derived code to stay open.
H-bridge
A transistor circuit that drives a load with alternating voltage.
Hardwired control
Control logic built from fixed gates instead of stored microcode.
Head of line blocking
One slow item holding up all the items behind it.
Hex editor
A program that shows and edits the raw bytes of a file.
Home Assistant
Open-source home automation software.
I-structure
A write-once array whose reads wait until the value is written.
I/O event
A moment when a program waits on input or output, such as a disk.
Instruction-level parallelism
A processor running several instructions from one thread at the same time.
IPC
Instructions per cycle, a common measure of processor speed.
ISBN
A unique number that identifies a book edition.
JIT compiler
A compiler that turns code into machine instructions while the program runs.
Justified text
Text spaced so both edges of a column line up.
Kaitai Struct
A language for describing binary formats that can generate parsing code.
Kempston joystick
A joystick standard for the ZX Spectrum.
Kernel
The core part of an operating system that manages hardware.
Kolmogorov complexity
The length of the shortest program that produces a given output.
Landing page
A web page made to introduce or sell a product.
Launch HN
A Hacker News post format where a startup introduces a product.
Lazy binding
Resolving a library function only when it is first called.
Leader arm
A hand-moved arm whose motions are recorded and copied by a second arm.
LFSR
A shift register that makes a repeatable stream of pseudo-random bits.
Line buffering
Holding output until a newline, then writing it out at once.
Linker
A tool that joins object files into one runnable program.
Lldb
The debugger from the LLVM project, used on macOS in place of gdb.
Load command
A header record telling the loader how to lay out or link the file.
Loading coil
An inductor tuned to resonate with a load's capacitance.
Mach-O
The executable file format used on macOS and iOS.
Machine code
Binary instructions a processor can run directly.
Magic number
A fixed value at the start of a file that identifies its format.
MCP
Model Context Protocol, a standard for letting language models call outside tools.
Mechanical sympathy
Writing code with an understanding of how the hardware runs it.
Mechanical television
An early kind of TV that builds a picture with a moving disc or drum.
Microkernel
A kernel kept small, with most services running outside it.
Microprogramming
Controlling a processor by fetching small stored control words instead of using fixed wiring.
Microworld
A small, self-contained programming environment that is easy to learn.
MIPS
Millions of instructions per second.
MPMC queue
A queue that many producer threads and many consumer threads share.
Nagle's algorithm
A network rule that waits briefly so small writes can be merged.
NanoBSD
A FreeBSD tool for building small system images.
Nested virtualization
Running a virtual machine inside another virtual machine.
Objdump
A command-line tool that disassembles compiled programs.
Off grid
Running without a connection to the public electricity network.
Otool
A command-line tool that prints information about Mach-O files.
Page fault
A signal from the CPU that an address has no usable mapping yet.
Page table isolation
A Linux defence that hides kernel memory from user mode.
Parametric speaker
A speaker that makes audible sound by modulating ultrasound, which the air then demodulates.
PCM
A way to store sound as a series of sampled amplitude values.
PDP-11
A 1970s minicomputer whose design shaped the C language.
Phase delay
A small time shift in a signal that changes how waves add or cancel.
Piezoelectric transducer
A small disk that vibrates when voltage is applied.
PIO
A small programmable hardware block on the Raspberry Pi Pico that handles fast signals.
Pipenv
A tool that manages Python packages for a project.
PM2.5
Fine airborne particles smaller than 2.5 micrometres.
Pointer provenance
The idea that a pointer remembers which object it came from.
Prefers-reduced-motion
A browser setting that lets users ask sites to limit animation.
Prefill
The first stage of running a language model, where the prompt is processed.
Privilege level
A setting that decides whether code may use protected parts of the machine.
Process
A running program that the operating system keeps track of.
Proof of concept
A small trial built to show that an idea can work.
Pulse-width modulation
A way of encoding a signal in the width of pulses.
PWM
Encoding a level as the length of an on pulse.
RDMA
A way for one computer to read another's memory over a network.
Real-time collector
A collector designed to keep pauses short and bounded.
Relocation
Adjusting addresses in code when it is placed at a new memory location.
Ring buffer
A fixed array used as a queue that wraps around at the end.
RISC
Reduced instruction set computer, a design with simple instructions.
Rump kernel
NetBSD kernel parts that run as ordinary programs in user space.
Run-length encoding
In the comment, storing a length first so a reader knows how much data follows.
Safe Rust
Rust code that the compiler checks for memory errors.
Scan line
One thin row of the picture.
Scripting language
A dynamically typed language, such as Python or Perl, used mainly to connect existing components.
Segment
A block of the file mapped into memory with set permissions.
Setjmp and longjmp
C functions that save a point in a program and jump back to it later.
Show HN
A Hacker News post type where makers present something others can try.
Side channel
A way to learn secrets by watching indirect effects, such as timing.
Sigma-delta
A way to turn digital numbers into a stream of 1-bit pulses for audio.
SIMH
A family of emulators for historic minicomputers and mainframes.
SMARTS
A statistical sampling method that takes many small, evenly spaced measurements.
Specification
A written description precise enough to build an implementation from.
Spectre and Meltdown
Two 2018 attacks that read protected data by exploiting speculative execution.
Speculative execution
When a CPU runs code early, before it knows the code is needed.
Starlink
A satellite internet service from SpaceX.
Static dataflow
A design that allows at most one token on each arc.
Stepper motor
A motor that turns in small, exact steps.
Strace
A tool that lists the system calls a program makes.
Strix Halo
An AMD laptop and mini PC chip that shares memory between processor and graphics.
Syscall
A request from a program to the operating system kernel.
Systems programming
Writing software such as operating systems, databases and compilers that other software relies on.
Tagged-token dataflow
A design where tags identify tokens, so many can share one arc.
Timing simulation
A simulation that models how many cycles each step of a processor takes.
Tiny Tapeout
A service that puts many small student and hobby chip designs on one shared chip.
TLB
A small CPU cache of recent address translations.
Token
A packet of data traveling along an arc of a dataflow graph.
Transparent huge pages
Linux's automatic use of large 2 MiB pages to cut translation overhead.
U-IPC
Instructions per cycle counting only user-level instructions.
Ucontext
C functions for switching between separate execution contexts, used for coroutines and fibers.
Undefined behavior
Code the language standard gives no meaning, so anything may happen.
Unikernel
A tiny operating system built into a single application and run on a hypervisor.
Uxn
A small virtual machine that Bedrock began as a fork of.
Variadic function
A function that accepts a variable number of arguments, like printf.
Vectorization
Turning a loop into instructions that handle many values at once.
Verilog
A language for describing digital hardware.
VMA
A kernel record of one address range with shared permissions and backing.
VOC
Volatile organic compounds, gases from paints, floors and cooking.
Von Neumann machine
A conventional computer that runs instructions in program-counter order.
W^X
A policy that no page is both writable and executable.
Wait-free
A guarantee that every thread finishes in a bounded number of steps.
WASM
WebAssembly, a format that lets compiled code run in a web browser.
Yosys
Open-source software that turns hardware descriptions into gate-level designs.
Z80
The 8-bit processor in the ZX Spectrum.