Hate printers?
I used to be pretty comfortable with printers on UNIX-like operating systems.
That is, back before server-side rasterisation. Printers used to be these devices that you sent characters to, and the printer would put them onto paper, sometimes buffering them up until they had a complete line.
Effects could be selected using character sequences that could either be embedded into the stream of bytes to do things like selecting different fonts, overstriking the text and page control. Some UNIX systems would allow you to select filters to do some of the cleverer effects for you, but it wasn't standard between systems.
Printers like laser and Postscript printers introduced a different concept, one of page description languages. The filters that were selected would allow you to pre-format a print in the application, and pass a raw byte stream to the printer without change, or if you did not do this, assume plain text and wrap enough pre- and post-amble to print basic text. A bit of a pain to set up, but not overly difficult, and once it was done, it was done.
Things started going downhill when printers that required the computer to rasterise the page into some form of bitmap before being sent started appearing. At one and the same time, you could suddenly do proper WYSIWYG, and printers stopped accepting plain text and put it onto paper. Initially you would construct pipelines of commands called from the SYSV printer subsystem, often using enscript or Ghostscript to do the heavy lifting.
CUPS appeared, and for a brief period, as long as you (and CUPS!) knew the type of printer, it became simple again. I remember plugging an HP OfficeJet 5610 multifunction printer into Ubuntu 6.06, and it configured itself, and just worked. And it handled remote printing using lpd, for all it's flaws, seamlessly.
Then CUPS became cleverer, and dumber all at the same time. Cleverer, because it tried to configure everything for you, and become a network client and server, and dumber, because it often got it wrong!
This is the current state. It's optimised out of the box for modern printers, using IPP/IPPS over WiFi. It can get it right, sometimes. But try to do something else, like use a USB connected printer that uses a PPD file on one system from another across the network, and it gets it wrong more often than not. And use something unusual, like a receipt printer, or an old fashioned plotter, then you haven't got a hope that it will get it right (and the CUPS developers are actually suggesting you put it on some form of native port, like an RS232 line, and drive it directly without CUPS! Really, they are!).
But it's not just CUPS. So many applications, rather than using a set of fixed defaults, try to remember the settings you last used, and apply them to the next print. Yes, I know I did 2-up booklet double-sided on high quality A3 last time I printed on that printer, but now it's got ordinary A4 copier paper in the tray again, and I just want a single sided quick print!
My biggest fear is when my wife suddenly tells me that she has sent something to the printer, and it hasn't come out. So you go to the printer, and it's telling you to load C3 Envelopes, when you can be damn sure that was not what was wanted. You go back, and find that sometime earlier, the she had inadvertently let the mouse wander over the paper size box, and she must have hit up or down a few times, and it has selected and remembered whatever it was that was in the box when she eventually hit OK. And she's sent it several times, because when it didn't come out the first time, she tried again.
So yes. I hate printers, but it wasn't always so. All this technology, and it's more difficult to do than ever before. Progress? What progress?