The editorial frames ΠFS as 'the joke is the lesson' — a straight-faced implementation whose absurdity demonstrates one of the most important results in computer science: you cannot compress arbitrary data below its Kolmogorov complexity. The offset bookkeeping reveals the trick: storing an n-bit file requires an offset of size ~2ⁿ, so you've simply moved the bits from the file to the index.
Langdale built a working FUSE filesystem in ~600 lines of C, leveraging the Bailey–Borwein–Plouffe formula to compute arbitrary hex digits of π without computing preceding ones — the only reason the demo is even theoretically possible. The deadpan README and manpage present 'infinite compression' as a serious product pitch, making the technical craft inseparable from the comedic delivery.
By resurfacing a decade-old repo to 874 points, the submitter signals that the community still finds enduring value in ΠFS as a craft object — a piece of code that compiles, mounts, and works exactly as advertised even as the advertisement is a joke.
Philip Langdale's [ΠFS](https://github.com/philipl/pifs) — a FUSE filesystem that purports to store your files inside the digits of π — climbed back to the top of Hacker News this week with 874 points. The repo is over a decade old. It compiles. It mounts. The README is dead serious in its delivery and dead funny in its content: *"πfs is a revolutionary new file system that, instead of wasting space storing your data on your hard drive, stores your data in π."*
The pitch goes like this. Pi is (conjectured to be) a [normal number](https://en.wikipedia.org/wiki/Normal_number), meaning every finite digit sequence appears somewhere in its expansion. Therefore your file — which is just a finite sequence of bits — must appear somewhere in π. Therefore you don't need to store the file. You only need to store the offset at which your file begins, plus its length. Congratulations: infinite compression. Disk vendors hate this one weird trick.
The implementation uses the [Bailey–Borwein–Plouffe (BBP) formula](https://en.wikipedia.org/wiki/Bailey%E2%80%93Borwein%E2%80%93Plouffe_formula), which lets you compute the *n*-th hexadecimal digit of π without computing the preceding ones — the only reason any of this is even theoretically demoable. About 600 lines of C, a FUSE binding, a Makefile, and a straight-faced manpage. The repo's issue tracker is a museum of people earnestly asking why writes are slow.
The joke is the lesson, and the lesson is one of the most important results in computer science: you cannot compress arbitrary data below its Kolmogorov complexity, no matter how clever your indexing scheme.
Watch the bookkeeping. To "store" an *n*-bit file in π, you need an offset *k* such that digits *k* through *k+n* of π equal your file. If π is normal, such a *k* exists. But how big is *k*? On average, you'd expect *k* ≈ 2ⁿ — because you're searching for a specific *n*-bit pattern in a (presumably) random-looking stream, and the expected wait time for any specific *n*-bit sequence is exponential in *n*. The offset needs at least *n* bits to encode. You haven't compressed anything; you've laundered the bits through a transcendental constant and paid a CPU tax on the way out.
This is the same trap that catches every "infinite compression" scheme that periodically shows up on patent filings and crank forums. The 1990s had the [WEB Technologies](https://en.wikipedia.org/wiki/Jan_Sloot) compression scandal, where the inventor claimed he could fit a feature film in 8 kilobytes. The math is identical to ΠFS, minus the self-awareness. There are 2ⁿ possible *n*-bit files, and any lossless encoding scheme must produce 2ⁿ distinct outputs — by the pigeonhole principle, at least one of those outputs must be ≥ *n* bits. There is no escape hatch. Not in π, not in *e*, not in a neural net's weights.
There's a subtler point about *what* π gives you. Normality (still unproven for π, by the way — it's empirically true for the first many trillion digits but mathematically open) only says every sequence appears. It says nothing about *where*. A construction by Champernowne — 0.123456789101112... — is provably normal, and you can compute the offset of any sequence in closed form. But the offset of an *n*-digit sequence is still Θ(*n* · 10ⁿ) digits long. Normality is necessary for ΠFS to work at all; it is not sufficient to make it useful.
What ΠFS actually demonstrates, in a way no textbook chapter does, is that compression schemes are bijections between bit-strings, not magic: the entropy has to live somewhere, and if it's not in your file, it's in your index. Every senior engineer who's debated whether to "just gzip it," use Zstandard's dictionary mode, or train a domain-specific arithmetic coder is doing the same calculus. You trade decompression cost against storage cost. ΠFS makes the trade absurd — O(2ⁿ) compute for a saved n bits — but it doesn't break any rules.
The community reaction in the HN thread is half nostalgic chuckles and half new-graduate revelations. "I finally get why my professor wouldn't stop talking about Kolmogorov," reads one comment. Another points out that the same logic implies you could store any file as a Conway's Life seed, a SHA-256 collision, or a sufficiently large RSA key — and you'd be right, and you'd be doing the same useless work.
If you're shipping production systems, ΠFS is a checksum on your intuition. When a vendor pitches "30x compression with no quality loss" on arbitrary data, you should mentally insert π into the architecture diagram and see if the pitch still parses. Lossless compression works on the actual distribution of your data — text has structure, JSON has redundancy, embeddings have correlation — and it falls back to identity on noise. Anyone promising better than the source entropy is either describing a lossy codec, exploiting domain structure (and should say so), or wrong.
The practical mirror of ΠFS is content-addressed storage. Git, IPFS, BitTorrent, and every dedupe-enabled object store ask: given a cryptographic hash, can I recover the content? The answer is yes only because the content is stored *somewhere* — the hash is an index into a real backing store, not a generative oracle. The hash itself is information-theoretically incapable of producing the content. The fact that this is obvious for Git and seductive for π tells you something about how human intuition handles infinity.
There's also a generative-AI corollary worth chewing on. A 70B-parameter language model can "reproduce" passages of training text given the right prompt. Some have argued this means the model has "compressed" the training corpus. The Kolmogorov accounting says: only to the extent that the training corpus had less than 70B parameters' worth of entropy relative to the prompt distribution. Most of the time, the model is doing Champernowne-style indexing — the prompt is the offset, the weights are π, and the output is whatever was at that location in the data.
ΠFS will continue to resurface every 18–24 months, because there is always a fresh cohort of engineers who haven't been forced to confront the pigeonhole principle since their data-structures class. That's not a problem — it's a feature. A 600-line C joke that mounts as a real filesystem is a better introduction to Kolmogorov complexity than any lecture. If you're interviewing for a systems role, read the source. If you're hiring, ask a candidate why writes are slow. The answer is the entire computer science curriculum, told as a punchline.
Related. Others?πfs – A data-free filesystem - https://news.ycombinator.com/item?id=36357466 - June 2023 (107 comments)πfs – A data-free filesystem - https://news.ycombinator.com/item?id=28699499 - Sept 2021 (30 comments)PiFS – The Data-Free Filesystem - https:/&#x
Reminds me of nsafs, the National Security Agency Filesystem ("free" because the government pays for it) - https://github.com/freedomtools/nsafs
It is worth noting that as the length of data increases it becomes extremely unlikely that the index and length of the sequence within pi would actually be smaller than the data.
Reminds me of: https://www.spronck.net/sloot.htmlFurther reading: https://en.wikipedia.org/wiki/Sloot_Digital_Coding_System
Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.
Reminds me of when I tried to use the library of babel as a data compression tool. It led me down a fun rabbit hole and was my first introduction to information theory.The conclusion being that you basically need the same amount of data to represent the address of your data as the data itself, so it