the-codex/005/codex-005.tex

386 lines
22 KiB
TeX

\documentclass[twoside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage[nott]{kpfonts}
\usepackage{float}
\raggedbottom
\usepackage{array}
\usepackage{multirow}
\usepackage{gensymb} % Just for the degree symbol
\usepackage{ccicons} % Creative Commons icons; now we can delete an image
\usepackage{lettrine} % Drop caps
% Where are our images?
\graphicspath{{images/}}
% Let's set this as a half-letter sized sheet
\usepackage{geometry}
\geometry{
paperheight=8.5in,
paperwidth=5.5in,
% heightrounded,
margin=0.5in
}
% Adjust the top and bottom margins
\addtolength{\topmargin}{0.4in}
\addtolength{\textheight}{-0.75in}
% Set the header style
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\textit{the codex}}
\fancyhead[RE,LO]{Issue \#004}
\cfoot{Page \thepage}
\renewcommand{\footrulewidth}{0.5pt}
% Include two- or three-column sections
\usepackage{multicol}
% Stop resetting the footnote count after each chapter
\counterwithout{footnote}{chapter}
% Let's wrap some images
\usepackage{wrapfig}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Adjust spacing before chapter titles
% See https://tex.stackexchange.com/a/488653/245702
% and https://tex.stackexchange.com/a/40001/245702
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}
{\chaptertitlename\ \thechapter}
{20pt}
{\Huge}
\titlespacing*{\chapter}{0pt}{0pt}{40pt}
% Use tab stops when we need to (especially in footnotes)
\usepackage{tabto}
% Define 18 tab stops (at 1/4" intervals)
\NumTabs{18}
% Make things neater. Thanks /u/-LeopardShark-
\usepackage{microtype}
% Easy tables
\usepackage{tabularray}
% Make a nice border and box for the tops of our examples
\newcommand\klab[3]{\vspace{#1}\noindent{}\hrulefill\fbox{\texttt{~#2~}}\hrulefill\vspace{#3}}
% Add an \hrule with space above and below
\newcommand\krule[2]{\vspace{#1}\hrule\vspace{#2}}
% Make hrefs easier (must load package hyperref}
\newcommand\kref[2]{\href{#1}{{\texttt{#2}}}}
% Rotate text in tables easier
% https://tex.stackexchange.com/questions/89115/how-to-rotate-text-in-multirow-table
\newcommand\krot[3]{\parbox[t]{#1}{\multirow{#2}{*}{\rotatebox[origin=c]{90}{#3}}}}
% Make diversions easier (and uniform!)
\newcommand\kdivb[2]{
\medskip
\hrule
\medskip
\noindent{}\textbf{#1}
\vspace{#2mm}
\begin{multicols}{2}
}
\newcommand\kdive[1]{
\end{multicols}
\vspace{#1mm}
\hrule
\medskip
}
% Delete later
\usepackage{lipsum}
% For hanging indents in a script
\usepackage{hanging}
% Use line numbers with code samples
% \begin{Verbatim}...\end{Verbatim} <-- Note the capitalization!
\usepackage{fancyvrb}
% Break lines inside this environment:
\usepackage{fvextra}
% Control spacing in lists
\usepackage{enumitem}
% Don't force text to fill page
\raggedbottom
% Better control over line-spacing
\usepackage{setspace}
% Use nice fractions
\usepackage{nicefrac}
% Keep the footnotes at the bottom of the page
\usepackage[bottom]{footmisc}
% Do we want to include URLs?
% Yes, but we also want to hide the big red box it puts around them in the pdf. Thanks /u/0b0101011001001011
\usepackage[hidelinks]{hyperref}
% Adjust space between caption and figure
% https://tex.stackexchange.com/questions/45990/how-can-i-modify-vertical-space-between-figure-and-caption
\setlength{\belowcaptionskip}{4pt}
% Just for issue #005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Document Information %%%%%
\author{Kenneth John Odle}
\title{
{\Huge the codex} \\
{\footnotesize Life with Linux — A Zine \\
\bigskip
Typeset in \LaTeX{} \\
Issue \#005}
}
\date{\begin{small}\today{}\end{small}}
% Change the name of the TOC
\renewcommand*\contentsname{In This Issue…}
\begin{document}
\maketitle
\section*{Impressum}
All contents \copyright2024 Kenneth John Odle
Although this is now in your hands, and it's also on the web, so if you really wanted to steal this, I've made it pretty darn easy. I can't imagine why anyone would want to, though. However, you don't need to, because this is licenced under a CC BY-NA-SA 4.0 Creative Commons license. More information is at
\kref{https://creativecommons.org/licenses/by-nc-sa/4.0/}{https://creativecommons.org/licenses/by-nc-sa/4.0/} \ccbyncnd
\medskip
FYI, this is made in \LaTeX \,using the report document class. It then gets exported to a letterhalf (5.5 in x 8.5 in) pdf, which then gets made into a booklet using PDF Booklet, which you can find at
\kref{https://pdfbooklet.sourceforge.io/wordpress/}{https://pdfbooklet.sourceforge.io/wordpress/}
The image of Linus Torvalds on the front cover is courtesy JericoDelayah from the WikiMedia Commons and is at \kref{https://commons.wikimedia.org/wiki/File:4_RETAT_04_Linus_Torvalds.jpg}{https://commons.wikimedia.org\\/wiki/File:4\_RETAT\_04\_Linus\_Torvalds.jpg} where you can also find a link to the Creative Commons CC BY-SA 3.0 license there, as well.
I'm pushing this to my own git server as I write this. You can find it \href{https://git.kjodle.net/kjodle/the-codex}{here}: \kref{https://git.kjodle.net/kjodle/the-codex}{https://git.kjodle.net/kjodle/the-codex}. New issues will be pushed after they are complete. A list of topics I may cover in the future can be found at \kref{https://git.kjodle.net/kjodle/the-codex/wiki/List-of-Future-Topics}{https://git.kjodle.net/kjodle/the-codex/wiki/List-of-Fu\\ture-Topics}.
You can just skip over all the diversions in here if you want. It's just how my mind works. (And yes, there will be politics in this. \textit{You have been warned.}) Also, I use a lot of em-dashes, parentheses, and footnotes because that is also how my mind works. It's just one big long stream of consciousness up in here most days.
If you want to donate financial support for the creation of this zine (and all the hours of research that go into it), you can do so at
\kref{https://paypal.me/kjodle}{https://paypal.me/kjodle} (Thanks!)
\medskip
\noindent \textbf{Errata:} To err is human, to document those errors is divine. A list of errata can be found at
\kref{https://git.kjodle.net/kjodle/the-codex/wiki/Errata}{https://git.kjodle.net/kjodle/the-codex/wiki/Errata}.
\medskip
\noindent \textbf{Credit where credit is due:} A lot of people have come forth (mostly from Reddit) to help me out in various ways. See the preamble to this document in the source code to see them. One aspect of our society is that nobody \textit{has} to help you. It is wonderful when it happens, and I am grateful for their help.
\tableofcontents
\chapter{The Salad Days Are Over}
\section{Yesterday}
I emerged from college with a second degree and a newly refreshed teaching certificate. My grades were good enough that I managed to earn a place in Sigma Tau Delta, the International English Honor Society.\footnote{\kref{https://www.english.org/}{https://www.english.org/}} I had a website, and had recently installed a Wordpress blog to talk about books.\footnote{\kref{https://bookblog.kjodle.net/}{https://bookblog.kjodle.net/}} ``Web 2.0'' was a buzzword and we still thought that social media could transform the world for the better.
We were wrong. Social media is a great way to make the world better. It's also a great way for nut jobs and conspiracy theorists and racists and fascists to connect with each other and increase their levels of hate and ignorance exponentially. What have we done?
\kdivb{Oh gosh, it's a diversion already.}{-2}
The problem with social media is that while you can broadcast to the world, the reality is that it quickly becomes an echo chamber. You follow people who have the same interests you do, and they follow you back, and it quickly becomes a community. This is a good thing, and this is pretty much where we thought social media would go.
The problem is that some people don't realize that a community is not the same thing as the entire world. If you are one of these people, and you only follow people who agree with your viewpoints, you start to think that the entire world (or the vast majority of it) thinks this way and that you are obviously in the very, very, very large majority.
Of course, you probably aren't. You're just a victim of selection bias.
What this means is that the people you've surrounded yourself with haven't been selected at random. You've selected them precisely because they share the same beliefs that you do. This is not a problem. The problem is thinking that the rest of the world looks like this group of people and then assuming you must be correct because ``everybody else thinks like this too.''
There are two great examples of this, one a comedy routine, one a presidential election (and so, yes—this matters).
The first one is a comedy routine by George Burns and his wife Gracie Allen which was broadcast on their radio show during the height of the Great Depression. This was a period in United States history when telephones were just becoming a widely available household appliance, but most people couldn't still couldn't afford them. I don't recall the skit exactly, and despite literally seconds of searching the web, I haven't been able to find it. But it went something like this:
\vspace{\baselineskip}
\begin{hangparas}{5mm}{1}
\noindent{}\texttt{George: What have you been doing lately, Gracie?}
\noindent{}\texttt{Gracie: I've been doing a survey to see how many of our friends have telephones.}
\noindent{}\texttt{George: And how many of them do?}
\noindent{}\texttt{Gracie: All the ones I've called.}
\end{hangparas}
\vspace{\baselineskip}
The point here is that of course anyone you call on the phone will have a telephone. Audiences in the 1930s understood this—and unfortunately they also understood the ``smart man/stupid woman'' trope as well.
The other occurred during the 1936 presidential election when a publication called \textit{The Literary Digest} predicted that Republican presidential candidate Alf Landon would win the election. Of course, this did not happen, and their margin of error was huge—almost 40 percentage points.
The problem was that the magazine employed a faulty polling technique, and so didn't capture a random sample of the population. It first surveyed its own readers, and then it surveyed two other readily available lists—registered automobile owners and registered telephone users.
At the height of the Great Depression, most people couldn't afford a magazine subscription, much less an automobile or a telephone, and these people tended to vote for Democratic candidates. The inaccuracy of the poll ruined the magazine's reputation, and it ceased publication two years later. (In point of fact, they not only failed to find a random sample, they relied solely on people who responded to their poll, and such people responded because they were vehemently opposed to Roosevelt. This is an example of ``non-response bias'' or ``participation bias'' but the point is the still the same—they failed to select a random group of people to poll.)
\kdive{-1}
And this is what comes after.
\section{Today}
I am in a very different place now than I ever thought I would be. I'm not on Plan A or Plan B. In fact, I've pretty much run out of alphabet to describe exactly where I am now.
So where am I?
I work as a data reviewer for a contract research organization in the pharmaceutical industry. That means that drug companies send us samples of their products, and we test them for things like assay, impurities, appearance, disintegration, etc. People who majored in chemistry run the tests and I sit there and look at their procedures and results and make sure that everything was performed correctly and that the results are, indeed, valid.
In theory, I'm an analytical chemist. In practice, I'm a nerdy science accountant who spends his day with his nose buried in Excel spreadsheets. A \textit{lot} of Excel spreadsheets.
Except that I also used to design websites, so my spreadsheets are easy on the eyes, color-coded, and logically oriented—that is, they take you through the analytical method in a step-wise, chronological manner. In other words, we look at standard concentrations first, and then our system suitability tests, and then the actual tests. Every cell is also labeled, so it's clear what goes where. My boss admires them and I am justifiably proud of them. After all, these aren't just your ordinary, run-of-the-mill spreadsheets we're talking about here.
My spreadsheets are so beautiful that when my boss got a glimpse of them he immediately placed me in charge of mentoring new data reviewers, mostly so that they could see what my spreadsheets look like. And I get it. I worked really hard to make spreadsheets that are understandable not just to me but everybody because we may have a corrective action come up at some point and we need to be sable to see how we arrived at the results that have. So yep, I strive to make all my spreadsheets consistent and understandable to someone who has no familiarity with them.
\medskip
\texttt{tl;dr:} I'm \textit{really} good with Microsoft Excel.
\medskip
But it's not satisfying work. It pays the bills\footnote{Well, barely, after the recent fit of massive corporate price gouging—I mean, er…inflation.} It's not exactly the hind end of science, but it's close. (I once worked in a lab that did non-clinical testing\footnote{i.e., rats and mice} and believe me, \textit{that} is the hind end of science.\footnote{Science actually has many hind-ends. This is but one of them.}) I'm not really doing science; if anything I'm just a science accountant, making sure the books balance. It's boring—\textit{really }boring—and more than a bit mind-numbing.
Considering that my entire job exists to help keep the drug supply safe (well, the \textit{legal} drug supply anyway) safe that statement may sound frightening or even disturbing. But it's not really. You want this job to be boring. When it's not boring, it's generally because something has gone wrong, and and this is one of those industries (like nuclear energy or airplane manufacturing) where you really don't want things to go wrong.
\section{Tomorrow}
\chapter{Dependency Hell}\label{dephell}
\section{Multiple Paths to \textit{Almost} the Same Destination}
I use Okular as a pdf viewer. Even though Ubuntu has a default pdf viewer, it doesn't have a lot of features and is unreliable in some ways. Okular has always been a better choice for me.
The problem is that there is no perfect way to install things in Linux. There are many different ways, and some ways are better than others. I had originally installed Okular from the GNOME Software. The version it installed was an older one though, and it would not update to a newer version that had a feature I wanted.\footnote{Specifically, the option to view bookmarks from a single pdf document, rather than all of them. I get why you \textit{sometimes} might want to view all the bookmarks to a single document, but it doesn't make sense to me to have that on all the time.}
I decided to uninstall that one and install it from Flatpak. This gave me the latest version (24.05.1) which did have this feature. The problem then became that Okular would not open new documents in tabs—it opened each one in a separate window, which I just find annoying. This works if you use \texttt{File $\rightarrow$ Open} to open your pdfs, but who does that? That's the point of a GUI—you can just double-click on files to open them.\footnote{As it turns out this is not so much an Okular issue as it is an ``Okular in Flatpak'' issue. See \kref{https://github.com/flathub/org.kde.okular/issues/36}{https://github.com/flathub/org.kde.okular/issues/36} and \kref{https://bugs.kde.org/show_bug.cgi?id=427653}{https://bugs.kde.org/show\_bug.cgi?id=427653} for more information.} So I uninstalled the Flatpak version until they get that bug fixed (although a bug report was filed for this issue in 2020, so it doesn't look like a priority).
I tried installing it directly through snap using this command:
\input{include/snapinstallokular}
\noindent{}and this \textit{did} give me the latest version. But it wouldn't open. I tried opening it from the command line and got this:
\begin{Verbatim}[breaklines=true]
/snap/okular/155/usr/bin/okular: error while loading shared libraries: libKF6Parts.so.6: cannot open shared object file: No such file or directory
\end{Verbatim}
This is, believe it or not, progress. What this is telling us is that Snap did not install all of the required dependencies, which in this case is \texttt{libKF6Pars.so.6}. So the issue now is: where can we can get that dependency from?
Time for some more command-line magic:
\input{include/sudofindsnap}
That gave me this information:
\begin{Verbatim}[]
/snap/kf6-core22/30/usr/lib/x86_64-linux-gnu/libKF6Parts.so.6
\end{Verbatim}
which tells us that this particular dependency is contained in \texttt{kf6-core22}. So to install that, we use:
\input{include/sudoinstallkf6}
Unfortunately that told me that this dependency was already installed. But it's probably not an updated version of it that will run with this newer, improved version of Okular. That's okay, we can fix that with
\input{include/snaprefresh}
That updates the dependencies and also means that Okular will run. A quick check of \texttt{Help $\rightarrow$ About Okular} confirmed that I am on version 24.05.1 and that new documents are opening in tabs when I double click on them in the file manager.
\chapter{Coda}
\section{What I Learned About \LaTeX{} While Creating This Issue}
\subsection{the \texttt{ccicons} package}I release this zine under a Creative Commons license (which you can read about on page 2). Prior to this, I had already included a small image that summarizes that license, which I had downloaded from the Creative Commons website. As it turns out, the \texttt{ccicons} package will do this for you—no need to add that image.
(I actually learned about this while working on issue \#4, but it was very close to the end and I came across it accidentally—it wasn't something I was looking for. But serendipity is somethings a thing, so here we are.)
You can add icons individually, but it also has commands to typeset each license and its icons. Because it's basically just a font, you can do with it whatever you would normally do with other text. For example, these lines
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm]
\ccCopy\ccAttribution\ccNonCommercial\ccNoDerivatives
\ccbyncnd
{\footnotesize \ccbyncnd}
{\huge \ccbyncnd}
\fbox{\ccbyncnd}
\end{Verbatim}
\newpage % This is temporary
will produce these examples:
\medskip
\ccCopy\ccAttribution\ccNonCommercial\ccNoDerivatives
\ccbyncnd
{\footnotesize \ccbyncnd}
{\huge \ccbyncnd}
\fbox{\ccbyncnd}
\medskip
Notice that the built-in command includes a little bit of space between the icons, which is nice.
\subsection{Using \texttt{input} to Keep Your \LaTeX{} GUI Happy}
You'll notice that chapter \ref{dephell} has a couple of code samples that include code that you enter into the terminal. As such, they include a dollar sign (\$) to indicate the prompt.
While it's easy enough to include those in a \texttt{verbatim} environment, I'm using a GUI to create this (Texmaker,\footnote{See \kref{https://www.xm1math.net/texmaker/}{https://www.xm1math.net/texmaker/} for more information.} in fact) and anything in math mode—that is, anything that follows a dollar sign—is highlighted in green until it gets to another dollar sign. If it doesn't, then everything after that dollar sign is green, which kind of defeats the purpose of code highlighting.
The easy way around this is to write up those code samples in an independent \texttt{.tex} file, and then use the \texttt{input} command to add them at the appropriate point in my story. That keeps the source code in my GUI nice and clean looking, and means that the text highlighting actually means something.
Also, there is a similar command (\texttt{include}) that works in a similar way, but adds a pagebreak before and after the included text. This is pretty handy if you are working on a longer document. For more information, see \kref{https://tex.stackexchange.com/questions/246/when-should-i-use-input-vs-include}{https://tex.stackexchange.com/questions/246/when-should-i-use-\\input-vs-include}.
\section{What I Learned About Other Things While Creating This Issue}
\newpage % Use only to keep the afterword together if we end up with orphans
\section{Afterword}
\begin{multicols}{2}
\begin{small}
\noindent{}This one got done a lot faster than \#4. I got stuck with the previous issue because I got distracted by some other things going on in my life (like my job). As a result, this zine went from feeling like a ``get to do'' kind of thing to a ``have to do'' kind of thing. Like just about everybody else, I have far too many ``have to do'' things in my life already.
What got me unstuck\footnote{I don't believe in writer's block. As Stephen King said, there's no such thing. After all, snow plow drivers don't get snow plow driver's block. That said, it is possible to adopt some unhealthy thinking patterns that make you get \textit{stuck}.}—that is, what turned this from a ``have to do'' back to a ``get to do''—was to focus on the process, and not the product. I left myself have fun with it, in other words. That's something I need to periodically remind myself of, even when the thing in front of me is an actual ``have to do'' like my job. Despite the fact that my job is boring me to death, there are still aspects to it that are quite enjoyable. I try to enjoy them as much as possible, and not let them be overshadowed by the parts I don't really like.
In old news, I do occasionally make other zines besides this one, and I have a website for all of them at \kref{https://just13.click/}{https://just13.\\click/}. I used to have a mailing list, but Mailchimp blew it up. If you want an email notification of when I produce a new zine, feel free to send me an email at \texttt{wolfgangswishlist@gmail.com} and let me know which zines you want to hear about.
I also have some ideas for other zines that might cover some of the topics I talk about in here in greater depth. I'm not sure how that's going to evolve just yet, so stay tuned.
On page 2 is a link to a list of topics I intend to cover in future issues. If you have ideas for things you'd like me to talk about, send me an email at the above address.
\medskip
\begin{flushright}
\noindent{}Thanks,\\—Ken
\end{flushright}
\end{small}
\end{multicols}
\end{document}