Compare commits
202 Commits
Author | SHA1 | Date | |
---|---|---|---|
c2b4c2feff | |||
7eeb2a7aeb | |||
b56dba32a2 | |||
6da7a7ddbc | |||
2445c2cc3a | |||
5ba7600b5c | |||
74ff53aee6 | |||
134bb08b1f | |||
d49c45e39a | |||
034448e866 | |||
2c699c0bbd | |||
ab545e5fb6 | |||
ab02ca5d4a | |||
791220cc7b | |||
62221e6eab | |||
d68ed72fa9 | |||
fe52b92ff8 | |||
39d05a4b7f | |||
699737f3c8 | |||
e3e4642f58 | |||
546c23044b | |||
c2e4bb3e8a | |||
ab1c192b85 | |||
a5923dcbfe | |||
439c697bb2 | |||
8f3e0729c3 | |||
d3328ac530 | |||
d9035fd2ef | |||
04a9f5c71e | |||
b1b620f92d | |||
9932e13348 | |||
3590ef179a | |||
bb96793007 | |||
3b08de0033 | |||
b4c941797d | |||
e1e0341632 | |||
cb595788bb | |||
7807ff232f | |||
ff74857b77 | |||
8b6fd8394b | |||
51b32d37ca | |||
cc6ba56325 | |||
30e51b3551 | |||
cc9438c486 | |||
cbb72d38e7 | |||
01f732d8be | |||
77a0c03e77 | |||
2abdf2dd4d | |||
4787795fe3 | |||
1530f7fe45 | |||
3e57d388ce | |||
cfebfcd662 | |||
f4908e79a6 | |||
4b2dfafa27 | |||
1a1ffb9406 | |||
db660ce0d0 | |||
6d8b8a5400 | |||
f7ad3618f1 | |||
cdde9b661e | |||
54002ad6bc | |||
2bef8aa55f | |||
64cb7296a9 | |||
0d7d580c55 | |||
0b74cc2896 | |||
3c495508ae | |||
8708dc188f | |||
a9ddcc7acb | |||
de26434158 | |||
3318d6d46d | |||
92bae1000a | |||
1d8c00300c | |||
45497bfc73 | |||
0b98c6a6ef | |||
81c9268984 | |||
a8db06bf95 | |||
1a6350f96a | |||
64aa5ea4b6 | |||
e30e3d435c | |||
32ac3d7897 | |||
38ca0817ea | |||
d8e349bbc1 | |||
80c6e3c09d | |||
2b7626ae03 | |||
be709a2164 | |||
b7ccc0f820 | |||
bd0e77233b | |||
d54f6e20f8 | |||
537218ad1a | |||
a40f2101da | |||
f984737c9c | |||
f0a89a4299 | |||
74bb27a03b | |||
251a2c75ad | |||
6f8e3730f8 | |||
a1cf982ada | |||
333706b9cf | |||
4ec046d0bb | |||
53bd2f9099 | |||
3700b7095e | |||
a4bf1293bd | |||
68a3a77be9 | |||
688854f7fb | |||
6ebb04b26d | |||
634e583461 | |||
568072e658 | |||
4680a37c65 | |||
49b1af4e99 | |||
729af21c0a | |||
ed7ec493ad | |||
a6485746d2 | |||
c38ad9a773 | |||
5dcf98abeb | |||
5bff778fb1 | |||
3be3ec9bc2 | |||
bcd2a0eadc | |||
900e3e62c8 | |||
dedd0ca1e5 | |||
77805ec0e8 | |||
df93f92e98 | |||
eed6502ae0 | |||
93dc2db5c8 | |||
4fe2135111 | |||
aadb1823b2 | |||
c423123cc3 | |||
cd7d6fb8ca | |||
bf22d36bfb | |||
9c99d03637 | |||
e31d523682 | |||
266d1c94e2 | |||
a1f6c8591e | |||
e6b052f9e4 | |||
b6883babd3 | |||
6269d683af | |||
13a67440fa | |||
20444a83bd | |||
38e3ba742b | |||
1e239c05f6 | |||
f02faeacde | |||
f494bad229 | |||
894e8d9858 | |||
a76dea4d21 | |||
f625c3db0d | |||
40e995dd9d | |||
d7ed5f3311 | |||
26696c7b5c | |||
e9be3083b1 | |||
8d754cbf10 | |||
38b03877c0 | |||
2ff2255222 | |||
9a6408dff3 | |||
4dc75bacc0 | |||
c5dbee19d9 | |||
9c8de1f3bf | |||
15d43c79dc | |||
a7897aed72 | |||
cdefa996f9 | |||
2bf0147520 | |||
727a07d925 | |||
2720b26c90 | |||
e0f7f7cc6e | |||
ce623f6a46 | |||
2c7e5600e3 | |||
43023a9eb6 | |||
5346f340d2 | |||
cc6ce748b8 | |||
eb1408fb1a | |||
65c395fcbd | |||
96ce0a2ba1 | |||
315e1162f9 | |||
8a885ee11d | |||
952bbaaf21 | |||
85c0350642 | |||
5d63f45597 | |||
7064e28572 | |||
b5d9a3eb97 | |||
a4df7ee225 | |||
b94f5e4778 | |||
b1ed2f00bc | |||
75f7059e02 | |||
b269886cb8 | |||
fa8e43c706 | |||
c341cea2d6 | |||
6a8d3cb0f5 | |||
3f892de8b2 | |||
ebdb293070 | |||
8f4be117b7 | |||
6fc2f3acbd | |||
7c6f47a89e | |||
26f4cfa905 | |||
02ef9c14b4 | |||
9937cfd5ae | |||
b14101b4de | |||
9560f94138 | |||
d394e3f909 | |||
61f2a42b74 | |||
ab377f3c8c | |||
786a5ceb52 | |||
fc25b77fb4 | |||
e118528a3d | |||
4e48b77257 | |||
1b8ac2a57e | |||
9617c37cdd |
8
.gitignore
vendored
@ -8,3 +8,11 @@ Covers
|
||||
*.dvi
|
||||
*.odt
|
||||
metric*
|
||||
*.mx1
|
||||
*.abc
|
||||
*.bak
|
||||
*wc*
|
||||
*drafts*
|
||||
/build/*
|
||||
*/build/*
|
||||
*/spoken/*
|
||||
|
BIN
003/build/songs-01.pdf
Normal file
BIN
003/build/songs-02.pdf
Normal file
BIN
003/images/songs-01.pdf
Normal file
BIN
003/images/songs-02.pdf
Normal file
7
003/songs-01.tex
Normal file
@ -0,0 +1,7 @@
|
||||
\documentclass{standalone}
|
||||
|
||||
\usepackage[chorded]{songs}
|
||||
|
||||
\begin{document}
|
||||
\gtab{A}{X02220:001230}
|
||||
\end{document}
|
7
003/songs-02.tex
Normal file
@ -0,0 +1,7 @@
|
||||
\documentclass{standalone}
|
||||
|
||||
\usepackage[chorded]{songs}
|
||||
|
||||
\begin{document}
|
||||
\gtab{C#sus4}{4:XX3341}
|
||||
\end{document}
|
BIN
004/build/codex-004.pdf
Normal file
BIN
004/build/cover-004.pdf
Normal file
940
004/codex-004.tex
Normal file
@ -0,0 +1,940 @@
|
||||
\documentclass[twoside]{report}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\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}
|
||||
|
||||
% 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}}}}
|
||||
|
||||
% 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 #004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{pifont}
|
||||
\usepackage{qrcode}
|
||||
\usepackage{mhchem}
|
||||
\usepackage{chemformula}
|
||||
\usepackage{chemfig}
|
||||
|
||||
\usepackage{tikz}
|
||||
\newcommand\kpage[1]{
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) rectangle (.8,1.4);
|
||||
\node at (0.4,.7) {{\LARGE #1}};
|
||||
\end{tikzpicture}
|
||||
%\hspace{-3mm}
|
||||
}
|
||||
|
||||
|
||||
%%%% Document Information %%%%%
|
||||
\author{Kenneth John Odle}
|
||||
\title{
|
||||
{\Huge the codex} \\
|
||||
{\footnotesize Life with Linux — A Zine \\
|
||||
\bigskip
|
||||
Typeset in \LaTeX{} \\
|
||||
Issue \#004}
|
||||
}
|
||||
\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 Final Salad Days}
|
||||
|
||||
\section{College, 2008}
|
||||
|
||||
Bush II decided to tank the economy for ordinary people so that rich people could get richer.\footnote{This is the second of three "once in a lifetime" recessions I have lived through. Yay, capitalism! The rich get richer and everyone else gets poorer.} I decided to go back into teaching (which, thanks to current conservative political policies\footnote{Along with the asshole behavior of parents who approve of those policies.} there will always be a demand for), which meant I needed to go back to college to renew my teaching license. But this is a whole other story for which I have run out of space (not to mention it has very little to do with Linux or even computers), so it will have to go in a different zine if I ever decide to write it down.
|
||||
|
||||
What I can say is that the first time around, I wanted to get a biology major and an English minor because I wanted to teach biology and English, and I thought (naively) that this was how things worked—you pick a major and a minor and you get a job teaching that major and minor.\footnote{Turns out things don't work this way. Who knew? (You know who knew? Paul McCartney. ``I look around me and I see it isn't so.'' I guess I failed to look around me.)} But my biology advisor, a man who was many decades if not centuries my senior, advised against that plan. He felt that it would make me unhireable because it would look like I could not make up my mind between biology and English.
|
||||
|
||||
I did not realize it at the time,\footnote{I may not have realized it until just \textit{now}, when I wrote this.} but he was revealing his prejudice as a Biology professor. He was wrong, ultimately (schools absolutely love it when you can teach more than one subject as it provides for a lot of flexibility in scheduling), but his argument scared me. I was going to go thousands of dollars in debt for this degree (I was not smart enough to get a full scholarship, so I had to make up the difference with grants and loans—lots and lots of loans), and if I couldn't get a job, I wouldn't be able to pay back those loans. I would be sentenced to a life of penury, which is the very thing a college degree was supposed to protect against. So I agreed with him and forgot about getting an English minor.
|
||||
|
||||
\medskip
|
||||
\hrule
|
||||
\medskip
|
||||
\noindent{}\textbf{It's time for a diversion!}
|
||||
\vspace{-4mm}
|
||||
|
||||
\begin{multicols}{2}
|
||||
If you complain about being stuck in a low-paying job, people of a certain stripe tell you that you should go to college. If you do go to college and then complain about being crushed under a tremendous amount of student loan debt, those same people will then tell you that you should have gotten a job that doesn't require a college degree.
|
||||
|
||||
What people consistently fail to remember is that college costs have risen disproportionately compared to the rate of inflation. From 1980 to 2024, the average price to attend a four-year college full time went from just over \$10,000 a year to almost \$30,000 a year when adjusted for inflation\footnote{\kref{https://www.forbes.com/advisor/student-loans/college-tuition-inflation/}{https://www.forbes.com/advisor/student-loans/college-tuition-inflation/}}—an increase of 180\%. Whereas the state of California used to provide \textit{free} college tuition back in the day\footnote{\kref{https://www.insidehighered.com/blogs/digital-tweed/tuition-free-college-yesterday-and-tomorrow}{https://www.insidehighered.com/blogs/digital-tweed/tuition-free-college\\-yesterday-and-tomorrow}} it no longer does—because then-governor Ronald Reagan wanted to punish the University of California for tolerating student activism.\footnote{\kref{https://calmatters.org/explainers/cost-of-college-california/\#d6b48652-908b-4639-be19-3f09ecab02f9}{https://calmatters.org/explainers/cost-of-college-california/\#d6b48652-\\908b-4639-be19-3f09ecab02f9}}\textsuperscript{,} \footnote{For more detailed information on rising college costs, see \kref{https://educationdata.org/average-cost-of-college-by-year}{https://educationdata.\\org/average-cost-of-college-by-year}.} (Oh no! We've taught people how to think and now they're doing it!)
|
||||
|
||||
A well-educated populace is a public good and there is no humane reason why any economically successful nation should burden its youth with high levels of student loan debt. There are plenty of inhumane reasons, however, the primary one being that conservative politicians do not want a well-educated populace, as it is easier to exploit them for commercial gains if they have no idea what is happening to them. It's much easier to pin their woes on the boogeyman of ``communism'' despite the fact that they have no idea what communism actually is. Unless you have capital, capitalism is not your friend.
|
||||
\end{multicols}
|
||||
\vspace{-1mm}
|
||||
\hrule
|
||||
\medskip
|
||||
|
||||
His second argument was that as a prospective biology teacher, I was required to get a group science ``minor'', which is in quotation marks because it was actually 36 credit hours (the equivalent of a major) rather than the 20 credit hours typical of an actual minor. As a result, I would have little time or energy (or money!) for another minor.
|
||||
|
||||
There are very solid reasons I got of out teaching, but unemployment makes us do strange things—hence the decision to go back to teaching which is really the only thing I'm good at. To renew my license, I needed to get eight credit hours in ``a teachable subject'' and I decided to take a couple of English classes, as that would both meet the legal requirements and also give me a chance to read and write for credit.
|
||||
|
||||
As they say, things happened.
|
||||
|
||||
At first I signed up for two English classes. But then I thought, that's eight credit hours. If I take three more I could actually get the full minor. Why not? So a couple of English classes became an English minor, which eventually became an English major.
|
||||
|
||||
Becoming a biology teacher required that I take a \textit{methods} class, which is a class about…well, basically it's a class about how to \textit{be} a biology teacher. It teaches you how to plan labs and field trips, and how to do things in a safe way so that nobody gets hurt, and it covers the specifics of teaching biology that were not covered in your regular education classes.
|
||||
|
||||
Becoming an English teacher required that I take \textit{three} methods classes, however: one about teaching literature, another about teaching grammar, and a third about teaching writing. I remember very little about the first two. To be honest, I remember more about the graduate class I took in fairy and folk tales, because those tales evolve like living beings—which in a way they are. This was where biology and literature overlapped for me in the Venn diagram of my life.
|
||||
|
||||
The one thing I remember very distinctly about the writing methods course was that our capstone project had to be \textit{online}. Oh wow, I thought—I've been creating websites for a while now. But I was worried. I had been hearing about how young people were so good with technology, far better than any previous generation, in fact. I was sure whatever they came up with would just blow my feeble old school attempts out of the water.
|
||||
|
||||
I could not have been more wrong.
|
||||
|
||||
Our instructor asked how many of us had any experience creating websites. Only three of us raised our hands: a woman close to my age, a college-aged woman, and myself. Half of the rest of the class looked perplexed and the other half looked mildly panicked.
|
||||
|
||||
Our instructor sent the three of us into a small computer lab at the end of the classroom to start making plans while she explained to the rest of the class how to create a web site. Of course, if you leave three students alone in a room, they're not going to get any work done—they're going to sit and talk. It doesn't matter what their ages are—work is just not going to be a priority for them. We didn't work. Instead, we sat and talked about how we got here.
|
||||
|
||||
As it turns out, the older woman and I both had experience creating websites from scratch and the younger woman (the only one of the three of us who was still on Plan A) had once set up a forum for her gaming community using phpBB, which is not quite the same thing as setting up a website, but close enough. It's better than nothing. She also spent quite a bit of time talking about ``leetspeak'' which had somehow passed me by—perhaps because I have never been much of a gamer.\footnote{Everything I read about this makes me feel that is either something that is pretty cool or the most annoying thing in the world. I can't quite make up my mind.}
|
||||
|
||||
Still, this left some twenty-odd young people on the other side of that door who were utterly clueless about how to create a website, and were more than a little nervous about the prospect.
|
||||
|
||||
I mention all of this because it was generally assumed that young people were \textit{so} good with computers, that they were \textit{so} comfortable with computers, and why wouldn't they be? After all, they grew up with them. In fact, the term that got bounced around a lot in the education world at the time was ``digital native''. It was just assumed that young people could do anything with computers because they had grown up with them.
|
||||
|
||||
I had grown up with computers, too, only I did it twenty-five years before these kids did and the computers I grew up with did not have a GUI or a mouse. They made you think a little bit more than modern computers.
|
||||
|
||||
But it is not the presence or absence of a mouse or a GUI that makes you good with a computer. A lot of kids my age also had Commodore 64s and all they did with them was shove a cartridge in the back and play games. This in no way prepared them to know how to set up a spreadsheet in VisiCalc to balance your checkbook.\footnote{Which was one of the very first things I ever tried to do with a spreadsheet. It is not nearly as easy as one might think.}
|
||||
|
||||
I blame the educational industrial complex here, which I believe is where the term ``digital native'' came from. (And again, this is a feature, not a bug, of capitalism. Your main goal under capitalism is to just extract as much money as you can from the people around you, and it doesn't really matter whether you are doing the right thing or not. Your only value is determined by how much wealth you bring to the shareholders.)
|
||||
|
||||
Growing up with a computer in your house doesn't mean that you'll be an expert at anything and everything digital any more than growing up with a car in the driveway means you'll know how to drive it, let alone change the oil or rebuild the carburetor. It's a completely false assumption. The looks on my fellow students' faces proved that.
|
||||
|
||||
Still, most if not all of these other students figured it out. They created their lesson plans, they got them online, they presented a highly abbreviated form of them to the class, they got their final grade, and they moved on.
|
||||
|
||||
I did get mine online by doing what I'd always done—crafting html and css by hand.\footnote{Shades of \textit{The Pushcart War}! One my favorite books from my childhood that shows that resistance is most definitely not futile.} And for a while it lived in a subdomain on my website but then \textit{mobile} became the thing and I was not good at adapting sites to be mobile-friendly at that point (it's a piece of cake now\footnote{Also, there some sites that just \textit{shouldn't} be mobile-friendly. Do you really want air traffic controllers directing airplanes from their phones?}) and I also changed webhosts because I was not happy with some of the business decisions my then current webhost made and then I changed webhosts \textit{again} because the dream host I had found (WebFaction) had been purchased by GoDaddy (which is a terrible company) and I eventually found a job outside of teaching because you can only eat for so long on a substitute teacher's salary, and I've let it go by the wayside. I'm sure I still have the files on a back-up drive somewhere, so I could theoretically get it online again (and in a mobile-friendly form) if I wanted to and had a long Saturday afternoon to devote to it.
|
||||
|
||||
But I'm not going to be a teacher ever again, so there's no point in that. That would be looking backward, not looking forward. And I don't like to get mired in the past, despite the fact that I have spent so many of these columns talking about what a delight it was. The fact is that \textit{parts} of it were delightful and many more parts were utterly terrifying.
|
||||
|
||||
And if that's the past, who knows what the future holds?
|
||||
Terror or delight? Either way, like my former classmates, I'm moving on.
|
||||
|
||||
|
||||
\chapter{How to Be Good With Computers}
|
||||
|
||||
\paragraph{Note:}This originally started out as part of the the ``College, 2008'' section, but soon took on a life of its own. It didn't belong there, but it belongs somewhere. So here it is.
|
||||
|
||||
\medskip
|
||||
\lettrine[loversize=0.1, nindent=-0.2em]{W}{hat} does it mean to be ``good'' with something? Especially with computers? The experience of being segregated into a little room almost twenty years ago because of something I knew while those around me didn't has marked me in some way. It's taken me a long time to actually figure it out, and I think it is that there really is no such thing as someone who is ``good at computers''. This is like ``being good at sports'' or ``liking Asian food''. The concepts of ``computers'', ``sports'', and ``Asian food'' are really too large to be considered as a single entity. There is really only ``being better at this one very specific thing than everyone else in the room''.
|
||||
|
||||
In general, the person who is seen as being good at computers generally has three characteristics that make them that way.\footnote{I would argue that these three characteristics are common to people who are good at anything, whether it's computers, ``sports'' or cooking. These are essential characteristics of experts in general.}
|
||||
|
||||
First, they are not afraid to experiment. They know how to \textit{undo} things, or they know to experiment on a copy of the file. This is easier to do on a computer than in the analog world because the physical costs are so low—it's basically just your time. You can make an unlimited number of copies. If I'm trying to figure out how long to cut a board to build something, I don't have an endless supply of those boards. Ideally, I would like to make a single cut and get it done in one go and not have to go back to the lumber yard because I cut the board an inch too short.
|
||||
|
||||
Second, they are good at recognizing patterns. This means that they don't need to reinvent the wheel each time; they can look at a new problem and see if it is similar to an old one and whether it's possible to adapt an older, tried and true solution to this new problem. ``The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new thing under the sun.''\footnote{Eccleiastes 1:9} All our new problems are just iterations of our old problems.
|
||||
|
||||
Third, they are good at searching the web for a solution. This is easier now than it was twenty years ago because the web is simply so much bigger than it was then. There is an art and a science to this, so much so that we used to use the term ``google-fu'' or ``search-fu''\footnote{Like ``kung-fu''. Get it? \textit{Get it?} Sometimes we are tiresome people.}. But all this really means is knowing how to construct a search query that does not return superfluous answers. In the old days it was largely knowing how Boolean operators worked, and then selecting appropriate arguments for those operators. These days, artificial intelligence is probably going to screw this completely up. (Or it already has—I recently saw a screen clip of an AI bot recommending that you add half a cup of glue to your gravy to thicken it up. I'm sure this would work, but it would not be the gravy you are looking for.)
|
||||
|
||||
I can give a couple of examples here. At my old job, we received planning schedules from our customers on a weekly basis. Our material planner would print these out and enter their data into our system which would then give us an idea of how much production we needed to run each week.
|
||||
|
||||
One of our customers upgraded their planning software and what had been a twelve-page easy-to-understand report suddenly became a report running to well over a hundred pages that was full of irrelevant information and multiple empty columns.
|
||||
|
||||
I noticed that this information could be downloaded as a \texttt{.csv} file, so I created a spreadsheet that would allow you to import the \texttt{.csv} file, and which would then use VBA to get rid of all the information we didn't need, sort all the data in a way that made sense for our purposes, and then export the entire thing as a pdf file.
|
||||
|
||||
Because it worked (and worked \textit{well}) I was lauded as a guy who is ``good with computers'' (which largely overlooked all the expertise my coworkers made use of every day as they did their jobs—which were largely computer based). The truth is that I knew absolutely nothing about VBA going into this. I just used those three characteristics—a willingness to experiment, an ability to recognize patterns, and a determination to search the web until I found the solution\footnote{Or enough different solutions that I could put bits and pieces of them together until I got to where I needed to be. Every bit of software out there bears more than a passing resemblance to Dr. Frankenstein's creation once you look beneath the hood.} I was looking for—and created something which worked.
|
||||
|
||||
But does this make me an expert at Microsoft Excel or at VBA? Hardly. I mean, it did to all those people who saw this spreadsheet in action. But I didn't view myself as someone who was good at Excel or VBA. I just viewed myself as someone with a dogged determination to keep experimenting until I got it right. To me, the idea of someone who is ``good with computers'' is \textit{very} relative and not at all absolute.
|
||||
|
||||
Proof of this came in the form of an engineer that we hired out of his early retirement. He said he was not good with computers, but that he was adequate to the task required. Despite being ``merely adequate'', he showed me a trick that I have been using ever since.
|
||||
|
||||
One of my many frustrations with Excel, and indeed pretty much any spreadsheet program, has always been that if you need to edit the data at the end of the cell\footnote{Which is where I am most likely to make a mistake.} it's always a two-step process. Either you click on the cell to select it and then click in the formula bar to move the cursor to the end of that data, or you have to click on the cell to select it, and then click again on the right end of that cell to move the cursor to the end of that data. (If you click in the middle of the cell, then that's where the cursor ends up. Who is in charge of this stuff?)
|
||||
|
||||
Just writing all that gives me a headache. It's no wonder people so often give the side-eye not just to Excel but to most Microsoft products. (As they should.)
|
||||
|
||||
But this engineer showed me that if you have a cell selected all you need to do is press the F2 key and the cursor will automatically move to the end of the data in that cell, where you can then use your keyboard to do what you need to do. As I use cursor keys rather than a mouse to navigate around a spreadsheet 90\% of the time this is a huge timesaver for me.
|
||||
|
||||
This was sheer genius to me and yet I had never heard of it! If I had known this ten years before, it would have saved me so many mouse clicks and so much frustration.
|
||||
|
||||
In this instance, this engineer who viewed himself as anything but ``good with computers'' was indeed very good with computers, simply because he knew something I didn't.
|
||||
|
||||
Here's another example. At my current job we have an Excel form that we use every single day. It basically does three things: 1) it collects any findings we discover in an experiment, 2) it adds those findings to a database so that we have metrics to measure analyst performance by, and 3) it generates an email to send to the analyst in question so they make corrections.
|
||||
|
||||
The VBA that runs this form is absolutely huge—it's at least two orders of magnitude greater in size than any amount of VBA I have ever authored.
|
||||
|
||||
To my way of thinking the person who is responsible for the maintenance of this form is a \textit{true} VBA expert. My level of expertise comes nowhere near theirs. And yet they still insist that they are not an expert, that they are just really good at searching for solutions on the web, at recognizing patterns (especially in error messages), and at experimenting until they get it right. (Sound familiar?)
|
||||
|
||||
I am still able to use VBA to do little bits here and there for other people—creating forms that generate a pdf and then automatically attach it to an email, for instance. I've done this a couple of times and the people on the other end have been suitably impressed, so I've added this skill to my resume. Imposter syndrome be damned!
|
||||
|
||||
The number one characteristic I've discovered that is shared by all people who are generally viewed as ``good with computers'' is \textit{confidence}. Not knowledge, not skill, not experience. \textit{Confidence}. It's true that confidence comes from knowledge, skill, and experience, but I know a lot of people who have all three of those things\footnote{How can you \textit{not} have experience with computers in 2024, when even Amish people have cell phones? It's because you can either choose to recognize that they are a part of your experience and roll with it, or refuse to acknowledge them and fight a losing battle against them.} but who still lack confidence and thus do not see themselves, nor are seen by others, as being good with computers. I've had to coach a lot of people like this over the years and while it's easy to give someone knowledge, or experience, or skill, it's almost impossible to get them to put those three things together into confidence. It's really something they have to gain on their own, and they either do or they don't. I'm not sure why this is.
|
||||
|
||||
% New section starts with a drop cap
|
||||
\medskip
|
||||
\lettrine[loversize=0.1, nindent=-0.2em]{T}{he} most important thing about having confidence is that it helps you to keep going. This is how you can tell the difference between arrogance and confidence—confident people tend to keep going and arrogant people tend to give up.
|
||||
|
||||
And that's what I ultimately like about Linux—it encourages you to keep going. You don't get to a point where things are hidden away behind a proprietary brick wall. Everything is open source, right down to the core, and you can dig as deeply as you like. The only thing that's really holding you back (besides your attitude) is your time and money. But for me to even talk about these things would mean that I would have to do a deep dive into the many faults of capitalism, and that's not what this zine is about, although I do touch on that tangentially (or not so tangentially) from time to time.
|
||||
|
||||
That is really my biggest disappointment when it comes to computers. They were supposed to be the great equalizer, because everybody would have access to the same information and the same tools. But it hasn't worked out like that at all. We commodified everything. I look around me now and I thoroughly understand the reaction that the Taylor character had at the end of the original \textit{Planet of the Apes} movie: ``You maniacs!'' he yells when he sees the ruins of the Statue of Liberty on the other side of the Forbidden Zone. ``You blew it up! Damn you all to hell!''\footnote{This is an authentically great film by the way. With a script cowritten by Rod Serling and based on a novel by Pierre Boulle (who also wrote \textit{Bridge on the River Kwai}) and directed by Franklin J. Schaffner (who also directed \textit{Patton}) how could it not be? I highly recommend it.}\textsuperscript{,}\footnote{Or as Paul McCartney might say, ``I look around me and I see it isn't so.'' No, it is not so. It is \textit{so} not so.} Pretty much every pop-up asking me to join a mailing list or asking me to like a Facebook page,\footnote{Which is especially bizarre given that I haven't even had a chance to read their webpage yet. Why do I want to like something or sign up for something if I haven't even seen it yet?} every advertisement, every clickbait article, and every social media algorithm makes me feel this way.
|
||||
|
||||
Yep, we blew it all up so we could create value for the shareholders. We're not quite at a ruined-Statue-of-Liberty-on-the-beach point yet, but we are, I fear, very close to the end. We could have done better as a species, but we didn't. As Stephen King says of his generation, ``we had a chance to change the world but opted for the Home Shopping Network Instead''.\footnote{In \textit{On Writing}—which is a great book to read, whether you want to become a writer or not.}
|
||||
|
||||
The optimistic side of me says that it's not too late, while the pessimistic side of me says that it is, that we are already past the tipping point, but we just don't realize it yet. I'm not sure.
|
||||
|
||||
In the meantime, I'll keep doing what I'm doing. I'll keep writing, I'll keep striving to do better. And I'll keep going. What else is there?
|
||||
|
||||
|
||||
\chapter{More Fun with bash}
|
||||
|
||||
As I get older, I find that I want to spend less time doing repetitive tasks that need to be done, and spend more time doing the stuff I want to do, like writing.
|
||||
|
||||
As it turns out, Linux can help with that goal. More time writing and drawing and making music and making photographs is a good thing, and something I'm grateful to Linux for. The trick is, you have to be comfortable with the command line.
|
||||
|
||||
I'm a huge believer in having a workflow so that you are doing things consistently, and so that you can make gradual improvements to that workflow so you can get more done with less. Having a workflow means that if you are doing something wrong, you are consistently doing it wrong the same way. In which case, you only need to figure out a single fix and apply it to each mistake. If you don't have a workflow, you can screw up in many different ways, and have to figure out a lot of different fixes. Making mistakes is a part of life; making consistent mistakes makes fixing them a less miserable task. Linux makes it easy for you to do all of that.
|
||||
|
||||
\section{bash Aliases for \texttt{git}}
|
||||
|
||||
Back in issue \#2 I talked about using bash aliases to make your life easier. I've also started using them with \texttt{git} as well. Here's what they look like:
|
||||
|
||||
\newpage
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{bash aliases for git}]
|
||||
alias gits="git status"
|
||||
alias gita="git add *"
|
||||
alias gitx="git add *.tex"
|
||||
\end{Verbatim}
|
||||
|
||||
The first one just prints out the status of the git project that I'm working on. The second one will automatically add all files (except for invisible files) to the commit. Because I use \LaTeX{} a lot, I also have the third one, which will commit any new or changed files that end in a \texttt{.tex} extension.
|
||||
|
||||
I rarely have invisible files in my git repositories except for the .gitignore file, which I seldom change, so I don't need a bash alias for it. I find it easy enough to type \verb+git add .gitignore+ on the rare occasion that I need it. But if I did want to add that file on a regular basis, I could just change that line to:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
alias gita="git add * .*"
|
||||
\end{Verbatim}
|
||||
|
||||
or I could just add a separate command for it:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
alias giti="git add .gitignore"
|
||||
\end{Verbatim}
|
||||
|
||||
Of course, if I were changing my \textit{.gitignore} file that often, I would start to quite rightly question some of the other choices I've been making with my life.
|
||||
|
||||
\section{bash Commands for \textit{git}}
|
||||
|
||||
It would be nice if we could do the same sort of thing for \texttt{git commit}, but we can't, because we need to add a message to our commit. In other words, it requires an \textit{argument}. So for that, we need to add a \textit{function} to bash.
|
||||
|
||||
As it turns out, this is pretty simple. It looks like this:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
gitm(){ git commit -m "$1"; }
|
||||
\end{Verbatim}
|
||||
|
||||
%$
|
||||
|
||||
First, we start with our basic function, which is written like any other function:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
gitm()
|
||||
\end{Verbatim}
|
||||
|
||||
Now we add whatever commands we want between curly brackets. In this case we're only going to add one, which is the \verb+git commit -m "$1";+ bit. The only thing unique here is that we have a variable (\verb+$1+) that references our first and only argument, which is the commit message we are going to add.
|
||||
|
||||
Once we have added all the files we need to our commit, we can then create the commit with something like this:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
gitm "Updated section on bash aliases"
|
||||
\end{Verbatim}
|
||||
|
||||
which is a \textit{bit} shorter than typing
|
||||
|
||||
\begin{Verbatim}[]
|
||||
git commit -m "Updated section on bash aliases"
|
||||
\end{Verbatim}
|
||||
|
||||
Admittedly, this doesn't save us a ton of keystrokes every time we use it, but if we make git commits on a regular basis, it saves enough keystrokes to make it worthwhile. Also, it's a shorter construction, so there's that much less chance of making a typo.
|
||||
|
||||
\section{More about bash commands}
|
||||
|
||||
As it turns out, you can add more than a single command to a bash function. For example, you can use this
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{bash function with multiple commands}]
|
||||
cdl() {
|
||||
cd "$1" && ls -ahl;
|
||||
}
|
||||
\end{Verbatim}
|
||||
% $
|
||||
|
||||
This will change to whichever directory we specify with the \verb+$1+ placeholder, and then present a directory listing which shows all files, with human-readable sizes, in a long format. That may not be highly useful, but it's enough to give you an idea of how powerful bash aliases and bash functions can be.
|
||||
|
||||
As another example, I like to write rough drafts in longhand, on notebook paper. I find that I am more creative that way. The problem is that I intensely dislike being surrounded by piles of paper. (ADHD means that if I can't see something, it no longer exists. So my brain will only see whatever is on top of the pile.) Whenever I finish up a rough draft, I scan it to a ``Drafts'' folder, where it goes into a subfolder labeled for whatever projects it belongs to.\footnote{Yep, there is a subfolder labeled ``the codex'' with drafts for this zine.} So that I can see everything, I use the \texttt{tree} command to create a file which lists every single scan in that ``Drafts'' folder.
|
||||
|
||||
So far, so good, but running the same \texttt{tree} command consistently is not something my brain is set up to do. So I added this function to my \texttt{.bashrc} file:
|
||||
|
||||
\begin{Verbatim}[breaklines=true]
|
||||
drafts(){ tree $HOME/Drafts/ -R --prune > $HOME/Drafts/list.txt; }
|
||||
\end{Verbatim}
|
||||
|
||||
What that command does is to go to that ``Drafts'' folder, run the \texttt{tree} command with the \texttt{-R} (recursive) and \texttt{--prune} (to ignore empty directories) options and then send the standard output to a file called \texttt{list.txt}. I look at that \texttt{list.txt} file whenever I am searching for something to write up, and I can see in an instant which rough drafts I can work on. My ADHD brain is pretty happy with this arrangement, as nothing gets buried in a pile of files, and I don't have a ton of paper sitting around.
|
||||
|
||||
For what it's worth, I also have a backup script (as I mentioned in issue \#2) just for this folder. I added that command to the top of that backup script, so that before anything gets backed up to my cloud, that \texttt{list.txt} file gets updated and uploaded as well.
|
||||
|
||||
\section{Reloading the \texttt{.bashrc} File}
|
||||
|
||||
For any of these things to work, you need to reload your \texttt{.bashrc} file after you edit it. You can log out of your user profile and then log in again, or you can just go to the command line and type
|
||||
|
||||
\begin{Verbatim}[]
|
||||
source ~/.bashrc
|
||||
\end{Verbatim}
|
||||
|
||||
And of course, there is also a shorthand version:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
. ~/.bashrc
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
|
||||
\chapter{The Right Ways vs The Wrong Ways \\{\small (i.e., The Hierarchy of Errors)}}
|
||||
|
||||
A lot of us grew up hearing that ``there's a right way to do things and a wrong way to do things.'' I don't disagree that there is always a \textit{wrong} way to do things, but like house maintenance, working on computers quickly teaches you that there are a \textit{lot} of different wrong ways to do things. And despite what some people think, there is often more than one right way to do things.
|
||||
|
||||
Experience has shown me that not all wrong ways are wrong in the same way or to the same degree, and that the same is true of right ways. There may be multiple right ways to get something done, but some require less work and some require more work. It is not a black-and-white issue.
|
||||
|
||||
In the past few years, I've started thinking of things less in terms of a particular ``right way'' opposed to a particular ``wrong way'', and started thinking in terms of a spectrum of choices, some of which are obviously wrong (but wrong to varying degrees) and some of which are right because they work (but again, right to varying degrees).
|
||||
|
||||
What I have tried to do here is to create a hierarchy of ``rightness'' and ``wrongness'' as a way to organize my thinking on this subject; I can then jump in and discuss why things fall where they do. No doubt other people might have more or fewer distinctions in their hierarchy, or might have things in a different order, or might have different reasons.
|
||||
|
||||
My purpose here is to see if I am actually making any progress, or if I am simply doing things randomly, as adult-onset attention deficit disorder is apparently a thing in my life. In other words, do my changes move me up in this hierarchy, or do they move me down?
|
||||
|
||||
And, as we shall see, sometimes it's beneficial to do something the wrong way. You sometimes learn more by doing things incorrectly than you do by doing them correctly.
|
||||
|
||||
\krule{6mm}{0mm}
|
||||
\begin{center}
|
||||
\noindent{}{\large \textsc{\textbf{The Hierarchy of Errors}}}
|
||||
\end{center}\krule{0mm}{6mm}
|
||||
|
||||
\begin{itemize}[noitemsep]
|
||||
\item \textbf{Genius}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It's a true hack.
|
||||
\end{itemize}
|
||||
\item \textbf{Right}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It works, and is considered a best practice.
|
||||
\end{itemize}
|
||||
\item \textbf{Right\textit{ish}}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It works, but you have no idea why.
|
||||
\item It works, but it requires you to rework some other pieces.
|
||||
\item It works, but it's a bit of a kludge.
|
||||
\end{itemize}
|
||||
\item \textbf{Wrong\textit{ish}}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It works in this specific instance, but not in all instances.
|
||||
\item It works, but it's far more work than it should be.
|
||||
\end{itemize}
|
||||
\item \textbf{Wrong}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It works, but it breaks things in weird places.
|
||||
\item It works, but it breaks almost everything else.
|
||||
\item It works, but it still manages to break a few local things.
|
||||
\end{itemize}
|
||||
\item \textbf{Very Wrong}
|
||||
\begin{itemize}[noitemsep]
|
||||
\item It doesn't work and it breaks things in weird places.
|
||||
\item It doesn't work and it breaks almost everything.
|
||||
\item It doesn't work and it still manages to break a few local things.
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
Let's start at the bottom, and work our way up from there.
|
||||
|
||||
\section{Very Wrong Ways}
|
||||
|
||||
Very wrong ways are very wrong because not only do they \textit{not} work, they take other things down with them.
|
||||
|
||||
\paragraph{It doesn't work and it breaks things in weird places.} You may wonder why this is worse than ``It doesn't work and it breaks almost everything else'' but for me the answer is simple: it can be terribly difficult to find those weird places. When I say ``weird'' I mean that they may be obscure places that nobody looks, they may be distant from the current situation and apparently unconnected,\footnote{But nothing is \textit{truly} disconnected from anything else.} or they may be things that you don't have to rely on very often, so you may not discover that they are broken until days, weeks, or even months later.
|
||||
|
||||
\paragraph{It doesn't work and it breaks almost everything else.} This is bad, but it is not bad as the previous example, because it has two advantages. First, because almost everything is breaking, those breaks are pretty obvious. Second, because almost everything is breaking, this provides you an opportunity to look at the overall structure of your project and examine how all the different parts are connected. There may be connections that you weren't aware of. You may realize that some things are connected that shouldn't be or that some things aren't connected that should be. Sometimes it takes a real disaster to point out the strengths and weaknesses of your system.
|
||||
|
||||
\paragraph{It doesn't work and it still manages to break a few local things.} No complaints here. You have to undo what you did and maybe fix a few things, but you probably don't have a whole lot more to think about here.
|
||||
|
||||
\section{Wrong Ways}
|
||||
|
||||
Wrong ways may work, but they break other things along the way. As we shall see, this is not always a bad thing.
|
||||
|
||||
\paragraph{It works, but it breaks things in weird places.} Again, the main issue here is that those weird places may not be obvious at first. You might use this technique, and it looks like it's working fine, but suddenly there is a person in Germany whose toilet no longer flushes properly. Or it works fine for you now, but in ten months \textit{your} toilet no longer flushes properly. And because these two things are so separated in place (in the former case) or time (in the latter case) it can be difficult to connect the two things, and we might end up spending a lot of time going down rabbit holes when the real solution is right there in front of us the entire time. We waste time and effort.
|
||||
|
||||
\paragraph{It works, but it breaks almost everything else.} This is almost exactly like ``It doesn't work and it breaks almost everything else'' except that your solution \textit{does} work. You just need to look at your overall system and figure out why everything else is going into meltdown mode.
|
||||
|
||||
\paragraph{It works, but it still manages to break a few local things.} Even though this is listed as a wrong way---you are still breaking things, after all---this is not always a bad outcome to experience. It's possible that those few things that are breaking are breaking because they are weak. If you strengthen those items and then apply this technique, it turns out that this isn't actually wrong after all, it only seemed wrong at the time. In the end, you have a much better project that is much less fragile overall.
|
||||
|
||||
\section{Wrong\textit{ish} Ways}
|
||||
|
||||
\paragraph{It works in this specific instance, but not in all instances.} It works, so why is this way still wrong? Because it's not \textit{universal} for all similar situations. If it works in \textit{this one particular instance} but not similar instances, and you don't know why, then there is something about this particular instance that you are not aware of. This is a good thing if you're willing to chase down that unknown thing; it's potentially disastrous if you are not.
|
||||
|
||||
\paragraph{It works, but it's far more work than it should be.} This is often a case of not having the right tools, or having the right tools but not knowing how to use them. If you need to dig a ditch, a shovel will work, but a backhoe works much better. All that time you spent working with a shovel is time you could have spent doing something else.
|
||||
|
||||
\section{Right\textit{ish} Ways}
|
||||
|
||||
\paragraph{It works, but you have no idea why.} I was very tempted to put this in the wrong\textit{ish} section, and in some cases it may certainly belong there. Quite frankly, you \textit{should} know why a technique works. Not knowing why can be dangerous, because you can assume too much about this particular technique. That may cause you to be a bit overconfident with it, and use it in a situation that doesn't really warrant its use.
|
||||
|
||||
\paragraph{It works, but it requires you to rework some other parts of the project.} I admit, I was at a loss as to where to put this one. I guess it depends on whether you are using a kludge or a best practice, so I'm going to assume you are using a best practice. In which case, this shows you places that you were possibly \textit{not} using something which is a best practice, and now you need to make those things better.
|
||||
|
||||
\paragraph{It works, but it's a bit of a kludge.} A kludge is not always a bad thing (sometimes you have to work with what you have) but they are at best, inelegant, and at worst weighty and ugly. But they work for now, they don't break things, and they will last until you learn or can afford a better way. (I created a bit of a kludge when I couldn't figure out how to indent a bibliography entry.\footnote{You can see it in action in this commit for a different project: \kref{https://git.kjodle.net/kjodle/Notes-on-Python/commit/d4f93ec00f1e1078b1cfcb3aacd3481eb82bb0cd}{https://git.kjodle.net/kjodle/Notes-on-Python/commit/d4f93ec00f1e1078b1cfcb3a\\acd3481eb82bb0cd}.} Does it work? Yes. Am I happy with it? Not entirely. I'm 75\% sure there is a better way to do this, but I haven't found it yet. But it works for now, and I've marked it as a kludge, so I know this is something that I can come back to later. At least I made this less weighty and hid its heft and inelegance by turning it into a macro.)
|
||||
|
||||
\section{Right Ways}
|
||||
|
||||
\paragraph{It works, and is considered a best practice.} A best practice is one that has generally been accepted as the best way to do things because it produces results that are better than the results achieved by other methods, with either minimal or zero negative side-effects. This is a good thing. A best practice is a best practice because it's proven itself. It's not perfect (hence it's a ``best practice'' not a ``perfect practice''), but you can count on it to get the job done. And because it is a best practice, when things go pear-shaped, it's most likely because of something you've done, but if it isn't, there will probably be a lot of people who are \textit{very} interested in helping you.
|
||||
|
||||
Unfortunately, sometimes a best practice is arrived at that for no other reason than ``that's how we've always done it and nothing has exploded yet.'' That's not great, but still…have a fire extinguisher handy.
|
||||
|
||||
\section{Genius Ways}
|
||||
|
||||
\paragraph{It's a true hack.}
|
||||
|
||||
As I said way back in the first issue, I define a hack as ``an appropriate application of ingenuity''\footnote{See \kref{http://www.catb.org/~esr/jargon/html/meaning-of-hack.html}{http://www.catb.org/~esr/jargon/html/meaning-of-hack.html} for more information.}. True hacks are rare and often small, whereas false hacks are all too common, and the internet is littered with them\footnote{See issues \#1 and 3 for lots of examples.}. A false hack only resembles a hack; like the wizard in \textit{The Wizard of Oz} who says he's a wizard and looks like a wizard, but is not an actual wizard.
|
||||
|
||||
If you find a true hack, enjoy it, preserve it, and help to disseminate it.
|
||||
|
||||
\chapter{Not Another PDF Scanner}
|
||||
|
||||
Way back in issue \#1 of this zine I talked about my workflow for scanning documents because I am trying to be as digital as possible.\footnote{Issue \#1 is only three issues ago, but considering that I published it in 2021, it \textit{seems} like a long time ago. I really need to get my act together and get these out on a more regular basis.}
|
||||
|
||||
In that article ``A Scanner Darkly, but with a workflow'' I mentioned that I used one piece of commercial software (VueScan) because it did what no FOSS software that I knew of at the time could do: work with my all-in-one printer/scanner and also sort pages effectively when my scanner's ADF\footnote{Automatic Document Feeder} does not duplex (i.e., it does not flip pages over to scan the other side). While it is great software, and I did not mind paying the \$100 for a one-year subscription to it (the software company behind it is pretty much a father and son team), I didn't like being dependent on it.
|
||||
|
||||
The reasoning is simple. If a company decides to stop producing a product, that's it; you're done. I used to have a great plugin on my WordPress sites that added social media sharing icons to each post. The company that made it got bought out by Oracle. You might think this is a great thing, because Oracle is a big huge company with a lot of resources. But when big huge companies buy small independent companies, they are often only interested in one or two of their products, and let the rest go. And this is exactly what happened. Oracle suddenly decided they weren't going to support this plugin and it just stopped working. The company's webpage for the plugin redirected to an Oracle page that basically said ``fuck off'' and little more. No explanation, no recommendations of similar plugins, nothing.
|
||||
|
||||
At least when FOSS software projects get abandoned or the original developers get better paying jobs delivering pizza, there is always the chance that someone else will take over the project. Better yet, you—yes, \textit{you}—can donate money to the project to help support it.
|
||||
|
||||
I first found out about NAPS2 (\kref{https://www.naps2.com/}{https://www.naps2.com/}) because I had downloaded a book from the Internet Archive\footnote{\textit{Inherit the Stars} by James P. Hogan, which you can read at \kref{https://archive.org/details/inheritstars00jame}{https://archive.org/deta\\ils/inheritstars00jame}} and the pages were very, very yellowed. (It had been scanned from a pulp paperback printed on cheap paper with a high acid content. How seldom we plan for the future!)
|
||||
|
||||
I was looking for a way to lighten the background of the pages so that it would be easier to read. My usual solution for this would be to edit the pdf in GIMP, opening each page as a separate layer. I could then figure out the settings for one page, convert that into a script (GIMP is scriptable!), apply that script to every single layer, and export the entire thing as a pdf, remembering to tick the box that says to export layers as pages, and also to do it in reverse order.
|
||||
|
||||
That's not a huge amount of work, but still—it's work. Surely, there has to be a more automated way to do this, no?
|
||||
|
||||
I searched and I searched, and I was rewarded for that search. Someone mentioned that a program called NAPS2 had this very feature. The name didn't hurt at all—at this point in my life, I am very much in favor of naps, unlike the five year old version of me.
|
||||
|
||||
\section{Adjusting the Image Quality of a Scanned Book}
|
||||
|
||||
How do you clean up a scanned book from the Internet Archive? The way I would normally handle this would be the GIMP method I described earlier. But that's a lot of work for a book I just want to read and be done with. (No archivist work for me here.)
|
||||
|
||||
The workflow for this is fairly simple. First you import your pdf using the ``Import'' button, then you select all the pages and click the ``Image'' button. The options are pretty limited: you can adjust the brightness and contrast, adjust the hue and saturation, or you can sharpen. It also has an option called ``Document Correction'' which is great if you are scanning hand written notes and need to add a lot of contrast. (This doesn't work so greatly in the case of a badly yellowed book, unfortunately.) You just make your corrections, and also make sure to tick the box that says ``Apply to all pages''—something I often forget to do.
|
||||
|
||||
You're probably not going to get a perfect book back, because the options are pretty limited when you're correcting an entire book at once. The trade-off is that you pick your settings once, and then NAPS2 handles all the work while you go get yourself a cup of coffee—or take a nap.
|
||||
|
||||
\section{Interleaving}
|
||||
|
||||
NAPS2 also has an ``interleave'' feature, which meant that I didn't need to use \texttt{pdftk} to do that.\footnote{To be fair, this is a feature which VueScan also eventually added at some point.} Scanning longer two-sided documents suddenly became a lot easier.
|
||||
|
||||
The only problem was that NAPS2 offered \textit{four} versions of this command: interleave, deinterleave, alternate interleave, and alternate deinterleave. These are very neatly contained under the ``Reorder'' icon in the main menu. I knew one of those was what I needed; I just needed to figure out which.
|
||||
|
||||
I'm a scientist, so I experimented. I took five sheets of scrap paper, wrote the odd numbers 1-9 on the front side and the corresponding even numbers 2-10 on the back side. If you flipped through them, you would see something like what you see in figure \ref{naps2-orig}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\caption{The document as originally drawn}
|
||||
\label{naps2-orig}
|
||||
\centering
|
||||
\kpage{1}\kpage{2}\hspace{1mm}\kpage{3}\kpage{4}\hspace{1mm}\kpage{5}\kpage{6}\hspace{1mm}\kpage{7}\kpage{8}\hspace{1mm}\kpage{9}\kpage{10}
|
||||
\end{figure}
|
||||
|
||||
Using this scanner means every page has to be scanned twice—one time for the front side, and a second time for the reverse side. As a result ``upside-down'' has a couple of meanings here. My scanner's ADF accepts pages with the side you want to scan face down. It then flips them over when it scans them, which rotates them around the $y$-axis. Because it flips them over along the $y$-axis, I only have to spin them around the $z$-axis to get them in the proper orientation to scan the other side. This should seem self-explanatory, but it often isn't—I had to use the scanner at work the other day and it took me three attempts to get it right.
|
||||
|
||||
Because I wrote on both sides of each side of paper in order to emulate a double-sided original, I scanned the pages, and then spun them around the $z$-axis and scanned the other sides. And because I am scanning these face down, the even numbers end up in reverse order. So I ended up with a pdf that looked like figure \ref{naps2-scan}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\caption{The document as originally scanned}
|
||||
\label{naps2-scan}
|
||||
\centering
|
||||
\kpage{1}\kpage{3}\kpage{5}\kpage{7}\kpage{9}\kpage{10}\kpage{8}\kpage{6}\kpage{4}\kpage{2}
|
||||
\end{figure}
|
||||
|
||||
That's progress, but it's not the progress I wanted to make. I tried all the different options available under the ``Reorder'' icon, and finally figured out that ``Alternate Interleave'' would produce the final pdf that I want, which you can see in figure \ref{naps2-final}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\caption{The document after applying ``Alternate Interleave''}
|
||||
\label{naps2-final}
|
||||
\centering
|
||||
\kpage{1}\kpage{2}\kpage{3}\kpage{4}\kpage{5}\kpage{6}\kpage{7}\kpage{8}\kpage{9}\kpage{10}
|
||||
\end{figure}
|
||||
|
||||
If that looks like the original document, it is definitely not an accident; it is by design. Print that out and you get something close to the original.\footnote{I say ``close'' because a scan is never the equivalent of the original. It is a reflection, an imitation. But it is not the same. Every time we copy an analog object, we lose something. Replicative failure is a thing.}
|
||||
|
||||
\section{Adjusting Images}
|
||||
|
||||
Even though NAPS2 was designed to be a pdf scanner, it also has the ability to save individual scans as images. Even more importantly, because each scanned page is basically an image, you can also edit each page as an image by double clicking on it, where you get editing options like crop and rotate, in addition to the ones I mentioned earlier. This is pretty handy if you're scanning something like a manual that has different sized pages, or is printed on large sheets and folded into a box so that you have to scan it in sections,\footnote{Every piece of furniture I've ever assembled has instructions like this, but I've run into quite a few manuals that are miniature versions of this, like the earbuds I wear on my daily walk.} or a package that has care instructions on one or more sides.
|
||||
|
||||
If you're wondering why I keep banging on about manuals, it's because I do keep them. For years I kept them all in a large three ring binder filled with page protectors that I could slip them into. It was big, and it was awkward, and I didn't dare grab it the wrong way or I'd have manuals all over the floor.
|
||||
|
||||
At some point, I realized that most manuals are available in convenient pdf form from the manufacturer's website, so I started downloading those, making sure the pdf was identical (or identical \textit{enough}) to the original, and then tossing the original in the recycling. But for those that aren't—yep, I scan them.
|
||||
|
||||
\medskip
|
||||
|
||||
\paragraph{Summary:} In short, NAPS2 is everything I need in a document scanner. It gives me some of the editing features of GIMP, has a simple interface (you can create different profile for each kind of scanning you do, which is \textit{very} handy—I have about a dozen) and it just plain works. I recommend it.
|
||||
|
||||
|
||||
|
||||
\chapter{Chemistry in \LaTeX{}}
|
||||
|
||||
I used to be a science teacher back in the day and typesetting anything for chemistry was not all that easy. We generally just wrote and drew everything by hand. It would have been easier and much neater if I had known anything at all about \LaTeX{}, but alas, I did not. I do now, though.
|
||||
|
||||
As it turns out, people have written a number of different packages over the years to help with this. Let's take a look at three of them.
|
||||
|
||||
\section{Package \texttt{mhchem}}
|
||||
|
||||
The \texttt{mhchem} package is useful for typesetting chemical equations and reactions and has a fairly intuitive interface, making use of a \texttt{ce} environment. For example, to typeset this equation:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ce{CO2 + C -> 2 CO}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
we would simply use this markup:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\ce{CO2 + C -> 2 CO}
|
||||
\end{Verbatim}
|
||||
|
||||
As you can see, numbers placed after a letter are automatically formatted as a subscript. To format them as a superscript, we just use a caret (\texttt{\^}) before the number. For example, \verb|\ce{CrO4^2-}| produces \ce{CrO4^2-}. Pretty nifty, huh?
|
||||
|
||||
Note that the superscripts and subscripts are not stacked; this is the preferred method according to the IUPAC\footnote{International Union of Pure and Applied Chemistry} Green Book. But if you want them to be stacked, \texttt{mhchem} has this option:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\mhchemoptions{layout=stacked}
|
||||
\end{Verbatim}
|
||||
|
||||
\mhchemoptions{layout=stacked}
|
||||
|
||||
which will give us stacked superscripts:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ce{CrO4^2-}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\mhchemoptions{layout=staggered-flat}
|
||||
|
||||
It also does a pretty nice job of rendering fractions. \verb|\ce{1/2H2O}| gives us \ce{1/2H2O}. That's not the preferred way according to IUPAC, however. To accomplish that, you should use \verb|\ce{(1/2)H2O}| which gives us \ce{(1/2)H2O}.
|
||||
|
||||
You can also do some fancier things. Here's another example from the manual:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}
|
||||
\end{Verbatim}
|
||||
|
||||
which will give us:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
If you need something fairly straightforward, the \texttt{mhchem} package is for you. It has a simple, intuitive interface and it does a great job. I wish I'd known about this when I was teaching.
|
||||
|
||||
\section{Package \texttt{chemformula}}
|
||||
|
||||
The \texttt{chemformula} package is similar to \texttt{mhchem} in many respects, but is stricter about how certain items are input. In return, it has more options to customize the output.
|
||||
|
||||
Like \texttt{mhchem}, it's pretty intuitive. To write the chemical formula for copper(II) sulfate pentahydrate, we would use code like this:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\ch{CuSO4 * 5 H20}
|
||||
\end{Verbatim}
|
||||
|
||||
which produces
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ch{CuSO4 * 5 H2O}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
The most notable difference between \texttt{chemformula} and \texttt{mhchem} is that \texttt{chemformula} can distinguish between different types of input, which are separated by a space. That means that in our example above, there are four parts: the copper sulfate part, the asterisk part (which \texttt{chemformula} renders as a dot), the ``5'' part, and the H2O part. \texttt{chemformula} can then detect whether each input is a formula, a stoichiometric factor, an arrow, etc., and format them accordingly.
|
||||
|
||||
You can also use math mode in \texttt{chemformula}. For example, this code:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl}
|
||||
\end{Verbatim}
|
||||
|
||||
gives us this reaction:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
We can also write the names of substances underneath them by using a ! and two pairs of parentheses, like this
|
||||
|
||||
\begin{Verbatim}[]
|
||||
ch{!(sodium)($2n$ Na) + !(chlorine)($n$ Cl2) ->
|
||||
!(sodium\ chloride)($2n$ NaCl)}
|
||||
\end{Verbatim}
|
||||
|
||||
which gives us this:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ch{!(sodium)($2n$ Na) + !(chlorine)($n$ Cl2) -> !(sodium\ chloride)($2n$ NaCl)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
We had to use spaces inside the parentheses so that the package will know how to format these separate types of input. Also, because a space delineates different inputs, in order to get that space in ``sodium chloride'' we had to escape the space with a backward slash.
|
||||
|
||||
Again, there are lots of options to customize the output. Here's one with fractions:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\ch{3/2} (vertical fraction) \quad
|
||||
\ch[frac-style=xfrac]{3/2} (diagonal fraction)
|
||||
\end{Verbatim}
|
||||
|
||||
which gives us:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\ch{3/2} (vertical fraction) \quad
|
||||
\noindent{}\ch[frac-style=xfrac]{3/2} (diagonal fraction)
|
||||
\vspace{\baselineskip}
|
||||
|
||||
Like I said, this one operates a lot like \texttt{mhchem}. If \texttt{mhchem} works for you, there's no need to look further. But if you need more control over the appearance of your formulas and equations, \texttt{chemformula} will give you a lot of that control. It's also very well documented.
|
||||
|
||||
|
||||
\section{Package \texttt{chemfig}}
|
||||
|
||||
If you need to draw chemical structures, then \texttt{chemfig} is the package for you. It uses a \texttt{chemfig} environment, and loads \texttt{tikz} if it hasn't already been loaded.\footnote{See issue \#2, \S{} 7.2 for some basics about drawing with \texttt{tikz}.}
|
||||
|
||||
\subsection{Basic Syntax}
|
||||
|
||||
The syntax is remarkably simple. You start with the first atom in a molecule and work outwards from there. For example, take a look at this at this drawing of acetic acid:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{H_3C-C(=[:30]O)(-[:-30]OH)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
which is created using this code:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{H_3C-C(=[:30]O)(-[:-30]OH)}
|
||||
\end{Verbatim}
|
||||
|
||||
It's pretty easy to see what's happening inside the \texttt{chemfig} enivronment.
|
||||
|
||||
\begin{enumerate}[left=0pt, noitemsep]
|
||||
\item First we create the \chemfig{H_3C-} using \verb|H_3C-|.
|
||||
\item We then add the second carbon atom \texttt{C}.
|
||||
\item From this atom, we branch by placing each branch inside parentheses.
|
||||
\item We then angle those branches relative to the \textit{x}-axis by placing the angle inside square brackets after a colon. In this case, we are specifying 30\textdegree{} angles.
|
||||
\end{enumerate}
|
||||
|
||||
We can also use predefined multiples of angles of 45\textdegree{} by omitting the colon, so that this code:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{H_3C-C(=[1]O)(-[7]OH)}
|
||||
\end{Verbatim}
|
||||
|
||||
produces this figure:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{H_3C-C(=[1]O)(-[7]OH)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
Note that angles are always specified with regard to the origin and to the horizontal, regardless of where they start. In other words, [1] = $1 \times 45\degree = 45\degree$ and [7] = $7 \times 45\degree = 315\degree$.
|
||||
|
||||
\subsection{Ring Structures }
|
||||
|
||||
We can also create ring structures pretty easily by using an asterisk at the beginning of our definition. I've created some examples below, where the syntax should be fairly easy to understand. (And notice the use of \texttt{[,0.75]} to change the length of the line of the bond to the functional groups.)
|
||||
|
||||
Rings always begin with the atom in the southwest corner, which I've labeled here:
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\chemfig{SW*6(-=-=-=)}
|
||||
|
||||
\paragraph{Benzene with double and single bonds:}
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{*6(-=-=-=)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{*6(-=-=-=)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Benzene with a ring inside:}
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{**6(------)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{**6(------)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Phenol with double and single bonds:}
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{*6(-=-=(-[,0.75]OH)-=)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{*6(-=-=(-[,0.75]OH)-=)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Phenol with a ring inside:}
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{**6(----(-[,0.75]OH)--)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{**6(----(-[,0.75]OH)--)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Cumene with a ring inside:}
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{**6(----(-[:150,0.75]H_3C)(-[:30,0.75]CH3)--)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{**6(----(-[:150,0.75]H_3C)(-[:30,0.75]CH3)--)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\subsection{More complicated structures}
|
||||
|
||||
Once you understand the basics, it's fairly straightforward to construct even more complicated structures. Here are some examples.
|
||||
|
||||
\paragraph{Glucose:}
|
||||
|
||||
\begin{Verbatim}[breaklines=true]
|
||||
\chemfig{?(-[:190]OH)-[:-50](-[:170]OH)-[:10](-[:-55,0.7]OH)
|
||||
-[:-10](-[6,0.7]OH)-[:130]O-[:190]?(-[:150,0.7]-[2,0.7]OH)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{?(-[:190]OH)-[:-50](-[:170]OH)-[:10](-[:-55,0.7]OH)
|
||||
-[:-10](-[6,0.7]OH)-[:130]O-[:190]?(-[:150,0.7]-[2,0.7]OH)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Xylene:} (Or as IUPAC would say: 1,3-dimethylbenzene.)
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\chemfig{*6(-=(-OH)-=(-OH)-=)}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{*6(-=(-OH)-=(-OH)-=)}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
\paragraph{Guanine:}
|
||||
|
||||
\begin{Verbatim}[breaklines=true]
|
||||
\chemfig{*6((-H_2N)=N-*5(-\chembelow{N}{H}-=N-)=-(=O)-HN
|
||||
-[,,2])}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\chemfig{*6((-H_2N)=N-*5(-\chembelow{N}{H}-=N-)=-(=O)-HN-[,,2])}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
Note the use of \texttt{chembelow} to place the third hydrogen atom directly below the nitrogen atom, as we typically don't show the single bonds to hydrogen atoms in cases like this.
|
||||
|
||||
You can even use \texttt{chemfigure} to show reactions, using a \texttt{scheme}. Here's the Fischer indole synthesis that I took right from the gallery in the manual:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Fischer indole synthesis:}]
|
||||
\setchemfig{atom style={scale=0.75}}
|
||||
\schemestart
|
||||
\chemfig{*6(=-*6(-\chembelow{N}{H}-NH_2)=-=-)}
|
||||
\+
|
||||
\chemfig{(=[:-150]O)(-[:-30]R_2)-[2]-[:150]R_1}
|
||||
\arrow(.mid east--.mid west){->[\chemfig{H^+}]}
|
||||
\chemfig{*6(-=*5(-\chembelow{N}{H}-(-R_2)=(-R_1)-)-=-=)}
|
||||
\schemestop
|
||||
\setchemfig{atom style={scale=1}}
|
||||
\end{Verbatim}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\noindent{}\setchemfig{atom style={scale=0.75}}
|
||||
\schemestart
|
||||
\chemfig{*6(=-*6(-\chembelow{N}{H}-NH_2)=-=-)}
|
||||
\+
|
||||
\chemfig{(=[:-150]O)(-[:-30]R_2)-[2]-[:150]R_1}
|
||||
\arrow(.mid east--.mid west){->[\chemfig{H^+}]}
|
||||
\chemfig{*6(-=*5(-\chembelow{N}{H}-(-R_2)=(-R_1)-)-=-=)}
|
||||
\schemestop
|
||||
\setchemfig{atom style={scale=1}}
|
||||
|
||||
\vspace{\baselineskip}
|
||||
\vspace{\baselineskip}
|
||||
I had to use \texttt{setchemfig} to scale the reaction to 75\% so it would fit on the page, and then its use again to reset the scale back to 100\%. (Although the latter is a moot point, as we are done now.)
|
||||
|
||||
This is an easy package to master, and really fun to use. I encourage you to try it.
|
||||
|
||||
\chapter{Coda}
|
||||
|
||||
\section{What I Learned About \LaTeX{} While Creating This Issue}
|
||||
|
||||
\subsection{How to Get More Font Sizes}
|
||||
|
||||
One of the things that has bugged me for some time about this zine is that I was not creating the cover in \LaTeX{}. The reason for that was simple: I didn't know how when I started this project. But we're now at the fourth issue, and so it was time to finally figure it out.\footnote{If this cover looks a little different than previous covers, this is the reason why. But they will look like this going forward.}
|
||||
|
||||
One of the issues that I encountered is that your standard document classes give you a limited number of font sizes, and I needed the title to be fairly large—larger than I could get with the \verb|\begin{Huge}•\end{Huge}| command, anyway.
|
||||
|
||||
As it turns out, if you are using Type 1 fonts, you can just use the \texttt{fontsize} command to make this work. This is what I used for the front cover:
|
||||
|
||||
\begin{Verbatim}[frame=lines, framesep=3mm, breaklines=true, label=\fbox{fontsize example}]
|
||||
{\fontsize{50}{60}\selectfont \textbf{the codex}}
|
||||
\end{Verbatim}
|
||||
|
||||
The first number (50) represents the font size, while the second one (60) specifies the line spacing, which is generally irrelevant if you are only using this on a single line of text.\footnote{I found this at \kref{https://tex.stackexchange.com/a/716/245702}{https://tex.stackexchange.com/a/716/245702}.}
|
||||
|
||||
\subsection{Adding Space at the Top of a Page}
|
||||
|
||||
Another issue that I ran into when creating the cover in \LaTeX{} is that I needed space at the top of the page, before the text. Normally, I use something like \verb|\vspace{50mm}| for something like that, but any \verb|\vspace| is automatically deleted at the top of a page. The solution is to use it with an asterisk, like this: \verb|\vspace*{50mm}|.
|
||||
|
||||
\subsection{Drop Caps}
|
||||
|
||||
\lettrine[loversize=0.1, nindent=-0.0em]{D}{o} you want drop caps in your \LaTeX{} document? Then use the \texttt{lettrine} package. It's well documented and has lots of options. Just be careful not to overdo it. Drop caps can be overwhelming if used too often.
|
||||
|
||||
\lettrine[loversize=0.1, findent=1mm, nindent=0mm, image=true]{Y}{ou} can also be really fancy by using custom images. In this case, I used \texttt{y.eps} to create this drop cap. I probably didn't choose the best font for this kind of thing, but you get the idea. And you also can see what I mean when I say you shouldn't overdo them.
|
||||
|
||||
|
||||
\chapter{Afterword}
|
||||
|
||||
\begin{multicols}{2}
|
||||
\begin{small}
|
||||
\noindent{}It's been a while, hasn't it?
|
||||
|
||||
I'm gratified that this zine has a small but dedicated fan base who have a lot of great things to say about it. The feedback that I have gotten has been nothing short of amazing. I appreciate every single bit of it.
|
||||
|
||||
I apologize that I can't get these out on a more regular basis. When I was younger, I wrote all the time, but as I get older, I find that I write more slowly and often with great difficulty. Part of that is no doubt my current job (which I was going to write about that in this issue, but I ran out of space, so it will have to wait until next time) and part of it is…well, all the things that go along with just trying to make it in this day and age.
|
||||
|
||||
And a large part of it is no doubt because I have short bursts when I get quite a bit done, and then long periods where I get nothing done. This is not new—one of my college professors said that I tend to ``run hot and cold''. Some people have told me that this sounds like bipolar disorder, and others have said that this is a natural part of the creative process for some people. I suppose there isn't any reason that it couldn't be both.
|
||||
|
||||
Another reason is that I find I write best when I can work longhand. There is just something about the feel of pen or pencil on paper that really gets my creative gears going. Once they get going, I can usually switch to working digitally without too many problems.
|
||||
|
||||
I have a website for all my zines, which you can visit at \kref{https://just13.click/}{https://just13.\\click/}. I used to have a mailing list, but then Mailchimp decided to get rid of their TinyLetter service because why provide a public good for people when you can make money instead? If you want an email notification of when I produce a new zine, just send me an email at \texttt{wolfgangswishlist@gmail.com} and let me know which zines you want to hear about.
|
||||
|
||||
I also have a list of topics I intend to cover in future issues. I've provided a link to it on page 2. If you have ideas for things you'd like me to talk about, you can send me an email at the above address.
|
||||
|
||||
\medskip
|
||||
\begin{flushright}
|
||||
\noindent{}Thanks,\\—Ken
|
||||
\end{flushright}
|
||||
|
||||
\end{small}
|
||||
\end{multicols}
|
||||
|
||||
|
||||
\end{document}
|
66
004/cover-004.tex
Normal file
@ -0,0 +1,66 @@
|
||||
\documentclass[letter, landscape]{report}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{makeidx}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[]{kpfonts}
|
||||
\usepackage{float}
|
||||
\raggedbottom
|
||||
\usepackage{array}
|
||||
\usepackage{multicol}
|
||||
|
||||
|
||||
% Set column separation
|
||||
\setlength\columnsep{20mm}
|
||||
|
||||
% Where are our images?
|
||||
\graphicspath{{images/}}
|
||||
|
||||
% Put everything in monotype
|
||||
\renewcommand{\familydefault}{\ttdefault}
|
||||
|
||||
% Stretch the linespacing
|
||||
\renewcommand{\baselinestretch}{2.0}
|
||||
|
||||
% Let's adjust the page margins
|
||||
\usepackage{geometry}
|
||||
\geometry{
|
||||
margin=10mm,
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
\begin{multicols}{2}
|
||||
% Back page
|
||||
|
||||
\vspace*{40mm}
|
||||
\includegraphics[scale=1.0]{uq3buhdwufia1}
|
||||
|
||||
\vfill\null
|
||||
\columnbreak
|
||||
|
||||
% Front page
|
||||
|
||||
\vspace*{40mm}
|
||||
{\fontsize{55}{70}\selectfont \textbf{the codex}}
|
||||
|
||||
{\large \textbf{Life with Linux - A Zine}}
|
||||
|
||||
{\large \textbf{Issue \#4}}
|
||||
|
||||
{\large \textbf{Typeset in \textrm{\LaTeX{}}}\\(including the cover, of course)}
|
||||
|
||||
{\footnotesize \textbf{First Printing}}
|
||||
|
||||
\vspace{10mm}
|
||||
\includegraphics[scale=0.75]{4_RETAT_04_Linus_Torvalds}
|
||||
|
||||
\end{multicols}
|
||||
|
||||
\end{center}
|
||||
|
||||
\end{document}
|
BIN
004/images/4_RETAT_04_Linus_Torvalds.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
004/images/Y-eps-converted-to.pdf
Normal file
149
004/images/Y.eps
Normal file
@ -0,0 +1,149 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner
|
||||
%%Title: Y.eps
|
||||
%%CreationDate: Thu Jun 13 08:49:55 2024
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%Pages: 1
|
||||
%%BoundingBox: 14 14 87 85
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
% Use own dictionary to avoid conflicts
|
||||
10 dict begin
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
% Translate for offset
|
||||
14.173228346456694 14.173228346456694 translate
|
||||
% Translate to begin of first scanline
|
||||
0 70.417582417582409 translate
|
||||
72 -70.417582417582409 scale
|
||||
% Image geometry
|
||||
273 267 8
|
||||
% Transformation matrix
|
||||
[ 273 0 0 267 0 0 ]
|
||||
currentfile /ASCII85Decode filter /RunLengthDecode filter
|
||||
%%BeginData: 8961 ASCII Bytes
|
||||
image
|
||||
JcC<$nGe(>JcG6>JcC<$nGe(>JcG6>JcE^h!VcMps+13mrs8M\^m.[q*/;tIs+13qrri/OYBhDg
|
||||
!!.W;ZN#LUdf0IKj1BsgoDenRe[,:,s4.,Oq:)!&mf3@t_R0>os4I>Ro?*.El2Uh1c2Rq6aMQR+
|
||||
mf.k<g]%BMbD-Pi!!+S1d/O1DUCI2&!_LB1nGe(>hZ!]Uf9n,K!!-*jdf0@EJbf?IK^SC1JcF[.
|
||||
!pQdVhZ*\%qpYQFTD/Be43d?rJcFd1!rL;ogAh8Armh#Kf(B"DSGDgWJcFj3!pm*\fDko[f)GdF
|
||||
>4_dqC?kKlJcFp5!oT:Pi;`s(GGhV?!!+tNfDbi>nc/\RfCo5qs6BUcrR-#O!!bZQa5m-ts/Yqq
|
||||
!6!Oi!6aj3!=cp?s+14:rrW):@,h4hA[:1jr;Qfo5ktB[SD!oClS\)1!3c1tJcG0<!rKo7j8]6O
|
||||
WoNmS!5J:/!,C6f!W-m'!!0"sqYu-HnG`Re_c,Ur!e]&$p\t9e6MLN\8_X1EV!7p[WVZXGs760k
|
||||
qnl:m!!4L@kOecSRJ-[]459c8c0,--[ep)Us7H<mrm5$6!!5$`o^i(_d.RG>0&6I-kq_E%!6+m9
|
||||
JcGEC!Shk[!!4pZo^`"_l8\J;!+4R^!Vg9g!!(FFs+14ErrM>BjT#?+XRku^!VU-u!!%W,rrA;E
|
||||
!!&8^s+14GrrVnm%HRQjO6lB9!W.QB!!&nQrrBam!!'(us+14IrrW2A8`]pQC>/.V!WJPZ!!(F(
|
||||
rrLjij8]3)mJ['9s8;ltj*9Yc!]@gmmf*9anc/[]i;WiG8)jRL[f$/Vs8N$"p7i)Y!!/#HmJd0g
|
||||
nc/Z<i;WiSEoR-#GPqC=JcGcM!Rad*!!,a<m/I'hnGiR2i;WeFirB*CmJHp7rrMYQj8]4Kp$D\Y
|
||||
Wpp&i0)+?)!57@l!7q#HKDu#Pa?AVb!C4rsrrN+pn,NHbiVrr2%H@Eg\G?/XrrMP>j8]46n*L&T
|
||||
qj?jQ!>b(^rrMFKirB(Hq#?'J!QmC`!!4@Zrp9Xcq2"J>!1`'K!V^3d!!.EBq#?-L!VDN8!!-Bd
|
||||
li."XGjbV5(?slZ!W@o9!!-?rp]$'L!S1!+!!/2Tli."RAaTNuVW.UUXQ'9]46ZD<MZ3_QUZ;CU
|
||||
*51Y;!U!DL!!,1Rj8T,$irB)qf_,9&rrM=tj8]3Xi9L=ChEC6+!5@Ln!T,*]!!'t0s,?sYa=cNR
|
||||
!I=5#rrLV!m/R0$qrIbXmRcF=!3,SiNrK.TS)XJLT)7gQ!Ql2E!!(s<rrMn3irB+<rU^&MrrM7n
|
||||
j8]2r^Zkau_!:t#Vr[jYrJfh;!GV<!s,d6]b:;QQ!CGQ*rrBIm!!--qjSo4]irB*KmIC4>rrN%q
|
||||
irB*clK\BMri,/_!8?N6!6=+"!?Bqbs-*H`o7,d#!I45$rrN(jl2UgcjSo89*9.#!a7'%mrrM+X
|
||||
irB+CqWe(]r0ZaL!H.errrMFNirB(Ymf/RP!QZJF!!0,!lMgn^P3N#J-KsRk!VKp^!!.fPmf/XR
|
||||
!WB+Z!!'h!rrMtSkl:_%jo5AYJE$V1@.ipeR/[3^O5g3@(<l%C!VqH6!!&GJrrASL!!,(Cm/NLR
|
||||
!Ut*h!!+_'l2Le[KBW@:B_^]h!4Uqf!7gE8Rf<EK;<%WW4l>N(!VqB4!!+k>jo5>,iW&thlMm@R
|
||||
!R`U\!!,mYl2Le[KBN:8cK5',i$RIa!L*NJs.')i_[YW+!F"jSrrMqJkPtUijo5AK8)jRMCA@&n
|
||||
Sc8\qiW'!dmcj`Pqh=56!1N$L!VU-c!!,@Okl7:T!W8SL!!-[#l2Le]N9C6BIf&:-!W.K/!!*P]
|
||||
kPq4T!Vq]6!!-j*l2Le^P3;lH@.`R\!1VsJ!4h7lU&P/dH/\f)E:iDp!WADL!!,FPjo5=giW'"@
|
||||
roX6TrrMY(iW'"#p?;MVU$)IW,2MA\!6a@%!Ftlcs.fSpmU5#S!H@_qrrB1a!!(4(rrLn!irB*8
|
||||
kiDc>rrMFdiW'!ro]Z;T\`Wqm[,q;gks45.!70^*V>gSZ:#Z-RC%LQg!6++$!L`rLrrM[qiW&tY
|
||||
ir>nU!TQW.!!-^&kl1\2%HmcmIJ`1,!Vpou!!.KFir>qV!TH3#!!-R!kl1\?-KkF1@.`U]!WA)=
|
||||
!!,[\iW#kV!UN>9!!-9lkl1\I5j/1K6L3b5!2STS!=dc@s/H#!rHR<%!DVqErrMUikPtW-h<"Y:
|
||||
\`!Mg\)74brrCO-!!,@Jkl1\XD<Cm!b2rX'bi&O&L]632WW)smirB*;iTU:Br.sM9!41ee!S\UR
|
||||
!!,sghZ'ST!2efW!@HRarrAkX!!/Mek5PJF45p5@%Gfk?WW)tXjT#;seE?i3^?5IsIJ`1,!UitG
|
||||
!!'Rbs/>qtLZSR:b3/d*eIC^B!FYQ^rrMh.i;`n5rnROPrrCj;!!'XorrM@DkPtWMlK8*Iqgm]+
|
||||
!DE"<s/5ksMs13AWTX9^p0d(a!@$@^rrN+dhuEc0gAe)N!UCrq!!/Gckl1\^L?AO:b2rX'XPa'Y
|
||||
Y1`iPrrBLo!!.cMkPkO`k5YLgjo5=khuEe%r7V+IrrN"6mJm9-pZMPVd,tB0R/Z7J!6*jr!B'5r
|
||||
s/#_rjW*^h!2o\*!;,a[!U;Q+!!.NFk5PJ.%H%3db1HZhrrBXn!!'CqrrMn/kPtWko]H/SfGrfL
|
||||
!0u.8V#LJoJEQt5^@;.&QfnDM6L*_5!T5Tg!!--of)MNF!UrPD!!4.<r:0de`omC',2MD]!Tu`*
|
||||
!!(g)s.]Mnea3><5dBhJrrM=9kPtV*k5PJL:Yu-PXOR9DrrB1j!!6QHq="=aqJ>?q!41hf!V'Ol
|
||||
!!,6Ol2Uj"qpbY>rrN%Mo)JiAeG\e7!2SfY!LE`JrrMh1p](@8gPb@t!@$XSs.KAmqNU^S!Z%3a
|
||||
li-t:kPtX,qWIkZpNcK5!Qj!Z!!'RXs.B;mrkL;d!!5<dn*9oRoM=]O!E8OOrrMqEpAb9#r+PBr
|
||||
!I"Fis.0/pn[ENr!+!G9kl1XIkl:`:jQHODqLeMB!h'&)lMpr4l-]N^s8Drtc0,--d-(E0qhOnG
|
||||
"+L.?6L+UO^!Qe1s8N$!o0qmD!4(ef!W.iM!!?^'s/G;a!I=Xjs+14LrrAAL!!/&Xkl1\]OnShY
|
||||
7I:'=(@2#%,3dGRJcGcM!7^65!G1ugrrN(apAb=ChuE_6lMppqcMrIq!rr$ol2UiElKJ6KrL<K\
|
||||
"4$rHfBWD;EW",^Jc>cNXm#fcdHLT2rh&la"M"L3r+PEs!>ab@s+11NkSEF`!3PJb!WJkf!!&Yj
|
||||
rrBq%!!'.Fs+11MJEd+8J,JR2!WJbc!!S&Rs8VaYli7&iq98kjrrCF2!!,gbl2Le_SFup`C%hQ+
|
||||
!3#2`!8#EoKDtuL>jD@j%GU.I!W8;X!!,g^rr3#`(@2#$Q-0,ZrrBat!!'@irrN%^p&G+Gir/lW
|
||||
MX1<D2=ScgK`;)F46lkIJ,S[4!W.oM!!(IGrrC[:!!'aTs+LCPXm5rf5k+(=!W%]H!!'b3rrN%2
|
||||
li7'&r5ntmrrMX>lMpq3lMgn\L%PEGV>U>n_<V($h8oVMrrB"`!!&MRrrMnGo`,#NrVc`sog8!F
|
||||
!1(\*LAq;D,4#:1=SM.]!VUp6!!.'6r;Qbqli7&=n&PH_rrB1e!!(^<rrM\.o`,"knGN:ekn`Uc
|
||||
!4KoIL]7DK2=(;CTBlLXm9oSe!B'$:rr@oB!!-*r`rCho!4qLs!DiFUrrM:Yo`,"%fDGRJfBWD:
|
||||
bJjL;rrN$nli7%4m/I+E5kG$V`;BQ8r+>9q!HJ+Xs+p[Td-L`4K^A^>fIldr!3>tr!5[t$!8GHl
|
||||
M#RI*m/R/,l0\KOc5cHV!L!HZrrMdXli7$C_uGSn!9rhM!35Gd!5nC.!I";8rrAt`!!*Pl_uGSn
|
||||
!4(tl!CHJIrrBM!!!-9oqYpT\(@2#$T#1MbrrN+$m/R.&n,EFdU@S?c4m;_A!/TtA!@I9Ps,-gV
|
||||
hX(:D@f5`q!VhQD!!+(oq>UHGlMppg_>fDm!3PVg!7:68!V(1#!!(+9rrN%/li7&Qp;-cdrr?Hp
|
||||
!!-p8nc&XR<q64jZM=G"_!:t#^;0c,rrDBP!!(L<rrLk9nc/]WrqZQpog%jD!Ef67s,6mWaR0$/
|
||||
EW5P/!QlDQ!!.NFq#:>llMpq/^]05l!2&ZZ!7(08!4D=s!Fk]rrrM@"li7'(rkJJkrr?["!!--u
|
||||
o`"shSac[\7I0^J!/Tq@!8,$cN;iqU(@M5'^\%O,o7-91!@$CprrCX9!!%\cs,?sXl0eTQ-MI-4
|
||||
!TmST!!(:<rrN%/lMpqG^&O&k!8R#C!1NT\!RW[l!!'M%rrBk#!!&G"s,?sXddI/9g@tUJrj;+o
|
||||
!1roa!VJ_E!!+;2]`3rj!6t!5!DWOfrrMqZmf3B@qtC$iVs=<_Wk8:irrCI9!!&bgrrMP*mf3B%
|
||||
p@eLekSELb!B]qcs,?sXg$etAeG9+FhF[/9!DDkRrr@i?!!'UAs,?sXl0nZQpA4di_]8+F!@m+%
|
||||
rrCX9!!,sm])R`h!W4S@!!$C'rrMn^m/R.7p&>'jAa9<raLV>/rr@lG!!&;^rrM@tm/R."o`"p,
|
||||
lMps!rOMrdrrC%/!!'/"rrLD&m/R-]o`"sa4mN(Je[YX;rrM[1o)Jp's8Vtoli7'DrUg*iVX"3^
|
||||
I^f?7rrAJY!!Bk5ms"*u!H.])rrM=!lMpqC\,V?c!9<YN!iag@li7&bnFQY[L?eg>Pd^UKrrA&N
|
||||
!!#OT!!+t=oD\g@lMpr$laHhMrrM9lhZ*Zdf(8nBqd\pl!2d1(M#RIQhZ*Yno)A^)lMpr@o!SLR
|
||||
rrMgji;`kXo)Aa_4mN(J[^?'irrCU/!!/5\o)A]dlMprYppC'UrrA\P!!.9=o)AaS(@(r#`3]Ju
|
||||
rrMq-jo>Eco'u_[L?eg?@f3S4L&V2:0'E9946Z57!7g?7!7A+PK`;%qkl:`(g@>1Dqd\pl!-kdK
|
||||
KDtqLl2Uh*nG`L&l2Uh?Z2]IV!WA2J!!'Y#rrMaTlMppEYlB=T!W%N<!!'Y"rrAn]!!*PmYlB:S
|
||||
!W.rJ!!,(+n,EFO%I3uoTWeBHrrW6!ZL\%sKC/+,!/9_=!@mTBs+14LrrLnipAb5Cea<A:e`m,7
|
||||
ZEF4Ys8Ds)r6gZu!"D)&PeZMMrrN"+lMprSp9+FHs7uZprT=+[^?P[u^odWfs5*bVoKDL?!F5N(
|
||||
s+14,rrAk[!!(<Gs-<U1rq5R6e&K&,WLf<-G%b/[7lVtR2)mZf=ClK"LmOpA]?&R_meQDQ!TspX
|
||||
!!.->XT+ml$3'MUd_MlGE_dJ+!!bZ-P,lCJkkY&S!/9\<!8=LRV#LYojj:H'D'mF+#?HV[a5H[k
|
||||
eER#6LT:BRrrhlD\W^.0!!-"gl2UhGWrK7%"Spi_N_Q2I!1TtfZMt("eZX35ScAd8m]$5prr`2V
|
||||
Zuqc:!3N4"\c2d'b*>,V!!,7UW;jO1"7a?_%?phm]VkeErrVf0J<0a5MSnZWWrKs9"8p`5*/ae!
|
||||
9:O)nXoH?>!pZs`ec6sNAV?SV\\cS@h<""lo(;YOqu-Qnr;6<_nEf>qf$2.?Ulfjke,TSk[c@@l
|
||||
s2Y-@rmunZ!!aujQ*\]jlLs$5#5RT;_P`&RfDl"LVV_<Zs2k9Bpr$\"!!X3UT>]ORrm(NHn(5%*
|
||||
4k]l;;m#)gs3(EDoW^L:!!I,6a5d$7rrMI%fDktd_">2;c2Rk:Y;5,<")t<joY:D+Q.5j9,+@?"
|
||||
s3L]Ho<'_-!!?)oeb-TT!8l0(!cu`e^AlU\!r9;\jo>L([cIG!rrN+DcN"#P`;7:Le,KLKb>[R(
|
||||
!d;HM[f6?QlMpra5i_nH<lt<Ws4%&Lh/_]Z!arJ&[/U1'>3c.kg\]Ws6KJ1JB[js"f)GdCSEU"T
|
||||
32YW=rrB[s!!%fQrr`/GL^iJH!K$3_s4@8Ob=1[r!cc9UYl=an2<t5BjneuYm^#7C!!4X^r5\ij
|
||||
rrMJ>lMptqP2EDA!1)pN!1NZ^!r9]=k5YO(lcB+[rrL(kli7):VsLMb!8Hf>!@$q(rrW,<;s42^
|
||||
29X,Ah#@EHNpH`I0!4]FrrN"/lMppbo)Adf^,Y<V!MKA6s5!\Uf1kW4!\1DFWW)t1lMprFo^Mk]
|
||||
nX8S@!JU9ls53hWr2f8c!Z%R#W;cne1@"o?]^>_"gKNhA!H%>Ns5<nXo7H?0!KucGrrA8K!!-L)
|
||||
m/I+[S*9nRAb44IiVrr=<pfqgDVV)g!7L-4!7g?6!R37^!!-s0ci<#)!QZVV!!5U/rMBMpp.suS
|
||||
!/Th<!TdGK!!.ECd/W2,!WK=k!!/bcU]1=dlMpr*lK8*Io6BO#!2n3Djo5AZS*p=XD;V)f!8?]<
|
||||
!3P>^!Vh?5!!(9ks5s=^pP//;![>/PUAk8i>jD@j9D7EG!W.oC!!,1Pdf8M1!V17"!!.?/T`5"l
|
||||
l2Uh-iVrrTJa3:9RaV6"rrMRunGiV;^AX`)!Sn4N!!%Z/rrMk6lMpq?e,S\4!UX.^!!.*'TDnrd
|
||||
>3c.h-L9Og!UrbK!!%W"s6BUblr3HT!Y)C2T)Se[l2Ugph#@E2(@2#$j4++prrMOgnc/\khOXZH
|
||||
d-:T3C&?Zb!57_!!1;:9m/I+T>k.jqO7f(D!UrG@!!(p1rrN(Hm/R/:q:5N4rrM_#o)Je<_4:N+
|
||||
reB\<!2J3H!UD6&!!(Hts6fmfpiZ0.!ES6MrrBat!!--pfDbi]m/R-Vec5+<!W.WC!!.`ES,WNH
|
||||
(?tl"g=H9)qH!"a!+4:Vn,EB[o)JfmrL<ffoMt/V!2n?H!6sm2!;>"DnG`L#oDen3a.!#/reft@
|
||||
!FY`QrrN+1mJm7Df)P:?!7g]A!Bo2*rrBUp!!*Pddf0<gmJm76f)P=@!UMuB!!-9fRK!<E(?tl"
|
||||
YL3@NqbQY\!6!IgoD\jfDY3u1B^hGi!UrhK!!-s6d/O*Pmf3?sf)P@A!2/ub!Hn%&rrMt=l2Ui;
|
||||
l-KA0lgFfR^t/PXrrCI>!!.KAR/[/Skl:_)c2Rcmn,NIBf)PFC!UrGL!!.?=R/[/ukl:^Nbl7[Z
|
||||
n,NIYf)PFC!0$UO!H[t%rrL^\l2UimpWWX;lgXrT=OmHFrrC@<!!-[(R/[3O4mE"J*953A!+k^$
|
||||
!34TLp\t9e8bW2c:%"DK!V'@X!!'dUrrB(i!!(g)s7cNnW:p8m2<:/)!Vg[!!!&>+rrCC:!!-g5
|
||||
ec5FE!U1Bo!!(H7rrN%Rkl:a$q8iR9mdgDYd+&*jrr@uO!!'6irrA\U!!,@O`r?$-o`,#;rm^uD
|
||||
rrD!O!!.lRR/[/nkl:_nf>[aiE:s846LN>&q>UGLp](=bnsKFW^?>Os\]"LJ<VHIo1>C7WqYpQT
|
||||
pAb3BR/[0+kPtXIrl+m;kP"rW:#s_%qYpP`p](;cR/[32%I!inG59)V!7U`D!Y(mqd/X"C!Upm#
|
||||
!!,O\RK!<9(?kf">4TT2!W#am!!69)kg'5*rrBV)!!('-rrL^qkl:`Ike[9'n$]1*dHLSRs82fr
|
||||
@eg!)FoIj0!Rr=X!!+(oK`CuM!9*\Q!8*b?!RMhM!!()ms8;lsYk\8!I@C0:b73Y8!47@Xr;Qb/
|
||||
q#CEKS,WK.k5YL\JcG]K!:KX_!G28#rrBdr!!/YiJcG]K!6t<>!5tH.!WK._!!/8]Jc>`MrVlko
|
||||
q>^O?p7D9bqj-CF!J^K&s8W,trr@-:!!&(OrrMhDk5YO/q18SFs8N$!r@7XD!6q/9!Ujdd!!.KA
|
||||
JcG]Krr2ucq#CEeT`5&M:$2KWJG=]qr;Zcr!8[JO!,8,+!QQDI!!.`JJcGWIrr2uEq>^MnUAk8l
|
||||
VWIjZLAHK$qZ$Qp!5eR4!6Cr8!VCs*!!.rQJcGQGrr2u2q>^NQV#LJQ<osA_RJVR8q#C?n!4M_(
|
||||
!:m#e!rfbHjo>F^rdk+Ds8N#u[e]t(rMTYrnqQ6+!5!g^p&G$k!5870!'R7[!S^?2!!+(_JcGBB
|
||||
rr2u:qZ$V%WW*"qWoX3]2;!K[oDegi!7(HA!*uW)!T7JL!!-BhJcG<@rr2uVqZ$UpXT&A!XpsIm
|
||||
!J9rps7--grrDQc!!#HirrM%kj8]4Ur.4n;s8N$!r]BuW!;s)$!VN2J!!*kQJcG0<rVlkUqZ$Wc
|
||||
ZMt"*a@5.i!DhO&s6]jbrrBY-!!(l^rrM8.irB+6o7?r.s8Drtjnf#X_6s:EnY$EQ!!3V<rIP"7
|
||||
s8;lsB`%i1RCE1tpTlL4!!,gLJcG!7r;Qc0qu?a_r4;n0r52+c!!.oHJcFs6r;Qfj0)P\LgV!Of
|
||||
qoE.(!!4pordk+4s82frW;HVqPeR/!qo)[r!!.N7JcFj3qu6]a%K-8-%ICq2!r9Z0i;`p']`!E]
|
||||
jT#)V!2'/h!0P2!!q3E]huEe&kCNZms8)`rmje58!7]$g!oTC\huEgA`;Y>fiW&`R!3c;#!CH4s
|
||||
rrVl3ES^ZrR.>h.huENP!V]Oj!!-[%cMn"FfTm`<!!-Q_JcFR+q#:?DqZ$Y1mF)":r7n2Eh#IL<
|
||||
]DI0Zh#I-K!1!E]!CG>frr`)KUIEr<!Z%[)JcFI(p\t9e<r)dsPjdE-"TIMrKHf+M!KQGrs4IAF
|
||||
rrM'uq>^R:U?LV:"S^]`N^D@u!I3CNs475CrrBn0!!@2QjSeHF#6!o=]:3UGec5_rfRa(Ps7H<k
|
||||
X7ZH.4bTlVfB)Jnq>:!_p$LkreB#(kKjZ+Q!!.DuJcF0uo`"skR^)noIb95Od/W_;!W8:m!!3q(
|
||||
idq-Ts760jrhR()!^3aUJcEsonG`O"%D;`CGf]Z2s2tB1rrLhD_#OO'Wons5a8bT-!Ukla!!=R2
|
||||
dJJLp`W,<)!R4-W!!=4"bkH\g_Z/s%!qroTcN"&6S'L\Xs1eTurrVbn4k0N8%<Af4rIP!]s6'C`
|
||||
q8d^5!!F9fZ.J]#s1&*irr_Z'I2:lD"WVQX`SgQCs0Vgbrri,O[uOb^!!Z/KU:o"<qgndNs4mVe
|
||||
qWHPU^9Xi<U7eEdZb+?2jR;tss/>sKs+14>s+13$s7$&>s+14>s+13$s7$&=~>
|
||||
%%EndData
|
||||
showpage
|
||||
%%Trailer
|
||||
end
|
||||
%%EOF
|
BIN
004/images/codeck.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
004/images/flavours.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
004/images/ncsa4-0.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
004/images/uq3buhdwufia1.jpg
Normal file
After Width: | Height: | Size: 132 KiB |
1005
005/codex-005.tex
Normal file
73
005/cover-005.tex
Normal file
@ -0,0 +1,73 @@
|
||||
\documentclass[letter, landscape]{report}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{makeidx}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[]{kpfonts}
|
||||
\usepackage{float}
|
||||
\raggedbottom
|
||||
\usepackage{array}
|
||||
\usepackage{multicol}
|
||||
\usepackage[
|
||||
margin=20mm,
|
||||
marginparwidth=0mm,
|
||||
marginparsep=0mm,
|
||||
]{geometry}
|
||||
%\usepackage{showframe}
|
||||
%\renewcommand*\ShowFrameColor{\color{red}}
|
||||
|
||||
|
||||
% Set column separation
|
||||
\setlength\columnsep{30mm}
|
||||
|
||||
% Where are our images?
|
||||
\graphicspath{{images/}}
|
||||
|
||||
% Put everything in monotype
|
||||
\renewcommand{\familydefault}{\ttdefault}
|
||||
|
||||
% Stretch the linespacing
|
||||
\renewcommand{\baselinestretch}{2.0}
|
||||
|
||||
% Let's adjust the page margins
|
||||
\usepackage{geometry}
|
||||
\geometry{
|
||||
margin=10mm,
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
\begin{multicols}{2}
|
||||
% Back page
|
||||
|
||||
\vspace*{40mm}
|
||||
\includegraphics[scale=0.2]{iamemployedaf-post-2024_03_30_08_56}
|
||||
|
||||
\vfill\null
|
||||
\columnbreak
|
||||
|
||||
% Front page
|
||||
|
||||
\vspace*{40mm}
|
||||
{\fontsize{55}{70}\selectfont \textbf{the codex}}
|
||||
|
||||
{\large \textbf{Life with Linux - A Zine}}
|
||||
|
||||
{\large \textbf{Issue \#5}}
|
||||
|
||||
{\large \textbf{Typeset in \textrm{\LaTeX{}}}\\(including the cover, of course)}
|
||||
|
||||
{\footnotesize \textbf{First Printing}}
|
||||
|
||||
\vspace{10mm}
|
||||
\includegraphics[scale=0.05]{4_RETAT_04_Linus_Torvalds}
|
||||
|
||||
\end{multicols}
|
||||
|
||||
\end{center}
|
||||
|
||||
\end{document}
|
BIN
005/images/4_RETAT_04_Linus_Torvalds.jpg
Normal file
After Width: | Height: | Size: 476 KiB |
BIN
005/images/codeck.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
005/images/git-icon-eps-converted-to.pdf
Normal file
BIN
005/images/git-icon.eps
Normal file
BIN
005/images/gitea-online-edit.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
005/images/iamemployedaf-post-2024_03_30_08_56.jpg
Normal file
After Width: | Height: | Size: 146 KiB |
3
005/include/branchrename.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git branch -m master main
|
||||
\end{Verbatim}
|
3
005/include/checkout.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git checkout -b <branchname>
|
||||
\end{Verbatim}
|
3
005/include/clone.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git clone <URL of remote repo>
|
||||
\end{Verbatim}
|
3
005/include/debgitinstall.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ sudo apt install git-all
|
||||
\end{Verbatim}
|
3
005/include/fedgitinstall.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ sudo dnf install git-all
|
||||
\end{Verbatim}
|
3
005/include/installmeld.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ apt install meld --dry-run
|
||||
\end{Verbatim}
|
3
005/include/merge.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git merge <branchname>
|
||||
\end{Verbatim}
|
3
005/include/pull.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git pull <remoterepo> <remotebranch>
|
||||
\end{Verbatim}
|
3
005/include/push.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git push ogit main
|
||||
\end{Verbatim}
|
3
005/include/remoteadd.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git remote add ogit https://git.kjodle.net/kjodle/Apollo-11
|
||||
\end{Verbatim}
|
3
005/include/remoteremove.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ git remote remove origin
|
||||
\end{Verbatim}
|
3
005/include/snapinstallokular.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ sudo snap install okular
|
||||
\end{Verbatim}
|
3
005/include/snaprefresh.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ snap refresh
|
||||
\end{Verbatim}
|
3
005/include/sudofindsnap.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ sudo find /snap -name libKF6Parts.so.6
|
||||
\end{Verbatim}
|
3
005/include/sudoinstallkf6.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ snap install kf6-core22
|
||||
\end{Verbatim}
|
49
006/006 time.csv
Normal file
@ -0,0 +1,49 @@
|
||||
Issue #6
|
||||
|
||||
Date,Topic,Minutes
|
||||
------------------------------------------------
|
||||
2024.08.14,Git - setting up files,15
|
||||
2024.08.26,Research (notes from book),35
|
||||
2025.01.31,FlashCards config files,60
|
||||
2025.02.01,Flashcards (ch. 2),60
|
||||
,,60
|
||||
,,45
|
||||
,,60
|
||||
2025.02.02,Flashcards (ch. 2),15
|
||||
2025.02.03,Bar codes,30
|
||||
2025.02.05,Flashcards (ch. 2),45
|
||||
2025.02.06,RA labels,60
|
||||
,Flashcards (ch. 2),60
|
||||
,Afterword,20
|
||||
2025.02.07,Flashcards (ch. 2),60
|
||||
,,60
|
||||
,,15
|
||||
2025.02.08,Updated Coda with tikz information,25
|
||||
,flacards (ch. 2),25
|
||||
,,60
|
||||
,,15
|
||||
,,60
|
||||
,,60
|
||||
,,55
|
||||
,ch. 2 edits, 20
|
||||
2025.02.09,barcodes,60
|
||||
,(coda),25
|
||||
,aside on memorization,30
|
||||
,(ch. 1 - supporting open source),50
|
||||
2025.02.10,ch. 2 edits & corrections,30
|
||||
2025.02.12,ch. 2 proofreading,16
|
||||
2025.02.13,additions to coda,15
|
||||
2025.02.14,ch. 1 drafts,35
|
||||
,,32
|
||||
2025.02.15,ch. 2 edits,30
|
||||
,ch. 2 aside,20
|
||||
,ch. 1, 60
|
||||
,,49
|
||||
,ch. 1 edits,20
|
||||
2025.02.17,ch. 1 edits and additions,30
|
||||
,ch. 3 writing,60
|
||||
2025.02.18,ch. 3 writing,90
|
||||
,,45
|
||||
2025.02.19,ch. 4 writing & bugfixing,60
|
||||
2025.02.21,ch. 3 edits,75
|
||||
2025.02.22,ch. 3 updates,10
|
|
187
006/codex-006.tex
Normal file
@ -0,0 +1,187 @@
|
||||
\documentclass[twoside]{report}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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
|
||||
\usepackage{wrapfig} % Let's wrap some images
|
||||
\usepackage{hanging} % For hanging indents in a script
|
||||
\usepackage{fancyvrb} % Use line numbers with code samples
|
||||
\usepackage{fvextra} % Break lines inside Verbatim environment:
|
||||
\usepackage{enumitem} % Control spacing in lists
|
||||
\usepackage{setspace} % Better control over line-spacing
|
||||
\usepackage{nicefrac} % Use nice fractions
|
||||
\usepackage[bottom]{footmisc} % Keep the footnotes at the bottom of the page
|
||||
\usepackage{tabto} % Use tab stops when we need to (especially in footnotes)
|
||||
\usepackage{microtype} % Make things neater. Thanks /u/-LeopardShark-
|
||||
\usepackage{tabularray} % Easy tables
|
||||
\usepackage[font=footnotesize,justification=raggedright]{caption} % Control of captions in floating environments
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\graphicspath{{images/}} % Where are our images?
|
||||
\usepackage{multicol} % Include two- or three-column sections
|
||||
\counterwithout{footnote}{chapter} % Stop resetting the footnote count after each chapter
|
||||
\NumTabs{18} % Define 18 tab stops (at 1/4" intervals) [tabto package]
|
||||
\raggedbottom % Don't force text to fill page
|
||||
\setlength{\belowcaptionskip}{4pt} % Adjust space between caption and figure
|
||||
\renewcommand*\contentsname{In This Issue…} % Change the name of the TOC
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Document Setup%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{geometry}
|
||||
\geometry{
|
||||
paperheight=8.5in,
|
||||
paperwidth=5.5in,
|
||||
heightrounded,
|
||||
margin=0.5in
|
||||
}
|
||||
|
||||
\addtolength{\topmargin}{0.4in} % Adjust and bottom margin
|
||||
\addtolength{\textheight}{-0.75in} % Adjust the bottom margin
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Page Headers%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{}
|
||||
\fancyhead[LE,RO]{\textit{the codex}}
|
||||
\fancyhead[RE,LO]{Issue \#006}
|
||||
\cfoot{Page \thepage}
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Chapter Title Spacing %%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\chapter}[display]
|
||||
{\normalfont\Large\bfseries}
|
||||
{\chaptertitlename\ \thechapter}
|
||||
{20pt}
|
||||
{\huge}
|
||||
\titlespacing*{\chapter}{0pt}{0pt}{40pt}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[defaultsans]{Cantarell} % sans-serif font
|
||||
% Make sans-serif a little smaller, since it seems too big in headlines and text
|
||||
\let\oldtextsf\textsf
|
||||
\renewcommand{\textsf}[1]{\small\oldtextsf{#1}\normalsize}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Custom Macros %%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% 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
|
||||
}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Just for Issue #006 %%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{tikz}
|
||||
\usepackage{ulem}
|
||||
|
||||
\newcommand\ksamp[4]{
|
||||
\vspace{#3mm}
|
||||
\begin{center}
|
||||
\noindent{}
|
||||
\begin{#1}
|
||||
\fbox{{#2} \textit{{#2}} \textsl{{#2}} \textsc{{#2}}}
|
||||
\end{#1}
|
||||
\end{center}
|
||||
\vspace{#4mm}
|
||||
}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Include URLS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Be sure to load this package last
|
||||
% [hidelinks option to hide big red box. Thanks /u/0b0101011001001011
|
||||
\usepackage[hidelinks]{hyperref} % Include URLs, but load this package last
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Document Information %%%%%%%%%%%%%%%%%%%%%
|
||||
\author{Kenneth John Odle}
|
||||
\title{
|
||||
{\Huge the codex} \\
|
||||
{\footnotesize Life with Linux — A Zine \\
|
||||
\bigskip
|
||||
Typeset in \LaTeX{} \\
|
||||
Issue \#006}
|
||||
}
|
||||
\date{\begin{small}\today{}\end{small}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Let's get it started %%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\begin{document}
|
||||
|
||||
%\maketitle
|
||||
|
||||
%\input{include/impressum}
|
||||
|
||||
%\tableofcontents
|
||||
|
||||
%\input{include/chap01}
|
||||
|
||||
%\input{include/chap02}
|
||||
|
||||
\input{include/chap03}
|
||||
|
||||
%\input{include/chap04}
|
||||
|
||||
%\input{include/chap05}
|
||||
|
||||
%\input{include/chap06}
|
||||
|
||||
%\input{include/coda}
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
82
006/cover-006.tex
Normal file
@ -0,0 +1,82 @@
|
||||
\documentclass[letter, landscape]{report}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{makeidx}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[]{kpfonts}
|
||||
\usepackage{float}
|
||||
\raggedbottom
|
||||
\usepackage{array}
|
||||
\usepackage{multicol}
|
||||
\usepackage[
|
||||
margin=20mm,
|
||||
marginparwidth=0mm,
|
||||
marginparsep=0mm,
|
||||
]{geometry}
|
||||
\usepackage{tcolorbox}
|
||||
%\usepackage{showframe}
|
||||
%\renewcommand*\ShowFrameColor{\color{red}}
|
||||
|
||||
|
||||
% Set column separation
|
||||
\setlength\columnsep{30mm}
|
||||
|
||||
% Where are our images?
|
||||
\graphicspath{{images/}}
|
||||
|
||||
% Put everything in monotype
|
||||
\renewcommand{\familydefault}{\ttdefault}
|
||||
|
||||
% Stretch the linespacing
|
||||
\renewcommand{\baselinestretch}{2.0}
|
||||
|
||||
% Let's adjust the page margins
|
||||
\usepackage{geometry}
|
||||
\geometry{
|
||||
margin=10mm,
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
\begin{multicols}{2}
|
||||
% Back page
|
||||
|
||||
\vspace*{40mm}
|
||||
\includegraphics[scale=0.8]{iamthirtyaf-post-2023_06_19_09_58}
|
||||
|
||||
\vfill
|
||||
\begin{tcolorbox}[hbox, colframe=black, colback=white, halign=center,boxrule=0.5pt,left=0mm,right=0mm,top=0.75mm,bottom=0mm]
|
||||
\rmfamily
|
||||
\begin{footnotesize}
|
||||
Made with \LaTeX{}
|
||||
\end{footnotesize}
|
||||
\end{tcolorbox}
|
||||
|
||||
\columnbreak
|
||||
|
||||
% Front page
|
||||
|
||||
\vspace*{40mm}
|
||||
{\fontsize{55}{70}\selectfont \textbf{the codex}}
|
||||
|
||||
{\large \textbf{Life with Linux - A Zine}}
|
||||
|
||||
{\large \textbf{Issue \#6}}
|
||||
|
||||
{\large \textbf{Typeset in \textrm{\LaTeX{}}}\\(including the cover, of course)}
|
||||
|
||||
{\footnotesize \textbf{First Printing}}
|
||||
|
||||
\vspace{10mm}
|
||||
\includegraphics[scale=0.05]{4_RETAT_04_Linus_Torvalds}
|
||||
|
||||
\vspace*{35mm} % Needed to push the "Made with LaTeX" bug to the bottom of the left column
|
||||
\end{multicols}
|
||||
|
||||
\end{center}
|
||||
|
||||
\end{document}
|
BIN
006/images/4_RETAT_04_Linus_Torvalds.jpg
Normal file
After Width: | Height: | Size: 476 KiB |
BIN
006/images/iamthirtyaf-post-2023_06_19_09_58.jpg
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
006/images/lovelace.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
006/images/roa-card-back.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
006/images/roa-card-front.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
006/images/smallcaps.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
006/images/tikz-on-paper.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
92
006/include/chap01.tex
Normal file
@ -0,0 +1,92 @@
|
||||
\chapter{Support Your Local \sout{Sheriff} \\Open-Source Software Project}
|
||||
|
||||
\section{The Trouble With Open Source}
|
||||
|
||||
As a Linux user, I'm a big fan of open-source software. All the software I use in real life (i.e., when I'm not at work) is open source. (I finally did abandon VueScan for NAPS2, as I mentioned back in issue \#4.) I don't want Microsoft or Apple in my personal life at all, if I can avoid it. I'm not worried about their stealing my identity or anything like that. What I want to avoid is their pernicious insistence on occupying a larger and larger role in my life. Alas, that takes a bit of work these days.
|
||||
|
||||
Also, open-source is a difficult path to follow these days. There are always people looking to exploit this model for their own greed. As I mention later on, it helps to examine a person's source code.
|
||||
|
||||
\subsection{GitHub}
|
||||
|
||||
For a long time GitHub had been a central hub for open-source software, both projects and people. People could share their code, fork\footnote{That is, make a copy of the software so they can make modifications or improvements.} other people's projects, make pull requests,\footnote{A pull request is a request for the current owner of the software to pull in your fork, and thus add your improvements and modifications to the main branch.} and manage issues. For a while there, it was a great place to be.
|
||||
|
||||
Then the founders sold it to Microsoft in 2018. I was content to keep using it as long as nothing changed or the changes were minimal, and they were. GitHub \textit{now} functions much like GitHub \textit{then} functioned. But at some point, Microsoft added second-factor authentication (2FA) to the site. This is something my bank asks for whenever I log in (because I don't log in all that often) so I don't have an issue with the concept. You get a text message with a five- or six-digit code, you enter that code on the website and you're good to go.
|
||||
|
||||
I do have an issue with GitHub asking for 2FA, though.
|
||||
|
||||
First, is 2FA even necessary here? Why do I need to prove who I am just to push some changes to GitHub? What is someone else going to do? Make my code better and then push it? (Again, that's what forks and pull requests are for.) I suppose they could make it \textit{worse} and then push it. I could see that being a problem if this were Subversion, where you only get a particular branch, but when you clone something in Git, you get \textit{everything}. If someone really did mess around with my online repos, I would simply delete them, recreate them online, and then push everything back to the new repos on GitHub. This is part of the point of using Git. 2FA in this case is just a solution in search of a problem.
|
||||
|
||||
Second, Microsoft included the option to just get a text message, but also indicated that this would be \textit{so} much more simple if I just installed their authenticator app on my phone.\footnote{At this point, I heard Michael Palin shouting ``Now we see the violence inherent in the system!''. See \kref{https://www.youtube.com/watch?v=ZtYU87QNjPw}{https://www.youtube.com/watch?v=ZtYU87QNjPw}.} Instead of dealing with something as pesky and intrusive as a text message, I could just use their app.
|
||||
|
||||
This is problematic in so many ways. For one thing, once I have that app on my phone, Microsoft is now embedded in my life. It goes everywhere I go. If I have to choose between a Microsoft product or some other non-Microsoft product in the future, I am more likely to go with the Microsoft app because hey, I already have their authenticator app and so that's one less app I need to download and install, one less login I need to maintain. Microsoft is my friend, after all, looking out for me and making my life easier by providing this free app that makes 2FA so easy to manage. What a wonderful Big Brother it is!
|
||||
|
||||
The worst thing about this however, is how deceitful it all is. First, Microsoft creates an artificial barrier to doing what you want to do, and then it conveniently offers you a ``free'' solution to get around that barrier.\footnote{We would be wise here to remember Doctorow's Law: In a capitalist society, if somebody gives you something for free, you are not the customer, you are the product.} And of course, that solution means that Microsoft is going everywhere you go. It's a part of your life now. You can only get rid of it with a great deal of effort. \footnote{My company is heavily invested in Microsoft technology, and we have to use 2FA to log into our VPN. Fortunately, they gave us the option of either using the app or using these little credit-card sized authenticator cards (I forget what they're called). But there have been rumors that the cards will soon go away and we'll be forced to install the Microsoft authenticator app on our phones and use that. For that reason (among others) I am looking to move on from this company. If they want me to use a digital device, then they should provide it.}
|
||||
|
||||
I don't use GitHub any more as a result. I have moved all my online repositories from there to both my own git server (located at \kref{https://git.kjodle.net/kjodle}{https://git.k\\jodle.net/kjodle}) and also to Codeberg (located at \kref{https://codeberg.org/kjodle}{https://codeberg.or\\g/kjodle}).
|
||||
|
||||
So long, GitHub.
|
||||
|
||||
\subsection{WordPress}
|
||||
|
||||
I started using WordPress when I created my second (or third?) website at \kref{https://kjodle.net/}{https://kjodle.net/}. I was pretty excited about this blogging business, which was part of the what all the people in the education sphere called ``Web 2.0''.\footnote{See issue ``The Salad Days Are Over'' in issue \#5.}
|
||||
|
||||
Back in the day, I absolutely \textit{loved} WordPress. The community was warm and welcoming and I made a lot of friends. Through developing themes, child themes, and plugins, I learned a lot about HTML, CSS, and PHP, as well as the basics of MySQL databases. Alas, that community was only warm and welcoming as long as you agreed with all the decisions The Powers That Be are making. Dissention (or disagreement or even just plain confusion) are not tolerated. You either toe the line or you protest what you view as unnecessary changes (i.e., solutions in search of a problem) and get the boot.
|
||||
|
||||
In this case, it was the ``block editor'' known as Gutenberg.\footnote{It saddens me that it was named after a person who made it possible to bring knowledge and wisdom to the masses, and now it's being used to name an utterly worthless thing that is only meant to manipulate people. More about that later.}
|
||||
|
||||
First available as a plugin, I eagerly tried it out. And it was disappointing. I use WordPress to convey \textit{content}: information and ideas in the form of words occassionaly augmented by images. But this was all about window dressing. It was about making things look pretty. (It was also about making things look all the same, alas.)
|
||||
|
||||
Which I'm fine with, in some ways—I've been interested in design since I first learned how to read and can go on \textit{at length}\footnote{Seriously, do \textbf{not} get me started on the subject of design.} about the differences between two different typefaces\footnote{\textit{Not} fonts. Seriously, also don't get me started on the differences between fonts and typefaces.}. But this is not what Gutenberg was about. There are (or there were at the time; I've since stopped paying attention to these things) a number of ``page-building'' plugins available to help you design a website with WordPress if you know nothing about HTML and CSS.
|
||||
|
||||
The ostensible purpose of the Gutenberg plugin (which was eventually included in the WordPress core\footnote{``in the WordPress core'' means that once you install the latest version of WordPress, you have this thing whether or not you want it or need it.}) was generally presented as a way to make WordPress \textit{easier} to use for non-technical users. (And one of the nice things about blogging software is that it levels the playing field for mounting a bully pulpit of your own—getting online is largely a matter of logging on, rather than building something from scratch. I used to think that this was a good thing, but the last ten years has taught me that giving idiots a bigger and better soapbox is probably \textit{not} a good idea. We should have the digital equivalent of ``you must be this tall to ride this ride'', which used to be a basic knowledge of HTML.)
|
||||
|
||||
But it didn't really take a genius (because I am \textit{not}, in any way, shape, or form, a genius) to figure out the \textit{real} puspose of Gutenberg, and that was to basically squash all of those competing companies that provided page-building plugins out of existence.
|
||||
|
||||
The entire point of WordPress was that it made getting on the web easier for people. But here is WordPress saying that ``\textit{our} way of getting on the web is not just the \textit{best} way, but the \textit{only} way.''
|
||||
|
||||
I did protest in the WordPress forums. I pointed out that this could be a great feature for \textit{some} users, and that it might useful in \textit{some} cases, but not all, and thus should remain as a plugin and not incorporated into core.
|
||||
|
||||
My comments did not fall on deaf ears. Instead, they fell on all-too-attentive ears who deleted my comments and posts. They also—without notice or warning—deleted my plugins from the WordPress plugin directory. (I sent emails asking why, and got generic responses in return that must linked to an equally generic ``your plugin may be deleted if…'' kind of page, which listed a number of reasons (which seemed eminently reasonable to me) why your plugins might be deleted from the repository, but none of which applied to me. (Which meant that there is an unwritten rule that your plugins may be deleted if you do not march in lock-step with The Powers That Be. But, of course.)
|
||||
|
||||
I've long been suspicious of the WordPress business model. It is often described as an open source project, and indeed, wordpress.\textit{org} is. In fact, it \textit{has} to be, since it was originally a fork of the \textsf{b2/cafelog} project.\footnote{Alas, the \texttt{cafelog} domain is now owned by a Singaporean gambling company. Such is life in late-stage capitalism.} Like other oligarchs, Matt Mullenweg didn't invent \textit{anything}—he just took something that previously existed, put his own label on it, and called it his own.
|
||||
|
||||
I don't have too much issue with this, but what's unique in this situation is that wordpress.\textit{com} is \textbf{not} open source. It's a for-profit company that uses the open source WordPress software to sell websites to other people. There are lots of companies out there doing much the same thing. In fact, just about every webhosting company out there offers WordPress as a one-click isntall. (A long time ago, I was one of them, in my own small way, hosting websites built on WordPress for small businesses.\footnote{This business went away because a lot of small business owners make bad business decisions—on average, most small business go out of business in less than five years. Also, a lot of them decided to move their websites to Wix and Squarespace, thinking they would get more exposure as a result. Guess what? They didn't. You could ask them, but they've all gone out of business now. I did tell them, but they chose to believe random internet strangers who gave them easy answers, instead of me, an actual person who gave them difficult answers. Such is life.})
|
||||
|
||||
The key difference between WordPress and all those other companies is that Matt Mullenweg holds the keys to \textit{both} wordpress.org and wordpress.com. Al the hundreds and thousands of people who have contributed hundreds of thousands, if not millions, of hours of their labor to wordpress.org—a non-profit open-source project—have also been forced to contribute those same hours to wordpress.com—a for-profit company. And because Mullenweg has control over both, he can direct all those volunteers to direct their work in a way that benefits not just the non-profit, open-source project, but also the for-profit company.
|
||||
|
||||
This is a tremendous conflict of interest. Part of the purpose of the Gutenberg project was to make all those page-building plugins in the WordPress plugin repository unnecessary—and to impact the companies producing them with a financial hit, since most of them include both free (but limited) and paid (and thus, fully-featured) options. If their customers no longer need those plugins because their capabilities are now part of WordPress core, those companies lose out on income, and possibly go out of business, meaning that wordpress.\textit{com} has fewer competitors.\footnote{Squashing your competitors is a feature, not a bug, of capitalism. If it weren't we wouldn't need anti-trust laws, would we?}
|
||||
|
||||
And now that WordPress (.org? .com? I'm not sure which anymore.) has attacked WPEngine for not ``supporting'' the wordpress.org project, we see that this is not really about promoting open-source projects but about yet another oligarch (or in this case, a wannabe oligarch; Mullenweg is small peanuts compared to others) trying to consolidate his\footnote{It's interesting to note that all oligarchs are male.} power, and drive all of its competitors out of their business either by hook or by crook, it seems.
|
||||
|
||||
Again, this would not be an issue if wordpress.\textit{com} were not a thing. The creators (or forkers) of open-source software should not be allowed to create for-profit entities that directly benefit from the volunteer labor of thousands of volunteers.
|
||||
|
||||
\section{How to Support Actual Open-Source Software Projects}
|
||||
|
||||
It's not always about money. (I mean, it is \textit{partly} about money for now, at least until we can build a society based upon ensuring people have what they need, and can contribute what they are able, rather than a society built upon avarice.)
|
||||
|
||||
\begin{enumerate}[itemsep=\baselineskip]
|
||||
\item Use the software, on a a regular basis. Get good at using it. Become an expert at using it, so you can help others down the road. (More about that later.)
|
||||
\item Talk up this software. Use social media to talk about how much you like it—and most importantly, why. (The \textit{why} is very important!)
|
||||
\item If you create projects with this software, make sure people know you created that project with this particular bit of software. (This is branding, but for altruistic, rather than selfish, reasons.)
|
||||
\item Write up tutorials for how to use this software. Share what you have learned. These tutorials can be for everyday use, or an edge case. Whatever you know, put it out there.
|
||||
\item Contribute to the documentation. A lot of open-source software projects have less than complete documentation. If you can help make it a bit more complete, please do.
|
||||
\item Donate money. For better or for worse (mostly for worse) we live in a capitalist society where resources are allocated not on intrinsic value (i.e., how useful is this thing?) but on extrinsic value (i.e., how many people can we convince this thing is useful, even if it isn't?). Until the revolution comes\footnote{And it will someday, I'm sure—the only question is whether it will happen in time to save this planet.} we're going to have to depend on money.\par The good news is that you don't have to donate a lot of money. Capitalism is based on the Pareto Principle—80\% or more of the outputs are based on 20\% or less of the inputs. Alternatives to capitalism will advocate the Parity Principle, in which you give what you can, you take what you need, and you need what you take. If only 10\% of the users of any open-source project donated on an annual basis what they earn in an hour or even a half hour (after income taxes), then those software projects would probably experience anywhere between a 100 to a 1,000 times increase in their funding.
|
||||
\item Contribute to the core, if you can. Most of us can't, and that's okay.
|
||||
\item You can always participate in the support forums, help other people out, and make suggestions for improvements.
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{How to Support This Zine}
|
||||
|
||||
In a lot of ways, this zine is an open source project. It's published under a Creative Commons Attribution Non-Commerical Sharalike 4.0 license (\ccbyncnd)\footnote{See \kref{https://creativecommons.org/licenses/by-nc-sa/4.0/}{https://creativecommons.org/licenses/by-nc-sa/4.0/} for more information.} so there's no reason you couldn't just take this code and do your own thing with it. The only reason somebody hasn't already is that there's just not a huge market for zines about Linux.
|
||||
|
||||
You're already doing the best thing you can do to support this zine: you're reading it. (I'm grateful that you are and I hope you're enjoying it.)
|
||||
|
||||
But everything that I wrote up above also applies here: Please talk about this zine on whatever social media platforms you participate on and share the Etsy link. And yep, please remember to talk about \textit{why} you like this zine. (Also tell me what you'd like to see more of. Like a lot of creative people, I vacillate between having too many things to talk about and not having enough things to talk about.) If you have friends you think would like this zine, please send them over to take a look, or buy them a copy. If you want to buy some copies in bulk to give away, please contact me so we can work out a pretty hefty discount.
|
||||
|
||||
If you want to donate just to keep this thing going, you can always do so via PayPal at \kref{https://paypal.me/kjodle}{https://paypal.me/kjodle}.\footnote{You are under absolutely no obligation to do so, and my imposter syndrome actually means I would be embarassed if somebody did so. Relevant link is here: \kref{https://www.youtube.com/watch?v=rl_NpdAy3WY}{https://www.youtube.com/watch?v=rl\_NpdAy3WY}.}
|
||||
|
||||
But really, please just read and enjoy this zine. And remember to tell your friends. Thanks!
|
||||
|
||||
|
||||
\paragraph{About the title:} \textit{Support Your Local Sheriff} is a 1969 western/comedy starring James Garner. It was initially a box office bomb, and the movie studio wanted to pull it from theaters (because movie studios tend to be spineless, risk-averse creatures). Garner had confidence in it though, and challenged the studio to match a \$10,000 stake to keep it in the theaters. The studio accepted his challenge, word of mouth caught on, and the film became a minor classic. Kudos to Garner for putting his money where his mouth was. It's not the best film in the world, but it's worth a watch.
|
||||
|
372
006/include/chap02.tex
Normal file
@ -0,0 +1,372 @@
|
||||
\chapter{Easy Flash Cards in \LaTeX{} }\label{flashcards}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
I was a biology major in college (the first time around, that is) and so I had to memorize \textit{lots} of information.
|
||||
|
||||
\kdivb{Is it worth it?}{0}
|
||||
A brief moment, if you will, to discuss the value, if any, of memorizing things.
|
||||
|
||||
In my high school chemistry class our teacher was explaining the periodic table—something we'd first been introduced to year before, but this time around he was explaining \textit{why} it's actually periodic and not just a random assortment of elements. It seemed he knew most of the periodic table by heart, so I asked him if he had memorized the entire thing.
|
||||
|
||||
``Not deliberately,'' he said. ``But if you use it all the time, you get to the point where you've pretty much memorized most of it.''
|
||||
|
||||
Fair enough. There's really no point in memorizing anything unless you are going to use it on a regular basis, and if you are going to use it on a regular basis, you'll have it memorized soon enough. So what's the point of deliberately sitting down and memorizing things?
|
||||
|
||||
There isn't, really, outside of a few specialized contexts, like memorizing your lines if you're in a play or memorizing vocabulary if you're learning another language. (Although the best way to learn another langauge is to just use that language as much as possible. The problem is that doing that just isn't feasible most of the time, unless you're willing to just D.B. Cooper yourself out of an airplane into a small village somewhere in southwest France.) Even so, there's always the example of the Shakespearean actor who can pull out just the right pithy Shakespearean line for any given occasion. But even here, the prinicples is still the same: the actor can just pull these lines form memory not because they sat down and memorized them, but because they uttered them every night for weeks or months on end in the context of the entire play, not in isolation.
|
||||
|
||||
So why do we expect students to memorize stuff? Because memorization is the easiest form of learning to test, and thus, it's the easiest way to prove that we have taught them something. It's easy to see if students have memorized all the presidents in order, but it's quite another thing to see if those same students can explain why the vast majority of those presidents are some variation of the average mediocre white guy born into generational wealth. To paraphrase Paulo Freire, all education functions to either support the status quo or to overturn it,\footnote{His actual quote was ``There is no such thing as neutral education. Education either functions as an instrument to bring about conformity or freedom.'' He also said ``When education is not liberating, the dream of the oppressed is to become the oppressor.'' Those two quote say a \textit{lot} about our modern system of education.} and since the people who hire and pay teachers have a great desire to maintain the status quo (where we just don't question our systems regardless of the inequities built into them and the resulting inequalities we see in our society), there is a lot of pressure to just get students to memorize things and to never question the status quo.
|
||||
\kdive{0}
|
||||
|
||||
One of the best ways I've found to memorize information is to use flash cards. As I see it, flash cards have three main advantages. First, you have to write this information onto the flash cards, so you have yet another opportunity to review the information. (I tend to learn better by reading and writing than by listening.) Second, because you have to fit the information on an index card, you have to edit the information, which is yet another opportunity to process the information. Third, because each bit of information is on a separate card, you can easily sort these cards as you study them, gradually setting aside the cards you know, so that you can focus on the material you still need to learn.
|
||||
|
||||
Unfortunately, flash cards are a lot of work to make. (You can buy commercial versions, but they are expensive and may not suit your exact purposes.) Because you have to make them by hand, you're essentially a medieval scribe, copying a text very laboriously by hand. It's not a fun process for most people.\footnote{I will admit to being an exception here. I love writing things out longhand.}
|
||||
|
||||
Fortunately, \LaTeX{} has a number of packages that make the production of flash cards a fairly simple process. The main issue with creating flash cards in a word processing program is that you have to remember that the back side of the pages have to be written up in the reverse order of the front sides. This is what \LaTeX{} makes easy, because it can automatically set up the cards for two-sided printing. That is, if the front of your document looks like this:
|
||||
|
||||
\label{cards}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.6]
|
||||
\draw (0,0) rectangle (11,4);
|
||||
\draw (1,1) rectangle (5,3);
|
||||
\node at (3,2) {{\Huge A}};
|
||||
\draw (6,1) rectangle (10,3);
|
||||
\node at (8,2) {{\Huge B}};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\noindent{}then the back of your document needs to look like this for the cards to print properly:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.6]
|
||||
\draw (0,0) rectangle (11,4);
|
||||
\draw (1,1) rectangle (5,3);
|
||||
\node at (3,2) {{\Huge B}};
|
||||
\draw (6,1) rectangle (10,3);
|
||||
\node at (8,2) {{\Huge A}};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
This way, the back of card A and front of card A will appear on opposite sides of the same card.\footnote{This is an incredibly difficult concept for some people to understand. (If you don't beleive me, just ask anyone who's ever worked in a copy shop.) Some people just have a lot of trouble re-orienting three-dimensional ojbects in their mind. I have a funny feeling that these are the people who just never got to build anything when they were children, or who never got to play with building toys like Lego or Tinker Toys.}
|
||||
|
||||
\subsection{Online Examples}
|
||||
|
||||
I had a lot of fun playing around with these packages, and have created a number of example documents for you to download and play around with. I've posted these to both my personal git repository and Codeberg. You can see them here:
|
||||
|
||||
\label{online-examples}
|
||||
\begin{itemize}
|
||||
\item \textbf{Personal:} \kref{https://git.kjodle.net/kjodle/flashcard-examples}{https://git.kjodle.net/kjodle/flashcard-examples}
|
||||
\item \textbf{Codeberg:} \kref{https://codeberg.org/kjodle/flashcard-examples}{https://codeberg.org/kjodle/flashcard-examples}
|
||||
\end{itemize}
|
||||
|
||||
\section{The \textsf{FlashCards} Package}
|
||||
|
||||
The \textsf{FlashCards}\footnote{Available at \kref{https://www.ctan.org/pkg/flashcards}{https://www.ctan.org/pkg/flashcards}.} package (and note that it is written in CamelCase) allows you to easily create flashcards and then print them on standard sheet-fed business-card stock which is equivalent to Avery 5371.\footnote{This is for North American business-card stock, which is 8.5 $\times$ 11 inches.} (Avery products are pretty expensive, but I can usually find a less expensive off-brand version elsewhere.)
|
||||
|
||||
\textsf{FlashCards} offers you a limited set of options, which is just fine, since it's more about the information on these cards, rather than how they look. Flash cards don't need to be fancy, but you can do a certain amount of customization with this package.
|
||||
|
||||
\subsection{Using the \textsf{FlashCards} Package}
|
||||
|
||||
The \textsf{FlashCards} package defines a new document class (called, natch, ``\texttt{flashcards}'') with one required option and a few non-required options. The required option is the type of Avery cardstock you will be printing your cards on. Out of the box, it only supports business cards (Avery 5371) and index cards (Avery 5388) but it is easy enough to configure your own, which we'll see in a bit.
|
||||
|
||||
The non-required options include \texttt{fronts} and \texttt{backs} for typesetting only the fronts or backs of your cards, \texttt{grid} to draw lines where the perforations are (which is handy if you are printing on non-perforated card stock, because you can just cut them apart on the lines), and \texttt{frame} to draw a frame around the content of each card.
|
||||
|
||||
\textsf{FlashCards} defines a new environment (\texttt{flashcard}) with a single required argument, which is the text on the front of the card. Anything contained within the environment (which can include both math and \texttt{tikz} drawings) goes on the back of the card, like so:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{FlashCards example}]
|
||||
\begin{flashcard}[]{This is the front of the card}
|
||||
This is the back of the card
|
||||
\end{flashcard}
|
||||
\end{Verbatim}
|
||||
|
||||
The argument contained in square brackets (which is absent in our example) allows you to add a header to the card, which will only appear if you used the \verb|\cardfrontstyle{headings}| command. This allows you to describe some cards in your flash card deck according to what they are (definition, formula, etc.). If you then use the \verb|\cardfrontfoot{<text>}| you can define a footer that will appear on \textit{every} card in your document (e.g. Biology 101).
|
||||
|
||||
You do have some options for modifying how the headers and footers are typeset, which is described clearly in the package documentation. You can also look at the sample files I've posted online for other examples.
|
||||
|
||||
\subsection{Having Fun with \textsf{FlashCards}}
|
||||
|
||||
When I originally up my own Git repo,\footnote{See chapter \ref{codeberg}.} one of the first things I did was add a list of the Ferengi Rules of Acquisition. When I started playing around with flash cards in \LaTeX{} I didn't really have anything I was studying at the time, so I decided to use the Rules as an example. However, there were a couple of issues that I wanted to see if the \textsf{FlashCards} package could deal with.
|
||||
|
||||
The first is that I wanted the front side of the card to be in a unique font. That is, I wanted it to be something that didn't scream ``LaTeX'' when people saw it. The second is that the rules are numbered, and I have no desire to add all those numbers by hand, so I wanted to see how easy it was to use a counter with this package.
|
||||
|
||||
Tackling a new font was relatively easy. I looked around and liked the ``Roman Rustic'' font,\footnote{Which you can see at \kref{https://tug.org/FontCatalogue/romanrustic/}{https://tug.org/FontCatalogue/romanrustic/}.} so I added these lines to my preamble:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ]
|
||||
% Font for front side of cards
|
||||
% Use \rustfamily to apply font
|
||||
\usepackage{rustic}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
\cardfrontstyle[\large\itshape\bfseries\rustfamily]{headings}
|
||||
\cardbackstyle{plain} % plain option centers text
|
||||
%\cardfrontfoot{Rules of Acquisition}
|
||||
\end{Verbatim}
|
||||
|
||||
Lines 3 and 4 add our font\footnote{Notice that I also added comments on lines 1 and 2 regarding what this was and how to use it. I am not going to remember this next week, much less a year from now. Comments are free. Use them.} and line 5 applies it to the card front. That line also says that we are going to use the \texttt{headings} option, although I decided not to when setting up the actual cards.
|
||||
|
||||
I experimented with various fonts, and some of them contained a hash character (\#) and some of them did not. So I added a macro that would allow me to easily change that from a symbol to words or vice versa, based on the font.
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ]
|
||||
% A new command in case we want to change what we use to indicate 'number'
|
||||
% May need to change this based on the font
|
||||
\newcommand{\ksep}{\\ \vspace{5mm} No.}
|
||||
\end{Verbatim}
|
||||
|
||||
(Is this a hack? No, not really. It's more of a kludge than anything else. Sometimes the thing you need is just a good hard slash through the Gordian knot of your current situation.\footnote{Also, again, comments.})
|
||||
|
||||
I then needed to add my counter, which I did with
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ]
|
||||
\newcounter{rule}
|
||||
\setcounter{rule}{1}
|
||||
\end{Verbatim}
|
||||
|
||||
I then started adding my cards, making sure to increment the counter after each card:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Rules of Acquisition FlashCards exampleS}]
|
||||
\begin{flashcard}[]{Rule of Acquisition \ksep \arabic{rule}}
|
||||
Once you have their money, you never give it back.
|
||||
\end{flashcard}
|
||||
\addtocounter{rule}{1}
|
||||
\end{Verbatim}
|
||||
|
||||
Compiling that document gave me these beautiful flash cards:
|
||||
|
||||
\begin{center}
|
||||
\frame{\includegraphics[scale=0.25]{roa-card-front}} \hspace{10mm} \frame{\includegraphics[scale=0.25]{roa-card-back}}
|
||||
\end{center}
|
||||
|
||||
You can see the full file in either of the repos I mentioned earlier.
|
||||
|
||||
\subsection{Modifying the \textsf{FlashCards} Configuration Files}
|
||||
|
||||
There's just one catch with the FlashCards package: it only includes support for business cards and $3\times5$ index cards.\footnote{In letter sized paper. I'm sorry that the rest of the world quite sensibly uses metric-sized paper and the United States chooses not to. It seems that the only time we're good with the metric system is when we're buying drugs or guns.} The documentation says that variants are easy to generate, but it doesn't describe \textit{how} to do it. But the author says there is a way, so there has to be a way. And since no instructions are included, it should be fairly simple, right? As it turned out, it was, pretty much. \footnote{Again, this is an example where a package author assumes that you have the same amount of knowledge and information that they do. As they have no idea who you are and where you are in your journey, this is a fair starting point. Figuring this out is up to you. I figured it out, and I'm fairly confident that 1) you can too, and 2) I can figure out similar things in the future.}
|
||||
|
||||
The first step is to find those configuration files. We have a couple of options here. One is to look in the \texttt{.log} file of any project we've used the \texttt{flashcards} package. Looking at my ``Rules of Acquisition'' I saw this on line 9:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Location of FlashCards class file}]
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/flashcards/flashca rds.cls
|
||||
\end{Verbatim}
|
||||
|
||||
and this on lines 41-43:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Location of FlashCards configuration file}]
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/flashcards/avery537 1.cfg
|
||||
File: avery5371.cfg
|
||||
)
|
||||
\end{Verbatim}
|
||||
|
||||
If we're on the command line, we could also use the \texttt{kpsewhich} command to look for the \texttt{<package\_name>.cls} file, like this:
|
||||
|
||||
\input{include/kpsewhich}
|
||||
|
||||
which gives us this output:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Output of kpsewhich Command}]
|
||||
ls
|
||||
/usr/share/texlive/texmf-dist/tex/latex/flashcards/flashcar ds.cls
|
||||
\end{Verbatim}
|
||||
|
||||
Since I don't want to edit files in my \texttt{/usr} directory (which would require \texttt{sudo} and is not something that can be backed up easily), the solution is to use our own \texttt{texmf} directory, where we can install our own packages and make modifications to them easily.\footnote{See \S 7.1.2 ``Method \#2'' in issue \#3 for more information.}
|
||||
|
||||
I already had that folder, so I duplicated the file path (\texttt{/tex/latex/flas\\hcards}) there, copied over the \texttt{avery5371.cfg} file, and renamed it to \texttt{avery5389.cfg}, which is the format for a 2-up $4\times6$ index card, and opened it up for editing in my text editor.
|
||||
|
||||
I started with a quick search and replace, swapping out ``5389'' for ``5371''. Then I had to change the relevant lines in the config file to fit the $4\times6$ card format, So I changed all of these lines:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Configuration for Avery 5371 Stock}]
|
||||
\newcommand{\cardpapermode}{portrait}
|
||||
\newcommand{\cardpaper}{letterpaper}
|
||||
\newcommand{\cardrows}{5}
|
||||
\newcommand{\cardcolumns}{2}
|
||||
\setlength{\cardheight}{2.0in}
|
||||
\setlength{\cardwidth}{3.5in}
|
||||
\setlength{\topoffset}{0.50in}
|
||||
\setlength{\oddoffset}{0.75in}
|
||||
\setlength{\evenoffset}{0.75in}
|
||||
\end{Verbatim}
|
||||
|
||||
to have these values:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Configuration for Avery 5389 Stock}]
|
||||
\newcommand{\cardpapermode}{portrait}
|
||||
\newcommand{\cardpaper}{letterpaper}
|
||||
\newcommand{\cardrows}{2}
|
||||
\newcommand{\cardcolumns}{1}
|
||||
\setlength{\cardheight}{4.0in}
|
||||
\setlength{\cardwidth}{6.0in}
|
||||
\setlength{\topoffset}{1.5in}
|
||||
\setlength{\oddoffset}{1.25in}
|
||||
\setlength{\evenoffset}{1.25in}
|
||||
\end{Verbatim}
|
||||
|
||||
I then saved the file and closed it.
|
||||
|
||||
The only thing left to do was to inform \TeX{} about this new file by running
|
||||
|
||||
\input{include/mktexlsr}
|
||||
|
||||
I then changed the first line of my ``Rules of Acquistion'' flashcards project to
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\documentclass[avery5389,grid]{flashcards}
|
||||
\end{Verbatim}
|
||||
|
||||
I re-compiled the project, and indeed, I now had the Ferengi Rules of Acquistion on $4\times6$ index cards! Easy-peasy!
|
||||
|
||||
\section{The \textsf{flacards} Package}
|
||||
|
||||
Next is the \textsf{flacards}\footnote{Available at \kref{https://www.ctan.org/pkg/flacards}{https://www.ctan.org/pkg/flacards}.} package, which is not quite as straighforward as \textsf{FlashCards} because you have to do more work up front to set up the page layout. But this package does offer more options for laying out each card, so if you need a more complex card layout, the trade-off is worth it.
|
||||
|
||||
This package also creates a new document class (``\texttt{flacards}'') which is based on the \texttt{article} class. To create a flash card, you use the \texttt{card} environment, which has two required options, one for the front of the card, and one for the back. (The class also has two options, \texttt{frontgrid} and \texttt{backgrid} for drawing gridlines around your cards.)
|
||||
|
||||
You will probably need to change the default pagelayout options, as the default margins are one centimeter on all sides, and the default card layout is eight rows of three cards each. Because this package already loads the \textsf{geometry} package, you can just add the new margin declarations to your \texttt{documentclass} declaration. For example, to use the Avery 5371 business cards I have on hand, I would use this in my preamble:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{geometry options for Avery5371 cards}]
|
||||
\geometry{
|
||||
top=0.5in,
|
||||
bottom=0.5in,
|
||||
inner=0.75in,
|
||||
outer=0.75in,
|
||||
}
|
||||
\end{Verbatim}
|
||||
|
||||
\noindent{}and then add this just after \verb|\begin{document}|:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\pagesetup{2}{5}
|
||||
\end{Verbatim}
|
||||
|
||||
The \textsf{flacards} packages include options for left, center, and right headers and footers, which allows you to add a great deal of information to your flash cards. The documentation includes a chart and a diagram that shows the commands for modifying these. For example, if I wanted to add ``Botany'' the bottom center of the front of my flash cards, I would use this command:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\renewcommand{\fcfoot}{Botany}
|
||||
\end{Verbatim}
|
||||
|
||||
I created a set of botany flashcards which you can see in either of the repos I mentioned on page \pageref{online-examples}, where I use this code to set up my cards:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Card options for Botany flash cards}]
|
||||
\renewcommand{\frfoot}{}
|
||||
\renewcommand{\fcfoot}{\vspace{4mm}\scshape{Botany}}
|
||||
\renewcommand{\cardtextstylef}{\rmfamily\Large}
|
||||
\renewcommand{\cardtextstyleb}{\raggedright\rmfamily\normal size}
|
||||
\fboxsep=10pt
|
||||
\end{Verbatim}
|
||||
|
||||
Line 1 removes the counter that normally exists in the front right footer. Line 2 places the word \textsc{Botany} in the front center footer. Line 3 changes the font on the front of the cards to a Roman font (instead of italice) in \texttt{Large} size. Line 4 left-aligns the font on the back side, and also changes it to Roman in \texttt{normal} size. Line 5 adds a 10 point speapration between the edges of the cards and their content.
|
||||
|
||||
The flashcards themselves are really simple to make. Here are the first four:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Botany flash cards using the flacards package}]
|
||||
\card{Seed}{A mature ovule.}
|
||||
\card{Fruit}{A mature carpel.}
|
||||
\card{Flower}{The reproductive structure of the angiosperms.}
|
||||
\card{Pistil}{The female organ of the flower.}
|
||||
\card{Stamen}{A modified leaf which produces pollen grains.}
|
||||
\end{Verbatim}
|
||||
|
||||
Note that you can also renew any of these commands whenever you want. If you look at that example, you'll see that I threw in a geometry card at the very end:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{flacards example with math mode and tikz}]
|
||||
\renewcommand{\fcfoot}{\vspace{4mm}\scshape{Geometry}}
|
||||
\renewcommand{\cardtextstyleb}{\centering\rmfamily\normalsize}
|
||||
|
||||
\card{The Pythagorean Theorem}{
|
||||
$a^2 + b^2 = c^2$ \\
|
||||
\vspace{2mm}
|
||||
\begin{tikzpicture}[scale=0.4]
|
||||
\coordinate (A) at (-1.5cm,-1.cm);
|
||||
\coordinate (C) at (1.5cm,-1.0cm);
|
||||
\coordinate (B) at (1.5cm,1.0cm);
|
||||
\draw (A) -- node[above] {$c$} (B) -- node[right] {$b$} (C) -- node[below] {$b$} (A);
|
||||
\draw (1.25cm,-1.0cm) rectangle (1.5cm,-0.75cm);
|
||||
\end{tikzpicture}
|
||||
}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
The \textsf{flacards} package also has a lot of other options for designing your cards, including color options. I could go into them here, since the package documentation doesn't really get into them very much. However, it does include this sentence, which I absolutely love:
|
||||
|
||||
\begin{quote}
|
||||
\textit{You might want to look into the source code for deeper \\understanding.}
|
||||
\end{quote}
|
||||
|
||||
In this case, I highly recommend it.\footnote{I actually need this on a t-shirt!} The source code includes a number of example files that you can examine and compile yourself to get an excellent understanding of how this package works. And of course, looking into the source code may cause a lot of confusion initially, but it is worth digging through that confusion to achieve a much deeper level of understanding than you ever could by just guessing at options. (This concept is so true of all things, not just software projects.)
|
||||
|
||||
|
||||
\section{The \textsf{elzcards} Package}
|
||||
|
||||
If you are creating flash cards that you are going to send to a commercial printer, you might want to look into the \textsf{elzcards}\footnote{Available at \kref{https://www.ctan.org/pkg/elzcards}{https://www.ctan.org/pkg/elzcards}.} package because it offers a \textit{lot} of options for setting up crop marks that the printer will use to cut the cards apart.
|
||||
|
||||
What's nice about this package is that it can also produce business cards, either single-sided or double-sided. You define the card contents once and the package does the rest. (You will need to add the \textsf{geometry} package to set up your page and margin dimensions.)
|
||||
|
||||
A unique feature of this package is that you define your cards first (using either an \texttt{IndexCard} or \texttt{FlashCard} environment) and then output them with the \verb|\MakeIC| or \verb|MakeFC| command. This allows you to output the cards in a different order than you entered them. I'm not entirely sure why this would be handy, but I feel that it will come in very useful for some people.
|
||||
|
||||
The biggest disappointment with this package, however, is that there is no easy way to format the front and back of the cards. In fact, the package documentation includes a macro that essentially centers the text both vertically and horizontally. This seems to be a klunky approach, since you need to invoke that macro every time you create a new flash card, which is tedious.
|
||||
|
||||
Since the only way to do this is to use a macro, I had to create my own. To add some padding for the backs of the cards (where I don't necessarily want to center the text), I used the \textsf{adjustbox} package. My macros for the front and back look like this:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Macros for formatting cards in elzcards package}]
|
||||
\newcommand{\kfront}[1]{
|
||||
\vspace*{\stretch{1}}
|
||||
\begin{center}
|
||||
{{\LARGE #1}}
|
||||
\end{center}
|
||||
\vspace*{\stretch{1}}
|
||||
}
|
||||
\newcommand{\kback}[1]{
|
||||
\vspace*{\stretch{1}}
|
||||
\begin{adjustbox}{padding = 10mm 10mm 0mm 0mm}
|
||||
\parbox{0.8\linewidth}{\raggedright #1}
|
||||
\end{adjustbox}
|
||||
\vspace*{\stretch{1}}
|
||||
}
|
||||
\end{Verbatim}
|
||||
|
||||
\noindent{}which makes an actual card look like this:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Samples flashcards with macros}]
|
||||
\FlashCard
|
||||
{\kfront{Apex}}
|
||||
[\kback{The single point on a code or pyramid that is furthest from the base. For a pyramid, the apex is where all the triangular faces meet.}]
|
||||
|
||||
\FlashCard
|
||||
{\kfront{Arc}}
|
||||
[\kback{The part of circle lying between two points on the circle.}]
|
||||
\end{Verbatim}
|
||||
|
||||
Where this package really shines, however, is in its ability to make business cards. In this case, no macros are necessary, since you are only defining the business card content once. I've included samples of both flash cards and business cards online.
|
||||
|
||||
\section{The \textsf{eCards} Package}
|
||||
|
||||
This is a package for creating \textit{electronic} flash cards, such as the type you might project to a screen in front of an entire class. This one looks like a lot of fun, but I ran out of time (and space). If I get the chance, I'll write this up in a future issue.
|
||||
|
||||
\section{Summary}
|
||||
|
||||
Which of these packages is best? That depends upon what you need to accomplish and how much time you have to invest. To help you evaluate which package to use, I've summarized their characteristics as best I can in this table.
|
||||
|
||||
\begin{longtblr}
|
||||
[
|
||||
caption = {A Comparison of the \textsf{FlashCards}, \textsf{flacards}, and \textsf{ezlcards} Packages},
|
||||
label = {tb: flashcards-summary},
|
||||
% theme = {custom1}
|
||||
]{
|
||||
width = {\textwidth},
|
||||
colspec = { X[1,0.7] X[1,c] X[1,c] X[1,c] },
|
||||
hlines = {0.5pt,solid},
|
||||
vline{1,5} = {0.5pt,solid},
|
||||
rows = {5mm, m, rowsep=1.5pt},
|
||||
rowhead = 1,
|
||||
cells = {font=\sffamily\fontsize{8pt}{10pt}\selectfont},
|
||||
row{1} = {font=\bfseries},
|
||||
}
|
||||
Parameter & \textsf{FlashCards} & \textsf{flacards} & \textsf{elzcards} \\
|
||||
{Document \\class} & \texttt{flashcards} & \texttt{flacards} & \texttt{article} \\
|
||||
{\texttt{geometry} \\package} & Pre-loaded & Pre-loaded & Need to load \\
|
||||
{Card \\environment} & \texttt{flashcard} & \texttt{card} & {\texttt{FlashCard} \textit{or} \\ \texttt{IndexCard} \textit{or} \\ \texttt{BusinessCard}} \\
|
||||
Card size & Only two options available, but others can be configured & Need to be defined explicitly & Defaults to either business card or index card but can be overridden \\
|
||||
Grid lines & {Can print on \\front or back} & {Can print on \\front or back} & {Can print on \\front only} \\
|
||||
Frame & Yes & & Yes, with either a macro or defining in each card \\
|
||||
Counter included? & No & Yes & Yes \\
|
||||
Define card margin & Yes & & No \\
|
||||
Card header and footer options & Limited & Extensive & Available only through a macro \\
|
||||
\end{longtblr}
|
146
006/include/chap03.tex
Normal file
@ -0,0 +1,146 @@
|
||||
\chapter{Styling Text in \LaTeX{}}
|
||||
|
||||
One of the most confusing things in \LaTeX{} for some people is how to format text, especially when you are creating some custom macros that change the appearance of text.
|
||||
|
||||
There are two key concepts to keep in mind here. The first concept to keep in mind here is that \LaTeX{} has both \textit{commands} and \textit{switch commands} to style text. The second is that ``text'' is not just a collection of characters, but a collection of characters with \textit{distinct groups of characteristics}.
|
||||
|
||||
\section{Text Characteristics}
|
||||
|
||||
The history of making marks on paper (or clay, or cave walls, or skin) goes a long way back in human history, so the subject of type and how to talk about it is complex, but interesting. Needless to say, we don't have the space to discuss all of it here, so we'll just look at those things that \LaTeX{} gives us control over. Those characteristics are:
|
||||
|
||||
\begin{itemize}[noitemsep]
|
||||
\item Family
|
||||
\item Shape
|
||||
\item Series
|
||||
\item Size
|
||||
\end{itemize}
|
||||
|
||||
Let's look at each of these in turn. But first, let's clear up a bit of confusion about the terms \textit{font} and \textit{typeface}.
|
||||
|
||||
\subsection{Typefaces vs. Fonts}
|
||||
|
||||
For better or for worse, the rise of the Apple Macintosh led to a blurring between the meaning of the words ``typeface'' and ``font''. What most people mean when they say ``font'' and what your GUI-based word-processing program is referring to in its ``Font'' menu is actually a \textit{typeface}, which means a collection of characters styled in a particular way. ``Times New Roman'' is a typeface, ``Verdana'' and ``Arial'' are others.
|
||||
|
||||
A \textit{font}, on the other hand, actually refers to a collection of characteristics, including shape, series, and size. ``Times New Roman'' is a typeface; ``Times New Roman bold italic 10 point'' is a font. This distinction goes back to the days when typefaces were physical objects made of lead.
|
||||
|
||||
In actuality, your ``Font'' menu should really be called the ``Typeface'' menu, because you are selecting a typeface, and not a font.\footnote{I am not entirely sure why this menu ended up being called ``Font'' instead of ``Typeface''. It might have to do with saving screen space, or it might have to do with somebody not understanding the difference between the two. Or, knowing the history of the Apple corporation, it might have to do with hubris. I hope to find out some day.} You might use the same typeface throughout a family (and you really should use no more than two or three in a document, unless your intention is to write a ransom note), but if you use bold or italic, or different sizes, those are in reality, different fonts.
|
||||
|
||||
\subsection{Family}
|
||||
|
||||
Typefaces fall into a number of different categories, including serif, sans-serif, proportional, and monospace. In \LaTeX{} we refer to those as a ``family''. \LaTeX{} recognizes three families: roman (i.e., serif), sans-serif, and monospace.
|
||||
|
||||
A serif font has small decorative lines attached to the ends of letters, whereas a sans-serif font does not. This zine is typeset using the \textsf{kpfonts} package, which uses serif fonts that were originally derived from the URW Palladio font\footnote{See \kref{https://fontesk.com/palladio-typeface/}{https://fontesk.com/palladio-typeface/} and \kref{https://ctan.org/tex-archive/fonts/kpfonts}{https://ctan.org/tex-archiv\\e/fonts/kpfonts}.} so all the letters you see here have serifs. When I need a sans-serif font,\footnote{I've made up a change in this issue to start using a sans-serif font for \LaTeX{} package names. If I had known this little project was going to go to six issues, I would have created an in-house style sheet first.} I use the Cantarell font.\footnote{See \kref{https://ctan.org/tex-archive/fonts/cantarell}{https://ctan.org/tex-archive/fonts/cantarell}.} \textsf{This sentence is typeset in a sans-serif font.}
|
||||
|
||||
Both the Palladio and Cantarell fonts used in this zine are proportional fonts. In a proportional font, each letter takes up a different width. Some letters, such as \textsf{m} and \textsf{w}, are fairly wide, whereas other, such as \textsf{i} and \textsf{l}, are fairly narrow, and most other letters are somewhere in between.
|
||||
|
||||
In a monospace font (which is also called a fixed width font), each letter takes up the same exact width. The \textsf{kpfonts} package I use for the text in this zine is a proportional font, but the code samples are in a monospace font. \texttt{This sentence is typeset in a monospace font.} Typewriters typically use a monospace font, but as computers became commonly available, a few were produced that could actually type in a proportional font.\footnote{Typewriters are a particular love of mine, and I can go on about them at considerable length. Don't get me started.}
|
||||
|
||||
You can see this in action if we compare five of the same characters with different widths, first in a proportional font, and then in a monospace font:
|
||||
|
||||
\begin{itemize}[noitemsep]
|
||||
\item[] \texttt{iiiii} iiiii
|
||||
\item[] \texttt{nnnnn} nnnnn
|
||||
\item[] \texttt{WWWWW} WWWWW
|
||||
\end{itemize}
|
||||
|
||||
You can easily see that the first set of letters in a monospace font all takes up the same amount of space, but the second set in a proportional font takes up widely different amounts of space.\footnote{Again, this is a remarkably difficult concept for some people to understand. Again, see most of chapter \ref{flashcards}.}
|
||||
|
||||
Interestingly, both proportional and monospace fonts can be either serif or sans-serif. The first three issues of this zine used a sans-serif monospace font for the code samples. I've never particularly cared for most sans-serif fonts, but I learned I could pass the \texttt{[nott]} option to the \textsf{kpfonts} package, which prevents it from modifying the default fixed width fonts.
|
||||
|
||||
\subsection{Shape}
|
||||
|
||||
The \textit{shape} of a font refers to how the individual characters are formed.\footnote{This is a terrible definition, but it is what it is. I didn't make the rules here.} Shape can be upright (i.e., ``normal'' or ``roman''), italic, slanted, and/or small caps.\footnote{For the illustrations in this section, I am hugely grateful to the StackExhange user \kref{https://tex.stackexchange.com/users/4918/tobi}{Tobi}, who provided examples at \kref{https://tex.stackexchange.com/a/139592/245702}{https://tex.stackexchange.com/a/139592/245702}.}
|
||||
|
||||
Both italic and slanted shapes lean to the right. The main difference between the two occurs when you apply this to a serif font. A slanted shape is just that: it's as if you had written out the text on a flexible substrate and then just stretched it a bit so it leans to the right. An italic shape, however, actually has a completely different, somewhat more curvy shape to each character. \textsl{This is slanted text}, and \textit{this is italic text}. Italic or slanted shapes are often used to emphasize a word or group of words (i.e., ``This is \textit{very} good cake.'') but it also used by convention to indicate the titles of books and movies (i.e., \textit{The Grapes of Wrath}, \textit{Star Wars}).
|
||||
|
||||
Small caps is shorthand for ``small capitals'' and refers to text in which all the lower-case characters are substituted by their upper-case equivalents. \textsc{This text is in small caps.} Small caps is often used to convey prestige and stability.
|
||||
|
||||
I should also point out that small caps are not the same as using capital letters, and typesetting the first letter of a word in a larger size. (Notice that I said ``upper-case \textit{equivalents}'' above.) Small caps are a separate set of glyphs in which all the characters have the same stroke thickness.
|
||||
|
||||
\begin{center}
|
||||
\frame{\includegraphics[scale=0.3]{smallcaps}}
|
||||
\end{center}
|
||||
|
||||
This is what all these different variations look like in a serif typeface:
|
||||
|
||||
\ksamp{large}{Normal abc}{-3}{-2}
|
||||
|
||||
\noindent{}You can see the different between the italic and slanted versions in this sample.
|
||||
|
||||
And here is what they look like in a sans-serif typeface:
|
||||
|
||||
\textsf{\ksamp{large}{Normal abc}{-5}{-1}}
|
||||
|
||||
It's interesting to note that in the Cantarell typeface, the italic and the slanted shapes are pretty much identical, and it also doesn't include a small caps version at all. Some font packages include these, and some do not. As always, you should read the font documentation to see what is included.
|
||||
|
||||
\subsection{Series}
|
||||
|
||||
Series is usually known as \textit{weight}, or how bold a particular bit of text is. In theory, you could have a number of different series or weights (and CSS does allow for this) but in reality, most typefaces are available either as \textit{normal} (i.e., not bold) or \textit{bold}. (A few also have a ``light'' option, but this is rare in my experience.)
|
||||
|
||||
Almost all of the text you read is ``normal'' weight, but \textbf{this bit is in bold} (which is also called ``boldface''). Boldface is sometimes used for emphasis, but it is more typically used to highlight important words or phrases. It is also used a lot in headlines, and you can see that in this zine, where the chapter names, as well as the names of sections and subsections within each chapter, are all printed in bold.
|
||||
|
||||
\subsection{Size}
|
||||
|
||||
Size is easy to figure out: it just refers to how large a bit of text appears, either on screen or on paper. In reality, a typeface's size is much more complicated than that. Font sizes are usually measured in \textbf{points}, the size of which has varied over the years. With digital printing, points are usually defined as being \nicefrac{1}{72} of an inch, or exactly $0.352\bar{7}$ millimeters. (I could go on at length about this, but I won't. If you are interested, you might want to read \kref{https://en.wikipedia.org/wiki/Point_(typography)}{https://en.wikipedia.org/wiki/Point\_(typography)}.\footnote{I'm not going to talk about type size here, because it's fairly straightforward in \LaTeX{} and I also mentioned how to get specific font sizes in issue \#4.}
|
||||
|
||||
\section{Semantic Formatting}
|
||||
|
||||
``Semantic'' formatting means that your code should \textit{mean} something. It other words, you need to distinguish between when you are emphasizing something (i.e., ``This is \textit{very} good cake.'') or merely when you are marking something as italic or bold as a convention, such as book and movie titles or vocabulary words (i.e., \textit{The Grapes of Wrath}, \textit{Star Wars}, ``\textbf{mitosis} is the process of cell division'', etc.).
|
||||
|
||||
In \LaTeX{}, the command for emphasizing text is \verb|\emph{<text>}|. This generally gets rendered as italic text, although not always. If you are working in a document class that formats \verb|\emph{<text>}| in some way other than italic, you can always change it to italic by adding this to your preamble:
|
||||
|
||||
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Redefining emph}]
|
||||
\let\emph\relax
|
||||
\DeclareTextFontCommand{\emph}{\itseries}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\section{Commands and Environments}
|
||||
|
||||
\LaTeX{} has both modal commands that change \textit{all} the text following that command, and environments that change the text only within that environment.
|
||||
|
||||
\paragraph{Notes:} Most document classes (but not all) use a roman (that is, a serif) font by default; to set entire passages in a different shape, use one of the three shape \texttt{<XXfamily>} switch commands. \verb|\textrm{<text>}| can be used to return to a roman font in an extended passage of either sans-serif or monospace text, for example.
|
||||
|
||||
Likewise, \verb|\upshape| can be used to return a regular shape in an extended passage of italic, slanted, or small caps text. Similarly, to return to a regular shape in a shorter passage of italic, slanted, or small caps text, you can use \verb|\textup{<text>}|.
|
||||
|
||||
\verb|\textmd{<text>}| can be used in the middle of a long passage of bold faced text to omit a word or two from being bold.
|
||||
|
||||
The commands and environments are summarized in the following table. It's a lot easier to remember them when you know what characteristic (family, shape, series) you are targeting, and what the two-letter code (\texttt{rm}, \texttt{bf}, etc.) stands for.
|
||||
|
||||
\newpage
|
||||
|
||||
\begin{longtblr}
|
||||
[
|
||||
caption = {Summary of Text Formatting in \LaTeX{} },
|
||||
label = {tb:},
|
||||
% theme = {custom1}
|
||||
]{
|
||||
width = {\textwidth},
|
||||
colspec = { X[0.2,c] X[1,l] X[2,c] X[2,c] },
|
||||
hlines = {0.5pt,solid},
|
||||
vline{1,5} = {0.5pt,solid},
|
||||
vline{2} = {2-10}{0.5pt,solid},
|
||||
rows = {5mm, m, rowsep=3pt},
|
||||
rowhead = 1,
|
||||
cells = {font=\sffamily\fontsize{8pt}{10pt}\selectfont},
|
||||
row{1} = {font=\bfseries},
|
||||
verb,
|
||||
cell{2}{1} = {r=3}{c},
|
||||
cell{5}{1} = {r=4}{c},
|
||||
cell{9}{1} = {r=2}{c},
|
||||
cell{11}{1}= {c=2}{l},
|
||||
}
|
||||
& Characteristic & Switch Command & Command \\
|
||||
\rotatebox[origin=c]{90}{Family} & Roman* & \verb|\rmfamily| & \verb|\textrm{<text>}| \\
|
||||
& Sans-Serif & \verb|\sffamily| & \verb|\textsf{<text>}| \\
|
||||
& Monospace & \verb|\ttfamily| & \verb|\texttt{<text>}| \\
|
||||
\rotatebox[origin=c]{90}{Shape} & Upright* & \verb|\upshape| & \verb|\textup{<text>}| \\
|
||||
& Italic & \verb|\itshape| & \verb|\textit{<text>}| \\
|
||||
& Slanted & \verb|\slshape| & \verb|\textsl{<text>}| \\
|
||||
& Small Caps & \verb|\scshape| & \verb|\textsc{<text>}| \\
|
||||
\rotatebox[origin=c]{90}{Series} & Medium* & \verb|\mdseries| & \verb|\textmd{<text>}| \\
|
||||
& Boldface & \verb|\bfseries| & \verb|\textbf{<text>}| \\
|
||||
{Return to the default \\style for the \\document class} & & \verb|\normalfont| & \verb|\textnormal{<text>}| \\
|
||||
\end{longtblr}
|
||||
|
||||
\paragraph{Note:}An asterisk (*) indicates the typical default for most document classes.
|
23
006/include/chap04.tex
Normal file
@ -0,0 +1,23 @@
|
||||
\chapter{The Faces of Computing: \\Ada Lovelace}
|
||||
|
||||
Computer science is strongly allied with mathematics, and the face of both of those fields is often a white male face. While it's true that both of these fields have traditionally been the domain of white males, many women and minorities have contributed to both mathematics and computer science over the years.
|
||||
|
||||
One of the women who made significant contributions to both fields was Augusta Ada King, Countess of Lovelace, otherwise known as Ada Lovelace.
|
||||
|
||||
Lovelace was the child of the English poet Lord Byron\footnote{This period in English history is especially fascinating to me, as Lord Byron was in a social circle that included his wife, daughter, the poet Percy Bysshe Shelley and his wife Mary Shelley (who was the daughter of Mary Wollstonecraft, an early feminist and advocate of women's rights, and William Godwin, who had many not so nice things to say about aristocracy. This circle would eventually lead to the production of \textit{Dracula} by Bram Stoker, \textit{Frankenstein, or the Modern Prometheus} by Mary Shelley, the modern computer algorithm and by extension, the modern computer industry, and many, many great horror films.} and reformer Anne Isabella Milbanke.\footnote{Lady Byron (i.e., Anne Isabella Noel Byron, 11th Baroness Wentworth and Baroness Byron) was an interesting personality herself. She was an educational reformer and philanthropist, in addtion to being an abolitionist. She established the Ealing Grove School, the first industrial school in England. At this school, academic subjects were combined with three hours of gardening each day, and corporal punishment was not allowed. (Corporal punishment in elementary school was still a thing when I was a student in the 1970s.)} Ada showed an early interest in mathematics, and her mother encouraged this in an effort to ward off the development of what she perceived as Lord Byron's insanity.\footnote{This was, after all, an age which did not have a good understanding of mental illness. We are doing better in this regard, but we still have quite a way to go.}
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare luctus sem non ullamcorper. Proin dignissim condimentum orci at ultricies. Aenean tellus augue, posuere eu eleifend ac, tincidunt ut odio. Donec tempus ac tortor facilisis venenatis. Mauris eu dolor dui. Maecenas mollis, erat eget auctor ornare, nisl justo feugiat felis, vitae placerat arcu enim in lorem. Vestibulum vestibulum malesuada ligula et tincidunt. Fusce augue nisi, eleifend ac rutrum eget, hendrerit et massa. Vivamus pharetra aliquam magna sit amet vehicula. Nam augue lacus, condimentum a ornare non, pharetra id nulla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sagittis, lacus in tempor condimentum, nibh massa fermentum est, non sodales justo velit vitae purus. Curabitur at lobortis dui. Donec ut sem magna. Nam ante dolor, elementum eu eros ac, pharetra laoreet libero. Vestibulum iaculis, ante sit amet imperdiet rutrum, felis nulla luctus leo, nec egestas lacus neque ac metus.
|
||||
|
||||
\setlength{\intextsep}{0pt}%
|
||||
\begin{wrapfigure}[16]{r}{0.35\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=0.35\textwidth]{lovelace}
|
||||
\caption{Detail of Margaret Sarah Carpenter's portrait of Ada Lovelace}
|
||||
\end{wrapfigure}
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare luctus sem non ullamcorper. Proin dignissim condimentum orci at ultricies. Aenean tellus augue, posuere eu eleifend ac, tincidunt ut odio. Donec tempus ac tortor facilisis venenatis. Mauris eu dolor dui. Maecenas mollis, erat eget auctor ornare, nisl justo feugiat felis, vitae placerat arcu enim in lorem. Vestibulum vestibulum malesuada ligula et tincidunt. Fusce augue nisi, eleifend ac rutrum eget, hendrerit et massa. Vivamus pharetra aliquam magna sit amet vehicula. Nam augue lacus, condimentum a ornare non, pharetra id nulla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sagittis, lacus in tempor condimentum, nibh massa fermentum est, non sodales justo velit vitae purus. Curabitur at lobortis dui. Donec ut sem magna. Nam ante dolor, elementum eu eros ac, pharetra laoreet libero. Vestibulum iaculis, ante sit amet imperdiet rutrum, felis nulla luctus leo, nec egestas lacus neque ac metus.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare luctus sem non ullamcorper. Proin dignissim condimentum orci at ultricies. Aenean tellus augue, posuere eu eleifend ac, tincidunt ut odio. Donec tempus ac tortor facilisis venenatis. Mauris eu dolor dui. Maecenas mollis, erat eget auctor ornare, nisl justo feugiat felis, vitae placerat arcu enim in lorem. Vestibulum vestibulum malesuada ligula et tincidunt. Fusce augue nisi, eleifend ac rutrum eget, hendrerit et massa. Vivamus pharetra aliquam magna sit amet vehicula. Nam augue lacus, condimentum a ornare non, pharetra id nulla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sagittis, lacus in tempor condimentum, nibh massa fermentum est, non sodales justo velit vitae purus. Curabitur at lobortis dui. Donec ut sem magna. Nam ante dolor, elementum eu eros ac, pharetra laoreet libero. Vestibulum iaculis, ante sit amet imperdiet rutrum, felis nulla luctus leo, nec egestas lacus neque ac metus.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare luctus sem non ullamcorper. Proin dignissim condimentum orci at ultricies. Aenean tellus augue, posuere eu eleifend ac, tincidunt ut odio. Donec tempus ac tortor facilisis venenatis. Mauris eu dolor dui. Maecenas mollis, erat eget auctor ornare, nisl justo feugiat felis, vitae placerat arcu enim in lorem. Vestibulum vestibulum malesuada ligula et tincidunt. Fusce augue nisi, eleifend ac rutrum eget, hendrerit et massa. Vivamus pharetra aliquam magna sit amet vehicula. Nam augue lacus, condimentum a ornare non, pharetra id nulla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sagittis, lacus in tempor condimentum, nibh massa fermentum est, non sodales justo velit vitae purus. Curabitur at lobortis dui. Donec ut sem magna. Nam ante dolor, elementum eu eros ac, pharetra laoreet libero. Vestibulum iaculis, ante sit amet imperdiet rutrum, felis nulla luctus leo, nec egestas lacus neque ac metus.
|
||||
|
2
006/include/chap05.tex
Normal file
@ -0,0 +1,2 @@
|
||||
\chapter{This is the fifth chapter}
|
||||
|
2
006/include/chap06.tex
Normal file
@ -0,0 +1,2 @@
|
||||
\chapter{This is the sixth chapter}\label{codeberg}
|
||||
|
53
006/include/coda.tex
Normal file
@ -0,0 +1,53 @@
|
||||
\chapter{Coda}
|
||||
|
||||
\section{What I Learned About \LaTeX{} While Creating This Issue}
|
||||
|
||||
\subsection{Easy Ways with \textsf{tikz}}
|
||||
|
||||
I included some illustrations of card layouts back on page \pageref{cards}. Since these are just rectangles, I knew I could create them pretty easily using the \textsf{tikz} package. All I needed were the coordinates where the three rectangles would begin and end, and the coordinates of the nodes where I would put the letters.
|
||||
|
||||
As it turns out, this was difficult to figure out using my mind alone—I have a lot going on, I am easily distracted, there was too much guesswork. I'm a big fan of having the right tools to do a job and then using those tools. I see no point in being a martyr. So I pulled out the best tool I had for this: graph paper and a pencil. No guess work, just straight lines and a bit of counting. I felt like I was in my eighth grade geometry class again, and I actually enjoyed it.
|
||||
|
||||
\textbf{Protip:} draw it on paper first.
|
||||
|
||||
\setlength{\fboxsep}{0pt}
|
||||
\setlength{\fboxrule}{0.5pt}
|
||||
\begin{center}
|
||||
\fbox{\includegraphics[scale=0.28]{tikz-on-paper}}
|
||||
\end{center}
|
||||
|
||||
\subsection{\texttt{include} is Your Friend}
|
||||
|
||||
Last time around, I mentioned using \verb|\input{<filename>}| to keep your \LaTeX{} GUI happy. But I've also found that using \verb|\include{<filename>}| keeps \textit{me} happy. Creating this zine means I end up with a very long file (the file for issue \#5 was 1005 lines long!) making it time consuming to constanty scroll through the file to get to the last part I was editing. (It's not terrible in and of itself, but repeatedly having to do it impacts my overall efficiency.)
|
||||
|
||||
For this issue, I decided to write up each chapter as a separate file, and then just \texttt{include} that file into my main document. This makes it much easier to manage, and I do feel more efficient. But because I'm using a GUI (Texmaker) I do have to remember to switch back to my main file when I compile the document. Overall, that's a trade-off I can live with. As a bonus, I can comment out chapters I am not concerned about when compiling. This saves both printer paper (since I tend to edit on paper—I'm very old-school in that way) and my adult-onset-attention-deficit-disordered brain.)
|
||||
|
||||
\subsection{Redefining a Command}
|
||||
|
||||
I switched to the Cantarell font for sans-serif fonts in this issue. The only problem is that it seemed a bit bigger than the serif font around it. So I redefined it in the preamble to make it a bit smaller:
|
||||
|
||||
\begin{Verbatim}[]
|
||||
\let\oldtextsf\textsf
|
||||
\renewcommand{\textsf}[1]{\small\oldtextsf{#1}\normalsize}
|
||||
\end{Verbatim}
|
||||
|
||||
The first line saves the \texttt{textsf} command under a new name (\texttt{oldtextsf}). The second line then allows me to renew the original command by using the new name as an input to the original. I added \verb|\small| in front to change the size of the sans-serif text, and added \verb|\normalsize| after it to return to the regular font size.
|
||||
|
||||
%\newpage % Use only to keep the afterword together if we end up with orphans
|
||||
\section{Afterword}
|
||||
|
||||
\begin{multicols}{2}
|
||||
\begin{small}
|
||||
\noindent{}This is the sixth issue of this zine. I originally did this so I could learn how to use \LaTeX{} and also learn more about Linux. I thought I might get one or two issues and that would be the end of it. So when I started doing this, I pushed everything to my git repo at \kref{https://git.kjodle.net/kjodle/the-codex}{https://git.kjodle.net/kjodle/the\\-codex}.
|
||||
|
||||
It looks like this is a thing now, and a single repo just won't work. I'm just over 300 commits in that repo, which doesn't really reveal much about the state of each issue. So, going forward, I'm going to be making commits to a different project on my git repo at \kref{https://git.kjodle.net/the-codex-zine}{https://git.kjodle.net/the-codex-\\zine}. That way, each issue can have its own repository and will eventually come to a logical end, instead of being never ending.
|
||||
|
||||
I will, however, maintain the wiki at \kref{https://git.kjodle.net/kjodle/the-codex/wiki}{https://git.kjodle.net/kjodle/the\\-codex/wiki}.
|
||||
|
||||
\medskip
|
||||
\begin{flushright}
|
||||
\noindent{}Thanks,\\—Ken
|
||||
\end{flushright}
|
||||
|
||||
\end{small}
|
||||
\end{multicols}
|
30
006/include/impressum.tex
Normal file
@ -0,0 +1,30 @@
|
||||
\section*{Impressum}
|
||||
All contents \copyright2025 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. You don't need to however, 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
|
||||
|
||||
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.
|
3
006/include/kpsewhich.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ kpsewhich flascards.cls
|
||||
\end{Verbatim}
|
3
006/include/mktexlsr.tex
Normal file
@ -0,0 +1,3 @@
|
||||
\begin{Verbatim}[]
|
||||
$ sudo mktexlsr
|
||||
\end{Verbatim}
|
17
README.md
@ -13,23 +13,31 @@ If you want to buy a paper version with a fancy colored cover, printed up as a l
|
||||
|
||||
If you have questions or suggestions, you can join the [forum for this zine](https://forums.kjodle.net/forumdisplay.php?fid=15) on my website. I am trying to avoid social media as much as possible, and also hate communicating through apps like Etsy, Gumroad, or Patreon (for reasons I may talk about at some point). If you want to contribute or collaborate, the forum would be a good place to start.
|
||||
|
||||
## Support
|
||||
|
||||
If you like this, but don't want to buy, you can always [donate](https://www.paypal.me/kjodle) via PayPal. (No PayPal account is necessary.) It's greatly appreciated.
|
||||
|
||||
## Paper Copies
|
||||
|
||||
**Issue 004**
|
||||
|
||||
Issue #4 is available on etsy at [https://www.etsy.com/listing/1747850159/the-codex-a-zine-about-linux-issue-4](https://www.etsy.com/listing/1747850159/the-codex-a-zine-about-linux-issue-4).
|
||||
|
||||
**Issue 003**
|
||||
|
||||
You can buy this on etsy at [https://www.etsy.com/listing/1507867746/the-codex-a-zine-about-linux-issue-3](https://www.etsy.com/listing/1507867746/the-codex-a-zine-about-linux-issue-3). I don't have metric versions available for download as of yet (12 July 2023) but I am working on it.
|
||||
|
||||
**Issue 002**
|
||||
|
||||
You can buy a paper copy of issue [#002](https://www.etsy.com/listing/1262188799/the-codex-a-zine-about-linux-issue-2) in my Etsy shop. Unfortunately, I can only ship to North America at the present time.
|
||||
|
||||
If you are outside of North America and would like to purchase a digital download which you can then print out in booklet form and staple yourself, you can buy it [here](https://www.etsy.com/listing/1252039564/the-codex-2-metric-download).
|
||||
|
||||
Again, you can use the coupon **GIT20** to get a 20% discount.
|
||||
|
||||
If you have issues with Etsy (and who doesn't?), you can also buy them from **Gumroad**:
|
||||
|
||||
* [Physical copy (North America only)](https://iswpw.gumroad.com/l/codex002)
|
||||
* [Digital A4 copy (everywhere)](https://iswpw.gumroad.com/l/codex002-A4)
|
||||
|
||||
The **GIT20** discount code will also work on Gumroad.
|
||||
|
||||
**Issue 001**
|
||||
|
||||
You can buy issue [#001](https://git.kjodle.net/kjodle/the-codex/src/tag/Issue-001) on my etsy shop [here](https://www.etsy.com/listing/1099735271/the-codex-a-zine-about-linux). Use the coupon **GIT20** to get 20% off all zines.
|
||||
@ -51,4 +59,3 @@ I used a handful of packages to make this document, which I've listed below, alo
|
||||
|
||||
Also reddit user -LeopardShark- recommended using the package [microtype](https://www.ctan.org/pkg/microtype) to get finer typographical control. ~~Maybe in the next issue.~~ I'm actually using this in issue 002 and you can tell the difference by comparing page 2 in both issues and looking at the placement of the Creative Commons icon.
|
||||
|
||||
If you like this, but don't want to buy, you can always [donate](https://www.paypal.me/kjodle) via PayPal. (No PayPal account is necessary.) It's greatly appreciated.
|
||||
|