I can relate all too well the procrastination involved in fiddling with the typesetting engine! When I was writing my bachelor's thesis (in Philosophy, nonetheless!), I spent an inordinate amount of time on tweaking my LaTeX template and workflow.
I ended up falling way too deep into the Rabbit hole, and started using NixOS just to write the thesis itself. It did eventually result in a fun blog post, though!
He didn’t just write books on typesetting, he took a year off of work on Volume 2 of The Art of Computer Programming to _write a new typesetting system_. Naturally, he had to invent/implement vector fonts along the way. But even that wasn't quite enough, so he also took the time to invent literate programming, a style of programming where the source code is also a book with narrative structure to guide the user to a complete understanding of every nuance of the source code. If you compile the TeX source code one way, you get a program for typesetting documents. Compile it another way and you get a TeX document containing TeX: The Book. Same with the Metafont source code as well. All together I think it delayed Volume 2 by a decade.
And then he continued publishing books about typography, in his spare time, for the next few decades.
I have been guilty of doing this in so many contexts. Obviously with Latex while in college, later with logging libraries, with config libraries, with server frameworks etc. instead of doing the actual functional task at hand, the compulsion to play with tools, libraries and frameworks was strong. Lately, I'm convinced all these tools with their own DSL syntax, complex mental models and configuration options are just unnecessary cognitive overhead especially for a one-off task you do once in a while. We should make it easy to learn concepts with rich visual representation of the graphical interface and apply them on the fly – this saves cognitive load for the initial few iterations of the task. If the user finds themselves doing the task many times then they can advance to learn a DSL specific to that tool. Even here, I wish there was a widely accepted universal declarative syntax/grammar for all kinds of DSLs – configurations, policies, typesetting etc.
I finished my PhD almost 30 years ago, and finding the motivation to actually finish was as much of a problem as it is today. And tinkering with typesetting was a familiar procrastination magnet. My friends who used LaTeX easily tacked multiple months onto their effort, and my hunch is that CPU time was not the limiting factor.
My advice is: Remember, nobody's going to read it.
My parents' theses were about 50 pages, typewritten, equations and chemical diagrams entered by hand. The got the same grade as I did. ;-)
It’s a rite of passage with latex though. Each one of us has to spend the time and set up our own latex setup the first time we write using it. Hopefully never again though.
Spent my teens and twenties in mathematics departments. This is a very polarized behavioral pattern:
1. The majority of people just don't care very much. Just get LaTeX working locally, get it to run the packages you need - amsmath, etc. - and start working on your mathematics.
2. There is a large minority who dive deep into the rabbithole on their editing environment, typography, diagramming, etc.
Amusingly, you can tell how likely someone is to fall into either camp based on the amount of care they take with and over their notes (mostly hand-written in my day).
Same for my undergrad thesis. I learned so much more about the art of typesetting that year than I did about Hypergeometric Integrals or String Amplitudes: the topics of the thesis. That's why I left before doing a masters.
I wrote my PhD in LaTex with the simplest template I could find online (luckily someone had put one up formatted for my university's engineering department and I didn't have to mess with it almost at all).
But once I was done, I wanted to blow off some steam and started writing a silly little tabletop RPG. I decided the rulebook would be text-only for portability with box drawing borders and ASCII tables and stuff, so I spent the first week or so writing a small ASCII typesetting engine in Prolog (because logic programmer).
And then automated the ToC and section numbering .
And then I spent more time writing a vim syntax file so I could read the glorious ASCII with syntax highlighting.
It's a miracle that the developer of GNU roff actually managed to complete the suite before procrastinating big-time into SGML. AFAICT, he resisted even the urge to implement the roff dot command syntax on top of SGML SHORTREF.
That is incorrect. The first 3 volumes of "The Art of Computer Programming" were published in 1968, 1969, and 1973. Knuth started working on TeX in 1977, because he was disappointed by the quality of the galley proofs for the 2nd edition of TAOCP.
I ended up falling way too deep into the Rabbit hole, and started using NixOS just to write the thesis itself. It did eventually result in a fun blog post, though!
https://shen.hong.io/nixos-for-philosophy-installing-firefox...