diff --git a/006/006 time.csv b/006/006 time.csv index 1682885..b8c0cce 100644 --- a/006/006 time.csv +++ b/006/006 time.csv @@ -59,4 +59,6 @@ Date,Topic,Minutes 2026.02.04, terminal commands, 35 2026.02.07, terminal commands, 120 2026.02.09, terminal commands, 100 -2026.02.14, first round final proofreading, 100 \ No newline at end of file +2026.02.14, first round final proofreading, 100 +2026.02.15, second round final proofreading, 63 +2026.02.16, third round final proofreading, 40 \ No newline at end of file diff --git a/006/chapters/ada_lovelace.tex b/006/chapters/ada_lovelace.tex index 1ed21a5..7f74831 100644 --- a/006/chapters/ada_lovelace.tex +++ b/006/chapters/ada_lovelace.tex @@ -9,23 +9,23 @@ Computer science is strongly allied with mathematics, and while the face of both \caption{Detail of Margaret Sarah Carpenter's portrait of Ada Lovelace} \end{wrapfigure} -Ada Lovelace, otherwise known as Augusta Ada King, Countess of Lovelace, was the first women to make significant contributions to both fields. +Ada Lovelace, otherwise known as Augusta Ada King, Countess of Lovelace, was the first woman to make significant contributions to both fields. -Lovelace was the child of the English poet Lord Byron and reformer Anne Isabella Milbanke. This period in English history is especially fascinating to me, as Lord Byron was in a social circle that included the poet Percy Bysshe Shelley and his wife Mary Shelley (who was the daughter of Mary Wollstonecraft, an early feminist and advocate of women's rights, and William Godwin, who had many not-so-nice things to say about aristocracy), in addition to his wife and daughter. This circle would eventually lead to the production of \textit{Dracula} by Bram Stoker, \textit{Frankenstein, or the Modern Prometheus} by Mary Shelley, the modern computer algorithm and by extension, the modern computer industry, a progressive view toward education, and many, many great horror films (not to mention quite a few bad ones). +Lovelace was the child of the English poet Lord Byron and reformer Anne Isabella Milbanke. This period in English history is especially fascinating to me, as Lord Byron was in a social circle that included the poet Percy Bysshe Shelley and his wife Mary Shelley (who was the daughter of Mary Wollstonecraft, an early feminist and advocate of women's rights, and William Godwin, who had many not-so-nice things to say about aristocracy), in addition to his wife and daughter. This circle would eventually lead to the production of \textit{Dracula} by Bram Stoker, \textit{Frankenstein, or the Modern Prometheus} by Mary Shelley, the modern computer algorithm and by extension, the modern computer industry, a progressive view toward education, and many, many great horror films (not to mention quite a few bad, but delightful, ones). Ada's mother Lady Byron (i.e., Anne Isabella Noel Byron, 11th Baroness Wentworth and Baroness Byron) was an interesting personality herself. She was an educational reformer and philanthropist, in addtion to being an abolitionist. She established the Ealing Grove School, the first industrial school in England. At this school, academic subjects were combined with three hours of gardening each day, and corporal punishment was not allowed. (By contrast, corporal punishment in elementary school was still a thing when I was a student in the 1970s.) -Ada showed an early interest in mathematics, and her mother encouraged this in an effort to ward off the development of what she perceived as Lord Byron's insanity. (This was, after all, an age which did not have a good understanding of mental illness. We are doing better in this regard, but we still have quite a way to go.) At the age of eighteen, she began a long working relationship and friendship with Charles Babbage, the British mathematician. At the time, Babbage used to host a ``Saturday night soirée'' which was often attended by the cultural elite, including Charles Dickens, Michael Farday (an early pioneer in the study of electromagnetism), Henry Fox Talbot (a photography pioneer who invented the calotype process, an early precursor to modern wet photography), and Charles Wheatstone (who was a pioneer in the study of electricity, invented the English concertina, and also invented the Playfair cypher, which was the first cipher to encrypt pairs of letters, rather than individual letters). +Ada showed an early interest in mathematics, and her mother encouraged this in an effort to ward off the development of what she perceived as Lord Byron's insanity.\footnote{This was, after all, an age which did not have a good understanding of mental illness. We are doing better in this regard, but we still have quite a way to go.} At the age of eighteen, she began a long working relationship and friendship with Charles Babbage, the British mathematician. At the time, Babbage used to host a ``Saturday night soirée'' which was often attended by the cultural elite, including Charles Dickens, Michael Farday (an early pioneer in the study of electromagnetism), Henry Fox Talbot (a photography pioneer who invented the calotype process, an early precursor to modern wet photography), and Charles Wheatstone (who was a pioneer in the study of electricity, invented the English concertina, and also invented the Playfair cypher, which was the first cipher to encrypt pairs of letters, rather than individual letters). That's a pretty impressive crowd to hang out with on Saturday nights. It was at one of these soirées that Babbage introduced his ``Difference Engine'' which was a mechanical computing device that was designed to tabulate logarithms and trigonometric functions by evaluting finite differences to approximate polynomials. Although this device was never fully built, it led Babbage to realize that a much more general design, the ``Analytical Engine'', which incorporated an arithmetic logic unit (i.e., a circuit that performs arithmetic on integer binary numbers), integrated memory, and control flow in the form of conditional branching (i.e., \texttt{if-then-else} and loops (i.e., \texttt{for-next}). -There are a couple of things to note about Babbage's Analytical Engine. First, it was never built (Babbage had a lot of disagreements with his chief engineer and had difficulty funding its development,\footnote{By 1842, the British government had already given him £17,000—the modern day equivalent of almost £1,700,000—to fund the development of his Difference Engine, which was only partially built and then abandoned when he moved on to the Analystical Engine.} so it was an entirely theoretical construct. Second, it was considered to be the world's first Turing complete computer, which is pretty impressive for a 19th century device. +Let's take note of a couple of things about Babbage's Analytical Engine. First, it was never built (Babbage had a lot of disagreements with his chief engineer and had difficulty funding its development,\footnote{By 1842, the British government had already given him £17,000—the modern day equivalent of almost £1,700,000—to fund the development of his Difference Engine, which was only partially built and then abandoned when he moved on to the Analystical Engine.} so it was an entirely theoretical construct. Second, it was considered to be the world's first Turing complete computer, which is pretty impressive for a 19th century device. -There are a lot of technical details behind what it means for a computing device to be Turing complete, but it basically boils down to its capabilities. A Turing complete device means that you can program it to find any answer, provided you have unlimited runtime and memory\footnote{Because no computer has unlimited runtime or memory, no device is \textit{truly} Turing complete—as Captain Barbossa said, it's more of a guideline than a rule.}. Your computer is Turing complete, whereas your calculator and kitchen timer are not. The Difference Engine was not Turing complete because its intended output (and what the British government wanted and was willing to give Babbage so much money for) was tables of logarithms and trigonometric functions and as a result its initial numerical constants consisted of polynomial differences set physically, but that was all that it could produce. The Analytical Engine had the same basic structure as modern computer design, albeit in a larger, clunkier fashion. +What it means for a computer to be Turing complete is complex (and therefore, the subject of much controversy) but it basically boils down to its capabilities. A Turing complete device means that you can program it to find any answer, provided you have unlimited runtime and memory\footnote{Because no computer has unlimited runtime or memory, no device is \textit{truly} Turing complete—as Captain Barbossa said, it's more of a guideline than a rule.}. Your computer is Turing complete, whereas your calculator and kitchen timer are not. The Difference Engine was not Turing complete because its intended output (and what the British government wanted and was willing to give Babbage so much money for) was tables of logarithms and trigonometric functions and as a result its initial numerical constants consisted of polynomial differences set physically, but that was all that it could produce. The Analytical Engine had the same basic structure as modern computer design, albeit in a larger, clunkier fashion. -The fact that it was Turing complete meant that it had a \textit{lot} of potential, and Ada Lovelace was the first person to figure out a way to tap that potential. Despite her close association to Babbage, it was not a very direct path to unleashing that potential, however. In 1840, Babbage gave a seminar about the Analytical Engine at the University of Turin. This seminar was transcribed into French by a young Italian engineer (and future prime minister of Italy—oh, for the day when there are more scientists in politics!) named Luigi Menabrea. A couple of years later, Charles Wheatstone (who was a member of Saturday night soirées that Babbage had hosted) commissioned Lovelace to translate Menabrea's paper into English, which she did, adding seven notes (labeled A-G). The notes were three times longer than the actual translation, so she not only translated Babbage's seminar, she greatly expanded the understanding of how the Analytical Engine could be used for practical purposes. +Because it was Turing complete meant that it had a \textit{lot} of potential, and Ada Lovelace was the first person to figure out a way to tap that potential. Despite her close association to Babbage, it was a somewhat tortuous path to unleashing that potential, however. In 1840, Babbage gave a seminar about the Analytical Engine at the University of Turin. This seminar was transcribed into French by a young Italian engineer (and future prime minister of Italy—oh, for the day when there are more scientists in politics!) named Luigi Menabrea. A couple of years later, Charles Wheatstone (who was a member of Saturday night soirées that Babbage had hosted) commissioned Lovelace to translate Menabrea's paper into English, which she did, adding seven notes (labeled A-G). The notes were three times longer than the actual translation, so she not only translated Babbage's seminar, she greatly expanded the understanding of how the Analytical Engine could be used for practical purposes. Of these seven notes, the last—Note G—is perhaps the most significant in the history of computers, because it describes, in complete detail, how to use the Analytical Engine to calculate a sequence of Bernoulli numbers. I am not a mathematician, so I had to look this up (because I initially confused these with the Fibonacci sequence\footnote{I did mention that I'm not a mathematician, right?}), and \textit{Wolfram Mathworld} describes them as @@ -40,18 +40,18 @@ The Bernoulli numbers $B_n$ are a sequence of signed rational numbers that can b These numbers arise in the series expansions of trigonometric functions, and are extremely important in number theory and analysis.\footnote{See \kref{https://mathworld.wolfram.com/BernoulliNumber.html}{https://mathworld.wolfram.com/BernoulliNumber.html}} \end{quote} -That is not something I understand and therefore cannot do on a calculator or with a spreadsheet, which leads me to appreciate Ada Lovelace's abilities all the more. +That is not something I understand and therefore cannot do on a calculator or with a spreadsheet, which leads me to appreciate Ada Lovelace's abilities all the more because she had neither of these. Many scientists of the time did not understand the Analytical Engine and most of them showed little interest it it.\footnotemark{} Were it not for the interest of a young Italian engineer and the efforts of Ada Lovelace, his work might be unknown to this day. To be certain, Babbage's personal notes contained programs for the engine, but because Lovelace's work was published, Note G is considered to be the first published computer program. % Keep with next paragraph -\footnotetext{I mentioned earlier that Babbage had disagreements with his chief engineer. (If I learned anything from \textit{Star Trek} it's that you shouldn't argue with your chief engineer. Science does not care about your military tactics.) He also expressed a distaste for the common people, campaiging in his later life to make street musicians and hoop-rolling (a popular game for boys at the time that dates back to ancient Greece) and tip-cat (a probably early precursor or analog to both cricket and baseball) illegal, and actually counted all the broken panes of glass in a factory, noting that of the 464 panes, 14 were caused by ``drunken men, women or boys''. (Seriously, who does this?) He also railed against his detractors in later life, so he was either just bitter or he was a difficult person to get along with (or possibly both). Despite his Saturday night soirées, he does \textit{not} seem fun at parties. (See \textit{Nineteenth-Century Science: An Anthology} edited by A.S. Weber and published by Broadview Press in 2000 for the few details that exist.)} +\footnotetext{I mentioned earlier that Babbage had disagreements with his chief engineer. (If I learned anything from \textit{Star Trek} it's that you shouldn't argue with your chief engineer. Science does not care about your military tactics.) He also expressed a distaste for the common people, campaiging in his later life to make street musicians and hoop-rolling (a popular game for boys at the time that dates back to ancient Greece) and tip-cat (a probable early precursor or analog to both cricket and baseball) illegal, and actually counted all the broken panes of glass in a factory, noting that of the 464 panes, 14 were caused by ``drunken men, women or boys''. (Seriously, who does this?) He also railed against his detractors in later life, so he was either just bitter or he was a difficult person to get along with (or possibly both). Despite his Saturday night soirées, he does \textit{not} seem fun at parties. (See \textit{Nineteenth-Century Science: An Anthology} edited by A.S. Weber and published by Broadview Press in 2000 for the few details that exist.)} I am constantly astounded by the depth and breadth of Lovelace's vision here. First, she was asked to translate (nothing more) a seminar on a device that hadn't been built yet, and then went on to also imagine practical use for that device and then describe the exact process to do that. She also allowed her notes to be published, albeit under the initials ``AAL'' because it's unlikely the vast majority of the scientific community of the time would have taken anything published by a woman seriously at the time, although I'm sure it wasn't difficult for anyone in the scientific community at the time to have found out who ``AAL'' actually was.\footnote{Scientists tend to be pragmatic, so accepting the work of a female mathematician would not necessarily have been a personal issue. But science does not operate in a vacuum, so \textit{publically} acknowledging the work of a female mathematician is not something they were able to do. This is an issue we continue to struggle with to this day, leading to the work of women and minorities being ignored or worse, credited to white men who contributed little if anything to it, other than pointing it out.} -Even Babbage didn't seem to be aware of the potential of the Analytical Engine. ``I don't think you have even half my foreboding and my ability to see all sorts of eventualities'', she wrote to Babbage. Reflecting her mother's preoccupation with mental health (or the absence thereof) and her own interests in phrenology and mesmerism (which are now considered to be non-scientific, but which were very much on the minds of scientists of the time), she added ``The Analytical Engine might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine''.\footnote{See \kref{https://www.dpma.de/english/our_office/publications/ingeniouswomen/adalovelace/index.html}{https://www.dpma.de/english/our\_office/publications/ingeniouswomen/ad\\alovelace/index.html}.} In other words, Babbage saw the Analytical Engine as a device for crunching numbers, but Lovelace saw it as something capable of much more. +Even Babbage didn't seem to be aware of the potential of the Analytical Engine. ``I don't think you have even half my foreboding and my ability to see all sorts of eventualities'', she wrote to Babbage. Reflecting her mother's preoccupation with mental health and her own interests in phrenology and mesmerism (which are now considered to be non-scientific, but which were very much on the minds of scientists of the time), she added ``The Analytical Engine might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine''.\footnote{See \kref{https://www.dpma.de/english/our_office/publications/ingeniouswomen/adalovelace/index.html}{https://www.dpma.de/english/our\_office/publications/ingeniouswomen/ad\\alovelace/index.html}.} In other words, Babbage saw the Analytical Engine as a device for crunching numbers, but Lovelace saw it as something capable of much more. Sadly, Ada Lovelace passed away at the age of 36 from cervical cancer. What our world would look like had she not died so young and if the Analytical Engine had been built and she continued to develop programs for it is something we will never know. Fortunately, her contributions \textit{are} acknowledged today. In the latter part of the twentieth century the United States Department of Defense developed a programming language called, naturally, ``Ada'' which was designed to develop very large software systems. The British Computer Society awards an annual Lovelace Medal to individuals who have made outstanding contributions to the understanding or advancement of computing, which is the top award in computing in the United Kingdom. The Association for Women in Computing also presents an annual Ada Lovelace Award, which is given to individuals who have either outstanding scientific or technical achievements or have given extraordinary service to the computing community on behalf of women in computing. And of course, there is Ada Lovelace Day, which is celebrated on the second Tuesday of October and is an international celebration of the achievements of women in science, technology, engineering and maths. -Despite the current state of the world, I hope we reach a point when everybody's contribution, regardless of race or sex (or whatever), can be appreciated and celebrated. \ No newline at end of file +Despite the current state of the world, I hope we reach a point when everybody's contribution, regardless of race or sex (or \textit{whatever}), can be appreciated and celebrated. \ No newline at end of file diff --git a/006/chapters/basic_terminal_commands.tex b/006/chapters/basic_terminal_commands.tex index 6b8ff16..f957a35 100644 --- a/006/chapters/basic_terminal_commands.tex +++ b/006/chapters/basic_terminal_commands.tex @@ -2,7 +2,7 @@ A lot of people are reluctant to try Linux because they think you need to be proficient in the terminal, which is not true. The point of Linux, after all, is that it is a GUI (a graphical user interface) which is meant to eliminate your need to use text-based commands. -The fact is, you don't need to use the terminal at all to use Linux. But your life in Linux can get a lot easier if you do use the terminal. It can also get a lot of harder if you use the terminal improperly. What follows is a basic introduction to using the terminal. It's designed to get your feet wet, not to make you an expert user. +The fact is, you don't need to use the terminal at all to use Linux. Using the terminal can make your life in Linux a lot easier, so it pays to learn how to use it. (The converse is that the improper use of the terminal can make your life in Linux a lot more difficult.) If you have been nervous about using the terminal, fear no more. What follows is a basic introduction to using the terminal. It's designed to get your feet wet, not to make you an expert user. \section{What is a Terminal?} @@ -10,7 +10,7 @@ We really should talk about what a terminal actually is, though, because Linux d In the early days of computing, computers were huge and often took up the entire basement of a building. The only way to input data into them was to use punched cards\footnote{See \kref{https://en.wikipedia.org/wiki/Punched_card}{https://en.wikipedia.org/wiki/Punched\_card}} or paper tape\footnote{See \kref{https://en.wikipedia.org/wiki/Punched_tape}{https://en.wikipedia.org/wiki/Punched\_tape}} which meant that to interact with the computer, you had to prepare your cards or your tape and then head down to the basement.\footnote{For attribution and licensing information for the images in this chapter, see \kref{https://en.wikipedia.org/wiki/File:Used_Punchcard_(5151286161).jpg}{https://en.wikipedia.org/wiki/File:Used\_Punchcard\_(5151286161).jpg}, \kref{https://en.wikipedia.org/wiki/File:PaperTapes-5and8Hole.jpg}{https://en\\.wikipedia.org/wiki/File:PaperTapes-5and8Hole.jpg}, and \kref{https://en.wikipedia.org/wiki/File:DEC_VT100_terminal_transparent.png}{https://en.wikipedia.o\\rg/wiki/File:DEC\_VT100\_terminal\_transparent.png}.} -Somebody eventually figured out a way to use a keyboard to provide input for a computer, which meant that you could put the keyboard in your office on the third floor and just run wires from it down to the computer. No more running up and down the stairs with paper cards or tape in your hands. The output from the terminal originally went to a line printer, but at some point, somebody realized that they could use a CRT (a cathode-ray tube, aking to what televisions used to be before flat screens came along) and send the output to that, instead, thus saving on paper. Pretty handy. +Somebody eventually figured out a way to use a keyboard to provide input for a computer, which meant that you could put the keyboard in your office on the third floor and just run wires from it down to the computer. No more running up and down the stairs with paper cards or tape in your hands. The output from the terminal originally went to a line printer, but at some point, somebody realized that they could use a CRT (a cathode-ray tube, akin to what televisions used to be before flat screens came along) and send the output to that instead, thus saving on paper. Pretty handy. \begin{wrapfigure}[10]{r}{0.4\textwidth} \includegraphics[scale=0.9]{punch_card} @@ -26,26 +26,29 @@ The point here is that a terminal is a physical object (either keyboard and prin By far, one of the most popular (not to mention the earliest) terminals in Linux is \textsf{Bash}—the Bourne Again SHell. The actual Bourne shell was developed by Stephen Bourne at Bell Labs in 1979 for use on Unix. Bash was created by Brian Fox for the GNU project in 1989 as a free software alternative to the Bourne shell—same functions, different code base. +In figure \ref{dec10}, we see a DEC terminal, which is similar to the terminal I used when I was in college the first time around. I wrote about this way back in the third issue of this zine, which seems like a lifetime ago, but was really only two and a half years ago. (Gosh, how times flies when you and the rest of the world are in the middle of an existential crisis.) It occurs to me that I am a member of an increasingly smaller and smaller group: people who used an actual terminal to do stuff. Of course, at the time ``doing stuff'' basically meant just typing up my notes from class. + \begin{wrapfigure}[11]{r}{0.4\textwidth} \includegraphics[scale=0.95]{dec_vt100} \caption{The DEC VT100, a widely emulated computer terminal} + \label{dec10} \end{wrapfigure} -Over to the right, we see a DEC terminal, which is similar to the terminal I used when I was in college the first time around. I wrote about this way back in the third issue of this zine, which seems like a lifetime ago, but was really only two and a half years ago. (Gosh, how times flies when you and the rest of the world is in the middle of an existential crisis.) It occurs to me that I am a member of an increasingly smaller and smaller group: people who used an actual terminal to do stuff. Of course, at the time ``doing stuff'' basically meant just typing up my notes from class. My background in computers was basically programming in BASIC, and I had no idea how to do much else. But I had terrible handwriting, and I wanted a decent copy of my class notes to refer to, so it was either check out a typewriter room on the first floor of the dorm or the second floor of the library\footnote{In those days, you could check out a study room either with or without a typewriter. What an eternity ago that seems like now.} or use the computer. Using the computer meant that I didn't have to bother with correction paper—I could just edit on the terminal. I would save my files, then send them to the printer in another room, then go stand in line to get my printouts. It was a different age, to be certain. +My background in computers was basically programming in BASIC, and I had no idea how to do much else. But I had terrible handwriting, and I wanted a decent copy of my class notes to refer to, so it was either check out a typewriter room on the first floor of the dorm or the second floor of the library\footnote{In those days, you could check out a study room either with or without a typewriter. What an eternity ago that seems like now.} or use the computer. Using the computer meant that I didn't have to bother with correction paper—I could just edit on the terminal. I would save my files, then send them to the printer in another room, then go stand in line to get my printouts. It was a different age, to be certain. \section{Basic Commands} Enough about me. Let's talk about some basic terminal commands you can start using right now. But first, let's talk about information, and which way it flows… -\section{Input, Output, Errors, Redirects, and Piping} +\subsection{Input, Output, Errors, Redirects, and Piping} Every command has three things you need to consider: what input you provide the command, what output the command gives you, and what kinds of errors (hopefully none) you encounter. -We have standard names for these things: \texttt{stdin}, \texttt{stdout}, and \texttt{stderr}, because these things are, well…\textit{standard}. We refer to these things as ``standard streams'' because again, they are standard with every command you give, and they are also a stream—meaning a flow of information.\footnote{See \kref{https://en.wikipedia.org/wiki/Standard_streams}{https://en.wikipedia.org/wiki/Standard\_streams} for a bit more information.} It's important to understand what these things are, because you are going to encounter them in online discussions about terminal commands, and as will all things, understanding these things makes your life easier. +We have standard names for these things: \texttt{stdin}, \texttt{stdout}, and \texttt{stderr}, because these things are, well…\textit{standard}. We refer to these things as ``standard streams'' because again, they are standard with every command you give, and they are also a stream—meaning a flow of information.\footnote{See \kref{https://en.wikipedia.org/wiki/Standard_streams}{https://en.wikipedia.org/wiki/Standard\_streams} for a bit more information.} It's important to understand what these things are, because you are going to encounter them in online discussions about terminal commands, and as with all things, understanding these things makes your life easier. For example, let's say that you want to see the contents of a particular directory. You would use the command \texttt{ls} (which we will talk about in a bit), and the \texttt{stdin} you would provide would be the name of the directoy. The \texttt{stdout} would be the contents of that directory. If you misspelled the name of the directory or the directory doesn't exist, then the \texttt{ls} command would give you an error like ``cannot access : No such file or directory'', which would be the \texttt{stderr}. -It's important to understand standard streams because you need to understand exactly what a command needs to get from you in order to operate correctly, and you also need to understand where it is sending its \texttt{stdout} and \texttt{stderr} in case you get something you weren't expecting. For the most part, simple commands send their \texttt{stdout} and \texttt{stderr} to your monitor. (If this were 1972, those would probably go to that line printer attached to your terminal.) But it's also possible to \textit{redirect} those streams to a file, via a redirect symbol (which is typically >). This is sometimes handy if you want a record of that information, or you need to use that data in a different program like a spreadsheet. +Understanding standard streams is important because you need to know exactly what input a command needs to get from you in order to operate correctly, and you also need to understand where it is sending its output and errors in case you get something you weren't expecting. For the most part, simple commands send their \texttt{stdout} and \texttt{stderr} to your monitor. (If this were 1972, those would probably go to that line printer attached to your terminal.) But it's also possible to \textit{redirect} those streams to a file, via a redirect symbol (which is typically >). This is sometimes handy if you want a record of that information, or you need to use that data in a different program like a spreadsheet. It's also possible to take the \texttt{stdout} of one command and use it as the \texttt{stdin} of another command. This is called ``piping'' and makes use of the pipe symbol (that is, |) that is generally located on the key just above the \kkey{enter} key on your keyboard. This is a good technique when you know the command you are using will produce a lot of output, but you are only concerned with a small subset of it, so you send that output through a command (usually \texttt{grep}, which we will talk about) to filter out just the bits that you are interested in. @@ -67,9 +70,9 @@ Now that you have your terminal open, let's try some basic commands. The first o /home/kjodle \end{Verbatim} -This may not seem like a useful command, but if you start wandering around in the guts of your filesystem, it's easy to forget where you are, and then this command is \textit{very} handy. +This may not seem like a useful command, but if you start wandering around in the guts of your filesystem, it's easy to forget where you are, and then this command becomes \textit{very} useful. -If you forget who you are, you can also use the \texttt{whoami} command, which simply returns your user name. Again, this may not seem very useful, but sometimes you have to log in as the root user, and if you forget whether you're logged in as the root user or a regular user, this becomes not handy but absolutely necessary. (You can wreak havoc on your system quite easily when logged in as root, so this is a good thing to check.) If you are logged in as the root user, \texttt{whoami} should return ``root'' rather than your regular user name. +If you forget who you are, you can also use the \texttt{whoami} command, which simply returns your user name. Again, this may not seem very useful, but sometimes you have to log in as the root user, and if you forget whether you're logged in as the root user or a regular user, this becomes not only handy but absolutely necessary. (You can wreak havoc on your system quite easily when logged in as root, so this is a good thing to check.) If you are logged in as the root user, \texttt{whoami} should return ``root'' rather than your regular user name. \subsection{A Note on Conventions} @@ -79,11 +82,11 @@ Arguments (see the next section) are typically shown between angle brackets, so \subsection{Arguments and Switches} -Bash commands follow the Unix principle (``Do one thing and do it well'') but that doesn't mean that they are simple. I mean, they are simple, but they can accomplish complex things.\footnote{Which I guess means that ``simple'' is a matter of perspective. When I was first starting with Linux, I thought these commands were terribly complicated. But as I've gained experience, I went from ``complex input $\rightarrow$ simple intput'' to ``simple output $\rightarrow$ complex output''. Experience and knowledge change your perspective.} +Bash commands follow the Unix principle (``Do one thing and do it well'') but that doesn't mean that they are simple. I mean, they are simple, but they can accomplish complex things.\footnote{Which I guess means that ``simple'' is a matter of perspective. When I was first starting with Linux, I thought these commands were terribly complicated. But as I've gained experience, I went from ``complex input $\rightarrow$ simple input'' and ``simple output $\rightarrow$ complex output''. Experience and knowledge change your perspective.} Most but not all commands have both \textit{arguments} and \textit{switches}, which are sometimes called \textit{options}. (I like the term ``switch'' because I like to think that a command can switch between doing things in different ways.) For example, if I want to copy a file on the command line, I need to tell the terminal which file I'd like to copy. That file's name is the \textit{argument}—in other words, it's the thing I want the command to act on. -Sometimes an argument is obvious and can be omitted. For example, if I want to list the contents of a directory, the \texttt{ls} command (which we will talk about in a bit) assumes that the argument is the current directory. If I want to see the contents of a different directory, I either need to move to that directory, or specify that directory's path as an argument. +Sometimes an argument is obvious and can be omitted. For example, if I want to list the contents of a directory, the \texttt{ls} command (which we will talk more about in a bit) assumes that the argument is the current directory. If I want to see the contents of a different directory, I either need to move to that directory, or specify that directory's path as an argument. Switches (i.e., options) affect \textit{how} a command carries out its work. Suppose I want to see the contents of the directory I'm currently in. I would use the \texttt{ls} command for that. But do I want to see any invisible files or subdirectories? By default, the \texttt{ls} command omits those. If I want to see those (which is useful if I'm looking at configuration files, which are typically created and modified by your software and are thus hidden), I need to use the \texttt{-a} switch, which switches from hiding invisible files and subdirectories to showing invisible files and subdirectories. @@ -94,9 +97,9 @@ As it turns out, most commands have two options for switches. For example, the m do not ignore entries starting with . \end{Verbatim} -Both \texttt{-a} (one hyphen) and \texttt{-}\texttt{-all} (two hyphens) have the same effect: they both show invisible files and subdirectories. So why are there two versions of this switch? I'm not 100\% sure as to the reason\footnote{Because the amount of research I have done here is exactly equal to zero.} but I suspect it has to do with how the human mind remembers information. For example, if I want to see \textit{all} the files in a directory, including the invisible ones, it's pretty easy to remember the two-hyphen version (\texttt{ls --all}). But in this case, ``\texttt{-a}'' is also short for ``\texttt{--all}'' All I need to do is remember that ``a'' is a shortcut for ``all''. +Both \texttt{-a} (one hyphen) and \texttt{-}\texttt{-all} (two hyphens) have the same effect: they both show invisible files and subdirectories. So why are there two versions of this switch? I'm not 100\% sure as to the reason\footnote{Because the amount of research I have done here is exactly equal to zero. Time is the limiting reagent for me at this point in my life.} but I suspect it has to do with how the human mind remembers information. For example, if I want to see \textit{all} the files in a directory, including the invisible ones, it's pretty easy to remember the two-hyphen version (\texttt{ls --all}). But in this case, ``\texttt{-a}'' is also short for ``\texttt{--all}'' All I need to do is remember that ``a'' is a shortcut for ``all''. -Most command switches work this way. Keep in mind, there are no hard and fast rules for this. The single-hyphen switch is not always lowercase (for example, the \texttt{cp} command has both \texttt{-l} which means ``hard link files instead of copying'' and \texttt{-L} which means ``always follow symbolic links in SOURCE''; the lower-case and upper-case options have nothing to do with each other), and the single-hyphen single letter option doesn't always have a double-hyphen full word option. +Most command switches work this way. Keep in mind, there are no hard and fast rules for this. The single-hyphen switch is not always lowercase (for example, the \texttt{cp} command has both \texttt{-l} which means ``hard link files instead of copying'' and \texttt{-L} which means ``always follow symbolic links in SOURCE''; the lower-case and upper-case options have nothing to do with each other), and the single-hyphen single letter option doesn't always have a double-hyphen full word option. There are not, as far as I'm aware, any rules here. \subsection{Moving Around}\label{conventions} @@ -130,7 +133,7 @@ Notice that the folder ``super secret stuff'' has spaces in the title. Bash will \subsection{Seeing What's There} -Once you're in a directory, you probably want to see what's there. The command for that is \texttt{ls}. +Once you're in a directory, you probably want to see what's there. The command for that is \texttt{ls} which we've already talkabout about a little bit. If you have a lot of files or subdirectories, the \texttt{ls} command isn't all that useful, because it just gives you everything that is in there, but it doesn't tell you much about the contents. Fortunately, \texttt{ls} has tons of options. My favorites are \texttt{-a} which displays invisible files and directories, \texttt{-h} which displays file and directory sizes in human readable forms (in other words, you get ``16k'' instead of 16176, which is in bytes), and \texttt{-l} which means to give a long display. And yes, you can combine these options: @@ -160,7 +163,7 @@ That seems like a lot of information, but it's highly useful information. To sum \item The second column shows the number of hardlinks to that item. This is really beyond the scope of this tutorial, but for directories, you can think of it as the number of items that directory contains.\footnote{See \kref{https://linuxgazette.net/issue35/tag/links.html}{https://linuxgazette.net/issue35/tag/links.html} and \kref{https://linuxgazette.net/issue93/tag/2.html}{https://linuxgaze\\tte.net/issue93/tag/2.html} for more information.} \item The third column shows the owner and the fourth column shows the group. This is also related to permissions. \item The fifth column shows the size, in human-readable form (because we used the \texttt{-h} option). Notice that directories show up as `4.0 k' which is also beyond the scope of this tutorial, but is related to the second column, so take a look at those footnotes to better understand this. -\item The sixth column is either the creation date or the last modified date. +\item The sixth column is either the creation date or the last modified date, whichever is later. \item The seventh and final column is the name. Again, notice that Linux puts single quotation marks around any names that contain a space. \end{itemize} @@ -186,7 +189,7 @@ A command like \texttt{find } will search your entire filesystem for direc A \textit{binary} is just another name for an application file that you can run. Often you need to find where a binary is located so that you can add it as a command to another application. You have a couple of options here. -\paragraph{which} This command will return the name of all binaries that are located in your \texttt{PATH} variable, which is a list of locations that your system will search when attempting to execute that command. For example, if I run \texttt{which latex} in a terminal, I get this output \texttt{/usr/bin/latex}. This tells me a couple of things. First, it means that LaTeX is installed on my system. Second, it tells me that its location is contained in my \texttt{PATH} variable, which means that I can use it by simply typing \texttt{latex} in a terminal.\footnote{Yep, \texttt{\$PATH} is yet another variable, just like \texttt{\$HOME}. I'll talk about variables in a future issue.} +\paragraph{which} This command will return the name of all binaries that are located in your \texttt{PATH} variable, which is a list of locations that your system will search when attempting to execute that command. For example, if I run \texttt{which latex} in a terminal, I get this output: \texttt{/usr/bin/latex}. This tells me a couple of things. First, it means that LaTeX is installed on my system. Second, it tells me that its location is contained in my \texttt{PATH} variable, which means that I can use it by simply typing \texttt{latex} in a terminal.\footnote{Yep, \texttt{\$PATH} is yet another variable, just like \texttt{\$HOME}. I'll talk about variables in a future issue.} \paragraph{whereis} Sometimes binaries get installed without getting added to the \texttt{PATH}, however. To find all binaries, regardless of whether or not they are in the \texttt{PATH}, use \texttt{wheris}. For example, typing \texttt{whereis latex} in my terminal gives me this output: @@ -198,7 +201,7 @@ The first item is the location of the binary, while the second one is the locati \subsection{Wildcards} -The \texttt{find} command is useful because it can take wildcards. A full discussion of wildcards is beyond the scope of this tutorial, because we are edging into regex (short for ``regular expressions'') territory. But lets take a look at the simpler ones. +The \texttt{find} command is useful because it can take wildcards. A full discussion of wildcards is beyond the scope of this tutorial, because we are edging into regex territory. (``Regex'' is short for ``regular expressions''.) But lets take a look at the simpler ones. The first is \texttt{?} which takes the place of a single character. Thus \texttt{find ?at} would match ``cat'' and ''hat'' but it wouldn't match ``what''. @@ -214,13 +217,13 @@ These are the most basic examples of wildcard usage, but they have sufficed for \subsection{Working with Files and Directories} -Bash has a number of commands for working with files and directories. Many of them do similar but slightly different things, so the time you invest in learning how they work and understanding their options will pay off in the long run, because you will have the exact tool that you need, and you can avoid the digital problem of trying to eat soup with a fork. +Bash has a number of commands for working with files and directories. Many of them do similar but slightly different things, so the time you invest in learning how they work and understanding their options will pay off in the long run, because you will have the exact tool that you need, and you can thus avoid the digital problem of trying to eat soup with a fork. \paragraph{touch} The most basic file command is probably \texttt{touch} which will create a file if it doesn't exist, or will update the date and time it was modified if it does exist.\footnote{I admit, I'm a little confused as to the purpose of this command, and have never found a use for it. It is probably a legacy from the early days of Linux or possbily Unix, and I have never had the time—or the amount of curiosity required—to investigate it.} -\paragraph{cat} A command I do find a lot of use for however is \texttt{cat}, which is short for ``concatenate''. This command can also create files and add content to them, but it can also add content to existing files. But the thing I find it most useful for is simply displaying the contents of a file, which I use a lot when examining log files. +\paragraph{cat} A command I do find a lot of use for however is \texttt{cat}, which is short for ``concatenate''. This command can create files and add content to them, but it can also add content to existing files. But the thing I find it most useful for is simply displaying the contents of a file, which I use a lot when examining log files. -To use \texttt{cat} to create files, just type \texttt{cat > } in the terminal. \texttt{cat} will create a file named ``'' and then go into \textit{interactive mode}, meaning it looks like it's not doing anything. In reality, it's waiting for you to add input. Type what you want the contents of the file to be and then press \kkey{ctrl+d} to save the file and exit interactive mode. +To use \texttt{cat} to create files, just type \texttt{cat > } in the terminal. \texttt{cat} will then create a file named ``'' and then go into \textit{interactive mode}, meaning it looks like it's not doing anything. In reality, it's waiting for you to add input. Type what you want the contents of the file to be and then press \kkey{ctrl+d} to save the file and exit interactive mode. Notice that we are using a redirect symbol here (\texttt{>}) to push your content to that file. If you repeat this command with different text, \texttt{cat} will just overwrite what you initially wrote. To append text to a file, rather than overwrite it, use \texttt{>}\texttt{>}. @@ -228,11 +231,11 @@ Notice that we are using a redirect symbol here (\texttt{>}) to push your conten \input{include/head_n20} -\paragraph{tail} Of course, if new information is appended to the end of the log file, then you can use the \texttt{tail} command, which works pretty much the same way the \texttt{head} command does. +\paragraph{tail} Of course, if new information is appended to the \textit{end} of the log file, then you can use the \texttt{tail} command, which works pretty much the same way the \texttt{head} command does. -\paragraph{more} If \texttt{head} and \texttt{tail} don't get you what you need, you can always use the \texttt{more} command, which allows you to page through text one screenful at a time. You can see the next line by pressing the space bar, or see the next screen by pressing either \kkey{z} or \kkey{enter}. I particularly ``\texttt{-c}'' option, which doesn't scroll, but clears the screen before displaying the next screenful of text. I find that it's easier to keep track of what I'm looking at. +\paragraph{more} If \texttt{head} and \texttt{tail} don't get you what you need, you can always use the \texttt{more} command, which allows you to page through text one screenful at a time. You can see the next line by pressing the space bar, or see the next screen by pressing either \kkey{z} or \kkey{enter}. I particularly ``\texttt{-c}'' option, which doesn't scroll, but clears the screen before displaying the next screenful of text. For some reason my brain finds that easier to deal with. -The \texttt{more} command will also tell you how much of the file you've seen in the bottom left corecer of the screen. For example, if I use this command to look at the main \LaTeX{} file for this issue: +The \texttt{more} command will also tell you how much of the file you've seen by providing a percentage in the bottom left corner of the screen. For example, if I use this command to look at the main \LaTeX{} file for this issue: \input{include/more_codex_command} @@ -262,13 +265,15 @@ and if you want to move that file back, you can use: \input{include/mv_file_up} +In commands like these, two dots (i.e., \texttt{..}) represent the parent directory of the one you are currently in, whereas a single dot (i.e., \texttt{.}) represents the directory you're currently in. + \paragraph{rmdir} To remove a directory, just use the \texttt{rmdir} command. There is one caveat with this command, however: the directory must be empty, because this command only works on empty directories. To remove a directory that \textit{isn't} empty (which means first removing all its contents and then finally removing the directory), you'll need to use the \texttt{rm} command. \paragraph{rm} To remove a file, use the \texttt{rm} command with the name of the file as an argument. The \texttt{rm} does take wildcards by the way, which means that you can do a lot of work (or a lot of damage) with very little effort. For example, this command: \input{include/rm_log} -will remove \textit{all} files in your current directory that have a \texttt{.log} extension. The \texttt{rm} command doesn't have a \texttt{stdout}; if it is successful in deleting the file or files it was directed to delete, it just exits quietly without saying anything. And unlike just about every GUI out there, the Linux command line does not have a trash can or recycling bin that deleted files go to. When you delete a file using \texttt{rm}, it's just gone forever, and there is no easy way to get it back.\footnote{You \textit{can} recover the contents of a deleted file if you have the right tools and you just deleted it, but that's pretty advanced stuff. It's better to not delete things you are unsure of and to keep backups. On the other hand, if you really want to get rid of files in a way that people with the skills and the time and inclination \textit{can't} recover, use the \texttt{shred} command.} +will remove \textit{all} files in your current directory that have a \texttt{.log} extension. The \texttt{rm} command doesn't have a \texttt{stdout}; if it is successful in deleting the file or files it was directed to delete, it just exits quietly without saying anything. And unlike just about every GUI out there, the Linux command line does not have a trash can or recycling bin that deleted files go to. When you delete a file using \texttt{rm}, it's just gone forever, and there is no easy way to get it back.\footnote{You can recover the \textit{contents} of a deleted file if you have the right tools and you just deleted it, but that's pretty advanced stuff. It's better to not delete things you are unsure of and to keep backups. On the other hand, if you really want to get rid of files in a way that people with the skills and the time and inclination \textit{can't} recover, use the \texttt{shred} command.} If you are accumstomed to using a GUI, and the thought of wiping out a bunch of files without having a chance to think about it makes you nervous, you can always use interactive mode. There are two switches for the interactive mode. The first is \texttt{-i} which prompts you to confirm you want to remove every single file. There is also the \texttt{-I} switch, which will prompt you once when removing more than three files, or when removing recursively. diff --git a/006/chapters/coda.tex b/006/chapters/coda.tex index 51cd4ee..5a15924 100644 --- a/006/chapters/coda.tex +++ b/006/chapters/coda.tex @@ -26,7 +26,9 @@ The first line saves the \texttt{textsf} command under a new name (\texttt{oldte \begin{small} \paragraph{I cannot believe that this is where we are:}This is the sixth issue of this zine. I originally created this zine to learn \LaTeX{} and also to learn more about Linux (and get some practice with Git in the meantime). I thought I might get at most one or two issues and that would be the end of it. So when I started doing this, I pushed everything to my git repo at \kref{https://git.kjodle.net/kjodle/the-codex}{https://git.kjodle.net/kjodle/the\\-codex}. -It looks like this is a thing now, and a single repo just won't work. I'm just over 300 commits in that repo, which doesn't really reveal much about the state of each issue. Going forward, I've decided to make this an organization on my git repo at \kref{https://git.kjodle.net/the-codex-zine}{https://git.kjodle.net/the-codex-\\zine}. That way, each issue can have its own repository and will eventually come to a logical end, instead of being never ending. I still need to move the wiki over from its current location at \kref{https://git.kjodle.net/kjodle/the-codex/wiki}{https://git.kjodle.net/kjodle/the\\-codex/wiki}. Believe it or not, I also have a forum for it at \kref{https://forums.kjodle.net/forumdisplay.php?fid=15}{https://forums.kjodle.net/forumdi\\splay.php?fid=15}, so if you want to join that forum and share your opinions and ideas, I encourage you to do so. +It looks like this is a thing now, and a single repo just won't work. I'm just over 300 commits in that repo, which doesn't really reveal much about the state of each issue. Going forward, I've decided to make this an organization on my git repo at \kref{https://git.kjodle.net/the-codex-zine}{https://git.kjodle.net/the-codex-\\zine}. That way, each issue can have its own repository and will eventually come to a logical end, instead of being never ending. I still need to move the wiki over from its current location at \kref{https://git.kjodle.net/kjodle/the-codex/wiki}{https://git.kjodle.net/kjodle/the\\-codex/wiki}. + +Believe it or not, I also have a forum for it at \kref{https://forums.kjodle.net/forumdisplay.php?fid=15}{https://forums.kjodle.net/forumdi\\splay.php?fid=15}, so if you want to join that forum and share your opinions and ideas, I encourage you to do so. Starting with this issue, I wrote each chapter in a separate \LaTeX{} file, and then used the \texttt{include} command to include it in the main file. This made writing and editing this issue a lot easier, but I realize now that this method also makes it easier to collaborate with others on the writing of this zine. If you are interested in contributing a chapter to this zine, and are familiar with \LaTeX{} and Git, then you can just clone the repo for the current issue, make your changes, and then file a pull request. @@ -42,7 +44,7 @@ You're already doing the best thing you can do to support this zine: you're read But everything that I wrote in section \ref{support} also applies here: Please talk about this zine on whatever social media platforms you participate on and share the Etsy link. And yep, please remember to talk about \textit{why} you like this zine. (Also tell me what you'd like to see more of. Like a lot of creative people, I vacillate between having too many things to talk about and not having enough things to talk about.) If you have friends you think would like this zine, please send them over to take a look, or buy them a copy. If you want to buy some copies in bulk to give away, please contact me so we can work out a pretty hefty discount. -If you want to donate just to keep this thing going, you can always do so via PayPal at \kref{https://paypal.me/kjodle}{https://paypal.me/kjodle}.\footnote{You are under absolutely no obligation to do so, and my imposter syndrome actually means I would be embarassed if somebody did so. Relevant link is here: \kref{https://www.youtube.com/watch?v=rl_NpdAy3WY}{https://www.youtube.com/watch?v=rl\_NpdAy3WY}.} +If you want to donate just to keep this thing going, you can always do so via PayPal at \kref{https://paypal.me/kjodle}{https://paypal.me/kjo\\dle}.\footnote{You are under absolutely no obligation to do so, and my imposter syndrome actually means I would be embarassed if somebody did so. Relevant link is here: \kref{https://www.youtube.com/watch?v=rl_NpdAy3WY}{https://www.youtube.com/watch?v=rl\_NpdAy3WY}.} But really, please just read and enjoy this zine. And remember to tell your friends. Thanks! \paragraph{Me, on social media:} I used to love Twitter, and was disappointed (to say the least) to see what it's devolved into. I am on both Mastodon (\texttt{@kjodle}) and Bluesky (\texttt{@iswpw.bsky.social}). Please feel free to reach out to me there, although I am not nearly as active on either of those platforms as I used to be on Twitter. Maybe someday, again, although I doubt it. Sometimes that which is lost will never be found again. diff --git a/006/chapters/open_source.tex b/006/chapters/open_source.tex index 10ce112..9d5534b 100644 --- a/006/chapters/open_source.tex +++ b/006/chapters/open_source.tex @@ -20,7 +20,7 @@ Second, Microsoft included the option to just get a text message, but also indic This is problematic in so many ways. For one thing, once I have that app on my phone, Microsoft is now embedded in my life. It goes everywhere I go. If I have to choose between a Microsoft product or some other non-Microsoft product in the future, I am more likely to go with the Microsoft app because hey, I already have their authenticator app and so that's one less app I need to download and install, one less login I need to maintain. Microsoft is my friend, after all, looking out for me and making my life easier by providing this free app that makes 2FA so easy to manage. What a wonderful Big Brother it is! -The worst thing about this however, is how deceitful it all is. First, Microsoft creates an artificial barrier to doing what you want to do, and then it conveniently offers you a ``free'' solution to get around that barrier.\footnote{We would be wise here to remember Doctorow's Law: In a capitalist society, if somebody gives you something for free, you are not the customer, you are the product.} And of course, that solution means that Microsoft is going everywhere you go. It's a part of your life now. You can only get rid of it with a great deal of effort. +The worst thing about this is how deceitful it is. First, Microsoft creates an artificial barrier to doing what you want to do, and then it conveniently offers you a ``free'' solution to get around that barrier.\footnote{We would be wise here to remember Doctorow's Law: In a capitalist society, if somebody gives you something for free, you are not the customer, you are the product.} And of course, that solution means that Microsoft is going everywhere you go. It's a part of your life now. You can only get rid of it with a great deal of effort. As an aside, my company is heavily invested in Microsoft technology, and we have to use 2FA to log into our VPN. Fortunately, they gave us the option of either using the app or using these little credit-card sized authenticator cards (they call them tokens; I'm not sure if that's the official name). But there have been rumors that the cards will soon go away and we'll be forced to install the Microsoft authenticator app on our phones and use that. For that reason (among others) I am looking to move on from this company. If they want me to use a digital device, then they need to provide it. Why should I have to spend my increasingly dwindling resources to help them make more profit? @@ -32,7 +32,7 @@ So long, GitHub. I started using WordPress when I created my second (or third?) website at \kref{https://kjodle.net/}{https://kjodle.net/}. I was pretty excited about this blogging business, which was part of the what all the people in the education sphere called ``Web 2.0''.\footnote{See issue ``The Salad Days Are Over'' in issue \#5.} -Back in the day, I absolutely \textit{loved} WordPress. The community was warm and welcoming and I made a lot of friends. Through developing themes, child themes, and plugins, I learned a lot about HTML, CSS, and PHP, as well as the basics of MySQL databases. Alas, that official WordPress community was only warm and welcoming as long as you agreed with all the decisions The Powers That Be are making. Dissention (or disagreement or even just plain confusion) are not tolerated. You either toe the line or you protest what you view as unnecessary changes (i.e., solutions in search of a problem) and get the boot. +Back in the day, I absolutely \textit{loved} WordPress. The community was warm and welcoming and I made a lot of friends. Through developing themes, child themes, and plugins, I learned a lot about HTML, CSS, and PHP, as well as the basics of MySQL databases. Alas, that \textit{official} WordPress community was only warm and welcoming as long as you agreed with all the decisions The Powers That Be are making. Dissention (or disagreement or even just plain confusion) were not tolerated. You either toe the line or you protest what you view as unnecessary changes (i.e., solutions in search of a problem) and get the boot. In this case, it was the ``block editor'' known as Gutenberg.\footnote{It saddens me that it was named after a person who made it possible to bring knowledge and wisdom to the masses, and now it's being used to name an utterly worthless thing that is only meant to manipulate people. More about that later.} @@ -40,7 +40,7 @@ First available as a plugin, I eagerly tried it out. And it was disappointing. I Which I'm fine with, in some ways—I've been interested in design since I first learned how to read and can go on \textit{at length}\footnote{Seriously, do \textbf{not} get me started on the subject of design.} about the differences between two different typefaces\footnote{\textit{Not} fonts. Seriously, also don't get me started on the differences between fonts and typefaces.}. But this is not what Gutenberg was about. There are (or there were at the time; I've since stopped paying attention to these things) a number of ``page-building'' plugins available to help you design a website with WordPress if you know nothing about HTML and CSS. -The ostensible purpose of the Gutenberg plugin (which was eventually included in the WordPress core\footnote{``in the WordPress core'' means that once you install the latest version of WordPress, you have this thing whether or not you want it or need it.}) was generally presented as a way to make WordPress \textit{easier} to use for non-technical users. (And one of the nice things about blogging software is that it levels the playing field for mounting a bully pulpit of your own—getting online is largely a matter of logging on, rather than building something from scratch. I used to think that this was a good thing, but the last ten years has taught me that giving idiots a bigger and better soapbox is probably \textit{not} a good idea. We should have the digital equivalent of ``you must be this tall to ride this ride'', which used to be a basic knowledge of HTML.) +The ostensible purpose of the Gutenberg plugin (which was eventually included in the WordPress core\footnote{``in the WordPress core'' means that once you install the latest version of WordPress, you have this thing whether or not you want it or need it.}) was generally presented as a way to make WordPress \textit{easier} to use for non-technical users. One of the nice things about blogging software is that it levels the playing field for mounting a bully pulpit of your own—getting online is largely a matter of logging on, rather than building something from scratch. I used to think that this was a good thing, but the last ten years has taught me that giving idiots a bigger and better soapbox is probably \textit{not} a good idea. We should have the digital equivalent of ``you must be this tall to ride this ride'', which used to be a basic knowledge of HTML. Maybe we should bring that back. But it didn't really take a genius (because I am \textit{not}, in any way, shape, or form, a genius) to figure out the \textit{real} purpose of Gutenberg, and that was to basically squash all of those competing companies that provided page-building plugins out of existence. @@ -48,15 +48,15 @@ The entire point of WordPress was that it made getting on the web easier for peo I did protest in the WordPress forums. I pointed out that this could be a great feature for \textit{some} users, and that it might useful in \textit{some} cases, but not all, and thus should remain as a plugin and not incorporated into core. -My comments did not fall on deaf ears. Instead, they fell on all-too-attentive ears who deleted my comments and posts. They also—without notice or warning—deleted my plugins from the WordPress plugin directory. I sent emails asking why, and got generic responses in return that were linked to an equally generic ``your plugin may be deleted if…'' kind of page, which listed a number of reasons (reasons which seemed eminently reasonable to me, but none of which I had done) why your plugins might be deleted from the repository, but none of which applied to me. This means, of course, that there is an unwritten rule that your plugins may be deleted if you do not march in lock-step with The Powers That Be. But, of course. +My comments did not fall on deaf ears. Instead, they fell on all-too-attentive ears who deleted my comments and posts. They also—without notice or warning—deleted my plugins from the WordPress plugin directory. I sent emails asking why, and got generic responses in return that were linked to an equally generic ``your plugin may be deleted if…'' kind of page, which listed a number of reasons why your plugins might be deleted from the repository, reasons which seemed eminently reasonable to me, but none of which I had done. This means, of course, that there is an unwritten rule that your plugins may be deleted if you do not march in lock-step with The Powers That Be. But, of course. I've long been suspicious of the WordPress business model. It is often described as an open source project, and indeed, wordpress.\textit{org} is. In fact, it \textit{has} to be, since it was originally a fork of the \textsf{b2/cafelog} project.\footnote{Alas, the \texttt{cafelog} domain is now owned by a Singaporean gambling company. Such is life in late-stage capitalism.} Like other oligarchs, Matt Mullenweg didn't invent \textit{anything}—he just took something that previously existed, put his own label on it, and called it his own. -I don't have too much issue with this, but what's unique in this situation is that wordpress.\textit{com} is \textbf{not} open source. It's a for-profit company that uses the open source WordPress software to sell websites to other people. There are lots of companies out there doing much the same thing. In fact, just about every webhosting company out there offers WordPress as a one-click install. (A long time ago, I was one of them, in my own small way, hosting websites built on WordPress for small businesses.\footnote{This business went away because a lot of small business owners make bad business decisions—on average, most small business go out of business in less than five years. Also, a lot of them decided to move their websites to Wix and Squarespace, thinking they would get more exposure as a result. Guess what? They didn't. You could ask them, but they've all gone out of business now. I did tell them, but they chose to believe random internet strangers who gave them easy answers, instead of me, an actual person who gave them difficult answers. Such is life.}) +I don't have too much issue with this (if that's the direction they want to go, then that's the direction they want to go, and I am under no obligation to follow along), but what's unique in this situation is that wordpress.\textit{com} is \textbf{not} open source. It's a for-profit company that uses the open source WordPress software to sell websites to other people. There are lots of companies out there doing much the same thing. In fact, just about every webhosting company out there offers WordPress as a one-click install. (A long time ago, I was one of them, in my own small way, hosting websites built on WordPress for small businesses.\footnote{This business went away because a lot of small business owners make bad business decisions—on average, most small business go out of business in less than five years. Also, a lot of them decided to move their websites to Wix and Squarespace, thinking they would get more exposure as a result. Guess what? They didn't. You could ask them, but they've all gone out of business now. I did tell them, but they chose to believe random internet strangers who gave them easy answers, instead of me, an actual person who gave them difficult answers. Such is life.}) The key difference between WordPress and all those other companies is that Matt Mullenweg holds the keys to \textit{both} wordpress.org \textit{and} wordpress.com. All the hundreds and thousands of people who have contributed hundreds of thousands, if not millions, of hours of their labor to wordpress.org—a non-profit open-source project—have also been forced to contribute those same hours to wordpress.com—a for-profit company. And because Mullenweg has control over both, he can direct all those volunteers to direct their work in a way that benefits not just the non-profit, open-source project, but also the for-profit company. -This is a tremendous conflict of interest. Part of the purpose of the Gutenberg project was to make all those page-building plugins in the WordPress plugin repository unnecessary—and to impact the companies producing them with a financial hit, since most of them include both free (but limited) and paid (and thus, fully-featured) options. If their customers no longer need those plugins because their capabilities are now part of WordPress core, those companies lose out on income, and possibly go out of business, meaning that wordpress.\textit{com} has fewer competitors.\footnote{Squashing your competitors is a feature, not a bug, of capitalism. If it weren't we wouldn't need anti-trust laws, would we?} +This is a tremendous conflict of interest. Part of the purpose of the Gutenberg project was to make all those page-building plugins in the WordPress plugin repository unnecessary—and to impact the companies producing them with a financial hit, since most of them include both free (but limited) and paid (and thus, fully-featured) versions. If their customers no longer need those plugins because their capabilities are now part of WordPress core, those companies lose out on income, and possibly go out of business, meaning that wordpress.\textit{com} has fewer competitors.\footnote{Squashing your competitors is a feature, not a bug, of capitalism. If it weren't we wouldn't need anti-trust laws, would we?} And now that WordPress (.org? .com? I'm not sure which anymore.) has attacked WPEngine for not ``supporting'' the wordpress.org project, we see that this is not really about promoting open-source projects but about yet another oligarch (or in this case, a wannabe oligarch; Mullenweg is small peanuts compared to others) trying to consolidate his\footnote{It's interesting to note that all oligarchs are male.} power, and drive all of its competitors out of their business either by hook or by crook, it seems. diff --git a/006/chapters/styling_text.tex b/006/chapters/styling_text.tex index 8a74c1d..44f1423 100644 --- a/006/chapters/styling_text.tex +++ b/006/chapters/styling_text.tex @@ -43,7 +43,7 @@ You can see this in action if we compare five of the same characters with differ \item[] \texttt{WWWWW} WWWWW \end{itemize} -You can easily see that the each letter in a monospace font all takes up the same amount of space as every other letter, but in the second set you can see that letters in a proportional font take up widely different amounts of space.\footnote{Again, this is a remarkably difficult concept for some people to understand. Again, see most of chapter \ref{flashcards}.} +We can easily see that the each letter in a monospace font all takes up the same amount of space as every other letter, but in the second set we can see that letters in a proportional font take up widely different amounts of space.\footnote{Again, this is a remarkably difficult concept for some people to understand.} Interestingly, both proportional and monospace fonts can be either serif or sans-serif. The first three issues of this zine used a sans-serif monospace font for the code samples. I've never particularly cared for most sans-serif fonts, but I learned I could pass the \texttt{[nott]} option to the \textsf{kpfonts} package, which prevents it from modifying the default fixed width fonts. @@ -81,7 +81,7 @@ Almost all of the text you read is ``normal'' weight, but \textbf{this bit is in \subsection{Size} -Size is easy to figure out: it just refers to how large a bit of text appears, either on screen or on paper. In reality, a typeface's size is much more complicated than that. Font sizes are usually measured in \textbf{points}, the size of which has varied over the years. With digital printing, points are usually defined as being \nicefrac{1}{72} of an inch, or exactly $0.352\bar{7}$ millimeters. (I could go on at length about this, but I won't. If you are interested, you might want to read \kref{https://en.wikipedia.org/wiki/Point_(typography)}{https://en.wikipedia.org/wiki/Point\_(typography)}.\footnote{I'm not going to talk about type size here, because it's fairly straightforward in \LaTeX{} and I also mentioned how to get specific font sizes in issue \#4.} +Size is easy to figure out: it just refers to how large a bit of text appears, either on screen or on paper. In reality, a typeface's size is much more complicated than that. Font sizes are usually measured in \textbf{points}, the size of which has varied over the years. With digital printing, points are usually defined as being \nicefrac{1}{72} of an inch, or exactly $0.352\bar{7}$ millimeters. (I could go on at length about this, but I won't. If you are interested, you might want to read \kref{https://en.wikipedia.org/wiki/Point_(typography)}{https://en.wikipedia.org/wiki/Point\_(typography)}.\footnote{I'm not going to talk about type size here, because it's fairly straightforward in \LaTeX{} and I also mentioned how to get specific font sizes in issue \#4. I did not realize that I was touching the tip of the typographical iceberg, alas.} \section{Semantic Formatting} @@ -97,11 +97,9 @@ In \LaTeX{}, the command for emphasizing text is \verb|\emph{}|. This gene \section{Commands and Environments} -\LaTeX{} has both modal commands that change \textit{all} the text following that command, and environments that change the text only within that environment. +\LaTeX{} has both switch commands that change \textit{all} the text following that command, and local commands that change the text only within the argument of that command. -\paragraph{Notes:} Most document classes (but not all) use a roman (that is, a serif) family by default; to set entire passages in a different shape, use one of the three shape \texttt{} switch commands. \verb|\textrm{}| can be used to return to a roman font in an extended passage of either sans-serif or monospace text, for example. - -Likewise, \verb|\upshape| can be used to return a regular shape in an extended passage of italic, slanted, or small caps text. Similarly, to return to a regular shape in a shorter passage of italic, slanted, or small caps text, you can use \verb|\textup{}|. \verb|\textmd{}| can be used in the middle of a long passage of bold faced text to omit a word or two from being bold. +\paragraph{Notes:} Most document classes (but not all) use a roman (that is, a serif) family by default; to set entire passages in a different shape, you can use one of the three shape \texttt{} switch commands. \verb|\textrm{}| can be used to return to a roman font in an extended passage of either sans-serif or monospace text, for example. These commands are summarized in the following table. It's a lot easier to remember them when you know what characteristic (family, shape, series) you are targeting, and what the two-letter code (\texttt{rm}, \texttt{bf}, etc.) stands for. \textbf{Note:} An asterisk (*) indicates the typical default for most document classes. @@ -126,7 +124,7 @@ These commands are summarized in the following table. It's a lot easier to remem cell{9}{1} = {r=2}{c}, cell{11}{1}= {c=2}{l}, } -& Characteristic & Switch Command & Command \\ +& Characteristic & Switch Command & Local Command \\ \rotatebox[origin=c]{90}{Family} & Roman* & \verb|\rmfamily| & \verb|\textrm{}| \\ & Sans-Serif & \verb|\sffamily| & \verb|\textsf{}| \\ & Monospace & \verb|\ttfamily| & \verb|\texttt{}| \\