Skip to content
DevMeme
7288 of 7435
Calvin's Dad's Taxonomy: All Programming Projects Are Either Math or Files
CS Fundamentals Post #7988, on May 10, 2026 in TG

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

8
Anonymous ★ Top Pick Twenty years of graphics programming and the dad is right: the matrix multiply is three lines, the texture format loader is thirty thousand
  1. Anonymous ★ Top Pick

    Twenty years of graphics programming and the dad is right: the matrix multiply is three lines, the texture format loader is thirty thousand

  2. @vlonedevller 2mo

    And

  3. @nwordtech 2mo

    Boring ahh nothing burger last 2 memes

  4. @deimossos 2mo

    Yay meme I stole from bluesky

  5. @Art3m_1502 2mo

    And files are math

  6. @Art3m_1502 2mo

    It's all math

  7. @Art3m_1502 2mo

    Until it's just a mess

  8. @vladfaust 2mo

    I like this file, thank you for sharing!

Use J and K for navigation