Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.

Showing 1–20 of 509 articles

  • The Shift of Theseus — Toy Bit Provenance Abstract Domain

    CF Bolz-Tereick extends PyPy's Toy Optimizer with a bit provenance abstract domain that tracks where each bit of a value came from, letting the JIT recognize shifts, masks and identities across instruction sequences that a known-bits domain misses, with transfer functions, rewrite extraction and an evaluation on Pydrofoil and PyPy.

    Research · Compilers · Python · Programming

    25 min · 5,858 words

  • Billion-query-per-second lookup tables in C++

    Daniel Lemire shows how to replace std::unordered_map for small, compile-time-known string sets (HTTP methods, headers, keywords) with a constexpr perfect hash, cutting each lookup to a single comparison and about five cycles, and shares a single-header C++ library and benchmarks built with Francisco Geiman Thiesen of Microsoft.

    Blog post · C++ · Performance · Programming

    5 min · 1,221 words

  • Stalwart v1.0: The Fastest Mail Server on the Planet

    Stalwart's maintainer announces v1.0 of the Rust mail and collaboration server five years after its first commit, focused on performance work (SIMD/SWAR parser rewrites, profiling-driven optimisation, benchmarks) and finalising the on-disk data format.

    Announcement · Open Source · Programming · Email · Rust

    14 min · 3,170 words

  • Why I am a programmer

    Alfie John recalls growing up before the mainstream internet, trading pirated games on floppies, discovering BBSes and the demoscene's cracktros, and finding Denthor of ASPHYXIA's VGA demo trainer tutorials in Turbo Pascal, which made him decide he wanted to make demos and become a programmer.

    Essay · Programming · History · Culture

    4 min · 1,017 words

  • writing about pratt parsing so I remember it

    A hands-on walkthrough of Pratt parsing for C expressions: why it rarely shows up in standard compiler courses, how binding power handles precedence and associativity, and how prefix, infix and postfix subroutines keep the parser core small, with pointers to Crafting Interpreters.

    Tutorial · Programming · Compilers

    5 min · 1,260 words

  • Joy & Curiosity #103

    Thorsten Ball's weekly link roundup, written after two weeks in New York and San Francisco: a new Raising An Agent episode on how Amp operates, notes from a talk to an investment bank on using coding agents, and commentary on AI, software and writing links including Dan Luu on ambitious software.

    Blog post · AI · AI Agents · Software Engineering · Programming

    8 min · 1,937 words

  • GOTO Considered Totally Sick (for error handling in C)

    Returning to C after years of Go and Zig, the author misses defer and errdefer, and after reading John Carmack's emails on inlined code shows how a single goto cleanup label makes C error handling simpler: resource cleanup lives in one place at the end of the function instead of being duplicated at every failure point, the same centralized-exit pattern the Linux kernel coding style recommends.

    Blog post · C · Programming · Software Engineering

    5 min · 1,204 words

  • Decompiling Fast Food Tycoon 2: Drawing the World

    Andrew Healey decompiles the 2001 business sim Fast Food Tycoon 2 (Pizza Connection 2) to show how it rendered its detailed isometric cities: the overworld map, lighting, the animated cast of citizens, branch interiors, and the hidden simulation details behind them.

    Blog post · Game Development · Reverse Engineering · Programming

    7 min · 1,551 words

  • Building Java ME Apps with Modern Tooling

    ROllerozxa walks through building Java ME (J2ME) apps for old feature phones with modern tooling: OpenJDK 8, MicroEmulator stub JARs for the CLDC 1.1 and MIDP 2.0 APIs, compiling with javac, packaging the JAR, preverifying with ProGuard, getting it onto a phone, and the platform's limitations.

    Tutorial · Programming · Java · Retro Computing

    7 min · 1,668 words

  • Introducing the HTML-in-Canvas API origin trial

    Chrome announces an origin trial for the experimental HTML-in-Canvas API, which lets developers draw live DOM content into a 2D canvas or WebGL/WebGPU texture while keeping it interactive and accessible, with examples, use cases and resources.

    Announcement · Web Development · Programming

    9 min · 1,983 words

  • The Hibernate Origin Story (Outsider Edition)

    Charles Miller recounts, as a bystander in the room, how the Hibernate Java persistence library grew out of work at Sydney company Cirrus Technologies around 2001, why its root package was cirrus.inf, and how it came to be released under the LGPL.

    Essay · Programming · Open Source · History

    5 min · 1,066 words

  • The glorious @xkcdRandom Zig builtin

    Adolfo Ochagavía forks the Zig compiler to add a tongue-in-cheek @xkcdRandom builtin that always returns 4, using the joke as a hands-on tour of how Zig builtins are declared, analyzed, and lowered inside the compiler.

    Blog post · Programming · Zig · Compilers

    3 min · 605 words

  • OrgWebAlchemy: Benchmarking, Profiling, and the Long Road to Real Org Support

    Josep Bigorra details how the Guile OrgWebAlchemy Org-mode parser gained Markdown output, figures, named elements and table rows, and got up to 6.4x faster after profiling uncovered a quadratic collapse pass and a per-character scanner.

    Blog post · programming · lisp · performance · open-source

    26 min · 6,059 words

  • Software is slow because of bad design, not slow languages

    Sean Goedecke argues that rewriting programs in C or Rust (with or without AI) rarely makes them much faster: most software is I/O-bound, slow languages already delegate hot paths to fast libraries, and real speedups come from redesign.

    Essay · programming · performance · software-design

    5 min · 1,229 words

  • Debunking "Faster than Rust": Malicious Benchmarks in Tov

    Fyra Labs examines three benchmarks behind claims that the Tov language (TypeScript-like, compiled via C) beats Rust, argues they are crafted to slow Rust down, and shows improved Rust versions match or beat Tov.

    Blog post · Programming · Rust

    12 min · 2,655 words

  • Reverse engineering a Beyblade launch tracker

    Simone Marzulli describes getting hooked on Beyblade X, then reverse engineering the Beybattle Pass launch tracker: sniffing its Bluetooth traffic, decoding the payloads that record each launch's RPM, and building DiZZi 0.2, an AI companion app inspired by the anime with a spinning 3D bey and voice callouts.

    Blog post · Reverse Engineering · Hardware · Programming

    17 min · 3,852 words

  • Attention people who think UB is fine

    Thomas Habets follows up his post on undefined behaviour in C with a concrete example showing that UB is not 'at worst a segfault': the same line can run whatever is next in memory, write a random value and crash, or do what you naively expect.

    Blog post · Programming · C · Compilers

    3 min · 609 words

  • How close can pure FP get to C?

    Richard Feldman takes up the lean-zip versus libdeflate result and explores how far a DEFLATE implementation in Roc, a pure functional language, can be pushed toward C performance, with benchmarks, compiler work, and reproduction scripts.

    Blog post · programming · functional-programming · performance · compilers

    41 min · 9,413 words

  • Docker is weird

    Nick of Code and Cake shares surprising lessons from starting a hobby container runtime: containers are just restricted processes built from several Linux kernel features, images are just folders, Go is awkward for a runtime, and rootless networking must be reimplemented in userspace.

    Blog post · Containers · Docker · Programming

    2 min · 490 words

  • Script dependencies with Nix

    kqr of Entropic Thoughts shows how to use a Nix flake on any Linux distribution to manage a simple script's dependencies, packaging a Python text-to-speech script as a binary and then adapting the approach to other languages.

    Tutorial · Nix · Python · Programming

    8 min · 1,907 words