I loyally enjoy running Debian Stable. I am with less enthusiasm accustomed to GNOME, after years of habit and customizations on which I have come to rely. But Debian has some disadvantages: for me, it was that (apparently) GRUB was not always configured correctly after installation to a random laptop. Meanwhile Linux Mint (inlcuding LMDE) installs are always solid. And I am too thick to troubleshoot GRUB. I found that I can have the best of both worlds.
Linux Mint is a popular and highly-recommended Linux distribution based on Ubuntu. I avoid Ubuntu, although Linux Mint overcomes many of my objections (by removing snaps and other Canonical transgressions). But there is also a Linux Mint Debian Edition (LMDE) in which Linux Mint user affordances, including its Cinnamon desktop environment, are built atop Debian instead. (For the record, I install Linux Mint on machines that I give to people who want to try Linux. Everything just works, reliably, and Cinnamon is a great entry point for Windows refugees, with a nice familiar look and feel.)
To my surprise, it turns out that it is possible to completely remove Cinnamon and its dependencies from LMDE and replace it with GNOME. The resulting experience is very similar to a Debian GNOME install, with the following differences (that I take to be advantages):
Start with a fresh install of Linux Mint Debian Edition (LMDE 7 “Gigi”) based on Debian 13 “Trixie.”
Open a terminal and bring everything up to date. This could take awhile, but it cannot be skipped (I checked). I didn’t bother to try to determine which dependencies are important.
apt update apt upgrade reboot
tasksel.
The most reliable way to install GNOME is via tasksel.
sudo apt install tasksel sudo tasksel
From the tasksel menu:
Choose software to install: [*] Debian desktop environment [*] ... GNOME [ ] ... Xfce [ ] ... GNOME Flashback [ ] ... KDE Plasma [ ] ... Cinnamon [ ] ... MATE [ ] ... LXDE [ ] ... LXQt
select both Debian desktop environment and GNOME.
Another menu will appear for choosing a “display” (login) manager. I prefer gdm3 because it follows GNOME customization settings.
Default display manager:
gdm3
lightdm
Reboot again. Note that login is now via gdm3 and that your default login is now into GNOME.
You certainly could stop here and keep Cinnamon installed. You could also leave all the Linux Mint default Cinnamon apps installed. But I don’t want any of this stuff. The mint* packages are cosmetic user-interface stuff that customizes Cinnamon.
sudo apt autoremove --purge cinnamon* mint*
After that last step, log out and log in again. Note: some icons might be missing in e.g. Nautilus windows; use GNOME Tweaks (sudo apt install gnome-tweaks)
Appearance → Styles → Icons → Adwaita (default) to restore the GNOME defaults.
I was surprised that I could remove all of the cinnamon* and mint* packages from LMDE without breaking anything. And then to get what appears to be a nice stock Debian/GNOME environment, with the benefits of Linux Mint.
I was in high school during the 1980s. In a little rural town in Ohio where casual racism was perfectly commonplace. Black History Month had been around for 15 years, and people already loved to complain about “Isn’t EVERY month Black History Month?”
Politicians were fighting over the idea of a national holiday to honor Martin Luther King. There were two positions: “Of course! How can we not?” and “IMPOSSIBLE! UNNECESSARY! WE CAN’T JUST HAND OUT NATIONAL HOLIDAYS LIKE KLEENEX RARRRR”
It would be an exaggeration to say I had never met a black person, but I sure could not have said that I knew any black people. My high school had two or three black kids out of six or seven hundred? Two Jewish families, one kept it secret. One Asian family? Kids who were not white stuck out.
I was a sensitive kid. I hated, I hated, I hated the racism, the anti-semitism, the misogyny we were all marinated in. I was lucky: I had an exceptional US history teacher, Mr. Jim Fuller. He deserves a shoutout. I loved history class. He showed us enough history for us to see that a lot of black history had been left out. I was able to see that black history is American history, and I was angry to see it left out. I felt that it was an injustice to us, to the white kids, to exclude black history from our shared history.
I understood that the resistance to MLK Day and Black History Month represented the desire to make black people invisible. But I thought it was just that they wanted to erase black history in order to keep us from feeling sympathy to black people, to keep us from being inflamed with outrage over the long litany of injustices against our fellow citizens. Against the injustices of slavery, of a half-assed Reconstruction, of Jim Crow, of a half-assed, foot-dragging response to the Civil Rights Movement. I thought it was just a racist rejection of empathy.
But after high school, as I continued to study history, as I continued to read, as I found black authors to read, I realized that it was much more. It was not just a rejection of empathy. I realized that the racist establishment’s greatest fear was not that white high school kids would empathize with black Americans. I realized that the racist establishment’s greatest fear is that white high school kids will find black heroes to admire. Their greatest fear is that white kids will identify with black American heroes.
I realized that they wanted to erase black history, not to keep me from empathizing with black Americans. I realized they wanted to erase black history so I would not find bell hooks, or Angela Davis, or Kevin Alexander Gray, or Cornell West, or Amiri Baraka, or Frederick Douglass, or James Baldwin, or Paul Robeson. To keep me from aspiring to be like them. So that I would not aspire to reach down deep and find the courage to think and write and speak out as incisively and as honestly and most of all as bravely as my black heroes.
That’s what Black History Month means to me.
]]>
I love mu4e for dealing with email under Emacs. It’s a great package itself, but of course the killer feature is that it’s Emacs, and with a little Emacs Lisp you can make it do email how you want to do email. I mean I know you don’t want to do email, but still.
I use Fastmail, which I can recommend overall. I have only a few top-level folders:
Inbox work personal Spam Drafts Sent Archived Trash
I have quite a few filters set up so that everything not to my work email (and a few other criteria) go into personal, and work mailing lists and other low-priority stuff go into work. Meanwhile lots of garbage gets ruthlessly sent straight to Trash. And Fastmail is quite good (both Type I and Type II good) at detecting Spam. Of course every outgoing message goes to Sent.
The one good thing about the years I spent in Gmail was acquiring the habit that emails are either not done (in the GTD sense) until they are put into Archive, or they are filed irreversibly into Archive at which time they are done done done. Every email has a binary state: not yet in Archive and pending action (including a mere reply), or put into Archive. In short, Inbox is enriched for high-priority messages because lower-priority messages go to work and personal. From each of those three, I step through messages and file them Archive after they are done.
This workflow, refined over two decades, works very well for me.
Finally, I have two virtual folders, mu4e searches that are saved as ’bookmarks,’ that I call Unread and Evacuate. The former shows me everything unread in Inbox, personal, and work, for rare times when I prefer to process them all at once. The latter shows me everything in those folders that is already read, but not yet sent to Archive. Pending action, in other words, waiting to be evacuated to Archive.
Thus, many times a day I can browse through Unread emails, quickly in mu4e or even on the Fastmail app on my phone, and triage away low-priority messages, immediately deal with urgent messages, and know that the ones I ignore for the time being are waiting for me to Evacuate later.
;;; "Unread" bookmark is everything not yet marked read ;;; except messages already filtered directly to Trash ;;; or automatically marked as Spam. (defcustom jeh/mu4e-bookmark-unread "flag:unread AND NOT flag:trashed AND NOT maildir:/Spam" "String for mu4e search of 'Unread' messages.") ;;; "Evacuate" bookmark is kinda the converse of unread: ;;; message that have been marked as read, but not yet ;;; refiled into Archive. Pending action, in other words. (defcustom jeh/mu4e-bookmark-evacuate (concat "flag:seen and " "not (" " flag:trashed" " or maildir:/Sent" " or maildir:/Archive" " or maildir:/Scheduled" " or maildir:/Drafts" " or maildir:/Trash" " or maildir:/Spam" ")") "String for mu4e search for 'Evacuate' or pending messages, read but not yet refiled in Archive.") (setq mu4e-bookmarks `((:name "Inbox" :key ?i :query "maildir:/Inbox") (:name "Work" :key ?w :query "maildir:/work") (:name "Personal" :key ?p :query "maildir:/personal") (:name "Drafts" :key ?d :query "maildir:/Drafts") (:name "Spam" :key ?s :query "maildir:/Spam") (:name "Trash" :key ?t :query "maildir:/Trash") (:name "Sent" :key ?n :query "maildir:/Sent") (:name "Archive" :key ?a :query "maildir:/Archive") (:name "Evacuate" :key ?e :query ,jeh/mu4e-bookmark-evacuate) (:name "Unread" :key ?u :query ,jeh/mu4e-bookmark-unread)))
I’ve had this working nicely in mu4e for a couple years.
But something annoyed me!
Archive and Sent have tens of thousands of messages, while all the other folders usually have less than a dozen. (Honest to god, this system keeps me at a calming steady state of Inbox Zero with a resolution of 24–48 hours, which my Special Brain relies heavily on for mental health.)
My preference in the mu4e “headers” buffer is
Archive, Sent, and in arbitrary searches (which can have hundreds or thousands of hits), in order to prioritize recency and relevance, butInbox, personal, and work, in order to prioritize pending tasks by age.Toggling sorting manually was so intolerably not automated by Emacs!
So I just wrote a couple of lines of Emacs Lisp. The key symbols to know are mu4e-search-change-sorting and mu4e-search-bookmark-hook.
;;; Inbox-type folders should be sorted 'ascending (defcustom jeh/mu4e-reverse-sort-bookmarks `( "maildir:/Inbox" "maildir:/work" "maildir:/personal" "maildir:/Drafts" "maildir:/Spam" "maildir:/Trash" ,jeh/mu4e-bookmark-evacuate ,jeh/mu4e-bookmark-unread ) "Sort these searches `ascending', by OLDEST at top.") (defun jeh/mu4e-set-sort-order-by-bookmark (search) "Set sort for searches to descending by date, unless the search was a member of jeh/mu4e-reverse-sort-bookmarks in which case sort ascending by date." (if (member search jeh/mu4e-reverse-sort-bookmarks) (mu4e-search-change-sorting :date 'ascending) (mu4e-search-change-sorting :date 'decending) )) (add-hook 'mu4e-search-bookmark-hook #'jeh/mu4e-set-sort-order-by-bookmark)
Ahhhhhhh. That feels better.
Every year my institution measures faculty productivity by requiring us to submit a report of our annual activities. This year I noticed that two sections had silently disappeared.
Climate and Diversity Activities. Creating a welcoming climate, thereby maximizing success for all of our members is an important goal for the college. List your contributions to this goal here.
Increasing the participation of women and under-represented minorities is an equally important goal at the department, college and university levels. List the contributions you have made toward increasing diversity with respect to your instructional, research and service activities.
The entries still exist in the awful web platform through which we are forced to submit our responses. But when you generate the report, those headings and any responses are simply not included in the document. There was no announcement, no policy change, just a silent elision of our work. The current university administration was installed in 2022. Although the new provost is a laughable AI-atollah, as far as we can tell none of them seem to be fascists. But in that time we have not been able to construct an instrument sufficiently powerful to detect their integrity.
My disgust at this development prompted me to write the following. I submitted an abridged version of it in my portfolio, as space permitted.
I feel the need to stress the word “disgust.”
The continuing attack on “diversity, equity, and inclusion” must be contextualized within the continuing attack on education broadly. Indeed, in the broadest context, the attack on science itself resembles and reinforces the attack on the arts and humanities. Both attacks share deep historical roots in this culture, and both share the same political aims.
Setting personal politics aside—setting morality aside—there are urgent, strictly professional responsibilities that compel educators to defend these values and the institutional activities that uphold them.
Establishing authority in the classroom requires establishing trust with all of the students. It requires establishing trust between and among all of the students. Carrying out effective pedagogy requires creating an engaging environment for every student. An engaging environment must be many things, but it cannot be a hostile environment.
Every component of the educational mission is directly undermined within an institution that permits the perception of indifference to injustice. In short, education requires cooperation, which in turn requires social morality.
My wife and I are both first-generation college graduates. We both have (invisible) disabilities. We both earned bachelor’s and doctoral degrees from globally preeminent public universities. We both subsequently devoted our careers to teaching at public universities. (I was also a non-traditional student: I was obliged to leave college without a degree, eked out a living for three years, and returned to finish a bachelor’s degree at age 28. Statistically speaking, I dramatically beat the odds.)
Education ennobled both of us. Science and literature are ennobling, travel and languages are ennobling, so many of the things for which education opened doors for us have been ennobling. Do you know what else is ennobling? Being able to pay our fucking bills. The security that nobody in our families had enjoyed before we did is ennobling.
We both staked our careers on the core belief that we have a responsibility to contribute back to the system that produced us, to uphold the standards of excellence to which we were held, to provide each and every student with all of the support that we received (or, did not receive), and to represent ourselves to our students and to our colleagues as who we are.
Incidentally, my maternal grandmother’s entire extended family were murdered in Nazi death camps, except for her sister and mother who somehow survived. So I suppose that’s another thing to which I am forced to bear witness, including in the classroom.
What are we even talking about when we say “diversity, equity, and inclusion?” It means recognizing, at least, this: every person is unique. A human being is not an instantiation of a category. This observation, like many truisms, circumscribes and transcends the fractal outline traced between the trivially mundane and the transcendently profound. This insight is worth ruminating deeply about. It contains the deep meaning of the slogan “Representation Matters.”
Each human exists independently of categories. Conversely, programs of intimidation targeting human categories purposely elicit very real terror in actual individuals.
I simply refuse to permit any students to feel threatened in my classroom. When I noticed that foreign students stopped attending my classes after the immigration raids of early 2025, I took it personally, because it is both a political and a professional affront. When queer students confide to me their fear of violence on campus, I take it personally, because it is both a political and a professional affront. I am confronted with students who before my very eyes tremble with the fear of being deported, students who can’t afford food, students male and female visibly scarred by a pervasive culture of rape, students who have accustomed themselves to the spectre of mass death from assault rifles in the auditorium—all intolerable, all familiar.
Threats to our students are direct attacks on the educational mission and tangible disruptions to our work. I repeat: our professional responsibilities compel our active defense of social values. If this conclusion is “political,” it is because the political, the very ugliest political, has violated the academy.
In this context, every educator is called to represent themselves as a visible advocate of civil values. Every institution must protect space for this representation.
Each of these modes of representation matters. Public expression of solidarity matters even more. Institutional support of these values matters even more.
Many of us in higher education use Emacs to produce course materials, and these must conform to the accessibility requirements of the Americans with Disabilities Act. We often export Org mode documents to LaTeX to produce very nice PDF output. But until very recently, LaTeX could not produce tagged PDFs that conform to the PDF/UA accessibility standard. Until how recently? Only starting with TeX Live 2025.
In short, creating accessible PDFs from Org mode means having to install this new version of TeX Live (the massive, annually-updated software package of all things TeX and LaTeX).
I am still on Debian 12, whose stable repositories provide TeX Live 2022.
Even the most recent Ubuntu repositories only appear to package TeX Live 2024.
The advice from the TeX Live maintainers is to remove the .deb installation and install TeX Live 2025 fresh, as below.
The steps presented here might work also for Ubuntu and later versions of Debian, but that’s only a wildly hopeful speculation that I cannot test.
Set aside ninety minutes for this installation!
I successfully installed TeX Live 2025 on multiple machines running Debian 12 with the following steps. Note that I closely followed the instructions from the Debian wiki and the TeX Live website on TUG. I have added some clarifying remarks that might be helpful.
.deb version of TeX Livesudo apt autopurge texlive*
Just uninstalling TeXLive takes a couple minutes. If you don’t remember when you installed these packages, wait until you see how many dependencies they have. TeX Live is the biggest package you’re likely to find installed on any Linux system. (No, I probably don’t need every module, but it has always been much easier to install the whole monolith than to deal with missing dependencies.)
cd /tmp wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz tar xvf install-tl-unx.tar.gz cd install-tl-2* sudo perl ./install-tl --no-interaction
The instructions have a cute little note # may take several hours to run which prompted my LOL post to Mastodon. (Again, I choose to install everything here, 4,958 TeX Live packages. In fact the instructions presume a full install.)
It took about an hour on my newish desktop with Ethernet, almost two hours on my ten-year-old laptop over Wi-Fi.
PATH
It will be of the form /usr/local/texlive/2025/bin/PLATFORM, likely /usr/local/texlive/2025/bin/x86_64-linux.
Be certain that root can run the TeX Live binaries too!
The way I did so was to edit /etc/profile, find the appropriate lines setting the path, and edit them to add that directory. The result looks like so:
if [ "$(id -u)" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/texlive/2025/bin/x86_64-linux" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/texlive/2025/bin/x86_64-linux" fi export PATH
aptsudo apt install tex-common texinfo lmodern
apt
This part is opaque to me. It appears we are using something called equivs to wrap our raw-dog TeX Live install into a .deb in order to trick the package manager into playing nice with it, but I am innocent of the mechanism here.
sudo apt install equivs
mkdir /tmp/tl-equivs && cd /tmp/tl-equivs
equivs-control texlive-local
We are now in a temporary directory that contains a configuration file for our dummy package called texlive-local.
Replace the contents of that file with the following:
Section: misc Priority: optional Standards-Version: 4.1.4 Package: texlive-local Version: 2025.99999999-1 Maintainer: you <[email protected]> Provides: asymptote, chktex, cm-super, cm-super-minimal, context, dvidvi, dvipng, dvisvgm, feynmf, fragmaster, jadetex, lacheck, latex-cjk-all, latex-cjk-chinese, latex-cjk-chinese-arphic-bkai00mp, latex-cjk-chinese-arphic-bsmi00lp, latex-cjk-chinese-arphic-gbsn00lp, latex-cjk-chinese-arphic-gkai00mp, latex-cjk-common, latex-cjk-japanese, latex-cjk-japanese-wadalab, latex-cjk-korean, latex-cjk-thai, latexdiff, latexmk, latex-sanskrit, lcdf-typetools, lmodern, luatex, musixtex, preview-latex-style, ps2eps, psutils, purifyeps, t1utils, tex4ht, tex4ht-common, tex-gyre, texinfo, texlive, texlive-base, texlive-bibtex-extra, texlive-binaries, texlive-common, texlive-extra-utils, texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended, texlive-fonts-recommended-doc, texlive-font-utils, texlive-formats-extra, texlive-games, texlive-humanities, texlive-humanities-doc, texlive-lang-all, texlive-lang-arabic, texlive-lang-cjk, texlive-lang-cyrillic, texlive-lang-czechslovak, texlive-lang-english, texlive-lang-european, texlive-lang-japanese, texlive-lang-chinese, texlive-lang-korean, texlive-lang-french, texlive-lang-german, texlive-lang-greek, texlive-lang-italian, texlive-lang-other, texlive-lang-polish, texlive-lang-portuguese, texlive-lang-spanish, texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra, texlive-latex-extra-doc, texlive-latex-recommended, texlive-latex-recommended-doc, texlive-luatex, texlive-math-extra, texlive-metapost, texlive-metapost-doc, texlive-music, texlive-pictures, texlive-pictures-doc, texlive-plain-generic, texlive-pstricks, texlive-pstricks-doc, texlive-publishers, texlive-publishers-doc, texlive-science, texlive-science-doc, texlive-xetex, thailatex, tipa, tipa-doc, xindy, xindy-rules Depends: Architecture: all Description: My local installation of TeX Live 2025. A full "vanilla" TeX Live 2025 http://tug.org/texlive/debian#vanilla
And finally:
equivs-build texlive-local sudo dpkg -i texlive-local_2025.99999999-1_all.deb
Reality check: let’s make sure we can in fact use our new TeX Live install to produce a minimal accessible PDF. Note that the polyglossia package is a replacement for the babel package that adds accessibility features. But the \DocumentMetadata{} command does the heavy lifting for producing tagged PDFs. It must come before \documentclass{}.
\DocumentMetadata{ lang = en, pdfstandard = ua-2, pdfstandard = a-4f, tagging = on } \documentclass{article} \usepackage{polyglossia} \setdefaultlanguage[variant=US]{english} \begin{document} \section{Lorem ipsum} I know I promised US English but here's some nonsense not-quite-Latin. Est eveniet accusamus dolor et. Possimus fugit consectetur alias iure suscipit facere est exercitationem. Sed enim sapiente atque. Voluptas et tempora est. Recusandae velit qui nesciunt. Molestiae excepturi occaecati doloribus. Eum sunt optio aut consequatur doloremque. Quo eveniet rerum aut dicta impedit quia ut autem. Dolor nisi qui architecto sunt. Corporis quidem aut natus est quidem pariatur. Error aut repellat nobis velit corporis voluptatem. Libero hic nesciunt omnis ut quam minus soluta. Ad quo culpa facere pariatur voluptas et quis nostrum. Pariatur tempore ipsum voluptatibus iusto repudiandae. Earum ea quo saepe autem et. Eum ratione eaque non dolorum ut fugit vitae dolorum. \end{document}
Save this file as minimal.tex and run
lualatex minimal.tex
(On its first run, it will take a minute to build a font names database.)
If it doesn’t work, well, I guess you have some debugging to do? Note that the LuaLaTeX engine is required for all the accessibilty new hotness. (TIL it has been the recommended engine for a year.)
Note that I am stealing everything here from Kenny Ballou’s comprehensive and excellent post to which I have little to add.
Add these expressions to your Emacs configuration.
Set the default engine to lualatex but allow individual files to override it (in case you have some weird old files, I suppose).
(setq org-latex-compiler "lualatex") ;;; %latex gets replaced with org-latex-compiler ;;; OR overridden by the #+LATEX_COMPILER header (setq org-latex-pdf-process '("latexmk -f -pdf -%latex -interaction=nonstopmode -shell-escape -output-directory=%o %f"))
Insert the \DocumentMetadata{} command before \documentclass{} for the article document type. Note that as written, only the article documentclass is defined for export. You might already have a org-latex-classes declaration in your config, in which case you should modify it to replace the article class definition with this one.
(defvar org-latex-metadata "\\DocumentMetadata{lang = en, pdfversion = 2.0, pdfstandard = ua-2, pdfstandard = a-4}" "LaTeX preamble command to specify PDF accessibility metadata.\nIt must appear before the \\documentclass{} declaration.") (setq org-latex-classes `( ("article" ,(concat org-latex-metadata "\n" "\\documentclass[11pt]{article}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) ))
I have not yet attempted to make the corresponding definition for Beamer. When I get it to work I will update this post.
(Note finally that the testphase key in the \DocumentMetadata{} command has been deprecated, so I’ve removed it.)
Here is a minimal Org document to test export:
#+title: A nice title for a PDF
#+subtitle: a test of tagged PDF accessibility
#+latex_header: \usepackage{polyglossia}
#+latex_header: \setdefaultlanguage[variant=US]{english}
Est eveniet accusamus dolor et. Possimus fugit consectetur alias
iure suscipit facere est exercitationem. Sed enim sapiente atque.
* Heading 1
** Subhead 1.1
Voluptas et tempora est. Recusandae velit qui nesciunt. Molestiae
excepturi occaecati doloribus.
** Subhead 1.2
Eum sunt optio aut consequatur doloremque. Quo eveniet rerum aut
dicta impedit quia ut autem. Dolor nisi qui architecto sunt.
* Heading 2
** Subhead 2.1
Corporis quidem aut natus est quidem pariatur. Error aut repellat
nobis velit corporis voluptatem. Libero hic nesciunt omnis ut quam
minus soluta. Ad quo culpa facere pariatur voluptas et quis nostrum.
** Subhead 2.2
Pariatur tempore ipsum voluptatibus iusto repudiandae. Earum ea quo
saepe autem et. Eum ratione eaque non dolorum ut fugit vitae
dolorum.
It’s important to remember that the accessibility functionality in LaTeX is still new and incomplete. But it’s a big step from zero to very good.
For me and everyone who posts our course materials to Canvas, the touchstone is the “Ally Accessibility Checker,” which is also not perfect. For instance, it insists that PDFs produced by LaTeX are missing a title when they are not. If I can get to the bottom of that bug, I’ll update this post.
You can respond on the original Mastodon thread.
I never write poetry. But this one just spilled out.
In the checkout line
we have spoken our broken Spanish in public
with the blushing lady from Mexico.
Sharing photos of our kids, our eyes glimmering.
Immigration agents could not interfere.
In the vaulted auditoriums
we have taught the sciences,
and we have taught the humanities,
and we will teach them again and again,
even after they withdraw their permission,
even after they take away our paychecks,
even after they lock the auditorium doors.
The ayatollahs of ignorance cannot stop us.
In the shops and the offices
we have lowered our voices,
we have sealed our trust with handshakes,
and we have signed union cards with grim sincerity.
The billionaire sociopaths were elsewhere, far away.
Everywhere and always
we have laughed behind the backs of these small men,
ridiculed their macho bullshit,
smirked at the weakness they wear on their sleeves,
laughed at what the small strange men mistake for strength.
Their impotence and their fear shouts louder than their bluster.
In every encounter with the vulnerable
we extended welcome and we reflected dignity,
we have found a kind word to say,
we have wryly promised the trans kid
that we will hide her in our attic.
Let the bile spill from the monsters’ whiny little mouths.
From the clutches of the hateful ghouls, right out of their laps,
we have snatched back the teachings of Jesus.
With each gesture of humanity we enter the Kingdom of God.
Their vengeful god is absent: we exalt love in its place.
The false prophets stumble, twisted and naked. Sawdust falls from their eyes.
At every turn
our empathy exposes us as lunatics and perverts:
fanatics for compassion, wild-eyed enemies of lawlessness,
extremists for education, militants for medicine.
The shameless vilify us—they ennoble us with their lies.
Under fluorescent lights, in countless unlikely spots,
we come together and we build the third places.
We reveal to one another our numbers.
In the third places, we need not gasp: we can breathe.
In the third places, we inhale sanity—we fill our lungs with belonging.
They rampage and they destroy. We build and we build.
We will look back and marvel at what little effort it took to reject surrender.
We will look back and rejoice that we did not fail to find our courage.
On Mastodon, someone in my timeline [update 2025: on an instance that is now gone, alas] asked how to debunk the anti-privacy argument that goes “If you have nothing to hide, you have nothing to fear.”
My response was too long for one toot.
Was Diogenes correct? When he taught by example that if we are honest, we should carry out openly and in the public square all of our bodily functions? That we should do all our peeing and pooping and barfing and ejaculating in public? By one small step, that we should change our babies’ diapers and embrace our loved ones and caress our lovers, only in public?
Privacy is so fundamental that it resides in the human body. It expands outward in concentric circles starting with your physical contact with loved ones. Would you prefer to be the one who draws the outer circle for yourself?
Or would you prefer to leave the outer circle to be drawn by … global mega-corporations? … by a State with the power of violence over you?
Of course, Edward Snowden put it best:
Arguing that you don’t care about privacy because you have nothing to hide is no different than saying you don’t care about free speech because you have nothing to say.
Alas! Snowden made this statement on Reddit during an AMA. I wonder how long this primary source will even exist. Spare a thought for the plight of twenty-first century librarians.
]]>One of my proudest moments as a father went like this. I asked my fifteen-year-old son:
Say you have a telephone pole in Pennsylvania. And another telephone pole in Argentina. What is the angle between the two telephone poles?
He thought for a second. “How far away are they from each other?”
“Say 6,000 miles.”
He thought for another second. “Ninety degrees.”
"That’s correct! How did you get it?
“Well, the Earth is 8,000 miles in diameter, so pi times 8,000 is roughly 24,000 miles. And 6,000 is one quarter of 24,000, so it’s a ninety degree angle.”
I was super proud that he knew the diameter of the Earth, but I was even more proud that he had the ability to make the calculation. The calculation itself is trivial: in my experience, anyone can carry out this calculation. But most people lack the confidence to get to the calculation step.
When I first started dating my now-wife, her father (my now-father-in-law, my kids’ now-grandfather) loved to “show me how much he likes me” by quizzing me. The first time I visited he opened the dictionary and tried to find words that I couldn’t define. He never found one, and he was pissed. (But it still made a good impression.)
When we’d been married a few years, we had a chance to visit Argentina. Both of my wife’s parents were nervous about our flying abroad. To ease the tension, and to mess with me, my father in law asked me:
Say you have a telephone pole in Pennsylvania. And another telephone pole in Argentina. What is the angle between the two telephone poles?
I had just looked at the plane ticket (back when you got a paper boarding pass in advance) and saw that we were each about to earn 6,000 miles. I thought for a couple seconds, and I got the same answer the same way my kid did twenty years later—but not quite as fast. My father-in-law was pissed. (But it still made a good impression.)
When we got to Argentina, it was totally mind-blowing to us how plain weird it was to be in the Southern Hemisphere. We flew a few days before New Year’s Eve, and going from the shortest darkest days of winter to the longest loveliest days of summer was wonderful! (The return trip was too depressing for words.) Having Orion on the other side of the sky, and all the other constellations unfamiliar, was an experience I found disorienting to the point of terror. We kept getting turned around, trying to navigate Buenos Aires and Córdoba, because we kept unconsciously orienting ourselves with the sun to the south—except the sun was on the north side of the sky.
And then, walking one night through the balmy December streets of Córdoba, we saw an owl fly through the cone of light under a streetlamp. That was memorable enough. But then I looked at the moon, almost full. And it wasn’t the familar face of the moon.
The face of the moon was rotated ninety degrees.
I tell these stories every year in my “Genetics, Ecology, and Evolution” course. They are not at all relevant to those topics directly, but they are a withering rebuke to the idea that “eVoLuTiOn iS OnLy a tHeOrY.” It’s easy to mock the flat-earthers, but how do you know that the Earth is a sphere? How do you know that the moon orbits the Earth and the Earth orbits the sun? Photos from space don’t count: all of your evidence has to come from your own direct experience.
The idea that the Earth is a sphere in a heliocentric system is a theory. It is built from a very large set of observations within a mechanistic model in which:
This is devastating to the flat-earth model, because its explanatory and predictive power is total garbage compared to the consensus model. This model has gained consensus not because NASA and Google profit, somehow, by deceiving you. The consensus model has gained consensus because of its success.
It has been rather disappointing how few of my university students exhibit the confidence to calculate the angle subtended between New York and Buenos Aires. But that is a topic for another time.
It has been perfectly brilliant to see how many of my students come to understand the power of the scientific method—and especially the might of scientific theory—by confronting, and then overcoming, their own inability to convince me, pretending not to believe the Earth is round.
]]>One of my proudest moments as a father went like this. I asked my fifteen-year-old son:
Say you have a telephone pole in Pennsylvania. And another telephone pole in Argentina. What is the angle between the two telephone poles?
He thought for a second. “How far away are they from each other?”
“Say 6,000 miles.”
He thought for another second. “Ninety degrees.”
“That’s correct! How did you get it?
“Well, the Earth is 8,000 miles in diameter, so pi times 8,000 is roughly 24,000 miles. And 6,000 is one quarter of 24,000, so it’s a ninety degree angle.”
I was super proud that he knew the diameter of the Earth, but I was even more proud that he had the ability to make the calculation. The calculation itself is trivial: in my experience, anyone can carry out this calculation. But most people lack the confidence to get to the calculation step.
When I first started dating my now-wife, her father (my now-father-in-law, my kids’ now-grandfather) loved to “show me how much he likes me” by quizzing me. The first time I visited he opened the dictionary and tried to find words that I couldn’t define. He never found one, and he was pissed. (But it still made a good impression.)
When we’d been married a few years, we had a chance to visit Argentina. Both of my wife’s parents were nervous about our flying abroad. To ease the tension, and to mess with me, my father-in-law asked me:
Say you have a telephone pole in Pennsylvania. And another telephone pole in Argentina. What is the angle between the two telephone poles?
I had just looked at the plane ticket (back when you got a paper boarding pass in advance) and saw that we were each about to earn 6,000 miles. I thought for a couple seconds, and I got the same answer the same way my kid did twenty years later—but not quite as fast. My father-in-law was pissed. (But it still made a good impression.)
When we got to Argentina, it was totally mind-blowing to us how plain weird it was to be in the Southern Hemisphere. We flew a few days before New Year’s Eve, and going from the shortest darkest days of winter to the longest loveliest days of summer was wonderful! (The return trip was too depressing for words.) Having Orion on the other side of the sky, and all the other constellations unfamiliar, was an experience I found disorienting to the point of terror. We kept getting turned around, trying to navigate Buenos Aires and Córdoba, because we kept unconsciously orienting ourselves with the sun to the south---except the sun was on the north side of the sky.
And then, walking one night through the balmy December streets of Córdoba, we saw an owl fly through the cone of light under a streetlamp. That was memorable enough. But then I looked at the moon, almost full. And it wasn’t the familar face of the moon.
The face of the moon was rotated ninety degrees.
I tell these stories every year in my “Genetics, Ecology, and Evolution” course. They are not at all relevant to those topics directly, but they are a withering rebuke to the idea that “eVoLuTiOn iS OnLy a tHeOrY.” It’s easy to mock the flat-earthers, but how do you know that the Earth is a sphere? How do you know that the moon orbits the Earth and the Earth orbits the sun? Photos from space don’t count: confront how difficult it is for you to explain the round earth when all of your evidence has to come from your own direct experience.
The idea that the Earth is a sphere in a heliocentric system is a theory. It is built from a very large set of observations within a mechanistic model in which:
This is devastating to the flat-earth model, because its explanatory and predictive power is total garbage compared to the consensus model. This model has gained consensus not because NASA and Google profit, somehow, by deceiving you. The consensus model has gained consensus because of its success.
It has been rather disappointing how few of my university students exhibit the confidence to calculate the angle subtended between New York and Buenos Aires. But that is a topic for another time.
It has been perfectly brilliant to see how many of my students come to understand the power of the scientific method—and especially the might of scientific theory—by confronting, and then overcoming, their own inability to convince me, pretending not to believe the Earth is round.
]]>
UPDATE: It’s a package on Codeberg: I call it org-static-blog-emfed.
Follow the instructions there and let me know if you have any questions!
UPDATE: I will package it up, share it, and explain it.
This post is a test of my Emacs lisp functions to:
Notice the chicken-and-egg problem: need a toot (“status”) ID to embed in the post; need the post to link in the toot. I “solve” this conundrum by posting a toot to a not-yet-posted blog entry, then update the blog entry with the toot ID and then publish the blog right quick.
Debugging this was all live with me quickly deleting mistakes. Except somebody still saw the sausage being made behind the curtain. Yecchh.
]]>
Hey, everyone. I built a blog with Bastian Bechtold’s org-static-blog. It was
super easy—barely an inconvenience—to set it up to write posts in Emacs.
But before I start posting, I want to test Emfed, the facility I’m going to try to use to allow comments via Mastodon.
Let me know in the comments how it goes for you posting comments!
]]>