Topic domain
Computing History
How the discipline acquired its current shape.
- Articles
- 80
- Clusters
- 8
- Foundational
- 24
- Intermediate
- 32
- Advanced
- 24
Mechanical calculation and first machines.
- Finite Differences as a Mechanical Computation Method
- Punched-Card Encoding in Hollerith Tabulating Equipment
- Carry Propagation in the Difference Engine No. 2
- The Analytical Engine Store, Mill, and Barrel Control
- Instruction Encoding on the Harvard Mark I Paper Tape
- Relay Arithmetic and the Floating-Point Word in the Zuse Z3
Batch systems and commercial computing.
- How a Resident Monitor Chained Jobs Without an Operator
- Zone Bits and Why EBCDIC Letters Are Not Contiguous
- Packed and Zoned Decimal: Sign Nibbles and Decimal Arithmetic
- Blocking Records on Magnetic Tape and the Cost of the Interblock Gap
- Channel Programs: How a Mainframe Moved Data Without the CPU
- Storage Keys and Region Boundaries in Multiprogrammed Batch
Personal computing and its software.
- Multiplexed Address and Data Buses in a Forty-Pin Package
- Two Address Spaces: Port-Mapped and Memory-Mapped I/O Decoding
- Zero Page Addressing and the Economics of Eight-Bit Instructions
- Framebuffer Arithmetic: What a Bitmap Mode Costs in Memory
- Cycle Counting When the Video Circuit Steals the Bus
- MFM Encoding and the Fixed Geometry of a Floppy Sector
From ARPANET to the public Internet.
- Statistical Multiplexing and the Case Against Reserved Circuits
- ARPANET IMPs and the 1822 Host Interface
- NCP and the Limits That Forced TCP/IP
- The TCP/IP Split and the End-to-End Argument
- Classful Addressing, Subnets, and the Move to CIDR
- DNS Delegation, Glue Records, and the Referral Loop
Unix Lineage
10Design decisions that propagated.
- The Three-Level Indirection Behind a Unix File Descriptor
- Why fork and exec Are Separate Calls
- One Rooted Namespace: How Mounting Replaced Separate Volumes
- How argv and envp Reach a New Program Image
- Signals as Deferred Interrupts and the Async-Signal-Safe Subset
- Pipe Buffers, PIPE_BUF, and the Absence of Message Boundaries
Licensing, communities, and governance.
- What a Software License Does to a Copyright Default
- How Copyleft Travels Through Derivative Works
- License Compatibility and the Direction of Relicensing
- SPDX License Expressions and Machine-Readable Provenance
- Contribution Agreements: Certification, License Grants, and Assignment
- Maintainer Authority and the Fork as an Exit Mechanism
How specifications get made.
- De Jure Standard Versus De Facto Implementation
- Consensus, Voting Rules and the Burden of an Objection
- Normative and Informative Text in a Specification
- Reference Implementations and the Conformance Laboratory
- Licensing a Patent Inside a Standard: RAND, Royalty-Free and the Gap Between Them
- Registry Allocation: First Come, First Served and Its Failure Modes
Documented projects that failed and why.
- Optimistic Concurrency and the Conflict Check That Arrives Too Late
- Isolation Levels and the Anomalies They Were Supposed to Prevent
- Header Files as an Interface Contract and the ODR Landmine
- Source Code Control Before Merging: RCS, CVS and the Locking Model
- The Floppy Sector Interface as a Lossy Abstraction
- X.400 Versus SMTP: When a Better-Designed Messaging System Loses
All Computing History articles
- Oct 24, 2026 Signals as Deferred Interrupts and the Async-Signal-Safe Subset How a signal handler interrupts an arbitrary instruction, why most library calls are unsafe inside one, and what the small permitted subset actually guarantees.
- Aug 28, 2026 Consensus, Voting Rules and the Burden of an Objection How committee votes, comment resolutions and national-body ballots decide what a specification says, and why unanimity requirements produce vague text.
- Aug 7, 2026 NCP and the Limits That Forced TCP/IP How the ARPANET host-to-host protocol split messages into connections, why its addressing and flow control could not span multiple networks, and what TCP added to replace it.
- Jul 6, 2026 Nine Permission Bits, Three Classes, and No Way to Deny How the mode word is checked at open time, why umask subtracts rather than assigns, and what setuid, setgid and the sticky bit change about the check.
- Jun 29, 2026 Errata, Revisions and the Exit Problem for a Standard How published specifications are corrected and withdrawn, why deprecation is not deletion, and what happens when the authority for a document disappears.
- Jun 27, 2026 The Close-on-Exec Race and Why Descriptor Inheritance Is a Hazard How exec preserves every descriptor a process holds, why setting the flag after fork is too late, and what O_CLOEXEC closes that fcntl cannot.
- Jun 26, 2026 Store-and-Forward Delivery and the MX Indirection How mail separated the address a sender writes from the host that receives it, why transfer is hop-by-hop rather than end-to-end, and what the retry rules actually require.
- Jun 25, 2026 Mercury Delay-Line Memory and the Timing It Imposed How acoustic pulses recirculating in mercury hold a bit stream, why access time depends on the address, and what that forced on instruction placement and memory layout.
- Jun 20, 2026 Isolation Levels and the Anomalies They Were Supposed to Prevent Why the SQL standard isolation levels are defined by the anomalies they should exclude, why that definition is incomplete, and what Critic and ARIES work revealed about writes that are visible before they are durable.
- Jun 10, 2026 What a Neutral Foundation Holds and What It Cannot Change Foundations exist to hold the assets a project cannot own as a group: copyright title, trademarks, funds and release infrastructure; their legal form decides what they can do, and neutrality is a matter of procedure rather than of intent.
- Jun 8, 2026 Header Files as an Interface Contract and the ODR Landmine What the ISO C and C++ translation-unit models formalize, how the one-definition rule fails silently when headers disagree, and why the language committee took decades to admit that separate compilation is not composition.
- Apr 9, 2026 Channel Programs: How a Mainframe Moved Data Without the CPU The command word format a channel executes, how chaining turns a list of commands into one operation, and why the channel is a separate processor rather than a DMA engine.
- Apr 6, 2026 Threads, Scheduler Activations and the Failed Promise of User-Level Scheduling How user-level threads multiplex onto kernel threads, what scheduler activations promised in exchange for replacing the kernel scheduler, and why the mechanism was displaced by kernel-managed blocking without ever being implemented widely.
- Mar 26, 2026 Blocking Records on Magnetic Tape and the Cost of the Interblock Gap Why tape stores records in blocks separated by blank gaps, how block size trades tape capacity against buffer memory, and what tape marks and labels do that a gap cannot.
- Mar 19, 2026 Interrupt Vectors as the First Hardware Abstraction Layer The real-mode vector table turned firmware entry points into a stable calling convention, letting programs reach disks, video, and keyboards without knowing which adapter was installed.
- Mar 13, 2026 Zone Bits and Why EBCDIC Letters Are Not Contiguous How a byte splits into a zone nibble and a digit nibble, why that layout leaves gaps inside the alphabet, and what the gaps cost in collation and character-set conversion.
- Mar 2, 2026 ARPANET IMPs and the 1822 Host Interface How the Interface Message Processor kept switching separate from host software, what the 32-bit leader and the RFNM handshake enforced, and why one message in flight per link was enough.
- Mar 2, 2026 Complying With Source Obligations When Shipping Binaries What counts as conveying a copy, how corresponding source is defined for a compiled artifact including its build scripts, and how a build can archive the exact sources and licenses that a shipped binary implies.
- Feb 28, 2026 The Three-Level Indirection Behind a Unix File Descriptor How a small integer reaches an inode through a per-process table and a shared open file description, and which operation copies which level.
- Feb 27, 2026 Maintainer Authority and the Fork as an Exit Mechanism How merge rights, review conventions and ownership files concentrate control of a project that no license grants anyone, and why the license makes forking always possible while the trademarks and distribution channels make it expensive.
- Feb 23, 2026 Finite Differences as a Mechanical Computation Method How a polynomial table is produced by addition alone, why mechanical engines avoided multiplication, and what the method costs in column count and error propagation.
- Feb 11, 2026 The Floppy Sector Interface as a Lossy Abstraction How a disk controller invented to address one track at a time became the universal disk interface, and why the geometry, translation and sector-numbering decisions made for it still surface in firmware and partition tables.
- Feb 7, 2026 Relay Arithmetic and the Floating-Point Word in the Zuse Z3 How a two-register stack machine with a 22-bit floating-point word ran at a few hertz, why it had no conditional branch, and what that costs in program length.
- Dec 8, 2025 Open Standards and Implementability: The Two Definitions That Do Not Match Why openness is claimed by bodies that mean different things by it, and which of the claimed properties an implementer can actually verify.
- Dec 8, 2025 Ring-Counter Accumulators and the Cost of Rewiring ENIAC How ten flip-flops per digit hold a decimal number and count incoming pulses, how cables and switch banks define a program, and what function-table coding changed in 1948.
- Dec 4, 2025 Packed and Zoned Decimal: Sign Nibbles and Decimal Arithmetic How decimal numbers are laid out two digits to a byte with the sign folded into the last nibble, and why the format permits decimal addition without a binary round trip.
- Dec 3, 2025 Resident Programs and the Reentrancy Problem in DOS Terminate-and-stay-resident code hooks the timer or keyboard interrupt, but DOS itself is not reentrant, so a resident handler must either defer work or re-enter through a documented flag.
- Nov 22, 2025 Sessions, Process Groups, and the Controlling Terminal How the kernel groups processes for signal delivery and job control, why the controlling terminal is a session property, and what happens to a process left in the background.
- Nov 17, 2025 Relicensing a Mature Project: Consent, Forks, and Downstream Effects Changing a project license is a copyright transaction with every rightsholder in the tree, not a policy announcement; the routes that avoid consent, the audit that establishes who must be asked, and what a change cannot reach.
- Nov 15, 2025 procfs and the Limits of Representing Kernel State as Files How a virtual filesystem synthesises readable text for process and kernel state, why the files violate ordinary file assumptions, and where the interface gives inconsistent answers.
- Nov 11, 2025 Carry Propagation in the Difference Engine No. 2 How a figure wheel registers that a carry is owed without performing it, how the latched warnings are serviced by staggered carry arms, and what the two-phase cycle costs in timing.
- Nov 6, 2025 MFM Encoding and the Fixed Geometry of a Floppy Sector Why magnetic media store clock bits alongside data, how a sector is framed by address marks and gaps, and how FAT12 packs a cluster chain into twelve-bit entries.
- Nov 5, 2025 SPDX License Expressions and Machine-Readable Provenance How a single identifier grammar replaced prose license statements, what the operators and version suffixes encode, and why the declared license of a package and the licenses of its files routinely disagree.
- Oct 13, 2025 Source Code Control Before Merging: RCS, CVS and the Locking Model How the first source control systems represented revisions as deltas against a single file, why CVS made concurrent editing possible without solving it, and what the checkout-edit-commit cycle could never guarantee.
- Oct 5, 2025 DOS Extenders and the Cost of Leaving Real Mode Loading a protected-mode segment table, moving the interrupt path into extended memory, and reflecting calls back to real mode: what a 32-bit program had to build before it could run.
- Sep 22, 2025 Multiplexed Address and Data Buses in a Forty-Pin Package Multiplexed address and data pins let a processor with more address lines than pins reach memory, at the cost of an external latch and a shortened access window.
- Sep 17, 2025 Spooling: Turning Unit-Record Devices into Disk Files How simultaneous peripheral operations on line decouple card reading from job execution, what a spool data set must contain, and why the queue becomes the scheduler.
- Sep 13, 2025 Licensing a Patent Inside a Standard: RAND, Royalty-Free and the Gap Between Them What a standards body patent policy actually promises implementers, why RAND terms are vague by design, and how royalty-free commitments get conditioned.
- Sep 6, 2025 Two Address Spaces: Port-Mapped and Memory-Mapped I/O Decoding Why the 8080 family reserved a separate 256-byte I/O space, how the control signals distinguish it from memory, and what each arrangement costs in address decoding and instruction width.
- Aug 28, 2025 The IBM PC BIOS Standard and the Cost of Freezing a Firmware Interface What a ROM-resident interrupt interface guaranteed to software, how its fixed data structures blocked hardware progress, and why the replacement took the form of an emulated decades-old machine rather than a new specification.
- Aug 18, 2025 Statistical Multiplexing and the Case Against Reserved Circuits Why bursty traffic made end-to-end circuit reservation wasteful, how store-and-forward queueing turns silence into capacity, and where the packet argument stops being a win.
- Jul 30, 2025 License Compatibility and the Direction of Relicensing Combining two licensed works produces one distribution that must satisfy every condition in it; why permissive code can move into copyleft but not the reverse, and which patent and version clauses block a combination outright.
- Jul 15, 2025 Normative and Informative Text in a Specification Why specifications split their prose into requirements and commentary, how normative keywords bind an implementation, and where the split breaks down.
- Jun 6, 2025 Path Vectors, Policy, and Why BGP Does Not Minimize Anything How an exterior gateway protocol carries a whole path to detect loops, why the decision process ranks policy above distance, and what that costs at convergence time.
- May 26, 2025 Why Compatible Standards Still Fail to Interoperate The layers above the encoding where two conforming products diverge: version negotiation, timeouts, error handling and the assumptions each side makes about the other.
- May 22, 2025 Dynamic Address Translation and the 16 MB Line How a two-level segment and page table turns a 24-bit virtual address into a real one, why the page tables themselves had to live in real storage, and what the 16 MB ceiling forced.
- May 7, 2025 AIMD Congestion Control and the Collapse It Prevented Why additive increase with multiplicative decrease converges to a fair operating point, how the window is discovered without measuring the network, and where the control loop breaks.
- Mar 20, 2025 Zero Page Addressing and the Economics of Eight-Bit Instructions Placing the first 256 bytes of memory at the centre of the instruction set traded address range for instruction length, and shaped how eight-bit code was written.
- Feb 27, 2025 OAuth 2.0 and the Implicit Grant: Removing a Token from the Browser Why the implicit grant existed, what the browser redirect model made impossible to secure, and how the password and hybrid grants traded a front-channel leak for a different attack surface rather than eliminating it.
- Feb 1, 2025 The Analytical Engine Store, Mill, and Barrel Control How a planned 1830s engine separated storage from arithmetic, sequenced operations from punched cards, and used a studded barrel as a microprogram store.
- Jan 23, 2025 Optimistic Concurrency and the Conflict Check That Arrives Too Late How version-token conflict detection works in a replicated store, why it cannot prevent a conflicting write, and what the abandoned Bayou and Coda designs revealed about the cost of checking after the fact.
- Jan 9, 2025 Fitting FDDI Management into an 802 Frame: Ancillary Data and the Unused ALT Field How FDDI carried station management frames, what the alternative media access control field was specified to select, and why a general-purpose slot in a frame header did not produce the architectural flexibility its designers expected.
- Dec 27, 2024 How a Resident Monitor Chained Jobs Without an Operator The loop that read a control card, loaded the named program, and took control back when the job ended, and why an interval timer was required to make that loop reliable.
- Dec 26, 2024 Contribution Agreements: Certification, License Grants, and Assignment A project can only grant what its contributors gave it, so inbound terms are chosen from three mechanisms with different costs: a signed-off certification, a broad license grant to a steward, or a transfer of copyright.
- Dec 23, 2024 Cycle Counting When the Video Circuit Steals the Bus How display refresh suspends the processor on shared-memory machines, why the stolen cycles are unevenly distributed, and how timing loops are written so the loss is measurable.
- Dec 3, 2024 Storage Keys and Region Boundaries in Multiprogrammed Batch How a four-bit key attached to every 2 KB block of storage lets one batch partition be protected from another, and what the key cannot protect.
- Nov 19, 2024 NAT, Port Overloading, and the Address Exhaustion Boundary How one public address serves many private hosts through port translation, what the binding table must store, and which protocol assumptions a translator cannot preserve.
- Nov 13, 2024 The TCP/IP Split and the End-to-End Argument Why reliability moved out of the network and into the endpoints, what that costs in duplicated work, and how the argument constrains where a function may legally live.
- Nov 4, 2024 Classful Addressing, Subnets, and the Move to CIDR Why the fixed class A, B, and C boundaries wasted most of the IPv4 space, how subnetting borrowed host bits, and what prefix aggregation changed about routing.
- Sep 27, 2024 How argv and envp Reach a New Program Image The argument vector as a byte layout the kernel copies onto the new stack, the size limits that constrain it, and why the environment is a separate array rather than more arguments.
- Aug 7, 2024 Termination, Cure, and Enforcement of License Conditions A failed condition removes the permission rather than merely breaking a promise, so the GPLs terminate rights automatically and then offer defined windows to get them back; who can sue is decided by who holds copyright.
- Jul 22, 2024 One Rooted Namespace: How Mounting Replaced Separate Volumes Why Unix names every file under a single root, how mount grafts a filesystem onto a directory, and what the resulting ambiguity costs in path resolution.
- May 27, 2024 Segment Arithmetic and the One-Megabyte Wall How sixteen-bit segment registers produce a twenty-bit address, why the resulting space wraps at the top, and what the A20 gate and the high memory area cost.
- May 17, 2024 Profiles and Conformance Classes: Narrowing a Standard Without Editing It How profiles make a broad specification testable for a specific market, what a conformance class promises, and why profiles proliferate.
- Apr 5, 2024 De Jure Standard Versus De Facto Implementation What actually makes a specification binding, how a vendor artefact becomes the reference behaviour, and why the two kinds of standard diverge in court and in practice.
- Mar 23, 2024 The Stored-Program Idea and the Disputed First Execution How one writable memory holding both numbers and orders changes machine design, and why Manchester, Cambridge, and the ENIAC teams each claimed the first run.
- Mar 20, 2024 How Copyleft Travels Through Derivative Works The GPL binds works based on the original, not software on the same disk: how the license text draws the boundary, what conveying a binary obliges a distributor to supply, and where library and file-scope licenses shift the line.
- Mar 5, 2024 DNS Delegation, Glue Records, and the Referral Loop How authority for a name is handed down a zone tree, why a child in the same zone as its parent forces address records into the parent, and what breaks when glue is wrong.
- Jan 28, 2024 Reference Implementations and the Conformance Laboratory How a second independent implementation turns a specification into a testable claim, and what conformance suites certify versus what they leave to precedent.
- Jan 26, 2024 Pipe Buffers, PIPE_BUF, and the Absence of Message Boundaries Why a pipe is an uninterpreted byte stream with a fixed kernel buffer, what the atomicity guarantee for small writes actually covers, and how writers detect the reader is gone.
- Dec 22, 2023 Checkpoint and Restart: Making a Multi-Hour Batch Job Resumable What a checkpoint must capture for a job to continue correctly, why sequential files need repositioning information rather than byte counts, and how generation data sets make reruns safe.
- Nov 25, 2023 Why fork and exec Are Separate Calls The two-step process creation model, what fork copies and what copy-on-write defers, and why the split survives despite its cost in a program that only wants to exec.
- Nov 4, 2023 Punched-Card Encoding in Hollerith Tabulating Equipment How a pinned card completes a circuit into a mercury cup, what the hole pattern encodes, and why sorting a deck became the way to answer arbitrary questions about census data.
- Oct 13, 2023 Instruction Encoding on the Harvard Mark I Paper Tape How a 24-channel tape carries three eight-bit fields per instruction, what the index numbers address, and why a one-way sequence unit made program loops physical.
- Sep 15, 2023 Framebuffer Arithmetic: What a Bitmap Mode Costs in Memory Character cells versus linear bitmaps, the byte counts each requires at common resolutions, and why early machines split the difference with attribute bytes and planar layouts.
- Jan 30, 2023 Registry Allocation: First Come, First Served and Its Failure Modes How a single registry clerk in the early Internet years allocated namespaces, why the policy scaled badly, and what the replacement bodies inherited.
- Dec 30, 2022 X.400 Versus SMTP: When a Better-Designed Messaging System Loses How the OSI message handling system specified store-and-forward routing, naming and delivery reports, why its design was technically more complete than SMTP, and what prevented it from displacing an internet mail architecture that was already deployed.
- Nov 17, 2022 Colossus and the Counting Attack on Lorenz Wheel Settings How a hypothesised wheel pattern is compared against ciphertext character by character, how valve counters accumulate the statistic, and why the machine was built for one search.
- Jun 30, 2022 What a Software License Does to a Copyright Default Copyright reserves reproduction, modification and distribution from the moment code is fixed, so a license is a conditional permission that lifts specific rights; permissive and copyleft terms differ only in the conditions attached.
- May 24, 2022 Job Classes, Initiators, and How a Batch Queue Gets Ordered Why a batch scheduler separates jobs into classes consumed by independent initiators, what an initiator costs in storage, and how starvation and throughput pull against each other.