Compare commits

...

205 Commits

Author SHA1 Message Date
a9ddcc7acb Minor typofixes & updates 2024-07-25 10:12:10 -04:00
de26434158 Added note about forum to Afterword 2024-07-25 09:56:18 -04:00
3318d6d46d Trimmed extra lines from «Summary of Git Commands» table; now down to 45 pages 2024-07-24 20:45:36 -04:00
92bae1000a Removed extra page from «Coda» section 2024-07-21 18:39:45 -04:00
1d8c00300c Updated «Today» section 2024-07-21 18:38:57 -04:00
45497bfc73 Added Venn diagram to «tomorrow» section 2024-07-20 21:24:07 -04:00
0b98c6a6ef Updated «tomorrow» section 2024-07-20 20:51:33 -04:00
81c9268984 Removed most of how to install git 2024-07-20 12:55:22 -04:00
a8db06bf95 Added pdf version of git icon 2024-07-13 19:26:30 -04:00
1a6350f96a Added Part K to «Tomorrow» 2024-07-13 19:26:08 -04:00
64aa5ea4b6 Updated end of Part A 2024-07-13 18:52:29 -04:00
e30e3d435c Updated Part G with rest of manuscript 2024-07-13 18:33:09 -04:00
32ac3d7897 Reversed parts G & H 2024-07-13 15:01:00 -04:00
38ca0817ea Added Part G to «Today» section 2024-07-13 14:58:22 -04:00
d8e349bbc1 Added note about Codeberg 2024-07-12 19:26:08 -04:00
80c6e3c09d Updated ignore file 2024-07-12 19:22:14 -04:00
2b7626ae03 Updated «Today» with Part F manuscript 2024-07-12 16:07:37 -04:00
be709a2164 Numerous typofixes 2024-07-07 12:18:37 -04:00
b7ccc0f820 Git primer updates 2024-07-05 16:50:33 -04:00
bd0e77233b Updated afterword 2024-07-05 16:36:52 -04:00
d54f6e20f8 Updated remote repositories 2024-07-05 16:36:18 -04:00
537218ad1a Easter egg 2024-07-05 15:29:29 -04:00
a40f2101da Updates to «branches» 2024-07-05 15:28:18 -04:00
f984737c9c Remote repositories 2024-07-05 12:46:56 -04:00
f0a89a4299 Added table of Git commands 2024-07-05 11:12:52 -04:00
74bb27a03b Additions to Git chapter 2024-07-04 18:17:27 -04:00
251a2c75ad Numerous typofixes 2024-07-04 17:05:45 -04:00
6f8e3730f8 Adjusted font family in «Counter Variable Formats» table 2024-07-04 14:13:30 -04:00
a1cf982ada Added «git workflow» chapter 2024-07-04 14:01:22 -04:00
333706b9cf Section on customizing list environments 2024-07-03 14:16:23 -04:00
4ec046d0bb Added chapter on outlines 2024-07-02 17:21:16 -04:00
53bd2f9099 Cleaned up the preamble finally 2024-06-30 18:53:07 -04:00
3700b7095e Finished «Dependency Heck» 2024-06-30 17:50:53 -04:00
a4bf1293bd Added «I'm not ready for this» 2024-06-30 16:32:42 -04:00
68a3a77be9 More work on dependency heck 2024-06-30 16:20:18 -04:00
688854f7fb Dependency Heck 2024-06-29 19:01:29 -04:00
6ebb04b26d Added section about using «input» and «include» 2024-06-29 11:23:12 -04:00
634e583461 Added images for issue #5 2024-06-28 21:45:40 -04:00
568072e658 modified ignore file 2024-06-27 19:25:14 -04:00
4680a37c65 Added «dependency hell» chapter 2024-06-27 16:24:15 -04:00
49b1af4e99 Updates to «ccicons» section 2024-06-19 19:04:53 -04:00
729af21c0a Added to «Afterword» 2024-06-19 13:53:28 -04:00
ed7ec493ad Moved «Afterward» to section in «Coda» 2024-06-19 13:42:27 -04:00
a6485746d2 Changed spacing before chapter heads 2024-06-19 13:31:52 -04:00
c38ad9a773 Updates to chapter 1 2024-06-16 17:49:38 -04:00
5dcf98abeb Pulled in deleted material from issue #4 2024-06-16 11:22:32 -04:00
5bff778fb1 Updated readme 2024-06-15 14:08:38 -04:00
3be3ec9bc2 Updated readme with etsy information for #4 2024-06-15 14:07:13 -04:00
bcd2a0eadc Initial commit for issue 5 2024-06-15 14:03:28 -04:00
900e3e62c8 Added pdf files for 004 2024-06-14 17:33:19 -04:00
dedd0ca1e5 Fifth and final round of edits 2024-06-14 17:31:48 -04:00
77805ec0e8 Additional adjustments to cover 2024-06-14 13:46:59 -04:00
df93f92e98 Corrected «Bash» to «bash» (finally) 2024-06-13 20:26:23 -04:00
eed6502ae0 Fourth round of final drafts (fingers crossed) 2024-06-13 18:58:02 -04:00
93dc2db5c8 Third round of final edits 2024-06-13 17:37:03 -04:00
4fe2135111 Added note about «lettrine» package. 2024-06-13 08:56:49 -04:00
aadb1823b2 Second round of final edits 2024-06-12 20:01:10 -04:00
c423123cc3 Added «lettrine» package for drop caps in chapter 3 2024-06-12 17:55:12 -04:00
cd7d6fb8ca First round of final edits 2024-06-12 15:34:36 -04:00
bf22d36bfb Final adjustments to cover 2024-06-12 07:17:10 -04:00
9c99d03637 Edits to ch 3 to shorten by a page 2024-06-11 06:19:39 -04:00
e31d523682 Changed «LaTeX» to use a Roman font 2024-06-10 21:43:04 -04:00
266d1c94e2 Final edits (almost) 2024-06-10 18:54:58 -04:00
a1f6c8591e Last edits before final edits and cuts 2024-06-09 15:41:08 -04:00
e6b052f9e4 Numerous updates to first sections 2024-06-09 14:05:47 -04:00
b6883babd3 Switched to ccicons package for licensing 2024-06-09 12:51:03 -04:00
6269d683af Updates to «right ways» chapter 2024-06-09 12:18:04 -04:00
13a67440fa Typofixes to «naps» chapter 2024-06-09 11:58:46 -04:00
20444a83bd Additions to «chemistry» section 2024-06-09 11:53:17 -04:00
38e3ba742b Fixed issue number in header 2024-06-09 11:21:47 -04:00
1e239c05f6 Removed empty chapters 2024-06-09 11:19:25 -04:00
f02faeacde Added link to wiki page with list of potential future topics 2024-06-08 13:58:20 -04:00
f494bad229 Added to «College, 2008» section 2024-06-07 17:54:53 -04:00
894e8d9858 Updated «Today» section 2024-06-07 15:09:45 -04:00
a76dea4d21 Removed unnecessary package from cover 2024-06-07 14:36:42 -04:00
f625c3db0d Added two items to «Coda» 2024-06-07 14:36:04 -04:00
40e995dd9d Added cover in LaTeX 2024-06-07 12:23:56 -04:00
d7ed5f3311 Added section on «chemfig» 2024-06-06 20:31:33 -04:00
26696c7b5c Updates to «chemformula» section 2024-06-05 19:46:57 -04:00
e9be3083b1 Wrote «chemformula» section 2024-06-05 18:52:59 -04:00
8d754cbf10 Updated «mhchem» section 2024-06-05 15:19:28 -04:00
38b03877c0 Small updates and corrections 2024-06-05 14:48:54 -04:00
2ff2255222 Added section on Bash aliases for git and Bash functions 2024-01-18 17:44:16 -05:00
9a6408dff3 Updates to «College, 2008» section. 2023-11-16 20:01:28 -05:00
4dc75bacc0 Finished chapter on NAPS2 2023-11-16 08:15:14 -05:00
c5dbee19d9 Expanded chapter on NAPS2 2023-11-15 19:11:18 -05:00
9c8de1f3bf Additional information about scanning and replicative failure 2023-11-14 22:40:42 -05:00
15d43c79dc Added introductory material for NAPS2 2023-11-14 20:55:01 -05:00
a7897aed72 Changed page images to be on a single line 2023-11-14 20:26:42 -05:00
cdefa996f9 Added chapter on NAPS2 and tikz pictures 2023-11-09 18:16:00 -05:00
2bf0147520 Modified .gitignore 2023-11-09 08:59:55 -05:00
727a07d925 Added several chemistry packages; added chemistry chapter 2023-08-07 19:01:28 -04:00
2720b26c90 Removed «courier»; added «nott» option to «kpfonts» 2023-08-06 15:32:01 -04:00
e0f7f7cc6e Added «courier» package; updated «kref» macro 2023-08-06 13:10:57 -04:00
ce623f6a46 Updated «ways» 2023-08-01 16:09:14 -04:00
2c7e5600e3 Updated «flavors» image and scaling 2023-08-01 15:36:25 -04:00
43023a9eb6 Added example of a kludge 2023-07-28 22:17:44 -04:00
5346f340d2 Updates to right ways/wrong ways 2023-07-25 19:39:10 -04:00
cc6ce748b8 Updates to right ways/wrong ways 2023-07-25 16:59:39 -04:00
eb1408fb1a Added tables to chapter 6 2023-07-24 16:04:45 -04:00
65c395fcbd Experimenting with image size 2023-07-13 21:12:53 -04:00
96ce0a2ba1 - 2023-07-13 21:06:43 -04:00
315e1162f9 Updated readme with etsy link to 003 2023-07-12 16:34:46 -04:00
8a885ee11d Added chapter «the right ways» 2023-07-12 09:10:26 -04:00
952bbaaf21 Added one more link to bash aliases for git 2023-07-11 19:43:56 -04:00
85c0350642 Added 2023-07-11 19:42:17 -04:00
5d63f45597 Added 2023-07-11 19:40:07 -04:00
7064e28572 Added chapter about bash history 2023-07-11 19:33:24 -04:00
b5d9a3eb97 Initial commit of issue #004 2023-07-09 14:34:38 -04:00
a4df7ee225 Updated pdf version 2023-07-09 12:59:46 -04:00
b94f5e4778 Sixth proofreading pass 2023-07-08 16:19:16 -04:00
b1ed2f00bc Updated example labels 2023-07-08 11:45:22 -04:00
75f7059e02 Fifth proofreading pass 2023-07-08 10:55:00 -04:00
b269886cb8 Updated .gitignore file 2023-07-08 10:54:38 -04:00
fa8e43c706 Fourth proofreading pass; ~12,000 words 2023-07-08 09:50:50 -04:00
c341cea2d6 Added macro for more easily doing href urls 2023-07-08 09:22:41 -04:00
6a8d3cb0f5 Added macro to format example labels 2023-07-07 19:10:23 -04:00
3f892de8b2 Third proofreading pass 2023-07-06 16:18:53 -04:00
ebdb293070 Removed section on ABC; now at 40 pages 2023-07-04 16:49:39 -04:00
8f4be117b7 Updated .gitignore «bak» 2023-07-04 16:47:32 -04:00
6fc2f3acbd Second proofreading pass; still at 41 pages 2023-07-04 16:46:16 -04:00
7c6f47a89e First proofreading pass; now 41 pages 2023-07-04 13:20:44 -04:00
26f4cfa905 Added section about garden hacks 2023-06-27 16:53:55 -04:00
02ef9c14b4 Added musixtex chord diagrams 2023-06-26 18:10:45 -04:00
9937cfd5ae Updated «Miscellaneous Things» 2023-06-26 18:10:16 -04:00
b14101b4de Updated music section 2023-06-26 18:08:34 -04:00
9560f94138 Added Ubuntu 22.04 (and 24.04) 2023-06-26 16:05:17 -04:00
d394e3f909 Added 5.1.3 «Miscellaneous Things» 2023-06-26 07:56:32 -04:00
61f2a42b74 Added link to Flatland project 2023-06-25 16:35:06 -04:00
ab377f3c8c Additional work to LaTeX section 2023-06-25 16:15:13 -04:00
786a5ceb52 Updated readme file 2023-06-25 14:46:16 -04:00
fc25b77fb4 Added chapter «An Introduction to LaTeX» 2023-06-25 14:39:11 -04:00
e118528a3d Updated «What's to Like About Linux» 2023-06-25 10:03:09 -04:00
4e48b77257 Updated .gitignore file 2023-06-25 10:02:21 -04:00
1b8ac2a57e Added section about Flatland 2023-06-24 14:56:58 -04:00
9617c37cdd Added music and installing LaTeX packages 2023-03-01 19:19:48 -05:00
6b46174876 Scaled images down and reprocessed 2023-02-18 15:26:40 -05:00
eb6249657c Updated typo in README.md 2023-02-18 15:14:57 -05:00
8b77e01872 Added teaching section to 003 2023-02-18 15:13:36 -05:00
efc8484832 Updated README.md 2023-02-16 11:43:28 -05:00
2635e646ed Initial commit of issue #3 2023-02-16 11:35:18 -05:00
dfcbca343b Updated readme file to include Gumroad listings 2022-07-11 17:21:40 -04:00
9490cfc901 Updated readme to include etsy listings 2022-07-10 18:46:49 -04:00
e5caafdedd Updated gitignore for metric versions 2022-07-10 18:35:25 -04:00
9928966d8b Font issue in Impressum 2022-06-29 07:44:21 -04:00
0e51d0a795 Removed ARC notice 2022-06-29 07:06:29 -04:00
e11b4e66fa Final (?) edits 2022-06-28 17:25:13 -04:00
50320eb82b Minor edits 2022-06-21 19:36:09 -04:00
7bf9f4d8cd Almost done with #2 2022-06-20 21:36:00 -04:00
8b825d3f47 Test commmit 2022-06-19 09:31:01 -04:00
11307f485a Almost finished - ready for proofreading 2022-05-22 13:38:14 -04:00
fbaf7fa72b Added section about Ubuntu 22.04 2022-05-21 11:15:40 -04:00
32b6cfa6ab Numerous small edits 2022-05-04 09:51:53 -04:00
e8584030ef Numerous small edits 2022-05-03 16:58:03 -04:00
801610927a Finished what have I installed section 2022-05-03 16:27:28 -04:00
7015ab59f1 Editing 2022.04.26 installation list 2022-04-26 20:39:34 -04:00
ed912eaae8 Editing 2022.04.20 2022-04-20 20:55:04 -04:00
f398fe615f Numerous typofixes 2022-03-31 19:07:30 -04:00
6f4ae0831b Updated high school computer course 2022-03-18 20:18:25 -04:00
4c6129d563 Edited what's to like about Linux 2022-03-10 20:11:28 -05:00
24c2570a46 Corrected errata for third printing 2022-01-15 10:44:29 -05:00
3a0bbcd468 Added C-128 information and math 2022-01-09 10:19:57 -05:00
e79abe2188 Added item about characters with special meaning in LaTeX 2021-12-18 09:18:20 -05:00
a70dd27ea4 Updated readme 2021-12-12 10:42:49 -05:00
0b2729dc73 Updated readme, deleted svg 2021-12-12 10:41:34 -05:00
951d36d4ce Added paypal logo 2021-12-12 10:36:47 -05:00
74769a2201 Updated README.md 2021-11-30 21:55:59 -05:00
5dfb7aa7a2 Updated README.md 2021-11-30 21:50:51 -05:00
e510115c53 Minor edits, adjusted vertical spacing 2021-11-30 21:46:10 -05:00
c30da3f9a3 Added picture of Commodore 64 2021-11-29 20:05:48 -05:00
f73e78cb0a Added intro to Commodore 64 story, and kibibytes 2021-11-29 19:18:54 -05:00
39208ab9e8 Added notes about errata and credit to Impressum 2021-11-26 15:40:19 -05:00
6f579d148c Added section on tikz package 2021-11-26 09:33:05 -05:00
9924f00a1b Updated publication date 2021-11-25 18:38:29 -05:00
75ab5b89be Added information about dvipng; reordered first section a bit 2021-11-22 19:11:28 -05:00
4aa7c8cdcf Added section about LaTeX without a GUI 2021-11-22 18:46:30 -05:00
af862b1e78 Added link to latex experiments repo 2021-11-21 12:20:27 -05:00
1d0b558e3b Editing 2021.11.21.12:13 2021-11-21 12:13:33 -05:00
5c9e6cf034 Typofixes 2021-11-20 18:51:44 -05:00
0ccba669ec Added note about starting math mode 2021-11-20 18:47:24 -05:00
011d544e67 Added section on custom page sizes 2021-11-20 18:06:26 -05:00
72a38e574d Edited .gitignore 2021-11-20 18:05:51 -05:00
80f210abbe Corrected errata in second printing 2021-11-15 16:45:48 -05:00
54c91fb326 Numerous corrections; added badges 2021-11-14 15:27:18 -05:00
029bcc497d Updated README.md with coupon code. 2021-11-06 10:17:19 -04:00
64a3ee18e8 Updated ARC 2021-11-06 10:14:08 -04:00
1cbd8546b3 Edited Chapter 3 2021-11-06 10:13:55 -04:00
479a14079f Edited Chapter 2 2021-11-06 09:27:20 -04:00
e0c2199aea Added section on bash aliases 2021-11-05 12:24:22 -04:00
a22d7a084e Added PDF Chain image 2021-11-05 10:21:02 -04:00
e2090fc424 Added section 2.2 2021-11-05 09:47:52 -04:00
406bcbdc79 Increased contrast for printing 2021-11-05 09:29:41 -04:00
ac87f78a3b Added more scanning information 2021-11-04 10:17:24 -04:00
afe7fdbd9c Adjusted images 2021-11-04 09:24:53 -04:00
b6065474df Added images for scanning article 2021-11-03 19:47:33 -04:00
4a7a8107d5 Typofix in README.md 2021-10-23 08:51:11 -04:00
f07b5b1a2a Updated README.md to include package information 2021-10-23 08:48:49 -04:00
c254343a6d Updated readme with icon info 2021-10-17 12:53:56 -04:00
dbc8e23db5 Added ARC status to header 2021-10-17 12:51:16 -04:00
00957e6562 readme.md typofix 2021-10-11 20:02:13 -04:00
3369290830 readme.md typofix 2021-10-11 19:59:37 -04:00
09d3ac68df Edited readme file 2021-10-10 17:11:45 -04:00
5f1ac36992 Updated .gitignore; added other files 2021-10-10 17:10:34 -04:00
4a2985ce4c Hiding red boxes on links in pdf 2021-10-10 15:29:47 -04:00
a7db4380a4 Added etsy link to first issue 2021-10-10 14:13:03 -04:00
77 changed files with 4412 additions and 987 deletions

16
.gitignore vendored
View File

@ -1,2 +1,18 @@
Covers
*bklt*
*.aux
*.log
*.out
*.synctex.gz
*.toc
*.dvi
*.odt
metric*
*.mx1
*.abc
*.bak
*wc*
*drafts*
/build/*
*/build/*
*/spoken/*

View File

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.9.5) 10 OCT 2021 13:16
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.9.5) 15 JAN 2022 10:40
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -684,48 +684,48 @@ File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode
(build/codex-001.aux)
\openout1 = `codex-001.aux'.
LaTeX Font Info: Checking defaults for OML/jkp/m/it on input line 74.
LaTeX Font Info: Checking defaults for OML/jkp/m/it on input line 75.
LaTeX Font Info: Trying to load font information for OML+jkp on input line 7
4.
5.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omljkp.fd
File: omljkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OMS/jkp/m/n on input line 74.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for OMS/jkp/m/n on input line 75.
LaTeX Font Info: Trying to load font information for OMS+jkp on input line 7
4.
5.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omsjkp.fd
File: omsjkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OMX/jkp/m/n on input line 74.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 75.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 75.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 75.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for OMX/jkp/m/n on input line 75.
LaTeX Font Info: Trying to load font information for OMX+jkp on input line 7
4.
5.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omxjkp.fd
File: omxjkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for U/jkpexa/m/n on input line 74.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for U/jkpexa/m/n on input line 75.
LaTeX Font Info: Trying to load font information for U+jkpexa on input line
74.
75.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpexa.fd
File: ujkpexa.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 75.
LaTeX Font Info: ... okay on input line 75.
LaTeX Font Info: Trying to load font information for OT1+jkp on input line 7
4.
5.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ot1jkp.fd
File: ot1jkp.fd 2007/08/30 Fontinst v1.928 font definitions for OT1/jkp.
@ -787,7 +787,7 @@ e
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
\AtBeginShipoutBox=\box99
Package hyperref Info: Link coloring OFF on input line 74.
Package hyperref Info: Link coloring OFF on input line 75.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section
@ -799,34 +799,34 @@ Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count291
)
LaTeX Info: Redefining \ref on input line 74.
LaTeX Info: Redefining \pageref on input line 74.
LaTeX Info: Redefining \nameref on input line 74.
LaTeX Info: Redefining \ref on input line 75.
LaTeX Info: Redefining \pageref on input line 75.
LaTeX Info: Redefining \nameref on input line 75.
(build/codex-001.out) (build/codex-001.out)
\@outlinefile=\write3
\openout3 = `codex-001.out'.
LaTeX Font Info: Trying to load font information for U+jkpsya on input line
76.
77.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsya.fd
File: ujkpsya.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpsyb on input line
76.
77.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsyb.fd
File: ujkpsyb.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpmia on input line
76.
77.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpmia.fd
File: ujkpmia.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpsyc on input line
76.
77.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsyc.fd
File: ujkpsyc.fd 2006/08/15 v1.0
@ -834,7 +834,7 @@ File: ujkpsyc.fd 2006/08/15 v1.0
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
LaTeX Font Info: Trying to load font information for TS1+jkp on input line 7
7.
8.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ts1jkp.fd
File: ts1jkp.fd 2007/08/30 Fontinst v1.928 font definitions for TS1/jkp.
@ -842,10 +842,10 @@ File: ts1jkp.fd 2007/08/30 Fontinst v1.928 font definitions for TS1/jkp.
<images/ncsa4-0.png, id=155, 88.33pt x 31.11626pt>
File: images/ncsa4-0.png Graphic file (type png)
<use images/ncsa4-0.png>
Package pdftex.def Info: images/ncsa4-0.png used on input line 79.
Package pdftex.def Info: images/ncsa4-0.png used on input line 80.
(pdftex.def) Requested size: 30.91595pt x 10.89084pt.
LaTeX Font Info: Trying to load font information for OT1+jkptt on input line
81.
82.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ot1jkptt.fd
File: ot1jkptt.fd 2007/01/26 Fontinst v1.928 font definitions for OT1/jkptt.
@ -860,7 +860,7 @@ Chapter 1.
[5
]
Overfull \hbox (4.79448pt too wide) in paragraph at lines 129--130
Overfull \hbox (4.79448pt too wide) in paragraph at lines 130--131
\OT1/jkp/m/n/10 be-cause they had a go-back-through-all-your-steps-to-see-where
-you-done-
[]
@ -869,16 +869,16 @@ Overfull \hbox (4.79448pt too wide) in paragraph at lines 129--130
<images/casio.jpg, id=233, 303.1325pt x 552.0625pt>
File: images/casio.jpg Graphic file (type jpg)
<use images/casio.jpg>
Package pdftex.def Info: images/casio.jpg used on input line 136.
Package pdftex.def Info: images/casio.jpg used on input line 137.
(pdftex.def) Requested size: 45.46791pt x 82.8058pt.
[7 <./images/casio.jpg>]
Package multicol Warning: I moved some lines to the next page.
(multicol) Footnotes on page 8 might be wrong on input line 171.
(multicol) Footnotes on page 8 might be wrong on input line 172.
[8]
Underfull \hbox (badness 7595) in paragraph at lines 173--174
Underfull \hbox (badness 7595) in paragraph at lines 174--175
\OT1/jkp/m/n/10 1921 by Theodore and Mil-ton
[]
@ -889,13 +889,13 @@ Chapter 2.
] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22]
Chapter 3.
Overfull \hbox (1.03648pt too wide) in paragraph at lines 407--408
Overfull \hbox (1.03648pt too wide) in paragraph at lines 408--409
[]\OT1/jkp/m/n/10 (For more in-for-ma-tion about this, con-sult the Linux Foun-
da-tion \OT1/jkp/m/it/10 Filesys-
[]
Overfull \hbox (2.00093pt too wide) in paragraph at lines 407--408
Overfull \hbox (2.00093pt too wide) in paragraph at lines 408--409
\OT1/jkp/m/n/10 is at []\OT1/jkptt/m/n/10 https://refspecs.linuxfoundation.org/
FHS[]3.0/fhs-3.0.pdf[]\OT1/jkp/m/n/10 . It
[]
@ -903,7 +903,7 @@ FHS[]3.0/fhs-3.0.pdf[]\OT1/jkp/m/n/10 . It
[23
]
Overfull \hbox (0.93124pt too wide) in paragraph at lines 418--419
Overfull \hbox (0.93124pt too wide) in paragraph at lines 419--420
\OT1/jkp/m/n/10 used on oth-ers. ``Un-share-able'' files are those that are not
share-
[]
@ -911,7 +911,7 @@ Overfull \hbox (0.93124pt too wide) in paragraph at lines 418--419
[24] [25] [26] [27] [28]
Chapter 4.
Overfull \hbox (6.11798pt too wide) in paragraph at lines 544--545
Overfull \hbox (6.11798pt too wide) in paragraph at lines 545--546
[]\OT1/jkp/m/n/10 My hard-ware is a Brother MFC-J805DW printer/scanner/fax ma-c
hine.[][][]
[]
@ -919,7 +919,7 @@ hine.[][][]
[29
] [30]
Overfull \hbox (0.48096pt too wide) in paragraph at lines 576--577
Overfull \hbox (0.48096pt too wide) in paragraph at lines 577--578
\OT1/jkp/m/n/10 hap-pens with [][]\OT1/jkptt/m/n/10 pdftk[]\OT1/jkp/m/n/10 . (S
ee []\OT1/jkptt/m/n/10 www.pdflabs.com/tools/pdftk-the-pdf-tool
[]
@ -927,7 +927,7 @@ ee []\OT1/jkptt/m/n/10 www.pdflabs.com/tools/pdftk-the-pdf-tool
[31] [32]
Chapter 5.
Overfull \hbox (1.1366pt too wide) in paragraph at lines 629--630
Overfull \hbox (1.1366pt too wide) in paragraph at lines 630--631
[]\OT1/jkp/m/n/10 Rather, I'm talk-ing about the older mean-ing of the term ``h
acker'' which
[]
@ -939,27 +939,27 @@ Chapter 6.
[36
]
Overfull \hbox (8.25641pt too wide) in paragraph at lines 674--675
Overfull \hbox (8.25641pt too wide) in paragraph at lines 675--676
\OT1/jkp/m/n/10 vent that, add [][]\OT1/jkptt/m/n/10 \counterwithout{foootnote}
{chapter} []\OT1/jkp/m/n/10 to the pream-
[]
[37] [38] [39]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 739.
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 740.
[40]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 739.
Package atveryend Info: Empty hook `AfterLastShipout' on input line 740.
(build/codex-001.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 739.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 739.
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 740.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 740.
Package rerunfilecheck Info: File `codex-001.out' has not changed.
(rerunfilecheck) Checksum: <no file>.
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 739.
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 740.
)
Here is how much of TeX's memory you used:
8665 strings out of 483140
121949 string characters out of 5965152
380599 words of memory out of 5000000
23317 multiletter control sequences out of 15000+600000
8666 strings out of 483140
121967 string characters out of 5965152
380606 words of memory out of 5000000
23318 multiletter control sequences out of 15000+600000
592901 words of font info for 162 fonts, out of 8000000 for 9000
36 hyphenation exceptions out of 8191
34i,11n,45p,1153b,441s stack positions out of 5000i,500n,10000p,200000b,80000s
@ -971,7 +971,7 @@ e1/public/kpfonts/jkpbne.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/
kpfonts/jkpmit8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/kpfonts/
jkpmn8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/kpfonts/jkpmne.pf
b></usr/share/texlive/texmf-dist/fonts/type1/public/kpfonts/jkpttmn8a.pfb>
Output written on build/codex-001.pdf (40 pages, 188558 bytes).
Output written on build/codex-001.pdf (40 pages, 188670 bytes).
PDF statistics:
566 PDF objects out of 1000 (max. 8388607)
508 compressed objects within 6 object streams

Binary file not shown.

Binary file not shown.

View File

@ -51,7 +51,8 @@
\usepackage{wrapfig}
% Do we want to include URLs?
\usepackage{hyperref}
% Yes, but we also want to hide the big red box it puts around them. Thanks /u/0b0101011001001011
\usepackage[hidelinks]{hyperref}
% Use tab stops when we need to (especially in footnotes)
\usepackage{tabto}
@ -253,11 +254,11 @@ The command line, in short, makes you think. It makes you plan, it makes you thi
A GUI only makes you think about the next step. Surely all the steps after that will be obvious, \textit{n'est ce pas}? I've seen a lot of people ask questions online where they just want to be told which button to push. They are asking about how to cross the street when what they really want to do is get across town. They are asking for \textit{information} when what they really need is \textit{knowledge}.
Sadly, as individuals and as a society, we are drowning in \textit{information} when what we are starving for \textit{knowledge}.
Sadly, as individuals and as a society, we are drowning in \textit{information} when what we are starving for is \textit{knowledge}.
\section{The Unix Philosophy}
The Unix Philosophy was originated by Ken Thompson (one of the creators of Unix, upon which Linux is based) and basically says that each program should do one thing and do it well. (There is more to it than this; if you are interested, you can always google it.\footnote{Searching for something on the internet is \textit{always} an option these days, and so many people seem to be unable to do just that. Honestly, this is the kind of stuff that gets my underpants in a twist. \\ \tabto{1.9em}Question: ``Where can I find \textit{X}?'' Answer: The same place I would find it: At the other end of a google search. \\ \tabto{1.9em}Better question: ``Which is the \textbf{best} source for \textit{X}? Ah, \textit{now} we have the basis for a discussion. I'll put the kettle on and we can talk about it.})
The Unix Philosophy was originated by Ken Thompson (one of the creators of Unix, upon which Linux is based) and basically says that each program should do one thing and do it well. (There is more to it than this; if you are interested, you can always google it.\footnote{Searching for something on the internet is \textit{always} an option these days, and so many people seem to be unable to do just that. Honestly, this is the kind of stuff that gets my underpants in a twist. \\ \tabto{1.9em}Question: ``Where can I find \textit{X}?'' Answer: The same place I would find it: At the other end of a google search. \\ \tabto{1.9em}Better question: ``Which is the \textbf{best} source for \textit{X}?'' Ah, \textit{now} we have the basis for a discussion. I'll put the kettle on and we can talk about it.})
This runs counter to physical life, where everything has to be a Swiss army watch. Watch any ad for a new kitchen gadget and this device does \textit{everything} except walk the dog and take out the trash. If it \textit{actually} did all those things and did them well, I would be happy to own one and more than happy to pay a couple of hundred dollars for it.
@ -385,7 +386,7 @@ These are violations of the Unix Principle that actually work well and that I ca
\bigskip
\noindent Well, I've rambled a bit here. I'm sure I'll remember more things to like about Unix after I put this issue to bed. And I'll do a bit of research, as well. But one of my favorite reasons is this:
\noindent Well, I've rambled a bit here. I'm sure I'll remember more things to like about Linux after I put this issue to bed. And I'll do a bit of research, as well. But one of my favorite reasons is this:
\begin{verbatim}
$ cowsay "Linux Rocks"
@ -539,7 +540,7 @@ I suppose I should have been an archivist. I am always trying to preserve the wr
And this makes sense. It's easier to share a digital file of something than to share the thing itself, because as my experience with sharing books highlights, you rarely get them back. Also, the further you spread something, the more like it is to be preserved. \textit{Preservation through dissemination.}
So I scan a lot of things. Because this can be a messy, complicated process, I've developed workflows around this. (I am big into workflows, because once you have one down, it's easier to anticipate and deal with interruptions or disruptions, unless you run into a mule.\footnote{If you've read Asimov's \textit{Foundation} series, you'll recognize that reference.} So here is my workflow for scanning things.
So I scan a lot of things. Because this can be a messy, complicated process, I've developed workflows around this. (I am big into workflows, because once you have one down, it's easier to anticipate and deal with interruptions or disruptions, unless you run into a mule.\footnote{If you've read Asimov's \textit{Foundation} series, you'll recognize that reference.}) So here is my workflow for scanning things.
My hardware is a Brother MFC-J805DW printer/scanner/fax machine.\footnote{One day, we will eventually give up faxing, which is archaic at this point. I don't know if we'll just start calling these machines ``printer/scanners'' or if we'll continue to call them ``multi-function machines'' because they still can make copies. Futurists tend not to care about the details. (In reality, these will all be obsolete in the new digital order, when the oceans have risen and all the paper underwater has decomposed. I'm not a futurist, so I'm interested in the details.)} And this is where we run into problems, because while Brother does make Linux drivers for this machine, the printer driver works great and the scanner driver does not. If I install it, it works fine for three or four scans and then it starts to hang. I can uninstall it, reinstall it, and get a few more good scans out of it before everything goes pear-shaped again. I could live with this if I only did the occasional scan, but I scan on a regular basis.
@ -626,7 +627,7 @@ The word ``hacker'' has a lot of definitions, and if you google it, you'll find
(And yes, there are bad people out there who use their advanced technical knowledge to attain access to systems that they shouldn't have in order to obtain information they're not supposed to have. I'm not talking about those people, who technically should be called ``crackers,'' rather than ``hackers,'' a l\'{a} ``safe crackers''.)
Rather, I'm talking about the older meaning of the term ``hacker'' which is somebody who enjoys the intellectual challenge of pushing software (and often hardware) beyond what it is meant to do in order to achieve interesting and clever outcomes. In order to do so, of course, they have to know the systems they are working with fairly well. In fact, the definition of ``hack'' that I like best is ``an appropriate application of ingenuity.''\footnote{See \href{http://www.catb.org/~esr/jargon/html/meaning-of-hack.html}{\texttt{http://www.catb.org/~esr/jargon/html/meaning-of-hack.html}}.}
Rather, I'm talking about the older meaning of the term ``hacker'' which is somebody who enjoys the intellectual challenge of pushing software (and often hardware) beyond what it is meant to do in order to achieve interesting and clever outcomes. In order to do so, of course, they have to know the systems they are working with fairly well. In fact, the definition of ``hack'' that I like best is ``an appropriate application of ingenuity.''\footnote{See \href{http://www.catb.org/~esr/jargon/html/meaning-of-hack.html}{\texttt{http://www.catb.org/\textasciitilde esr/jargon/html/meaning-of-hack.html}}.}
Of course, this term originally referred to computer technology, but now I'm finding that people are using it everywhere, even in places where it doesn't belong. (I'm looking at you, the writers and editors of apparently every food magazine and website ever.)

View File

@ -1,21 +0,0 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}The Early Salad Days, continued}{4}{chapter.1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}

View File

@ -1,893 +0,0 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.9.5) 24 SEP 2021 18:42
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**codex-002.tex
(./codex-002.tex
LaTeX2e <2020-02-02> patch level 2
L3 programming layer <2020-02-14>
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2019/12/20 v1.4l Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option)
)
\c@part=\count167
\c@chapter=\count168
\c@section=\count169
\c@subsection=\count170
\c@subsubsection=\count171
\c@paragraph=\count172
\c@subparagraph=\count173
\c@figure=\count174
\c@table=\count175
\abovecaptionskip=\skip47
\belowcaptionskip=\skip48
\bibindent=\dimen134
)
(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2018/08/11 v1.3c Input encoding file
\inpenc@prehook=\toks14
\inpenc@posthook=\toks15
)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2020/01/20 v2.17e AMS math features
\@mathmargin=\skip49
For additional information on amsmath, use the `?' option.
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01 AMS text
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks16
\ex@=\dimen135
))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen136
)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2016/03/08 v2.02 operator names
)
\inf@bad=\count176
LaTeX Info: Redefining \frac on input line 227.
\uproot@=\count177
\leftroot@=\count178
LaTeX Info: Redefining \overline on input line 389.
\classnum@=\count179
\DOTSCASE@=\count180
LaTeX Info: Redefining \ldots on input line 486.
LaTeX Info: Redefining \dots on input line 489.
LaTeX Info: Redefining \cdots on input line 610.
\Mathstrutbox@=\box45
\strutbox@=\box46
\big@size=\dimen137
LaTeX Font Info: Redeclaring font encoding OML on input line 733.
LaTeX Font Info: Redeclaring font encoding OMS on input line 734.
\macc@depth=\count181
\c@MaxMatrixCols=\count182
\dotsspace@=\muskip16
\c@parentequation=\count183
\dspbrk@lvl=\count184
\tag@help=\toks17
\row@=\count185
\column@=\count186
\maxfields@=\count187
\andhelp@=\toks18
\eqnshift@=\dimen138
\alignsep@=\dimen139
\tagshift@=\dimen140
\tagwidth@=\dimen141
\totwidth@=\dimen142
\lineht@=\dimen143
\@envbody=\toks19
\multlinegap=\skip50
\multlinetaggap=\skip51
\mathdisplay@stack=\toks20
LaTeX Info: Redefining \[ on input line 2859.
LaTeX Info: Redefining \] on input line 2860.
)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
))
(/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty
Package: makeidx 2014/09/29 v1.0m Standard LaTeX package
)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks21
)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
)
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 105.
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
))
\Gin@req@height=\dimen144
\Gin@req@width=\dimen145
)
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/kpfonts.sty
Package: kpfonts 2010/08/20 v3.31
(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty
Package: textcomp 2020/02/02 v2.0n Standard LaTeX package
LaTeX Font Info: Changing ? sub-encoding to TS1/0 on input line 75.
)
\c@mv@rm=\count188
\c@mv@boldrm=\count189
\c@mv@sf=\count190
\c@mv@boldsf=\count191
LaTeX Font Info: Redeclaring symbol font `operators' on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
(Font) OT1/cmr/m/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
(Font) OT1/cmr/bx/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `rm'
(Font) OT1/cmr/m/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `boldrm'
(Font) OT1/cmr/m/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `sf'
(Font) OT1/cmr/m/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `boldsf'
(Font) OT1/cmr/m/n --> OT1/jkp/m/n on input line 354.
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
(Font) OT1/jkp/m/n --> OT1/jkp/b/n on input line 355.
LaTeX Font Info: Overwriting symbol font `operators' in version `rm'
(Font) OT1/jkp/m/n --> OT1/jkp/m/n on input line 357.
LaTeX Font Info: Overwriting symbol font `operators' in version `boldrm'
(Font) OT1/jkp/m/n --> OT1/jkp/b/n on input line 358.
LaTeX Font Info: Overwriting symbol font `operators' in version `sf'
(Font) OT1/jkp/m/n --> OT1/jkpss/m/n on input line 359.
LaTeX Font Info: Overwriting symbol font `operators' in version `boldsf'
(Font) OT1/jkp/m/n --> OT1/jkpss/b/n on input line 360.
LaTeX Font Info: Redeclaring math alphabet \mathrm on input line 364.
LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold'
(Font) OT1/jkp/m/n --> OT1/jkp/b/n on input line 365.
LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `rm'
(Font) OT1/jkp/m/n --> OT1/jkp/m/n on input line 366.
LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `boldrm'
(Font) OT1/jkp/m/n --> OT1/jkp/b/n on input line 367.
LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `sf'
(Font) OT1/jkp/m/n --> OT1/jkp/m/n on input line 368.
LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `boldsf'
(Font) OT1/jkp/m/n --> OT1/jkp/b/n on input line 369.
LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `rm'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `boldrm'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `sf'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `boldsf'
(Font) OT1/cmr/bx/n --> OT1/jkp/b/n on input line 378.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold'
(Font) OT1/jkp/b/n --> OT1/jkp/b/n on input line 379.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `rm'
(Font) OT1/jkp/b/n --> OT1/jkp/b/n on input line 381.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `boldrm'
(Font) OT1/jkp/b/n --> OT1/jkp/b/n on input line 382.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `sf'
(Font) OT1/jkp/b/n --> OT1/jkpss/b/n on input line 383.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `boldsf'
(Font) OT1/jkp/b/n --> OT1/jkpss/b/n on input line 384.
LaTeX Font Info: Redeclaring math alphabet \mathit on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal'
(Font) OT1/cmr/m/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold'
(Font) OT1/cmr/bx/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `rm'
(Font) OT1/cmr/m/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `boldrm'
(Font) OT1/cmr/m/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `sf'
(Font) OT1/cmr/m/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `boldsf'
(Font) OT1/cmr/m/it --> OT1/jkp/m/it on input line 390.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold'
(Font) OT1/jkp/m/it --> OT1/jkp/b/it on input line 391.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `rm'
(Font) OT1/jkp/m/it --> OT1/jkp/m/it on input line 393.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `boldrm'
(Font) OT1/jkp/m/it --> OT1/jkp/b/it on input line 394.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `sf'
(Font) OT1/jkp/m/it --> OT1/jkpss/m/it on input line 395.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `boldsf'
(Font) OT1/jkp/m/it --> OT1/jkpss/b/it on input line 396.
LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal'
(Font) OT1/cmss/m/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold'
(Font) OT1/cmss/bx/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `rm'
(Font) OT1/cmss/m/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `boldrm'
(Font) OT1/cmss/m/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `sf'
(Font) OT1/cmss/m/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `boldsf'
(Font) OT1/cmss/m/n --> OT1/jkpss/m/n on input line 401.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold'
(Font) OT1/jkpss/m/n --> OT1/jkpss/b/n on input line 402.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `rm'
(Font) OT1/jkpss/m/n --> OT1/jkpss/m/n on input line 403.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `boldrm'
(Font) OT1/jkpss/m/n --> OT1/jkpss/b/n on input line 404.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `sf'
(Font) OT1/jkpss/m/n --> OT1/jkpss/m/n on input line 405.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `boldsf'
(Font) OT1/jkpss/m/n --> OT1/jkpss/b/n on input line 406.
LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `rm'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `boldrm'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `sf'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `boldsf'
(Font) OT1/cmtt/m/n --> OT1/jkptt/m/n on input line 410.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold'
(Font) OT1/jkptt/m/n --> OT1/jkptt/b/n on input line 411.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `rm'
(Font) OT1/jkptt/m/n --> OT1/jkptt/m/n on input line 412.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `boldrm'
(Font) OT1/jkptt/m/n --> OT1/jkptt/b/n on input line 413.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `sf'
(Font) OT1/jkptt/m/n --> OT1/jkptt/m/n on input line 414.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `boldsf'
(Font) OT1/jkptt/m/n --> OT1/jkptt/b/n on input line 415.
LaTeX Font Info: Redeclaring symbol font `letters' on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `normal'
(Font) OML/cmm/m/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `bold'
(Font) OML/cmm/b/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `rm'
(Font) OML/cmm/m/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `boldrm'
(Font) OML/cmm/m/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `sf'
(Font) OML/cmm/m/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `boldsf'
(Font) OML/cmm/m/it --> OML/jkp/m/it on input line 423.
LaTeX Font Info: Overwriting symbol font `letters' in version `bold'
(Font) OML/jkp/m/it --> OML/jkp/bx/it on input line 424.
LaTeX Font Info: Overwriting symbol font `letters' in version `rm'
(Font) OML/jkp/m/it --> OML/jkp/m/it on input line 426.
LaTeX Font Info: Overwriting symbol font `letters' in version `boldrm'
(Font) OML/jkp/m/it --> OML/jkp/bx/it on input line 427.
LaTeX Font Info: Overwriting symbol font `letters' in version `sf'
(Font) OML/jkp/m/it --> OML/jkpss/m/it on input line 428.
LaTeX Font Info: Overwriting symbol font `letters' in version `boldsf'
(Font) OML/jkp/m/it --> OML/jkpss/bx/it on input line 429.
\symlettersA=\mathgroup6
LaTeX Font Info: Overwriting symbol font `lettersA' in version `bold'
(Font) U/jkpmia/m/it --> U/jkpmia/bx/it on input line 439.
LaTeX Font Info: Overwriting symbol font `lettersA' in version `rm'
(Font) U/jkpmia/m/it --> U/jkpmia/m/it on input line 441.
LaTeX Font Info: Overwriting symbol font `lettersA' in version `boldrm'
(Font) U/jkpmia/m/it --> U/jkpmia/bx/it on input line 442.
LaTeX Font Info: Overwriting symbol font `lettersA' in version `sf'
(Font) U/jkpmia/m/it --> U/jkpssmia/m/it on input line 443.
LaTeX Font Info: Overwriting symbol font `lettersA' in version `boldsf'
(Font) U/jkpmia/m/it --> U/jkpssmia/bx/it on input line 444.
LaTeX Font Info: Redeclaring math alphabet \mathfrak on input line 447.
LaTeX Font Info: Redeclaring symbol font `symbols' on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `normal'
(Font) OMS/cmsy/m/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `bold'
(Font) OMS/cmsy/b/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `rm'
(Font) OMS/cmsy/m/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `boldrm'
(Font) OMS/cmsy/m/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `sf'
(Font) OMS/cmsy/m/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `boldsf'
(Font) OMS/cmsy/m/n --> OMS/jkp/m/n on input line 456.
LaTeX Font Info: Overwriting symbol font `symbols' in version `bold'
(Font) OMS/jkp/m/n --> OMS/jkp/bx/n on input line 457.
LaTeX Font Info: Overwriting symbol font `symbols' in version `rm'
(Font) OMS/jkp/m/n --> OMS/jkp/m/n on input line 459.
LaTeX Font Info: Overwriting symbol font `symbols' in version `boldrm'
(Font) OMS/jkp/m/n --> OMS/jkp/bx/n on input line 460.
LaTeX Font Info: Overwriting symbol font `symbols' in version `sf'
(Font) OMS/jkp/m/n --> OMS/jkp/m/n on input line 461.
LaTeX Font Info: Overwriting symbol font `symbols' in version `boldsf'
(Font) OMS/jkp/m/n --> OMS/jkp/bx/n on input line 462.
LaTeX Font Info: Redeclaring symbol font `AMSa' on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `normal'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `bold'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `rm'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `boldrm'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `sf'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `boldsf'
(Font) U/msa/m/n --> U/jkpsya/m/n on input line 475.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `bold'
(Font) U/jkpsya/m/n --> U/jkpsya/bx/n on input line 476.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `rm'
(Font) U/jkpsya/m/n --> U/jkpsya/m/n on input line 477.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `boldrm'
(Font) U/jkpsya/m/n --> U/jkpsya/bx/n on input line 478.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `sf'
(Font) U/jkpsya/m/n --> U/jkpsya/m/n on input line 479.
LaTeX Font Info: Overwriting symbol font `AMSa' in version `boldsf'
(Font) U/jkpsya/m/n --> U/jkpsya/bx/n on input line 480.
LaTeX Font Info: Redeclaring symbol font `AMSb' on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `normal'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `bold'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `rm'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `boldrm'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `sf'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `boldsf'
(Font) U/msb/m/n --> U/jkpsyb/m/n on input line 528.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `bold'
(Font) U/jkpsyb/m/n --> U/jkpsyb/bx/n on input line 529.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `rm'
(Font) U/jkpsyb/m/n --> U/jkpsyb/m/n on input line 530.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `boldrm'
(Font) U/jkpsyb/m/n --> U/jkpsyb/bx/n on input line 531.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `sf'
(Font) U/jkpsyb/m/n --> U/jkpsssyb/m/n on input line 532.
LaTeX Font Info: Overwriting symbol font `AMSb' in version `boldsf'
(Font) U/jkpsyb/m/n --> U/jkpsssyb/bx/n on input line 533.
\symsymbolsC=\mathgroup7
LaTeX Font Info: Overwriting symbol font `symbolsC' in version `bold'
(Font) U/jkpsyc/m/n --> U/jkpsyc/bx/n on input line 549.
LaTeX Font Info: Overwriting symbol font `symbolsC' in version `rm'
(Font) U/jkpsyc/m/n --> U/jkpsyc/m/n on input line 551.
LaTeX Font Info: Overwriting symbol font `symbolsC' in version `boldrm'
(Font) U/jkpsyc/m/n --> U/jkpsyc/bx/n on input line 552.
LaTeX Font Info: Overwriting symbol font `symbolsC' in version `sf'
(Font) U/jkpsyc/m/n --> U/jkpsyc/m/n on input line 553.
LaTeX Font Info: Overwriting symbol font `symbolsC' in version `boldsf'
(Font) U/jkpsyc/m/n --> U/jkpsyc/bx/n on input line 554.
LaTeX Font Info: Overwriting math alphabet `\mathscr' in version `bold'
(Font) U/jkpsyd/m/n --> U/jkpsyd/bx/n on input line 583.
LaTeX Font Info: Overwriting math alphabet `\mathscr' in version `rm'
(Font) U/jkpsyd/m/n --> U/jkpsyd/m/n on input line 585.
LaTeX Font Info: Overwriting math alphabet `\mathscr' in version `boldrm'
(Font) U/jkpsyd/m/n --> U/jkpsyd/bx/n on input line 586.
LaTeX Font Info: Overwriting math alphabet `\mathscr' in version `sf'
(Font) U/jkpsyd/m/n --> U/jkpsyd/m/n on input line 587.
LaTeX Font Info: Overwriting math alphabet `\mathscr' in version `boldsf'
(Font) U/jkpsyd/m/n --> U/jkpsyd/bx/n on input line 588.
LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `rm'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `boldrm'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `sf'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `boldsf'
(Font) OMX/cmex/m/n --> OMX/jkp/m/n on input line 598.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold'
(Font) OMX/jkp/m/n --> OMX/jkp/bx/n on input line 599.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `rm'
(Font) OMX/jkp/m/n --> OMX/jkp/m/n on input line 601.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `boldrm'
(Font) OMX/jkp/m/n --> OMX/jkp/bx/n on input line 602.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `sf'
(Font) OMX/jkp/m/n --> OMX/jkpss/m/n on input line 603.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `boldsf'
(Font) OMX/jkp/m/n --> OMX/jkpss/bx/n on input line 604.
\symlargesymbolsA=\mathgroup8
LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `bold'
(Font) U/jkpexa/m/n --> U/jkpexa/bx/n on input line 615.
LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `rm'
(Font) U/jkpexa/m/n --> U/jkpexa/m/n on input line 617.
LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `boldrm'
(Font) U/jkpexa/m/n --> U/jkpexa/bx/n on input line 618.
LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `sf'
(Font) U/jkpexa/m/n --> U/jkpexa/m/n on input line 619.
LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `boldsf'
(Font) U/jkpexa/m/n --> U/jkpexa/bx/n on input line 620.
LaTeX Info: Redefining \not on input line 1580.
)
(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
Package: geometry 2020/01/02 v5.9 Page Geometry
(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
Package: iftex 2019/11/07 v1.0c TeX engine tests
))
\Gm@cnth=\count192
\Gm@cntv=\count193
\c@Gm@tempcnt=\count194
\Gm@bindingoffset=\dimen146
\Gm@wd@mp=\dimen147
\Gm@odd@mp=\dimen148
\Gm@even@mp=\dimen149
\Gm@layoutwidth=\dimen150
\Gm@layoutheight=\dimen151
\Gm@layouthoffset=\dimen152
\Gm@layoutvoffset=\dimen153
\Gm@dimlist=\toks22
)
(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer
s
\f@nch@headwidth=\skip52
\f@nch@O@elh=\skip53
\f@nch@O@erh=\skip54
\f@nch@O@olh=\skip55
\f@nch@O@orh=\skip56
\f@nch@O@elf=\skip57
\f@nch@O@erf=\skip58
\f@nch@O@olf=\skip59
\f@nch@O@orf=\skip60
)
(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty
Package: multicol 2019/12/09 v1.8y multicolumn formatting (FMi)
\c@tracingmulticols=\count195
\mult@box=\box47
\multicol@leftmargin=\dimen154
\c@unbalance=\count196
\c@collectmore=\count197
\doublecol@number=\count198
\multicoltolerance=\count199
\multicolpretolerance=\count266
\full@width=\dimen155
\page@free=\dimen156
\premulticols=\dimen157
\postmulticols=\dimen158
\multicolsep=\skip61
\multicolbaselineskip=\skip62
\partial@page=\box48
\last@line=\box49
\maxbalancingoverflow=\dimen159
\mult@rightbox=\box50
\mult@grightbox=\box51
\mult@gfirstbox=\box52
\mult@firstbox=\box53
\@tempa=\box54
\@tempa=\box55
\@tempa=\box56
\@tempa=\box57
\@tempa=\box58
\@tempa=\box59
\@tempa=\box60
\@tempa=\box61
\@tempa=\box62
\@tempa=\box63
\@tempa=\box64
\@tempa=\box65
\@tempa=\box66
\@tempa=\box67
\@tempa=\box68
\@tempa=\box69
\@tempa=\box70
\@tempa=\box71
\@tempa=\box72
\@tempa=\box73
\@tempa=\box74
\@tempa=\box75
\@tempa=\box76
\@tempa=\box77
\@tempa=\box78
\@tempa=\box79
\@tempa=\box80
\@tempa=\box81
\@tempa=\box82
\@tempa=\box83
\@tempa=\box84
\@tempa=\box85
\@tempa=\box86
\@tempa=\box87
\@tempa=\box88
\@tempa=\box89
\@tempa=\box90
\c@minrows=\count267
\c@columnbadness=\count268
\c@finalcolumnbadness=\count269
\last@try=\dimen160
\multicolovershoot=\dimen161
\multicolundershoot=\dimen162
\mult@nat@firstbox=\box91
\colbreak@box=\box92
\mc@col@check@num=\count270
)
(/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty
\wrapoverhang=\dimen163
\WF@size=\dimen164
\c@WF@wrappedlines=\count271
\WF@box=\box93
\WF@everypar=\toks23
Package: wrapfig 2003/01/31 v 3.6
)
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX
(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO
)
(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
)
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode found.
)
(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
)
(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
)
(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO)
)
\@linkdim=\dimen165
\Hy@linkcounter=\count272
\Hy@pagecounter=\count273
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO)
Now handling font encoding PD1 ...
... no UTF-8 mapping file for font encoding PD1
)
(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
)
(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
)
\Hy@SavedSpaceFactor=\count274
\pdfmajorversion=\count275
Package hyperref Info: Hyper figures OFF on input line 4547.
Package hyperref Info: Link nesting OFF on input line 4552.
Package hyperref Info: Hyper index ON on input line 4555.
Package hyperref Info: Plain pages OFF on input line 4562.
Package hyperref Info: Backreferencing OFF on input line 4567.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4800.
\c@Hy@tempcnt=\count276
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip17
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 5159.
\XeTeXLinkMargin=\dimen166
(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
)
))
\Fld@menulength=\count277
\Field@Width=\dimen167
\Fld@charsize=\dimen168
Package hyperref Info: Hyper figures OFF on input line 6430.
Package hyperref Info: Link nesting OFF on input line 6435.
Package hyperref Info: Hyper index ON on input line 6438.
Package hyperref Info: backreferencing OFF on input line 6445.
Package hyperref Info: Link coloring OFF on input line 6450.
Package hyperref Info: Link coloring with OCG OFF on input line 6455.
Package hyperref Info: PDF/A mode OFF on input line 6460.
LaTeX Info: Redefining \ref on input line 6500.
LaTeX Info: Redefining \pageref on input line 6504.
(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO)
)
\Hy@abspage=\count278
\c@Item=\count279
\c@Hfootnote=\count280
)
Package hyperref Info: Driver (autodetected): hpdftex.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX
(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO)
Package atveryend Info: \enddocument detected (standard20110627).
)
\Fld@listcount=\count281
\c@bookmark@seq@number=\count282
(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
86.
)
\Hy@SectionHShift=\skip63
)
(/usr/share/texlive/texmf-dist/tex/latex/tabto-ltx/tabto.sty
Package: tabto 2018/12/28 v 1.4 Another tabbing mechanism
\CurrentLineWidth=\dimen169
\TabPrevPos=\dimen170
)
(/usr/share/texlive/texmf-dist/tex/generic/ulem/ulem.sty
\UL@box=\box94
\UL@hyphenbox=\box95
\UL@skip=\skip64
\UL@hook=\toks24
\UL@height=\dimen171
\UL@pe=\count283
\UL@pixel=\dimen172
\ULC@box=\box96
Package: ulem 2019/11/18
\ULdepth=\dimen173
)
(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode
\l__kernel_color_stack_int=\count284
\l__pdf_internal_box=\box97
)
(build/codex-002.aux)
\openout1 = `codex-002.aux'.
LaTeX Font Info: Checking defaults for OML/jkp/m/it on input line 74.
LaTeX Font Info: Trying to load font information for OML+jkp on input line 7
4.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omljkp.fd
File: omljkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OMS/jkp/m/n on input line 74.
LaTeX Font Info: Trying to load font information for OMS+jkp on input line 7
4.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omsjkp.fd
File: omsjkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for OMX/jkp/m/n on input line 74.
LaTeX Font Info: Trying to load font information for OMX+jkp on input line 7
4.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/omxjkp.fd
File: omxjkp.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for U/jkpexa/m/n on input line 74.
LaTeX Font Info: Trying to load font information for U+jkpexa on input line
74.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpexa.fd
File: ujkpexa.fd 2006/08/15 v1.0
)
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 74.
LaTeX Font Info: ... okay on input line 74.
LaTeX Font Info: Trying to load font information for OT1+jkp on input line 7
4.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ot1jkp.fd
File: ot1jkp.fd 2007/08/30 Fontinst v1.928 font definitions for OT1/jkp.
)
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count285
\scratchdimen=\dimen174
\scratchbox=\box98
\nofMPsegments=\count286
\nofMParguments=\count287
\everyMPshowfont=\toks25
\MPscratchCnt=\count288
\MPscratchDim=\dimen175
\MPnumerator=\count289
\makeMPintoPDFobject=\count290
\everyMPtoPDFconversion=\toks26
) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
85.
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
*geometry* verbose mode - [ preamble ] result:
* driver: pdftex
* paper: custom
* layout: <same size as paper>
* layoutoffset:(h,v)=(0.0pt,0.0pt)
* modes: twoside
* h-part:(L,W,R)=(36.135pt, 325.215pt, 36.135pt)
* v-part:(T,H,B)=(36.135pt, 542.02501pt, 36.135pt)
* \paperwidth=397.48499pt
* \paperheight=614.295pt
* \textwidth=325.215pt
* \textheight=469.75502pt
* \oddsidemargin=-36.135pt
* \evensidemargin=-36.135pt
* \topmargin=-37.0pt
* \headheight=12.0pt
* \headsep=25.0pt
* \topskip=10.0pt
* \footskip=30.0pt
* \marginparwidth=121.0pt
* \marginparsep=11.0pt
* \columnsep=10.0pt
* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
* \hoffset=0.0pt
* \voffset=0.0pt
* \mag=1000
* \@twocolumnfalse
* \@twosidetrue
* \@mparswitchtrue
* \@reversemarginfalse
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
\AtBeginShipoutBox=\box99
Package hyperref Info: Link coloring OFF on input line 74.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section
(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
)
(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count291
)
LaTeX Info: Redefining \ref on input line 74.
LaTeX Info: Redefining \pageref on input line 74.
LaTeX Info: Redefining \nameref on input line 74.
(build/codex-002.out) (build/codex-002.out)
\@outlinefile=\write3
\openout3 = `codex-002.out'.
LaTeX Font Info: Trying to load font information for U+jkpsya on input line
76.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsya.fd
File: ujkpsya.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpsyb on input line
76.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsyb.fd
File: ujkpsyb.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpmia on input line
76.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpmia.fd
File: ujkpmia.fd 2006/08/15 v1.0
)
LaTeX Font Info: Trying to load font information for U+jkpsyc on input line
76.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ujkpsyc.fd
File: ujkpsyc.fd 2006/08/15 v1.0
) [1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
LaTeX Font Info: Trying to load font information for TS1+jkp on input line 7
8.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ts1jkp.fd
File: ts1jkp.fd 2007/08/30 Fontinst v1.928 font definitions for TS1/jkp.
)
<images/ncsa4-0.png, id=15, 88.33pt x 31.11626pt>
File: images/ncsa4-0.png Graphic file (type png)
<use images/ncsa4-0.png>
Package pdftex.def Info: images/ncsa4-0.png used on input line 80.
(pdftex.def) Requested size: 30.91595pt x 10.89084pt.
LaTeX Font Info: Trying to load font information for OT1+jkptt on input line
82.
(/usr/share/texlive/texmf-dist/tex/latex/kpfonts/ot1jkptt.fd
File: ot1jkptt.fd 2007/01/26 Fontinst v1.928 font definitions for OT1/jkptt.
) [2 <./images/ncsa4-0.png>] (build/codex-002.toc)
\tf@toc=\write4
\openout4 = `codex-002.toc'.
[3
]
Chapter 1.
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 96.
[4
]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 96.
(build/codex-002.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 96.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 96.
Package rerunfilecheck Info: File `codex-002.out' has not changed.
(rerunfilecheck) Checksum: <no file>.
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 96.
)
Here is how much of TeX's memory you used:
8413 strings out of 483140
119254 string characters out of 5965152
372586 words of memory out of 5000000
23234 multiletter control sequences out of 15000+600000
572253 words of font info for 113 fonts, out of 8000000 for 9000
36 hyphenation exceptions out of 8191
34i,10n,45p,496b,336s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texlive/texmf-dist/fonts/enc/dvips/kpfonts/kpfonts-expert.enc}{/u
sr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texlive/tex
mf-dist/fonts/type1/public/kpfonts/jkpbn8a.pfb></usr/share/texlive/texmf-dist/f
onts/type1/public/kpfonts/jkpmit8a.pfb></usr/share/texlive/texmf-dist/fonts/typ
e1/public/kpfonts/jkpmn8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/public
/kpfonts/jkpmne.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/kpfonts/j
kpttmn8a.pfb>
Output written on build/codex-002.pdf (4 pages, 45444 bytes).
PDF statistics:
63 PDF objects out of 1000 (max. 8388607)
49 compressed objects within 1 object stream
8 named destinations out of 1000 (max. 500000)
14 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -1 +0,0 @@
\BOOKMARK [0][-]{chapter.1}{The Early Salad Days, continued}{}% 1

Binary file not shown.

Binary file not shown.

View File

@ -1 +0,0 @@
\contentsline {chapter}{\numberline {1}The Early Salad Days, continued}{4}{chapter.1}%

View File

@ -1,12 +1,12 @@
\documentclass[twoside]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
%\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
%\makeindex
\usepackage{graphicx}
\usepackage{kpfonts}
\usepackage{float}
\raggedbottom
% Where are our images?
@ -24,8 +24,8 @@
% Adjust the top and bottom margins
% http://kb.mit.edu/confluence/pages/viewpage.action?pageId=3907057
\addtolength{\topmargin}{0.5in}
\addtolength{\textheight}{-1in}
\addtolength{\topmargin}{0.4in}
\addtolength{\textheight}{-0.75in}
% Set the header style
% https://www.overleaf.com/learn/latex/Headers_and_footers
@ -48,10 +48,12 @@
\counterwithout{footnote}{chapter}
% Let's wrap some images
% https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
\usepackage{wrapfig}
% Do we want to include URLs?
\usepackage{hyperref}
% Yes, but we also want to hide the big red box it puts around them in the pdf. Thanks /u/0b0101011001001011
\usepackage[hidelinks]{hyperref}
% Use tab stops when we need to (especially in footnotes)
\usepackage{tabto}
@ -61,6 +63,35 @@
% Use strikethrough
\usepackage{ulem}
% Style a blockquote
% 2021.11.22 -- Not really sure I need this anymore.
% See https://tex.stackexchange.com/questions/325695/how-to-style-blockquote
% \usepackage{etoolbox}
% \usepackage{setspace} % for \onehalfspacing and \singlespacing macros
% See also https://www.overleaf.com/learn/latex/Typesetting_quotations
% Make things neater. Thanks /u/-LeopardShark-
\usepackage{microtype}
% Put a horizontal rule in an align environment
% This is just for the page numbers/scanning picture
\usepackage{booktabs}
% Use line numbers with code samples
% \begin{Verbatim}...\end{Verbatim} <-- Note the capitalization!
\usepackage{fancyvrb}
\raggedbottom
% Pictures!
\usepackage{tikz}
% Cancel units in math mode!
\usepackage{cancel}
% Use nice fractions
\usepackage{nicefrac}
\author{Kenneth John Odle}
\title{
{\Huge the codex} \\
@ -69,28 +100,847 @@
Typeset in \LaTeX{} \\
Issue \#002}
}
\date{\begin{small}2021.10.01\end{small}}
\date{\begin{small}\today{}\end{small}}
\begin{document}
\maketitle
\section*{Impressum}
All contents \copyright2021 Kenneth John Odle
All contents \copyright2022 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, since this is licenced under a CC BY-NA-SA 4.0 Creative Commons license. More information is at \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{https://creativecommons.org/licenses/by-nc-sa/4.0/}. \includegraphics[scale=0.35]{ncsa4-0}
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 \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{\texttt{https://creativecommons.org/licenses/by-nc-sa/4.0/}} \includegraphics[scale=0.35]{ncsa4-0}
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 (\href{https://pdfbooklet.sourceforge.io/wordpress/}{\texttt{https://pdfbooklet.sourceforge.io/wordpress/}}).
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 (\href{https://pdfbooklet.sourceforge.io/wordpress/}{\texttt{https://pdfbooklet.sourceforge.io/wordp \\ ress/}}).
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}: \texttt{https://git.kjodle.net/kjodle/the-codex}. New issues will be pushed after they are complete.
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.
You can just skip over all the diversions in 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.
The buttons are from the Button Optimizer website, which is here: \href{https://buttonoptimizer.com/}{\texttt{https://buttonoptimizer.com/}}. I'm not sure if I like this concept or not. We'll have to see. (Note from the future: turns out I'm not keen.)
\medskip
\noindent \textbf{Errata:} To err is human, to document those errors is divine. A list of errata can be found at \href{https://git.kjodle.net/kjodle/the-codex/wiki/Errata}{\texttt{https://git.kjodle.net/kjodle/the-codex/wiki/Err \\ ata}}.
\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.
The pictures of a Commodore 64 is courtesy of Bill Bertram. It was published at \href{https://commons.wikimedia.org/wiki/File:Commodore64.png}{\texttt{https://commons.wikimedia.org/wiki/File:Commodore64.pn\\g}} where you can also find the Creative Commons 2.5 license it was licensed under. I did slightly crop the top and bottom to make it fit better. LaTeX didn't care. The picture of a Commodore 128 is courtesy of Evan-Amos, and was published at \href{https://commons.wikimedia.org/wiki/File:Commodore-128.jpg}{\texttt{https://commons.wikimedia.org/wiki/File:Commodo\\re-128.jpg}}, where you can find the Creative Commons 3.0 license it was licensed under.
\tableofcontents
\chapter{The Early Salad Days, continued}
\chapter{The Later Salad Days}
Boring, early life stuff when my world smelled like sweat and disinfectant and room temperature bologna. Feel free to skip this. I wish I could.
\section{The Joy of Commodore 64}
The first computer I ever owned (and thus could use whenever I wanted to, provided it did not annoy the adults in the house) was a Commodore-64. (And yes, my use of this machine seemed to bug adults no end, and I have no idea why. I guess the same adults who thought it was a waste of time playing video games simply thought that a computer is another, more expensive type of video game. The lesson I learned here is to try to get some knowledge before you jump to criticism.)
The ``64'' stood for 64 kilobytes, which was the amount of memory it had. If you've never heard of a kilobyte before, and are wondering how many gigabytes that is, it's time for some math, and also introductory computer science.
Hold on. You've never heard of a \textit{kilobyte}? Wow, either we've really moved along, or I'm old, or both. Probably both. My knees hurt in the morning. Yeah, probably both.
Computers are just a series of switches. Each switch is a \textit{bit}. Eight bits make up a \textit{byte}, which is enough memory to remember a single character.\footnote{ See \href{https://web.stanford.edu/class/cs101/bits-bytes.html}{\texttt{https://web.stanford.edu/class/cs101/bits-bytes.html}} for more information.} Since each bit is just a one or a zero, there are 256 possible different characters you can record in a byte. (Mathematically, it works out to $ 2^n $ possible combinations. Since in this case $n=8$, then we have $2^8=256$ different combinations of ones and zeroes.\footnote{ To see the actual combinations, visit \href{https://user.eng.umd.edu/~nsw/chbe250/number.htm}{\texttt{https://user.eng.umd.edu/$\sim$nsw/chbe250/numbe \\ r.htm}}, and to see which characters those numbers translate to, see \href{https://www.rapidtables.com/code/text/ascii-table.html}{\texttt{https://www.rapidtables \\ .com/code/text/ascii-table.html}}.})
Time for some math, which looks like this:
\begin{scriptsize}
\begin{tabular}{r c c c c c l}
& & & & & 1~byte &= 8~bits \\
& & & 1 kb &=& 1,024 bytes &= 8,192 bits \\
& 1 MB &=& 1,024 kb &=& 1,048,576 bytes &= 8,388,608 bits \\
1 GB =& 1,024 MB &=& 1,048,576 kb &=& 1,073,741,824 bytes &= 8,589,934,592 bits
\end{tabular}
\end{scriptsize}
\bigskip
If you don't trust my math, check out \href{https://www.matisse.net/bitcalc/}{\texttt{https://www.matisse.net/bit \\ calc/}}, which is where I did this math. It's actually kind of fun, and they get bonus points for including the source code of the perl script behind this sorcery.
Anyway, I'm driving a laptop now that has 8 GB of memory in it. (And I've seriously considered upgrading it to 16 GB). A gigabyte is equal to 1,048,576 kilobytes. The math (and heck, let's use dimensional analysis because it's fun) looks like this:
\[
8\text{ \cancel{GB}} \times \frac{1,048,576 \text{ \cancel{kb}}}{1 \text{ \cancel{GB}}} \times \frac{1 \text{ Commodore 64}}{64 \text{ \cancel{kb}}} = 16,384 \text{ Commodore 64's}
\]
So the computer I'm on now has as much memory as 16,384 of the computer I had when I was 13 years old. If that doesn't seem like a lot to you, I paid \$175 for my current computer (used) in 2016, and paid \$200 (new) for a Commodore 64 in 1981. That's \$3,276,800 in 1981 dollars, which is the equivalent of \$8,651,869.50 in 2016 dollars, respectively. I didn't have three million dollars when I was thirteen, and I certainly don't have over eight million dollars now. Sadly.\footnote{Check out \href{https://www.in2013dollars.com/us/inflation/1981}{\texttt{https://www.in2013dollars.com/us/inflation/1981}} for the actual numbers.}
\medskip
\hrule
\medskip
\textbf{Oh look, it's a diversion}
\begin{multicols}{2}
If you've studied the metric system, you know that \textit{kilo-} is a prefix that means a ``a thousand'' and \textit{mega-} is a prefix that means ``a million.''
Hold on. (Again.)
1,024 is \textit{not} a thousand, and 1,048,576 is \textit{not} a million. For my entire life, we've just walked right past this and pretended that we didn't notice. Doing science stuff? \textit{kilo} is a 1,000 and \textit{mega} is a million. Doing computer stuff? Then \textit{kilo} means 1,000\textit{ish} and \textit{mega} means a million\textit{ish}. Move along now, nothing to see here.
That discrepancy should bug you. It bugs me, but I also have bills to pay, so when someone asks ``\textit{how much} does it bug you?'' my honest answer is that I've worked \textit{very} hard to not let it bug me all that much.
But still.
Fortunately, it also bugged the International Electrotechnical Commission (an international standards commission whose job it is to standardize things) enough so that they introduced a few new terms in 1998.\footnote{The standard is ISO/IEC 80000, section 13. This standard is all about the International System of Quantities, and if you're into that sort of thing, it is utterly \textit{fascinating} reading. I'm not being facetious here---humans measure \textit{everything}, and this document describes how we do it.} \textbf{Kibibyte} means \textit{exactly} 1,024 bytes, and not one byte more, not one byte less. \textbf{Mebibyte} is exactly 1,048,576 bytes. And so on with gibibytes, tebibytes, and pebibytes. They are all some form of $2^n$, which means they \textit{accurately} describe just how many bytes we're talking about here.
The following table is filled with much beauty:
\vspace{-12pt}
\begin{small}
\begin{align*}
1~kibibyte~(ki) &= 1,024~bytes \\
1~mebibyte~(Mi) &= 1,024^2~bytes \\
1~gibibyte~(Gi) &= 1,024^3~bytes \\
1~tebibyte~(Ti) &= 1,024^4~bytes \\
1~pebibyte~(Pi) &= 1,024^5~bytes \\
\end{align*}
\end{small}
\vspace{-12pt}
I can at last sleep soundly.
\end{multicols}
\medskip
\hrule
\medskip
Let's get back to our story.
I purchased this computer from the back of a K-Mart, in much the same way the men in the small town I grew up in went to the back of the video store to rent porn. I guess it's fair to say that I lusted after this computer (although a much different form of lust) so the comparison is apt.
\begin{wrapfigure}[]{h}{0.5\textwidth}
\vspace{-12pt}
\includegraphics{c64-scaled}
\vspace{-12pt}
\end{wrapfigure}
Unfortunately, when you bought a computer in those days you got exactly that in the box: a computer. There was no monitor, there was no disk drive, there was no printer. You just got a computer in a box with a power supply. I had scrimped and saved forever to buy this, and had fortunately also managed to save enough for a monitor, which in those days was a big, heavy cathode-ray tube device (CRT, for short). One of the selling points of the C-64 was that it was portable. You could just pick it up and take it with you. (It seems like all computers in the movies back in the day either took up entire rooms or buildings---think Hal-9000 in \textit{2001: A Space Odyssey}---or were something you could carry in your hand---think the tricorders in \textit{Star Trek}. We've never managed a happy medium.) The monitor, however, was anything \textit{but} portable. It was heavy, it was bulky, and it was fragile. Slam a lid closed on a modern laptop and everything will probably be fine. Knock a CRT off the table and it's toast. If it lands on your foot, you'll probably end up with a broken foot.
The second computer I ever owned was a Commodore 128. Whereas its predecessor only had 64 kb of memory, the C-128, as we called it, had a whopping 128 kb of memory—twice the memory for nearly the same price. While the C-64 could only run in the 1 Mhz\footnote{megahertz—a measure of a computer's computing speed} mode, the C-128 could run in 1 Mhz mode or 2 Mhz mode, but such were the demands on its resources that running in 2 Mhz mode meant the screen would go blank—it simply didn't have the power to process that fast and display that processing on the screen at the same time. For comparison, I just pulled up a cheap Lenovo laptop on Best Buy's website that has an Intel i3 processor with 8 GB of memory and a 256 GB solid state drive and is on sale for \$389. It has a clock speed of three \textit{gigahertz}.
\begin{wrapfigure}[]{l}{0.5\textwidth}
\vspace{-12pt}
\includegraphics{c128-scaled}
\vspace{-12pt}
\end{wrapfigure}
Unlike the C-64, which was round and bulky, the C-128 was slim and sleek. In fact, one of its selling points was its portability, and I recall seeing a brochure where a college student is walking around campus with one under his arm. What they left out of that illustration, of course, is his friend dragging a little red wagon with a very large and very heavy CRT monitor in it, along with an incredibly heavy power source. They were portable in theory, but not in any practical manner. But compared to a mainframe that took up an entire room or building, it was light years ahead of its time. And I \textit{felt} like that, too, like this computer was going to take me places where I would be light years ahead of where I was then.\footnote{It didn't, because you need so much more than just a computer to get ahead. You need resources, you need people who believe in what you're doing and support you, and you need people who can point you in the direction of the next step. If you don't have those things, you're not a visionary with a bright future ahead of him, you're just a nerd with a computer.}
Like I said, the laptop I am using now has 8 GB of memory, which is a lot more than 128 kb of memory. But how much more? It's difficult for most people to visualize numbers, especially when they are orders of magnitude apart, and looking at raw numbers doesn't give our brains much to latch onto. We need to \textit{visualize} these numbers, which is why I used money earlier. But because I like math and most people like food, let's visualize these numbers a different way: through food.\footnote{A\&W once tried to launch a $\nicefrac{1}{3}$ pound burger to compete with McDonald's quarter-pounder, the idea being you get more meat for the same price. But it didn't sell because people thought a third of a pound was less than a fourth of a pound. (Again, the metric system for the fucking win.) They could get $4>3$, but they couldn't understand $\nicefrac{1}{4}<\nicefrac{1}{3}$. See \href{https://awrestaurants.com/blog/aw-third-pound-burger-fractions}{\texttt{https://awrestaurants.com/blog/aw-third-pound-burger-fractions}} for the full story.}
Let's assume that those 128 kb of memory are equivalent to one happy childhood meal. Maybe it's your dad cooking out on the weekend, or your Nonna making homemade meatballs, or maybe it's not a childhood meal; it's just you and your significant other sitting on the futon enjoying spaghetti Lady and the Tramp style. Pick whatever meal you love, that you think you could eat every day. That meal is the equivalent of those 128 kb of memory.
We've already established that there are 1,048,576 kilobytes in a single gigabyte. Let's do some more math.
\[
\frac{1,048,576 \text{ kb/Gb}}{128 \text{ kb/meal}} = 8,192 \text{ meals}
\]
That means that for every single gigabyte of my modern laptop's memory, you could eat that meal once a day for 8,192 days. Since there are 365 days in a year, we'll do the math again:
\[
\frac{8,192 \text{ \cancel{meals}}}{1 \text{ Gb}} \times \frac{1 \text{ \cancel{day}}}{1 \text{ \cancel{meal}}} \times \frac{1 \text{ year}}{365 \text{ \cancel{days}}} = 22.44 \text{ years/Gb}
\]
I hope you really like that meal, because you're going to be eating it every day for the next 22.44 years. Oh, but wait, that's for \textit{one} gigabyte. My laptop has eight. A bit more math tells me that you'll be eating this meal for $22.44 \times 8 = 179.6$ years. Oof, not only is it tasty, but it's also life-extending.
\section{High School Computer Class}
I went to high school in a very small,\footnote{We had one stoplight when I left there in 1990. I visited a few years ago, and they are now up to three stoplights. Progress.} very rural, very midwestern small town. My graduating class was 55 people, 51 of which actually managed to show up to graduation. (I showed up to graduation with a black eye, but that's another story for another zine. Also, our class president got on a plane the day after graduation, flew to California, and moved to a pot farm. Progress. That's the story, anyway.) We only had two high school science teachers: Mr. Fusko, who taught all the biology classes and Mr. Dick, who taught chemistry, physics, and advanced mathematics.\footnote{His real name; I'm not kidding. His first name was Joe, which means that I learned a lot of chemistry, physics, and advanced mathematics from Joe Dick. He was the nicest guy in the world, though. I can't remember the name of the math class I had with him my senior year. It was probably Finite Math, but who knows? I don't remember anything about matrices, but it damn sure wasn't an accounting class.}
Mr. Dick also taught computers.
This was the mid 1980s, and my very small, very rural, very redneck-laden high school had a computer lab. In reality, it wasn't an \textit{actual} computer lab. It was just a room where they took all the student desks out, replaced them with chairs and tables, and plopped computers on them. Our high school had been built in the 1960s, when computers took up an entire wing of a building. Nobody thought to design a classroom with more than four outlets in those days, so there were extension cords everywhere.
Still, it had computers in it, and that's what counts.
I don't know if I actually was able to take a computer class with Mr. Dick or not. I remember spending a lot of time in that room, but as a nerdy kid with a crap family and not much of a social life, it's only natural that I would have migrated here during my free time before school, after school, during lunch hour, or whenever I decided to skip class (which was often) or whenever I wasn't leading a meeting of the Millard Fillmore Fan Club.\footnote{See my other zine, \textit{just13} issue \#3 for more details} I remember that this room had a \textit{lot} of Trash-80s in it, with their dark silver metallic cases and black highlights, but it also had five or six CP/M machines in it, with their off-white cases and their neon green displays. (Does anybody remember CP/M? Does anybody remember laughter?\footnote{You may remember this from a Led Zeppelin song, but I always remember the version by \textit{Dread} Zeppelin. It's one of the few cases where I feel the cover is better than the original.}
Anyway, if I did take a computer class with Mr. Dick, it was a very pale experience compared to my seventh grade experience,\footnote{See the first issue of this zine.} because I don't remember it at all. No doubt there was a curriculum\footnote{Not a bad thing when well done, but years of teaching experience have proven to me that most curricula are largely designed to take any and all fun out of learning, to say nothing of teaching.} for the class, complete with quizzes, assignments, tests, and long lists of vocabulary to memorize. It would have been completely dreadful and I would have hated it, and would have naturally forced all remnants of it from my memory, so that I would have room for lots of terrible memories from lots of terrible jobs.
Here's the flip side though. Let's assume I \textit{didn't} have a computer class with Mr. Dick. In that case, what I have are very fond memories of a room that I should not have had access to but was welcome to. For a very narrow slice of the space-time continuum, there a place where I was welcomed and people were okay with me just wandering around and pushing buttons.\footnote{I have for a very long time wanted to write a science fiction story about an alien race who loves pushing buttons so much that they build devices that are essentially just buttons to push that do absolutely nothing. Imagine a PlayStation controller without the actual PlayStation.}
Considering the huge problem that the modern tech industry faces with inclusivity and diversity, I feel pretty lucky to have had that opportunity. We need to create more of these places. Maker spaces are becoming a thing, and I hope that they are as warm and inviting as I remember that high school computer lab to be. Tech should open a lot of doors for a lot of people who normally find themselves locked out of opportunities, but tech is \textit{expensive} and these costs are gatekeepers in too many instances.\footnote{Which is one reason that I am interested in getting a Raspberry Pi and playing around with it, but in this case, I lack time, not money.}
If Oprah were really interested in changing the world, instead of handing out cars to a few hundred members of her studio audience,\footnote{Watch it while it lasts: \href{https://www.youtube.com/watch?v=pviYWzu0dzk}{\texttt{https://www.youtube.com/watch?v=pviYWzu0dzk}}} she should be handing out Raspberry Pis and Arduinos to hundreds of thousands of poor kids. But her viewers understand cars, not Raspberry Pis and Arduinos, and Oprah does not do what is good for society, but what is good for her bottom line. (The real privilege in getting a free car from Oprah is that you are able to actually take time off from your job and your life and go to Chicago to attend a taping of her show. But nobody really thinks about \textit{that}.) \footnote{You want to know who does a lot of good for people, but doesn't make it all about herself? Dolly Parton, that's who. Dolly Parton is a saint. We truly don't deserve her. Forget Zod. Kneel before Dolly.}
It saddens me that we are now at a price point where technology should be able to transform the lives of millions of people, and free them from the situation they are in now. I know a lot of people say that kids are so much more comfortable with technology now, but this really isn't a great thing. When I was a kid, you used technology to change your life. There wasn't a lot of technology, so it basically boiled down to learning how to use an extremely slow computer to do tasks you'd rather not do, using a VCR to record shows so that you could watch them at a later time, and duplicating cassettes and creating mix-tapes. As I grew into young adulthood and started teaching, I saw kids doing exactly that.\footnote{Of course, these were the kids whose parents had the money to buy a computer and pay for access to the internet, neither of which were cheap in the early 90s.} Mix-tapes were replaced by mix-CDs. You could manipulate technology to improve your life, and when you were done, you shut if off and called it a day.
Now it's the other way around: technology manipulates you and you \textbf{can't} shut it off. Websites (I'm thinking of Amazon here, as they are the best at it, but plenty of other websites do this as well) now \textit{tell} you what you want to buy. You can buy things on subscription so that you don't have to think any more.\footnote{It can be devilishly tricky to actually unsubscribe from some of these things, to the point where it's easier just to absorb the expense (we can always get the kids vaccinated \textit{next} year) and just decide that this is how we live now.} Streaming services control what you watch or listen to. No longer can you just walk into a record store or a video store and get what you actually want. No longer will people experience the serendipity of walking into a store and finding a movie or album that becomes a huge part of their life. (I've discovered some of my favorite books that way. I truly believe certain objects just call to you.\footnote{I know that's kind of woo-woo, and I am not into a lot of woo-woo stuff. Maybe it's more just a matter of getting out of the house and walking around with our eyes open.})
People have become addicted to their phones in a way I'd never imagined possible. (If you are ahead of me at a red light, and the light turns green, but you don't go because you don't notice that the light is now green because you're looking at your phone—I \textit{will} let you know that the light is now green and you can proceed through the intersection. Believe me, you \textit{will} know.)
Advertisements are everywhere, on every app, on every streaming service.\footnote{Including mindfulness meditation apps—see the back cover.} They are constantly telling you that you need this product or this service, and it has become very difficult to screen that out, so much so that even drunk purchasing is now a substantial part of the economy.\footnote{\href{https://www.finder.com/drunk-shopping}{\texttt{https://www.finder.com/drunk-shopping}}, \href{https://www.marketwatch.com/story/amazon-is-prime-territory-for-drunk-shoppers-2019-03-25}{\texttt{https://www.marketwatch.com/story/ \\ amazon-is-prime-territory-for-drunk-shoppers-2019-03-25}}, \href{https://www.techtimes.com/articles/240241/20190326/drunk-us-adults-spend-48-billion-shopping-online-and-amazon-is-so-happy-about-it.htm}{\texttt{https://www.techtim \\ es.com/articles/240241/20190326/drunk-us-adults-spend-48-billion-shopping-online-and-amazon-is-so-happy-about-it.htm}}.} Before, you had to leave your house to get manipulated into buying something, now you don't even have to leave the house. You can literally shop yourself out of house and home without ever leaving your house or your home.
What was promulgated as a potential servant, ever willing and able to come to our assistance, has now become our master. For more about this, I've created a YouTube playlist that you can watch here:
\medskip
\begin{center}
\href{https://kjodle.info/techincharge}{\texttt{https://kjodle.info/techincharge}}
\end{center}
\medskip
What strikes me most about some of the videos in the the playlist I've linked above is that the emphasis on using technology is always that it will free up our time to spend time improving ourselves and relaxing. It's amazing how in many ways, we've far surpassed the technological capacities we imagined earlier, but rather than freeing up our time to improve ourselves (in true \textit{Star Trek} style), we are merely slaves to our own creations. I shudder to think how ``Hotel California'' has become a daily reality for so many of us. But do any of us really have more spare time as a result of technology today? (I would like to think that as a species we are intelligent enough to do that, but the fact there there is a patch of plastic the size of Texas floating around in the middle of the Pacific Ocean tells me otherwise. "Out of sight, out of mind" is meant to be a warning, not permission to shift blame.)
It needn't be that way, however. If more of us had been able to experience what I experienced in that seventh grade computer class, perhaps our relationship to technology today would be different. Perhaps we would realize that, like the wheel or fire, technology is a tool to help us improve our lives, not to be led around by it. Of course, look at what we've done with both wheels and fire—we are destroying each other and ourselves as well with them. Perhaps we never should have climbed down out of the trees onto the grassy savanna.
I don't know. It seems that our philosophy, or at the very least, our ethics, surrounding technology and what we do with it always lags far behind the cutting edge of that technology. If there are other species in the universe that have managed to travel faster than the speed of light, certainly they \textit{must} have come to a philosophical decision about the role of technology in their daily lives.\footnote{Which explains why we only get visited by the butt probe aliens now. All the other aliens in the universe have given up on us.}
\chapter{A Scanner Clearly, or More Thoughts on Being an Archivist}
In the first issue of this zine, I wrote about a basic workflow for archiving books through scanning them into pdf files. While I covered just about everything I wanted to cover on the computer end of things, I barely talked at all about the physical labor that goes into scanning a book. For those who are interested, here's what happens behind the scenes before you even get to the computer.
\section{The Non-Computer Stuff}
First, you have to cut the book apart, and then separate the pages from the bindings. Older books are generally signature bound, and so it's simply a matter of cutting the backing off the signatures, cutting any strings holding them together, and then separating the signatures. This sounds easy, but it's a lot of work. If the book is perfect bound (i.e., individual pages are glued together, rather than signatures), it's just a matter of separating the pages very carefully a few pages at a time.
Second, you then have to trim the bound edges, so that the pages are separate. Perfectly bound books tend to have glue creeping up between each page, whereas signature bound books tend to have glue only creeping up between the signatures. I have a paper trimmer that allows me to clamp the pages down so that they don't move as I cut them, and I highly recommend something similar. It also has a measured grid to the left, so that I can ensure I'm cutting all the pages to the same width. (\textbf{Protip:} Put a piece of painter's tape on the grid to make this even easier.)
\begin{center}
\includegraphics[scale=0.5]{paper_cutter}
\end{center}
After that, separate your pages into groups of equal numbers of pages that you will scan. This should be however many sheets your scanner can handle easily at one time, and will depend largely on the kind of paper the book was printed on. I generally find ten sheets (i.e., 20 pages) work well, and make it easier for me to count. Smaller groups means more work up front, but it also means that it is easier to fix things when (not \textit{if}) something goes wrong.
Number all of your groups with the filename they will eventually have. I use a pencil and mark this lightly (or not so lightly, depending on the day) in the lower right corner of the first page:
\begin{center}
\includegraphics[scale=0.5]{number_your_sections}
\end{center}
This is all about workflow for me. Since my scanner (a Brother MFC-J8050DW) scans whatever is facing \textit{down} in the document feeder, after I scan the first (i.e., odd-numbered) side, I should see odd numbers facing up in the ADF. I then know that I need to scan the side that is now facing down, which means that I don't turn them over, I just rotate them 180\textdegree{} in the \textit{xy}-plane.
Most books have unnumbered pages. This should go without saying, but it's one of those things that you don't think about until after it becomes an issue: \textit{number all the blank pages}. Again, I just use a pencil:
\begin{center}
\includegraphics[scale=0.5]{number_blank_pages}
\end{center}
Once you do all of this, you're ready to scan. You should have a pile of stuff that looks something like this:
\begin{center}
\includegraphics[scale=0.5]{ready_to_scan}
\end{center}
As it turns out, if you have a couple of pages that bleed to the middle\footnote{Generally because of a photograph or illustration that continues across both the left and right pages.}, you can pretend that they don't and simply trim those pages the same size as all your other pages. Or, if you want to preserve that bleed, you'll have to remove those sheets \textit{before} you trim the edges, and separate them very carefully down the middle. If you are lucky, they are in the middle of a signature, and you can separate them with a sharp knife. If you are not lucky, they will be somewhere else, and may have glue holding them together, meaning you have to very carefully prise them apart. No matter how carefully you do this, you will inevitably lose some data.
You will end up with two sheets (i.e., four pages) that are a different size, and which will need to be scanned separately. In which case, it's good to use a cheat sheet to keep track of which groups are which sizes and how many pages are contained in each. I like to just jot this down on an index card, but if the book you are scanning is complex, you'll need a bigger sheet of paper.
\begin{center}
\includegraphics[scale=0.5]{cheat_sheet}
\end{center}
You can do this math as a check on the final project.
\begin{align*}
001-015 &= 15 \times 20 & 300 \mbox{ pages} \\
016 &= 1 \times 4 & 4 \mbox{ pages} \\
016-024 &= 8 \times 20 & 160 \mbox{ pages} \\
025 &= 1 \times 12 & 12 \mbox{ pages} \\
\midrule
\mbox{Total} & & 476 \mbox{ pages}
\end{align*}
After you are done scanning and combining files, you can open that final \texttt{file.pdf} and you should be on page 1 of 476 pages.
Now we are \textit{finally} ready to start scanning.
\section{What Does This Have to do With Linux?}
You may be wondering why I am spending so much time talking about using scissors and pencils and rulers when this is a zine about Linux. Sure, this is what I need to do to get ready to scan and put all those scans together using the command line application \texttt{pdftk}, but what is the point here?
If you recall back in the first issue, I said that doing things on the command line makes you think about \textit{outcomes}. Thinking about outcomes doesn't matter just on the computer. Like I said earlier, there is no ``undo'' button in real life.\footnote{Although I sometimes think that lawyers are just rich people's Undo buttons.} Once you've cut something apart, there's no putting it back together. You \textit{have} to think about what you want the next step of the process to be so that you don't do something in this step that makes the next step afterward difficult or even impossible. You have to think ahead about what you want to end up with. You have to know what you want.\footnote{And here I readily admit that you are probably going to do this a few times before you figure out a process for getting to that point. The workflow I laid out in section 2.1 took a few books to develop.}
I sometimes think that a GUI is like the menu at the McDonald's drive through.\footnote{It's no wonder that the menu in a GUI is called a \textit{menu}, when you think about it.} If you are lucky, you are behind the person that knows what they want. They planned ahead. They thought about the outcome they wanted (full stomach, happy taste buds) and chose something ahead of time that would get them to that outcome. But a lot of people (too many people, in my opinion\footnote{Just one of many reasons I don't eat fast food any more.} get up to that order screen and \textit{that's} when they decide to start thinking about outcomes. They are so used to seeing a menu in front of them that they can't even begin making a decision without seeing it.
And let's face it: the menu at McDonald's has not really changed in years. Yes, they have new things, but they also advertise the hell out of them when they do. How can you \textit{not} know about their new menu item if you watch more than 30 minutes of television a day? But again, a GUI does not encourage you to think. The command line does. And again: most people just don't like to think.\footnote{I admit, I like to think, but I don't like to think \textit{all the time}. Sometimes my brain needs a rest, so I make some popcorn and pull up something corny to watch on television for a while. But then my brain starts wandering, and I know it's time to get back to work.} They like the \textit{illusion} of choice, and that is what substitutes for thinking most of the time. ``What are you getting at McDonald's?'' is too often followed by ``I don't know; I'll think about it when we get there.''
Of course, if you are thinking about outcomes, chances are you don't eat fast food very often anyway, because the long term outcomes are obesity, heart disease, and hypertension. But damn, those fries are good!
\section{A GUI Solution}
For what it's worth, there is a GUI for \texttt{pdftk}. It's called PDF Chain and you can find it at \href{https://pdfchain.sourceforge.io/}{\texttt{https://pdfchain.sourceforge.io/}}.
Despite all my prattling on about the many advantages the command line has for your brain, I'm not opposed to using a GUI, actually. (I mean, I have Ubuntu installed on two machines and Kubuntu on a third---all GUIs that make Linux easier to use.) A GUI does make life easier in many ways, and what I like about one in a case like this is that if you're someone who has to manipulate pdf files rarely or only once, it's probably easier to just use a GUI than it is to learn the command line. Efficiency plays a role here, as well. If I'm going to use this all the time, it's definitely more efficient for me to learn the command line approach. But once or twice a year? Or only once ever? A GUI is much more efficient.
\textbf{tl;dr:} If you're only going to use a tool once, there's no issue with using the simplest tool required to get the job done. There's no point in being a command-line ascetic.
\begin{center}
\includegraphics[scale=0.47]{pdfchain_-_title}
\end{center}
\chapter{Make Life Easier with bash Aliases}
\includegraphics[scale=0.8]{intermediate}\footnote{Why is this here? See the chapter ``What's to Like About Linux?'' later on in this issue.}
\medskip
I'm not going to get into the difference between the command line, the terminal, and bash (the Bourne Again Shell, if you are interested.\footnote{You may not be, but after all, you are reading \textit{this} so you very well may be. I may talk about that in a future issue. (Also, it's called that whether or not you are interested in that. I know of very few things that have a conditional name.)}) For now, let's just assume that you know about \texttt{ctrl alt t} opening a terminal window to get you access to the command line.
If you are used to using the command line, chances are that you have a certain set of commands that you use a lot. For example, if you're pushing to your Github repos all the time, you probably are typing \texttt{git push origin main} quite often. You can create a bash alias that makes your life a lot easier.
Chances are, you will open the terminal in the root of your \texttt{Home} directory. You can tell by typing
\begin{verbatim}
$ pwd
\end{verbatim}
\texttt{pwd} stands for ``\texttt{print working directory}'' and shows you where you are. If you're in the home directory, you'll get something that looks like this:
\begin{verbatim}
/home/username
\end{verbatim}
\noindent{}where ``\texttt{username}'' is your login name. If you're \textit{not} in your home directory, you can get there with this command:
\bigskip
% We're doing it this way so we can get a better looking ~.
\noindent{}\verb=$ cd= $\sim$
\bigskip
\noindent{}The $\sim$~ is shorthand for your home directory. (If you are logged in to the terminal as your username, it takes to \texttt{/home/username}. If you are logged in to the terminal as \texttt{sudo}, it takes you to the \texttt{root} directory in the top level directory—where all those Linux directories are that we talked about in the last issue.)
We are looking for an invisible file, so execute this command:
\begin{verbatim}
$ ls -a
\end{verbatim}
\noindent{}The \texttt{ls} command will list visible files, the \texttt{-a} option shows all files, including the invisible ones.
We are looking for a file called \texttt{.bashrc}. If you have a lot of stuff installed, you may have to scroll around to find it. Once you find it, open it in a text editor. This is in your home directory, so you can use whatever text editor you want and no \texttt{sudo} privileges should be required.
If you want, scroll through it. There is some interesting stuff there. But we want to create aliases, so go to the end, and type
\begin{verbatim}
# my aliases
\end{verbatim}
\noindent{}The \verb=#= means that this line is a comment. We'll add our aliases beneath this line.\footnote{Let's stop and reflect for a moment on how important it is to add comments to whatever we work on. When you come back to this file in six months or two years and ask yourself ``Why is this here? Who wrote this?'' your comment will tell you. I often find it handy to include the date as well, and any url where I found something useful. Check the source code of the preamble to this document for examples.}
Let's use our Github example. Add the following line:
\begin{verbatim}
alias gpush="git push origin main"
\end{verbatim}
\noindent{}Save the file, and then go to one of your git repos, make some changes, and commit them. Then, when you want to push the changes to the remote repository, instead of typing \texttt{git push origin main} just type \texttt{gpush}. Your terminal will do the rest for you.
You can also execute bash scripts as well. In addition to a local backup on an external drive, I also backup the directories in my home drive to a remote storage location. To make life easy, I created a script (called, naturally, \texttt{backup.sh}) in each of those directories to back them up. To execute those backup scripts, I just need to go to that directory, open the directory in a terminal and type \texttt{./backup.sh}.
The problem here is that a lot of times, I'm not even in those directories when I'm saving files to them. I'm somewhere else. And to open the directory in my GUI and then open it in a terminal, or to open a terminal and then navigate to that directory, is a little \textit{too} much when I want to run that backup script. Remember, you want to back up soon, and you want to back up often. Backing up on that basis is a good habit to have. So let's remove as many obstacles to that habit as possible.\footnote{I am often amazed by how often people (myself included) want to form a new good habit (eat more fruit, get more exercise, etc.) and then put as many things as possible in the way of that habit. Again, it's because we're so used to the old, bad habit that we don't think. Sometimes we just need to get out of our own way.} In this case, we'll add an alias to run those backup scripts.
This is what I have in my \texttt{.bashrc} aliases:
\begin{verbatim}
alias kdoc="bash $HOME/Documents/backup.sh"
alias kdow="bash $HOME/Downloads/backup.sh"
alias kpic="bash $HOME/Pictures/backup.sh"
alias krec="bash $HOME/Recordings/backup.sh"
alias ktem="bash $HOME/Templates/backup.sh"
alias kvid="bash $HOME/Videos/backup.sh"
\end{verbatim}
Let's look at the first one. \texttt{kdoc} is the name of the alias. Since my first name is Ken, I prefix these with the letter \texttt{k} so I don't get them mixed up with something else. \texttt{bash} means to run this as a bash script. \texttt{\$HOME/Documents/backup.sh} means ``go to the \texttt{home} directory, then go to the \texttt{Documents} directory, and run this script called \texttt{backup.sh}''.
We can do other things as well. Log into your webhost via ssh a lot? Try this one:
\begin{verbatim}
alias kssh="ssh username@webhost.com"
\end{verbatim}
\noindent{}Replace ``\texttt{username}'' with your actual username and ``\texttt{webhost.com}'' with the actual host that you log into.
The next time you want to log into your host, just type \texttt{kssh} (or whatever you choose to call your command; the choice is yours as long as it doesn't conflict with a built-in bash command), and it will automatically ask for your password, as it has already sent your username to your host. You've now typed four characters instead of 24. Nifty, huh?
\newpage
\noindent{}This is probably my favorite, though:
\begin{verbatim}
alias kls="ls -Ahl"
\end{verbatim}
\noindent{}This gives us a directory listing, but with these options:
\begin{itemize}
\itemsep-0.4em
\item \texttt{A} lists all files and directories, including invisible ones (but excluding the . and .. directories\footnotemark).
\item \texttt{h} gives us file sizes in human readable sizes, i.e., ``4.0K'' instead of ``4096 bytes''.
\item \texttt{l} gives us the listing as a list, because I find that to be more readable, especially with a directory that contains a lot of stuff. I'd rather just scroll up and down than scroll up and down \textit{and} scroll right and left.
\end{itemize}
Again, I'm typing three keystrokes instead of seven. When you spend eight or more hours a day on the computer, whatever keystrokes you can save really start to add up.
\footnotetext{If you've ever wondered about what these are, here's a simple explanation. The . (dot) represents the current working directory, i.e., the one that you are in. The .. (dot dot) represents the parent directory, i.e., the directory that contains the directory you are currently in. Whenever you create a directory in a Unix-based system, it is added as a new entry to its parent directory, and these two entries (hard links) are created in the new directory. \\ \tabto{1.9em}\texttt{ls} and \texttt{ls .} are the same command: they give you the contents of the directory you are in. \texttt{ls ..} gives you the contents of the parent directory to the one you are in. It's the same as going up into your parent directory, getting a content listing, and then moving back into the child directory you were just in. And for what it's worth, you can do \texttt{ls ../..} to get the content listing of the grandparent directory. Nifty? Depends on how lost you are. \\ \tabto{1.9em}\texttt{cd ..} will move you up into your parent directory, whereas \texttt{cd .} moves you nowhere, because you are literally telling the terminal to change the directory to the current directory. It's a bit like changing into the underpants you are currently wearing. \\ \tabto{1.9em}Anyway, enough of the stupid human tricks.}
And that's it. Just about anything you type often on the command line can be turned into a bash alias to save you time. Go for it. It's a great way to manage your mischief.
\chapter{What Have I Installed?}
I've mentioned the Unix Principle before: each application should do one thing and do it really well. The advantage to this principle for end users is that you don't need to worry about installing (or even paying for) a huge app that does a million things when you only need it for doing one. The advantage for developers is that you don't \textit{need} to develop an app that does everything, so you can keep a laser-like focus on making an app that works really well.\footnote{Although there will always be those people who get your app for free and then complain that it \textit{doesn't} do everything. Hey bub, Swiss army knives are two aisles over and come with a price tag.}
The downside is that you are likely to install a lot of apps as a result. This is ordinarily not a problem, unless you are going to migrate to a new machine or are swapping out an HDD for an SSD. This is where I found myself in 2020 when Ubuntu 20.04 came out, and I decided to install a new SSD in my 2013 Asus laptop, replacing the 300 GB HDD it came with. Of course, I could simply clone the old HDD onto my new SSD and then swap them out and upgrade, but for reasons that are long, complicated, and very likely boring, I decided this would be as good a time as any to just start with a clean slate.
Again, normally this is not an issue. But I have a Behringer C-1U microphone that I use for podcasting, and it only works on Ubuntu if I have a particular piece of software installed. For the life of me I could not remember what it was, but it was installed on this laptop, so it ought to have been easy to find.
For what it's worth, any software package you install that has a graphical user interface will appear in your applications menu. (On Ubuntu, it's the "Show Applications" button in the lower left corner of your main screen.) But a lot of apps don't have a GUI—they're meant to be used from the command line. There isn't a graphical way to see a list of those. So we're off to the command line.\footnote{\textbf{Note:} What I'm describing in this section applies to Ubuntu and it's derivatives, since that's what I use and and most familiar with. Other flavors of Linux will probably have similar ways of doing what I'm going to talk about here.}
\section{apt}
Here's the command:
\begin{verbatim}
$ apt list --installed
\end{verbatim}
When I ran this on my newly upgraded version of Ubuntu 22.04 (Jammy Jellyfish) its output ran to 2,811 lines, starting with
\begin{footnotesize}
\begin{Verbatim}
accountsservice/jammy,now 22.07.5-2ubuntu1 amd64 [installed,automatic]
acl/jammy,now 2.3.1-1 amd64 [installed,automatic]
acpi-support/jammy,now 0.144 amd64 [installed,automatic]
acpid/jammy,now 1:2.0.33-1ubuntu1 amd64 [installed,automatic]
adduser/jammy,jammy,now 3.118ubuntu5 all [installed,automatic]
\end{Verbatim}
\end{footnotesize}
and ending with
\begin{footnotesize}
\begin{Verbatim}
zim/jammy,jammy,now 0.74.3-1 all [installed]
zip/jammy,now 3.0-12build2 amd64 [installed,automatic]
zlib1g-dev/jammy,now 1:1.2.11.dfsg-2ubuntu9 amd64 [installed,automatic]
zlib1g/jammy,now 1:1.2.11.dfsg-2ubuntu9 amd64 [installed,automatic]
zstd/jammy,now 1.4.8+dfsg-3build1 amd64 [installed,automatic]
\end{Verbatim}
\end{footnotesize}
So what's happening here? Let's take a look at the relevant part of the \texttt{man apt} file:
\begin{small}
\begin{quote}
list is somewhat similar to dpkg-query --list in that it can display a list of packages satisfying certain criteria. It supports glob(7) patterns for matching package names as well as options to list installed (--installed), upgradeable (--upgradeable) or all available (--all-versions) versions.
\end{quote}
\end{small}
This command is giving us a lot of output because it's showing \textit{everything} that was installed using the \texttt{apt} command. You might think that you haven't really installed that much stuff, but \texttt{sudo apt install} will sometimes install additional software needed to make the software you are actually interested in run. If you ever install something using \texttt{apt} and see a message like ``The following additional packages will be installed:'' those additional packages will appear when you use this command.
Remember those glob patterns? If you want to check to see whether a particular app is installed, you can pipe the output to \texttt{grep} and let it do the work. For example, let's see if I have ghostscript installed:
\begin{verbatim}
$ apt list --installed | grep ghostscript
\end{verbatim}
and because I do, I get this output:
\begin{footnotesize}
\begin{verbatim}
ghostscript-x/jammy,now 9.55.0~dfsg1-0ubuntu5 amd64 [installed,automatic]
ghostscript/jammy,now 9.55.0~dfsg1-0ubuntu5 amd64 [installed,automatic]
\end{verbatim}
\end{footnotesize}
\noindent \texttt{apt} also has a related command, called \texttt{apt-mark}:
\begin{verbatim}
$ apt-mark showmanual
\end{verbatim}
But more about that in a bit.
\section{dpkg}
If you want something a bit more tabular, you can always run
\begin{verbatim}
$ dpkg-query -l | less
\end{verbatim}
You will get a nice, very \textit{wide} table that shows you a list of all installed packages, their version, their architecture (amd64 and whatnot), and a short description. Unfortunately, the output is again huge. Outputting this to a text file produced 2,971 lines.
That short description is pretty handy however when you're rooting around in the \texttt{bin} folder and wondering what things do, actually. If you want to find out what a particular package does, you can again pipe its name to \texttt{grep}:
\begin{verbatim}
$ dpkg-query -l | grep ghostscript
\end{verbatim}
which gives us this:
\begin{footnotesize}
\begin{verbatim}
ii ghostscript 9.55.0~dfsg1-0ubuntu5 amd64 interpreter for the
PostScript language and for PDF
ii ghostscript-x 9.55.0~dfsg1-0ubuntu5 amd64 interpreter for the
PostScript language and for PDF - X11 support
\end{verbatim}
\end{footnotesize}
I don't find this very useful however, because again, that is formatted in a far wider table than most terminal windows (I took out a lot of extra space, and still had to wrap things onto a second line), and honestly, if you want to know what an app does, it's probably easier to just look it up on the web. (Still, it's rather useful to know that one of these packages is for X11 support.)
\section{snap}
If you use snap packages (which are controversial in some quarters), you can always see what you've installed by using this command:
\begin{verbatim}
$ snap list
\end{verbatim}
This is again displayed in a pretty wide table, but it also gives you the Version, the Revision, the Tracking status (``latest/stable'' in most cases), the Publisher (Canonical, Mozilla, etc), and Notes.
\section{flatpak}
If you use flatpak to install software, the command is similar to snap:
\begin{verbatim}
$flatpak list
\end{verbatim}
That's all I have. Sorry, but I have just haven't gotten around to using flatpaks. It's possible I never will.\footnote{The Candian comedy troupe The Kids in the Hall have a song called ``The Daves I know''. Look it up on YouTube, and when it gets to the part about Dave Capisano, the mechanic (``I hardly know him'') that's where I am with flatpak.}
\section{The Real Issue}
The real problem with all of these approaches is that none of them do a very good job of telling what you actually want to know: which software packages did I \textit{deliberately} install? And that's because computers aren't smart. (They also aren't stupid. They just \textit{are}.) They only know what you tell them. They have no idea what you \textit{mean}.
In fact, I found a page on StackExchange\footnote{\href{https://askubuntu.com/questions/17823/how-to-list-all-installed-packages}{\texttt{https://askubuntu.com/questions/17823/how-to-list-all-installed-packages}}} that was first asked in December 2010 and was last modified in March 2022, has 24 answers, and has been viewed 4.6 million times. There simply isn't a way (that I could find, at least) to figure this out easily. Even something as straightforward as \texttt{\$apt-mark showmanual} still shows a lot of programs that I \textit{technically} installed myself, simply because I updated from 20.04 to 22.04 via the command line.
\newpage
\noindent \textit{Meet my friend, Occam.}
\medskip
The irony is that the Unix Principle came out in the 1970s, but in the early 1960s the US Navy came out with a different, yet similar, principle called KISS: keep it simple, stupid.
This means that instead of looking backward (i.e., ``What did I install a year ago when I was several beers deep?") we should be looking forward (i.e., ``What am I about to install, and then possibly remove, while I am completely sober and trying to solve a problem that is currently driving me up the wall and so once I've solved it, I will be so happy to have solved it that I will immediately forget what I did to solve it?").
The solution is simple: \textit{write it down}.
When I upgraded this computer, I also bought a new desk for it, and I threw a notebook in the drawer. Whenever I install something, I make a note of it in the notebook. If I delete it a few days or months later, I add a note of when I deleted it and why. (That ``why'' is important. I may be able to remember the problem that particular piece of software solved, and may not remember the rat's nest of problems it went on to create for me.)
\begin{center}
\includegraphics[scale=0.4]{notebook}
\textit{\footnotesize{Of course I would select a black notebook and a black desk. \\ Let's use \textbf{all} the toner.}}
\end{center}
Sure, you could just keep a list on your computer (text files if you want to keep it simple, or you could just \texttt{<shudder>}use a spreadsheet as a database\texttt{</shudder>}. But if your computer fails, then your list fails. Sometimes paper really is the best way to go.
Of course, I've also just purchased a RocketNotebook and have been experimenting with that, and maybe storing my scribbles in the cloud is the way to go. We shall see.
\chapter{What's to Like About Linux?}
% \includegraphics[scale=0.23]{Unix_timeline_en}\footnote{From \href{https://commons.wikimedia.org/wiki/File:Unix\_timeline.en.png}{\texttt{https://commons.wikimedia.org/wiki/File:Unix\_timeline.en.png}}}
I have an app on my phone called ``The Stoic'' that shows quotations from various Stoic philosophers. As I was working on this issue, this popped up:
\begin{small}
\begin{quote}
Because a thing seems difficult for you, do not think it impossible for anyone to accomplish.
\begin{flushright}
---\textbf{Marcus Aurelius}
\end{flushright}
\end{quote}
\end{small}
When I first thought about doing the second issue of this zine, I thought it would be really cool if I included some sort of key to any tutorial that I include, that tells you if this is a beginner level tutorial, an intermediate level tutorial, or an advanced level tutorial. If you peek at the beginning of chapter three, you'll see a button that looks like this:
\medskip
\noindent \includegraphics[scale=0.8]{intermediate}
\medskip
\noindent Like it? I have a couple more:
\medskip
\noindent \includegraphics[scale=0.8]{beginner} \hspace{1cm}
\includegraphics[scale=0.8]{advanced}
\medskip
\noindent But the more I thought about it, the more I began to think that this is \textbf{not} a good idea. There are a couple of reasons for this.
First, who am \textit{I} to decide if something is beginner, intermediate, or advanced level, especially when it comes to computers? I'm not an expert in all things computers, much less all things Linux. The most I can say is that ``Oh, yeah, this is one of the first things I learned how to do'' which \textit{implies} that it's a beginner level. But it might not be. It's just where \textit{I} started. Somebody else might start somewhere else, in a place that I didn't bother to get around to for years, and which I tend to think of as intermediate or advanced level. But to them, it's where they started, and so they'll also think of it as beginner level. LaTeX has been around for a long time, but it always seemed very advanced to me. As it turns out, it's not difficult to learn. (Although like most things, learning a thing and mastering a thing are very different activities.) Things can be difficult if you don't have the proper tools for them, but does that mean they're advanced?
Second, these words are highly contextual. What does ``beginner'' even mean? Someone who's just sat down to a computer for the first time in their life? Or someone who's been working on computers since they were ten years old, but are just now beginning to learn LaTeX? These words are easier to define in other areas, such as sports or music, where you have to learn to skate before you can play hockey, and you have to learn scales and chords before you can play music.\footnote{Although I am not an expert in either of these things, and maybe it is possible to learn hockey and music without learning how to skate or learning scales and chords first. To each their own.} Computers are the great levelers of walls and fences, provided, of course, that you have access to one.
Third, people may self-select out of things. Many years ago, I taught computer classes at my local community education center.\footnote{One of the things I learned is that is a right way and a wrong way to teach people how to use computers. I should write about that sometime.} It was a tremendous amount of fun, both for me and my students, who came from all walks of life.\footnote{Or as many walks of life as one could find in this one-stoplight town.} They were \textit{occassionally} intimidated by certain things, but for the most part, they were eager to learn as much as they could.
The class was extremely inexpensive, but it was rarely ever full, which made me wonder why more people didn't take this class. There are two answers here. First, this was the early 90s and a lot of people didn't even have computers at home, so what would be the point for them? (You don't need a car if you have no place to go.) Second, a lot of people were terribly intimidated by computers, because they thought you had to be really smart to use them. So they self-selected out of something they were perfectly capable of learning because they thought it was too advanced for them.\footnote{People are really afraid of making mistakes and looking stupid, but that's a by-product of our public education industrial complex. You can't learn \textit{anything} without making mistakes. In fact, people who are truly experts about things often point out that they learn as much or more from their mistakes than they do from their successes. But we have turned making mistakes into something to be ashamed of, rather than something which will help us learn and understand things. Fuck that attitude. Go forth and make mistakes. (Just not in the voting booth.)} Let's encourage people to self-select \textit{in}, rather than out, because once they get here they'll have a lot of fun. Let's not be gatekeepers.
Fourth, it implies that there is a hierarchy, which I hate. There are many ways in. Because math is so strongly allied to computer science, we tend to view learning about computers as hierarchical as well.\footnote{I think this is one of the reasons that most people aren't good at math and don't like math. Sure, you need to know \textit{some} algebra to do geometry, but you don't need to be an algebra expert. If you really like geometry, and are encouraged to apply yourself to it, you'll eventually learn all the algebra you need. The same is true of trigonometry and even calculus. You don't need to become an expert in those earlier forms of math; you only have to become good enough at them to move on to the next step. People who write math curricula should take note, but they won't.} But that just isn't the case. I started learning how to write BASIC when I was in sixth grade because that's all that was available to us. But basic BASIC is no different than basic Fortran, or basic Cobol, really. The only difference is that BASIC is fairly limited in scope, which was, sadly, all that was deemed appropriate for kids. It's like giving kids little fake plastic tools when they really want to build something. Put the kids in a sandbox with real tools and turn them loose: let them experiment with them and figure out how they work. But we never do that.\footnote{This is, coincidentally, the same sort of thinking that doesn't like sex education, despite the many studies that have shown, conclusively and repeatedly, that when kids have access to high-quality, non-biased sex education, the rates of teen pregnancy and teen STDs decrease, often dramatically. (It's silly. A little learning can help you know what to do, but it can also help you know what \textit{not} to do. Sure, some people need to burn their hand to learn that the stove is hot, but the vast majority of us can learn just by watching others howl in pain from a burned hand. Pictures are worth a thousand words. Moving pictures are worth a million words.)}
I don't want to be a gate-keeper. I want to be a gate-opener. In fact, I want to be a crusher of gates. There is no single path. You have to find your own path. Find your mentors, and carve your own trail. This isn't about ego. Knowledge is not pie. There's plenty for everybody.
\chapter{Ubuntu 22.04}
I've been with Ubuntu for a while now, and generally get pretty excited about new releases. Ubuntu 22.04 was no different. Until I installed it, that is.
Ubuntu 22.04 is without a doubt the most bug-filled LTS\footnote{Long Term Support} version of Ubuntu I have ever used.
First, they have removed Python2. If you have any applications which depend on Python2, such as PDF Booklet,\footnote{Which is what I use to make the physical form of this zine. See \href{https://pdfbooklet.sourceforge.io/wordpress/}{\texttt{https://pdfbooklet.so\\urceforge.io/wordpress/}} for more information.} those tools are now unusable. And despite numerous attempts to reinstall Python2 just to make this one app work, I have thus far been unsuccessful.
Second, there is this weird problem with saving files from \textit{any} browser. You can pick a folder to download to, and from that point on in your session, this is the only folder you can download items to. Sure, you can migrate to a different folder and try to download there, and it looks like you're actually saving your file there, but nothing gets downloaded. You can look at the folder and at your download history and quite plainly see that there is nothing there.\footnote{See \href{https://askubuntu.com/questions/1406265/ubuntu-22-04-firefox-does-not-download-file-to-desktop}{\texttt{https://askubuntu.com/questions/1406265/ubuntu-22-04-firefox-does-not-download-file-to-desktop}} and \href{https://askubuntu.com/questions/1406674/cant-download-files-after-upgrade-to-22-04}{\texttt{https://askubuntu.com/questions/1406674/cant-download-files-after-upgrade-to-22-04}}} As it turns out, if you click on the \textit{filename} in the save dialogue box (and therefore give it focus), then you can change where you download the file to.
This is an odd bug to allow to get through, as for the longest time the question ``What does everyone use Internet Explorer for?'' was answered by ``To download an actual web browser.'' I guess you can always use Ubuntu to download a version of Linux which is not plagued by such obvious mistakes.
Third, the default video player (Totem) cannot play .mp4 files.\footnote{See \href{https://askubuntu.com/questions/1406254/after-installing-ubuntu-22-04-the-default-video-player-is-unable-to-play-any-vi}{\texttt{https://askubuntu.com/questions/1406254/after-installing-ubuntu-22-04-the-default-video-player-is-unable-to-play-any-vi}}.} Yes, I know that .mp4 is not strictly open source (as some of the codecs are patented) and I also know that you can install these codecs with \texttt{\$ sudo apt install ubuntu-restricted-extras}, but if you have a phone, or a video camera, they probably record video as .mp4 files, and it would be nice if you could see view them on your computer.
Fourth, the new screen capture tool in the Gnome desktop is an absolute disaster. It requires you to go through a ``screenshot portal'' each and every time you create a screenshot, \textit{regardless} of which screenshot tool you use. It's ridiculous, as I (and many other users) already had a workflow for screenshots, and this is not acceptable in an open-source operating system (which actually makes me wonder how ``open-source'' open-source software actually is). Of course, people are upset, because this is a solution in search of a problem to solve. I have no idea why \textit{anybody} thought this was a good feature to include. And of course, the developers have closed off any discussion of this topic.\footnote{See \href{https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1970}{\texttt{https://gitlab.gnome.org/GNOME/gnome-shell/-/merge\_requests/1970}}, \href{https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4895}{\texttt{https \\://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4895}}, and \href{https://github.com/flatpak/xdg-desktop-portal/issues/649}{\texttt{https://github.com/fl \\ atpak/xdg-desktop-portal/issues/649}}.} Listen, if a lot of people complain, you should listen to them. If a lot of people complain, and complain vehemently, then it's probably because you fucked up really badly.
I've lived and worked with Ubuntu for several years now. And until 22.04, I've always been extremely happy with each new release and upgraded as soon as it was available. And I've always upgraded without regret. I guess that is now a thing of the past.
Look, I get that you want to keep to a release schedule. But we had a global health crisis in the middle of that. I would have been okay if you had said ``Yeah, mate, we get you're more concerned about your family's well-being. We are too. So this release is going to be six months/a year/two years/what-the-fuck-ever behind.'' I would have been \textit{so} okay with that.
But I'm not okay with Ubuntu 22.04. It is an utter embarrassment. How it was ever released without consideration of these issues is beyond my comprehension. I used to recommend Ubuntu to all my friends, and now I don't. I just can't. I myself am embarrassed about these issues. Do yourself a favor and avoid Ubuntu 22.04 until these issues (and no doubt other issues I'm not aware of) are addressed and fixed.
\chapter{Coda}
\section{What I Learned About \LaTeX{} While Creating This Issue}
As a big part of the reason I created this zine was to learn more about LaTeX, I'm keeping up with this running list.
\begin{enumerate}
\item Need a little horizontal space? Use \verb|\hphantom{<stuff>}| where \texttt{<stuff>} is any standard unit. (I use this down below to separate the two images with borders when they are on the same line.)\footnote{There is more information on spacing at \href{https://latexref.xyz/Spaces.html}{\texttt{https://latexref.xyz/Spaces.html}} and also at \href{https://tex.stackexchange.com/questions/74353/what-commands-are-there-for-horizontal-spacing/74354}{\texttt{https://tex.stackexchange.com/questions/74353/what-commands-are-there-for-horizontal-spacing/74354}}.}
\item Need a box around an \verb|\includegraphics[scale=•]{}| item? Just wrap it in \verb|\frame{}|. (Ditto.)
\item Want a blockquote? Use the \texttt{quote} environment. (I wrapped mine in a \texttt{small} environment to help set it off, as most blockquotes or indented quotations use a slightly smaller font in traditional printed material.\footnote{Yes, it bugs me when people use the word \textit{quote} as a noun, but the usage is here to stay, so I shall learn to live (somewhat begrudgingly) with it.})
\item You can draw with the \texttt{tikz} package. You can also draw chemical structures with the \texttt{chemdraw} package. I have no idea how to write about those things on paper in an interesting way, so it may be some time (or never---never is always an option) before I get around to that. But there's an example at the end.
\item You can also draw just using the \texttt{picture} environment.\footnote{There is a good tutorial at \href{https://www.overleaf.com/learn/latex/Picture_environment}{\texttt{https://www.overleaf.com/learn/latex/Picture\_environ \\ ment}}.}
\item As with most things that *nix-based, there is usually more than one way to get to where you are going. Often, there are many ways, and they lead you down paths you hadn't even imagined. A little research goes a long way. (See the next two sections as examples of this. I had not even thought about this before I sat down to write this.)
\item There are ten characters that have special meaning in \LaTeX{}. \\ \\ To typeset: \\ \tabto{3.5cm} \& \% \$ \# \_ \{ \} \\ \\ you have to prepend them with a backslash (\textbackslash). \\ \\ To typeset: \\ \tabto{3.5cm} \textasciitilde \hspace{2mm} \textasciicircum \hspace{2mm} \textbackslash \\ \\ you have to use the macros \verb|\textasciitilde|, \verb|\textasciicircum|, and \verb|\textbackslash|.
\end{enumerate}
\subsection{\LaTeX{} Without a GUI}
Despite my blathering on about the benefits of the command line, I'm actually using a GUI editor called Texmaker (which you can find at \href{https://www.xm1math.net/texmaker/}{\texttt{https://www \\ .xm1math.net/texmaker/}}). This seemed the easiest way to learn LaTeX at the time, because all you have to do to get a readable pdf is to press \texttt{F1}.
But you don't need to go that route. You can do this entirely from the command line. Simply create a LaTeX document in any text editor, and save it with a \texttt{.tex} extension. From that point, simply run the following command in a terminal:
\begin{verbatim}
$ latex file.tex
\end{verbatim}
This command should generate the following files:
\begin{verbatim}
file.dvi
file.aux
file.log
\end{verbatim}
\texttt{file.aux} contains information your document needs to manage any cross-references in your document. \texttt{file.log} contains information about how your file was processed; if you run into errors, this is a good place to find a solution, or at least to find what to search the internet for. But it's the \texttt{file.dvi} file that we're interested in.
\texttt{.dvi} files are device independent files. They're a lot like PostScript or PDF, but \textit{without} font embedding. To convert this to a pdf file, run the following command:
\begin{verbatim}
$ dvipdf file.dvi
\end{verbatim}
This should generate \texttt{file.pdf} which you can read in any document viewer. You may need to install \texttt{dvipdf}---on my system (Ubuntu 20.04 at the time) it was not installed.
You can also just run \texttt{pdflatex} (which again, you may have to install), which skips over making a \texttt{.dvi} file:
\begin{verbatim}
$ pdflatex file.tex
\end{verbatim}
This should generate the following files:
\begin{verbatim}
file.aux
file.log
file.pdf
\end{verbatim}
I have noticed that when I generate the pdf file using the former method, I get a much smaller file than I do the second time. As an experiment, I ran the \texttt{integral.tex} file that I created later in the next section through both of these methods. Running the file through \texttt{latex} and then through \texttt{dvipdf} resulted in a pdf file that was only 7.0 kb in size. But when I ran it solely through \texttt{pdflatex}, I ended up with a pdf file that was 30.5 kb big. This is most likely due to a difference in compression methods\footnote{See this for more information: \href{https://tex.stackexchange.com/questions/38145/why-does-pdflatex-produce-bigger-output-files-than-latexdvipdfm}{\texttt{https://tex.stackexchange.com/questions/38145/why \\ -does-pdflatex-produce-bigger-output-files-than-latexdvipdfm}}} so this could make a difference for you if you are working with large documents.
Go forth and manage your mischief.
\subsection{Custom Page Sizes}
Okay, this is important enough that it deserves its own section.
Part of what makes \LaTeX{} great is that it's really good at typesetting mathematical formulas, such as
\includegraphics[scale=1]{pythagorean_theorem}
Here's the thing, though: I didn't create that formula in this document. It's just an image. I created it in a separate LaTeX document, using a custom page size. This can be handy if you want to use it in something that doesn't typeset math formulas, such as a presentation.\footnote{PowerPoint much? As much as I try to avoid PP, it seems to have gained something akin to Favored Nation Status in the business world. Such is life, alas.}
The source code looks like this:
\begin{Verbatim}[numbers=left,numbersep=-2pt]
\documentclass{article}
\usepackage[
left=0.1cm,
right=0.1cm,
top=0.1cm,
bottom=0.1cm]
{geometry}
\begin{document}
\pdfpagewidth=2.3cm \pdfpageheight=0.7cm
\noindent $ x^n + y^n = z^n $
\end{document}
\end{Verbatim}
That's it; that's the entire document. Let's take a closer look at what is happening here.
Lines 2-7 use the \texttt{geometry} package to give us some pretty tight margins. This is a good thing, as this is going to be clip art. We could set them to zero if we needed to (and which might not be a bad idea, actually).
Line 9 is where the magic happens. It allows us to set the actual page size of this example.And yes, I could have just used the \texttt{geometry} package to declare the page size in the preamble. It's what I do with this document. But doing that affects \textit{all} the pages in our document. This lets us handle page size on a page-by-page basis, as we shall see. All we need to do is add a new page and resize everything again. Take a look at this:
\begin{Verbatim}[numbers=left,numbersep=-2pt]
\documentclass{article}
\usepackage[
left=0.1cm,
right=0.1cm,
top=0.1cm,
bottom=0.1cm]
{geometry}
\begin{document}
\pdfpagewidth=2.3cm \pdfpageheight=0.7cm
\noindent $ x^n + y^n = z^n $
\newpage
\pdfpagewidth=4.6cm \pdfpageheight=1.4cm
\noindent $ x^n + y^n = z^n $
\end{document}
\end{Verbatim}
I admit, I had to play around with the variables here, which is a bit of a pain. Fortunately, there is a way to automatically fit the page size to the content, provided I only want to create a single page: use the \texttt{standalone} document class. This source code:
\begin{Verbatim}[numbers=left,numbersep=-2pt]
\documentclass{standalone}
\begin{document}
\noindent $ x^n + y^n = z^n $
\end{document}
\end{Verbatim}
\noindent gives us this output
\includegraphics[scale=1]{pythagorean_theorem2}
We've now managed to do with one line of code what previously took us 8 lines of code. I would call that efficient.
You'll also notice that there is no border spacing around the second formula. This is handy in the event that I want to drop this into a word processing document. I'll add a box around these images so you can see the actual size:
\medskip
\frame{\includegraphics[scale=1]{pythagorean_theorem}} \hphantom{1cm} \frame{\includegraphics[scale=1]{pythagorean_theorem2}}
\medskip
\noindent Also, for reasons I don't know yet, the typical way of starting and ending a math environment in LaTeX (i.e., \verb|\[...\]| doesn't work in the \texttt{standalone} document class.. Only \verb|$...$| and \verb|\begin{math}| \verb|...\end{math}| do.
The \texttt{standalone} class is definitely pretty handy. Now, let's combine this idea with converting \texttt{.tex} documents directly into pdf files without using a GUI. There is a program called \texttt{dvipng} which you should be able to install from the command line, which will convert these \texttt{.dvi} files to \texttt{.png} files just by running:
\begin{verbatim}
$ dvipng file.dvi
\end{verbatim}
If you need a \texttt{.gif} file instead,\footnote{dude, wtf?} just add the \texttt{--gif} flag:
\begin{verbatim}
$ dvipng file.dvi --gif
\end{verbatim}
I'm not going to forget about the first method, though. This could be handy if I wanted to create something (such as a business card) that is a standard size that I want to repeat, or if I want to print on a smaller, non-typical format that LaTeX doesn't have a built-in page size for. I have a few ideas where I might use this; I'll try them out and report back in a later issue.\footnote{Probably, but no guarantee. Other people have a train of thought; I have a Roomba of thought. I may bump into a chair leg at some point and go off in a completely different direction and forget I ever said this.}
The obvious advantage here is that it's possible to create a document where every page has a different size. You can use the \verb|\parbox{}| environment to more precisely control where text and images are placed on the page.
Is this useful? As stated, that's a loaded question, because it's missing two parameters: \textit{to whom} and \textit{in which context}. This isn't useful to me at all right now, but I can imagine in the future somebody might find a way to make an interesting zine in this way and I like that idea, because that's where technology (i.e., LaTeX) and art (zines) intersect, and this is the most comfortable part of that particular Venn diagram for me.
For what it's worth, I've added a repo of these experimental files to my gitea instance. You can find it at \href{https://git.kjodle.net/kjodle/codex-latex-experiments}{\texttt{https://git.kjodle.net/kjodle/codex-latex-experiments}}.
\section{Why I Love \LaTeX{}}
I didn't draw the picture on the next page. It's an example I got from \href{https://texample.net//tikz/}{\texttt{https://texample.net//tik \\ z/}}. I sometimes find it easier to learn a thing by finding examples and playing around with the parameters to see what they do. \footnote{If you are interested in drawing in LaTeX, be sure to check out \href{https://texample.net/tikz/resources/}{\texttt{https://texample.net/tikz/resources/}}}
\bigskip
\begin{center}
\begin{tikzpicture}
\begin{scope}[blend group = soft light]
\fill[red!30!white] ( 90:1) circle (1.8);
\fill[green!30!white] (210:1) circle (1.8);
\fill[blue!30!white] (330:1) circle (1.8);
\end{scope}
\node at ( 90:1.8) {Typography};
\node at ( 210:1.9) {Design};
\node at ( 330:1.9) {Coding};
\node [font=\Large] {\LaTeX};
\end{tikzpicture}
I am very comfortable living in the center of that Venn diagram. \\ (And yes, I played around with that code to make it a bit \\ smaller---as one does.)
\end{center}
\bigskip
\begin{wrapfigure}[8]{r}{0pt}
\begin{tikzpicture}
\draw (0,0) rectangle (1.8cm, 1.8cm);
\draw (1.6,0) rectangle (1.1cm, 1.3cm);
\draw (0.8,1) rectangle (0.3cm, 0.6cm);
\draw (2,2) node{} -- (1,2.5) node{} -- (0,2);
\end{tikzpicture}
\vspace{-20pt}
\end{wrapfigure}
\noindent Anyway, off to the right is the kind of thing I've figured out how to draw using \texttt{tikz}.
Yeah, I've got a ways to go. (If you couldn't tell, it's a house with a floating roof. If you're wondering why the roof is floating, I am too. Let's just assume it's some modern Swedish design.\footnote{I'm good with this. Let's not make it weird.}) I literally have a dozen browser tabs open just to draw that little Swedish house, and yes, that is how I tend to learn the best: here's the basic idea, here are a bunch of examples (some of which seem to contradict one another), and here's my sandbox where I play around with it until I get it just the way I like it.
Now that I look at my code, I realize why my roof is floating. Here's my original code:
\begin{Verbatim}[numbers=left,numbersep=-2pt]
\begin{tikzpicture}
\draw (0,0) rectangle (1.8cm, 1.8cm);
\draw (1.6,0) rectangle (1.1cm, 1.3cm);
\draw (0.8,1) rectangle (0.3cm, 0.6cm);
\draw (2,2) node{} -- (1,2.5) node{} -- (0,2);
\end{tikzpicture}
\end{Verbatim}
Lines 2-3 draw the rectangle, and line 4 draws the triangle. Apparently, I resized the house and forgot to resize the roof. If I change line four to this:
\begin{verbatim}
\draw (1.8,1.8) node{} -- (0.9,2.5) node{} -- (0,1.8);
\end{verbatim}
\noindent We now have a house with a proper (i.e., non-Swedish modern) roof:
\begin{center}
\begin{tikzpicture}
\draw (0,0) rectangle (1.8cm, 1.8cm);
\draw (1.6,0) rectangle (1.1cm, 1.3cm);
\draw (0.8,1) rectangle (0.3cm, 0.6cm);
\draw (1.8,1.8) node{} -- (0.9,2.5) node{} -- (0,1.8);
\end{tikzpicture}
\end{center}
\noindent \textbf{Word of advice:} only change one variable at a time. Anyway, time to stop playing and get back to work.
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
002/images/advanced.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
002/images/beginner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
002/images/c128-scaled.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
002/images/c128.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
002/images/c64-scaled.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

BIN
002/images/c64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

BIN
002/images/cheat_sheet.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
002/images/codeck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
002/images/intermediate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
002/images/notebook.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
002/images/paper_cutter.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
003/build/codex-003.pdf Normal file

Binary file not shown.

BIN
003/build/songs-01.pdf Normal file

Binary file not shown.

BIN
003/build/songs-02.pdf Normal file

Binary file not shown.

1036
003/codex-003.tex Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
003/images/codeck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
003/images/ncsa4-0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
003/images/songs-01.pdf Normal file

Binary file not shown.

BIN
003/images/songs-02.pdf Normal file

Binary file not shown.

BIN
003/images/vt100.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

7
003/songs-01.tex Normal file
View 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
View 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

Binary file not shown.

BIN
004/build/cover-004.pdf Normal file

Binary file not shown.

940
004/codex-004.tex Normal file
View 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
View 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 Linx - 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}

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

149
004/images/Y.eps Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
004/images/flavours.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
004/images/ncsa4-0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

1098
005/codex-005.tex Normal file

File diff suppressed because it is too large Load Diff

66
005/cover-005.tex Normal file
View 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=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 Linx - 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}

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

BIN
005/images/codeck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

BIN
005/images/git-icon.eps Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git branch -m master main
\end{Verbatim}

3
005/include/checkout.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git checkout -b <branchname>
\end{Verbatim}

3
005/include/clone.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git clone <URL of remote repo>
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ sudo apt install git-all
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ sudo dnf install git-all
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ apt install meld --dry-run
\end{Verbatim}

3
005/include/merge.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git merge <branchname>
\end{Verbatim}

3
005/include/pull.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git pull <remoterepo> <remotebranch>
\end{Verbatim}

3
005/include/push.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git push ogit main
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git remote add ogit https://git.kjodle.net/kjodle/Apollo-11
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ git remote remove origin
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ sudo snap install okular
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ snap refresh
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ sudo find /snap -name libKF6Parts.so.6
\end{Verbatim}

View File

@ -0,0 +1,3 @@
\begin{Verbatim}[]
$ snap install kf6-core22
\end{Verbatim}

View File

@ -1,7 +1,67 @@
# the-codex
A zine about Linux, typeset in LaTeX.
A zine about Linux, typeset in LaTeX.
The avatar image is by [Larry Ewing](http://www.isc.tamu.edu/~lewing/)
and [Simon Budig](http://www.home.unix-ag.org/simon/). Licensing info is [here](https://en.wikipedia.org/wiki/File:Tux.svg).
The pdf version is free. You can find it inside the `build` folder for each issue. I will also issue a release, so you can check there, as well.
If you want to buy a paper version with a fancy colored cover, printed up as a little booklet and saddle stapled (just perfect for reading on the go), you can buy them from my etsy shop. I'll include a link here as I add each issue.
## Forum
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.
## 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).
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)
**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.
## Packages
I used a handful of packages to make this document, which I've listed below, along to their page on CTAN where you can read the full documentation.
* [graphicx](https://www.ctan.org/pkg/graphicx) &mdash; Provides extended support for images.
* [kpfonts](https://www.ctan.org/pkg/kpfonts) &mdash; A different font than the AMS fonts, which is a little heavier and easier to read for some.
* [makeidx](https://www.ctan.org/pkg/makeidx) &mdash; Creates indexes (or, indices, if you prefer). I didn't actually use this one. Maybe next time.
* [geometry](https://www.ctan.org/pkg/geometry) &mdash; Flexible and complete interfact to document dimensions.
* [fancyhdr](https://www.ctan.org/pkg/fancyhdr) &mdash; Gives you more control over page headers and footers.
* [multicol](https://www.ctan.org/pkg/multicol) &mdash; Provides for more than two or more columns in selected areas.
* [wrapfig](https://www.ctan.org/pkg/wrapfig) &mdash; Allows you to wrap text around figures.
* [hyperref](https://www.ctan.org/pkg/hyperref) &mdash; Support for hypertext (i.e., links). (Protip: use the *hidelinks* option to get rid of the annoying red boxes around links in the pdf form. Thanks to reddit user 0b0101011001001011 for this tip!)
* [tabto](https://www.ctan.org/pkg/tabto-ltx) &mdash; Allows you to set tab stops. (I used this one to get multiple paragraphs in a footnote. Still scratching my head about that one.)
* [ulem](https://www.ctan.org/pkg/ulem) &mdash; A package for making lines through text. In my case, I just wanted a simple strikethrough.
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.
### New in issue 3:
* [fancyvrb](https://ctan.org/pkg/fancyvrb) &mdash; Extending the ``verbatim`` environment.
* [fvextra](https://ctan.org/pkg/fvextra) &mdash; Extending the ``fancyvrb`` package.
* [enumitem](https://ctan.org/pkg/enumitem) &mdash; Extra control over the basic list environments.
*****
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.