Calvin's Dad's Taxonomy: All Programming Projects Are Either Math or Files
Why is this CS Fundamentals meme funny?
Level 1: The Kitchen and the Pantry
A dad tells his kid there are only two kinds of jobs in a restaurant: cooking and carrying boxes. Fancy chef? Cooking. Delivery guy? Boxes. Then he points at the most glamorous job of all — the cake decorator, the one with all the artistry — and says: "Mostly boxes. She spends her day unpacking sprinkles and finding the right-sized containers." The kid lies awake that night because he can't prove dad wrong. The joke is that the flashy, brainy-looking work everyone admires usually turns out to be mostly moving stuff from one container to another — and once someone tells you that, you see it everywhere.
Level 2: Sorting the Buckets
What each classification in the strip actually means:
- Compilers → math: a compiler transforms source code through parsing, type checking, and optimization — work governed by formal language theory and graph algorithms. The "interesting" problems are provable properties, not I/O.
- Databases → files: under the SQL surface, a database's core job is arranging bytes on disk so reads are fast and crashes lose nothing. Storage engines, indexes, and logs — all file plumbing, elevated to an art.
- Machine learning → math: training is calculus (gradients) and linear algebra (matrix operations) at scale. Though ask any ML engineer how much of their week is actually
data_loader.py. - Operating systems → files: Unix's founding slogan is literally "everything is a file" — devices, sockets, processes all exposed through file-like interfaces. The dad is quoting kernel design philosophy whether he knows it or not.
- Computer graphics → files: the twist. Yes, it's built on geometry and matrices — but day-to-day graphics work is importing, converting, compressing, and streaming assets: models, textures, animations. Formats, not formulas.
The early-career version of this discovery: you join a game studio expecting to write shaders, and your first six tickets are about why the texture importer mangles file paths with spaces in them.
Level 3: The Asset Pipeline Ate the Linear Algebra
The edited Calvin and Hobbes strip has the dad announce a complete taxonomy of software engineering: "The two types of programming projects are math and files. All programming projects fall into these two categories." Then come the sorting rounds, exactly as printed in the panels: "Languages/compilers? Math. Databases? Files." — Calvin manages a wary "YEAH..." — then "Machine learning? Math. Operating systems? Files." And then the kill shot that puts Calvin wide-eyed in bed in the final panel:
Despite containing more math than almost any other type of programming project, computer graphics is usually files.
Anyone who has shipped a renderer feels this in their bones. The idea of computer graphics is gorgeous mathematics — projective geometry, quaternions, the rendering equation, BRDFs. The job of computer graphics is a customs office for data formats: glTF importers, texture compression variants (DXT, ASTC, BC7), shader permutation caches, mesh serialization, mipmap baking, endianness, alignment padding, and the eternal question of whether this particular PNG exporter premultiplied alpha. The matrix multiply is three lines and was written in 1998; the asset pipeline is the other 97% of the codebase and breaks every time an artist upgrades Blender.
The taxonomy is funny because it's secretly a statement about where engineering effort actually goes versus where prestige lives. Compilers get to be "math" because their hard part is the type system and optimization theory, even though they too end with object file formats. Databases are "files" because, beneath the relational algebra (math!), the defining battles are B-trees on disk, write-ahead logs, fsync semantics, and page layouts — the parts that page you at 3 AM are always the file parts. Even machine learning, sorted confidently into "math," spends most of its practitioners' hours wrangling datasets, checkpoints, and tensor serialization. The dad's framework survives every counterexample by reclassifying it, which is exactly how all grand engineering taxonomies work in practice — unfalsifiable, irritating, and correct just often enough to keep you up at night. Hence panel four: the canonical Watterson existential-dread frame, hair on end, model of reality quietly rewritten.
Description
A four-panel meme using an edited Calvin and Hobbes strip. Panel 1: Calvin's dad approaches Calvin at a record player saying 'Programming something? I'LL SHOW YOU SOMETHING INTERESTING.' Panel 2: the dad spins a record and proclaims 'The two types of programming projects are math and files. All programming projects fall into these two categories. Languages/compilers? Math. Databases? Files.' Calvin answers 'YEAH...'. Panel 3: the taxonomy continues - 'Machine learning? Math. Operating systems? Files. Despite containing more math than almost any other type of programming project, computer graphics is usually files.' Panel 4: Calvin lies awake in bed, hair on end, traumatized. The joke lands because the reductive dichotomy is uncomfortably accurate: most engineering effort in graphics pipelines really is asset loading, formats, and I/O plumbing rather than the linear algebra at its core
Comments
8Comment deleted
Twenty years of graphics programming and the dad is right: the matrix multiply is three lines, the texture format loader is thirty thousand
And Comment deleted
Boring ahh nothing burger last 2 memes Comment deleted
Yay meme I stole from bluesky Comment deleted
And files are math Comment deleted
It's all math Comment deleted
Until it's just a mess Comment deleted
I like this file, thank you for sharing! Comment deleted