Oh! I have thoughts about this one!
On my model, it's a matter of basically anything that turns Bits into Its being kinda cursed, especially if whatever process lacks human actuation or even oversight and isn't done to truly exacting standards. Printing is an example of this; 3D printing and general CNC is another; graphic design (and the depths of what a color is) is a third. I'm thinking of the kind of thing you might find on r/shittyrobots as well; a minimal non-example might be polypeptide/oligonucleotide preparation, though I'm not totally clear on the workflow there or how much human labor is involved.
My gears-level model here is most starkly illustrated by 3d printing - something about the physical object creation might change, or be underspecified, or rely on shoddily-made connectors of some kind, and in any case, the actual machine that does the actuating isn't set up to check for failures during workflow or indeed do much more than the simple actuation and an initial calibration step. On top of that, the thing goes from being data which is everywhere and wherever you want it, to being a specific thing in a specific place; often you don't even get to have the affordance of knowing in advance which place it is. Possibly even the yakshaving you notice is a matter of some kind of associated ugh field.
I definitely agree with everything that turns Bits to Its being kinda cursed. I think the natural phenomenon boundary is more general.
Here are some other examples of things which feel terrible in a qualitatively-similar way to printing:
One piece of what makes these feel similar is recursion - I go on a subquest to solve one subproblem, and that triggers a subsubquest to solve a subsubproblem, etc. One thing I notice about the examples is that the problems maybe typically have to do with assumptions at interfaces - e.g. the printer being out of paper isn't really about "Bits to Its", it's about a finicky machine having been designed with some assumptions about its working environment and those assumptions not always being satisfied.
Partial themes:
Relatedly, I often feel like I'm interfacing with a process that responded to every edge case with patching. I imagine this is some of what's happening when the poor printer has to interface with a ton of computing systems, and also why bureaucracies like the DMV seem much more convoluted than necessary. Since each time an edge case comes up the easier thing is to add another checkbox/more red tape/etc, and no one is incentivized enough to do the much harder task of refactoring all of that accretion. The legal system has a bunch of this too, indeed I just had to sign legal documents which were full of commitments to abstain from very weird actions (why on Earth would anyone do that?). But then you realize that yes, someone in fact did that exact thing, and now it has to be forever reflected there.
What this sounds like to me is a system, where all of the parts are designed cleverly with the assumption that their costs are going to be amortized, but because the current reality isn’t fitting the original assumptions, you’re hitting cache misses and full cost on every single operation
Hm. So it's some larger problem of which the Curse of It From Bit is a subcluster, then? If I've understood you right, this is also something I've spent time thinking about by way of finding them with my face. Something like... some unfeeling machine/system/structure that fails to live up to its own spec, or which has a bad spec or no spec at all, and which makes that state of affairs your problem, you silly goose who wants to actually do things, you. There's the flavor of that thing from Zen and the Art of Motorcycle Maintenance where there's this tiny trivial-feeling problem that humiliates you with a combination of feeling trivially small while nonetheless demanding close attention and deep understanding by way of being a critical blocker to solving whatever problem, I think? I think that the yakshaving bit is downstream of the spec failure piece - it seems like a common failure mode of degraded systems/designs.
I have a tentative model for this category of phenomenon that goes something like:
OK, but if that's the default state, then how do I explain the systems that aren't like that?
I don't think this invisible-maintenance situation describes the majority of systems, but I think it does describe the majority of user-system interactions, because the systems that get this sort of maintenance tend to be the ones that are heavily used. This creates the illusion that this is normal.
Some of the ways this can fail include:
Hmmm... I like the continuous maintenance model here, but I don't buy it as the main explanation for all the systems which aren't printer-like. As a counterexample: consider a table. Or a chair, or a whiteboard marker or toothbrush (which need to be replaced sometimes but don't have the deep-recursive-problems nature), or the chrome web browser (which works pretty consistently, and when it doesn't work a restart or reinstall basically-always works without any further recursive problem solving, even on my linux box). These don't require much continuous maintenance from the user(s).
It feels like there's something here about simplicity - e.g. tables, chairs, and whiteboard markers may have a surprising amount of detail if you look close, but they're still substantively simple in a way that printers are not. My current best articulation is roughly that printers have a more complex/narrower set of preconditions on their environment in order to work, whereas tables and chairs and the chrome web browser have a much simpler/more robust set of preconditions on their environment. The surprising detail of a table is mostly "internal" in some sense; it's in the design itself, not in the preconditions/assumptions made by the designer.
... but I'm not at all sure that that's the right way to think about it.
I guess it’s about entropy. Some items have more entropy than others. They have more parts and more possible states, and most of those states are misconfigured.
A table or a chair has most of its parts glued together in a fixed, low-entropy position, and has few parts to begin with.
A printer has many parts, both at the hardware and software level, and they can be in many states. It has paper, which can be in a state of having run out or not, and if it has run out, the supply can be almost literally anywhere. It has many intricate mechanical parts which can wear out at different rates, it has an ink cartridge that can dry out even when unused, and many intricate little parts that I don’t even know about.
On top of that, the software also has high complexity. Lots of software components, including the low level stuff that manages the actual printing, whatever needs to connect to the wifi, whatever is needed in case it can print from email, etc. all of these processes can run concurrently, which may introduce race conditions, any of these components may have a bug.
And then there’s the drivers installed on your laptop, which may be out of date, or your laptop’s drivers may be fully up to date but the printer software is out of date and your driver is no longer compatible with it.
Many components, many possible states, high entropy.
EDIT: also, I think a big part of it is that printers aren’t really tested for reliability. I used to work at a car manufacturer. Cars are hybrid software-hardware systems, and both sides of that equation are highly complex. Car engineering is a huge discipline that focuses aggressively on reliability. Even though car makers appear to come out with a new model every year, in reality they only change the cosmetics. The underlying platform usually only changes once every six years, and every version of the platform is aggressively stress tested in every possible way. The company I worked for had a test track in the coldest possible part of Canada, as well as in Death Valley, because reliability testing has to be aggressive and thorough.
Also the software side used special, hardened compilers that only supported a subset of the programming language, and were rarely changed. Getting a contract to supply a car company with a critical tool like a compiler is a hugely profitable multi-year deal, because they are happy to pay for reliability and reluctant to change something that is working well.
I bet nobody really cares about the reliability of printers to the same extent, and they have huh entropy, so they generally suck.
I would agree that, while reality-in-general has a surprising amount of detail, some systems still have substantially more detail than others, and this model applies more strongly to systems with more detail. I think of computer-based systems as being in a relatively-high-detail class.
I also think there are things you can choose to do when building a system to make it more durable, and so another way that systems vary is in how much up-front cost the creator paid to insulate the system against entropy. I think furniture has traditionally fallen into a high-durability category, as an item that consumers expect to be very long-lived...although I think modernity has eroded this tradition somewhat.
idk, i don't print stuff that often, but printing mostly just works for me. it's not always smooth sailing, but it's not any less smooth sailing than anything else i deal with when running ML experiments
I mean, I think running ML experiments is like the other most cursed thing that I feel like I have to interface with on a regular basis.
I've been recently irritated at something that feels vaguely similar with regards to research loops. Walking through this example...
I note that most of those problems have little to do with the printing technology, and mostly about poor organization around that technology.
Friction sources
What common threads can we see?:
I see a few directions we can take it.
In what other situations does this show up? An obvious example are various bureaucratic procedures, which require some research to make sense of, and where a small typo/mistake in your documents might lead to having to schedule another appointment next hour/day/month. That is: a procedure you'd plausibly interact with only one/a few times in your life is managed by people who interact with it constantly, and the bits of friction you run into are not obviously catastrophic, so those people are not forced to make things easy for first/imperfect/inexperienced users.
Note that the full thing is not necessarily easy to fix, much like e. g. technical debt isn't[1]. The work to keep systems easy-to-interface-with is, as usual, a battle against entropy. Overall, I feel this problem is just another manifestation of that one.
Things could certainly be made much better, though, by both:
And indeed, technical debt is another instance, where, for programmers maintaining a codebase, it's no-one's first priority to make it easy to understand/modify/interface-with for a one-time user.
Potentially the "inconsistent printer behavior" is downstream of that, by the way. Perhaps there's no obvious correct/convergent way to interact with low-level printer software, so each app's designers had to take their own approach, so there are inconsistent behaviors across apps.
I notice that everything you list has to do with finding things. This matches my expereince. Printing is hell when ever I try to prin somewhere new. And since I print so rearely now days, this is the typical expereince. But I remember a time where I printed more often, then it was molsty just click "print" and it worked.
It seems like printers are built to be set up onece, and then be your forever printer? Which is no longer a good match for how you (and me) use printers.
A key problem is that the responsibility for the problem is separated over multiple different stakeholders that all matter.
In your example, it sounds like the main problem is with the facility management that doesn't seem to consider printers as something that they should organize in a sensible way.
When it comes to printing, many times I want to print, I don't really want to get a piece of paper but want to send a letter. Software like Google Docs could just give me a "send a letter" and "send a fax" button and let me pay for the service.
One aspect of this that i think is potentialy significant is processes which 'stick' in a non-working state.
I have on several occasions gone on the quest to find paper or ink, only for the printer to spit out 100 pages that other people had queued up when that resource was depleted. Those other people all, presumably, knew their document had not printed but decided not to get ink or paper. (Maybe their print wasnt that important to them. Maybe the instruction 'check paper in drawer B2' on an unfamilar machine was intimidating).
As i brought the paper/ink to the printer and reflected on the time it had taken, i consoled myself that it was now fixed, not just for me but for those who followed. I had unstuck the process for everyone. However, the queued up documents of people who had already given up, peehaps days ago, plus my print put us back into low-ink territory.
Compare this to stairs. Imagine i put an annoying to move barrier in front of the stairs somewhere. The first person would arrive, and remove it, and then it would inconvenience zero additional people.
I am not sure if printers jam, break oe run out of ink more often than most machines. I am sure that when they do they stay down longer.
A related contributing factor. Every organisation i have been in discourages printing when it 'isnt nesseaary'. This means that some of the people leaving the printer in the stuck position are doing so because they worry that if they start asking where the ink is kept someone might badger them about whether the print they are doing is nessesary. If people have a low level sense of guilt (perhaps enviromentalism related) when they are dojng somethjng they are less likely to ask for help in ways that draw attention.
some examples of things that may be like this, human generated list, varying confidence and specificity:
some things that seem not like this:
the generator that feels live to me here is like, things where entropy* accumulates in interfaces or is generated in interfaces in the system somehow. many of them involve human-generated complexity, but that seems optional; seems like you can get this in pure math between conflicting formal systems, where you need a theorem connecting things even though pre-theoretic intuitively they're "obviously" the same thing (of course that "obvious" is sometimes wrong).
* except maybe not literally entropy, but rather like, boundedly-rational unpredictability. I guess by some definitions that's entropy - the definition would involve microstates not predicted by a macro model, and in this case the macro model would be the simple view of a system.
pure math
Actually, I have been diving into some specific topics lately, and simultaneously formalizing the theorems in Lean to help with understanding. The amount of omissions and handwaving going on in "proofs" in textbooks is insane. (To the point where I am not smart enough to figure out how to fill in some omissions.)
And I know that textbooks often only present a summary of a proof, and cite a more detailed source. But sometimes there is no citation at all, and even in cases where a citation exists, it might not contain the missing details.
seems like you can get this in pure math between conflicting formal systems
Hm... I don't feel like this is what's happening in most cases I encounter? Once I have a detailed pen-and-paper set-theoretic proof, it's mostly straightforward to translate that to Lean's type theory.
There are many perverse incentives in this field.
Companies lose money on printers so are not incentivised to make them better
Customers don't see printers as a purchased good to be optimized, but rather an annoying cost to be minimized
Both see the technology as old and obsolete and only still being used because of ignorance and cheapskate government agencies and companies who haven't gone digital yet, so there is only downward pressure on quality. No luxury models or frontier of development etc.
I don't know that anyone is actually rewarded for trying to make things better.
Two easily solvable problems here.
No paper
Say, I want some tea. I go to the kettle and see no water there. Okay, I look for the water to discover that water filter pitcher is also empty. I'm looking at the kitchen sink to pour some water into the pitcher, but see that it is overfilled with dirty dishes. I open dishwasher to see the dirty dishes there too.
So you have some resource (filtered water, paper) that could run out when it happens unexpectedly it takes time to refill. However marginal cost is minimal - taking 2 packs of paper vs 1 is trivial compared to looking for where to take the 1st one.
Solution: have a reserve pocket of resources stashed nearby, with clear common knowledge that whoever takes the reserve, must refill it and also refill the main stack. For example, have a pack of paper in clear vicinity of your printer marked as reserve; with clear indication that it is reserved, and you have to refill it. Having a coffee maker that can be used as a source of filtered water. etc.
Don't know where the paper is
See also: what the heck this script does? Or: what is this assembly kit for?
Solution: readme. Put a sticker on the printer saying where the paper is, and also saying to update it if it is not true anymore. Add readme.md to the folder with the script. Put a little note saying what assembly kit is for in the ziploc with the kit. Context dependent helpful notes are very underappreciated.
General observation
My workflow in last 2 jobs, if I already printed something in last 3 months:
After a change of laptop / floor / other size instead of the usual A4 / fiddling with booklets / ...:
Almost forgot - being in a hurry almost certainly triggers the second path through the workflow.. no idea what's the mechanism for that tho, probably availability bias.
Maybe this works: Buy a printer that is known to work correctly with a driver that is included in the Linux kernel.
My Claude says this:
There is a standard—IPP—and if universally adopted, it would mean plug-and-play printing across all devices and printers without manual driver installation, vendor software, or compatibility headaches.
But printer manufacturers have weak incentives to fully adopt it because proprietary protocols create vendor lock-in and competitive moats.
Standards require either market forces or regulation to overcome individual manufacturer incentives to fragment. IPP is gaining ground—Apple's AirPrint is basically IPP, forcing many manufacturers to support it—but full adoption isn't there yet.
The "why don't we just" question usually has the same answer: because the entities with power to implement the solution benefit from the current fragmentation.
As for the magically moving printers. That is just people being incompetent. If you have a printer you should give it a name according to the room it is in, and your rooms should be labeled sensibly (e.g. have floor number, and cardinal direction based on where the nearest outside wall is facing, etc., in the name.)
Last time I printed a document, I wrote down the whole process:
Note that I've had this post in mind for a while now and so decided pretty early on to write down the steps; I don't think this experience is very cherry-picked. On a gut level, this level of crap is basically what I normally expect when attempting to print something.
What's up with this? Why is printing so bad?
It feels to me like there's some kind of simple underlying principle to be understood here, a principle of when and why and how this kind of friction shows up in day-to-day life and what specifically it looks like. And it whatever that principle is, it feels like it's one of the central drivers of our world, on a similar level to things in the Gears Which Turn The World posts or Worlds Where Iterative Design Fails or The Expert. It feels like a core thing to understand, if one wants to Get Shit Done to a far greater extent than is currently possible.
Printing is a particularly convenient use-case to focus on because the misery of printers is already a meme; people joke about it frequently. Often this kind of friction seems antimemetic and hard to legibly point at, so it's useful to already have a spotlight on it. And of course, I'm skeptical of principles people present which don't come from looking at some real-world examples and figuring out what unifies them; thus the importance of having a common everyday phenomenon (like printing) to look at in order to back out the principle.
So, the question: what do you notice, when you look for patterns in your own miserable printing experiences? What are the exact boundaries of this phenomenon? What underlying principle might drive it? When and how precisely will the drivers of bad printing generalize to the rest of our world?
Why is printing so bad?