Saturday, June 20, 2026

No News is Bad News

This morning's Yahoo News headline:

"Breaking News: Hormuz closes again as more talks planned in Switzerland"

That's not news; it's just a prediction that came true.

Tuesday, June 16, 2026

Add Chopsticks to Your Toolbox

Have you ever tried to retrieve a small part from deep within a chassis? You might've wished you had a long slender pair of tongs, pliers or tweezers to reach down and grab it with. You do. That tool is a pair of chopsticks.

It helps if you know how to use chopsticks, but don't worry if don't. It's easy to fashion them into a pair of "tweezer-sticks" as shown in Figure 1, below. All you need is an elastic band (aka rubberband) and a make-shift fulcrum, such as the wrapper the chopsticks came in (rolled up into a compact wad).

Tweezers made from chopsticks, a rubberband and a wad of paper

I've used this tool to...

  • get a pebble from out of a garbage disposal
  • pick spent blossoms, a Maple tree seed or a hungry beetle from potted plants when the growth is too dense to get my fingers through
  • remove part of a Pop-Tart from a toaster (Figure 2)

Half of a mangled poptart plus a sign that requests help to rescue the other half from the toaster both in front of a toaster

I have, in fact, used a pair of twigs for a crude application of this idea, such as when I picked up a dead mouse that was in a flower bed.

But if you need to remove a wedding ring from the glowing coals of a charcoal grill, be sure to soak them in water beforehand.

Thursday, June 11, 2026

Hiring Boom

 I saw this at the top of the requirements section on a job description:

"...willing to design stuff that blows up other stuff and people"

Thank you for the candor, but no.

Monday, April 20, 2026

Small Wins -- What Can You Do In Five Minutes?

During a networking presentation, the speaker spoke about Small Wins. I liked the idea of filling in spare time by engaging in partial tasks that can lead to a big goal. The idea is to make a list of tasks you can do in five minutes. That way you can be ready for those spare moments that popup.

While the tasks are “supposed to be” in support of a goal, I prefer to figure out what I can do in five or fifteen minutes. For real. I might think I can shave my face in fifteen minutes. But in reality I can achieve that only if I don’t bother to:

  • wait for the water to heat up
  • foam up the shaving soap with the brush
  • thoroughly clean up after myself

I need 20 minutes for my complete shaving process.

I‘ve included below my list of five-minute “wins.” In some cases I’ll need to have materials or supplies nearby to achieve them. For example, in order to water plants, I keep bottles of water near a few of my thirstier plants.

Items at the bottom of the list in square brackets are for 15 minute gaps.

  • Water a plant
  • Drink a glass of water
  • Splash cold water on my face
  • Make tea
  • Do a breathing exercise
  • Do pushups
  • Chill out
  • Compare my online calendar with my weekly planner
  • Play Wordle or Connections [occasionally I’ll need 15 minutes for this]
  • Wipe down a counter top or table top
  • [Load / unload dishwasher]
  • [Make coffee]
  • [Brush the cat]
  • [Do crunches]
  • [Take a quick walk around the yard]
  • [Weed the garden]

Here are some links to review:

Friday, April 10, 2026

It Starts With a Small Favor

One time the boss asked me to sketch a new product concept in our CAD program.  After an hour or so, I'd print out a paper drawing and hand it to him.

After a few weeks he stops by and asks, "How's the project going?"  "What project?"  Apparently the little favor I did, the sketch I provided, was supposed to be /my/ new project.  I was supposed to test it and get it working and make imporvements on it (in between all the other products that customers were paying for).  This wasn't the first time I was expected to be a mind reader, but it was the most egregious example.

My job, as it was explained to me when I started, was to design and order photomasks for a new IC.  I'd also provide notes on the fabrication requirements, both backend and frontend.  After that, it was somebody else's problem.  This was easy work, and I was able to fit in with only a little training.  I had time to devote to professional development, which was lacking.

At one weekly status meeting someone reported a problem with one of the chips I designed.  Suddenly everyone was looking at me.  They expected me to know what was going on and hoped I had devised a solution, Apparently, again, I was supposed to be responsible for all aspects of its manufacturing and testing.  But I wasn't even aware that it started production.  My only response was "I don't know" sung to the tune of "How the hell should I know?"  Again I was faulted for my lack of mind reading skills.

This is how things go in a small company that lacks a mentorship program.  If someone had provided a little guidance and explicit expectations, on day one, I might've developed into the ideal engineer.

Unfortunately, this happens at home, too.  "I want to paint the window sill on the porch.  Can you buy paint for me?" my wife asked last week.  Now she's saying that it's a big job and that she might have to hire someone to help.  So the todo list that she wrote today included, "Help me paint the window sill."  I'm assuming I'll have to do it myself.  But this bothers me because you're always paint the trim last, and the entire porch needs painting.  Not only is she manipulating me into doing the job, she's manipulating me into doing it wrong.

Does this happen to anyone else?  What are your experiences?

Sunday, April 05, 2026

Some Monospace Fonts Available in Blogger

While editing my most recent post, I've been disappointed with the lone monospace font that's available in Blogger by default.  I'm referring to Courier.  The biggest problem with it is that it's very difficult (for me) to discern between l and 1.*  Here's what they look like in Courier: l and 1.

Fortunately, Google has made it easy for a user to add alternate fonts.  I listed below some of the monospace fonts you can choose.  

Based on the discernment between l/1, I like these the best (ranking in alphabetical order):

Font Name lower L vs. One
Fragment Mono l and 1
Google Sans Code l and 1
JetBrains Mono l and 1
Oxygen Mono l and 1
Reddit Mono l and 1
Source Code Pro l and 1
Ubuntu Mono l and 1
Ubuntu Sans Mono l and 1

The discernment is greatest with Reddit Mono; there's no way I'd mistake the lowercase L for the number 1.  However, I like Ubuntu Mono the best.  Not only is the discernment good, the character height is comparable to the height of the default font for this Blogger theme.  So I'll use this font for code listings from now on.


*That's lowercase L and the digit one in case you thought I pressed the same key twice. In fact I thought I pressed the same key twice, so I re-entered the characters very deliberately.

Courier the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Cousine the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Datatype the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Fragment Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Google Sans Code the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

IBM Plex Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Inconsolata the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

JetBrains Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Overpass Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Oxygen Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Reddit Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Roboto Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Share Tech Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Source Code Pro the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Ubuntu Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

Ubuntu Sans Mono the quick, red fox jumped over the brown, lazy dog. THE QUICK, RED FOX JUMPED OVER THE BROWN, LAZY DOG. 0123456789

No File Name Completion With org-insert-link? Try This

If you invoke org-insert-link (typically C-c C-l) in order to link to a local file, you might expect that pressing TAB will complete a partial path or file name.  Instead you’ll get the frustrating message “[No match].”

What you need to do instead is to invoke the command with a prefix argument like this: C-u C-c C-l. Then you’ll get the expected completion behavior with TAB.

But why is a prefix argument necessary?  It turns out that org-insert-link expects a link type at the "Insert link" prompt.  Some link types are file, bbdb, info, etc.  (To see a full list of link types, press TAB right after invoking the command, without entering anything.)

This is a powerful command.  You can, for example, enter bbd and press TAB to complete the bbdb: link type.  Then enter the first few characters of someone’s name or a business in your bbdb list of contacts, such as arth.  Upon pressing TAB, you should see completion fill in arthur.  Press again, you’ll get Arthur Dent and perhaps his email address.  Clicking on either will complete the entry.  Press ENTER to put the link into your buffer.1

Completion isn’t available for all link types.  A link to an info node, for example, has to be entered manually, although usually it’s created with org-store-link (C-c l) while point is in the info node of interest.

I encourage you to read the help for org-insert-link and org-store-link.  The two hyperlinks immediately below will take you to the online manual on gnus.org.  But if you copy the link text and yank into an org file, Emacs will open the Org manual at the page for handling links.

[[help:org-insert-link][Emacs help for org-insert-link]]

[[help:org-store-link][Emacs help for org-store-link]]

I dislike getting frustrated.  But when I’m frustrated with Emacs, I expect to learn something if I dig deep enough.  It hasn’t let me down yet.


1 This depends on whether bbdb has been loaded.  If you use bbdb and you’re not getting completion, invoke M-x bbdb and try again.

Friday, March 06, 2026

The Perpetual Calendar -- All You Really Need, Perhaps

The first day of the year can fall on only one of the seven days of the week. This year, 2026, started on a Thursday. Last year, 2025, started on a Wednesday; 2027 will start on a Friday. 2025, Wednesday; 2026, Thursday; 2027 Friday. So why bother buying a new calendar every year? Some people don’t; they use a Perpetual Calendar 1 instead.

If there were only 364 days in a year, we could keep using the same calendar each year. The number 364 is evenly divisible by 7; there are exactly 52 weeks in that hypothetical year. But that one extra day in our year forces us to have a calendar for each day of the week.

What about leap years? They occur once every four years and have 366 days. We have to “skip over” a calendar every four years. For example, the calendar for 2028 (a leap year) will start on a Saturday. The following year will start not on Sunday but on a Monday.

Thus we need fourteen unique calendars; seven have 365 days; seven have 366, owing to the addition of February 29. This is what some refer to as “The Perpetual Calendar.”

Unfortunately, if you want to keep track of religious holidays, you’ll have to pencil in all those holidays whose schedules follow the lunar calendar 2. And this involves more than figuring out the date of the Lunar New Year (aka Chinese New Year). Dates of holidays in the Abrahamic religions 3 (sometimes referred to as Judeo-Christian religions 4) also are based on the lunar calendar. This includes Christianity 5.

So is the Perpetual Calendar the only calendar you’ll ever need? That’s for you to decide.


1 https://en.wikipedia.org/wiki/Perpetual_calendar
2 https://en.wikipedia.org/wiki/Lunar_calendar
3 https://en.wikipedia.org/wiki/Abrahamic_religions
4 The term “Judeo-Christian” ignores Islam, so I looked for a more appropriate term. See https://www.draslamabdullah.com/post/the-judeo-christian-tradition-history-paradox-and-political-construction
5 Yes even Easter requires reference to the lunar calendar. It falls on the date of the first full moon after the Vernal Equinox, roughly speaking. See: https://en.wikipedia.org/wiki/Date_of_Easter

Friday, February 27, 2026

Emacs Lisp Function to Determine the Start of Engineers Week

This year, Engineers Week started on Sunday (February 22, 2026).  It always begins on Sunday of the week of George Washington's birthday. 1

Here's an Emacs Lisp function to calculate the date that Engineers Week will begin for a given year:

(defun eweek (year)
  "Returns the date on which Engineers Week begins for the year given in
YEAR.  Returns the date in the standard format for a (Gregorian)
calendar date in calendar.el, a list of integers (MONTH DAY YEAR)"
  (calendar-gregorian-from-absolute
   (calendar-dayname-on-or-before
    0 (calendar-absolute-from-gregorian (list 2 22 year))))) 
Invoking (eweek 2025) should return (2 16 2025), which was the start of Engineers Week last year.

Thursday, February 12, 2026

Amaze Your Friends – Send a Letter Without a Written Address!

You can have an unaddressed envelope arrive at someone’s address or Post Office Box.

I discovered this from my annual, end-of-year deluge of cards to friends and family.  I had printed all the recipient’s addresses on plain paper, and then cut them into address labels.  (My printer doesn’t accept labels as printed media.)  Then I affixed them to the envelopes with a glue stick.

The glue stick was left over from previous years.  So the first time I used it, the end of the stick was a bit dried out; the adhesion probably was poor as a result.  Thus the first label I had attached eventually fell off, but it stayed on long enough for the local post office to see it and generate the address at the very bottom in barcode form.

Apparently, once the originating post office prints that barcode, the mail item goes where it was intended.

If one could determine just how much adhesion is necessary to make this work repeatedly, a whole new product – Gag Labels – could be launched!  If I were to guess, the stickiness might’ve have compared well to a Post-It note that had been reused a few times.  Another approach would be to develop a temperature-sensitive glue that would irreversibly release after, say, 8 hours exposure at a temperature at or below, say, 10°C (50°F).  Perhaps this is the environment in which most mail finds itself during storage and transit.

This wouldn’t work for all geographic locations at all times of year.  But for a Luddite Geek located in the Northeastern part of USA, it would work from November to April, allowing him to send Season’s Greetings, Valentine’s wishes, and tax returns, not to mention write about himself in the third person.

Saturday, February 07, 2026

Solid, Liquid, Gas

Liquid meals serve a pseudo-medical purpose: to provide nourishment to people who cannot tolerate solid food.  Energy drinks and gels (aka Nutrient Goo) fill a need for endurance athletes.  But in 2013, Soylent was introduced and marketed to people who are simply too busy to prepare and chew food.

As we transition from consumption of solids to liquids, I wonder how long it will be before a "Nutrient Gas " will allow people to breath in their meals. Being already in a gaseous state, will these "meals" facilitate our body's need to fart?


Soylent on Wikipedia
Review of Soylent

Thursday, January 08, 2026

A Long View of Venezuela Action

Looked at in isolation, USA's actions in Venezuela may seem arbitrary, or a bully's response to being bullied, or a blatant grab for oil.  However, when considered as a piece in the puzzle of recent world events, it makes sense.

Consider also the bombing of three nuclear sites in Iran, which took place in June, 1 and then the military strikes in Syria that took place in December 2.

This activity in Iran, Syria and Venezuela, in the context of Russia's attempted occupation of Ukraine, reveals effective US international policy against Russia.  The three countries are (or were) allies of Russia.

While Russia remains embroiled in Ukraine, the US can engage Russian interests, reducing Russia's footprint on the world stage.  In effect, we can wage war on Russia, albeit indirectly.

And recall that Russia invaded Ukraine soon after Pres. Biden won the 2020 election and took office in 2021.  Pres. Trump claimed the invasion wouldn't have happened if he had been elected.  At first I assumed that he was talking nonsense, something a sore loser or braggart would say.  But now I think Russia was convinced that a massive operation in Ukraine might encourage Trump to take action.  With Biden in charge, Putin seized the opportunity to take over Ukraine.

In light of this, it seems likely that US support of Ukraine would be just enough to maintain the war, to keep Ukraine from being taken over, but not enable them to completely repel Russia.

What's behind US's desire to annex Greenland?  Partly it's to gain more resources.  But considering that Greenland is well-positioned between USA and Russia, it may be the ideal location to establish defense against hypersonic missiles, which need to be situated as close to the enemy's launch sites as possible.  But why do we need to annex Greenland to do that?  While it's true that the US already has a base in Greenland, my guess is that the technology is Top Secret and needs to be kept careful guarded.

All of this is conjecture based on a thought exercise; don't think I have access to special information.


1 https://apnews.com/article/israel-iran-war-nuclear-talks-geneva-news-06-21-2025-a7b0cdaba28b5817467ccf712d214579
2 https://www.npr.org/2025/12/19/g-s1-103194/u-s-launches-strikes-syria

Friday, November 28, 2025

Edit Online Forms With Emacs

If you'd rather use your own text editor to enter content into a web form, you could use and configure a browser extension to establish a link between the form field and the editor. One such extension that Google search suggests is Browser's External Editor.1

But if you use Emacs, you're probably better off with Chrome Emacs.2

Chrome Emacs is added to a Chromium browser, but you still need to add something to Emacs. That something is the mode called atomic-chrome.

atomic-chrome can be found on Melpa; you can use the Emacs package manager to add it. My personal experience is that it's necessary to start its server manually with atomic-chrome-start-server, or add (atomic-chrome-start-server) to your init file.

I find it invaluable when commenting on a LinkedIn post, which can disappear whenever your feed is updated.

I also like it as a replacement for the Blogspot post entry field, which is easily cleared with an accidental press of Ctrl-a followed by any key press. Blogspot performs an automatic backup whenever you pause typing during new post mode. But that's a worthless feature because it will backup every mistake, including one in which you replaced all content with a key press. And it offers no way to access previous backups. I'm less likely to select all text in Emacs3, but it's not impossible. As well, I could still somehow still manage to do the Ctrl-a thing in Blogspot. Nevertheless this is a nice workaround.

But in fact I've been composing new posts outside of Blogspot for years; usually I use LibreOffice Writer because... Well, come to think of it, I don't know why I use Writer when I can use Emacs. Maybe it's because with Writer, I can insert pictures and such. (And I haven't figured out how to do that in Emacs.


1 https://chromewebstore.google.com/search/Browser's%20External%20Editor
2 https://chromewebstore.google.com/detail/chrome-emacs
3 Pressing C-x h will select all characters in an Emacs buffer.

Tuesday, October 28, 2025

Adding Moon Void of Course Events to Org-Agenda via Diary

In a previous post, I demonstrated how to create an Org file that has Moon Void of Course events. However, I found that the events don't show up in all Custom views of Org Agenda, such as when a Custom Command defines a single org file. So here's an alternate method for displaying the events in the Agenda, which I prefer. It involves adding the events to a special diary file, such as mvoc.

To make this work, you'll need to use fancy diary display, which means setting diary-display-function to diary-fancy-display. As well, evaluate and add these statements into your Emacs config / init file, as explained in the Emacs manual in the Fancy Diary Display node.1

(add-hook 'diary-list-entries-hook 'diary-include-other-diary-files)
(add-hook 'diary-mark-entries-hook 'diary-mark-included-diary-files)

Recall that we created a spreadsheet document in the first post on this topic.2 Then we modified it in a subsequent post3 to create the mvoc.org file. Now we'll modify it again so we end up with something like this in the mvoc diary file:

Oct 28, 2025 22:38 Moon Void of Course
Oct 28, 2025 22:55 Moon entering Aquarius after void

The date format shown above is the default. Alternatively, you can use a date format specified by calendar-date-style.

Here are the steps to create a diary file with Moon void of course events like the ones shown above. Again, we begin with the spreadsheet that was created in steps 1 through 4 of the initial post.

  1. Add a new sheet to the document; name it mvoc.
  2. Enter the following in cell A1. Please note that the tilde character represents a line continuation character. In fact the content should be entered without line breaks:
    1. =TEXT($moon_void_of_course_table_2025.A2,"MMM D, YYYY HH:MM") & ~
    2. " Moon void of course" & UNICHAR(13) & UNICHAR(10) & ~
    3. >TEXT($moon_void_of_course_table_2025.B2,"MMM D, YYYY HH:MM") & ~
    4. " Moon void of course entering " & $moon_void_of_course_table_2025.C2
  3. Set the row height to at least two times its default height so that you can see the result in its entirety.
  4. Save the spreadsheet in its native format (Excel as an XLSx file; LibreOffice Calc, ODS). A lot of work went into entering the formula in A1 -- it would be highly frustrating if that got lost!
  5. As before, we will pause and breathe for discussion.
    1. The reference to $moon_void_of_course_table_2025.A2 in 6.1 returns the date and time that the void begins. Similarly, $moon_void_of_course_table_2025.B2 in 6.3 returns the date and time that the void ends.
    2. The aforementioned dates and times are formatted with the TEXT worksheet function to ensure that the date is represented in MMM D, YYY format (Oct. 28, 2025, for example), followed by the time in 24-hour notation, where 23:45 is 11:45 pm. We omit the seconds because it won't show up properly in the Agenda. And anyway, seconds are omitted from the data; the event's timing probably isn't determined with enough accuracy to warrant it.
    3. In 6.2 we define the description of the start time; it will say simply, "Moon void of course." That text is terminated by a line ending for DOS/Windows; the two "UNICHAR" worksheet functions resolve to Carriage Return / Linefeed characters. You might need to specify this differently for non-Windows systems.
    4. Similarly in 6.4, we define the description of the end time, for example "Moon void of course entering Aquarius." Although instead of "Aquarius" it could be any Zodiac sign specified in Column C of the source sheet.
    5. The formula in cell A1 will create two lines in the diary file that define the start and end of the event.
  6. Starting at cell A1, fill down until all the data of the first sheet is included.
  7. Save the spreadsheet again.
  8. In step 8 of the initial post, I instructed to "Export the new sheet as a CSV file." We'll want to do that again. But this time it's necessary to pay attention to LibreOffice's "Export Text File" dialog box that precedes the Save dialog box (as we did when creating the mvoc.org file). Ensure that the Field Delimiter and String Delimiter dropdown boxes are blank as shown in Figure 1. Otherwise, each heading will be preceded by a double quote character, and the lines might end with a comma.
  9. Remove the extension from the newly-created CSV, and copy it to your home directory. Now there should be a file called mvoc; to verify, use Emacs to visit the file. The default keystrokes would be C-x C-f ~/.mvoc followed by ENTER.
  10. Open the diary file. By default the file is named diary and it's located in the home directory. Add the following in the first line: #include "mvoc" and save it.
  11. Press C-c a a to view the default agenda view. A screenshot of today's agenda is shown in Figure 2 below.
Figure 1: The LibreOffice Export Text File dialog box with Field delimiter and String delimiter fields blank
Figure 1: The LibreOffice Export Text File dialog box with Field delimiter and String delimiter fields blank


Figure 2: Agenda View for Tuesday, October 28.  It shows that Moon is void of course from 10:38pm to 10:55pm.

Please let me know if you found this useful or if you have suggestions for improvement.


1https://www.gnu.org/software/emacs/manual/html_node/emacs/Fancy-Diary-Display.html

2https://ludditegeek.blogspot.com/2025/10/add-moon-void-of-course-dates-to-google.html

3https://ludditegeek.blogspot.com/2025/10/an-org-file-to-report-when-moon-is-void.html

Tuesday, October 14, 2025

An Org File to Report When Moon is Void of Course (in 2025)

In my previous post I wrote about how to create a custom calendar in a spreadsheet and then add it to Google calendar. I used the dates and times when Moon is void of course in 2025 as an example. 1

In this post, I'll show how to add those events to an org-mode file so that they show up in the Agenda View. And while there are Lisp add-ons that create org files from ICal files, it's easier to create the org file directly, since we don't actually have an ICal file.

Begin with the spreadsheet that was created in steps 1 through 4 of the previous post. But note that the new sheet in step four will be in the format that Org can read.

Here are the next steps:

  1. Add the following content in the first 5 rows of column A. These define the recommended file-level settings for the Org file:
    1. #+STARTUP: content
    2. #+STARTUP: hidestars
    3. #+STARTUP: indent
    4. #+CATEGORY: MVoC
    5. #+FILETAGS: :MVoC:
  2. Leave row 6 blank and then enter the following in cell A7. Please note that the tilde character represents a line continuation character. In fact the content should be entered without line breaks:
    1. ="* Moon void of course entering " & ~
    2. $moon_void_of_course_table_2025.C2 & ~
    3. UNICHAR(13) & UNICHAR(10) & "<" & ~
    4. TEXT($moon_void_of_course_table_2025.A2,"YYYY-MM-DD NN HH:MM") ~
    5. & ">--<" & ~
    6. TEXT($moon_void_of_course_table_2025.B2,"YYYY-MM-DD NN HH:MM") ~
    7. & ">" & UNICHAR(13) & UNICHAR(10)
  3. Set the row height to at least three times its default height.
  4. Save the spreadsheet in its native format (Excel as an XLSx file; LibreOffice Calc, ODS). A lot of work went into entering the formula in A7 - it would be highly frustrating if that got lost!
  5. Then pause and breathe for discussion.
    1. In paragraphs 6.1 and 6.2, we have code for a heading that will say, "Moon void of course entering Aquarius." Although instead of " Aquarius" it could be any Zodiac sign specified in Column C of the source sheet.
    2. The "UNICHAR" worksheet functions in paragraphs 6.3 and 6.7 resolve to the Carriage Return / Linefeed characters when called with arguments of 13 and 10 as they are here. These two characters define line endings on Windows. It's your spreadsheet's way of pressing ENTER.
    3. The reference to $moon_void_of_course_table_2025.A2 in 6.4 returns the date and time that the void begins. Similarly, $moon_void_of_course_table_2025.B2 in 6.6 returns the date and time that the void ends.
    4. The aforementioned dates and times are formatted with the TEXT worksheet function to ensure that the date is represented in YYYY-MM-DD format (2025-10-14, for example), followed by an abbreviation for the name of the day of the week (Tue, which, by the way, is optional) 2, and finally followed by the time using the 24-hour notation, where 23:45 is 11:45 pm.
    5. The start date & time and the end date & time each are surrounded by angle brackets; the bracketed start and end elements are separated by two hyphens. Today the duration that the Moon is void of course is denoted this way:
      1. <2025-10-14 Tue 00:05>--<2025-10-14 Tue 05:47>
  6. Starting at cell A7, fill down until all the data of the first sheet is included.
  7. Save the spreadsheet again.
  8. In step 8 of the previous post, I instructed to "Export the new sheet as a CSV file." We'll want to do that again. But this time it's necessary to pay attention to LibreOffice's "Export Text File" dialog box that precedes the Save dialog box. Ensure that the Field Delimiter and String Delimiter dropdown boxes are blank as shown in Figure 1. Otherwise, each heading will be preceded by a double quote character, and the lines might end with a comma.
  9. Change the extension of the newly-created CSV file to org. Edit it with Emacs and press C-[ to add it to the Agenda File List.
  10. Press C-c a a to view the default agenda view. A screenshot of today's agenda is shown in Figure 2 below.
Figure 1: The LibreOffice Export Text File dialog box with Field delimiter and String delimiter fields blank

Figure 2: Agenda View for Tuesday, October 14.  It shows that Moon is void of course from 12:05am to 5:47am.

Please let me know if you found this useful or if you have suggestions for improvement.


1 https://ludditegeek.blogspot.com/2025/10/add-moon-void-of-course-dates-to-google.html
2 The reference for org-mode's date range timestamp format can be found here: https://orgmode.org/worg/org-syntax.html#Timestamps

Monday, October 13, 2025

Add Moon Void of Course Dates to Google Calendar

Google calendar can be configured to show the phases of the moon.  This view can be enabled in the settings. 1, 2  You can find other calendars in Settings, too, such as various religious holidays and sports.

But you can also create your own calendar and upload it as a ICAL file.  Or you can import it as a CSV file.  I used the import CSV method to add the dates and times that Moon is void of course.

What does it mean that Moon is void of course?  In astrology, Moon visits each of the twelve signs of the Zodiac.  As well, Her position may form Major Aspects with other celestial bodies.  When Moon transitions from one house of the Zodiac to the next, and fails to be in a Major Aspect, She is considered void of course.  It is believed to be a time to avoid important business, for example. 3  Thus, believers will want to have this on their calendars.  Here's how to add these times to your Google calendar.

  1. Locate a list of dates and times that Moon is Void of Course.
    1. I used the list at voidofcoursemoon.com 4
  2. Download or copy the data to a CSV text file.
  3. Import the CSV into a new spreadsheet.  I copied the data, so for me, the columns were tab-delimited.  As well, I defined the first two columns as Date/Time and the last column as Text.  Delete any lines that do not contain the desired data; I kept the first line as "Void begins: Void ends: Moon enters after void:."
  4. Create a second sheet that will link to the content in the first sheet.  You'll export this sheet as a CSV file in a format that Google calendar can read.
  5. Add these nine column headings in row 1 of the "Export Sheet"  5
    1. Subject
    2. Start Date
    3. Start Time
    4. End Date
    5. End Time
    6. All Day Event
    7. Description
    8. Location
    9. Private
  6. Enter the following content into the cells of the second row:
    1. Moon Void of Course (or whatever you'd like to see as the title of each event).
    2. =$moon_void_of_course_table_2025.A2 (with format code MM/DD/YYYY)
    3. =$moon_void_of_course_table_2025.A2 (with format code HH:MM:SS AM/PM)
    4. =$moon_void_of_course_table_2025.B2 (with format code MM/DD/YYYY)
    5. =$moon_void_of_course_table_2025.B2 (with format code HH:MM:SS AM/PM)
    6. FALSE
    7. ="Moon will enter " & $moon_void_of_course_table_2025.C2 & " after void" (or whatever you want to see in the event description).
    8. Eastern US & Canada (This is the time zone name, but put whatever you want to see for the event location).
    9. FALSE
    10. Select all nine occupied cells in row 2 (columns A through I) and fill down until all the data of the first sheet is included.
  7. Save the spreadsheet as XLSx (Excel) or ODS (LibreOffice Calc).
  8. Export the new sheet as a CSV file.
  9. Create a new Google calendar and import the CSV file into it. 5

Or you can skip all that and just use the calendar I created, which you can find here. 6  But note that it's limited to events in 2025.

Here's how it looks in my calendar; the Phases of the Moon calendar also is enabled...

I hope you find this useful.  Next, I'll describe how I got these events into Org-mode.


1 href="https://support.google.com/calendar/answer/13748650?hl=en&co=GENIE.Platform%3DDesktop

2 href="https://www.maketecheasier.com/display-alternate-calendar-google-calendar/

3 https://www.astrologybyjudithryan.com/void-of-course-moon-info

4 href="https://voidofcoursemoon.com/void-of-course-moon-2025-calendar/

5 href="https://support.google.com/calendar/answer/37118#advanced&zippy=%2Ccreate-or-edit-a-csv-file

6 href="https://drive.google.com/file/d/1WqS678DtfBI9J0MQzuAphMrURAC3kK8T/view?usp=sharing

Sunday, October 05, 2025

Failure to “Practice What You Preach”

A blog post in March on the Proton website1 recommends several European programs or apps that circumvent potential US privacy violations. The "privacy-focused European alternatives" that are recommended in the social media category include Mastodon (which I use), Lemmy, and Friendica.

However, if you want to share that blog post, the you're offered choices of X, Reddit, LinkedIn, and Facebook! I wanted to point out the irony to the author, but there is no comment box in which to enter a reply.

Share options on Proton blog post

Even better (as in more ironic) is that blog post had been posted to Facebook with a link back that included a "fbclid" parameter. I suppose maybe we can give Proton a pass on this - they're entitled to know where their readers come from and when. But why not just have a simple "referral" parameter set to "facebook20251005185942" (or "linkedin," or whatever)? I ask because who knows what the 118-character value of fbclid unencodes to?

If you'd like to be a bit of a disruptor (or just have fun), you could append "?fbclid=biteme" to the link to the blog post before you navigate to it.


1 https://proton.me/blog/european-tech-alternatives

Saturday, August 23, 2025

Forget MAGA -- Focus on MACFA

I had planned to write another of my silly “Forget MAGA...” posts1, 2. The new post would have called for a focus on MACFA, or Make All Commodes Flush Again. This was something that Trump himself promised he would do.

But when I looked for background material and sources, I came across a recent Slate article3 that reports on the great progress that was made in low flush (LF) toilets. According to the article, the newest models can flush effectively with as little as 1.28 gallons of water.

I believe it. I can flush my toilets with a two-gallon bucket half filled with water. But the bowls remain nearly empty after that, so I suppose it takes another half gallon to refill the bowl.

The article explains that the earliest LF toilets used 1.6 gallons as does my newer fixture. However, they didn’t flush away all the solid waste; Trump himself said the operator had to flush “10 times.” “Not me, of course,” reports say.

So, have we Made All Commodes Flush Again? It would seem so. But I remain skeptical. I’d expect that the gradual accumulation of crap (quite literally) and minerals would reduce the water velocity in a low-flow toilet. And flushing is all about water velocity.

I can recall how well our 1.6 gallon toilet flushed. The water would almost totally disappear the moment I pressed the handle. But now it’s just like any other old-fashioned toilet in which the water rises before anything solid goes down.

When the commode was installed, there was a bumpy patch at the bottom. Now I wonder if the toilet was used or defective and that the bumpy part was scale or corrosion that was painted over.

Earlier today, I used my improvised drain clearer (an old bent coat hanger) to scrape at the entrances to the trap and siphon jet. The toilet flushes much better now. I’ll clean the visible portions with a pumice stone later tonight.


1 Forget MAGA -- Focus on MATA https://ludditegeek.blogspot.com/2025/07/forget-maga-focus-on-mata.html

2 Forget MAGA -- Focus on MEGA https://ludditegeek.blogspot.com/2025/07/forget-maga-focus-on-mega.html

3 https://slate.com/technology/2025/02/toilets-low-flow-trump-environment-cost-savings.html


Saturday, August 16, 2025

Define Emacs as Editor in Altap Salamander

I’ve been a devotee of the Servant Salamander / Altap Salamander file manager1 for decades. I migrated from Norton Commander (NC)2 soon after I started to work on a multi-tasking OS, Windows NT.

Likewise, I’ve been a fan of the (extensible) text editor Emacs3 for decades, having given up on Brief4, eventually. While on WinNT, I stayed with Brief a long time. But I seem to recall that Brief didn’t respond well to having one of its open files changed by another application. (This rarely happened in environments that it was designed for.)

Norton’s F4 key invoked a built-in text editor to open the selected file. The Salamander F4 key is configured to use Notepad.exe to open the selected file. But it can be configured to use other editors based on the selected file’s extension. I configure F4 to use Emacs for all text-like files.

Once I open Emacs, I like to keep that instance open for as long as possible. That’s because I build up a history usage, including:

  • Regular expression searches
  • Kill ring contents
  • On-the-fly macros

Switching to a new Emacs instance is a major interruption to my workflow.

Enter Emacs server. Emacs includes a server that can open a file in a running instance when invoked from an external application, such as Norton, ...er, Salamander. This allows a user to edit new files while maintaining the previous Emacs instance.

To use this active server process feature, you’d invoke Emacs with this command5 (all entered on a single line): C:\Path_to_Emacs_bin\emacsclientw.exe -a C:\Path_to_Emacs_bin\bin\runemacs.exe

But I find that configuring Salamander’s F4 to call the Emacs server to be difficult sometimes. In fact I spent an embarrassingly long time yesterday trying to figure it out. But it’s not at all difficult if you really understand two things:

  1. Only the Emacs executable should appear in the Custom Editor Target box; any switches go into the Arguments box before the $(Name) parameter.
  2. Emacs doesn’t like file names that contain quote marks. So if there’s a space in the path to the executable, you should specify the 8.3 name and not the path seen in Explorer.6 Please see the figure below.

I’ve heard Emacs gurus advise against installing Emacs in a location other than the default. The default on Windows currently is C:\Program Files\Emacs\emacs-30.1\. And I followed that advice unfortunately. But it caused me a great deal of grief, because it forced me to surround the paths in quotes and was incompatible with the server process. On my previous computers I had been installing Emacs in C:\Users\Public\Programs, which all users have access to and conforms to the DOS 8.3 file name format. That’s why this error is new to me.

So here’s advice from a wannabe guru:

  • Follow the instructions above to configure Salamander’s F4 to invoke Emacs if you already have Emacs and Altap Salamander installed.
  • When you install Emacs, change the installation location to ensure that the path is made up of only alpha-numeric characters and that all users will have Read and Execute permisions.


1 https://www.altap.cz/
2 https://en.wikipedia.org/wiki/Norton_Commander
3 https://www.gnu.org/software/emacs/
4 https://en.wikipedia.org/wiki/Brief_(text_editor)
5 https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html
6 Eli Zaretskii, https://lists.gnu.org/archive/html/help-emacs-windows/2014-04/msg00013.html

Thursday, August 14, 2025

Putin in Alaska

Russian President Vladimir Putin is expected to meet with President Trump tomorrow. Many political analysts already view this as a victory for Putin, or at least a concession. But I disagree.

It would be a major concession if he were hosting the meeting on Russian soil. Instead, he’s allowing Trump to host the meeting, in effect giving the other “home field advantage.”

It’s no secret that Trump wants to receive a Nobel Peace Prize. Maybe he would even be willing to arrest Putin for war crimes. The International Criminal Court (ICC) has a warrant out for his arrest.1 With Putin outside Russian borders, an arrest shouldn’t be too difficult.

But certainly Putin is aware of this; already he will have planned his next moves. Perhaps when the Russian Empire sold Alaska to USA2, they included a clause in the treaty that would allow Russia to regain ownership under very special circumstances. Such a clause might read, “Be it enacted and declared by the authority of these presents, that if the Sovereign of the Russian Empire, being the lawful ruler thereof, shall within the term of fifty-seven thousand (57,000) days and one week from the date hereof personally repair to the lands, tenements, and hereditaments herein described, and there, in the presence of two credible witnesses, shall utter the words ‘I have a red pencil box,’ then, and forthwith upon such utterance, all right, title, and interest in and to the said premises shall revert to His Imperial Majesty the Emperor of all the Russias, his heirs and assigns, to be held by them for ever; anything in this grant or elsewhere contained to the contrary notwithstanding.”3

The day of August 15, 2025 should be an interesting one.


1 https://www.icc-cpi.int/defendant/vladimir-vladimirovich-putin
2 https://en.wikipedia.org/wiki/Alaska_Purchase
3 This fictitious clause was synthesized with Copilot 0.4.2.0 on Windows 10 using the prompt, “Please rewrite the following content in legalese that might have been in use in 1867: If the ruler of Russia should visit this place in 57000 days and one week and say ‘I have a red pencil box’4 the territory shall revert back to Russia.”
4 The phrase “I have a red pencil box” comes from an episode of Benny Hill.