<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>The Mandelbear&apos;s Musings</title>
  <link>https://mdlbear.dreamwidth.org/</link>
  <description>The Mandelbear&apos;s Musings - Dreamwidth Studios</description>
  <lastBuildDate>Sun, 04 Dec 2022 05:55:06 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>mdlbear</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/15740388/505737</url>
    <title>The Mandelbear&apos;s Musings</title>
    <link>https://mdlbear.dreamwidth.org/</link>
    <width>96</width>
    <height>96</height>
  </image>

<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1844549.html</guid>
  <pubDate>Sun, 04 Dec 2022 05:55:06 GMT</pubDate>
  <title>Down the Rabbit Hole</title>
  <link>https://mdlbear.dreamwidth.org/1844549.html</link>
  <description>&lt;h3&gt;1: The Turing Machine&lt;/h3&gt;

&lt;p&gt; So, Wednesday I looked at Wikipedia&apos;s front page and saw, under the &quot;On
    this day&quot; heading:

&lt;blockquote&gt;
&lt;p&gt; &lt;strong&gt;1936&lt;/strong&gt; – English mathematician &lt;a href=&quot;https://en.wikipedia.org/wiki/Alan_Turing&quot;&gt;Alan Turing&lt;/a&gt;
    published the first details of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_machine&quot;&gt;Turing machine&lt;/a&gt; (model
    pictured), an abstract device that can simulate the logic of any computer
    algorithm by manipulating symbols.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; It was the &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_machine#/media/File:Turing_Machine_Model_Davey_2012.jpg&quot;&gt;&quot;model pictured&quot;&lt;/a&gt; that grabbed me.  The caption was/is &quot;A physical
    Turing machine model. A true Turing machine would have unlimited tape on
    both sides, however, physical models can only have a finite amount of
    tape.&quot;

&lt;p&gt; I knew that -- everyone who studies computer science knows that, and a few
    have dreamed, as I had, of building a physical model.  I even figured out
    how to build one out of wood, minus a few details.  But there it was.

&lt;blockquote&gt;
&lt;p&gt; (If you&apos;re not interested in the details, you can skip this and the other
    indented blocks.  But I digress...)
&lt;p&gt; A Turing Machine is a remarkably simple device.  It has a read head, a
    write head, a strip of tape that they operate on, and a controller with a
    finite number of states.  It can read what&apos;s on the tape -- the classic
    machine uses blank, &quot;0&quot;, and &quot;1&quot;.  (Some versions use &quot;X&quot; instead of &quot;1&quot;,
    and some dispense with &quot;0&quot; and just have 1 and blank.  That makes
    programming them a little more complicated, but not by much.  Some have
    &lt;em&gt;more&lt;/em&gt; symbols.  It doesn&apos;t matter -- you can program around it.)
    The machine can move the tape backward and forward.  Numbers are usually
    represented in Unary, so you count &quot;1&quot;, &quot;11&quot;, &quot;111&quot;, ..., although with
    both 1 and 0 you could use binary, and some versions do.

&lt;p&gt; The machine has a &quot;state&quot;, which selects a line in the machine&apos;s program
    that tells it what to write, which direction to move the tape, and which
    state to go to next, depending on what symbol the read head is looking at.
    (Think of the table as a drum with pegs on it, like a music box.)

&lt;p&gt; That&apos;s it.  That&apos;s all you need to compute &lt;em&gt;any function that can be
    computed by any kind of mechanical or digital computer.&lt;/em&gt; Of course you
    may need a lot of tape -- so you need to attach it to a tape factory --
    and a lot of time.
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; The critical thing is that it&apos;s possible to design a &lt;em&gt;universal&lt;/em&gt;
    Turing machine:  it takes a tape, and the state table of a Turing machine
    (in 1&apos;s, 0&apos;s and blanks), and it uses that description to do exactly what
    that machine is programmed to do.  Turing&apos;s big accomplishment was using
    the universal Turing machine to prove that there some things that a
    computer &lt;em&gt;can&apos;t&lt;/em&gt; do, no matter how much time and tape you give it.

&lt;p&gt; But of course I was much more fascinated by the machines, starting at &lt;a href=&quot;https://aturingmachine.com/&quot;&gt;the website of the model that first
    grabbed my attention.&lt;/a&gt;, and proceeding to &lt;a href=&quot;https://www.dailymotion.com/video/xrmfie&quot;&gt;a Turing machine made
    of legos.&lt;/a&gt;  I spent some time in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_machine_gallery&quot;&gt;Turing
    machine gallery&lt;/a&gt;.  But the rabbit hole went deeper than that.

&lt;h3&gt;2: The Universal Constructor&lt;/h3&gt;

&lt;p&gt; At about that point it ocurred to me to look at the Wikipedia page for the
    &lt;a href=&quot;https://en.wikipedia.org/wiki/Von_Neumann_universal_constructor&quot;&gt;Von Neumann universal constructor&lt;/a&gt;.  Because once you have a kind of
    machine that can &lt;em&gt;simulate&lt;/em&gt; itself, the natural question is whether
    you can have a machine that can &lt;em&gt;build a copy&lt;/em&gt; of itself.

&lt;p&gt; The trivial answer to this question is &quot;Yes, of course.  Cells have been
    reproducing themselves for billions of years.&quot;  But in the 1940s when von
    Neumann was thinking about this, the structure of DNA had not yet been
    determined -- that was 1953 -- and although it had been &lt;a href=&quot;https://en.wikipedia.org/wiki/DNA#History&quot;&gt;known since the late
    1920s that DNA had something to do with heredity&lt;/a&gt;, nobody knew how it
    worked.  So his insight into the machinery of reproduction was pretty
    remarkable.

&lt;p&gt; Like Turing&apos;s insight into the machinery of computation, von Neumann&apos;s
    insight into the machinery of reproduction was to separate the
    &lt;em&gt;machine&lt;/em&gt; -- the Universal Constructor -- from the description of
    what it was to construct, stored on something simple -- a tape.

&lt;p&gt; Von Neumann&apos;s machine was/is a cellular automaton; it &quot;lived&quot; (if you can
    call it that) on a grid of squares, where each square can be in one of 29
    different states, with rules that tell it what to do depending on the
    states of its neighbors.  A completely working machine wasn&apos;t simulated
    until 1995.  Its constructor had 6329 32-state cells, and a tape with a
    length of 145,315.  It took it over 63 billion timesteps to copy itself.
    (Smaller and faster versions have been constructed since then).

&lt;p&gt; At, say, 1000 steps/second, that would have taken over two years.  It
    wasn&apos;t until 2008 that a program, &lt;a href=&quot;https://en.wikipedia.org/wiki/Golly_(program)&quot;&gt;Golly&lt;/a&gt;, became
    able to simulate it using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hashlife&quot;&gt;hashlife&lt;/a&gt; algorithm; it
    now takes only a few minutes.

&lt;p&gt; Which led me even further down the rabbit hole.  Because no discussion of
    cellular automata would be complete without &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life&quot;&gt;Conway&apos;s
    Game of Life&lt;/a&gt;. 

&lt;h3&gt;3: The Game of Life&lt;/h3&gt;

&lt;p&gt; It&apos;s not really a game, of course, it&apos;s a cellular automaton.  Each cell
    in the square grid is either dead or alive.  You start with an arrangement
    of live cells, and turn them loose according to four simple rules:

&lt;blockquote&gt;
&lt;ol&gt;
  &lt;li&gt; If a live cell has fewer than two live neighbors (out of the 8 cells
       surrounding it), it dies of loneliness.
  &lt;/li&gt;
  &lt;li&gt; A live cell with two or three live neighbors, stays alive.
  &lt;/li&gt;
  &lt;li&gt; A live cell with more than three live neighbors dies of overpopulation.
  &lt;/li&gt;
  &lt;li&gt; A dead cell with exactly three live neighbors becomes live.
  &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt; I first encountered the game in the October 1970 issue of Scientific
    American, in Martin Gardner&apos;s &quot;Mathematical Games&quot; column.  The &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life&quot;&gt;Wikipedia
    article&lt;/a&gt; gives a good introduction.

&lt;p&gt; Patterns in Life evolve in a bewildering variety of ways.  Many of them
    die out quickly -- an isolated cell, for example.  Some patterns sit there
    and do nothing -- they&apos;re called &quot;still lifes&quot;.  A 2x2 block of cells for
    an example.  Some blow up unpredictably, and may or may not leave a pile
    of random still lifes behind.  Some patterns oscillate:  a horizontal row
    of three cells will become a vertical row in the next turn, and vice versa
    -- it&apos;s called a &quot;blinker&quot;.

&lt;p&gt; And some patterns move.  The simplest, called a &quot;glider&quot;, appears in this
    post&apos;s icon.  You can crash gliders into blocks or gliders into gliders,
    and depending on the timing they will do different interesting things.  It
    didn&apos;t take people long to figure out that you can build computers,
    including a universal Turing machine.  Or a machine that prints out the
    digits of Pi.

&lt;p&gt; Or a universal constructor.

&lt;h3&gt;4: The universal constructor&lt;/h3&gt;

&lt;p&gt; While I was falling into this rabbit hole, I happened to remember a
    passing mention of &lt;a href=&quot;https://btm.qva.mybluehost.me/building-arbitrary-life-patterns-in-15-gliders/&quot;&gt;a universal constructor that can build anything at all out of exactly 15
    gliders&lt;/a&gt;.  (Strictly speaking, anything that can be constructed by
    crashing gliders together.  Some patterns can&apos;t be made that way.  But
    almost all the complicated and interesting ones that people are building
    these days can.)  If this intrigues you, go read the article.  Or wait
    until the next section, where  I finally get to the bottom of the rabbit
    hole.

&lt;p&gt; On the way down I encountered lots of weird things -- the aforementioned
    universal Turing machine and Pi printer, and a variety of &quot;spaceships&quot;
    that travel by, in effect, repeatedly constructing a new copy of
    themselves, then cleaning up the old copy.  It took a while for me to get
    my head around that.

&lt;p&gt; Then, sometime Wednesday evening, I found the book.

&lt;h3&gt;5: The Book of Life&lt;/h3&gt;

&lt;p&gt; It&apos;s not called &quot;The Book of Life&quot;, of course, it&apos;s called &lt;cite&gt;&lt;a href=&quot;https://conwaylife.com/book/&quot;&gt;Conway&apos;s Game of Life: Mathematics
    and Construction&lt;/a&gt;&lt;/cite&gt;.  But you get the idea.  You can &lt;a href=&quot;https://conwaylife.com/book/#download_pdf&quot;&gt;download the PDF&lt;/a&gt;.

&lt;p&gt; The book ends with a pattern that simulates a Life cell.  There are
    several different versions of this; this is the latest.  It works by
    making copies of itself in any neighboring cells that are coming alive,
    then destroying itself if it&apos;s about to die.  Wild.


&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1844549&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1844549.html</comments>
  <category>game-of-life</category>
  <category>history</category>
  <category>curmudgeon</category>
  <category>computers</category>
  <category>universal-constructor</category>
  <category>turing-machine</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1834838.html</guid>
  <pubDate>Sun, 11 Sep 2022 02:23:28 GMT</pubDate>
  <title>What Were You Thinking, Patreon?</title>
  <link>https://mdlbear.dreamwidth.org/1834838.html</link>
  <description>&lt;p&gt; So, a couple of days ago (September 8th, to be exact) Patreon &lt;a href=&quot;https://securityboulevard.com/2022/09/patreon-fires-security-team-richixbw/&quot;&gt;laid off their entire five-person security team&lt;/a&gt;.  WTF?  The linked
    article goes on to say,

&lt;blockquote&gt;
&lt;p&gt; The firm, which is &lt;a href=&quot;https://blog.patreon.com/patreon-is-restricted-in-russia&quot;&gt;still
    doing business in Russia&lt;/a&gt;, simply calls it “a strategic shift” (which
    seems to be corporate mumbo-jumbo for “cheaper outsourcing”). But infosec
    experts call it a “nightmare” caused by an “untrustworthy” company that’s
    “just put a massive target on its back.”
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; You can see links to more articles below in the &lt;a href=&quot;#resources&quot;&gt;resources&lt;/a&gt;.

&lt;p&gt; The minimum reasonable response to this would be to change your password.
    Done that.  It&apos;s not &lt;em&gt;un&lt;/em&gt;reasonable to delete your account.  I&apos;m
    still supporting a few sites, so I&apos;ll leave my account in place until I
    see what&apos;s going to happen.  And laying in a supply of popcorn.

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt;  @ &lt;a href=&quot;https://www.itpro.co.uk/security/cyber-security/369037/patreon-confirms-it-parted-ways-with-its-entire-cyber-security-team&quot;&gt;Patreon confirms it &apos;parted ways&apos; with its &apos;entire&apos; cyber security team | IT PRO&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://techcrunch.com/2022/09/09/patreon-security-layoffs/&quot;&gt;Patreon confirms security team layoffs | TechCrunch&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://securityboulevard.com/2022/09/patreon-fires-security-team-richixbw/&quot;&gt;Patreon Fires its Security Team — and the Internet Freaks Out&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.webpronews.com/patreon-just-let-its-entire-security-team-go/&quot;&gt;Patreon Just Let Its Entire Security Team Go [Updated]&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://soatok.blog/2022/09/09/should-you-delete-your-patreon-account-after-they-laid-off-their-entire-security-team/&quot;&gt;Should You Delete Your Patreon Account After They Laid Off Their Entire Security
    Team? - Dhole Moments&lt;/a&gt;  -&amp;gt; excellent discussion of risks and alternatives
    -&amp;gt; changed password.  Probably ought to delete account too, but I&apos;m using it.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1834838&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1834838.html</comments>
  <category>computers</category>
  <category>security</category>
  <category>curmudgeon</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1830704.html</guid>
  <pubDate>Tue, 16 Aug 2022 18:25:05 GMT</pubDate>
  <title>Update Zoom on Mac ASAP</title>
  <link>https://mdlbear.dreamwidth.org/1830704.html</link>
  <description>&lt;p&gt; According to &lt;a href=&quot;https://arstechnica.com/information-technology/2022/08/zoom-patches-mac-auto-updater-vulnerability-that-granted-root-access/=1&quot;&gt;this article posted yesterday on Ars Technica&lt;/a&gt;, there is a major
    security hole in Zoom for the Mac.  &lt;a href=&quot;https://explore.zoom.us/en/trust/security/security-bulletin/&quot;&gt;Zoom
    issued a security bulletin on Saturday&lt;/a&gt;.  The article suggests that you
    should &lt;a href=&quot;https://zoom.us/download#client_4meeting&quot;&gt;download the
    update directly from Zoom&lt;/a&gt; or click on your menu bar options to &quot;Check
    for updates&quot; rather than waiting for the auto-update, although if you&apos;ve
    already updated since Saturday you&apos;re probably ok.

&lt;p&gt; The article goes into more detail; tl;dr is that Zoom&apos;s installer is owned
    by and runs as root, and has a major bug that allows unsigned updates to
    be installed.


&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://zoom.us/download#client_4meeting&quot;&gt;Download Center - Zoom&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://explore.zoom.us/en/trust/security/security-bulletin/&quot;&gt;Zoom security bulletin ZSB-22018 08/13/2022&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://arstechnica.com/information-technology/2022/08/zoom-patches-mac-auto-updater-vulnerability-that-granted-root-access/&quot;&gt;Update Zoom for Mac now to avoid root-access vulnerability | Ars
       Technica&lt;/a&gt; 
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1830704&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1830704.html</comments>
  <category>computers</category>
  <category>curmudgeon</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1801951.html</guid>
  <pubDate>Wed, 19 Jan 2022 02:56:00 GMT</pubDate>
  <title>Which tax software platform should I use this year?</title>
  <link>https://mdlbear.dreamwidth.org/1801951.html</link>
  <description>&lt;p&gt; I&apos;ve been using &lt;a href=&quot;https://en.wikipedia.org/wiki/H%26R_Block_Tax_Software&quot;&gt;the same
    software&lt;/a&gt; for doing my taxes for somewhere around 30 years.  It was
    called TaxCut back then; the company that made it was bought by H&amp;amp;R
    Block in 1993, though they didn&apos;t rename the software until 2008.  For
    much, if not all, of that time I&apos;ve been doing it on a Mac of some sort.

&lt;p&gt; Last year I looked at the system requirements and discovered that it would
    no longer run on my ageing Mac Mini.  It also wouldn&apos;t run on Windows 7.
    It needed either NacOS High Sierra or Windows 8.1.  So I used their web
    version, which I remember as rather slow, and enough different from the
    offline version of previous years to be annoying.

&lt;p&gt; So for this year (which is to say tax year 2021), my options would appear
    to be:

&lt;ol&gt;
  &lt;li&gt; Use the web version again.  Ugh, but at least it would import 2020
       without trouble.  Maybe.  It didn&apos;t let me upload a 2019 data file; I
       had to feed it a PDF and do a lot of fixing up.
  &lt;li&gt; Run it on the laptop that has Win 8.1, or put the Win 10 disk that
       came with (new) Sable back in and use that.  Ugh.
  &lt;li&gt; Buy a newer Mac Mini.  I could get a minimal one for about $100-150, or
       a more recent one (running Mojave) for around $200-250.  (Those are
       eBay prices, of course.)
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt; (Note that cost of the software is the same for all three options.)

&lt;p&gt; I&apos;m really leaning toward #3.  But really that would just be an excuse to
    buy another computer, and would leave me with &lt;em&gt;two&lt;/em&gt; Mac Minis that
    I&apos;d hardly ever use.  More likely I&apos;ll dither about it until the end of
    March and then break down and go use the web version again.


&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1801951&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1801951.html</comments>
  <category>taxes</category>
  <category>mac</category>
  <category>curmudgeon</category>
  <category>computers</category>
  <category>pc</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1793245.html</guid>
  <pubDate>Wed, 03 Nov 2021 04:04:04 GMT</pubDate>
  <title>Trojan Source</title>
  <link>https://mdlbear.dreamwidth.org/1793245.html</link>
  <description>&lt;p&gt; &lt;a href=&quot;https://krebsonsecurity.com/2021/11/trojan-source-bug-threatens-the-security-of-all-code/&quot;&gt;This post in Krebs on Security&lt;/a&gt; describes an unusual and potentially
    very dangerous attack technique that can be used to sneak evil code past
    code reviews and into the supply chain.  Briefly, it allows evildoers to
    write code that looks very different to a human and a compiler.  It should
    probably come as no surprise that it involves &lt;a href=&quot;https://home.unicode.org/&quot;&gt;Unicode&lt;/a&gt;, the same coding standard
    that lets you make blog posts that include inline emoji, or mix text in
    English and Arabic.

&lt;p&gt; In particular, it&apos;s the latter ability that the vulnerability targets,
    specifically Unicode&apos;s &lt;a href=&quot;https://www.w3.org/International/articles/inline-bidi-markup/uba-basics&quot;&gt;&quot;Bidi&quot; algorithm&lt;/a&gt; for presenting a mix of left-to-right and
    right-to-left text.  (Read the Bidi article for details and examples --
    I&apos;m not going to try plopping random text in languages I don&apos;t know into
    the middle of a blog post.)

&lt;p&gt; Now go read the &quot;&lt;a href=&quot;https://www.trojansource.codes/&quot;&gt;Trojan Source
    Attacks&lt;/a&gt;&quot; website, and the associated &lt;a href=&quot;https://www.trojansource.codes/trojan-source.pdf&quot;&gt;paper [PDF]&lt;/a&gt;
    and &lt;a href=&quot;https://github.com/nickboucher/trojan-source&quot;&gt;GitHub
    repo&lt;/a&gt;.  Observe, in particular, the &lt;a href=&quot;https://github.blog/changelog/2021-10-31-warning-about-bidirectional-unicode-text/&quot;&gt;Warning about bidirectional Unicode text&lt;/a&gt; that GitHub now attaches to
    files like &lt;a href=&quot;https://github.com/nickboucher/trojan-source/blob/main/C%2B%2B/commenting-out.cpp&quot;&gt;this one in C++&lt;/a&gt;.  Observe also that GitHub does &lt;em&gt;not&lt;/em&gt; flag
    files that, for example, mix &lt;a href=&quot;https://github.com/nickboucher/trojan-source/blob/main/C%2B%2B/homoglyph-function.cpp&quot;&gt;homoglyphs&lt;/a&gt; like &quot;H&quot; (the usual ASCII version) and &quot;Н&quot; (the
    similar-looking Cyrillic letter that sounds like &quot;N&quot;; how similar it looks
    depends on what font your browser is using).  If you&apos;re unlucky,
    you might have clicked on a URL containing one or more of these, that took
    you someplace unexpected and almost certainly malicious.

&lt;p&gt; The Trojan Source attack works by making use of the control characters
    U+202B RIGHT-TO-LEFT EMBEDDING (RLE) and  U+202A LEFT-TO-RIGHT EMBEDDING
    (LRE), which change the base direction explicitly.

&lt;p&gt; And remember: ШYSINAШYG - What You See Is Not Always What You&apos;ve Got!

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.trojansource.codes/&quot;&gt;Trojan Source Attacks&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.trojansource.codes/trojan-source.pdf&quot;&gt;here [PDF]&lt;/a&gt;
    &lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1793245.html#cutid1&quot;&gt;BibTex&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://krebsonsecurity.com/2021/11/trojan-source-bug-threatens-the-security-of-all-code/&quot;&gt;‘Trojan Source’ Bug Threatens the Security of All Code – Krebs on Security&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://github.com/nickboucher/trojan-source&quot;&gt;nickboucher/trojan-source: Trojan Source: Invisible Vulnerabilities&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://github.blog/changelog/2021-10-31-warning-about-bidirectional-unicode-text/&quot;&gt;Warning about bidirectional Unicode text | GitHub Changelog&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.w3.org/International/articles/inline-bidi-markup/uba-basics&quot;&gt;Unicode Bidirectional Algorithm basics&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; but... &lt;a href=&quot;https://research.swtch.com/trojan&quot;&gt;research!rsc: On “Trojan Source” Attacks&lt;/a&gt;
  &lt;/li&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1793245&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1793245.html</comments>
  <category>computers</category>
  <category>curmudgeon</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1789687.html</guid>
  <pubDate>Wed, 06 Oct 2021 23:06:49 GMT</pubDate>
  <title>What happened to facebook yesterday?</title>
  <link>https://mdlbear.dreamwidth.org/1789687.html</link>
  <description>&lt;p&gt; If you&apos;re sensible enough not to use Facebook, WhatsApp, or Instagram, or
    to have set up &quot;log in with Facebook&quot; on any site you use regularly, you
    might not have noticed that they all &lt;a href=&quot;https://blog.cloudflare.com/october-2021-facebook-outage/&quot;&gt;disappeared from the internet&lt;/a&gt; for about six hours yesterday.  Or if
    you noticed, you might not have cared.  But you might have read some of
    the news about it, and wondered what the heck BGP and DNS are, and what
    they had to do with it all.

&lt;p&gt; And if not, I&apos;m going to tell you anyway.

&lt;p&gt; You&apos;re more likely to have heard of DNS:  that&apos;s the Internet&apos;s phone
    book.  Your web browser, and every other program that connects to anything
    over the Internet, uses the &lt;a href=&quot;https://en.wikipedia.org/wiki/Domain_Name_System&quot;&gt;Domain Name
    System&lt;/a&gt; to look up a &quot;domain name&quot; like, say,
    &quot;&lt;code&gt;www.facebook.com&lt;/code&gt;&quot;, and find the numerical IP address that it
    refers to.  &lt;a href=&quot;https://www.cloudflare.com/learning/dns/what-is-dns/&quot;&gt;DNS works&lt;/a&gt; by splitting the name into parts, and looking them up in a
    series of &quot;name servers&quot;.  First it looks in a &quot;&lt;a href=&quot;https://www.cloudflare.com/learning/dns/glossary/dns-root-server/&quot;&gt;root server&lt;/a&gt;&quot; to find the address of the &lt;a href=&quot;https://www.cloudflare.com/learning/dns/top-level-domain/&quot;&gt;Top-Level Domain (TLD)&lt;/a&gt; server that holds the lookup table for the
    last part of the name, e.g., &quot;&lt;code&gt;com&lt;/code&gt;&quot;.  From the TLD server it
    gets the address of the &quot;authoritative name server&quot; that holds the lookup
    table for the next part of the name, e.g., &lt;code&gt;facebook&lt;/code&gt;, and
    looks there for any subdomains (e.g. &quot;&lt;code&gt;www&lt;/code&gt;&quot;).

&lt;p&gt; (When you buy a &quot;domain name&quot;, what you&apos;re actually buying is a line in the
    TLD servers that points to the DNS server for your domain.  You also have
    to get somebody to &quot;host&quot; that server; that&apos;s usually also the company
    that hosts your website, but it doesn&apos;t have to be.)

&lt;p&gt; All this takes a while, so the network stack on your computer passes the
    whole process off to a &quot;caching name server&quot; which remembers every domain
    name it looks up, for a time which is called the name&apos;s &quot;time to live&quot;
    (TTL).  Your ISP has a caching name server they would like you to use, but
    I&apos;d recommend telling your router (if you have full control over it) to
    use Cloudflare&apos;s or Google&apos;s nameserver, at the IP address 1.1.1.1 or
    8.8.8.8 respectively.  Your router will also keep track of the names of
    the computers attached to your local network.

&lt;p&gt; Finally, we get to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Border_Gateway_Protocol&quot;&gt;Border
    Gateway Protocol (BGP)&lt;/a&gt;.  If DNS is the phone book where you look up
    street addresses, BGP is the road map that tells your packets how to get
    there from your house, and in particular what route to take.

&lt;p&gt; The Internet is a network of networks, and it&apos;s split up into &quot;&lt;a href=&quot;https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/&quot;&gt;autonomous systems (AS)&lt;/a&gt;, each of which is a large pool of routers
    belonging to a single organization.  Each AS exchanges messages with its
    neighbors, using BGP to determine the &quot;best&quot; route between the itself and
    every other AS in the Internet.  (The best route isn&apos;t always the
    shortest; the protocol can also take things like the cost of messages into
    account.)  BGP isn&apos;t entirely automatic -- there&apos;s some manual
    configuration involved.

&lt;p&gt; &lt;a href=&quot;https://blog.cloudflare.com/october-2021-facebook-outage/&quot;&gt;What
    happened yesterday&lt;/a&gt; was that somebody at Facebook accidentally gave a
    command that resulted in all the routes leading to Facebook&apos;s data centers
    being withdrawn.  In less than a minute Facebook&apos;s DNS servers noticed
    that their network was &quot;unhealthy&quot;, and took themselves offline.  At that
    point Facebook had basically shot themselves in the foot with a cannon.

&lt;p&gt; Normally, engineers can fix server configuration problems like this by
    connecting to the servers over the internet.  But Facebook&apos;s servers
    weren&apos;t connected to the internet anymore.  To make matters worse, the
    computers that control access to Facebook&apos;s buildings -- offices as well
    as data centers -- weren&apos;t able to connect to the database that told them
    whose badges were valid.

&lt;p&gt; Meanwhile, computers that wanted to look up Facebook or any of its other
    domains (like WhatsApp and Instagram), kept getting DNS failures.  There
    isn&apos;t a good way for an app or a computer to determine whether a DNS
    lookup failure is temporary or permanent, so they keep re-trying,
    sometimes (as &lt;a href=&quot;https://blog.cloudflare.com/october-2021-facebook-outage/&quot;&gt;Cloudflare&apos;s blog post puts it&lt;/a&gt;) &quot;aggressively&quot;.  Users don&apos;t usually
    take an error for an answer either, so they keep reloading pages,
    restarting their browsers, and so on.  &quot;Sometimes also aggressively.&quot;
    Traffic to Facebook&apos;s DNS servers increased to 30 times normal, and
    traffic to alternatives like Signal, Twitter, Telegram, and Tiktok
    nearly doubled.

&lt;p&gt; Altogether a nice demonstration of Facebook&apos;s monopoly power, and great
    fun to read about if you weren&apos;t relying on it.

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://blog.cloudflare.com/october-2021-facebook-outage/&quot;&gt;Understanding How Facebook Disappeared from the Internet&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://engineering.fb.com/2021/10/04/networking-traffic/outage/&quot;&gt;Update about the October 4th outage - Facebook Engineering&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://krebsonsecurity.com/2021/10/what-happened-to-facebook-instagram-whatsapp/&quot;&gt;What Happened to Facebook, Instagram, &amp; WhatsApp? – Krebs on Security&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/&quot;&gt;More details about the October 4 outage - Facebook Engineering&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://blog.cdemi.io/beginners-guide-to-understanding-bgp/&quot;&gt;Beginner&apos;s Guide to Understanding BGP&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.cloudflare.com/learning/dns/what-is-dns/&quot;&gt;What is
    DNS? | How DNS works | Cloudflare&lt;/a&gt; 
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1789687&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1789687.html</comments>
  <category>computers</category>
  <category>curmudgeon</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>12</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1787951.html</guid>
  <pubDate>Wed, 29 Sep 2021 23:34:59 GMT</pubDate>
  <title>Public Service Announcement: Things to watch out for</title>
  <link>https://mdlbear.dreamwidth.org/1787951.html</link>
  <description>&lt;p&gt; A rather mixed bag of things that, arguably, I should have written about a
    week ago.

&lt;p&gt; &lt;strong&gt;1: the Let&apos;s Encrypt root certificate&lt;/strong&gt;.

&lt;p&gt; Hopefully this won&apos;t affect you, but if your browser starts complaining
    about websites suddenly being untrusted, you need to upgrade.  The problem
    is that &lt;a href=&quot;https://scotthelme.co.uk/lets-encrypt-old-root-expiration/&quot;&gt;Let&apos;s Encrypt&apos;s root certificate is expiring&lt;/a&gt;,  and will be replaced
    by a new one (see the link above for details).  Starting October
    1&lt;sup&gt;st&lt;/sup&gt;, browsers and other programs that rely on the old cert will
    have problems if they haven&apos;t been upgraded in the last year.

&lt;p&gt; You keep your OS and your browser up to date, right?  There are some old
    apps and operating systems that are no longer receiving upgrades, and so
    won&apos;t know about the new root cert.  Specifically, if you&apos;re using one of
    these products: 

&lt;blockquote&gt;
&lt;p&gt; OpenSSL &amp;lt;= 1.0.2, Windows &amp;lt; XP SP3, macOS &amp;lt; 10.12.1, iOS &amp;lt; 10 (iPhone 5 is
    the lowest model that can get to iOS 10), Android &amp;lt; 7.1.1 (but &amp;gt;= 2.3.6
    will still mostly work), Mozilla Firefox &amp;lt; 50, Ubuntu &amp;lt; 16.04, Debian &amp;lt; 8,
    Java 8 &amp;lt; 8u141, Java 7 &amp;lt; 7u151, NSS &amp;lt; 3.26, Amazon FireOS (Silk Browser).
&lt;p&gt; Possibly, Cyanogen &amp;gt; v10, Jolla Sailfish OS &amp;gt; v1.1.2.16, Kindle &amp;gt; v3.4.1,
    Blackberry &amp;gt;= 10.3.3, PS4 game console with firmware &amp;gt;= 5.00, IIS
&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; (You can probably uptrade to the newest Firefox or switch to a recent
    version of Chrome, which will restore your ability to browse the web, but
    a few other things might still fail.  (For example, Firefox will keep
    working on my ancient Mac Mini, but Safari probably won&apos;t.)

&lt;p&gt; The following articles go into a lot more detail; you can get a good
    overview from the first two:

&lt;blockquote style=&quot;white-space: pre-wrap;&quot;&gt;
    &lt;a href=&quot;https://www.tomsguide.com/news/smart-home-cert-disaster&quot;&gt;Smart TVs, fridges and light bulbs may stop working next year: Here&apos;s why&lt;/a&gt;
    &lt;a href=&quot;https://www.theregister.com/2020/06/10/iot_trouble_root_certificates_expire/&quot;&gt;An Internet of Trouble lies ahead as root certificates begin to expire en masse,
    warns security researcher • The Register&lt;/a&gt;
    &lt;a href=&quot;https://scotthelme.co.uk/impending-doom-root-ca-expiring-legacy-clients/&quot;&gt;The Impending Doom of Expiring Root CAs and Legacy Clients&lt;/a&gt;
    &lt;a href=&quot;https://scotthelme.co.uk/lets-encrypt-old-root-expiration/&quot;&gt;Let&apos;s Encrypt&apos;s Root Certificate is expiring!&lt;/a&gt;
    &lt;a href=&quot;https://letsencrypt.org/docs/certificate-compatibility/&quot;&gt;Certificate Compatibility - Let&apos;s Encrypt&lt;/a&gt;
&lt;/blockquote&gt;


&lt;p&gt; &lt;strong&gt;2. Phillips Respironics CPAP recall:&lt;/strong&gt;

&lt;p&gt; If you&apos;re using a CPAP made by Phillips Respironics, hopefully you&apos;ve
    already seen the &lt;a href=&quot;https://www.usa.philips.com/healthcare/e/sleep/communications/src-update?gclid=82212d7d0dc01f190af24c31a4f960a2&amp;amp;gclsrc=3p.ds#cpap_devices&quot;&gt;Recall Notification&lt;/a&gt; &lt;a href=&quot;https://www.philips.com/c-dam/b2bhc/master/landing-pages/src/update/documents/philips-recall-letter-2021-05-a-2021-06-a.pdf&quot;&gt;[PDF]&lt;/a&gt;.  I missed it, through my habit of ignoring notifications in
     the Dreamstation app and website.  The email I got from Medicare says:

&lt;blockquote&gt;
&lt;p&gt; If you own or rent one of the Philips products that was recalled, talk to
      your doctor as soon as possible about whether to continue using your
      recalled equipment.  If you would like to replace or repair your
      equipment, the supplier you bought the equipment from is responsible for
      replacing or repairing rental equipment at no cost to you when the
      equipment is less than 5 years old.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; If, like me, you insist on continuing to use your facehugger, install an
    antibacterial filter, which will keep little bits of soundproofing foam
    out of your lungs.  This is probably only necessary if you&apos;ve been using
    ozone to clean your device, but I decided not to take chances.

&lt;p&gt; &lt;strong&gt;3. Chevrolet Bolt EV recall:&lt;/strong&gt;

&lt;p&gt; If you own a Bolt, you should have received &lt;a href=&quot;https://www.chevrolet.com/electric/bolt-recall&quot;&gt;several letters
    about this recall&lt;/a&gt;.  Hopefully you haven&apos;t been throwing them away
    unread, but if you have, you&apos;ll want to enable &quot;hilltop reserve&quot; to limit
    your charging to 90%, don&apos;t run your battery down below about 70 miles,
    park outside immediately after charging, and don&apos;t leave your Bolt
    charging indoors overnight.  &quot;Experts from GM and LG have identified the
    simultaneous presence of two rare manufacturing defects in the same
    battery cell as the root cause of battery fires in certain Chevrolet Bolt
    EVs.&quot;  You don&apos;t want to take chances with battery fires.  They&apos;re
    &lt;em&gt;nasty&lt;/em&gt;; lithium is perfectly capable of burning under water.

&lt;p&gt; &lt;strong&gt;Be safe out there.&lt;/strong&gt;

&lt;p&gt; On a more hopeful(?  helpful, at least) note, &lt;a href=&quot;https://dialecticdreamer.dreamwidth.org/&quot;&gt;dialecticdreamer&lt;/a&gt; has
    posted &lt;a href=&quot;https://dialecticdreamer.dreamwidth.org/937100.html&quot;&gt;Demifiction:  Breaking Omaha!&lt;/a&gt;, which despite being set in a fictional
    universe contains a lot of practical advice for disaster preparedness.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1787951&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1787951.html</comments>
  <category>signal boost</category>
  <category>psa</category>
  <category>recalls</category>
  <category>computers</category>
  <category>software</category>
  <lj:mood>informative</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1775180.html</guid>
  <pubDate>Sun, 06 Jun 2021 00:59:57 GMT</pubDate>
  <title>Finding ELIZA</title>
  <link>https://mdlbear.dreamwidth.org/1775180.html</link>
  <description>&lt;p&gt; &lt;strong&gt;Note:&lt;/strong&gt; Despite being posted on a Saturday and a title that
    includes the name of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Eliza_Doolittle&quot;&gt;a character&lt;/a&gt; from
    &lt;a href=&quot;https://en.wikipedia.org/wiki/My_Fair_Lady&quot;&gt;a well-known
    musical&lt;/a&gt;, this is &lt;em&gt;not&lt;/em&gt; a Songs for Saturday post.  It doesn&apos;t
    have anything to do with &lt;a href=&quot;https://en.wikipedia.org/wiki/Finding_Nemo&quot;&gt;fish&lt;/a&gt;, either.

&lt;p&gt; Remarkably, &lt;em&gt;Joseph Weizenbaum&apos;s &lt;a href=&quot;https://drive.google.com/file/d/1DkdV2o-36mm3x2nURjhKiCaFcjZtMIoI/view&quot;&gt;original source code&lt;/a&gt; for &lt;a href=&quot;https://en.wikipedia.org/wiki/ELIZA&quot;&gt;ELIZA&lt;/a&gt; has been
    rediscovered,&lt;/em&gt; after having been missing and believed lost for over
    half a century, and was &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;made
    public&lt;/a&gt; on May 23rd of this year.  ELIZA is probably the oldest and
    almost certainly the best-known implementation of what is now known as a
    chatbot.

&lt;p&gt; If you decide to look at the code, start by reading &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;the
    web page it&apos;s embedded in&lt;/a&gt; before you dive into the listing.  The
    &quot;Notes on reading the code&quot; section, which comes &lt;em&gt;after&lt;/em&gt; the
    listing, will prevent a lot of confusion.  &lt;a href=&quot;https://drive.google.com/file/d/1DkdV2o-36mm3x2nURjhKiCaFcjZtMIoI/view&quot;&gt;The listing itself&lt;/a&gt; is a scan of a 132-column listing, and definitely
    benefits from being viewed full-screen on a large monitor.

&lt;p&gt; The first thing you see in the listing is the &lt;em&gt;script&lt;/em&gt; -- the set
    of rules that tells the ELIZA program how to respond to input.  The
    program itself starts on page 6. You might be misled by the rules, which
    are in the form of parenthesized lists, into thinking that the program
    would be written in LISP. It&apos;s not; it&apos;s written in &lt;a href=&quot;https://en.wikipedia.org/wiki/MAD_programming_language&quot;&gt;MAD&lt;/a&gt;, an
    Algol-like language, with Weisenbaum&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/SLIP_(programming_language)&quot;&gt;SLIP&lt;/a&gt;
    (Symmetric List Processing) primitives embedded in it.

&lt;p&gt; SLIP uses circular, bidirectionally-linked lists.  Each list has a header
    with pointers to the first and last list element; the header of an empty
    list points to itself.  I&apos;ve lost track of how many times I&apos;ve implemented
    doubly-linked lists, in everything from assembly language to Java.

&lt;p&gt; ELIZA is the name of the &lt;em&gt;program&lt;/em&gt;, but &quot;Eliza&quot; usually refers to
    the combination of an Eliza-like program with the Doctor script.  The most
    common script is a (rather poor) simulation of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Person-centered_therapy&quot;&gt;Rogerian&lt;/a&gt;
    psychotherapist called &quot;Doctor&quot;.  According to the note at the bottom of
    the Original Eliza page, actual Rogerian therapists have pronounced it a
    perfect example of how &lt;em&gt;not&lt;/em&gt; to do Rogerian therapy.  Nevertheless,
    many people are said to have been helped by ELIZA, and it&apos;s possible to
    have a &lt;a href=&quot;https://computerhistory.org/blog/the-promise-of-the-doctor-program-early-ai-at-stanford/&quot;&gt;surprisingly intimate conversation&lt;/a&gt; with her as long as you suspend
    your disbelief and respect her limits.

&lt;p&gt; If you have Emacs installed on your computer, you can access a &lt;a href=&quot;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/play/doctor.el&quot;&gt;version of Doctor&lt;/a&gt; with &lt;code&gt;M-X doctor&lt;/code&gt;.  Otherwise, browse to
    &lt;a href=&quot;http://psych.fullerton.edu/mbirnbaum/psych101/Eliza.htm&quot;&gt;Eliza,
    Computer Therapist&lt;/a&gt; if you don&apos;t mind having a potentially intimate
    conversation with something hosted on a public website.  (Or simply
    download the page -- it&apos;s written in Javascript.)

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://sites.google.com/view/elizagen-org/about&quot;&gt;ELIZAGEN -- The Genealogy of ELIZA&lt;/a&gt; &quot;This site is dedicated to
       tracing the legacy ofJoseph Weizenbaum&apos;s ELIZA (aka. Doctor) program.&quot;
  &lt;li&gt; &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;ELIZAGEN - The Original ELIZA&lt;/a&gt; - the source code.
  &lt;li&gt; &lt;a href=&quot;https://github.com/anthay/ELIZA&quot;&gt;anthay/ELIZA: A Simulation
       in C++ of Joseph Weizenbaum’s 1966 ELIZA&lt;/a&gt; by Anthony Hay.  The
       README includes both a copy of the transcript published in Wizenbaum&apos;s
       CACM article in 1966, and a detailed description of the script syntax
       and how it works.
  &lt;li&gt; &lt;a href=&quot;https://babel.hathitrust.org/cgi/pt?id=mdp.39015021689271&amp;amp;view=1up&amp;amp;seq=7&quot;&gt;MAD (Michigan Algorithm Decoder) manual&lt;/a&gt; by Elliott Organick
       (1961).
  &lt;li&gt; &lt;a href=&quot;https://www.gnu.org/software/gslip/manual/&quot;&gt;GNU gSlip&lt;/a&gt; [&lt;a href=&quot;https://www.gnu.org/software/gslip/manual/UserManual.pdf&quot;&gt;PDF
       Manual(738K)&lt;/a&gt;] for C++.
  &lt;li&gt; &lt;a href=&quot;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/play/doctor.el&quot;&gt;doctor.el\play\lisp - emacs.git - Emacs source repository&lt;/a&gt; - the
       Doctor program as implemented in Emacs LISP.
  &lt;li&gt; &lt;a href=&quot;http://psych.fullerton.edu/mbirnbaum/psych101/Eliza.htm&quot;&gt;Eliza,
       Computer Therapist&lt;/a&gt; in Javascript
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1775180&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1775180.html</comments>
  <category>history</category>
  <category>curmudgeon</category>
  <category>list-processing</category>
  <category>computers</category>
  <category>ai</category>
  <lj:music>not by Frederick Loewe</lj:music>
  <lj:mood>astounded</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1763202.html</guid>
  <pubDate>Sat, 06 Mar 2021 06:45:20 GMT</pubDate>
  <title>Operation Exchange Marauder</title>
  <link>https://mdlbear.dreamwidth.org/1763202.html</link>
  <description>&lt;p&gt; If you happen to be the administrator of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Exchange_Server&quot;&gt;Microsoft
    Exchange Server&lt;/a&gt; that can be accessed from the internet, you need to
    &lt;em&gt;immediately&lt;/em&gt;

&lt;ol&gt;
  &lt;li&gt; Apply the patches that Microsoft released on Tuesday:  &lt;a href=&quot;https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/&quot;&gt;Multiple Security Updates Released for Exchange Server – updated March
       5, 2021 – Microsoft Security Response Center&lt;/a&gt;

  &lt;li&gt; Use &lt;a href=&quot;https://github.com/microsoft/CSS-Exchange/tree/main/Security&quot;&gt;this
       script (on GitHub)&lt;/a&gt; to scan your logs, as described in &lt;a href=&quot;https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/#scan-log&quot;&gt;HAFNIUM targeting Exchange Servers with 0-day exploits - Microsoft
       Security&lt;/a&gt; to determine whether you are one of the &lt;a href=&quot;https://krebsonsecurity.com/2021/03/at-least-30000-u-s-organizations-newly-hacked-via-holes-in-microsofts-email-software/&quot;&gt;at least 30,000 organizations&lt;/a&gt; that have been hacked via the holes you
       just patched (see Step 1).  (You &lt;em&gt;did&lt;/em&gt; patch them, right?)  If you
       are,...

  &lt;li&gt; Figure out what it means to your organization that all of your
       organization&apos;s internal email is now sitting on a disk somewhere in
       China.  If that sounds like A Very Bad Thing,...

  &lt;li&gt; Panic.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;


&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://krebsonsecurity.com/2021/03/at-least-30000-u-s-organizations-newly-hacked-via-holes-in-microsofts-email-software/&quot;&gt;At Least 30,000 U.S. Organizations Newly Hacked Via Holes in Microsoft’s Email
    Software — Krebs on Security&lt;/a&gt; 
  &lt;li&gt;   &lt;a href=&quot;https://krebsonsecurity.com/2021/03/microsoft-chinese-cyberspies-used-4-exchange-server-flaws-to-plunder-emails/&quot;&gt;Microsoft: Chinese Cyberspies Used 4 Exchange Server Flaws to Plunder Emails&lt;/a&gt; 
  &lt;li&gt; &lt;a href=&quot;https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/&quot;&gt;HAFNIUM targeting Exchange Servers with 0-day exploits - Microsoft Security&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/&quot;&gt;Multiple Security Updates Released for Exchange Server – updated March
       5, 2021 – Microsoft Security Response Center&lt;/a&gt; 
  &lt;li&gt;  &lt;a href=&quot;https://www.volexity.com/blog/2021/03/02/active-exploitation-of-microsoft-exchange-zero-day-vulnerabilities/&quot;&gt;Operation Exchange Marauder: Active Exploitation of Multiple Zero-Day Microsoft
    Exchange Vulnerabilities | Volexity&lt;/a&gt; 
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1763202&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1763202.html</comments>
  <category>curmudgeon</category>
  <category>computers</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1761679.html</guid>
  <pubDate>Wed, 24 Feb 2021 21:18:59 GMT</pubDate>
  <title>RIP Fry&apos;s Electronics -- the end of an era</title>
  <link>https://mdlbear.dreamwidth.org/1761679.html</link>
  <description>&lt;p&gt; Today I was shocked to read that &lt;a href=&quot;https://en.wikipedia.org/wiki/Fry&amp;#39;s_Electronics&quot;&gt;Fry&apos;s
    Electronics&lt;/a&gt; &lt;a href=&quot;https://apnews.com/article/frys-electronics-closing-9cf141bb1996899d5bd931109eb34f34&quot;&gt;has gone out of business&lt;/a&gt;, as of midnight last night (February 24th).
    Their &lt;a href=&quot;https://www.frys.com/&quot;&gt;web page&lt;/a&gt; has the announcement:

&lt;blockquote&gt;
&lt;p&gt; After nearly 36 years in business as the one-stop-shop and online resource
    for high-tech professionals across nine states and 31 stores, Fry’s
    Electronics, Inc. (“Fry’s” or “Company”), has made the difficult decision
    to shut down its operations and close its business permanently as a result
    of changes in the retail industry and the challenges posed by the Covid-19
    pandemic. The Company will implement the shut down through an orderly wind
    down process that it believes will be in the best interests of the
    Company, its creditors, and other stakeholders.  
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt; It&apos;s a sad, sad day.  Their first ad, a full page in the &lt;a href=&quot;https://www.mercurynews.com/&quot;&gt;San Jose Mercury-News&lt;/a&gt;, was like
    nothing seen before (or since), listing computer chips and potato chips on
    the same page.  (Its relationship to &lt;a href=&quot;https://en.wikipedia.org/wiki/Fry%27s_Food_and_Drug&quot;&gt;Fry&apos;s Food and
    Drug&lt;/a&gt;, which had recently been sold by the founders&apos; father, was
    obvious.)  As time went by the groceries largely disappeared, but soft
    drinks and munchies remained, and some of the larger stores included a
    cafe&amp;eacute;.

&lt;p&gt; I (snail) mailed a copy of that first ad to my father, and that first
    Sunnyvale store was one of the tourist attractions we visited on his next
    visit to the West Coast.  I have no idea how much money I spent there over
    the years.

&lt;p&gt; After I moved to Washington in 2012 my visits to Fry&apos;s became much less
    frequent, and more of my electronics started coming from Amazon.  It&apos;s
    been years since I saw the inside of a Fry&apos;s store.

&lt;p&gt; I&apos;ll miss it.

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1761679&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1761679.html</comments>
  <category>memoir</category>
  <category>2021</category>
  <category>rip</category>
  <category>curmudgeon</category>
  <category>computers</category>
  <lj:mood>nostalgic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1761198.html</guid>
  <pubDate>Wed, 17 Feb 2021 02:56:23 GMT</pubDate>
  <title>Dependency Confusion</title>
  <link>https://mdlbear.dreamwidth.org/1761198.html</link>
  <description>&lt;p&gt; I&apos;ve always been a little uncomfortable about build systems and languages
    that start the build by going out to a package repository and pulling down
    the most recent (minor or patch) version of every one of the package&apos;s
    dependencies.  Followed by all of &lt;em&gt;their&lt;/em&gt; dependencies.  The
    best-known of these are probably Python&apos;s &lt;code&gt;pip&lt;/code&gt; package
    manager, Javascript&apos;s &lt;code&gt;npm&lt;/code&gt; (node package manager), and Ruby&apos;s
    &lt;code&gt;gems&lt;/code&gt;.  They&apos;re quite impressive to watch, as they fetch
    package after package from their repository and include it in the program
    or web page being built.  What could possibly go wrong?

&lt;p&gt; Plenty, as it turns out.

&lt;p&gt; The best-known technique for taking advantage of a package manager is &lt;a href=&quot;https://incolumitas.com/2016/06/08/typosquatting-package-managers/&quot;&gt;typosquatting&lt;/a&gt; -- picking a name for a malware package that&apos;s a
    plausible misspelling of a real one, and waiting for someone to make a
    typo.  (It&apos;s an adaptation of the same technique from DNS - picking a
    domain name close to that of some popular site in hopes of siphoning off
    some of the legitimate site&apos;s traffic.  These days it&apos;s common for
    companies to typosquat their own domains before somebody else does --
    &lt;code&gt;facbook.com&lt;/code&gt; redirects to FB, for example.)

&lt;p&gt; A few days ago, Alex Birsan published &quot;&lt;a href=&quot;https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610&quot;&gt;Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of
    Other Companies&lt;/a&gt;&quot;, describing a new attack that relies on the way
    package managers like &lt;code&gt;npm&lt;/code&gt; resolve dependencies, by looking
    for and fetching the most recent compatible version (i.e. with the same
    major version) of every package, and the fact that they can be made to
    look in more than one repository.

&lt;p&gt; Fetching the most recent minor version of a package is usually perfectly
    safe; packages have owners, and only the owner can upload a new version to
    the repository.  (There have been a few cases where somebody has gotten
    tired of maintaining a popular package, and transferred ownership to
    someone who turned out to be, shall we say, less than reliable.)

&lt;p&gt; The problem comes if, like most large companies and many small ones, you
    have a private repository that some of your packages come from.  The
    package manager looks in both places, public and private, for the most
    recent version.  If an attacker somehow gets the name and version number
    of a private package that doesn&apos;t exist in the public repository, they can
    upload a bogus package with the same name and a later version.

&lt;p&gt; It  turns out that the names and versions of private packages can be
    leaked in a wide variety of ways.  The simplest turns out to be looking in
    your target&apos;s web apps -- apparently it&apos;s not uncommon to find a copy of a
    `package.json` left in the app&apos;s JavaScript by the build process.  Birsan
    goes into detail on this and other sources of information.

&lt;p&gt; Microsoft has published &lt;a href=&quot;https://azure.microsoft.com/en-us/resources/3-ways-to-mitigate-risk-using-private-package-feeds/&quot;&gt;3 Ways to Mitigate Risk When Using Private Package Feeds&lt;/a&gt;, so that&apos;s a
    good place to look if you have this problem and want to fix it.  (Hint:
    you &lt;em&gt;really&lt;/em&gt; want to fix it.)  Tl;dr: by far the simplest fix is to
    have one private repo that includes both your private packages,
    &lt;em&gt;and&lt;/em&gt; all of the public packages your software depends on.  Point
    your package manager at &lt;em&gt;that&lt;/em&gt;.  Updating the repo to get the most
    recent public versions is left as an exercise for the reader; if I was
    doing it I&apos;d just make a set of dummy package that depend on them.

&lt;p&gt; Happy hacking!

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610&quot;&gt;Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other
    Companies | by Alex Birsan | Feb, 2021 | Medium&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.bleepingcomputer.com/news/security/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack/&quot;&gt;Researcher hacks over 35 tech firms in novel supply chain attack&lt;/a&gt; 
  &lt;li&gt; &lt;a href=&quot;https://azure.microsoft.com/en-us/resources/3-ways-to-mitigate-risk-using-private-package-feeds/&quot;&gt;3 Ways to Mitigate Risk When Using Private Package Feeds&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-24105&quot;&gt;CVE-2021-24105 - Security Update Guide - Microsoft - Package Managers Configurations
    Remote Code Execution Vulnerability&lt;/a&gt; 
  &lt;li&gt; &lt;a href=&quot;https://incolumitas.com/2016/06/08/typosquatting-package-managers/&quot;&gt;incolumitas.com – Typosquatting programming language package
       managers&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://semver.org/&quot;&gt;Semantic Versioning 2.0.0&lt;/a&gt; 
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1761198&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1761198.html</comments>
  <category>packages</category>
  <category>supply-chain</category>
  <category>attacks</category>
  <category>computers</category>
  <category>curmudgeon</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1754227.html</guid>
  <pubDate>Sat, 26 Dec 2020 20:30:36 GMT</pubDate>
  <title>Songs for Saturday:  Today is Babbage&apos;s birthday</title>
  <link>https://mdlbear.dreamwidth.org/1754227.html</link>
  <description>&lt;p&gt; Not only is today Boxing Day, it&apos;s also the birthday of Charles Babbage:
    December 26, 1791.  He invented the stored-program digital computer, which
    he called the &lt;a href=&quot;https://en.wikipedia.org/wiki/Analytical_Engine&quot;&gt;Analytical Engine&lt;/a&gt;.  That also makes the Analytical Engine the first
    &lt;em&gt;unfinished&lt;/em&gt; computer project (unless you count Babbage&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Difference_engine&quot;&gt;Difference
    Engine&lt;/a&gt;, but that wasn&apos;t a general-purpose computer).  Contrary to
    popular belief, the mechanical precision of the time was quite capable of
    producing it (proved by the full implementation of the Difference Engine,
    using 1820s-level technology, in the 1990s), but the machining proved much
    more expensive than expected, and the project eventually ran out of
    funding.  It&apos;s an old story.

&lt;p&gt; But this post isn&apos;t about Babbage, or the Difference Engine -- this post
    is about a song I wrote back in 1985 called &lt;cite&gt;&lt;a href=&quot;http://Steve.Savitzky.net/Songs/uncle/&quot;&gt;Uncle Ernie&apos;s&lt;/a&gt;&lt;/cite&gt; &lt;a href=&quot;uncle.ogg&quot;&gt;[ogg]&lt;/a&gt;&lt;a href=&quot;uncle.mp3&quot;&gt;[mp3]&lt;/a&gt;, and &lt;em&gt;that&lt;/em&gt;
    in turn was directly inspired by &lt;a href=&quot;https://web.archive.org/web/20040221010205/http://www.mikequinnelectronics.com/&quot;&gt;Mike Quinn Electronics&lt;/a&gt;, a surplus joint located in a run-down old
    building at the Oakland airport, run by a guy named Mike Quinn.  I had to
    search for the name of the store; everyone just called it &quot;Quinn&apos;s&quot;.
    There&apos;s a good description of the place in &lt;a href=&quot;https://www.imsai.net/mighty-quinn/&quot;&gt;&quot;Mighty Quinn and the IMSAI
    connection&quot;&lt;/a&gt; on &lt;a href=&quot;https://www.imsai.net/&quot;&gt;The Official IMSAI
    Home Page&lt;/a&gt;.  As far as I know there is no connection to &lt;a href=&quot;https://www.bobdylan.com/songs/quinn-eskimo-mighty-quinn/&quot;&gt;&quot;Quinn
    the Eskimo&quot; by Bob Dylan&lt;/a&gt; besides the title.

&lt;p&gt; At one point Quinn&apos;s had a &lt;a href=&quot;https://en.wikipedia.org/wiki/Bendix_G-15&quot;&gt;Bendix G-15&lt;/a&gt; for
    sale, with a price tag just short of $1000.  Unlike the one I first
    learned programming on, it had magtape drives as well as paper tape.
    Somebody eventually bought it; I hope they gave it a good home.  That&apos;s
    almost certainly the origin of the line about magtape drives in the second
    verse.  A &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_7090&quot;&gt;7090&lt;/a&gt; would
    have occupied the entire building.

&lt;p&gt; Almost all of the other computers mentioned -- Altair, Imsai, Apple 3, PC
    Junior, &lt;a href=&quot;https://en.wikipedia.org/wiki/HERO_(robot)&quot;&gt;Heathkit
    Hero&lt;/a&gt; (yes, Heath sold robot kits back in the 1980s) -- were also quite
    real, and some of the smaller ones almost certainly &lt;em&gt;did&lt;/em&gt; show up
    at Quinn&apos;s from time to time, especially the Imsai and Altair, which were
    sold in kit form.  The only thing I made up completely was the temperature
    controller in verse three.  The only one I actually &lt;em&gt;used&lt;/em&gt; was the
    7090 (or rather its successor, the 7094, but that wouldn&apos;t have scanned).

&lt;p&gt; &lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1754227.html#cutid1&quot;&gt;lyrics, if you don&apos;t want to click through:&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1754227&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1754227.html</comments>
  <category>memoir</category>
  <category>music</category>
  <category>computers</category>
  <category>s4s</category>
  <lj:music>see post</lj:music>
  <lj:mood>nostalgic?</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1750335.html</guid>
  <pubDate>Sat, 28 Nov 2020 04:38:49 GMT</pubDate>
  <title>More on branch name changes</title>
  <link>https://mdlbear.dreamwidth.org/1750335.html</link>
  <description>&lt;p&gt; You may remember &lt;a href=&quot;https://mdlbear.dreamwidth.org/1744377.html&quot;&gt;this post about renaming the default branch in Git repositories&lt;/a&gt;.
    Since then I&apos;ve done some script writing -- they say you don&apos;t really
    understand a process until you can write a program that does it, and this
    was no exception.  (There are lots of exceptions, actually, but that&apos;s
    rather beside the point of this post...)

&lt;p&gt; Anyway, here&apos;s what I think is the best way to rename master to main in a
    clone of a repository where that rename has already been done.  (That&apos;s a
    common case anywhere you have multiple developers, each with their own
    clone, or one developer like me who works on a different laptop depending
    on the time of day and where the cats are sitting.)

&lt;pre&gt;     git fetch
     git branch -m master main
     git branch -u origin/main main
     git remote set-head origin main
     git remote prune origin&lt;/pre&gt;

&lt;p&gt; The interesting part is &lt;em&gt;why&lt;/em&gt; this is the best way I&apos;ve found of
    doing it:  1. It works even if master isn&apos;t the current branch, or if it&apos;s
    out of date or diverged from upstream.  2. It doesn&apos;t print extraneous
    warnings or fail with an error.  Neither of those is a problem if you&apos;re
    doing everything manually, but it can be annoying or fatal in a script.
    So here it is again, with commentary:

&lt;p&gt; &lt;code&gt;git fetch&lt;/code&gt; -- you have to do this first, or the &lt;code&gt;git
    branch -u ...&lt;/code&gt; line will fail  because git will think you&apos;re setting
    upstream to a branch that doesn&apos;t exist on the origin.

&lt;p&gt; &lt;code&gt;git branch -m master main&lt;/code&gt; -- note that the renamed branch
    will still be tracking master.  We fix that with...

&lt;p&gt; &lt;code&gt;git branch -u origin/main main&lt;/code&gt; -- many of the pages I&apos;ve seen
    use &lt;code&gt;git&amp;nbsp;push&amp;nbsp;-u...&lt;/code&gt;, but the push isn&apos;t necessary
    and has several different ways it can fail, for example if the current
    branch isn&apos;t main or if it isn&apos;t up to date.
     
&lt;p&gt; &lt;code&gt;git remote set-head origin main&lt;/code&gt; -- This sets main as the
    default branch, so things like &lt;code&gt;git&amp;nbsp;push&lt;/code&gt; will work
    without naming the branch.  You can use &lt;code&gt;-a&lt;/code&gt; for &quot;automatic&quot;
    instead of the branch name, but why make git do extra work?  Many of the
    posts I&apos;ve seen use the following low-level command, which works but isn&apos;t
    very clear and relies on implementation details you shouldn&apos;t have to
    bother with:

&lt;pre&gt;    git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main&lt;/pre&gt;

&lt;p&gt; &lt;code&gt;git remote prune origin&lt;/code&gt; -- I&apos;ve seen people suggesting
    &lt;code&gt;git&amp;nbsp;fetch&amp;nbsp;--prune&lt;/code&gt;, but we already did the fetch way
    back in step 1.  Alternatively, we could use &lt;code&gt;--prune&lt;/code&gt; on that
    first fetch, but then git will complain about master tracking a branch
    that doesn&apos;t exist.  It still works, but it&apos;s annoying in a script.

&lt;blockquote&gt;
&lt;p&gt; Just as an aside because I think it&apos;s amusing:  my former employer (a
    large online retailer) used and probably still uses &quot;mainline&quot; for the
    default branch, and I&apos;ve seen people suggesting as an alternative to
    &quot;main&quot;.  It is, if anything, more jarring than &quot;master&quot; for someone who
    has previously encountered &quot;mainlining&quot; only in the context of
    self-administered street drugs.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1750335&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1750335.html</comments>
  <category>git</category>
  <category>curmudgeon</category>
  <category>black-lives-matter</category>
  <category>scripting</category>
  <category>computers</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1745953.html</guid>
  <pubDate>Wed, 11 Nov 2020 04:30:58 GMT</pubDate>
  <title>How to Git out of trouble (part 1)</title>
  <link>https://mdlbear.dreamwidth.org/1745953.html</link>
  <description>&lt;p&gt;Hopefully, this post will become the first of a series about solving various
common problems with Git.  Note that the grouping in that phrase is
intentionally ambiguous – it could be either “(solving various common
problems) with Git”, or “solving (various common problems with Git)”, and I
expect to cover both meanings.  Often there are aspects of both:  Git got you
into trouble, and you need to use Git to get yourself out of it.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“It is easy to shoot your foot off with git, but also easy to revert to a
previous foot and merge it with your current leg.” —Jack William Bell&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In many cases, though, this will involve &lt;code&gt;git rebase&lt;/code&gt; rather than &lt;code&gt;merge&lt;/code&gt;, and
I think “rebase it onto your current leg” reads better.&lt;/p&gt;

&lt;h2&gt;Overcoming your fear of &lt;code&gt;git rebase&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;Many introductions to Git leave out &lt;code&gt;rebase&lt;/code&gt;, either because the author
considers it an “advanced technique”, or because “it changes history” and the
author thinks that it’s undesirable to do so.  The latter is undermined by the
fact that they usually &lt;em&gt;do&lt;/em&gt; talk about &lt;code&gt;git commit --amend&lt;/code&gt;.  But, like amend,
rebase lets you correct mistakes that you would otherwise simply have to live
with, and avoid some situations that you would have a lot of trouble backing
out of.&lt;/p&gt;

&lt;p&gt;In order to rebase fearlessly, you only need to follow these simple rules:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Always commit your changes before you pull, merge, rebase, or check out
another branch!&lt;/strong&gt; If you have your changes committed, you can always back out
with &lt;code&gt;git reset&lt;/code&gt; if something goes wrong.  Stashing also works, because &lt;code&gt;git
stash&lt;/code&gt; commits your work in progress before resetting back to the last
commit.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Never rebase or amend a commit that’s already been pushed to a shared
branch!&lt;/strong&gt; You can undo changes that were pushed by mistake with &lt;code&gt;git
revert&lt;/code&gt;.  (There are a few cases where you really &lt;em&gt;have to&lt;/em&gt; force-push
changes, for example if you foolishly commit a configuration file that has
passwords in it.  It’s a huge hassle, and everyone else on your team will be
annoyed at you.  If you’re working on a personal project, you’ll be annoyed
at &lt;em&gt;yourself&lt;/em&gt;, which might be even worse.)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;If you’re collaborating, do your work on a feature branch.&lt;/strong&gt; You can use
amend and rebase to clean it up before you merge it.  You can even share it
with a teammate (although it might be simpler to email a patch set).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last rule is a lot less important if you’re working by yourself, but it’s
still a good idea if you want to keep your history clean and understandable –
see &lt;a href=&quot;https://stephen.savitzky.net/Doc/keeping-master-happy/&quot;&gt;Why and
How To Keep Your Master Happy&lt;/a&gt;.  And remember that you’re effectively
collaborating if your project is on &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
or &lt;a href=&quot;https://gitlab.com/&quot;&gt;GitLab&lt;/a&gt;, even if nobody’s forked it yet.&lt;/p&gt;

&lt;h2&gt;Push rejected (not fast forward)&lt;/h2&gt;

&lt;p&gt;One common situation where you may want to rebase is when you try to push a
commit and it gets rejected because there’s another commit on the remote repo.
You can detect this situation without actually trying to push – just use &lt;code&gt;git
fetch&lt;/code&gt; followed by &lt;code&gt;git status&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I get into this situation &lt;em&gt;all the time&lt;/em&gt; with my to-do file, because I make my
updates on the master branch and I have one laptop on my desk and a different
one in my bedroom, and sometimes I make and commit some changes without
pulling first to sync up.  This usually happens before I’ve had my first cup
of coffee.&lt;/p&gt;

&lt;p&gt;The quick fix is &lt;code&gt;git pull --rebase&lt;/code&gt;.  Now all of the changes you made are
sitting on top of the commit you just pulled, and it’s safe for you to push.
If you’re developing software, be sure to run all your tests first, and take a
close look at the files that were merged.  Just because Git is happy with your
rebase or merge, that doesn’t mean that something didn’t go subtly wrong.&lt;/p&gt;

&lt;h2&gt;Pull before pushing changes&lt;/h2&gt;

&lt;p&gt;I get into a similar situation at bedtime if I try to pull the day’s updates
and discover that I hadn’t pushed the changes I made the previous night,
resulting in either a merge commit that I didn’t want, or merge &lt;em&gt;conflicts&lt;/em&gt;
that I &lt;em&gt;really&lt;/em&gt; didn’t want.  You can &lt;em&gt;avoid&lt;/em&gt; this problem by always using
&lt;code&gt;git pull --rebase&lt;/code&gt; (and you can set the config variable &lt;code&gt;pull.rebase&lt;/code&gt; to
&lt;code&gt;true&lt;/code&gt; to make that the default, but it’sa little risky).  But you can also
&lt;em&gt;fix&lt;/em&gt; the problem.&lt;/p&gt;

&lt;p&gt;If you have a conflict, you can back get out of it with &lt;code&gt;git merge --abort&lt;/code&gt;.
(Remember that pull is just shorthand for fetch followed by merge.)  If the
merge &lt;em&gt;succeeded&lt;/em&gt; and made an unwanted merge commit, you can use &lt;code&gt;git reset
--hard HEAD^&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Another possibility in this situation is that you have some uncommitted
changes.  In most cases Git will either go ahead with the merge, or warn you
that a locally-modified file will be overwritten by the merge.  In the first
case, you may have merge conflicts to resolve.  In the second, you can &lt;em&gt;stash&lt;/em&gt;
your changes with &lt;code&gt;git stash&lt;/code&gt;, and after the pull has finished, merge them
back in with &lt;code&gt;git stash pop&lt;/code&gt;.  (This combination is almost exactly the same as
committing your changes and then rebasing on top of the pulled commit – stash
actually makes two hidden commits, one to preserve the working tree, and the
other to preserve the index.  You can see it in action with &lt;code&gt;gitk --all&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;… and I’m going to stop here, because this has been sitting in my drafts
folder, almost completely finished, since the middle of January.&lt;/p&gt;

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; Man page for &lt;a href=&quot;https://git-scm.com/docs/git-merge&quot;&gt;git-merge&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; Man page for &lt;a href=&quot;https://git-scm.com/docs/git-pull&quot;&gt;git-pull&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; Man page for &lt;a href=&quot;https://git-scm.com/docs/git-rebase&quot;&gt;git-rebase&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; Man page for &lt;a href=&quot;https://git-scm.com/docs/git-stash&quot;&gt;git-stash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;NaBloPoMo stats:
   5524 words in 11 posts this month (average 502/post)
    967 words in 1 post today
&lt;/pre&gt;
&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br /&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;
&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1745953&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1745953.html</comments>
  <category>troubleshooting</category>
  <category>computers</category>
  <category>git</category>
  <category>curmudgeon</category>
  <category>git-rebase</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1744377.html</guid>
  <pubDate>Wed, 04 Nov 2020 06:48:18 GMT</pubDate>
  <title>Renaming master to main in Git</title>
  <link>https://mdlbear.dreamwidth.org/1744377.html</link>
  <description>&lt;p&gt; If you&apos;ve been paying attention to the software-development world, you may
    have noticed a movement to &lt;a href=&quot;https://gomakethings.com/removing-racist-terms-in-tech/&quot;&gt;[remove]
    racist terms in tech&lt;/a&gt; contexts.  The most obvious such terms are
    &quot;master&quot; and &quot;slave&quot;, and there are plenty of good alternatives:
    primary/secondary, main/replica, leader/follower, etc.  The one that
    almost every software developer sees every day is Git&apos;s &quot;master&quot; default
    branch.   &lt;a href=&quot;https://gitlab.com/gitlab-org/gitlab/-/issues/221164&quot;&gt;This issue on GitLab&lt;/a&gt; includes some good discussion of what makes
    &quot;main&quot; the best choice for git.  (I&apos;ve also seen &quot;mainline&quot; used.)

&lt;p&gt; &lt;em&gt;Renaming your master branch is easy.&lt;/em&gt; If you have a local repo
    that isn&apos;t a clone of anything (so it doesn&apos;t have any remotes), it&apos;s a
    one-liner:

&lt;pre&gt;   git branch -m master main&lt;/pre&gt;

&lt;p&gt; Renaming the default branch on an existing repo is trivial.  If it has no
    remotes, for example if it&apos;s purely local or a shared repo on a server you
    have an ssh account on, it&apos;s a one-liner:

&lt;pre&gt;   git branch -m master main&lt;/pre&gt;

&lt;p&gt; It&apos;s a little more complicated for a clone, but not &lt;em&gt;much&lt;/em&gt; more
    complicated:
&lt;pre&gt;   git branch -m master main
   git push -u origin main
   git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
   git pull
&lt;/pre&gt;

&lt;p&gt; What you need to do at this point depends on where your origin repo is
    located.  If you&apos;ve already renamed its default branch, you&apos;re done.  If
    you haven&apos;t, the &lt;code&gt;git&amp;nbsp;push&amp;nbsp;-u&lt;/code&gt; created it.  At this
    point if your origin repo is on GitHub, need to log in and change its
    default branch from master to main because it won&apos;t let you delete its
    default branch.

&lt;p&gt; Then, delete the old master branch with

&lt;pre&gt;   git push --delete master&lt;/pre&gt;

&lt;p&gt; This works for simple cases.  It gets a little more complicated on GitHub
    because you might have web hooks, pull requests, and so on that still
    refer to master.  GitHub says that renaming master will be a one-step
    process later in the year, so you may want to wait until then.  For less
    complicated situations, any URLs that reference master will get
    automatically redirected to main.  See &lt;a href=&quot;https://github.com/github/renaming&quot;&gt;this page&lt;/a&gt; for details.

&lt;p&gt; I had a slightly different problem:  my shared repositories are on my web
    host, and there are hook scripts that pull from the shared repo into the
    web directory.  My version of the &lt;code&gt;post-update&lt;/code&gt; only looks for
    changes in the master branch.  Fortunately that&apos;s a one-liner, too:

&lt;pre&gt;   ssh HOST sed -i -e s/master/main/g REPO/hooks/post-update&lt;/pre&gt;
&lt;p&gt; &amp;nbsp;

&lt;p&gt; The next problem is creating a &lt;em&gt;new&lt;/em&gt; repo with main as the default
    branch.   GitHub already does this, so if you are starting your project
    there you&apos;re good to go.  Otherwise, read on:

&lt;p&gt; The Git project has also added a configuration variable,
    &lt;code&gt;init.defaultBranch&lt;/code&gt;, to specify the default branch for new
    repositories, but it&apos;s probably not in many distributions yet.
    Fortunately, there&apos;s a workaround, so if you don&apos;t want to wait for your
    distribution to catch up, you can take advantage of the way
    &lt;code&gt;git&amp;nbsp;init&lt;/code&gt; works, as described in &lt;a href=&quot;https://www.leigh.net.au/writing/git-init-main/&quot;&gt;this article by
    Leigh Brenecki&lt;/a&gt;:

&lt;ol&gt;
  &lt;li&gt; Find out where Git keeps the template that &lt;code&gt;git init&lt;/code&gt; copies
       to initialize a new repo.  On Ubuntu, that&apos;s
       &lt;code&gt;/usr/share/git-core/templates&lt;/code&gt;, but if it isn&apos;t there look
       at the man page for &lt;code&gt;git-init&lt;/code&gt;.
  &lt;li&gt; Copy it to someplace under your control; I used
       &lt;code&gt;.config/git/init-template&lt;/code&gt;.
  &lt;li&gt; &lt;code&gt;cd&lt;/code&gt; to the (new) template and create a file called HEAD,
       containing &lt;code&gt;ref: refs/heads/main&lt;/code&gt;.
  &lt;li&gt; Set the &lt;code&gt;init.templateDir&lt;/code&gt; config variable to point to the
       new template.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt; Now when git wants to create a new repo, it will use HEAD to tell it which
    branch to create.  Putting all that together, it looks like:

&lt;pre&gt;   cp -a /usr/share/git-core/templates/ ~/.config/git/init-template
   echo ref: refs/heads/main &amp;gt; ~/.config/git/init-template/HEAD
   git config --global init.templateDir ~/.config/git/init-template&lt;/pre&gt;

&lt;p&gt; You can actually replace that initial copy with &lt;code&gt;mkdir&lt;/code&gt;; git is
    able to fill in the missing pieces.  Alternatively, you can add things
    like a default &lt;code&gt;config&lt;/code&gt; file, hooks, and so on.

&lt;p&gt; (I&apos;ve already updated my configuration repository, &lt;a href=&quot;https://gitlab.com/ssavitzky/Honu&quot;&gt;Honu&lt;/a&gt;, to set up the modified
    template along with all the other config files it creates.  But that
    probably doesn&apos;t help anyone but me.)

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://gomakethings.com/removing-racist-terms-in-tech/&quot;&gt;Removing racist terms in tech | Go Make Things&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://gomakethings.com/how-to-rename-your-default-github-branch-to-main/&quot;&gt;How to rename your default GitHub branch to main | Go Make Things&lt;/a&gt;
  &lt;li&gt; web tool: &lt;a href=&quot;https://eyqs.ca/tools/rename/&quot;&gt;Rename GitHub
       Default Branches&lt;/a&gt;
  &lt;li&gt;  &lt;a href=&quot;https://stevenmortimer.com/5-steps-to-change-github-default-branch-from-master-to-main/&quot;&gt;5 steps to change GitHub default branch from master to main | Steven M. Mortimer&lt;/a&gt;
  &lt;li&gt;  &lt;a href=&quot;https://github.com/github/renaming&quot;&gt;github: Guidance for changing the default branch name for GitHub repositories&lt;/a&gt;
      -&amp;gt; there will be a seamless 1-step process later this year.
  &lt;li&gt; &lt;a href=&quot;https://github.blog/changelog/2020-07-17-links-to-deleted-branches-now-redirect-to-the-default-branch/&quot;&gt;Links to deleted branches now redirect to the default branch - GitHub Changelog&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.hanselman.com/blog/easily-rename-your-git-default-branch-from-master-to-main&quot;&gt;Easily rename your Git default branch from master to main - Scott Hanselman&lt;/a&gt;
  &lt;li&gt;  &lt;a href=&quot;https://dev.to/rhymu8354/git-renaming-the-master-branch-137b&quot;&gt;Git: Renaming the &quot;master&quot; branch - DEV&lt;/a&gt; -&amp;gt; instructions for github and gitlab
  &lt;li&gt;  &lt;a href=&quot;https://gitlab.com/gitlab-org/gitlab/-/issues/221164&quot;&gt;Change the default initial branch name for new projects on GitLab (#221164)&lt;/a&gt;
  &lt;li&gt;  &lt;a href=&quot;https://www.leigh.net.au/writing/git-init-main/&quot;&gt;Changing the default branch for new Git repositories — Leigh Brenecki&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://stackoverflow.com/questions/30987216/change-default-branch-in-gitlab&quot;&gt;Change Default branch in gitlab - Stack Overflow&lt;/a&gt;
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;
&lt;pre&gt;NaBloPoMo stats:
   2146 words in 4 posts this month (average 536/post)
    814 words in 1 post today
&lt;/pre&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1744377&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1744377.html</comments>
  <category>computers</category>
  <category>black-lives-matter</category>
  <category>racism</category>
  <category>curmudgeon</category>
  <category>git</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1742138.html</guid>
  <pubDate>Fri, 23 Oct 2020 17:22:29 GMT</pubDate>
  <title>Keeping backups</title>
  <link>https://mdlbear.dreamwidth.org/1742138.html</link>
  <description>&lt;p&gt; It&apos;s been a while since I described the way I do backups -- in fact, &lt;a href=&quot;https://stephen.savitzky.net/Doc/Linux/keeping-backups/&quot;&gt;the only
    public document&lt;/a&gt; I could find on the subject was written in 2006, and
    things have changed a great deal since then.  I believe there have been a
    few mentions in Dreamwidth and elsewhere, but in this calamitous year it
    seems prudent to do it again.  Especially since I&apos;m starting to feel
    mortal, and starting to think that some day one of my kids is going to
    have to grovel through the whole mess and try to make sense of it.
    (Whether they&apos;ll find anything worth keeping or even worth the trouble of
    looking is, of course, an open question.)

&lt;p&gt; My home file server, a small Linux box called Nova, is backed up by simply
    copying (almost -- see below) its entire disk to an external hard drive
    every night.  (It&apos;s done using &lt;code&gt;rsync&lt;/code&gt;, which is efficient
    because it skips over everything that hasn&apos;t been changed since the last
    copy.)  When the disk crashes (it&apos;s almost always the internal disk,
    because the external mirror is idle most of the time) I can (and have,
    several times) swap in the external drive, make it bootable, order a new
    drive for the mirror, and I&apos;m done.  Or, more likely, buy a new pair of
    drives that are twice as big for half the price, copy everthing, and
    archive the better of the old drives.  Update it occasionally.

&lt;p&gt; That&apos;s not very interesting, but it&apos;s not the whole story.  I used to make
    incremental backups -- instead of the mirror drive being an exact copy of
    the main one, it&apos;s a sequence of snapshots (like Apple&apos;s Time Machine, for
    example).  There were some problems with that, including the fact because
    of the way the snapshots were made (using &lt;code&gt;cp&amp;nbsp;-l&lt;/code&gt; to copy
    directories but leave hard links to the files that haven&apos;t changed) it
    takes more space than it needs to, and makes the backup disk very
    difficult -- not to mention slow -- to copy if it starts flaking out.
    There are ways of getting around those problems now, but I don&apos;t need
    them.

&lt;p&gt; The classic solution is to keep copies offsite.  But I can do better than
    that because I already have a web host, and I have Git.  I need to back up
    a little.
 
&lt;p&gt; I noticed that almost everything I was backing up fell into one of three
    categories:

&lt;ol&gt; 
  &lt;li&gt; Files I keep under version control.
       
  &lt;li&gt; Files (mostly large ones, like audio recordings) that never change
       after they&apos;ve been created -- recordings of past concerts, my
       collection of ripped CDs, the masters for my CD, and so on.  I
       accumulate &lt;em&gt;more&lt;/em&gt; of them as time goes by, but most of the old
       ones stick around.
       
  &lt;li&gt; Files I can reconstruct, or that are purely ephemeral -- my browser
       cache, build products like PDFs, executable code, downloaded install
       CDs, and of course entire OS, which I can re-install any time I need to
       in under an hour.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt; Git&apos;s biggest advantage for both version control and backups is that it&apos;s
    distributed -- each working directory has its own repository, and you can
    have shared repositories as well.  In effect, every repository is a
    backup.  In my case the shared repositories are in the cloud on &lt;a href=&quot;https://dreamhost.com/&quot;&gt;Dreamhost&lt;/a&gt;, my web host.  There are
    working trees on Nova (the file server) and on one or more laptops.  A few
    of the more interesting ones have public copies on GitLab and/or GitHub as
    well.  So that takes care of Group 1.

&lt;p&gt; The main reason for using incremental backup or version control is so that
    you can go back to earlier versions of something if it gets messed up.
    But the files in group &lt;em&gt;don&apos;t&lt;/em&gt; change, they just accumulate.
    So I put all of the files in Group 2 -- the big ones -- into
    the same directory tree as the Git working trees; the only difference is
    that they don&apos;t have an associated Git repo.  I keep thinking I should set
    up &lt;a href=&quot;https://git-annex.branchable.com/&quot;&gt;git-annex&lt;/a&gt; to manage
    them, but it doesn&apos;t seem necessary.  The workflow is very similar to the
    Git workflow:  add something (typically on a laptop), then push it to a
    shared server.  The Rsync commands are in a Makefile, so I don&apos;t have to
    remember them: I just &lt;code&gt;make&amp;nbsp;rsync&lt;/code&gt;.  (Rsync doesn&apos;t copy
    anything that is already at the destination and hasn&apos;t changed since the
    previous run, and by  default it ignores files on the destination that
    don&apos;t have corresponding source files.  So I don&apos;t have to have a
    &lt;em&gt;complete&lt;/em&gt; copy of my concert recordings (for example) on my
    laptop, just the one I just made.)

&lt;p&gt; That leaves Group 3 -- the files that don&apos;t have to be backed up because
    they can be reconstructed from version-controlled sources.  All of my
    working trees include a Makefile -- in most cases it&apos;s a link to &lt;a href=&quot;https://gitlab.com/ssavitzky/MakeStuff&quot;&gt;MakeStuff&lt;/a&gt;/Makefile --
    that builds and installs whatever that tree needs.  Programs, web pages,
    songbooks, what have you.  Initial setup of a new machine is done by a
    package called &lt;a href=&quot;https://gitlab.com/ssavitzky/Honu&quot;&gt;Honu&lt;/a&gt;
    (Hawaiian for the green sea turtle), which I described a little over a
    year ago in &lt;a href=&quot;https://mdlbear.dreamwidth.org/1688029.html&quot;&gt;Sable
    and the turtles:  laptop configuration made easy&lt;/a&gt;.

&lt;p&gt; The end result is that &quot;backups&quot; are basically a side-effect of the way I
    normally work, with frequent small commits that are pushed almost
    immediately to a shared repo on Dreamhost.  The workflow for large files,
    especially recording projects, is similar, working on my laptop and
    backing up with Rsync to the file server as I go along.  When things are
    ready, they go up to the web host.  Make targets &lt;code&gt;push&lt;/code&gt; and
    &lt;code&gt;rsync&lt;/code&gt; simplify the process.  Going in the opposite direction,
    the &lt;a href=&quot;https://gitlab.com/ssavitzky/MakeStuff/-/blob/master/scripts/pull-all&quot;&gt;pull-all&lt;/a&gt; command updates everything from the shared repos.

&lt;p&gt; Your mileage may vary.

&lt;h3&gt;Resources and references&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git.html&quot;&gt;git(1) manual page&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://rsync.samba.org/documentation.html&quot;&gt;rsync documentation&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://gitlab.com/ssavitzky/Honu&quot;&gt;Honu&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://stephen.savitzky.net/Doc/Linux/keeping-backups/&quot;&gt;Keeping
       Backups&lt;/a&gt; (2006)
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1742138&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1742138.html</comments>
  <category>computers</category>
  <category>curmudgeon</category>
  <category>git</category>
  <category>rsync</category>
  <category>how-i-work</category>
  <category>backups</category>
  <lj:music>owls somewhere outside</lj:music>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1741196.html</guid>
  <pubDate>Mon, 12 Oct 2020 19:11:06 GMT</pubDate>
  <title>Memoir: How I Came to Have an Erdős Number of Seven</title>
  <link>https://mdlbear.dreamwidth.org/1741196.html</link>
  <description>&lt;p&gt; I really need to write my memoirs, preferably before my memory
    deteriorates to the point where I can&apos;t.  (I am inspired by my mom, who
    published the third edition of hers last year.)  I have, however, given up
    on the idea of following the King of Hearts&apos; advice to &quot;begin at the
    beginning, [...] and go on till you come to the end: then stop&quot;.  (I note in
    passing that I &lt;em&gt;haven&apos;t&lt;/em&gt; come to the end yet.)  So I&apos;m just going to
    dive in at whatever point seems interesting at the moment.  I&apos;ll tag these
    by year, so that anyone interested (possibly as many as two of you) can
    sort them out later.

&lt;p&gt; This &lt;em&gt;particular&lt;/em&gt; point was suggested by somebody&apos;s mention of
    their Erdős number, so I suppose I ought to explain &lt;em&gt;that&lt;/em&gt; first.
    &lt;strong&gt;Content Warning:&lt;/strong&gt;  contains math, which you can safely
    skip over if you&apos;re math-phobic.  Deciding &lt;em&gt;which&lt;/em&gt; parts to skip is
    left as an exrcise for the reader.

&lt;p&gt; You have perhaps heard of the parlor game called &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon&quot;&gt;Six
    Degrees of Kevin Bacon&lt;/a&gt;&quot;, based on the concept of &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Six_degrees_of_separation&quot;&gt;six
    degrees of separation&lt;/a&gt;&quot;.  The idea is to start with an actor, and
    figure out the shortest possible list of movies that links them with Kevin
    Bacon.  The length of that list is the actor&apos;s &quot;Bacon number&quot;, with Bacon
    himself having the number zero, anyone who acted in a movie with him
    having the number one, and so on.  As far as I know I don&apos;t have a finite
    Bacon number, but it&apos;s not outside the realm of possibility if, as most
    people do, you include TV shows and so on.  I think I&apos;ve been in at least
    one brief local TV news item.

&lt;p&gt; But sometime during my senior year at Carleton College, I co-authored a
    paper with one of my math professors, Ken Wegner, which gave me an &lt;a href=&quot;https://en.wikipedia.org/wiki/Erd%C5%91s_number#Variations&quot;&gt;Erdős
    number&lt;/a&gt; of 7.  The paper, published in 1970 in The American
    Mathematical Monthly, was &quot;&lt;a href=&quot;https://maa.tandfonline.com/doi/abs/10.1080/00029890.1970.11992471&quot;&gt;Solutions of Φ(x)&amp;nbsp;=&amp;nbsp;n , Where Φ is Euler&apos;s Φ-Function&lt;/a&gt;&quot;
    [Wegner, K., &amp; Savitzky, S. (1970), The American Mathematical Monthly,
    77(3), 287-287. doi:10.2307/2317715].

&lt;p&gt; So now I have three things to explain:  What is an Erdős number?  What is
    &lt;a href=&quot;https://en.wikipedia.org/wiki/Euler&amp;#39;s_totient_function&quot;&gt;Euler&apos;s
    Φ function&lt;/a&gt;?  And finally, What was my contribution to the paper?

&lt;p&gt; &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Erd%C5%91s_number#Variations&quot;&gt;Erdős
    number&lt;/a&gt;:&lt;/strong&gt; As you might expect from the introduction about the
    Bacon Number, a mathematician&apos;s Erdős number is the smallest number of
    co-authored papers connecting them to &lt;a href=&quot;https://en.wikipedia.org/wiki/Paul_Erd%C5%91s&quot;&gt;Paul Erdős&lt;/a&gt;
    (1913–1996), an amazingly prolific (at least 1,525 papers) 20th Century
    mathematician.  He spent the latter part of his life living out of a
    suitcase, visiting his over 500 collaborators (who thus acquired an Erdős
    number of 1.  The Erdős number was first defined in print in 1969, so
    about the time I was collaborating with Wegner on Euler&apos;s Φ function.

&lt;p&gt; &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Euler&amp;#39;s_totient_function&quot;&gt;Euler&apos;s Φ function&lt;/a&gt;,&lt;/strong&gt; Φ(n), also called the Totient function,
    is defined as the number of positive integers less or equal to n that are
    relatively prime to n; or in other words the numbers in the range
    1&amp;nbsp;≤&amp;nbsp;k&amp;nbsp;≤&amp;nbsp;n for which the &lt;a href=&quot;https://en.wikipedia.org/wiki/Greatest_common_divisor&quot;&gt;greatest
    common divisor&lt;/a&gt; gcd(n,k)&amp;nbsp;=&amp;nbsp;1.  (You will also see it written
    in lower-case as &quot;φ&quot;, or in Latin as &quot;phi&quot;.)

&lt;p&gt; The totient function is pretty easy to compute, at least for sufficiently
    small numbers.  The inverse is rather less straightforward, and has been
    the subject of &lt;a href=&quot;https://math.stackexchange.com/search?q=inverse+totient+function&quot;&gt;a
    considerable number&lt;/a&gt; of StackExchange queries.  (&lt;a href=&quot;https://math.stackexchange.com/questions/265397/inversion-of-the-euler-totient-function#265700&quot;&gt;This answer&lt;/a&gt; includes a good set of links.)  I was thinking of
    including some detail about that, and was barely able to keep myself from
    falling down the usual rabbit-hole, which almost always ends up somewhere
    in group theory.  For example, φ(n) is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Order_(group_theory)&quot;&gt;order&lt;/a&gt; of &lt;a href=&quot;https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n&quot;&gt;the multiplicative group of integers modulo n&lt;/a&gt;.  See what I mean?

&lt;p&gt; &lt;strong&gt;My contribution&lt;/strong&gt; to the paper was not very closely related
    to the actual mathematics of the problem; what I did was write the
    computer program that computed and printed out the table of results.  That
    involved a hack.  A couple of hacks, actually.

&lt;p&gt; In 1969, Carleton College&apos;s computer lab contained an &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_1620&quot;&gt;IBM 1620&lt;/a&gt; and a couple
    of keypunches.  The 1620 was fairly primitive even by 1960s standards; its
    memory consisted of 20,000 6-bit words, with a cycle time of 20
    microseconds.  Each word contained one BCD-coded decimal digit, a &quot;flag&quot;
    bit, and a parity check bit.  It did arithmetic digit-by-digit using
    &lt;em&gt;lookup tables&lt;/em&gt; for addition and multiplication.  It was not
    particularly fast -- about a million times slower than the CPU in your
    phone.  But it was a lot of fun.  Unlike a mainframe, it could sit in one
    corner of a classroom (if it was air-conditioned), it was (comparatively)
    inexpensive, and it could stand up to students actually &lt;em&gt;getting their
    hands on it.&lt;/em&gt;

&lt;p&gt; A lot of the fun came from the fact that the 1620&apos;s &quot;operating system&quot; was
    the human &lt;em&gt;operator&lt;/em&gt; sitting at the console, which consisted mainly
    of an electric typewriter and a row of buttons and four &quot;sense switches&quot;
    that the program could read.  If you wanted to run a program, you put a
    stack of punched cards into the reader and pushed the &quot;load&quot; button, which
    read a single 80-column card into the first 80 characters of memory, set
    the program counter to zero, and started running.  My program was written
    in FORTRAN.  Not even FORTRAN II.  Just FORTRAN.

&lt;p&gt; Computing the table that occupied most of the paper took about a week.

&lt;p&gt; Here&apos;s where it gets interesting, because obviously I wasn&apos;t the only
    student who wanted to use the 1620 that week.  So I wrote an operating
    system -- a foreground/background system with my program running in the
    background, with everyone else&apos;s jobs running in the &quot;foreground&quot;.  That
    would have been easy except that the 1620 could only run one program at a
    time.  Think about that for a moment.

&lt;p&gt; My &quot;operating system&quot; consisted mainly of a message &lt;em&gt;written on the
    back of a Hollerith card&lt;/em&gt; that said something like: &quot;Flip sense switch
    1 and wait for the program to punch out a deck of cards (about a minute).
    When you&apos;re done, put the deck in the reader and press LOAD.&quot;

&lt;p&gt; Every time the program went around its main loop, it checked Sense Switch
    1, and if it was set, it sent the contents of memory to the card punch.
    Dumping memory only took one instruction, but it wasn&apos;t something you
    could do from FORTRAN, so I put in a STOP statement (which FORTRAN
    &lt;em&gt;did&lt;/em&gt; have) and changed it to a dump instruction.  By scanning the
    program&apos;s object code (remember this is a &lt;em&gt;decimal&lt;/em&gt; machine; an
    instruction took up 12 columns on the card) and replacing the HALT
    instruction with DUMP.

&lt;p&gt; It worked.

&lt;pre&gt;    &lt;a href=&quot;https://mathscinet.ams.org/mathscinet/freeTools.html?version=2&quot;&gt;MR: Collaboration Distance&lt;/a&gt;
     MR Erdos Number = 7
     S. R. Savitzky 	  coauthored with    Kenneth W. Wegner 		MR0260667
     Kenneth W. Wegner 	  coauthored with    Mark H. Ingraham 		MR1501805
     Mark H. Ingraham 	  coauthored with    Rudolph E. Langer 		MR1025350
     Rudolph E. Langer 	  coauthored with    Jacob David Tamarkin 	MR1501439
     Jacob David Tamarkin coauthored with    Einar Hille 	        MR1555331
     Einar Hille 	  coauthored with    Gábor Szegő 	        MR0008279
     Gábor Szegő 	  coauthored with    Paul Erdős 	        MR0006783
     &lt;a href=&quot;https://mathscinet.ams.org/mathscinet-getitem?mr=260667&quot;&gt;MR0260667&lt;/a&gt; points to: K. W. Wegner and S. R. Savitzky, (1970)
     &lt;a href=&quot;https://www.jstor.org/stable/2317715?origin=crossref&quot;&gt;Solutions of φ (x) = n, Where φ is Euler&apos;s φ-Function on JSTOR&lt;/a&gt;,
     The American Mathematical Monthly, 77(3), 287-287.
     DOI: &lt;a href=&quot;https://doi.org/10.1080/00029890.1970.11992471&quot;&gt;10.1080/00029890.1970.11992471&lt;/a&gt;.
&lt;/pre&gt;

&lt;p&gt; There are two other numbers of interest:  the Shūsaku Number, measuring a
    Go player&apos;s distance from the famous 19th-Century Go player &lt;a href=&quot;https://en.wikipedia.org/wiki/Hon%27inb%C5%8D_Sh%C5%ABsaku&quot;&gt;Hon&apos;inbō Shūsaku&lt;/a&gt;, and the Sabbath Number, measuring a musician&apos;s
    distance from the band &lt;a href=&quot;https://en.wikipedia.org/wiki/Black_Sabbath&quot;&gt;Black Sabbath&lt;/a&gt;.
    I&apos;m pretty sure I have a Sabbath number through filkdom.  I
    &lt;em&gt;definitely&lt;/em&gt; have a Shūsaku number of 5 from having lived down the
    hall from &lt;a href=&quot;https://senseis.xmp.net/?JamesKerwin&quot;&gt;Jim Kerwin&lt;/a&gt;,
    &lt;a href=&quot;https://senseis.xmp.net/?ShusakuNumber&quot;&gt;Shūsaku Number 4&lt;/a&gt;, my
    sophomore and junior years at Carleton.  That&apos;s another story.

&lt;p&gt; And if I expect to write more journal entries about math, I&apos;m going to
    have to extend my &lt;a href=&quot;https://gitlab.com/ssavitzky/MakeStuff/-/tree/master/blogging&quot;&gt;posting software&lt;/a&gt; to allow entries written in LaTeX.  Hmm.

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;The Mandelbear&amp;apos;s Memoirs&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1741196&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1741196.html</comments>
  <category>memoir</category>
  <category>math</category>
  <category>river</category>
  <category>1969</category>
  <category>carleton</category>
  <category>totient</category>
  <category>erdos-number</category>
  <category>computers</category>
  <lj:music>The Wild Rover</lj:music>
  <lj:mood>reflective</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>15</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1739179.html</guid>
  <pubDate>Sun, 27 Sep 2020 20:50:10 GMT</pubDate>
  <title>Done Since 2020-09-20</title>
  <link>https://mdlbear.dreamwidth.org/1739179.html</link>
  <description>&lt;p&gt; Bad week.  Continuing the trend set &lt;a href=&quot;https://mdlbear.dreamwidth.org/1737981.html&quot;&gt;last week&lt;/a&gt;, the
    filk community lost Lindy Laurant.  Meanwhile what used to be a free
    country continues its descent into theocratic dictatorship with
    kleptocracy.  Colleen&apos;s nausea and diarrhea also continued, though
    somewhat improved over the previous two weeks.  The USB connector on my
    old Thinkpad keyboard died while I was in the process of moving the cable
    to its replacement.  Poor little Cygnus suffered a tea spill, so I ordered
    a replacement keyboard.

&lt;p&gt; It&apos;s a good thing that I keep spare laptops in the house.  (I&apos;m always
    happy to take unwanted computers off your hands.)  It&apos;s a good thing that
    I don&apos;t actually &lt;em&gt;need&lt;/em&gt; Bluetooth to work on Sable.

&lt;p&gt; The week to come isn&apos;t likely to be any better.

&lt;p&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1739179.html#cutid1&quot;&gt;Notes &amp; links, as usual&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1739179&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1739179.html</comments>
  <category>links</category>
  <category>keyboards</category>
  <category>music</category>
  <category>done</category>
  <category>computers</category>
  <lj:music>&quot;For Amy&quot; earlier; FilkC-ON-tinental concerts</lj:music>
  <lj:mood>blank, apprehensive, stressed</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1738890.html</guid>
  <pubDate>Sat, 26 Sep 2020 03:15:22 GMT</pubDate>
  <title>Review: the Lenovo ThinkPad trackpoint Keyboard II</title>
  <link>https://mdlbear.dreamwidth.org/1738890.html</link>
  <description>&lt;p&gt; For some time now I&apos;ve been eyeing Lenovo&apos;s &lt;a href=&quot;https://www.amazon.com/ThinkPad-Compact-Bluetooth-Keyboard-TrackPoint/dp/B00C32FWJC&quot;&gt;ThinkPad Compact Bluetooth Keyboard with TrackPoint&lt;/a&gt; with a mixture of
    gadget lust and skepticism -- most of the reviews I saw said that the
    Bluetooth connection had a tendency to be laggy.  Combined with the amount
    of trouble I&apos;ve been having with Bluetooth on Linux Mint lately, and the
    lack of a USB connection, and the high price, it&apos;s been pretty far down on
    my list of things to buy.

&lt;p&gt; Anyone who knows my &lt;del&gt;fondness for&lt;/del&gt; &lt;ins&gt;addiction to&lt;/ins&gt;
    Thinkpad keyboards can figure out what was going to happen when Lenovo
    came out with the &lt;a href=&quot;https://pcsupport.lenovo.com/us/en/accessories/trackpoint_keyboard&quot;&gt;ThinkPad TrackPoint Keyboard II&lt;/a&gt;, featuring &lt;em&gt;both&lt;/em&gt; Bluetooth
    and a wireless USB dongle, but otherwise looking almost exactly like my
    &lt;em&gt;wired&lt;/em&gt; &lt;a href=&quot;https://pcsupport.lenovo.com/us/en/accessories/pd026745&quot;&gt;KU-1255&lt;/a&gt; keyboard and the keyboards on most of my Thinkpad laptops.  I
    discussed that in &quot;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1735535.html&quot;&gt;The Curmudgeon Contemplates Keyboards&lt;/a&gt;&quot;, a couple of weeks ago.

&lt;p&gt; It arrived yesterday, much sooner than I&apos;d expected.  It&apos;s lovely, and
    just about what I expected.  It&apos;s hard to go wrong with a Thinkpad
    keyboard.

&lt;p&gt; Being nearly icon-blind it took me a while to puzzle out the switches,
    because the quick-start sheet had nothing but a few pictures to explain
    them.  It didn&apos;t say anything at all about the &quot;Android/Windows&quot; switch.
    So I went looking on their &lt;a href=&quot;https://support.lenovo.com/accessories/trackpoint_keyboard&quot;&gt;tech
    support website&lt;/a&gt; and found nothing but a PDF of the quick-start.  Not
    helpful.  (After a day and a half I found a review that explained that it
    gives F9-F12 Android-specific functions, and indeed I was eventually able
    to make out the tiny markings above them on the beveled edge of the
    bezel.)

&lt;p&gt; The website -- and most of the reviews -- also mentioned its support for
    &quot;6-point entry for the visually impaired&quot;, but DDG and Google found
    nothing except references to this keyboard.  Braille, maybe?  Whatever.
    There&apos;s nothing about it on the tech-support site.

&lt;p&gt; There are some things I really appreciate as a cat&apos;s minion.  It&apos;s exactly
    the right size to sit on top of my laptop (Sable is a Thinkpad X230; the
    keyboards are almost identical) with the lid closed and an external
    monitor plugged in.  If a cat shows signs of wanting to sit on it, I can
    set it aside (or close the lid), and pick it up later.  (I broke the
    micro-USB connector on one of my wired Thinkpad keyboards, because I often
    flip it up behind the laptop with the keys away from me -- and the cat.)
    If a cat &lt;em&gt;does&lt;/em&gt; sit on it, the on-off switch is easily reachable on
    the right-hand side.  Much easier than unplugging the cable.

&lt;p&gt; So let&apos;s sum up.  On the positive side:  the wireless USB, Bluetooth, the
    classic ThinkPad feel and layout, the TrackPoint nub, and two of the three
    buttons are &lt;em&gt;exactly&lt;/em&gt; as I would expect.  (The middle button is in
    the same plane as the two side buttons, and the raised dots are much lower
    and are no longer blue.)  The charging connector is USB-C.  I haven&apos;t used
    it long enough to evaluate battery life, but it&apos;s been on since yesterday
    and claims to be at 99%; Lenovo claims two months, so that&apos;s believable.
    It&apos;s just the right size to sit on an ultrabook like a Thinkpad X230 with
    the lid closed.

&lt;p&gt; I&apos;m not sure whether to count the low-contrast markings on the function
    keys as positive or negative.  I&apos;ve pretty-much abandoned my old emacs
    key-bindings for them, and some of the functions indicated by the icons
    are actually useful.  I&apos;ll get out my label-maker, or label them with
    white-out. 

&lt;p&gt; On the negative side:  the USB cable is just for charging.  For goodness&apos;
    sake, how much circuitry would it have taken for it to make that a third
    connection mode?  The documentation is sketchy -- the QuickStart page is
    nothing but icons and arrows, and for an icon-impaired curmudgeon that&apos;s a
    bit of a problem.  &lt;em&gt;Nowhere&lt;/em&gt; in the documentation does it explain
    what the Android/Windows switch is for.  There&apos;s nothing on Lenovo&apos;s tech
    support website, either.  There&apos;s no backlight, and the function keys are
    labeled with low-contrast tiny letters.  The dongle is, of course,
    incompatible with Logitech&apos;s, so it uses another USB port.  (This is a
    minor quibble, because I had the slot I unplugged the old keyboard from.)

&lt;p&gt; Some people would make the position of the Fn key, to the &lt;em&gt;left&lt;/em&gt; of
    Ctrl, as a problem.  They might also complain about the Page Up and Page
    Down keys&apos; flanking the Up-Arrow in the inverted T arrangement.  Since
    I&apos;ve be using Thinkpads since sometime in the last Millennium, and the new
    page-up/page-down positions for 95% of the last decade, I don&apos;t have a
    problem with either of those -- they&apos;re exactly what I want.  Some people
    would miss the trackpad and palm rest; I&apos;ve been using a wired but
    otherwise identical keyboard for years, and don&apos;t miss them. Your mileage
    may vary.

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1738890&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1738890.html</comments>
  <category>curmudgeon</category>
  <category>keyboards</category>
  <category>thinkpad</category>
  <category>computers</category>
  <category>review</category>
  <lj:music>Leroy Anderson : &quot;The Typewriter&quot;</lj:music>
  <lj:mood>very worried</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1737705.html</guid>
  <pubDate>Fri, 18 Sep 2020 04:38:54 GMT</pubDate>
  <title>Setting Up Sable</title>
  <link>https://mdlbear.dreamwidth.org/1737705.html</link>
  <description>&lt;p&gt; Setting up a computer so that it can boot into one of several different
    Linux distributions is something of a challenge; I haven&apos;t done it in
    quite a long time, and of course hings have changed.  You may remember &lt;a href=&quot;https://mdlbear.dreamwidth.org/1736159.html&quot;&gt;the previous post in
    this series&lt;/a&gt;, in which I discuss the proposed partitioning scheme for
    Sable&apos;s new terrabyte SSD.

&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1737705.html#cutid1&quot;&gt;So if that didn&apos;t interest you, this probably won&apos;t either.&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;http://www.rodsbooks.com/refind/&quot;&gt;The rEFInd Boot Manager&lt;/a&gt;.
  &lt;li&gt; &lt;a href=&quot;https://blog.lxgr.net/posts/2015/04/30/grub-efi-multiboot/&quot;&gt;Booting multiple Ubuntu versions with EFI&lt;/a&gt;
  &lt;li&gt; &lt;a href=&quot;https://www.zdnet.com/article/linux-on-your-laptop-a-closer-look-at-efi-boot-options/&quot;&gt;Linux on your laptop: A closer look at EFI boot options | ZDNet&lt;/a&gt; 
  &lt;li&gt;&lt;a href=&quot;https://gitlab.com/ssavitzky/Honu&quot;&gt;Stephen Savitzky / Honu · GitLab&lt;/a&gt; (more relevant later in the series).
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1737705&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1737705.html</comments>
  <category>curmudgeon</category>
  <category>computers</category>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1737146.html</guid>
  <pubDate>Sun, 13 Sep 2020 19:14:30 GMT</pubDate>
  <title>Done Since 2020-09-06</title>
  <link>https://mdlbear.dreamwidth.org/1737146.html</link>
  <description>&lt;p&gt; Not a good week.  Not horrible, either, by contemporary standards, but
    Colleen spent Monday through Thursday in the hospital with another UTI,
    and the air quality has gotten progressively worse.  Up until today
    Whidbey Island -- or at least the Oak Harbor measuring station -- has had
    a slightly lower AQI than most of the surrounding measurements, but today
    it&apos;s solidly up into &quot;Unhealthy&quot; (around 185, though it depends somewhat
    on which map you&apos;re looking at and how you interpolate; the &lt;a href=&quot;https://enviwa.ecology.wa.gov/home/map&quot;&gt;Washington department of
    Ecology&apos;s map&lt;/a&gt; has it in the mid-to-high 200s, which is Very
    Unhealthy).  Parts of Seattle are up into the Hazardous range.  &quot;Don&apos;t
    breathe anything you can see&quot; -- good advice if you can manage it.  I
    can&apos;t.

&lt;p&gt; I&apos;ve been making progress on upgrading (laptop)Sable to a 1TB SSD and
    three distributions (Mint/MATE, LMDE/Cinnamon, and UbuntuStudio/Xfce4).
    The main obstacles are the fact that Mint and UStudio both identify
    themselves as &quot;ubuntu&quot;, so their boot/efi information clobber one another,
    and the fact that a lot of my setup for (window manager)Xmonad was based
    on Gnome, which doesn&apos;t play well with MATE or Xfce.  And some of it was
    based on the (previously-valid) assumption that I would need only one set
    of config files per machine.  Working on it, and (setup manager)&lt;a href=&quot;https://gitlab.com/ssavitzky/Honu&quot;&gt;Honu&lt;/a&gt; will be the better for
    it when I&apos;m done.  Hopefully this week.  I also expect to get a few &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;curmudgeon&lt;/a&gt; posts
    out of it.

&lt;p&gt; I have not been singing nearly as much as (I feel that) I should be.  A
    lot less than is good for me.  This is, sadly, typical.

&lt;p&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1737146.html#cutid1&quot;&gt;Notes &amp; links, as usual&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1737146&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1737146.html</comments>
  <category>climate</category>
  <category>links</category>
  <category>computers</category>
  <category>music</category>
  <category>done</category>
  <lj:music>earworm:  my setting of The Song of Wandering Aengus</lj:music>
  <lj:mood>unsettled</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1736553.html</guid>
  <pubDate>Mon, 07 Sep 2020 05:53:28 GMT</pubDate>
  <title>Done Since 2020-08-30</title>
  <link>https://mdlbear.dreamwidth.org/1736553.html</link>
  <description>&lt;p&gt; A week.  Mostly spent caring for Colleen, doing household chores, Getting
    A Few Things Done, making sure everything on Sable is ready to be replaced
    with fresh installs, and researching how to set up a computer to boot
    multiple OSs using EFI and the GPT partition table format.  Documentation
    for this is thinner on the ground than one would like.  (I started
    actually &lt;em&gt;doing it&lt;/em&gt; today.)

&lt;p&gt; Things that Got Done included ordering two new Thinkpad keyboards (the
    Bluetooth one will ship in &quot;more than five weeks&quot;, which is why I ordered
    the other one), calling a handyman to (finally) make a concrete pad for
    the end of the ramp to replace the gravel nightmare that&apos;s there now, and
    writing a few posts.  Actually, &lt;em&gt;five&lt;/em&gt; posts, which is a little
    more than usual.  Between the writing and various computer tasks I was
    actually able to get into flow a few times, which is good and keeps me
    from looking at the news.

&lt;p&gt; ... and Mom&apos;s not doing all that well. I mean, she&apos;s doing really well for
    someone who&apos;s 99 years old and on hospice care, but that&apos;s not really
    saying very much.

&lt;p&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1736553.html#cutid1&quot;&gt;Notes &amp; links, as usual&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1736553&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1736553.html</comments>
  <category>links</category>
  <category>computers</category>
  <category>done</category>
  <category>mom</category>
  <lj:music>some; not so much</lj:music>
  <lj:mood>stressed</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1736159.html</guid>
  <pubDate>Sat, 05 Sep 2020 05:07:25 GMT</pubDate>
  <title>The Curmudgeon Thinks Out Loud</title>
  <link>https://mdlbear.dreamwidth.org/1736159.html</link>
  <description>&lt;p&gt; ...about disk partitioning. &lt;em&gt;Content warning:  rather specialized
    geekness.  If that&apos;s not something you&apos;re into, you might want to &lt;a href=&quot;#skip&quot;&gt;skip&lt;/a&gt; this.&lt;/em&gt;&lt;br&gt;

&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1736159.html#cutid1&quot;&gt;tl;dr&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;

&lt;p&gt; &lt;a name=&quot;skip&quot;&gt;&amp;nbsp;&lt;/a&gt; 
                              
    Dreamwidth makes an excellent rubber duck -- thanks for listening.

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1736159&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1736159.html</comments>
  <category>curmudgeon</category>
  <category>computers</category>
  <category>partitioning</category>
  <category>planning</category>
  <lj:music>Bill Sutton: Do It Yourself</lj:music>
  <lj:mood>thoughtful</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1735535.html</guid>
  <pubDate>Wed, 02 Sep 2020 18:36:27 GMT</pubDate>
  <title>The Curmudgeon Contemplates Keyboards</title>
  <link>https://mdlbear.dreamwidth.org/1735535.html</link>
  <description>&lt;p&gt; For the last week or two my external keyboard has been flaking out --
    dropping keystrokes, and occasionally barfing out a string of repeats.
    The cats, of course, know nothing about this.  Or will admit to nothing,
    in any case.  So yesterday, after determining that a blast of canned
    difluoroethane wasn&apos;t going to fix it, I finally started to think
    seriously about replacing it.

&lt;p&gt; The keyboard has only a limited set of plausible replacements, because
    there are only two types of external keyboard that I can stand:  the &lt;a href=&quot;https://en.wikipedia.org/wiki/Model_M_keyboard&quot;&gt;Model M&lt;/a&gt; and the
    &lt;a href=&quot;https://www.lenovo.com/us/en/accessories-and-monitors/keyboards-and-mice/keyboards/KBD-BO-TrackPoint-KBD-US-English/p/4Y40X49493&quot;&gt;ThinkPad TrackPoint Keyboard&lt;/a&gt;.  The Model M and the oldest of the
    Thinkpad keyboards (the marvelous SK-8845 Ultranav) can be dismissed out
    of hand because they lack a logo key, which I&apos;ve gotten used to using as
    &lt;a href=&quot;https://mdlbear.dreamwidth.org/1573035.html&quot;&gt;Xmonad&apos;s Mod
    key&lt;/a&gt;.  Most Model Ms lack a trackpoint, although I have one that has it
    -- and two PS-2 connectors on the cable.  Besices, I&apos;m not positive that I
    can &lt;em&gt;find&lt;/em&gt; my Model M at this point, and it takes up a lot of desk
    space that I don&apos;t have anymore.

&lt;p&gt; The second generation of Thinkpad keyboards -- the SK-8855 -- have a logo
    key, and an attached USB cable that stows into a recess on the back, but
    have the page-up and page-down keys on the right-hand edge, in what has
    become, for me, the wrong place.  That makes them just enough different
    from the keyboards on the newer Thinkpads that it&apos;s annoying.  I have one
    that I&apos;d consider using anyway, but it&apos;s broken; my second one is out on
    loan.

&lt;p&gt; (You might well ask why, since both of the laptops I&apos;m using -- Sable and
    Raven -- are Thinkpads with the right keyboard, I would be looking at
    external keyboards.  I blame the cats.  If I have an external keyboard and
    an external monitor on my desk, I can close the lid and let Desti sit on
    it.  Come to think of it, that may be why I need a replacement keyboard in
    the first place.)

&lt;p&gt; There are three Thinkpad keyboards with the new layout -- the &lt;a href=&quot;https://smile.amazon.com/Lenovo-ThinkPad-Compact-Keyboard-TrackPoint/dp/B00F3U4TQS&quot;&gt;KU-1255&lt;/a&gt;, which is what I&apos;m looking to replace, the &lt;a href=&quot;https://support.lenovo.com/us/en/solutions/pd026744&quot;&gt;Bluetooth
    version,&lt;/a&gt; and the shiny new &lt;a href=&quot;https://www.lenovo.com/us/en/accessories-and-monitors/keyboards-and-mice/keyboards/KBD-BO-TrackPoint-KBD-US-English/p/4Y40X49493&quot;&gt;ThinkPad TrackPoint Keyboard II&lt;/a&gt;.  The Bluetooth version has gotten
    poor reviews -- apparently it tends to be laggy -- and in any case one of
    the laptops it needs to go with doesn&apos;t have Bluetooth.  (I know --
    dongles.  I&apos;m also running out of USB ports.)  The Keyboard II has
    &lt;em&gt;both&lt;/em&gt; Bluetooth and a wireless USB dongle.  (It would, of course,
    be ideal if it were compatible with Logitech&apos;s, but of course it wouldn&apos;t
    be.)

&lt;p&gt; I was just about to order one when I saw this line on Lenovo&apos;s website:

&lt;blockquote&gt;
  Ships in more than 5 weeks.
&lt;/blockquote&gt;

&lt;p&gt; So it looks as though I get to spend $60 on a KU-1255 to use while I&apos;m
    waiting.  Or instead.  Or maybe an SK-8855, because they have an attached USB cable
    instead of requiring a (fragile) micro-USB, except that those appear to be
    made of unobtainium today.  And I can get the KU-1255 from Amazon and have it
    delivered tomorrow.

&lt;p&gt; Just for the record, here&apos;s what I like (and some reviewers detest, of
    course) about the newer Thinkpad keyboards:
&lt;ul&gt;
  &lt;li&gt; Page-up and page-down keys.  (Many -- perhaps most -- newer compact
       keyboards require using the function key on the up and down arrows,
       which makes it hard to hit one-handed.  Because cat.)
  &lt;li&gt; The cursor keys are all in one place on the lower right:  the arrows in
       an inverted-T arrangement, with the page-up and page-down on either
       side of the up-arrow in what practically &lt;em&gt;every other keyboard&lt;/em&gt;
       leaves as empty space.  Huh?
  &lt;li&gt; Trackpoint -- the little red pointing stick between the G, H, and B
       keys. I don&apos;t always use it, but it&apos;s there when I need it.  And you
       can scroll with it.
  &lt;li&gt; Along with the trackpoint, there are &lt;em&gt;three&lt;/em&gt; buttons directly
       under the space bar.  The middle one is what you hold down to scroll
       with the trackpoint; on Linux it&apos;s also &quot;paste selection&quot; in most
       places, and &quot;download&quot; in browsers.
  &lt;li&gt; The classic Thinkpad key-feel.  A lot like a Model M clicky-key only
       &lt;em&gt;silent&lt;/em&gt;.  Less travel than the mechanical keys on the Model M,
       but I&apos;ve come to prefer that.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt; I&apos;m still waffling over the II.  It&apos;s hard to justify, now that I have a
    1255 on order.  But not impossible.  Meanwhile I&apos;ll just sit here
    listening to &lt;a href=&quot;https://www.youtube.com/watch?v=jinGW7ZDGPM&quot;&gt;The
    Typewriter (a concerto for orchestra and solo typewriter) by Leroy
    Anderson)&lt;/a&gt;.  (There&apos;s a version that includes a repeat performance
    using an IBM Selectric, but I can&apos;t seem to find it now.  It would have
    been perfect for this post.)

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1735535&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1735535.html</comments>
  <category>curmudgeon</category>
  <category>keyboards</category>
  <category>computers</category>
  <lj:music>&quot;The Typewriter&quot; by Leroy Anderson</lj:music>
  <lj:mood>didactic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1734982.html</guid>
  <pubDate>Sun, 30 Aug 2020 19:18:37 GMT</pubDate>
  <title>Done Since 2020-08-23</title>
  <link>https://mdlbear.dreamwidth.org/1734982.html</link>
  <description>&lt;p&gt; Hmm.  &lt;a href=&quot;https://mdlbear.dreamwidth.org/1734398.html&quot;&gt;File
    corruption on (laptop)Sable&lt;/a&gt;, political corruption (a given these
    days), some interesting debugging on (temporary replacement laptop) Raven,
    singing, no walking to speak of, Colleen doing her exercises, Colleen&apos;s
    usual medical problems and some less usual ones, deli sandwiches by
    curbside pickup, killer hurricane, killer cops,... FSCK (literally as well
    as indirectly figuratively).

&lt;p&gt; Oh yeah, almost forgot -- &lt;a href=&quot;https://www.nytimes.com/2020/08/25/health/covid-19-testing-cdc.html&quot;&gt;C.D.C. Now Says People Without Covid-19 Symptoms Do Not Need Testing&lt;/a&gt;
    (via &lt;a href=&quot;https://siderea.dreamwidth.org/1653182.html&quot;&gt;siderea | How
    Can You Tell the CDC is Lying? Their Lips Are Moving.&lt;/a&gt;)

&lt;p&gt; The usual mixed week, here at this end of the Rainbow Caravan.

&lt;p&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://mdlbear.dreamwidth.org/1734982.html#cutid1&quot;&gt;Notes &amp; links, as usual&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1734982&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1734982.html</comments>
  <category>links</category>
  <category>done</category>
  <category>computers</category>
  <lj:music>Golden Bough, live-streaming &quot;songs of hope&quot;</lj:music>
  <lj:mood>worried</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
</channel>
</rss>
