.md 421 KB

+++ title = "Blog" author = ["George M Jones"] publishDate = 2023-10-09T06:40:00-04:00 lastmod = 2024-01-08T10:42:05-05:00 categories = ["blog"] draft = false +++

1 Geek Stuff geek {#geek-stuff}

WIP 1.1 The unnumbered habits of a questionably effective person orgmodeemacs100DaysToOffloadlife {#2022-12-25}

This is two part rant on planning with (and without) Emacs Org Mode, shoved together into one post in much the same way as Lennon-McCartney songs were shoved together from musical scraps they had laying around. My Frankenstein post will probably have less impact and reach than "A Day In The Life", Yeah, Yeah, Yeah.

1.1.1 Rants on org mode, humanity and Bruce {#rants-on-org-mode-humanity-and-bruce}

  • Org mode and planning

    These are reflections getting things done (not GTD). Or not getting things done. Or yak-shaving with Emacs and org-mode while pretending to get things done and really just enjoying the experience either way. Maybe that's what org mode is all about anyhow.

    Org mode is the best list making tool I've ever found. Org capture let's you capture thoughts, links, TODO items on the fly in the middle of whatever else you're doing and get back to them. You never miss anything.

  • But we're human

    But there are a couple problems. We're human, not AI-driven lisp code knocking off all the TODO items, and we're finite in terms of time, attention, focus, money, friends, skills, etc.

    The result is that org mode enables me to grow infinite lists of TODOs. The human brain is good at focusing on maybe 3 things at a time. The path to despair (long undone lists) is obvious. Sometimes I just give up on org mode lists and do things.

  • Bruce

    Long, Long, ago in a tech company far, far away (CompuServe, Columbus, Ohio) there were "how do we migrate off of DEC10 to compete with AOL wars". I knew Bruce McNaughton. Bruce moved on from there to be VP of MSN at Microsoft for a while. Arguably a "Highly Successful Person" (who I'm pretty sure does not use org mode, but does have ligit geek creds). I asked him once how he plans and memories (vague) are that he did not make lists (at the time Franklin Planners and then Franklin Planner software were all the rage). That image stuck with me. Just talk to people and do stuff.

  • Concluding Rant

    • It's about enjoying what you do
      • just the act of planning
      • maybe actually getting things done, maybe not
      • a sense of accomplishment (TODO -> DONE)
    • Software can be a tool, a focus, a shiny object or a distraction
    • Software can be tyrannical
      • Computers are good an infinite lists, humans aren't
    • I will die with a TODO list much larger than it is today.

1.1.2 My work planning regime with org mode {#my-work-planning-regime-with-org-mode}

That said, here's more-or-less how I plan my days at work. Home/personal stuff is similar, but a little less structured.

  • Morning Planning

    What's in my head

    : capture TODOs form the top of my journal (diaty.org)

    Look at "inputs" : look at calendar, email and slack in that order.

    Look at existing porjects/plans : Look at weekly plans, tasks, etc

    Juggle all these and figure out what I'm going to try to do that day

  • During the day

    Capture new stuff and move on

    : Quickly capture new asks, TODOs

    (org-capture) and move.
    

    Capture info : capture info (links to HOWTOs, etc in the same file)

    Keep a calendar open : Keep a calendar window open so I don't

    miss thigns
    

    Turn off all notificatons : Turn off all email, slack,

    etc. notificatons and pop-iups so I can control my focus.
    

    Check email, slack on my schedule : Check in somewhat frequently

    with slack, email so people can get ahold of me in a somewhat
    timely fashon.   If it's urgent, call or text.  Voice calls seem
    to be a dying breed ("BR 549", "Pensylvania 6-5000")
    

    Minimize yak shaving : I tend to yak-shave a lot. Like writing

    this post.  Watch it.
    
  • Organizing Time

    Do "thinking work early"

    : plan do do "thiking work" early in the day

    Do "collaboration work mid-day" : do 1:1s, collaboration mid-day

    Do "meetings late-day" : Push meetings, interrupts, etc late day

  • Where to store "TODOs"

    one file

    : I increasly just store TODOs, info , etc to one file

    (diary.org) which is a diary-like file organized under
    Year/Month/Day/ENTRY items.
    

    project files : I do have planning files for most projects with

    TODOs etc
    

    agenda : I do use org-agenda to get a roll-up agenda view, but

    more and more I'm just going with the inverse-stack, what's at
    the bottom of my diary.org and using mental prirotization.
    

1.1.3 Projects template {#projects-template}

And because this post is getting too long already, I'll make it longer.

Here is the org project template that I've developed over the last decade or so. I still use it, but I'm moving more and more to capturing everything in diary.org/the journal and maybe linking out to these project files.

A couple notes. "OODA" refers to the "OODA Loop". At times, its a useful paradigm for thinking about action, think Snoopy and the Red Barron: Snoopy Observes the Red Barron, he Orients himself, he Decides to let the Red Barron live to fight another day, and the Acts by disengaging the dogfight.

"Cogita", "Fac", and "Dic" are Latin singular imperatives for "Think", "Act", "Speak". Another paradigm for thinking about actions. Figure out what you're doing, gather info, plan, then do stuff, then talk about it (blogs, reports, papers, meetings, sales...)

# #+options: ':nil *:t -:t ::t <:t H:3 \n:nil ^:nil arch:headline
# #+options: author:t broken-links:nil c:nil creator:nil
# #+options: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:2
# #+options: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t
# #+options: timestamp:t title:t toc:t todo:t |:t
# #+title: PROJECT
# #+date: <2022-12-25 Sun 07:50:58>
# #+author: George Jones
# #+email: ME @ SOMEWHERE
# #+language: en
# #+select_tags: export
# #+exclude_tags: noexport
# #+creator: Emacs 28.0.50 (Org mode 9.3.7)

# This is a project to...(overview/intro)...

# * PROJECT
# ** PROJECT - Info                                                         :cogita:Ooda:
#    - Observe :: Gather Raw Information.
#    - Think (Cogita) :: Thoughts, Brainstorming, etc.
# *** Info about the project
# *** Links
#      - project directory :: file://~/home/private/FOO
#        + change this
#        + create directory
#        + keep project files here.
# *** HOWTOs
#     - Links of HOWTO articles relevant to the project
# ** PROJECT - Background
#    - Add any background info here (old files, plans, projects..)
# ** PROJECT - Planning                                                     :cogita:oODa:
#    - Think :: Think about observations and info gathered
#    - Orient :: "Figure out which way is up"
#    - Decide :: Decide what your doing, which way to go.
# *** Goals
# *** Plans
# ** PROJECT - Action Items                                                    :fac:oodA:
#    - Act/DO (Fac) :: Actions to take on info and plans
# ** PROJECT - Meetings and Reports                                                 :dic:
#    - "After action reports"
#    - Tell people what happened.
#    - Have meetings, write reports, etc. (as needed)

# ** PROJECT - Backlog

#40 of #100DaysToOffload take 2.1, https://100daystooffload.com/ of #100DaysToOffload take 2.1, https://100daystooffload.com/

WIP 1.2 It's Manjaro !!! linux100DaysToOffload {#2022-10-19}

2022-10-17:14:06:52: Installing and migrating to Manjaro
2022-10-17:14:29:04: pacman -Syu # update pacman
2022-10-17:14:30:06: sudo pacman -Syu # update pacman
2022-10-17:14:30:23: sudo pacman -S ed # install ed
2022-10-17:14:32:41: scp -v -r -p 192.168.0.10:~/stow . # copy stow files
2022-10-17:14:33:39: sudo pacman -S stow # instal stow
2022-10-17:14:47:04: # INFO - Arch runs zsh by default. Cool prompt stuff. Not quite bash
2022-10-17:14:59:24: sudo pacman -S emacs
2022-10-17:15:06:51: stow home.public.emacs.d/
2022-10-17:15:07:49: # and emacs just worked tail /home/gmj/var/log/install.org!
2022-10-17:15:14:31: # INFO enable sshd on arch https://linuxhint.com/arch_linux_ssh_server/
2022-10-17:15:26:12: TODO figure out the relationship between bash an zsh on arch. Looks like I'm really running zsh.
2022-10-17:15:26:31: TODO create a backup account
2022-10-17:17:29:28: DONE install all my stow files
2022-10-17:17:37:07: DONE install bind
2022-10-17:17:42:07: DONE installed mlocate
2022-10-18:05:51:17: DONE sudo pacman -S xclip
2022-10-19:06:21:54: TODO figure out how to start bash, not zsh
2022-10-19:06:22:18: IN-PROGRESS backing up ed to archive drive
2022-10-19:06:22:49: IN-PROGRESS copying /home/gmj/home/public /home/gmj/home/private /home/gmj/home/secret to mx
2022-10-19:06:23:21: DONE installed jupyter-notebook and pandas and matplotlib
2022-10-19:06:29:34: DONE sudo pacman -S hugo
2022-10-19:06:33:46: DONE sudo pacman -S community/speedtest-cli

#29 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 1.3 IPv6 Day 100DaysToOffloadInternet {#2022-02-11}

Today was the day I made the choice to live for an entire work-day on an IPv6-only network. And it worked. I've been watching this slow train comin' for 30 years. Now I'm holding my breath for CNLP :-)

I consciously, actively spent an entire day (well, work day) on a hotspot that was serving up only v6. This has been 30 years coming. I was on the big-ip mailing list as far back as 1992 that was discussing how to get past the impending crisis in 32 big IPv4 addressing. That was when the Web was just about to happen and I think getting an allocation may have involved sending email to Jon Postel. CIDR was introduced in 1993. NAT, BGP and DHCP came long, and countless other engineering and social hacks kept things functioning (and killed the end-to-end principal).

I'm sure I've been using v6 in lots of places (my phone) without doing any setup or making any choice to enable it, but today was the day I "turn on" v6 explicitly and lived there for a day. And it worked.

Ironically, one of the days tasks involved trying to identify and enumerate usage of v6 in some networks where it appears to have very little actual deployment.

#6 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 1.4 Tech companies I once admired lifetech {#2021-12-23-companies-I-once-admired}

     The dream is over,
     what can I say?
     The dream is over,
     yesterday.

     John Lennon, 1970

{{< figure src="/ox-hugo/logosAndPerson.png" caption="Figure 1: \"Past their sell-by date.\" by George Jones is licensed under CC BY 2.0, includes work by Nature Vectors by Vecteezy" width="400px" >}}

     Don't believe in Digital Equipment Corporation,
     Don't believe in Sun Microsystems,
     Don't believe in CompuServe,
     Don't believe in Perl,
     Don't believe in USENIX,
     Don't believe in SourceForge,
     Don't believe in GitHub,
     Don't believe in Facebook,
     Don't believe in Linked-in,
     Don't believe in Google,
     Don't believe in The SANS Institute,
     Don't believe in The Center for Internet Security,
     Don't believe in Google Plus,
     Don't believe in Twitter,
     Don't believe in Spotify,
     Don't believe in Wikipedia,
     ...
     I just believe in me,
     human beings and me.

     Me, 2021

This is a list of tech companies I once admired.

1.4.1 A tale of two tech companies {#a-tale-of-two-tech-companies}

I'll start with two examples. Writing at Christmas-time 2021, I'll categorize the two examples as "naughty and nice".

The examples will provide "soft" examples of what attracts me to tech companies and what drives me away. Following that, I'll break it down more systematically (when, why...)

  • Wikipedia - naughty

    The catalyst for thinking about all this was the revelation that Wikipedia, an organization that is built on the backs of volunteers can't stop fund-raising (and lying in the process) even when flush with cash: https://www.theregister.com/2016/12/19/jimmy_wales_breaks_promise_more_chugging/ and is making plans to further monetize it's volunteers work. I'm looking for ways to stop using Wikipedia. How does it get to this point?

  • Wordpress - nice

    Wordpress came off the "naughty" list as I was writing this post when I came across this toot https://fosstodon.org/@markosaric/107495024812888717 which referenced a good article on Matt Mullenweg the CEO of Automattic, the company that runs WordPress.com:

    "The cycle plays out the same in tech", he said. Take the internet: built as an open platform, eventually colonized by a handful of dictatorial players...

    "...But it also contains the seeds of its own demise." Users inevitably begin to feel hemmed in and controlled by the closed platforms, and yearn for open pastures. Then they go build something better. Something open. "People's natural desire for freedom starts to get more and more of the best and brightest in the world working on open, distributed, decentralized systems."

1.4.2 How you know the end is near for a company {#how-you-know-the-end-is-near-for-a-company}

  • The geeks who started it leave or are edged out by MBAs.
  • The founders, who had the vision leave.
  • Free services morph into something that's all about monitization.
  • Volunteers are exploited.

  • The arrival of the unwashed masses ... eternal September.

  • Things are dumbed down.

  • You (the "customer") become the commodity, one of "the target audience" that the marketing people try to "reach"

  • When there are hoards of people earning six and seven figure salaries that had nothing to do with creating or maintaining the value.

  • Slogans like "Learn git and github without any code!" appear on sites that are all about code.

  • When you use the phrase "The market leader..."

1.4.3 Why do things go bad? {#why-do-things-go-bad}

  • Greed, hubris, selfishness (in other words, human nature)
  • The problem of the commons
  • MBAs, marketing people and projects managers run the show.
  • Lies.
  • Loss of trust and good-will.
  • Loss of mission. "It's just a job."
    • The founders with the vision are either gone, no longer or charge or fail to communicate and sell the vision (Bezos did an excellent job of this with the "Amazon Leadership Principals")

1.4.4 So what? Where to go from here? {#so-what-where-to-go-from-here}

  • A day in the life (musically inspired metaphors)

    • Go hide out in a New York city townhouse, withdraw from public life, bake bread and raise your son until some deranged fan kills you? (see Lennon). Props to @emacsen for the creative re-use of the "Dream is over" motif that I stole https://emacsen.net/@emacsen/107405795056467815
    • Existential nihilism or hedonism ("Whatever gets you through the night, it's all right, it's all right.")
    • Live your life, enjoy your family ("I'm just sitting here watching the wheels go round and round")
  • My current responses

    Self hosting

    : I'm self hosting on a raspberry pi. Blog.

    [Git](http://git.galthub.com/).  New domain name (galthub.com). Re-considering increased
    use of my 2001-era hand-edited HTML website:
    <http://www.port111.com/george/>.  I took a year off blogging and stopped
    pushing any code, HOWTOs, etc to git.
    

    Moving back to paid services : I started my work life at

    Compu$erve.  You paid for what you got.  Then the web happened.
    The advertising business model migrated from print and
    broadcast to where the eyeballs had moved.  And you stopped
    paying.  But you became the product.  Your privacy became a
    commodity or a joke.  I'm increasingly reverting to seeing paid
    services as an "honest" alternative. I'm using paid email
    (fastmail, protonmail), VPN (proton), shared hosting (hurricane
    electric), domain names (namecheap) and may move to others,
    say, high quality professional journalism.  It seems there
    really are no truly free (as in speech or beer) lunch or online
    services.
    

    Paper : For about 30 years I used the phrase "If it requires

    paper, it's the wrong interface".  I'm backtracking on that.
    There are no marketing people, project managers, MBAs,
    data aggregators, or advertisers involved in my journal, and the
    threat models and data loss and protection paradigms are well
    understood.
    

    Reconsideration : In light of recent discoveries, and my

    exploration of the principals of why I move to/away from online
    services in this post, I'm reconsidering Wordpress.  I may
    reconsider others.
    

    Pobody's Nerfect : We live in a messed up world. The Latin

    Poet Ovid said "In medio tutissimus ibis" (roughly, "you will
    go most safely in the middle.").  While it may be possible to
    use only free software (and grow your own food), most people
    can't live there entirely.
    
  • If you've got the energy and the vision...

    The world is driven by individuals with vision. All hail Saint IGNUcius. There would likely be no free software movement without him. Individuals change tech: Alan Turing, Ken Thompson, Donald Knuth, Steve Jobs, Bill Gates, Linus Torvalds, Jeff Bezos, etc.

    If you've got the energy, the vision and the talent, go change the world. Or just go tinker around, scratch your own itch and share the results. That's often how the world is changed.

PUBLISHED 1.5 Emacs enlightenment emacslifephilosophy {#2021-12-16-emacs-enlightenment}

"...It's also clear you have a achieved emacs enlightenment. The state where you see the whole world through the mind-bogglingly useful lens of emacs and org mode and fail to see (non judgmentally) why anything should exist outside that world. 'Om, Om, Om, M-x find-universe' :-)"

From a reply to a friend about his latest emacs 'wow' moment.

{{< figure src="/ox-hugo/gnus_up_small.png" caption="Figure 2: The Enlightened GNU \"Levitating GNU with Emacs source code\" by Macduff is licensed under GPL 2.0" width="400px" >}}

PUBLISHED 1.6 Learn git and galthub without any marketing blogginggeekemacsgitsocialmarketing {#no-marketing}

OK, so a year or so later I'm back online with both a self-hosted git and blog presence.

I had been using both github for code and github.io for my blog, but for various reasons I decided to stop putting content there.

Walled gardens go away : Walled gardens go way whenever it stops

suiting the bottom line of the company.  All the form posts from
CompuServe (my first employer) are gone AOL Instant Messenger
messages (another employer) are gone.  Myspace content is gone.
Twitter, Facebook and Google have been caught regularly censoring
and deleting material.  Apple, Amazon (another employer) and Google (G+ anyone?) will
be gone someday, and the user content they host that no longer suits
their business needs will be gone before that.  I've written at
length aobut this here [40 years of walled gardens &amp; open platforms:
Part I]({{< relref "walled-gardens-part-1" >}}) and here [40 years of walled gardens &amp; open platforms: Part II]({{< relref "walled-gardens-part-2" >}})

> Karl Voit nailed it :: <https://karl-voit.at/2020/10/23/avoid-web-forums/>

"Learn git and github without any code!" : Really? A site who's

sole purpose is (was?) to allow programmers to share code puts a
slogan on top of all it's pages _Learn git and github without any
code_.  Umm.  No.  Just no.  It appears the marketing people at
Microsoft totally own the tech-focused site they bought.  The CEO
left.  They are apparently developing some non-standard tool (of
course they are, it's Microsoft, "embrace and extend"") "the Github
CLI" that they want you to use instead of, you know, standard git
tools that they don't control.  And somehow an inherently
distributed source code control system is now centralizing all the
worlds code.  No.  Just no.

My content, my way : I just don't want wordpress or atlassian or

microsoft to reformat my content, add advertising links, require
people to login or to throw long legal click-throughs and cookie
disclaimers in front of my public cogitations.

Using tools I like : Emacs org mode is going to take me to my

grave.  I **like** using it.  Using it is a hobby.  It is therapeutic.
There is a worldwide community built around emacs:
<https://emacsconf.org/2021/>. I LIKE using Hugo. See [Publishing a blog on
Github with Org and Hugo]({{< relref "hugo-org-github" >}}) (just ignore the
github bits now).  No need to use the mouse.

Learning/Geeking : I like learning how to do things, how

modern-ish Internet stuff works.  In the process of getting this
back up, I've registered a new domain name (learning new record
types, SEO, etc. in the process), discovered <http://mysocket.io>,
brushed up on my apache and ansible skills, reinstalled my dead
raspberry pie, and learned a good bit about configuring gitea

More to come now that I can get it out in a way I feel good about.

PUBLISHED 1.7 Selfhosting a Hugo blog with mysocket.io bloggingorgemacsHOWTO {#hugo-via-mysocket}

...that time when you realize your blog is hosted on a web site who's sole purpose is to support coding, and they plaster the motto

"Learn Git and Github without any code!"

all over their site, and you realize that its been taken over by marketing clones ... and it's time to do your geekly exit stage left and self host on a raspberry pi or something...

This is a HOWTO of the things I did to migrate my HUGO blog off github onto a self-hosted raspberry pi using mysocket.io.

The original setup is described here Publishing a blog on Github with Org and Hugo

1.7.1 Do normal development with local hugo server {#do-normal-development-with-local-hugo-server}

In =${HUGO_BASE_DIR}

gmj@ed blog [master] $ hugo server -v -D

browse to http//localhost:1313 to see updates in realtime.

1.7.2 Update config.toml {#update-config-dot-toml}

In ${HUGO_BASE_DIR}/config.toml update the following:

# baseurl = "https://eludom.github.io/"
baseurl = "https://curious.galthub.com/

#homepage = "eludom.github.io"
homepage = "curious.galthub.com"

1.7.3 run hugo to regenerate docs {#run-hugo-to-regenerate-docs}

The docs/ directory will be the root of your webserver

gmj@ed blog [master] $ hugo
Building sites …

                   | EN
-------------------+------
  Pages            | 210
  Paginator pages  |   0
  Non-page files   |   0
  Static files     |  78
  Processed images |   0
  Aliases          |   0
  Sitemaps         |   1
  Cleaned          |   0

Total in 2718 ms
gmj@ed blog [master] $ find . -mtime -^C
gmj@ed blog [master] $ hugo server -v -D^C
gmj@ed blog [master] $ find . -mtime -5 | head
.
./.#curious.org
./curious.org
./docs/index.html
./docs/404.html
./docs/robots.txt
./docs/about/index.html
./docs/about/index.xml
./docs/sitemap.xml
./docs/tags/poetry/index.html
...

TODO 1.7.4 Copy the files to where the web server is (if needed) {#copy-the-files-to-where-the-web-server-is--if-needed}

Which server...

      rsync -Cavz docs gmj@hangout:~/blog

TODO 1.7.5 Run local webserver {#run-local-webserver}

Run a web server with the root pointed at the docs/ directory

$ cd ~/blog/docs/
$ python3 -m http.server 1313

TODO 1.7.6 Set up tunnel {#set-up-tunnel}

Set up a tunnel

$ mysocketctl connect --port 1313 --name hugo test

TODO 1.7.7 Define CNAME {#define-cname}

...

TODO 1.7.8 Add the CNAME to the allowed domain names for the tunnel {#add-the-cname-to-the-allowed-domain-names-for-the-tunnel}

...

1.7.9 DONE install apache on raspberry pi using asnible {#done-install-apache-on-raspberry-pi-using-asnible}

TODO 1.7.10 Make sure apache root is on USB thumb drive {#make-sure-apache-root-is-on-usb-thumb-drive}

TODO 1.7.11 copy/rsync blog/docs to new apache root {#copy-rsync-blog-docs-to-new-apache-root}

  • cron?
  • Or use sshfs mounting from ed to hangout?

TODO 1.7.12 redirect apache root to blog {#redirect-apache-root-to-blog}

TODO 1.7.13 set up a new mysocket tunnel for blog/apache {#set-up-a-new-mysocket-tunnel-for-blog-apache}

TODO 1.7.14 set up CNAME curious.galthub.com pointing at tunnel {#set-up-cname-curious-dot-galthub-dot-com-pointing-at-tunnel}

  • Future

    • archive.org?
    • CDN ?

PUBLISHED 1.8 Fixing GNU bash associative array insert speed programminggnulinux {#20200418}

Bash uses linear search to insert values in to associative arrays. This is all well and good for small numbers of keys. I was adding millions[^fn:1]. I went poking around the bash source code today (2020-04-18) to confirm my suspicion and gauge the difficulty of adding an option to do something more sensible.

In less than a day after I reported it, there is a patch https://lists.gnu.org/archive/html/bug-bash/2020-04/msg00114.html My timing code and pre and post patch timings are here: https://github.com/eludom/snippits/tree/master/bash/tests

Here the steps I took and where I might go if I get serious about fixing the problem:

1.8.1 Get the source code {#get-the-source-code}

  • Find it

    find the homepage

    : A quick bit of googling lead to the homepage http://savannah.gnu.org/projects/bash/

    use git : For a minute it looked like GNU was still stuck in the bad old

    days of having to download a tarball and then apply a series
    of patches, but fortunately, it there is a git repo <http://savannah.gnu.org/git/?group=bash>
    
  • Download it

    git clone https://git.savannah.gnu.org/git/bash.git
    
    • Build it

    Bash follows a time honored build convention

    ./configure
    make
    
  • Analyze it

    • I read the NEWS file for any indication that associative arrays has been worked on to speed up associative array insert/look-ups. No indication that they had.
    • I checked the git commit logs, which appear to be meaningful after Bash-4.4 patch 19. Nothing.
    • With judicious use of grep ("grep-find in Emacs") for "associative" and "hash_search" it turns out that associative array inserts (as all inserts) are done with use of the "hash_search" function in hashlib.c
    • has_insert() begins as follows:
    /* Create an entry for STRING, in TABLE.  If the entry already
       exists, then return it (unless the HASH_NOSRCH flag is set). */
    BUCKET_CONTENTS *
    hash_insert (string, table, flags)
         char *string;
         HASH_TABLE *table;
         int flags;
    {
      BUCKET_CONTENTS *item;
      int bucket;
      unsigned int hv;
    
      if (table == 0)
        table = hash_create (0);
    
      item = (flags & HASH_NOSRCH) ? (BUCKET_CONTENTS *)NULL
                                   : hash_search (string, table, 0);
    
    • and there it is, the linear search walking the list in hash_search()
    /* Return a pointer to the hashed item.  If the HASH_CREATE flag is passed,
       create a new hash table entry for STRING, otherwise return NULL. */
    BUCKET_CONTENTS *
    hash_search (string, table, flags)
         const char *string;
         HASH_TABLE *table;
         int flags;
    {
      BUCKET_CONTENTS *list;
      int bucket;
      unsigned int hv;
    
      if (table == 0 || ((flags & HASH_CREATE) == 0 && HASH_ENTRIES (table) == 0))
        return (BUCKET_CONTENTS *)NULL;
    
      bucket = HASH_BUCKET (string, table, hv);
    
      for (list = table->bucket_array ? table->bucket_array[bucket] : 0; list; list = list->next)
        {
          /* This is the comparison function */
          if (hv == list->khash && STREQ (list->key, string))
            {
              list->times_found++;
              return (list);
            }
        }
    

1.8.2 Next steps {#next-steps}

  • DONE Reach out to the maintainers

    see if they would even entertain the idea of a patch

  • CANCELED Look for appropriate in-memory hash insert/lookup functions

    • btrees ?
  • CANCELED Code it
  • CANCELED test it

PUBLISHED 1.9 HOWTO: Using Pi-hole DNS to block ads. The struggle continues... DNSprivacynetworkingHOWTO {#2020-05-01}

This article is a work in progress. Updated: 2020-05-02. This is turning into a bit of a catch-up on the state of DNS for me.

Day 03 and 04 of #100DaysToOffload.

1.9.1 Intro {#intro}

The war against ads continues. https://pi-hole.net/ looks like a reasonable, good, new?, open source entry in the war against ads. Get 'yer source/install for linux at https://github.com/pi-hole/pi-hole

Per Paul Vixie

not even non-technical users need a "public DNS" to shield themselves from a lot of known-evil internet sites. check out @The_Pi_Hole or have your 12yo child or cousin install it.

..but I always make things harder.

{{< figure src="/ox-hugo/pi-hole.png" caption="Figure 3: pi-hole console after a few hours on my system" >}}

1.9.2 What {#what}

  • It's a local DNS server to block adds.

1.9.3 Why {#why}

  • Blocking ads is a moral good.
  • I've not done home network hacking for a while.
  • I'm moving into a bit of a more "don't track me" frame of mind.

1.9.4 When {#when}

  • Now, because I'm home more during corona-virus.

1.9.5 How {#how}

  • Set up local server.
  • First on a Linux laptop that (usually) does not go off the net.
  • Then maybe on an old pogoplug or laptop.

1.9.6 Install It {#install-it}

Here's what I did to instlal

[ ] basic install : On a Linux server, the basic install is

simple:
```text
                      sudo bash basic-install.sh
```

[ ] Static IP : But you will want a Linux box with a static IP

address. This may involve, e.g., convincing your wireless
router to hand out a the same static IP to a static IP

[ ] Tell other systems to use this IP for DNS : Again,

probably configuring your wireless router to specify your local
IP as the DNS server for DNS assignments via DHCP assignments.
You could also do this by configuring the individual devices to
use it.

[ ] Remember your admin password : Make note of the admin password during install

[ ] hit the local admin web server : Its a very nice. It will

be at a something like  <http://192.168.86.230/admin/index.php>.

1.9.7 Test It {#test-it}

[ ] Look something up by hand : Use dig(1) or host(1). Note

the `SERVER` in the response below that shows where the answer
came from.  If it's your IPS's DNS or Google, try again
(something's not configured right).  In my case 127.1 is right.
$ dig www.uu.net

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> www.uu.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54721
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.uu.net.			IN	A

;; ANSWER SECTION:
www.uu.net.		299	IN	CNAME	global.mci.com.
global.mci.com.		959	IN	CNAME	wac.C449.edgecastcdn.net.
wac.C449.edgecastcdn.net. 3599	IN	CNAME	gp1.wac.v2cdn.net.
gp1.wac.v2cdn.net.	3599	IN	A	152.195.32.39

;; Query time: 59 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri May 01 19:16:11 EDT 2020
;; MSG SIZE  rcvd: 146
  • [ ] Check the query logs via the UI to make sure your target domain showed. Be aware of caching. It may only show up the first time you query.

  • [ ] Find your favorite 90s-era web site, go hit it, and watch the counters

  • If the counters go crazy and you don't see the expected plethora of ads, you win. If not dig deeper.

  • If you are already using ad-blockers or browsers such as Brave that block ads, you may have to test with something else (Firefox, Chrome, etc.)

  • Browser and other apps are getting cagey about using not using the system DNS, using DOH, and otherwise not acting like you expect them too. Editing /etc/resolv.conf is not the whole game anymore.

1.9.8 Tools you may want to use/learn/install {#tools-you-may-want-to-use-learn-install}

dig : for making/testing queries by hand

Wireshark : Use Wireshark to see what's going on on the wire,

who you're talking to, etc.

1.9.9 The things you learn {#the-things-you-learn}

  • pi-hole can apparently function as a DHCP server itself.

  • You can choose your upstream DNS servers from a list with options for IPv4, IPv6, DNSSEC/no DNSSEC, filtered/unfiltered.

  • Quad9 is one of the choices. It looks to be really useful for adding malware blocking to your domain. See https://www.quad9.net/faq/ for a useful bit of education.

  • The logs are at /var/log/pihole.log

  • Possibly use Marcus Ranums's principal of "Artificial Ignorance" to grep out the known and see what's left:

                $  cat pihole.log.1  | egrep -v microsoft.com\|google\|amazon\|in-addr\|linkedin\|dropbox\|facebook\|messenger\|ubuntu\|github\|brave\|basicattention\|yahoo\|disqus\|twitter\|akamai\ | sed 's/.*: //'  | sort | uniq -c | sort -rn | head
                334 reply min-api.cryptocompare.com is <CNAME>
                334 reply ccc-api.cloudapp.net is 40.115.22.134
                334 query[A] min-api.cryptocompare.com from 127.0.0.1
                238 forwarded min-api.cryptocompare.com to 8.8.4.4
                143 cached min-api.cryptocompare.com is <CNAME>
                101 query[A] no-thanks.invalid.lan from 127.0.0.1
                101 query[A] no-thanks.invalid from 127.0.0.1
                101 forwarded min-api.cryptocompare.com to 8.8.8.8
                100 reply hfq2h9152m63.statuspage.io is <CNAME>
                100 query[A] rpt.cedexis.com from 127.0.0.1
    
                $ cat pihole.log.1  | egrep -v microsoft.com\|google\|amazon\|in-addr\|linkedin\|dropbox\|facebook\|messenger\|ubuntu\|github\|brave\|basicattention\|yahoo\|disqus\|twitter\|akamai\|compuserve\|aol | sed 's/.*: //'  | sort | uniq -c | sort -rn | tail -20
                1 cached imap.gmail.com is 2607:f8b0:400d:c0f::6d
                1 cached imap.gmail.com is 2607:f8b0:400d:c07::6d
                1 cached imap.gmail.com is 2607:f8b0:400d:c00::6d
                1 cached imap.gmail.com is 2607:f8b0:4004:c08::6d
                1 cached imap.gmail.com is 2607:f8b0:4004:c08::6c
                1 cached imap.gmail.com is 172.253.63.109
                1 cached imap.gmail.com is 172.253.63.108
                1 cached hosts-file.net is 3.234.198.254
                1 cached encrypted-tbn0.gstatic.com is 172.217.13.78
                1 cached dig is NXDOMAIN
                1 cached content-signature-2.cdn.mozilla.net is <CNAME>
                1 cached beacons-handoff.gcp.gvt2.com is 172.217.15.99
                1 cached beacons.gvt2.com is 172.217.13.227
                1 cached beacons.gcp.gvt2.com is <CNAME>
                1 cached beacons4.gvt2.com is 216.239.32.116
                1 cached beacons2.gvt2.com is 216.239.38.117
                1 cached beacons2.gvt2.com is 216.239.36.117
                1 cached beacons2.gvt2.com is 216.239.34.117
                1 cached beacons2.gvt2.com is 216.239.32.117
                1 cached article.smartasset.com is <CNAME>
    

    What is this stuff?

1.9.10 Tune it {#tune-it}

I'm not sure all the devices in the house are using the P-hole proxy. If they are, then they are showing up as the single device _gateway. I need to understand this and figure out if I can get other devices pulling wireless addresses via DHCP from the WAP to use the Pi-hole DNS directly. Stay tuned.

1.9.11 POST INCOMPLETE FROM HERE {#post-incomplete-from-here}

1.9.12 Migrate {#migrate}

1.9.13 Burn in {#burn-in}

1.9.14 Inflict it on others {#inflict-it-on-others}

PUBLISHED 1.10 "My Computer ?" computerswindowsapplecloudubuntulinux {#my-computer}

The windows desktop has (had? I don't pay attention) icons labeled "My Computer". I always thought that was odd, or at least very often out of context as many (most?) instances of Windows ran on machines at people's jobs. They didn't own the computer. It was not "My Computer".

Similarly, Apple has a long history of asserting they know what's best for other people and their computers. The last time I had to go to "The Apple Store" all I wanted was a power cable. I wanted the part, I wanted to pay, I wanted to get out. But, characteristically, the "experts" there (what does that say about their view of their customers) wanted to engage me, to "have a conversation", talk to me about warranties and if I qualified, they wanted to wast my time (more valuable than my money) on their agenda. Apple software is the same way. Not "My Computer".

Then there is the cloud. "There is no cloud, there's just other people's computers." I've worked at AWS. I worked at CompuServe about 5 years into the information service days. Before that, it was a time-sharing company. "There is no isolated Project, Programmer Number environment with custom BASIC and FORTRAN Compilers, InfoPlex (email), and FILGE (FILe Generator and Editor) connected via X.25 PADs (VPNs back in the day), there's just CompuServe's DecSystem-10s."

And then there is this glorious 3 or 4 year old laptop that I'm about to blow up, wiping the disk and reinstalling Ubuntu (switching to Kubntu, because, why not?). No change control. No production concerns (well, maybe a few, I'm putting out this blog post early in case it does not come back quickly). I have a long running game of naming my systems. This one's currently called ed (for the editor), octo (8 processors), mel (for "real programmers"). I think when I reinstall this time, I'll call it "MyComputer".

PUBLISHED 1.11 Publishing a blog on Github with Org and Hugo bloggingorgemacsHOWTO {#hugo-org-github}

If you ever thought to yourself, "Gee, Emacs Org mode is a great outlining and authoring tool, and I wish there were a powerful and simple way use it to publish static websites on github or in S3 buckets, I wish my blog could look as slick ast https://eludom.github.io/" your're in luck, All but the simple part. Here are some of the references I used.

Post 19 of #100DaysToOffload https://100daystooffload.com/

1.11.1 Potential ox-hugo sites to copy {#potential-ox-hugo-sites-to-copy}

1.11.2 General Info on Hugo, Ox-Hugo and github pages {#general-info-on-hugo-ox-hugo-and-github-pages}

Then I did some reading (this is where the not simple part comes in) on the following sites

hugo getting started : https://gohugo.io/getting-started/quick-start/

hosting a blog on github pages : https://gohugo.io/hosting-and-deployment/hosting-on-github/

github pages : https://pages.github.com/

HOWTO with Hugo and github pages : https://medium.com/swlh/hosting-a-hugo-blog-on-github-pages-with-travis-ci-e74a1d686f10

Org mode hugo exporter : https://ox-hugo.scripter.co/

-   I'll probably go here, but it seems like a bit much to start...
-   Maybe learn the un-automated way first?

About Hugo : https://people.umass.edu/weikaichen/post/emacs-ox-hugo/

About blogging with Hugo : https://www.shanesveller.com/blog/2018/02/13/blogging-with-org-mode-and-ox-hugo/

1.11.3 The results {#the-results}

You're looking at the results: https://eludom.github.io/, this and other posts. It took a couple deep dives to understand it, but I think I more-or-less have it, and it is a very seamless integration wtih Org-Mode, which for some of us closes the deal even if there is pain involved

1.11.4 Bonus: Twitter cards {#bonus-twitter-cards}

And for bonus points I did reading on how to add twitter card support to ox-hugo bog posts, e.g., so you can write your post and have twitter or other sites (such as Mastadon) that understand the format pull the title, intro and possibly an image to post in the web sit.

  • Twitter Cards: HOWTO, the short story

    Short version: if you drop twitter_cards.html in layouts/partials/ of your blog, you then just write your blog, publish it, and past the URL into the https://cards-dev.twitter.com/validator to make sure it's going to work when posted

1.11.5 How to publish: files, settings, process {#how-to-publish-files-settings-process}

And, finally the gory details of actually publishing.

These are raw/WIP notes, but mostly right. They actually publish this blog.

  • Important Files and Directories

    /home/gmj/public/github/ox-hugo-blogs/blog/curious.org

    : The one file to rule them all

    o This is the blog.  All articles live in this one file as
    separate org trees.   This is the "source".
    

    HUGO_BASE_DIR=/home/gmj/public/github/ox-hugo-blogs/blog : The root of my blog

    o This is the root/source for the blog.  It gets pushed to
    git@github.com:eludom/blog.git (fetch)
    

    ${HUGO_BASE_DIR}/content/ : Where local content (markdown) goes,

    e.g. `content/posts/steve.md`
    

    ${HUGO_BASE_DIR}/docs/ : Where the content to publish (html) goes,

  • Settings and Organization

    • Set EXPORT_HUGO_SECTION

      In the .org file that is the blog, set EXPORT_HUGO_SECTION to be "Blog" (or in whichever section you want posts to land, default is "posts")

      This is inherited lower level headers in org so

      ** Blog
         :PROPERTIES:
         :EXPORT_HUGO_SECTION: Blog
         :EXPORT_FILE_NAME:
         :EXPORT_HUGO_PUBLISHDATE:
         :END:
      

      covers things in

      * Content
      ** Blog
      *** Work Stuff
      *** PUBLISHED Choosy Programmers Choose GIF :Wilhite:CompuServe:GIF:History:Computers:Emacs:Programming:
      
  • Processes

    • Drafting

      • TODO start hugo in root directory

        hugo server -D

      • TODO Edit curious.org

        Add an entry like this

        *** WIP Walled Gardens
            :PROPERTIES:
            :EXPORT_HUGO_SECTION: Blog
            :EXPORT_FILE_NAME: walled-gardens
            :EXPORT_HUGO_PUBLISHDATE: 2020-08-11
            :END:
        
            This is a brain dump on something like 40 years experience with
            "social media" of various forms.
        

        EXPORT_HUGO_SECTION : probably not needed if inherited from

        higher level headline
        

        EXPORT_FILE_NAME : The file name for this post. Could be date.

        EXPORT_HUGO_PUBLISHDATE : Set to the date this post should be

        "live".  Can be used to schedule "future" posts.
        

        IMPORTANT : Posts with a status of TODO are drafts. WIP or

        PUBLISHED are "live"
        

        EVEN MORE IMPORTANT : _A valid Hugo post subtree is an Org

        subtree that has the EXPORT_FILE_NAME property set._  ox-hugo
        only exports valid subtrees to markdown.  You can draft to your
        hearts content in subtrees that do not have EXPORT_FILE_NAME set
        (and maybe export the subtree to text or html to view)
        
        • TODO Save

        With point in the newly created or updated subtree, save the file.

        view the drafts http://localhost:1313/ View the result in your browser

    • Publishing

      • run hugo

        In the HUGO_BASE_DIR run hugo. The results will be written to "doc/".

      • push to github

        • I host on github.io.
              cd doc
              git add -A
              git commit -m"name of new post"
              git push
        
    • make sure post is live, looks right

      • Go to site: https://eludom.github.io/
      • It often takes a minute or so after push for things to show up on the web site. You might have to refresh
    • Add and push the source

              cd ..
              git status .
              git add [new files]
              git commit -m"name of new post"
      
      • be sure not to add docs/, as that is pushed a a subtree.
      • possibly move the docs/ tree so that is not subsidiary to the root

1.11.6 Conclusion {#conclusion}

"I mean, why not just use blogger.com or Wordpress"? Been there done that.

Companies come and go. I ought to know. I started my career working at CompuServe. The forums where apparently finally deleted on 2017. History was lost.

There are issues of control. There are the issues of using tools I like, not the GUI or "download my app" du jour with tracking, ads, monetization, bloat and more.

PUBLISHED 1.12 HOWTO: /bin/ed by example unix100DaysToOffloadHOWTO {#bin-ed}

Below I show an editing session that uses basic /bin/ed commands.

/bin/ed is the standard Unix Editor

ed was written round 1969. It's still here. grep comes from /bin/ed: g/re/p works as an ed command to search *g*lobally for a *re*gular expression and *p*rint the matching lines. ed commands will be familiar to users of sed, as sed is the "stream editor" with a very similar set of commands. ed commands will be familiar to vi users. If you type ":" in vi, you get, basically, an ed prompt. You can type ed commands (see below) and they work. "vi" is the "visual interface" to ed (or one of it's successors). Though I am a die hard emacs user, often when I just want to do a quick edit or take some note I just fire up /bin/ed and go....

1.12.1 A sample /bin/ed session... {#a-sample-bin-ed-session-dot-dot-dot}


  gmj@ed tmp [master] $ ed -p: ed-HOWTO-blog.org  # use ":" for the prompt, just like vi
  ed-HOWTO-blog.org: No such file or directory
  :# append some lines
  :a
  * Write a blog post about /bin/ed
    /bin/ed is "The standard Unix editor" ... since 1969
    It was written by Richard Stallman

  * Show some basic ed commands
    - "a" :: append
    - "p" :: print
    - "s" :: substitute
    - "w" :: write
    - "q" :: quit
    - "." :: end input
  :
  :# Whoops, Stallman did not write ed
  :# go back to line 1
  :1
  * Write a blog post about /bin/ed
  :# make sure we are at line 1
  :.=
  1
  :# find the mistake
  :/Stallman/
    It was written by Richard Stallman
  :.=
  3
  :# its on line three
  :# fix it
  :s/Richard Stallman/Ken Thompson/
  :# let's see the fix
  :p
    It was written by Ken Thompson
  :# let's see the start of the file to here
  :1,.p
  * Write a blog post about /bin/ed
    /bin/ed is "The standard Unix editor" ... since 1969
    It was written by Ken Thompson
  :# OK, looks good, but one more change
  :p
    It was written by Ken Thompson
  :s/Ken Thompson/Ken Thompson or maybe Dennis Ritchie/p
    It was written by Ken Thompson or maybe Dennis Ritchie
  :# let's see the whole file now, it's short
  :1,$p
  * Write a blog post about /bin/ed
    /bin/ed is "The standard Unix editor" ... since 1969
    It was written by Ken Thompson or maybe Dennis Ritchie

  * Show some basic ed commands
    - "a" :: append
    - "p" :: print
    - "s" :: substitute
    - "w" :: write
    - "q" :: quit
    - "." :: end input
  :# now lets grep (g/re/p) for lines that contain "ed"
  :g/ed/p
  * Write a blog post about /bin/ed
    /bin/ed is "The standard Unix editor" ... since 1969
  * Show some basic ed commands
  :# ok, this looks good.  write and quit
  :w
  288
  :q
  gmj@ed tmp [master] $

Post 25 #100DaysToOffload https://100daystooffload.com/

PUBLISHED 1.13 HOWTO: See SOME lines from a file unix100DaysToOffloadHOWTO {#some}

Sometimes you want to see the head of a file. Sometimes you want to see the tail. Sometimes you just want to see some lines from a file.

The bash function below gives you some lines:

gmj@ed bash [master] $ cat <<END > lines.txt
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> 11
> 12
> 13
> 14
> 15
> END
gmj@ed bash [master] $ source some.t
sh
gmj@ed bash [master] $
gmj@ed bash [master] $ some -2 lines.txt
14
15
gmj@ed bash [master] $ some -2 lines.txt
9
10
gmj@ed bash [master] $ some -2 lines.txt
6
7
gmj@ed bash [master] $ cat some.sh
function some {
    # Functon to print "some" lines of a file, like head or tail but, random start
    #
    # Usage: some [[-#] FILE]

    set -u; # be safe out there

    HOW_MANY=10 # Number of lines to print.  Default.
    FILE="/dev/stdin" # default


    if [ "$#" -eq 0 ]; then
        :
    elif [ "$#" -eq 1 ]; then
        if [[ "$1" =~ -[0-9] ]]; then
            HOW_MANY=`echo "$1" | sed 's/^-//'`
        else
            FILE="$1"
        fi

    elif [ "$#" -eq 2 ]; then
        if [[ "$1" =~ -[0-9] ]]; then
            HOW_MANY=`echo "$1" | sed 's/^-//'`
        else
            echo "some: Usage: some [-# [FILE]]"
            return
        fi

        FILE="$2"
    fi

    # Count the lines to bound display
    LINES=`wc -l $FILE | sed -e 's/ .*//'`

    # pick a random starting line at least HOW_MANY back from the end
    FIRST=$((1 + RANDOM % (LINES - HOW_MANY + 1 )))
    LAST=$((FIRST + HOW_MANY - 1))

    # Let's see some lines !
    awk "NR >= $FIRST && NR <= $LAST" $FILE
}

Post 26 #100DaysToOffload https://100daystooffload.com/

PUBLISHED 1.14 Source Code Distribution From Printouts to Github unixhistory100DaysToOffload {#sourcecode}

Source code distribution has changed over the years. Today we all love (hate?) git, github and friends, but, believe it or not there were ways to distribute source code even before the Internet. In fact, this was the world in which the GNU Public License was created. Below are a few of the ways I've gotten/transferred source code through the years, in something like chronological order

{{< figure src="/ox-hugo/code.jpg" caption="Figure 4: Code on the Europython 2009 bag\" by Thomas Guest is licensed with CC BY 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by/2.0/" >}}

Post 31 of #100DaysToOffload https://100daystooffload.com/

Print Outs : Paper. Yes, paper. My first memories of source

code (late 70s) include source listing of BASIC programs
printed on ASR-33 Teletypes.  I also have memories of a large
stack of "green bar" printouts at home (again, c.a. 78 or 79)
that I think where the printouts of Emacs (TECO emacs, the
original, before GNU) that my brother probably brought home
from Carnegie-Mellon where he went as an undergrad.

Paper Tape : The ASR-33s had paper tape punches on the side.

You could punch your programs onto tape and read them back in.
It was 8-bit ASCII.   At one point, I think my brother could
read the ASCII by looking at the tape.

Cards : Early in college (80, 81) I actually punched cards for

a class or two.  You could duplicate cards.   No cheating on
that programming assignment now !

BYTE Magazine : Gamers of yore bought BYTE Magazine (and

others), in part to get the source code listings that they
could then type in.

ACM, Knuth : And of course there were textbooks such as Kunths

(to this day unfinished) "The Art of Computer Programming" and
ACM publications.  Steve Wilhite used an algorithm published in
ACM as part of GIF...of course anything printed was in the
public domain, right? ... well, no.  We were all still learning
about and in some cases defining the legal status of software
then, right along with GNU/FSF.

USENET News : In the late 80s, MIT project Athena periodically posted

the source code to X-Windows to the USENET news group
comp.sources.x.  If you were on a USENET site that "took a
feed" of that newsgroup (usually over modems not faster than
9600baud), to get the latest source to X, you watched the news
group (using readnews, rn or some other "newsreader" program),
saved off the individual pieces from each post, reassembled and
then extracted the code.  The (large) distro was compressed and
broken up into many pieces, and re-assembling them often
involved the use of uudecode, shar, patch, tar, and programs to
decompress (pretty sure gzip was not a thing yet).  Of course,
you had to grab them before your news site expired the articles
(spool space was limited, and space was shared with
rec.humor.funny and other essential news groups).  Heaven help
you if you missed one piece.  No bit-torrent for you to find
the missing pieces.  You got one shot from one source in a
limited time window.

UUCP : UUCP being "unix to unix copy", you could literally

issue a copy command of source known to live on a remote system
something like
```text
            uucp cbosgd!/archive/hdb-uucp.tar.gz hdb-uucp.tar.gz
```
with multi-hop paths being possible...if you knew the topology
(pathalias !) and the filenames.

mag tape : Then there was the time I was in Boston (visiting

Encore computer?).   I took a blank 9-track tape, arranged to
stop by MIT, was given a personal tour of the labs, show the
locked room where the all-important KDC (forerunner of
Microsoft's domain controllers) was kept, and got a copy of the
latest Athena source (X, Kerberos, Hesiod, etc.) dumped to
tape. This was getting software, the easy way.

DECUS tapes : Tapes were a thing for quite a while. early on

users of DEC computers created and distributed "decus tapes",
which were user-contributed collections of software.  If the
VAX/VMS bulletin board system I created in FORTRAN-77 around
1983 exists anywhere in the world, it's probably in the archive
of DECUS tapes.  This is one example of collections of
user-generated software that grew into the software archives we
came to know later.  I think the IBM SHARE user group had
similar collections.  The programs (games, etc) distributed
with BSD Unix formed another set.  [DistroWatch](https://en.wikipedia.org/wiki/DistroWatch) is one web site
in this vein today.

Floppies : With the advent of the PC (early, mid 80s) floppies

became a thing.  I purchased a copy of the Mark Williams C
compiler for DOS just to get the public-domain source to
MicroEmacs which I then ported to the Amiga.  Of course, with
floppies came boot sector viruses and the security wars were
on.  Later issues of BYTE sometimes shipped with floppies of
source so you didn't have to type it in.

Email : Yes, you could always use tar, shar(1), uuencode(1)

and friends to email source code.   Email has been a workhorse
for something like 40 years, not just for communication but as
the file transfer method of last (first?) resort.

CompuServe (and other) Forums : I ran ("SYSOPed" the

CompuServe Unix Forum for a few years.  I think we/I may have
invented the file suffix ".tgz" to stand for "gzip tar" archive
(because the forums could not deal with multiple suffixes, as
in .tar.gz).  We had source code available for download.  The
Forums were just CompuServe's version of the local dial-up BBS
and many other similar message/download systems.

FTP : As Internet connectivity started becoming common (at

least in universities, government and some larger
corporations), a number of "well known" FTP sites where created
(often at well connected UUCP sites) that collected and offered
source downloads. UUNET and WUSTL (Washington Univerity at
St. Louis) being some of the larger ones (there is still a
version of FTP server software, wu-ftp available for Linux)

Source Code Control Systems : As Internet connectivity became

a thing, source code control systems such as cvs, svn,
mercurial and friends started being used on local networks and
it became possible to use them over the Internet.  They also
solved a lot of the collaboration, version control and release
management issues that are important for projects of any size.

SourceForge : Sourceforge gets honorable mention as a

precursor to github and friends.  In the early 2000s it hosted
many open source projects.  I initially hosted NCAT there which
became the Center for Internet Security's Router Audit Tool.

"My name is Legion, for we are many" : Git is a good thing.

Really.  Today we have github, gitlab, dropbox and thousands of
other options for getting and sharing source code, some of
which even work reasonably well.

The world has changed. It really is a better place. No more trolling the USENET News feed spool. No more trips to MIT, tape in hand. No more hoping ftp.uu.net has the latest version. Go forth and hack.

PUBLISHED 1.15 All we are saying, is give init.el a chance 100DaysToOffloademacs {#init-el-for-world-peace}

On this Armistice Day, 2020, commemorating the end of "The war to end all wars" 119 years ago, I reflect that if the whole world were busy fiddling with their emacs configs there would be no more war. Well... so the treaty of Versailles and the League of Nations did not work out as planned...so maybe we look for community in the small instead.

There is community that has grown out of research labs in Boston (a city notable for its contribution to the birth of other well known communities). Some of the well known members of the community that I am acquainted with include a Chinese programmer living in Palo Alto, a philosophy major in France, an Astronomy professor in the Netherlands, a programmer in New Zealand, a Fin living in the United states and a Filipina mother of a 4 year old living in Canada and of course it's founder, still in Boston.

All we are saying, is give init.el a chance.

Post 36 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 1.16 Of Typewriters, Scribe, LaTeX, Org mode, Hugo and Paper historybloggingemacs100DaysToOffload {#typewriters}

1.16.1 What is this and why was it written? {#what-is-this-and-why-was-it-written}

This is my personal history of putting words-on-page-or-screen-or-blog-entry covering the period from the late 1970s to present (2020-12-05).

It was written (partially) at the request of JTR from whom I borrowed a Hugo blog theme. Thanks JTR.

I was writing a post where I wanted to include the \(\TeX\) symbol in the post, which is perfectly possible in emacs org mode where \(\TeX\) and \(\LaTeX\) are first class citizens, but it wasn't working.

The blog exports to markdown via the ox-hugo Org exporter back end (lost yet?) which Hugo then translates to HTML which can then be previewed locally with Hugo's own web server and then pushed to the live site, in my case, this site using git push.

I pinged JTR who, it turns out had little experience with \(\LaTeX\) and so was not able to help. Along the way, he asked me

Is there more you can tell me about use case for it? In other words, can I get you to vent some more about this, it's interesting.

So here is some venting. I can always vent. And, in case you were wondering, the solution is to put

      <script type="text/javascript"
      src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
      </script>

at the bottom of layout/partials/head.html before </head> in the modified Hugo hyde theme I borrowed from JTR.

1.16.2 Some History {#some-history}

Marley was dead, to begin with...

No. No. No.

It was a dark and stormy night...

Wrong.

OK, how about this:

1.16.3 Dad - Typewriters {#dad-typewriters}

In high school I wrote out my paper assignments by hand and then my Dad typed them for me, at least until I took typing and got up to 30wpm. White-out can be your friend :-)

Better.

As high school progressed I and my friends started using the HP-2000E in the computer lab on ASR 33 Teletypes (/dev/tty anyone?) that printed your input and the computers responses on a role of paper. We may have printed a few stories or other prose, but mostly it was BASIC listings.

Towards the end of high school, I remember eyeing the school secretary's IBM Selectric typewriter because we knew it could be converted to a printer...(Apple II's were all the rage then ...)

1.16.4 Brian Reid - Scribe {#brian-reid-scribe}

So, Scribe. So in the late 70's at Carnegie-Mellon, Brian Reid stepped into the long tradition of Computer Science geeks scratching their own itch, developing one of the first mark-up languages that allowed the author to describe a document structurally (chapters, paragraph, et cetera.), and to target different output devices (text, laser printer, etc.), and to externalize styles, presaging the later CSS style sheets.

Reid killed several birds with one stone. Scribe was the subject of his PhD Thesis, it formatted his PhD thesis (and many others for a few years), and was sold to Unilogic sparking the first software copyright problems between CMU and students, wining Reid the ACM Grace Hopper Award, and, of course, criticism from Richard Stallman[^fn:2] for not making it available for free...some people :-)

I wound up using Scribe on the Ohio State DECsystem-20 and then being the SCRIBE administrator for the department of Mechanical Engineering for a year or two. As I had access to then-world-class formatting and typesetting facilities, Dad was no longer typing my papers :-)

1.16.5 Donald Knuth - TeX {#donald-knuth-tex}

Meanwhile, on the other side of the country (on a dark and stormy night?), Donald Knuth was (and still is) engaged in writing his foundational series of Computer Science textbooks, The Art of Computer Programming [^fn:3]. But he was not happy with the appearance of the typesetting from his publisher, so, being Donald Knuth, he set out to write his own formatting and type-setting program c.a. 1978. The result was \(\TeX\). Along with TeX he developed Metafont, a language for describing fonts from which we get the Computer Modern fonts.

The current \(\TeX\) release is 3.14159265. Each subsequent release adds a digit of \(\pi\). Metafont is at 2.7182818 and approaching e with each release.

I installed the Pascal based TeX82 on the DEC10's at CompuServe sometime around 1986.

1.16.6 Donald Knuth - Literate Programming {#donald-knuth-literate-programming}

Not content with having won the Turning award in 1974 (4 years prior), with creating a typesetting system that is used to this day for a large fraction of academic publishing, alongside \(\TeX\) he came up with the concept of Literate Programming, the basic idea of which is you are writing a program both for humans and machines. The language was called WEB[^fn:4]. The basic process is to run "weave" to generate output for humans (say, a volume of the The Art of Computer Programming) and to run "tangle" to generate output (code) for machines.

We see elements of this today in Jupyter and Zeppelin notebooks, and for those of the Emacs-Org-mode faith, as the mix of Org Mode and Org Babel. See the paper by Domnick, Shculte etc on reproducible research: https://www.jstatsoft.org/article/view/v046i03

Org directly supports a form "tangle" today.

1.16.7 Guy Steele - the 1 degree of separation {#guy-steele-the-1-degree-of-separation}

Guy Steele who later went on to have a lot to do with Java (and standardizing C) seems to have been the 1-degree-of-separation point for Emacs, TeX, and possibly SCRIBE. As recently as https://emacsconf.org/2020/, Stallman credits Steele with helping invent Emacs. Per Wikipedia, Steele spent the summer of 78 at Stanford and later implemented a back-end for TeX at MIT. By 1980 or so (per my wife who knew him there) he was at CMU and Tartan Labs as Reid was finishing off SCRIBE and his thesis. The Stanford-Berkeley-MIT-CMU crowed was (is?) a small world. James Gosling (Java, GosMacs 1981) was also kicking around CMU before moving off to Sun.

1.16.8 Leslie Lamport - Latex {#leslie-lamport-latex}

So, \(\TeX\) was cool and all, but it was very low level, and in some ways difficult to work with. People had seen SCRIBE. So at some point in the mid-80s, as SCRIBE was on its way to proprietary-software-oblivion, Leslie Lamport created \(\LaTeX\).

\(\LaTeX\) is, from my point of view, a set of SCRIBE-like macros on top of \(\TeX\). Very useful.

And because creators gonna create....along the way Lamport and Oren Patashink created BibTeX which is to this day one of the most common ways to keep a list of bibliographic references that can be cited in your papers.

If you're curious what all this looks like, I keep my resume in .tex format[^fn:5]. You can see it here http://www.port111.com/george/resume/ along with the .bib file for citations and .tex input.

1.16.9 Bill Gates and the nameless corporate droids[^fn:6] - WYSIAYG Editors {#bill-gates-and-the-nameless-corporate-droids-wysiayg-editors}

What You See Is All You Get (WYSIAYG) also known as What You See Is What You Get (WISIWYG) editors let you move pixels around on the screen and print exactly what you see. With no training at all in printing, typesetting, aesthetics, or design you can make wildly inconsistent and incoherent decisions about the visual appearance of your document, in fact, you (and your boss and your marketing department) can focus on that from the start to the exclusion of stringing together coherent thoughts.

I'm pretty sure SCRIBE and \(\LaTeX\) form the basis of my antipathy to the WYSIWIG editors that started to come along (mass market). When writing documents you should think first about what you are saying, the structure of your document, your arguments and your story line before you worry (if all) about making a font just the right size and color so you can make your power point. Formatting should be the afterthought, and no more than choosing the right style sheet. Brian Reed got that right.

1.16.10 Sir "Almost not appearing in this blog post" - RUNOFF and nroff {#sir-almost-not-appearing-in-this-blog-post-runoff-and-nroff}

A couple honorable mentions that I did in fact use a good bit along the way are DEC RUNOFF (DEC 10s, VMS) and nroff (unix).

nroff comes in handy when you want to write man(1) pages.

1.16.11 Tim Berners-Lee - The Web {#tim-berners-lee-the-web}

There was a time before the web. There were things written and published before the web. But since the early 90s it's been the 800-pound gorilla in the living room.

There were other hyptertext systems before it. Apple's HyperCard. The GNU/Emacs info system. There was, in fact, a whole academic conference on hypertext systems at which early versions of HTML/HTTP were scorned.

But NCSA Mosaic happened, Netscape happened (Marc Andreessen). The NCSA, Netscape and Apache servers happened. For various reasons, the World Wide Web took off in ways that gopher never did and Gemini probably never will. Stodgy XML editors were rebranded as exciting new HTML editors.

I attended the 2nd International Conference on Mosaic and the Web, met Berners-Lee, and implemented a never-released web browser that worked through CompuServe's WinCIM which would have allowed dial-up users without an IP stack such as SLIP or PPP (most users at that time) to access the web. But marketing people. They were not sure this web thing was going to catch on....

1.16.12 Carsten Dominick - Org Mode - "Your Life in Plain Text" {#carsten-dominick-org-mode-your-life-in-plain-text}

Your blog post is text. Your email it text. Your slack (IRC) messages are text. Your documents are text. Your calendar and agenda are text. Your shopping lists are text. You TODO lists are text. Musical scores are texts. Poems are text. ASCII art is text. Source code is text. Data is text (json). The web is text (once you strip out all the graphics, videos, java and javascript...) At different levels YOU are text. Your DNA sequence is a text. The story of your life is a text.

There was a period in the late 90s and early 2000s where Emacs (the text editor) kind of went into a lull. Then two things happened: package managers (ELPA, MELPA, basically "apps" for emacs) and org mode.

Org mode is a game changer. It's going to take me to my grave or senility where I forget the meta-alt-control-shift-escape sequences needed to make the magic happen, whichever comes first. People are learning an arcane 44-year old editor just to use org mode (and the growing list of packages being built in/with round it).

Org started as a simple text outline tool. It enabled Abraham Lincoln to write a short, pithy, and memorable speech:

* Hook
  Four score and seven years ago our fathers
  - brought forth on this continent, a new nation,
    o conceived in Liberty,
    o and dedicated to the proposition
      + that all men are created equal.
** Body
   Now we are engaged in a great civil war, testing whether that
   nation, or any nation so conceived and so dedicated, can long
   endure...
*** Conclusion
    ...that government of the people, by the people, for the people,
    shall not perish from the earth.

OK, maybe not.

Carsten Dominick, the creator of Org, is an academic (Astronomy professor), he built in support for \(\LaTeX\) from the beginning. To use \(\LaTeX\) in Org, you simply write latex and math equations exactly as you would for "normal" \(\LaTeX\). If the back-end exporter (e.g. the \(\LaTeX\) exporter or the HTML exporter) support \(\LaTeX\), you just get your nicely formatted output for free

\begin{multline*} p(x) = x^8+x^7+x^6+x^5 \end{multline*}

Org documents can be easily exported to text (of course), \(\LaTeX\), HTML, .ODF (Microsoft Word compatible) and scores of others. Same input. 2 or 3 keystrokes. Different output.

Org naively supports TODO lists, outlines, agendas, planning (GTD and similar systems), note taking/knowledge capture, contact management, calendaring, spreadsheet-like calculations, literate programming and the list goes on.

Same basic interface. Same commands. Not a mouse-over, click or graphical interface in sight (unless you want it) Just text, all the way down.

And since it's just text, it can be handled with source code management tools (git) and of course your favorite text editor.

There are mobile clients (see Orgzly) so you can simply push org text files to your phone with Dropbox or Syncthing and use them for TODO lists, quick note taking and journal entries, shopping lists, contact management, schedules, etc.

Oh, and ASCII art is a thing...

                                         /  \ "I'll see you on __
                 /\                     /   /  the text side  /  \
                /  \                   /       of the moon"  /   /
 -------R------/    \                _/_____       _______  /
 -------G-----/    --\-----W------- /       \ / \ /       \/
 -------B----/        \            |   Org   |   |  Mode   |
            /          \            \_______/     \_______/
           -------------
Code Snippet 1: Text Colored Glasses

1.16.13 Johnny Cash - "I've seen 'em come and go, and I've seen 'em die.." {#johnny-cash-i-ve-seen-em-come-and-go-and-i-ve-seen-em-die-dot-dot}

  • CompuServe
  • Prodigy
  • BIX
  • GEnie
  • AIM
  • AOL
  • MySpace
  • Google+
  • Killed By Google

    My father spent 25 years working for the Ohio Historical Society running the microfilm department. A lot of that time was spent preserving the last remaining copies of 19th and 20th newspapers that somebody found in Aunt Millie's attic at her estate sale. Save for that, the daily history of Findlay, Cadiz, Yellow Springs, Lima and Barberton would have been completely lost. He was preserving important texts. He was preserving, in some cases, the only record of people's lives. People's lives matter.

    I began my professional career at CompuServe. CompuServe had vibrant forums where there was lots of interaction, growth and history made. All with text exchanges. A couple years ago, most of that history was flushed because "there was no business case for preserving it."

    Companies come and go. They should not be trusted to preserve important texts or to decide which texts are important. Today Facebook and Twitter are censoring content. How long will they be in business? When will they dump text you care about?

    Karl Voit has spelled this out very well in a blog post: Don't Contribute Anything Relevant in Web Forums Like Reddit

    I am systematically moving my texts off "Big Internet". Facebook went (mostly in 2016, completely in 2020). I've stopped posting to Twitter. Dropbox is gone. Github (which hosts this blog) is next. Google in progress. I helped create this world, but it's time for a course correction. Centralization and mediation of human interaction by organizations with nothing but a advertising-driven profit motive[^fn:7] is a problem. We need to move to systems that put people first.

    Having recently joined the Mastadon community Fosstodon that focuses on Free and Open Source Software, I believe we are living in an incredible time where the tools we need for a federated, decentralized, ad-free, people-centric world are being created...all without even jumping on the crypto-currency bandwagon :-). There are extant/emerging solutions for authoring, messaging, social networking, distributed source code control and many more. Herein lies another long post, but to me this "feels" very like the early days of GNU and Linux.

1.16.14 Steve Francia - Hugo {#steve-francia-hugo}

One last entry in the things-I-have-used-to-write lineup. The Hugo static web site generator is bringing you this blog.

The production of this blog combines many of the technologies and processes already discussed:

org mode : The actual source for this blog is a "normal"

emacs org mode buffer which is exported via the ox-hugo
backend

\(\LaTeX\) : The ox-hugo exporter deals seamlessly

with almost all org features, including \\(\LaTeX\\)[^fn:8],
footnotes, _emphasis_, etc.

Web : Once the markdown is produced, Hugo does what it does.

It uses style sheets, templates, themes etc to render the blog
as HTML served up via a local web server for texting and to be
pushed to the "live" web serer for production.

Focus on the content : And all of this is in the "don't worry

what it looks like, just focus on the content" mode.  With 4
keystrokes I exported a copy of this post to `.ODT` format so
my son could review it in word.  A different 4 keystokes
exports to text or HTML.  I let the back-ends "do the right
thing" to make it "look good" in the target format.

git : Once the results are satisfactory, they are "pushed to

production" via `git push`.  Problems?  Need to back out?
It's git.   Multiple authors?  It's git.

I described this process in way too much detail already elsewhere in my blog post on publishing a blog on Github with Org and Hugo.

1.16.15 George Jones - OK, but did George actually write anything worth reading? {#george-jones-ok-but-did-george-actually-write-anything-worth-reading}

You've read this far on a long blog post :-)

I may have written some things, well, a lot of things. You can decide if they are worth reading.

https://tools.ietf.org/html/rfc3871 : RFC3871 was a

starry-eyed attempt at getting large network equipment vendors
to, you know, stop using telnet (with plain-text passwords in
the clear) for management of inconsequential computers like
the routers that make up the Internet backbone.  It used yet
another cool text formatting tool, [xml2rfc](https://xml2rfc.tools.ietf.org/).  In my opinion we
lost the war, e.g. getting security features in important
devices ... and well ... IOT devices are here now, many using
the same least-cost TCP/IP stacks that are full of the same
problems, see
<https://en.wikipedia.org/wiki/Ripple20>
and not
up-gradable.  It looks like the [IETF OPSEC Working Group](https://tools.ietf.org/wg/opsec/charters) that
that document spawned is still going, pumping out documents,
and, I'm sure, in the words of Marshall Rose, there have been
"[Many fine lunches and dinners](http://www.faqs.org/rfcs/rfc3160.html)"

Links to a few pubs, talks, papers, etc : Because 20 year old

index.html files never die <http://www.port111.com/george/#pubs>

1.16.16 Back to paper {#back-to-paper}

I used to have a saying:

If it requires paper, it's the wrong interface.

I'm backtracking on that. I journal, on paper, most mornings. I'm finding that there is a level of creativity, spontaneity and a kind of catharsis that happens when putting things on paper. I make non-linear connections that would never be made at a keyboard.

I'm not sure what that's saying. Stay open? Be willing to re-consider things you've discarded? There will be no follows. No likes. No re-shares. No chance of going viral. But its where I find my thoughts. Things have come full circle.

1.16.17 Final thoughts {#final-thoughts}

I hope this has been at least an in interesting read. I hope it has provided at least some idea of where we are and how we got here in terms of technology for putting thoughts on "paper".

1.16.18 And now, a word from our sponsor... {#and-now-a-word-from-our-sponsor-dot-dot-dot}

\begin{array}{*{20}c} {x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}} & {{\rm{when}}} & {ax^2 + bx + c = 0} \\ \end{array}

PUBLISHED 1.17 .bashrc as literate programming howtoemacs100DaysToOffload {#bashrc}

1.17.1 Knuth gets annoyed at his publishers, \(\TeX\) is born. {#knuth-gets-annoyed-at-his-publishers-tex-is-born-dot}

Back in the late 70s Donald Knuth who was (and still is) publishing a seminal series of Computer Science text books got annoyed at the typesetting, layouts and font choices he was being presented by publishers. So he did what any self-respecting hacker who happened to be Donald Knuth would do: he created his own typesetting system called \(\TeX\) which (along with \(\LaTeX\) which borrowed heavily from SCRIBE) is something of a standard to this day in academic publishing.

Because, you know, why is it unreasonable to expect publishers to render simple equations, right?

\begin{multline*} \vec{E}_{\mathrm{tot}}= q\cdot k_{b}\cdot \dfrac{r}{r^3} \left\lgroup

\frac{\hat{r}-\left(\dfrac{d}{2\cdot r}\right)\hat{d}}
     {\biggl(1+\left(\dfrac{d}{2\cdot r}\right)^2-
               \left(\dfrac{d}{r}\right)\hat{r}\cdot\hat{d}\cdot\cos(\theta)
      \biggr)^{3/2}}

\right. \\ \left.

{}-
\frac{\hat{r}+\left(\dfrac{d}{2\cdot r}\right)\hat{d}}
     {\biggl(1+\left(\dfrac{d}{2\cdot r}\right)^2+
               \left(\dfrac{d}{r}\right)\cdot\hat{r}\cdot\hat{d}\cdot\cos(\theta)
      \biggr)^{3/2}}

\right\rgroup \end{multline*}

But wait, there's more.

1.17.2 Literate Programming {#literate-programming}

In addition to writing his own typesetting system, he came up with the concept of Literate Programming at the same time. The basic idea is that you write for humans to read (e.g. text books) with a side-effect of outputting code (for machines to execute). It is the ultimate in software documentation. The code and the description are an integrated whole with different processes, "tangle", to produce code and "weave"[^fn:9], to produce output for humans

I've been influenced by the concept of Literate Programming ever since I installed the original TeX (and LaTex) on CompuServe's DEC10s.

1.17.3 The children of tangle and weave - Org, Babel, Jupyter and Zepplin {#the-children-of-tangle-and-weave-org-babel-jupyter-and-zepplin}

Fast forward a few decades. Carsten Dominick creates org mode for Emacs to organize, well, everything which, of course, has a back end to output .tex files. Eric Schulte then has the bright ideas of creating org-babel, which allows small (or not so small) blocks of code to be imbedded in org files and executed with their output becoming part of the document. Literate programming, here were are, again....oh, and it's a tool for doing reproducible scientific research as well where the data, code, descriptions of experiments and results/conclusions are all one document:

https://www.jstatsoft.org/article/view/v046i03

Jupyter and Zeppelin notebooks provide similar functionality today for Python, Spark, Scala and the data science community, but Knuth was there 40 years ago.

1.17.4 George gets annoyed at a complicated .bashrc, .bashrc.org is born {#george-gets-annoyed-at-a-complicated-dot-bashrc-dot-bashrc-dot-org-is-born}

Which brings me to my own humble annoyances which are not likely to change the course of science or academic publishing...

As a nearly lifelong emacs user I am mildly annoyed any time I have to do something that can't be done in emacs in general, and have been particularly annoyed at the growing complexity of my .bashrc file which could not be organize and documented in org mode....until now.

1.17.5 EmacsConf 2020 talk: README Driven Design {#emacsconf-2020-talk-readme-driven-design}

A talk at EmacsConf 2020 reminded me that Org mode can be used directly for literate programming.

Test Driven Design (TDD) had been a concept for a while: write your tests first, once your code passes, you're done. Find a bug, write a new test, code until it passes.

"README Driven Design" continues in the same vein. Often programmers will wait to the end to write their documentation, install notes, user guide etc. What this talk advocates is to use literate programming and to start the README.org, which, given Org babel, could be the whole application, including TDD scripts. See. Emacs does subsume all, did you notice how TDD just got swallowed up without missing a step? See the blog post summarizing the talk at http://adamard.com/literate_programming.html

1.17.6 1 - My .bashrc as literate programming {#1-my-dot-bashrc-as-literate-programming}

What follows are three different versions of my (457 line) .bashrc file.

The first is the version for-human-consumption, complete with comments, descriptions, useful font highlighting and actual text blocked out. In Knuth's terms, this is the "weave" output.

The second is the .bashrc that actually gets executed by bash. This is the "tangle" output.

The last is the org mode source from which both preceding versions used as input.

  • 1.1 - My .bashrc - weave output for humans

    Here is the human-readable .bashrc file with comments, etc.

    • About this .bashrc file

      • Intro

        This is George Jones' .bashrc file as an literate programming file in emacs org mode using babel blocks.

      • To generate the actual .bashrc

        This .bashrc.org file must be processed to generate the actual .bashrc It can be processed interactively to generate .bashrc via org-babel-tangle-file or from the command line as

          emacs --batch --eval "(require 'org)" --eval '(org-babel-tangle-file ".bashrc.org")'
        

        Permanent changes must be made to the .org version, as the actual .bashrc will be overwritten when the .org version is "compiled"

        • Debugging

        In most bash files I do

          set -e
          set -u
        

        but there are problems setting it in .bashrc. An error then causes you to exit the shell entirely (not what you want), and there are several constructs that cause warnings due to undefined variables (these can/probably should be fixd)

        Set

          export DEBUG=1
        

        to enable debugging output from the debug helper function.

    • The actual executable .bashrc

      • Helper functions

        I define a few syslog-ish helper functions to print warnings, errors, etc.

          #PROG=`basename "$0" | tr -d '\n'`  # normal setting
          PROG="bashrc" # setting for bashrc due to errors
        
          function info()  { echo ${PROG}\: info: "$@" 1>&2; }
          function warn()  { echo ${PROG}\: warning: "$@" 1>&2; }
          function error() { echo ${PROG}\: error: "$@" 1>&2; }
          function debug() { [[ -v DEBUG ]] && echo ${PROG}\: debug: "$@" 1>&2 || true ; }
          function die()   { echo ${PROG}\: fatal: "$@" 1>&2 && exit 1; }
        
        • Set a reasonable default prompt

        Here I set a reasonable default prompt that includes timestamp, username, host and current directory:

        export PS1="\# [\t] \u@\h \W/ $ "
        
      • Misc aliases

        Define various aliases that I use

          alias rm='    rm -i'
          alias ag='    alias | grep -i'
          alias eg='    printenv | grep -i'
          alias hg='    history | grep -i'
          alias ht='    history | tail'
          alias fpg='   find . -print | egrep -i'
          alias egi='   egrep -i'
          alias psg='   /bin/ps -auxww | grep'
          alias p8='    ping -c 3 8.8.8.8' # make sure routing works
          alias pp='    ping -c 3 port111.com' # make sure dns and routing work
          alias locate='locate -r'
        
        • cd commands that use/print the directory stack

        These aliases support pushd/popd/dirs like functionality while listing one directory per line

        I like to keep a "stack" of directories so I can work on one thing then "pop" back to where I was. pushd an popd support this, and dirs lists the directories, but I prefer to have them listed one per line.

          function dirl() {
              # "DIR"ectory "L"ist directory stack, one per line
              # Usage: dirl
        
              for d in `dirs`; do echo $d; done
          }
        
          function dirc() {
              # "DIR"ectory "C"onnect - connect to directory and list stack
              # Usage: dirc [DIR
        
              pushd ${1:-"$HOME"} > /dev/null
              dirl
          }
        
          function dirp () {
              # "DIR"ectory "P"op - pop N entries off the directory stack
              # Usage: dirp [N]
              #
              # OLD:
              #   alias  dirp='popd > /dev/null && dirl'
              for i in `seq ${1:-"1"}`; do
                  debug "dirl: popd. i is $i"
                  popd > /dev/null;
              done
              dirl
          }
        
          alias cd=pushd
        
      • Misc functions

        
          function gf() {
          # grep-find: grep for patterins in files via find
          #
          # Usage: gf patterns [files [days]]
          #
          # Examples:
          #   gf findMeAnywhere
          #   gf findMeInTextFiles '*.txt'
          #   gf findMeInTextFiles .txt
          #   gf BEGIN\|END .org 30
        
          local files=""
          local days="365"
        
          set -o noglob
        
          # First arg is pattern(s) for egrep
          if [ -z ${1+x} ]; then
            echo 'gf needs string(s) to search for ' 1>&2
            info "Usage: gf patterns [files [days]]"
            return 1
          fi
        
          # Second arg (if present) is files for find.  No globbing, so "*.txt" OK
          if [ ! -z ${2+x} ]; then
            if [[ "$2" =~ ^\. ]]; then
              # Special case: treat ".foo" as "*.foo"
              # Avoids needing to quote on command line
              files="-name *$2"
            else
              files="-name ${2}"
            fi
          fi
        
          # $3 (if present) is find -mtime arg, default 365
          if [ ! -z ${3+x} ]; then
            days="${3}"
          fi
        
          # set -x
          find . -type f -mtime -${days} $files -exec egrep --color -H -i "${1}" \{\} \;
          # set +x
        
          set +o noglob
          }
        
        • Bash history functions and settings
        
          # Preserve history across sesssions
          #
          # http://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
          #
          export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
          export HISTSIZE=100000                   # big big history
          export HISTFILESIZE=100000               # big big history
          shopt -s histappend                      # append to history, don't overwrite it
        
          # Save and reload the history after each command finishes
          export PROMPT_COMMAND="history -a; history -c; history -r;"
        
        
          function hgt() {
              # hgt == "history grep (for arg) tail"
              #echo "Histroy Grep tail"
        
              if [ -z ${1+x} ]; then
                  echo 'hgt needs an argument' 1>&2
                  return 1
              fi
        
              history | grep -i "$1" | tail
              return 0
          }
        
      • Set the hostnane, timezone and local

        Set HOSTNAME if ~/etc/hostname exists

           if [ -e ${HOME}/etc/hostname ]; then
               export HOSTNAME=`cat ${HOME}/etc/hostname`
           elif [ -e /etc/hostname ]; then
               export HOSTNAME=`cat /etc/hostname`
           else
               export HOSTNAME="unknown"
           fi
        
           # Set timezone if ~/bin/tz.sh exists
        
           # NEW, if neeeed?
           #
           # https://linuxize.com/post/how-to-set-or-change-timezone-in-linux/
           #
           # OLD:
           #
           # if [ -e ~/bin/tz.sh ]; then
           #     echo Setting timezone.
           #     source ~/bin/tz.sh # should be in ~/rc.local
           # fi
        
           # STILL NEEDED?
           #
           # Set local for numeric output
           LOCAL=`locale -a | grep -i en_us | head -1`
           if [[ "$LOCAL" != "" ]]; then export LC_NUMERIC="$LOCAL"; fi
        
        • Set up ssh agent

        Add keys by hand if needed via

           ssh-add ~/.ssh/id_*
        
           if [ -e ~/bin/sshagent ]; then
               source ~/bin/sshagent
           fi
        
        • Copy stdin to clipboard
           if [[ "$OSTYPE" == "linux-gnu"* ]]; then
             alias 2clip='xclip -selection c'
             alias 3clip='printf %s "$(cat /dev/stdin)" | xclip -selection c'  # no final \n
           elif [[ "$OSTYPE" == "darwin"* ]]; then
             alias 2clip='pbcopy'
           fi
        
      • Path functions

        These path* functions add and remove elements to PATH. They insure that entries are unique. They allow you to place a path first or last in the order (e.g. so that ~/bin comes before /usr/local/bin)

          pathrm() {
              # remove an item from the path
              if [ -d "$1" ]; then
                  removeThis="`echo $1 | sed -e 's#/#\\\/#'g`"
                  newPath=`echo $PATH | awk -v RS=: -v ORS=: "/$removeThis/ {next} {print}" | sed 's/[ :]*$//g'`
                  export PATH=$newPath
              fi
          }
        
        
          pathlast() {
              # add path to the end if not there
              if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
                  export PATH="${PATH:+"$PATH:"}$1"
              fi
          }
        
        
          pathfirst() {
              # add path to the front if not there
              if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
                  export PATH="$1:${PATH}"
              fi
          }
        
          path() {
            # show path
            echo $PATH
          }
        
          # show path, one entry per line
          alias pathcat="echo $PATH | sed 's/:/\n/g'"
        
        
          # Be sure we have a few specific paths if they exist
        
          pathlast $HOME/bin
          pathlast /usr/local/bin
          pathlast /opt/bin
        
        • source ~/rc.local/*.sh to do non-general bash setup

        Execute any .sh files in ~/rc.local/*.sh

        This allows me to split out setup for aliases and commands that only get used on certian systems or in certian contexts (git, go, mail, blog..)

        
           if [ -d ${HOME}/rc.local ]; then
               for rcfile in $(find ${HOME}/rc.local -name \*.sh); do
                   debug running localrc ${rcfile}
                   source ${rcfile}
               done
           fi
        
      • Invoking emacs

           alias emacs='setsid emacs'
        
           # from http://stuff-things.net/2014/12/16/working-with-emacsclient/
        
           if [ -z "$SSH_CONNECTION" ]; then
               export EMACSCLIENT=emacsclient
               alias ec="$EMACSCLIENT -c -n"
               export EDITOR="$EMACSCLIENT -c"
               export ALTERNATE_EDITOR=""
           else
               export EDITOR=$(type -P emacs || type -P ed)
           fi
           export VISUAL=$EDITOR
        
        • ls aliases
        
           # coloring for ls functions
        
           if [[ "$OSTYPE" == "linux-gnu" ]]; then
               color="--color";
           else
               color=""
           fi
        
           BIN_LS=/bin/ls
           alias ls='   ls '$color' -a'
        
        
           # Long List Reverse Tail
           function llrt() { ls -lrt $color ${*:-}; }
        
           # Long List Time
           function llt() { ls -lt $color ${*:-}; }
        
           # Long List Time, More
           function lltm() { ls -lt $color ${*:-} | more; }
        
           # Long List Time, Less
           function lltl() { ls -alt $color ${*:-} | more; }
        
           # Long List Time, Head
           function llth() { ls -lt $color ${*:-} | head; }
        
           # Long List Time, Tail
           function lltt() { ls -alt $color ${*:-} | tail; }
        
        
           # List Sort Size
           function lss() { ls -a1s $color ${*:-} | sort -n; }
        
           # List Sort Size Reverse
           function lssr() { ls -a1s $color ${*:-} | sort -nr; }
        
      • Aliases for viewing the newest file in a directoy

        
           function nf ()
           {
               # list the newest file in the current directory
               NF=`find ${1:-.} -maxdepth 1 -type f -print0 | xargs -0 ls -1t  |  head -1;`;
               echo ${NF:-/dev/null} | sed "s/ /\\\ /g"
           }
        
        
           # new file tail file
           function nftf { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail -f  ; }
        
           # new file tail
           function nft { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail  ; }
        
           # new file head
           function nfh { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs head  ; }
        
           # new file less
           function nfl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs less  ; }
        
           # new file cat
           function nfc { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs cat  ; }
        
           # new file ls
           function nfls { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs ls -A1t  ; }
        
           # new file ls -l
           function nflsl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs
           ls -Atl  ; }
        
        • viewing files

        Notes on setting up file/mime type associations can be found at

        https://unix.stackexchange.com/questions/77136/xdg-open-default-applications-behavior

        So, to make emacs (what else?) the default for MIME type text/plain ...

           locate -r 'emacs.*\.desktop'
           xdg-mime default emacs.desktop text/plain
        
           if [[  ! -z "`which xdg-open`" ]]; then alias open='xdg-open '; fi
        
        • All done
           touch $HOME/.bashrc-ran
           debug ".bashrc done"
        
  • 1.2 - My .bashrc - tangle output for computers

    Here is the actual .bashrc file for bash(1) to consume

    #PROG=`basename "$0" | tr -d '\n'`  # normal setting
    PROG="bashrc" # setting for bashrc due to errors
    
    function info()  { echo ${PROG}\: info: "$@" 1>&2; }
    function warn()  { echo ${PROG}\: warning: "$@" 1>&2; }
    function error() { echo ${PROG}\: error: "$@" 1>&2; }
    function debug() { [[ -v DEBUG ]] && echo ${PROG}\: debug: "$@" 1>&2 || true ; }
    function die()   { echo ${PROG}\: fatal: "$@" 1>&2 && exit 1; }
    
    export PS1="\# [\t] \u@\h \W/ $ "
    
    alias rm='  rm -i'
    alias ag='  alias | grep -i'
    alias eg='  printenv | grep -i'
    alias hg='  history | grep -i'
    alias ht='  history | tail'
    alias fpg=' find . -print | egrep -i'
    alias egi=' egrep -i'
    alias psg=' /bin/ps -auxww | grep'
    alias p8='  ping -c 3 8.8.8.8' # make sure routing works
    alias pp='  ping -c 3 port111.com' # make sure dns and routing work
    alias locate='locate -r'
    
    function dirl() {
        # "DIR"ectory "L"ist directory stack, one per line
        # Usage: dirl
    
        for d in `dirs`; do echo $d; done
    }
    
    function dirc() {
        # "DIR"ectory "C"onnect - connect to directory and list stack
        # Usage: dirc [DIR
    
        pushd ${1:-"$HOME"} > /dev/null
        dirl
    }
    
    function dirp () {
        # "DIR"ectory "P"op - pop N entries off the directory stack
        # Usage: dirp [N]
        #
        # OLD:
        #   alias  dirp='popd > /dev/null && dirl'
        for i in `seq ${1:-"1"}`; do
            debug "dirl: popd. i is $i"
            popd > /dev/null;
        done
        dirl
    }
    
    alias cd=pushd
    
    function gf() {
    # grep-find: grep for patterins in files via find
    #
    # Usage: gf patterns [files [days]]
    #
    # Examples:
    #   gf findMeAnywhere
    #   gf findMeInTextFiles '*.txt'
    #   gf findMeInTextFiles .txt
    #   gf BEGIN\|END .org 30
    
    local files=""
    local days="365"
    
    set -o noglob
    
    # First arg is pattern(s) for egrep
    if [ -z ${1+x} ]; then
      echo 'gf needs string(s) to search for ' 1>&2
      info "Usage: gf patterns [files [days]]"
      return 1
    fi
    
    # Second arg (if present) is files for find.  No globbing, so "*.txt" OK
    if [ ! -z ${2+x} ]; then
      if [[ "$2" =~ ^\. ]]; then
        # Special case: treat ".foo" as "*.foo"
        # Avoids needing to quote on command line
        files="-name *$2"
      else
        files="-name ${2}"
      fi
    fi
    
    # $3 (if present) is find -mtime arg, default 365
    if [ ! -z ${3+x} ]; then
      days="${3}"
    fi
    
    # set -x
    find . -type f -mtime -${days} $files -exec egrep --color -H -i "${1}" \{\} \;
    # set +x
    
    set +o noglob
    }
    
    # Preserve history across sesssions
    #
    # http://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
    #
    export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
    export HISTSIZE=100000                   # big big history
    export HISTFILESIZE=100000               # big big history
    shopt -s histappend                      # append to history, don't overwrite it
    
    # Save and reload the history after each command finishes
    export PROMPT_COMMAND="history -a; history -c; history -r;"
    
    
    function hgt() {
        # hgt == "history grep (for arg) tail"
        #echo "Histroy Grep tail"
    
        if [ -z ${1+x} ]; then
            echo 'hgt needs an argument' 1>&2
            return 1
        fi
    
        history | grep -i "$1" | tail
        return 0
    }
    
    if [ -e ${HOME}/etc/hostname ]; then
        export HOSTNAME=`cat ${HOME}/etc/hostname`
    elif [ -e /etc/hostname ]; then
        export HOSTNAME=`cat /etc/hostname`
    else
        export HOSTNAME="unknown"
    fi
    
    # Set timezone if ~/bin/tz.sh exists
    
    # NEW, if neeeed?
    #
    # https://linuxize.com/post/how-to-set-or-change-timezone-in-linux/
    #
    # OLD:
    #
    # if [ -e ~/bin/tz.sh ]; then
    #     echo Setting timezone.
    #     source ~/bin/tz.sh # should be in ~/rc.local
    # fi
    
    # STILL NEEDED?
    #
    # Set local for numeric output
    LOCAL=`locale -a | grep -i en_us | head -1`
    if [[ "$LOCAL" != "" ]]; then export LC_NUMERIC="$LOCAL"; fi
    
    if [ -e ~/bin/sshagent ]; then
        source ~/bin/sshagent
    fi
    
    if [[ "$OSTYPE" == "linux-gnu"* ]]; then
      alias 2clip='xclip -selection c'
      alias 3clip='printf %s "$(cat /dev/stdin)" | xclip -selection c'  # no final \n
    elif [[ "$OSTYPE" == "darwin"* ]]; then
      alias 2clip='pbcopy'
    fi
    
    pathrm() {
        # remove an item from the path
        if [ -d "$1" ]; then
            removeThis="`echo $1 | sed -e 's#/#\\\/#'g`"
            newPath=`echo $PATH | awk -v RS=: -v ORS=: "/$removeThis/ {next} {print}" | sed 's/[ :]*$//g'`
            export PATH=$newPath
        fi
    }
    
    
    pathlast() {
        # add path to the end if not there
        if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
            export PATH="${PATH:+"$PATH:"}$1"
        fi
    }
    
    
    pathfirst() {
        # add path to the front if not there
        if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
            export PATH="$1:${PATH}"
        fi
    }
    
    path() {
      # show path
      echo $PATH
    }
    
    # show path, one entry per line
    alias pathcat="echo $PATH | sed 's/:/\n/g'"
    
    
    # Be sure we have a few specific paths if they exist
    
    pathlast $HOME/bin
    pathlast /usr/local/bin
    pathlast /opt/bin
    
    if [ -d ${HOME}/rc.local ]; then
        for rcfile in $(find ${HOME}/rc.local -name \*.sh); do
            debug running localrc ${rcfile}
            source ${rcfile}
        done
    fi
    
    alias emacs='setsid emacs'
    
    # from http://stuff-things.net/2014/12/16/working-with-emacsclient/
    
    if [ -z "$SSH_CONNECTION" ]; then
        export EMACSCLIENT=emacsclient
        alias ec="$EMACSCLIENT -c -n"
        export EDITOR="$EMACSCLIENT -c"
        export ALTERNATE_EDITOR=""
    else
        export EDITOR=$(type -P emacs || type -P ed)
    fi
    export VISUAL=$EDITOR
    
    # coloring for ls functions
    
    if [[ "$OSTYPE" == "linux-gnu" ]]; then
        color="--color";
    else
        color=""
    fi
    
    BIN_LS=/bin/ls
    alias ls='  ls '$color' -a'
    
    
    # Long List Reverse Tail
    function llrt() { ls -lrt $color ${*:-}; }
    
    # Long List Time
    function llt() { ls -lt $color ${*:-}; }
    
    # Long List Time, More
    function lltm() { ls -lt $color ${*:-} | more; }
    
    # Long List Time, Less
    function lltl() { ls -alt $color ${*:-} | more; }
    
    # Long List Time, Head
    function llth() { ls -lt $color ${*:-} | head; }
    
    # Long List Time, Tail
    function lltt() { ls -alt $color ${*:-} | tail; }
    
    
    # List Sort Size
    function lss() { ls -a1s $color ${*:-} | sort -n; }
    
    # List Sort Size Reverse
    function lssr() { ls -a1s $color ${*:-} | sort -nr; }
    
    function nf ()
    {
        # list the newest file in the current directory
        NF=`find ${1:-.} -maxdepth 1 -type f -print0 | xargs -0 ls -1t  |  head -1;`;
        echo ${NF:-/dev/null} | sed "s/ /\\\ /g"
    }
    
    
    # new file tail file
    function nftf { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail -f  ; }
    
    # new file tail
    function nft { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail  ; }
    
    # new file head
    function nfh { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs head  ; }
    
    # new file less
    function nfl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs less  ; }
    
    # new file cat
    function nfc { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs cat  ; }
    
    # new file ls
    function nfls { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs ls -A1t  ; }
    
    # new file ls -l
    function nflsl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs
    ls -Atl  ; }
    
    if [[  ! -z "`which xdg-open`" ]]; then alias open='xdg-open '; fi
    
    touch $HOME/.bashrc-ran
    debug ".bashrc done"
    
    • 1.3 - My .bashrc - The org mode source file

    Here is the .bash.org input file

    #+title: .bashrc
    #+date: <2020-12-06 03:13:07 Sunday>
    #+author: George M Jones
    #+email: gmj@pobox.com
    #+options: ':nil *:t -:t ::t <:t H:3 \n:nil ^:nil arch:headline
    #+options: author:t broken-links:nil c:nil creator:nil
    #+options: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:2
    #+options: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t
    #+options: timestamp:t title:t toc:t todo:t |:t
    #+language: en
    #+select_tags: export
    #+exclude_tags: noexport
    #+creator: Emacs 28.0.50 (Org mode 9.4)
    
    
    * About this .bashrc file
    ** Intro
       This is George Jones' .bashrc file as an literate programming file in
       emacs org mode using babel blocks.
    
    ** To generate the actual .bashrc
       This .bashrc.org file must be processed to generate the actual
       .bashrc It can be processed interactively to generate .bashrc via
       org-babel-tangle-file or from the command line as
    
       #+begin_example
      emacs --batch --eval "(require 'org)" --eval '(org-babel-tangle-file ".bashrc.org")'
       #+end_example
    
       Permanent changes must be made to the .org version, as the actual
       .bashrc will be overwritten when the .org version is "compiled"
    
    ** Debugging
    
      In most bash files I do
    
      #+begin_example
      set -e
      set -u
      #+end_example
    
      but there are problems setting it in .bashrc.   An error then causes
      you to exit the shell entirely (not what you want), and there are
      several constructs that cause warnings due to undefined variables
      (these can/probably should be fixd)
    
      Set
    
      #+begin_example
      export DEBUG=1
      #+end_example
    
      to enable debugging output from the debug helper function.
    
    * The actual executable .bashrc
    ** Helper functions
       I define a few syslog-ish helper functions to print warnings,
       errors, etc.
    
       #+begin_src shell :tangle .bashrc :noweb no-export
      #PROG=`basename "$0" | tr -d '\n'`  # normal setting
      PROG="bashrc" # setting for bashrc due to errors
    
      function info()  { echo ${PROG}\: info: "$@" 1>&2; }
      function warn()  { echo ${PROG}\: warning: "$@" 1>&2; }
      function error() { echo ${PROG}\: error: "$@" 1>&2; }
      function debug() { [[ -v DEBUG ]] && echo ${PROG}\: debug: "$@" 1>&2 || true ; }
      function die()   { echo ${PROG}\: fatal: "$@" 1>&2 && exit 1; }
       #+end_src
    
    ** Set a reasonable default prompt
    
       Here I set a reasonable default prompt that includes timestamp,
       username, host and current directory:
    
     #+begin_src shell :tangle .bashrc :noweb no-export
    export PS1="\# [\t] \u@\h \W/ $ "
     #+end_src
    
    ** Misc aliases
    
       Define various aliases that I use
    
       #+begin_src shell :tangle .bashrc :noweb no-export
      alias rm='    rm -i'
      alias ag='    alias | grep -i'
      alias eg='    printenv | grep -i'
      alias hg='    history | grep -i'
      alias ht='    history | tail'
      alias fpg='   find . -print | egrep -i'
      alias egi='   egrep -i'
      alias psg='   /bin/ps -auxww | grep'
      alias p8='    ping -c 3 8.8.8.8' # make sure routing works
      alias pp='    ping -c 3 port111.com' # make sure dns and routing work
      alias locate='locate -r'
       #+end_src
    
    ** cd commands that use/print the directory stack
    
       These aliases support pushd/popd/dirs like functionality while
       listing one directory per line
    
       I like to keep a "stack" of directories so I can work on one thing
       then "pop" back to where I was.   =pushd= an =popd= support this,
       and =dirs= lists the directories, but I prefer to have them listed
       one per line.
    
    
       #+begin_src shell :tangle .bashrc :noweb no-export
      function dirl() {
          # "DIR"ectory "L"ist directory stack, one per line
          # Usage: dirl
    
          for d in `dirs`; do echo $d; done
      }
    
      function dirc() {
          # "DIR"ectory "C"onnect - connect to directory and list stack
          # Usage: dirc [DIR
    
          pushd ${1:-"$HOME"} > /dev/null
          dirl
      }
    
      function dirp () {
          # "DIR"ectory "P"op - pop N entries off the directory stack
          # Usage: dirp [N]
          #
          # OLD:
          #   alias  dirp='popd > /dev/null && dirl'
          for i in `seq ${1:-"1"}`; do
              debug "dirl: popd. i is $i"
              popd > /dev/null;
          done
          dirl
      }
    
      alias cd=pushd
       #+end_src
    
    ** Misc functions
    
       #+begin_src shell :tangle .bashrc :noweb no-export
    
      function gf() {
      # grep-find: grep for patterins in files via find
      #
      # Usage: gf patterns [files [days]]
      #
      # Examples:
      #   gf findMeAnywhere
      #   gf findMeInTextFiles '*.txt'
      #   gf findMeInTextFiles .txt
      #   gf BEGIN\|END .org 30
    
      local files=""
      local days="365"
    
      set -o noglob
    
      # First arg is pattern(s) for egrep
      if [ -z ${1+x} ]; then
        echo 'gf needs string(s) to search for ' 1>&2
        info "Usage: gf patterns [files [days]]"
        return 1
      fi
    
      # Second arg (if present) is files for find.  No globbing, so "*.txt" OK
      if [ ! -z ${2+x} ]; then
        if [[ "$2" =~ ^\. ]]; then
          # Special case: treat ".foo" as "*.foo"
          # Avoids needing to quote on command line
          files="-name *$2"
        else
          files="-name ${2}"
        fi
      fi
    
      # $3 (if present) is find -mtime arg, default 365
      if [ ! -z ${3+x} ]; then
        days="${3}"
      fi
    
      # set -x
      find . -type f -mtime -${days} $files -exec egrep --color -H -i "${1}" \{\} \;
      # set +x
    
      set +o noglob
      }
     #+end_src
    
    ** Bash history functions and settings
       #+begin_src shell :tangle .bashrc :noweb no-export
    
      # Preserve history across sesssions
      #
      # http://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
      #
      export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
      export HISTSIZE=100000                   # big big history
      export HISTFILESIZE=100000               # big big history
      shopt -s histappend                      # append to history, don't overwrite it
    
      # Save and reload the history after each command finishes
      export PROMPT_COMMAND="history -a; history -c; history -r;"
    
    
      function hgt() {
          # hgt == "history grep (for arg) tail"
          #echo "Histroy Grep tail"
    
          if [ -z ${1+x} ]; then
              echo 'hgt needs an argument' 1>&2
              return 1
          fi
    
          history | grep -i "$1" | tail
          return 0
      }
       #+end_src
    
    ** Set the hostnane, timezone and local
       Set HOSTNAME if ~/etc/hostname exists
    
       #+begin_src shell :tangle .bashrc :noweb no-export
       if [ -e ${HOME}/etc/hostname ]; then
           export HOSTNAME=`cat ${HOME}/etc/hostname`
       elif [ -e /etc/hostname ]; then
           export HOSTNAME=`cat /etc/hostname`
       else
           export HOSTNAME="unknown"
       fi
    
       # Set timezone if ~/bin/tz.sh exists
    
       # NEW, if neeeed?
       #
       # https://linuxize.com/post/how-to-set-or-change-timezone-in-linux/
       #
       # OLD:
       #
       # if [ -e ~/bin/tz.sh ]; then
       #     echo Setting timezone.
       #     source ~/bin/tz.sh # should be in ~/rc.local
       # fi
    
       # STILL NEEDED?
       #
       # Set local for numeric output
       LOCAL=`locale -a | grep -i en_us | head -1`
       if [[ "$LOCAL" != "" ]]; then export LC_NUMERIC="$LOCAL"; fi
       #+end_src
    
    ** Set up ssh agent
       Add keys by hand if needed via
    
       #+begin_example
       ssh-add ~/.ssh/id_*
       #+end_example
    
       #+begin_src shell :tangle .bashrc :noweb no-export
       if [ -e ~/bin/sshagent ]; then
           source ~/bin/sshagent
       fi
       #+end_src
    
    ** Copy stdin to clipboard
    
       #+begin_src shell :tangle .bashrc :noweb no-export
       if [[ "$OSTYPE" == "linux-gnu"* ]]; then
         alias 2clip='xclip -selection c'
         alias 3clip='printf %s "$(cat /dev/stdin)" | xclip -selection c'  # no final \n
       elif [[ "$OSTYPE" == "darwin"* ]]; then
         alias 2clip='pbcopy'
       fi
       #+end_src
    
    ** Path functions
      These path* functions add and remove elements to PATH.
      They insure that entries are unique.
      They allow you to place a path first or last in the order (e.g.
      so that =~/bin= comes before =/usr/local/bin=)
    
      #+begin_src shell :tangle .bashrc :noweb no-export
      pathrm() {
          # remove an item from the path
          if [ -d "$1" ]; then
              removeThis="`echo $1 | sed -e 's#/#\\\/#'g`"
              newPath=`echo $PATH | awk -v RS=: -v ORS=: "/$removeThis/ {next} {print}" | sed 's/[ :]*$//g'`
              export PATH=$newPath
          fi
      }
    
    
      pathlast() {
          # add path to the end if not there
          if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
              export PATH="${PATH:+"$PATH:"}$1"
          fi
      }
    
    
      pathfirst() {
          # add path to the front if not there
          if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
              export PATH="$1:${PATH}"
          fi
      }
    
      path() {
        # show path
        echo $PATH
      }
    
      # show path, one entry per line
      alias pathcat="echo $PATH | sed 's/:/\n/g'"
    
    
      # Be sure we have a few specific paths if they exist
    
      pathlast $HOME/bin
      pathlast /usr/local/bin
      pathlast /opt/bin
      #+end_src
    
    ** source ~/rc.local/*.sh to do non-general bash setup
       Execute any .sh files in ~/rc.local/*.sh
    
       This allows me to split out setup for aliases and commands that
       only get used on certian systems or in certian contexts (git, go,
       mail, blog..)
    
       #+begin_src shell :tangle .bashrc :noweb no-export
    
       if [ -d ${HOME}/rc.local ]; then
           for rcfile in $(find ${HOME}/rc.local -name \*.sh); do
               debug running localrc ${rcfile}
               source ${rcfile}
           done
       fi
       #+end_src
    
    ** Invoking emacs
       #+begin_src shell :tangle .bashrc :noweb no-export
       alias emacs='setsid emacs'
    
       # from http://stuff-things.net/2014/12/16/working-with-emacsclient/
    
       if [ -z "$SSH_CONNECTION" ]; then
           export EMACSCLIENT=emacsclient
           alias ec="$EMACSCLIENT -c -n"
           export EDITOR="$EMACSCLIENT -c"
           export ALTERNATE_EDITOR=""
       else
           export EDITOR=$(type -P emacs || type -P ed)
       fi
       export VISUAL=$EDITOR
       #+end_src
    
    ** ls aliases
       #+begin_src shell :tangle .bashrc :noweb no-export
    
       # coloring for ls functions
    
       if [[ "$OSTYPE" == "linux-gnu" ]]; then
           color="--color";
       else
           color=""
       fi
    
       BIN_LS=/bin/ls
       alias ls='   ls '$color' -a'
    
    
       # Long List Reverse Tail
       function llrt() { ls -lrt $color ${*:-}; }
    
       # Long List Time
       function llt() { ls -lt $color ${*:-}; }
    
       # Long List Time, More
       function lltm() { ls -lt $color ${*:-} | more; }
    
       # Long List Time, Less
       function lltl() { ls -alt $color ${*:-} | more; }
    
       # Long List Time, Head
       function llth() { ls -lt $color ${*:-} | head; }
    
       # Long List Time, Tail
       function lltt() { ls -alt $color ${*:-} | tail; }
    
    
       # List Sort Size
       function lss() { ls -a1s $color ${*:-} | sort -n; }
    
       # List Sort Size Reverse
       function lssr() { ls -a1s $color ${*:-} | sort -nr; }
    
       #+end_src
    
    ** Aliases for viewing the newest file in a directoy
       #+begin_src shell :tangle .bashrc :noweb no-export
    
       function nf ()
       {
           # list the newest file in the current directory
           NF=`find ${1:-.} -maxdepth 1 -type f -print0 | xargs -0 ls -1t  |  head -1;`;
           echo ${NF:-/dev/null} | sed "s/ /\\\ /g"
       }
    
    
       # new file tail file
       function nftf { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail -f  ; }
    
       # new file tail
       function nft { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs tail  ; }
    
       # new file head
       function nfh { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs head  ; }
    
       # new file less
       function nfl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs less  ; }
    
       # new file cat
       function nfc { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs cat  ; }
    
       # new file ls
       function nfls { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs ls -A1t  ; }
    
       # new file ls -l
       function nflsl { NF=`nf ${1:-.}`; debug NF $NF;  echo "$NF" | xargs
       ls -Atl  ; }
       #+end_src
    
    ** viewing files
       Notes on setting up file/mime type associations can be found at
    
       https://unix.stackexchange.com/questions/77136/xdg-open-default-applications-behavior
    
       So, to make emacs (what else?) the default for MIME type
       =text/plain= ...
    
       #+begin_example
       locate -r 'emacs.*\.desktop'
       xdg-mime default emacs.desktop text/plain
       #+end_example
    
       #+begin_src shell :tangle .bashrc :noweb no-export
       if [[  ! -z "`which xdg-open`" ]]; then alias open='xdg-open '; fi
       #+end_src
    
    ** All done
       #+begin_src shell :tangle .bashrc :noweb no-export
       touch $HOME/.bashrc-ran
       debug ".bashrc done"
       #+end_src
    

    Congratulations for reading this far. Go forth and write literate programs.

    Posts 38 of #100DaysToOffload https://100daystooffload.com/.

PUBLISHED 1.18 To self host or not to self host, that is the question? 100DaysToOffloadblogginglife {#2022-03-22}

Shelving the self hosting for a while. Just gonna push the static blog up to my 20 year old Hurricane Electric shell account. URL redirection is a marvelous thing. This is not your fathers CNAME record.

After my raspberry pi died (when I unplugged it from the new UPS that was supposed to keep it up), and I manifestly failed for 2 weeks to allocate the time to rebuild it, I decided to let other people run the system and network. While it's fun/retro to go back to doing all my own systems admin, networking and security work on top of a day job that has me on a vertical learning curve with systems, networking, security, databases, programming etc at the end of the day, literally at the end of the day, I just don't have it in me to sit in front of a computer and do more computer stuff.

So I will let the nice people at Hurricane Electric with whom I've had an a shell account for ~20 years run the system, the web server and the network (they are really good at that). Every time I send mail to support@he.net I get what seems like a genuinely interested geek replying.

Division of labor. What a concept.

I've got other things in life that need attention and time now (and some world events that are sucking up attention)

#17 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 1.19 EmacsConf 2022 - Day 1 100DaysToOffloademacs {#2022-12-03}

So, day 1 of EmacsConf 2022 is in the books. Another eclectic mash up of everything from the "Emacs Buddy Initiative" to a geeky dive on how to Edit live Jupyter notebook cells with Emacs (no, really, I like editing everything in browser text boxes ... not!) to a serious proposal for a new economic model for software: Maintaining the Maintainers: Attribution as an Economic Model for Open Source

Thanks to the organizers (Sacha Chua and friends) the conference came off almost without a glitch, run entirely on open source software (Big Blue Button, IRC, etc.). Notepads, live Q&A, pre-recorded talks, most of them already up, captioned with transcripts, for free.

Things I'm probably going to look into as a result of this are the Tree-sitter beyond syntax highlighting for syntax-aware editing of python, bash, etc., the logistics of Attending and organizing Emacs meetups (who knew there were people using Org mode tables to analyze real-estate deals, tracking and visualizing health data, or envisioning GNUS as the core of a system to replace Microsoft, Apple and Google ?), and hooking Emacs to edit text boxes (think code in Jupyter Notebooks, huge SQL blocks in BigQuery web console, JIRA and Confluence forms, etc.)

Looking forward to day 2.

#37 of #100DaysToOffload take 2.1, https://100daystooffload.com/

WIP 1.20 Thanks Sacha ! 100DaysToOffloademacs {#2023-12-09}

Ode to emacsconf 2023

All the world’s a text, And all the men and women merely editors; They have their reads and their writes, And Emacs in its time plays many parts...

With apologies to William Shakespeare and actual odes.

{{< figure src="/ox-hugo/emacsconf2015.png" caption="Figure 5: \"2015-02-02 Making a virtual Emacs conference happen -- index card #emacs #organizing-people #conference #planning #questions\" by sachac is licensed under CC BY 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by/2.0/?ref=openverse." width="600px" >}}

Emacs is a tangent to life.

We use Emacs around the edges of life. It's adjacent to everything we do: our work, our finances, our art, and, oh yea, our code too.

Our life is text. Emacs is a text editor. Emacs itself is text. We edit Emacs with Emacs. "All the world's a text...."

Emacs gives us a (false?) sense of control. It's shiny object. Using it turns parts of our lives into encounters mediated by a shiny object. Or maybe it just leads us down rabbit-holes when we should be paying the bills.

Emacs is a community. A worldwide diapora of isolated geeks. It is a form of existential self expression. It can be cathartic.

We share all this once a year at https://emacsconf.org/ emacsconf, thanks to Sacha Chua and friends.

Thanks, Sacha.

"Now wait, how was I planing to tweak that capture template? ...."

#51 of #100DaysToOffload take 3.1, https://100daystooffload.com/

TODO 1.21 Palo Alto Firewalls {#palo-alto-firewalls}

2 Cybersecurity cybersecuritysecuityprivacyperspective {#cybersecurity}

PUBLISHED 2.1 Privacy Technology privacysecurityperspective {#2021-12-18-privacy}

These are a few perspectives on privacy prompted by initial thoughts on the Usenix PEPR '22 Call for Participation. I may or may not flesh this out as a submission. If I do, it might take a totally different form, this being a first reaction.

{{< figure src="/ox-hugo/pencil_and_paper.jpeg" caption="Figure 6: \"Privacy Technology for the 21st Centry\" by George Jones is licensed under CC BY 2.0" width="400px" >}}

First, here are some work experiences that inform my perspective. Professional life began for me at CompuServe in 1985. In many ways CompuServe invented the online world. Long stories there, told elsewhere. The long strange trip has taken me through work with Usenet, UUNET, the IETF, SANS & The Center for Internet Security, the IETF, MITRE, CMU=/=CERT, AOL, Amazon=/=AWS, and currently Palo Alto Networks. Security and privacy have been a large part of my life for 25 years.

My personal response to questions of privacy has been to go backwards. I journal. On paper. Google has no idea. I quit Facebook in 2016 when it got political. I actually deleted the account (along with Spotify) a couple years ago after I sent a Facebook messenger note to my son saying that in childhood I loved Julie Andrews music and Spotify, without my input, started playing Julie Andrews. I've stopped posting content on most large commercial platforms over concerns about monetization, aggregation and corporate self-interest driving what they do with it. I currently self-host my blog and git repo on a raspberry pi. I share publicly what I want to share. The rest is not online. It's in my head or on paper.

To be sure I use some of the current tools available to try to preserve some online privacy: Signal, Proton Mail, Tor, VPNs, etc. and while I laud academic, commercial and governmental efforts to improve privacy, I think we need to begin by admitting that the problems are not technical. They are social. They are human.

PUBLISHED 2.2 Thoughts on the OODA loop and falling out of a canoe outdoorsSOCOODA {#ooda-loop-and-getting-wet}

In my never ending quest for synthesis, this post combines thoughts on the OODA loop and falling out of a canoe twice this weekend in rapids on the Shenandoah river. There is a connection. Maybe.

If you want to see the full trip report, pictures, etc. go here Things that fall in the river get wet. If you're interested in how this relates to the OODA loop or, better, if you have experience/thoughts on applying the OODA loop to operational cybersecurity settings, read on (and comment !)

{{< figure src="/ox-hugo/paddling.jpg" caption="Figure 7: On the river during calm between crisis events" width="400px" >}}

2.2.1 The OODA Loop {#the-ooda-loop}

The OODA loop is a concept cybersecurity has borrowed from the US Air Force. "OODA" stands for "Observe, Orient, Decide, Act". The OODA loop began as a very fighter-pilot-centric view of a problem space. I always think of Snoopy and the Red Barron. Snoopy observes the Red Barron at a distance, orients his Sopwith-Camel towards the Red Barron, decides to fire, and then acts by firing-away. Then repeat the OODA loop. Observe: what was the effect of your action (the Red Barron went down in flames, or you missed and now he's on your tail)...

2.2.2 The OODA Loop and falling out of a canoe {#the-ooda-loop-and-falling-out-of-a-canoe}

The OODA loop parallels my decision making process in the rapids this weekend. In one of our two crisis events I observed the other canoe flip in the rapids ahead. I oriented my canoe towards shore. I decided to grab a tree root to buy time to sit and contemplate options. I acted by grabbing the tree root. We flipped due to the strong current. REPEAT. I observed that we were in the water 10 or 20 yards (9 to 18 meters) from the start of the rapids. I oriented myself towards shore. I decided to swim to shore at all costs (loosing the canoe and all our gear) rather than float the rapids in life jackets. I acted by swimming to shore. REPEAT. I observed that we were safe on shore without our boat, gear or friends. I oriented myself downstream. I decided to walk in search of boat, gear and friends. I acted by walking...

2.2.3 Where does the OODA loop work well? {#where-does-the-ooda-loop-work-well}

The OODA loop seems to be a good model for rapidly changing situations where the personal stakes to the actor are high, the actor is receiving relevant information in a timely fashion and has the ability to decide on appropriate action and execute in a very short timescale. There were elements of this in Bill Cheswick's classic An Evening with Berferd and Cliff Stoll's The Cuckoo's Egg, but I am wondering how many of these conditions apply, to, say the modern SOC?

2.2.4 Does the OODA loop work in SOCs? {#does-the-ooda-loop-work-in-socs}

How do the characteristics of crisis situations such has that described above or a fighter pilot in dogfight map to the modern SOC? Does a SOC have a rapidly changing situation? Probably. Are there personal stakes for the actor (analyst)? It depends. Is it just "work my shift and go home after the hand-off"? Are the actors (analysts) receiving relevant information in a timely fashion? Or are they waiting for a weeks-long (months-long?) approval process for the ingest of needed data, the provisioning of enough storage and compute power to run the queries they need? Are they empowered to take action in a short timescale? Or are there three levels of management approval needed and reports to be written before any action can taken? Can they take machines offline, implement blocks, etc? Even if it impacts production? Can they observe, orient, decide and act, or is it time to put your feet up, hope for the best and float through the rapids?

Your thoughts? Experiences?

Days 17 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 2.3 Bear attacks, no-win situations and cybersecurity bears {#cybersecurity-and-bears}

I spend a good amount of time hiking in Shenandoah National Park and surrounding areas. I've seen quite a few #bears and I've followed one down the trail. I've been growled at by a mother bear when I unknowingly came between her and her cubs. This is going somewhere related to #cybersecurity. I promise.

You can't outrun a bear. Climbing a tree won't help. If a bear actually decides to attack you, the odds are not in your favor, but fortunately they almost never attack. The old joke goes "I don't have to outrun the bear, I just have to outrun you" because, presumably the bear will catch your slower partner, stop, and not bother you when you both decide to run for it in violation of bear encounter best practices.

This hints at any number of cybersecurity principals:

  • Know your threat model.
  • Know and follow best practices.
  • Don't let fear (or adrenaline) dictate your response.
  • Know and practice situationally appropriate responses (Grizzlies: if attacked play dead. Black Bear: if attacked fight for your life)
  • Be prepared (bear spray, first aid kit)
  • Practice deterrence (make noise, travel in groups)
  • Prevention costs less than recovery. By far.
  • And, of course, make sure the other guy is an easier target. Run faster if you run. Apply patches, have good backups (Hello, ransomware !), have layers of defense, decoys, monitoring, DLP, practice threat hunting, etc. For a decade or so, I've been reflecting on the fact that defensive cybersecurity is a loosing igame. The red team (attackers) always win. I don't like no-win situations.

There's a lesson here:

Don't feed the bears : They become habituated to humans, loose

their inhibition, become a nuisance and sometimes have to be
relocated or killed. Nobody wins.

OK, not that lesson. Lessons like:

Follow best practices : Following best practices CAN help avoid

problems. Not following best practices WILL invite problems.

Have an incident response plan : If you see a bad thing

happening, if it is coming straight for you, what do you do?

Line up the right resources : Do you know how to triage

wounds? Do you have a cell phone? Are you in range of cell
towers? If not, do you have a SPOT to call for help? Where is
the nearest hospital? Are you prepared to shelter in place if
need be?

It's not just you : Feeding the bears or failing to store food

properly might result in perfectly good backcountry shelters
being torn down. And here we are, 20 or so years after it
became clear that that allowing spoofed packets out of your
network enables #DDoS #attacks and we **still** do not have
widespread adoption of reverse path forwarding
checks. **Please** stop spoofed packets at your border !

So it maybe true that few people win in the face of an actual attack, but, it turns out, there are still good reasons to play the game.

2.3.1 For Further Reading {#for-further-reading}

Numbers of bear attacks : In North America, only 2-5 people are killed annually by bears: https://www.thealaskalife.com/outdoors/bear-attacks-statistic/ vs (Worldwide) 10 killed by sharks, 50,000 by snakes and 725,000 by mosquitos. https://www.statista.com/chart/2203/the-worlds-deadliest-animals/

U.S. Forrest Service : "Be bear aware" https://www.fs.usda.gov/visit/know-before-you-go/bears

Internet safety 101 : "Internet safety 101: 15 tips to keep your kids and family safe online" https://us.norton.com/internetsecurity-kids-safety-stop-stressing-10-internet-safety-rules-to-help-keep-your-family-safe-online.html. Sure they want to sell you antivirus software, but this is generally good advice.

Ultimate Guide to Cybersecurity : "Your Ultimate Guide to Cybersecurity: At Home, at Work, and on the Go." https://www.ibtimes.com/your-ultimate-guide-cybersecurity-home-work-go-2818655. A little more in depth.

CIS Critical Controls : "The Center for Internet Security (CIS) Critical Security Controls" - https://www.cisecurity.org/controls/cis-controls-implementation-groups/ More in depth. For enterprises.

PUBLISHED 2.4 "​Reproducible security analytics?" orgemacs {#reproducable-security-analytics}

I'm looking for repositories of "reproducible security analytics".

As an addict of Emacs Org mode, one of the papers that got me started thinking along these lines was A Multi-Language Computing Environment for Literate Programming and Reproducible Research. I realize for most of the rest of the world this vision is now realized more in things like Jupyter and Zeppelin notebooks. Your loss :-)

One thing that looks promising is mitre's cyber analytics repository. Another is Hunters Forge/Mordor I'd be interested in pointers to more.

PUBLISHED 2.5 What is that thing on the Internet, and is it bad? 100DaysToOffload {#things-on-the-internet}

When talking about Internet assets we often confuse "What is it?", "Is it bad?" and "What should I do about it?". This write-up intends to show why it is important to keep those questions and answers to them separate.

{{< figure src="/ox-hugo/elephant.jpeg" caption="Figure 8: The Shape of the Elephant" >}}

Post 27 of #100DaysToOffload https://100daystooffload.com/

2.5.1 Questions to ask {#questions-to-ask}

When identifying Internet-based assets, there are a series of basic questions[^fn:10] that need to answered:

  • What is it?
  • How do I know?
  • How certain am I?
  • Is it "bad"?
    • depends on who you are
    • depends on time
  • What can I do about it?

2.5.2 An Example: Web servers serving pages with flash {#an-example-web-servers-serving-pages-with-flash}

One example can be used to illustrate the point: web servers serving content with Adobe Flash (https://en.wikipedia.org/wiki/Adobe_Flash).

Flash is an older web technology that has known security vulnerabilities, is deprecated (Adobe to stop supporting it on 12/31/2020) and has been replace by HTML5.

Let's classify it using the questions above, assuming we have scanned a web site and pulled back the HTML body of the main page via an HTTP GET request:

What is it? : A web server serving pages with flash.

How do I know? : We see files with .swf extensions embedded in

javascript returned as part of the web page, e.g.
    var swfpath="/e/data/images/pixviewer.swf

How certain am I? : Your signatures may vary. There are other

strings you can look for such as:
application/x-shockwave-flash
http://www.macromedia.com/go/getflashplayer

You might start with a google search for

intext:http://www.macromedia.com/go/getflashplayer

It's just a question of how much time you want to put into developing the signature. For some things (HTML) there is a lot of ambiguity. For others (TCP, HTTP, SNMP, SSH...) the protocol will not work if the transactions are not well defined. Identification of less well defined protocols is ad hoc based on heuristics. Identification of well defined protocols is more certain. See below.

Is it "bad"? It depends. : Once we've answered the "what is it"

question, you can begin to address the "is it bad" question and
possibly it's corollary "how bad is it?" (not addressed here).
Lets return to our flash example.  It turns out Chinese web sites
are a large current (2020-09-17) source of flash on the web.  A
security products vendor also uses a lot of flash on their login
page.
-   **'Is it bad?' depends on who you are**
    1.  Chinese government? Maybe you WANT people to download
        vulnerable software to enhance your ability to monitor
        citizens activity.
    2.  Chinese human rights activist? You probably don't want known
        vulnerable software on your computer.
    3.  Security vendor?  Forcing your security minded customers to
        download and run known vulnerable software as part of logging
        into your security web site is, at best, bad form.

-   **'Is it bad?' "Is it bad" "depends on time**
    When did vulnerabilities in the product become widely known (e.g. a CVE
    published)?  When was "proof of concept" exploit code available?
    When are/were patches/upgrades available? ...

-   **'Is it bad?' depends on where you are**
    Are you at work on a laptop supplied by your employer who has a policy against
    accessing web sites that use flash?  Are you at home or in a lab
    doing web vulnerability research on a "throwaway" machine...

What can I do about it? : Lastly, and probably most importantly,

the question is "What can I do about it?".  Are there steps I
can/should take to fix things that are "bad"?  Patch? Upgrade?
Choose a different security vendor...?

2.5.3 Keep each issue separate, think about them independently {#keep-each-issue-separate-think-about-them-independently}

It is important to keep the answers to these questions separate. For instance saying "write some software to find bad things on web servers" presupposes a common definition of "bad", which, as we've seen above can be highly contextual.

It would be far better to keep them separate. For instance, define a taxonomy (see below) to say "what is this"? Then separately devise ways to answer the "is it bad" question for separate environments (countries, organizations, individuals ...)

2.5.4 Taxonomies, Ontologies and ASCII Art, Oh My !!! {#taxonomies-ontologies-and-ascii-art-oh-my}

The outline above lists the basic questions. It is possible that there will be a need for a deeper dive/more complete classification. For instance, revisiting what is it? for the web server with flash, we might come up with this taxonomy:

  + open port                      WELL DEFINED, CERTAIN IDENTIFICATION
    + tcp
      + tls                                        ^
        + web server                               |
           + microsoft                             |
             + iis                                 |
               + 7.3                               |
                 + services                        |
                   + flash                         v
                 + frameworks
                    + dotnet       LESS DEFINED, LESS CERTAIN IDENTIFICATION

Taxonomies help in classifying, understanding and communicating about things, for instance taxonomies (and Latin names) have been used in Biology for hundreds of years. More recently, the cybersecurity world started standardizing vulnerability naming as CVE.

2.5.5 Conclusion {#conclusion}

When thinking about Internet assets, writing software to detect and classify/fingerprint assets and deciding what to call "bad", keep the preceding questions in mind and try to keep the questions separate.

2.5.6 Disclaimer {#disclaimer}

The opinions expressed here are mine, and not those of my employer. In fact, they may not even be mine. I may have changed my mind. I may have grown beyond a particular opinion. I may be trolling you. I may be engaging in Socratic dialog to tear down your beliefs. I may be tearing down my own beliefs. γνῶθι σεαυτόν!

3 Privacy privacy {#privacy}

PUBLISHED 3.1 Privacy: what is it and why do we care? ... 100DaysToOffload {#privacy-intro}

In this world where Big Internet firms track you to sell you stuff (and to sell YOU), big Government tracks you because, well, they can, and where I found myself on a motion activated camera when backpacking alone in the "backcountry" in an attempt to "get away from it all", I've spend some time thinking about privacy.

Life is short. I could spend a lot of time registering domain names, managing certificates, running my own mail server, de-googling, convincing my friends and family to use nifty new security and privacy apps, and generally fighting the privacy fight as an individual against entire well-funded industries and governments. Or I could just live my life secure in the knowledge that Google and Amazon know what I'm thinking of purchasing even before I do.

This is the first in what will probably be a series of blog posts exploring the following (current outline):

 **** TODO Privacy: Motion activated cameras strapped to trees in the woods?
 **** TODO Privacy: An attainable end state? A lost cause?
 **** TODO Privacy: A path to making a living via bureaucracy?
 **** TODO Privacy: Something to rant about ... with words.
 **** TODO Privacy: Rage against the machine ... with code?
 **** TODO Privacy: Hiding out on the digital frontier?
 **** TODO Privacy: A process, an ideal, one part of life?

Stay tuned.

Post 28 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 3.2 Privacy: Motion activated cameras in the woods? 100DaysToOffloadhiking {#privacy-cameras}

I recently went backpacking on the Appalachian Trail in Massachusetts. One of the reasons I go out is to "get away", to go "off the grid", to enjoy nature and get away from adds, trackers, social media, etc.

But a funny thing happened at my last campsite. There was a camera strapped to a tree taking my picture every time I put my food in or out of the "bear box". The sign on the camera, in addition to asking us not disturb the camera (duct tape, anyone ?) assured us that they were only using the images to track bear activity at the campsite and the images would be destroyed after being used for their intended purpose. Right. They would not be fed to facial recognition software, and the results would not be passed to law enforcement. Right.

{{< figure src="/ox-hugo/camera.jpg" caption="Figure 9: \"Caméra de vidéo-surveillance\" by zigazou76 is licensed under CC BY 2.0" >}}

In addition to that, many hikers now use the "Guthook" app to track their progress, find distance to water, etc. It has social media-like features that let you leave messages to help other hikers like "there is a good stealth campsite at this stream...". And such comments suggesting helpful, but sometimes over the official line actions, which are absolutely not being monitored by park officials (looking at you Smokies, Baxter) and others concerned with keeping everyone strictly in line with the mountains of rules made by people sitting at desks who have NOT just hiked 8 to 12 hours a day for days on end and have no appreciation of or sympathy for realities in the field.

Mind you, I'm all for Leave No Trace, minimizing impact, ensuring that others have the same opportunities I crave to enjoy nature, not killing cute little animals out of sheer cruelty, etc, but...

"Signs, signs, everywhere there's signs,
blocking out the scenery, blowing my mind,
saying 'Do this, don't do that'
Can't you read the signs?"

Signs, The Five Man Electrical Band
https://www.songfacts.com/lyrics/five-man-electrical-band/signs
Code Snippet 1: foo Signs

The point is that our information-obsessed, always-connected, bureaucratic society will not even leave you alone, even in the woods. Thoreau, Muir, Audubon: meet the panopticon.

Post 29 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 3.3 Privacy: The view from 1987 and Antiquity - or why I'm deleting Google,Facebook and Twitter 100DaysToOffload {#privacy-1987}

3.3.1 "A History of Private Life" {#a-history-of-private-life}

There is, I think, an urgent need to protect the essence of individuality from headlong technological progress. For unless we are careful, individual men and women may soon be reduced to little more than numbers in immense and terrifying data bank.

Georges Duby, Forward to A History of Private Life, 1987

I'm in the process of deleting Facebook, Twitter and Google from my life. I think Duby et al. were on to something a little ahead of their time.

{{< figure src="/ox-hugo/private_life.jpg" caption="Figure 10: A History of Private Life" >}}

Post 30 of #100DaysToOffload https://100daystooffload.com/

3.3.2 What's bothering me {#what-s-bothering-me}

It takes a lot of work to change your email provider of 15 years. You loose contacts when you ditch Facebook (that guy I've not seen since 3rd grade..). Twitter is, well, a thing. Just ask the President ('nuf said ?) So why go the trouble? What is it about privacy that gets me and so many people spun up to the point that we will spend time fighting what is almost certainly a loosing battle against Big Brother, Big Internet and Big Advertising?

There are many reasons, but I think they all center around what it means to be human:

  • We want to be left alone sometimes
  • We want space to be ourselves
  • We want our thoughts to be our thoughts (and we want to have them before the machine learning algorithms that are tracking us have them)
  • We want the freedom to think, act, feel, love and hate ("Odi et amo ...") as we see fit, at least inside our own heads
  • We want to be able to work out life for ourselves
  • We want space to think, to grow, to make mistakes and correct them, or even to be free to persist in our chosen errors and delusions. "To err is human..."

Something about using the current set of "free" Big Internet offerings where, "If you're not paying for it you ARE the product" violates the space we so desperately need.

3.3.3 Back to the big thinkers {#back-to-the-big-thinkers}

Enough of my ramblings. Back to the deep thinkers who put together the encyclopedic A History of Private Life in 1987 without (gasp) Google or anything better than a IBM-PC running DOS...

...at all times and in all places a clear commonsensical distinction has been made the public --- that which is open to the community and subject to the authority of its magistrates --- and the private. In other words, a clearly defined realm is set aside for that part of existence for which every language has a word equivalent to "private", a zone of immunity to which we may fall back or retreat, a place where we may set aside arms and armor needed in the public place, relax, take our ease, and lie about unshielded...this is the place where the family thrives, the realm of domesticity; it is also the realm of secrecy. The private realm contains our most precious possessions, which belong only to ourselves, which concern nobody else, and which may not be divulged...

Georges Duby, Forward to A History of Private Life, 1987

Is he right? Do you have the space you need to "protect the essence of individuality from headlong technological progress"?

4 History history {#history}

PUBLISHED 4.1 Black Lives Matter ... the 1852 version. 100DaysToOffload {#2022-10-07}

So, I'm listening to Uncle Tom's Cabin on Audible.

How long until it gets canceled for use of the "N" word? Looks like Paypal might try to charge me $2500 for reading something they don't approve of https://marginalrevolution.com/marginalrevolution/2022/10/the-2500-fine-read-it-and-weep.html. I've canceled Paypal.

But that said, read it (while you can?). If you can get past contemporary hangups about the "wrong" words being used you will find one of the most powerful statements in all of human history that "Black Lives Matter". Stowe visited Lincoln in the White House in 1862, and there is a possible apocryphal quote by Lincoln that goes "So this is the little lady who started this great war."

My family hid runaway slaves (14 miles north of the Ohio river) and fought in the Union army. One of them was a student at Lane Seminary in Cincinnati (just across the Ohio ) where Stow's father, Lyman Beecher taught ... where a series of student debates over Aboliton attended by Stow caused riots. The student body withdrew en masse to Oberlin college. This book provides context and a backdrop for what drove them to disobey the law (the Fugitive Slave Act) and take up arms.

That's history. While I'm proud of what they did, I claim no virtue for their actions. The question for me now, as it was for them then, is how do I treat my fellow human beings today.

I have my relative's hand-written notes (1830s) from "Dr. Beecher's Lectures on Theology" in my closet. Maybe that's up next on the reading list to better understand what drove them...

#28 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 4.2 The lesson of history 100DaysToOffload {#2022-03-03}

I think the lesson of history is that we don't learn from the lessons of history.

#16 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 4.3 George Washington Slept Here 100DaysToOffload {#2022-02-27}

Hiking yesterday in the Shenandoah Valley I discovered that I was on part of "Morgans Road", which is a road George Washington had built into the hills to allow his army to retreat from the British in case things got really bad. "George Washington Planned To Sleep Here If Things Got Really Bad". That was enough at the time of the bicentennial (1976) to put up another George Washington marker.

This includes a longish list of Washington sites I've run across, including a couple with family connections.

{{< figure src="/ox-hugo/Morgans2.jpg" caption="Figure 11: \"George Washington Planned To Sleep Here\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

I've lived in northern Virgina for almost 20 years. 250 years later, there is still a mythos, and in some cases still oral tradition about George Washington everywhere you go from his home at Mount Vernon to Bunker Hill in Boston. Some of the most visible reminders (aside from Washington, DC and the Washington Monument) are all the "George Washington [did X] Here" signs.

The myth may be larger than life. The story about young George Washington saying "I can not tell a lie" when he cut down is father's cherry tree is probably a fabrication. But there was a core of truth, a real man behind the legends that inspired those who knew him and the generations that followed.

Living in northern Virginia, you can hardly step outside without running into some "George Washington [did X] Here" memorial. Here is a top-of-the-head list of things I've run into in the past few years:

Neavil's Ordinary : Neavil's Ordinary (inn) is a few miles from my

house.   George Washington (and George Fairfax of Fairfax County
fame) spent a night there on they way to survey land in the
Shenandoah Valley.

Washington, VA : Washington himself surveyed and laid out the town

of [Washington "The First of them All" Virginia](https://washingtonva.gov/history2/), the county seat of
Rappahannock County.

A farm in New Jersey : Backpacking on the Appalachian Trail in New

Jersey I spent a night camped behind the barn of a family that has
owned the land since the revolution.    They have an oral tradition
that Washington came through and spent a night in the old farm house.

Winchester, VA : There is a ["Washington's Headquarters" site in

Winchester, VA.](https://winchesterhistory.org/george-washingtons-office/)

Longfellow House, Cambridge, MA : Then there is the house in

Cambridge, MA (across the green from Harvard) that served as
[Washington's headquarters](https://www.nps.gov/long/index.htm) during the siege of Boston and later as
the [home of the poet Henry Wadsworth Longfellow](https://www.nps.gov/long/index.htm).  This one starts to
get personal, as I am a cousin of some sort to Longfellow. We both
go back to John Alden on the Mayflower. See Longfellow's "The
Courtship of Miles Standish".

Fort Enochs/Fort Capon : This one is very personal. Turns out

Washington commissioned my Great,Great,Great,Great,Great grandfather
[Lt. Colonel Henry Enochs](https://talesofafamily.blog/henry-enoch-1710-1784/) to build a fort on his land during the
French and Indian war.  Of course, Washington did the land survey.

In the 20 years we's spent living in Virginia driving back to Ohio
regularly, we developed a route that goes through Bloomery, West
Virginia which winds up cutting right past the sight of the fort
(now unmarked on a bluff in a field).  It is next to an old
one-lane bridge.  We did this before we knew of the fort or the
family connection.  I guess my ancestral lands were calling me home.
In reality, much of my family kept moving west to Ohio, where
Washington owned land.  They were among [the first settlers of
Marietta, Ohio](https://www.simonandschuster.com/books/The-Pioneers/David-McCullough/9781501168703), the first town in the Northwest Territory and the
seat of ... Washingotn county.

Bacon Fort : Two weeks ago, on the way home from another hike I

came across a marker for "[Bacon Fort](https://readtheplaque.com/plaque/bacon-fort)", another "Ordinary" and former
frontier fort at which Washington stopped.

Mount Vernon : And then there is Washington's home of Mt. Vernon

where he and wife Martha are buried.  It is a private foundation and
admission is free to people named "George" on his birthday.
There is a harpsichord in the house that at least one 12 year old
keyboard prodigy was allowed to play a few years back.  This Mount
Vernon is not to be confused with the town of Mount Vernon, Ohio
which my high school played in football.

Culpepper, VA : A young Washington live in Culpeppr, VA a little

south of where I live and joined the Masonic lodge there.   Nice men
from the Masons can be found at his grave from time to time honoring
their brother and (a few years back) handing out coins to children
with Washington's image.

The National Road/Braddock's Road : Then there was the time

Washington and Braddock went to what is now Pittsburgh to try to
dislodge the french at [Fort Duquesne](https://en.wikipedia.org/wiki/Fort_Duquesne).  Braddock wound up dead,
[buried under the road](https://www.nps.gov/places/braddock-s-grave.htm) and Washington wound up hastily building [Fort
Necessity](https://www.nps.gov/fone/index.htm) and signing surrender documents in French that he did not
understand.  And the French and Indian wars were off and running...

Other Washington sites : Over the years I've been to other sites associated

with Washington: Valley Forge, [The crossing of the Delaware](https://www.mountvernon.org/library/digitalhistory/digital-encyclopedia/article/crossing-of-the-delaware/),
Independence Hall (Philadelphia ) New York, Yorktown.

The man got around Colonial America (see The George Washington Day By Day project)

To be fair there is, of course, another side to the "Settlement" story some of which is told by John Ruth in his book This Very Ground, This Crooked Affair. After seven generations, Ruth's family can no longer afford to live on land they got directly from William Penn near Philadelphia. Penn, was "granted" all of Pennsylvania by the King of England despite the fact that there were already many people living there who had been there thousands of years...

But that said, man or myth, Washington was an inspiring character. He had flaws (don't we all?).

I can not tell a lie. I think the take-home for me is to figure out what praiseworthy qualities Washington (or his myth) embodied and to at least try to add those qualities to my own life.

#13 of #100DaysToOffload take 2, https://100daystooffload.com/

5 Current Events newsphilosophyhistory {#current-events}

PUBLISHED 5.1 Mark Twain quote on cryptocurrency (via ChatGPT) 100DaysToOffloadgeeklatin {#2022-12-10}

make up a mak twain quote about crypocurrency

Here is a possible quote that Mark Twain might have said about cryptocurrency:

“The only thing more elusive than the value of cryptocurrency is the person who invented it. They must be a master of misdirection, for they have managed to convince the world that a string of numbers and letters has worth.”

A poem about Pete Rose? A LATIN poem about Pete Rose? A bash script to search files and contents? Advice on investing beat the market and inflation? How to pack for a week long backpacking trip?

We used to say of computer programs "Garbage in, garbage out" ... but ChatGPT seems to be getting a little better than that, probably not close to passing the Turing test, but at the very least amusing. I think grading of high school assignments just became a lot harder...

write a poem about pete rose
Pete Rose was a baseball great,
A player without compare,
With a bat in his hand and a smile on his face,
He could hit a ball anywhere.

His hits record will never be beat,
And his passion for the game was clear,
But his fall from grace was a tragic defeat,
And his legacy forever tarnished, I fear.

But still, I can't help but admire
The way he played the game,
With speed and skill and all his heart,
He left it all on the field and never gave up the fight.

So here's to you, Pete Rose,
A baseball legend in your own right,
Though your mistakes may never be forgotten,
Your place in history is secure, at least tonight.

But wait, there's more.

write a latin poem about pete rose
Pete Rose, ludus magnus,
Non comparari potest,
Bat cum manu et risus facie,
Posset pila ubique ferire.

Record eius numquam vincetur,
Et amor eius pro ludo patet,
Sed casus eius tristis est,
Et memoria eius semper maculata timeo.

Sed tamen admirari non possum
Modo ludebat,
Velocitate et peritia et tota corde,
Semper certabat et numquam desistebat.

Ergo tibi, Pete Rose,
Legenda ludi tua propria,
Licet errores tui numquam obliviscantur,
Locum tuum in historia tutum est, saltem hac nocte.
write me a bash script that searches for files by partial name that contain a certain regex

Here is a Bash script that searches for files with a partial name that match a specified regular expression and prints their names to the terminal:

Copy code

#!/bin/bash

# Prompt the user for the search term and regular expression
read -p "Enter the partial file name to search for: " search_term
read -p "Enter the regular expression to match: " regex

# Search for files with the specified name and matching regular expression
results=$(find . -name "*$search_term*" -exec grep -l "$regex" {} +)

# Print the names of each file that was found
while read -r file; do
  echo "$file"
done <<< "$results"

This script uses the find command to search for files with the specified partial name and grep to match the regular expression. The -l option for grep is used to print only the names of the files that match, rather than their contents. The read command is used to prompt the user for input and to iterate over the search results.

To use this script, save it to a file (e.g. search.sh), make it executable with chmod +x search.sh, and run it with ./search.sh. You can specify the partial file name and regular expression to search for when prompted.

how do I invest to beat the market and inflation

To invest in order to beat the market and inflation, you can follow these steps:

Identify your financial goals and the time frame in which you want to achieve them. This will help you determine the right investment strategy for your situation.

Create a diversified portfolio that includes a mix of stocks, bonds, and other investments. This will help reduce the risk of your investments and increase the chances of achieving your financial goals.

Research different investments and compare their potential returns, risks, and fees. Look for investments that have a track record of outperforming the market and have the potential to protect against inflation.

Consider consulting with a financial advisor who can provide expert advice on investing and help you create a personalized investment plan.

Regularly monitor your investments and make adjustments as needed. This may include rebalancing your portfolio to maintain the right mix of investments, selling underperforming investments, and buying new investments that align with your financial goals.

By following these steps and being disciplined in your approach to investing, you can increase the chances of beating the market and protecting against inflation. However, it is important to keep in mind that there are no guarantees in investing, and the value of your investments can go up or down. It is always a good idea to carefully consider the risks and consult with a financial advisor before making any investment decisions.

what backpacking gear should I get rid of when hiking for a week or more

When backpacking for a week or more, it is important to carefully consider the gear you take with you. To save weight and space, you may want to consider getting rid of the following items:

Extra clothing: Take only the essentials, such as a few layers for different weather conditions and a waterproof jacket. Avoid taking duplicate items or clothing that you are unlikely to wear.

Heavy or bulky items: Look for lightweight and compact alternatives to your gear, such as a backpacking stove, sleeping pad, and tent.

Non-essential items: Consider leaving behind items that are not necessary for your trip, such as a camp chair, extra gadgets, or luxury items.

Expired or unnecessary items: Get rid of any food, medication, or first-aid supplies that are expired or that you are unlikely to use.

Overall, the key is to pack only the essentials and to prioritize lightweight and compact gear. By doing so, you can save weight and space and make your backpacking trip more enjoyable.

make up a mak twain quote about crypocurrency

Here is a possible quote that Mark Twain might have said about cryptocurrency:

"The only thing more elusive than the value of cryptocurrency is the person who invented it. They must be a master of misdirection, for they have managed to convince the world that a string of numbers and letters has worth."

#39 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 5.2 Peace be with you 100DaysToOffload {#2022-03-05}

I've been listening to the Meditations of Marcus Aurelius, the stoic Roman emperor. The stoic philosopher Epictetus, who was an older contemporary of Marcus Aurelius said

Never say about anything, I have lost it,
but only I have given it back.

It might lower my blood pressure if I could get my mind around that.

It's all to easy to get upset when people wrong you, or when dictators invade a neighboring country, killing thousands of people and destroy the country for seemingly unknowable and unjustified reasons.

In the meditations, the point is often made that the only thing you really have is this moment in time and your ability to control your reactions. You do not "have" or control the past, the future, events, people, money, etc. It's a sophisticated version of what parents often tell their children "Don't worry about what your brother is doing, pay attention to what you're doing".

Martin Luther (not King Jr.) put a Christian spin on the idea:

I have held many things in my hands,
and I have lost them all;
but whatever I have placed in God's hands,
that I still possess.

The world is not fair. It is not just. And I control almost none of it, aside from my own assessment of what is "fair", what is "just", and how I react to it. I've caused myself a lot of trouble over the years by they way I asses things and how I've reacted.

I wish you peace.

#18 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 5.3 When goods don’t cross borders, soldiers will {#2022-02-28}

When goods don’t cross borders, soldiers will.

That is all.

#14 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 5.4 Who 'ya gonna trust? CNN, Podcasts, ChatGPT... 100DaysToOffloadlifegeekAI {#2023-05-14}

On my Mastadon feed this week, the question was asked

"Why have #podcasts become so popular in the last few years? What's changed?"

I think there are a lot of answers...

{{< figure src="/ox-hugo/dorothy.png" caption="Figure 12: ChatGPT rendering of \"Make an image of Dorothy Gale of Kanasas riding a bucking bronco with the wicked witch flying on her broom in the background and a tornado behind that\" by ChatGPT and George Jones is licensed under ????" width="200px" >}}

My answers include

No need for the overhead or editorial control of older media forms. Lower production and distribution costs. A wide range of presenters and topics.

I think there's going to be another HUGE reason to tune unto long-form talking-heads/analysis style podcasts: You can be pretty sure (at last for a while) that the people talking are people, not, e.g. ChatGPT spitting out articles. If you want to hear what PEOPLE are saying and thinking, for the time being podcasts are it. When we get to the point that AI generation of TV anchors and White House press secretaries is common place, we will have arrived at an existential crisis of trust in all mass-market delivered content.

At that point, your best bet will be to have live, in-person, one-on-one interactions with real people. And, come to think of it, in any event, talking to people more might not be such a bad idea.

#49 of #100DaysToOffload take 2.1, https://100daystooffload.com/

6 Work work {#work}

WIP 6.1 Changing the world, one side project at a time 100DaysToOffloadcompuservehistory {#2023-12-22}

It is somehow fitting that the day I retire, the state of Ohio chose to unveil an historical marker outside the former headquarters of my first employer, CompuServe. I guess I'm history :-)

{{< figure src="/ox-hugo/cs_history_marker.gif" caption="Figure 13: \"CompuServe Historical Marker\"" width="400px" >}}

I started in June of 1985, and, looking back, what was going on there was world changing: the first commercial email, the first online banking, the first online shopping, the first electronic news wire feed, the first song released exclusively online (Arrowsmith 1994), online chat (CB), OS and compiler development, VPNs (X.25 !), data over cable in '82 ...

In the course of my career, it turns out that many of the things that mattered wound up coming out of individual side projects, not grand corporate visions.

6.1.1 Side projects {#side-projects}

  • The Eternal September, sorry.

    One of my earliest lasting contributions resulted from a side project that I put my good friend karl kleinpaste, up to: creating the first Compuserve <-> Internet mail gateway as a skunk-works project while we were both working at Ohio State Computer Science. Karl followed up with a USENET <-> CompuServe gateway, which was soon copied by AOL leading to the eternal september Sorry.

    Eternal September seems to be about to repeat it self with facebook's "threads" implementing a gateway to Mastadon.

  • The Web Browser that never was

    Then there was this web browser I wrote at CompuServe that would have let the masses access the WWW before most people had even dial-up Internet. But the corporate powers-that-be we're not sure this web thing was going to catch on, so it was never released. Vision !!!

    It depended on a graphics library and the WinCIM interface developed by Steve Wilhite (of GIF fame)

  • SANS, IETF, Flocon, the White House

    Along the way I wrote The Router Audit Tool (RAT). Offshoots of this work fed indirectly (via XCCDF) into the creation of STIX and TAXII. John Stewart, the venture capitalist and former CISO and VP of Cisco and Neil Ziring,

    tech director at NSA, contributed code to the project while I was
    leading it.  Alan Paller of SANS convinced me to release it through
    the [Center for Internet Security](https://www.cisecurity.org/) as one of their benchmark tools.
    RAT started as a side project at UUNET.
    

    Also at UUNET I started what became RFC3871: https://www.rfc-editor.org/rfc/rfc3871. The IETF OpSec working group continues to this day as an offshoot ("Many fine lunches"?). This was a side project that spanned UUNET and MITRE.

    While at CERT (CERT/CC at Carnegie-Mellon, the original CERT, not US-CERT) I had the opportunity to chair https://www.flocon.org/ twice. This was something of a side project for the organization, but one that got resources (my time).

    Also at CERT I had the opportunity to provide netflow analysis training to the White House SOC.

  • Side projects at Palo Alto

    At Expanse/Palo Alto I spent a lot of time staring at Internet scan data, trying to figure out what vulnerable devices were presenting themselves to us (and hackers). An irony here being that 15 years earlier we thought scanning was always bad, and there were PhD theses around how to detect it. Mike Collins is still cataloging scan traffic (give it up Mike, Internet traffic IS scan traffic :-))

    After Palo Alto acquired Expanse, I spent a fair bit of time understanding the vast array security-related data available for analysis in other parts of the company. In my judgment, Palo Alto may have the best overall collection of data for analyzing and addressing security threats, second, possibly, only to AWS. They actively work to use these data sources to protect customers, see PanDB, for instance. I presented on my findings at an annual internal meeting of researchers. A side project.

    As part of that effort I met Janos Szurdi and collaborated with him and other AMAZING researchers in that division, mostly on informal projects such as an internal "Hackathon", my role mostly being to advise on the use of Expanse datasets. The result can be seen in Janos' blog post about detecting stockpiled domains

    At this year's internal research meeting Tim Hofmockel and I explored further applications of combining data sources to support security analysis to solve our customers challenges. Such meetings are side projects for everyone, but the in-person interactions that happen there are what gets the creative and collaborative juices flowing and are often the source of further outside-the-box projects. I think that's why I like them, and why companies fund them.

    There is a possible patent coming out of some side efforts (this would be the first of my career).

6.1.2 The Amazon Leadership Principals {#the-amazon-leadership-principals}

There is one set of corporate mumbo-jumbo I actually believe in: the Amazon Leadership Principals. They stick with you. They form a way of thinking about the world and getting things done: Dive Deep, Learn and Be Curious, Bias for Action, Earn Trust, Disagree and Commit, Deliver Results. It's said that some Amazonians have to try hard to turn them off with family.

I think one of the reason those struck such a cord with me is that I saw them modeled 10 years before Amazon was founded at an early, impressionable period in my carrer. You could not have found a better description of Steve Wilhite (but one would have to add laconic, curmudgeonly, self-assured, stubborn and a few other adjectives)

I'm holding my Amazon stock despite Andy Jassey now being in charge and the FTC going on an anti-trust fishing expedition. The company is solid. And the leadership principals and customer obsession are a large part of it.

6.1.3 People matter. {#people-matter-dot}

Yes, you have to have corporate vision statements to keep investors happy and make HR VPs think they are relevant, but so often what matters are the side projects, the accidents, and things that fly under the radar.

I have it from Wilhite (30+ years ago) that the first DEC10 was delivered to CompuServe by mistake. It was then the computing arm of Goden United Life Insurnace Compay. They had ordered a smaller machine from Digital Equiptment Corporation. When the DEC10 arrived, they kept it, eventually started selling extra cycles as time-sharing (Cloud Computing, 1975), built a packet switched network, c.a. 1972 (take that ARPANet), started the first online service, c.a. 1979, and much of the world as we know it today was born.

Shortly thereafter, Dan Piskur had to invent "Cybersecurity" ab initio.

Wilhite left Ohio State during the 1970 riots to go do fun work on a big computer at a startup down the road. He never finished his degree. Too much to do. Things worked out. I think I can say the same.

People matter. Individuals matter. Side projects matter (again, see Wilhite and GIF.).

So make your strategic plans, track things in your kan-ban boards, have project managers run your agile sprints, but remember

"Life is what happens to you while you're busy making other plans"

--- John Lennon, 1980 in "Beautiful Boy"

#52 of #100DaysToOffload take 3.1, https://100daystooffload.com/

PUBLISHED 6.2 What matters in work? 100DaysToOffload {#2023-12-06}

The chart below is a mental framework I've used to evaluate my work situation over the span of may career. The goal is to move as far up the pyramid as you can. Being at the top (interesting )is really a first or zeroth world problem. Insert discussion of human flourishing/εὐδαιμονία here. If you're failing at a lower level, the upper layers really don't matter.

{{< figure src="/ox-hugo/maslow2023.png" caption="Figure 14: Maslow's Heirarchy of Jobs © 2023 George M. Jones, is is made available under the terms of the CC BY 4.0" width="600px" >}}

#50 of #100DaysToOffload take 3.1, https://100daystooffload.com/

WIP 6.3 Successful? 100DaysToOffload {#2022-12-26}

In http://curious.galthub.com/blog/2022-12-25/ I said

Bruce moved on from there to be VP of MSN at Microsoft for a while. Arguably a "Highly Successful Person"

Which, of course, begs (assumes, cedes) the question:

What is success?

Bruce embraced the management track. I've fairly consistently and actively dodged it, ironically after Bruce promoted me to my first supervisory role ... managing the development of a web-page creation tool for CompuServe's "MySpace"-like web page publishing system ... from there I took a hard career turn into the security world focusing on Internet security, routers, linux/unix, etc. For me, that's been a resounding success. Just no direct reports, budgets or Microsoft Windows, which were anti-goals for me. I've focused on front-line, hands-on doing.

#41 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 6.4 Can I get the job done by doing nothing? 100DaysToOffloadGTD {#2022-04-22}

Over the years you pick up useful ideas from people. One of the most useful "project management" ideas I've ever encountered is

Can I get the job done by doing nothing?

Use the code you already have. Use existing slide decks. Time is scarce. Don't waste it creating something new when something you already have will do the job. Don't spend hours getting a slide deck to %100 perfection when what you really need to do is talk over some ideas and the existing material is sufficient to spark conversation.

Thanks to Russell Leighton (then) at AWS for the mind-boggling obvious idea.

#26 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 6.5 Career counseling should not take itself too seriously. 100DaysToOffloadlife {#2022-02-03-O2}

These are some musings I sent to a friend who is a career counselor at a local community college.

Short version: I'm pretty sure I could not have planned my current career in "IT" and "Cybersecurity" when neither of those terms even existed until well into my career.

In my journal this morning I wound up writing about 8 pages on "how did I get here" towards the end of what has arguably been as mostly successful career in IT cybersecurity. Except that neither the words "IT" nor "cybersecurity" existed until well into my career. One of my conclusions is that it would have been impossible to plan my career. It might be possible to plan careers in fields where technology does not change, where personal connectoms don't matter, and where being in the right place at that right time dont matter. In my case, those (and, well, providence and an aversion to lying, management and marketing) were the drivers.

Pretty sure career counseling as a field needs to not take itself too seriously.

We had a long exchange where she made some cogent points in defense of her profession. Sometimes I stake out a possibly-extreme position as a way of starting conversations. I may expand on that conversation in future posts.

#2 of #100DaysToOffload take 2, https://100daystooffload.com/.

PUBLISHED 6.6 Finding needles in the marketingstack truthmarketing {#2021-12-15-truth-in-internet}

At work I do a lot of research around finding and understanding the capabilities of things connected to the Internet. I find that often checking Wikipedia and/or searching for the product excluding the vendor website gets to the real information fastest, e.g. https://duckduckgo.com/?q=vmware+tanzu+-vmware.com+-www.vmware.com

PUBLISHED 6.7 "​I'm passionate about..."​ Latinhumanitywork {#Im-passionate about}

"I'm passionate about..." I've always hated that phrase. Because I thought it was fake. I thought it was trendy. I've reflexively reacted against trendy things for decades. Pet Rocks, Disco, TED talks, cryptocurrency... But I am coming to see what the phrase is getting at. And I think I like it.

In a work world where human beings are called "resources", where intelligent, creative, inquisitive, motivated people are subjected to management practices derived from 19th century steel mills and automotive assembly line production, the phrase "I'm passionate about..." is (can be) an attempt to re-assert humanity.

I've just finished reading Long Live Latin: The Pleasures of a Useless Language . For no good reason. Again and again, it raises the question of what it means to be human: to be joyful, spontaneous, creative, inquisitive, fulfilled, to discover, to appreciate beauty, music, art, language, and poetry (yes, I have a liberal arts degree)

I guess if I had to say what I'm passionate about, it's about being human and treating other people as humans. To put a professional spin on it "I am passionate about collaborating with technical people to find creative solutions to important problems."

Go learn a useless language. Climb a mountain and enjoy the view. Spend time playing games with your family. Be human. Be passionate. Carpe diem.

PUBLISHED 6.8 Choosy Programmers Choose GIF WilhiteCompuServeGIFHistoryComputersEmacsProgramming {#steve}

Steve Wilhite is the most prolific programmer I've ever known. He's mostly remembered for creating GIF but he spent 30 years writing piles of amazing software which helped set the stage for the Web.

{{< figure src="/ox-hugo/XF4MAN.gif" caption="Figure 15: CompuServe XF4 Fortran Manual" >}}

Day 02 of #100DaysToOffload.

Steve worked at CompuServe (and successors) from 1970 to 2001. I was fortunate enough to start my career working with/for him. My view of his programming output comes largely from 1985-1995. I'm sure there was much more that I missed.

6.8.1 Things Steve Wrote {#things-steve-wrote}

Steve ran the languages and tools group when I arrived. He had just given up on writing at DEC10 ADA compiler^fn:11, was just beginning to embrace PCs as "real computers" worthy of his attention, had written a FORTRAN compiler, a BASIC compiler and associated run-time systems, and a run-time library for BLISS called BTOOLS. These were partially in support of CompuServe's pre-information-service time-sharing services supported by a homegrown packet-switched networking. "Cloud computing" in the 1970s :-)

I worked on BTOOLS, SKIMAN (Single Key Index Access Manager), a B-Tree library Steve had created. There was a full-fledged database system written in there somewhere I think. There were ports and hacks to various tools such as FINE (Fine Is Not Emacs), a C compiler, DEC Runoff, laser printer support, source code control systems, etc.

On top of that, Steve created the HMI (Host Micro Interface) protocol that rode on top of CompuServe "B-Protocol" to allow API driven interactions with the information service (the alternative being text/command line interfaces). This was all in an environment where 9600baud modems were considered "fast". Compression, incremental display, etc. were paramount.

He later used that as the substrate for WinCim, the graphical interface to the information service that he created which kept the company going for a while in the face of the likes of AOL. Somewhere in there, there was a graphics library and enough pieces that I was able to write a web browser that worked inside WinCim, that would have allowed CompuServe users without an Internet connection (most everyone then) to browse the web. Marketing did not want to release my web browser. Sigh.

Later on (after my time) Steve as pulled into major projects to support the back end processing for H&R Blocks's TaxCut program when online tax-filing was a new thing. He was also pulled into the WOW project which was supposed to be the AOL killer when it became apparent that CompuServe needed an AOL killer.[^fn:12] One of those projects succeeded. Single-handed technical virtuosity could not fix the one that didn't.

And there was this little side project called GIF.

6.8.2 Things that got out {#things-that-got-out}

  • GIF

    Be careful what you do and say. It's often the incidentals that you are remembered for. The kind (or unkind) words. The side projects.

    In the world of the mid 80s there were IBM PCs, Apple Macs (classic), Amigas, Atari-STs, CoCos, and yes, Apple-IIs and Commodor-68s. The information service was moving beyond a text-based, menu-driven system (I like curses and termcap as much as the next guy, but hey..). People wanted to share pictures, display online-shopping catalogs, weather maps, etc. There were no/few good portable graphics formats. So Steve wrote one. GIF. Then the web happened. The web wanted portable images too. GIF worked. So the early web adopted it. There was the kerfuffle over the LZW compression algorithm it used resulting in the creation of the PNG format, but, hey, who in 1987 would ever think that an algorithm published in ACM might not be free. OK, Stallman, but who else :-). And now there are Giffy's in slack that I turn off because I hate dancing bears. Thank-you Steve.

6.8.3 MicroEmacs/mg display hacks {#microemacs-mg-display-hacks}

And then there are the MiroEmacs display hacks. When the Amiga came out Steve convinced me to buy one (it was that or the AtariST, he had and was hacking on both). But there was no Emacs. Somehow (Steve?) I became aware that the source to MicroEmacs was included on with the disks to Mark Williams C compiler for the PC. So I bought the C compiler, ported the source to the Amiga (all it needed was character I/O drivers to work in the native ANSI/VT-100 terminal) and gave the source to Steve, who, I think, hacked/improved the screen update logic. I then posted the source to the USENET group comp.sources.amiga. It took off from there (thanks to Daniel Lawerence). It's rumored that Linus Torvalds uses a version of the code to this day.

6.8.4 CompuServe: Groundbreaking events, great teams and amazing individuals. {#compuserve-groundbreaking-events-great-teams-and-amazing-individuals-dot}

At the recent (2019-10-19) CompuServe 50th Anniversary reunion I was reminded of the revolutionary things that happened there: the first commercial email, the first online banking, the first online shopping, the first electronic news wire feed, the first song released exclusively online (Arrowsmith 1994), online chat (CB), OS and compiler development, VPNs (X.25 !), data over cable in 82....and Dan Piskur inventing what we know today as much of standard online security, incident response and "cyber"/law enforcement collaboration, all before the Internet.

Of course it all took the efforts of many people and groups: the network software team (packet switching c.a. 1972, take that DARPA), the "monitor group" (TOPS-10 OS development), MicroComputer Software (terminal emulators forever !), large systems software (billing et. al.), and of course the genius of the founders (John Goltz) and the vision of Jeff Wilkins (CEO 1970-1985).

There's a lot to be said for being in the right place at the right time, and for having a team, but many things do not happen without the essential contributions of amazing individuals.

Thanks Steve.

{{< figure src="/ox-hugo/compuserveshirt.gif" caption="Figure 16: It all started..." >}}

PUBLISHED 6.9 Adding uncertainty in uncertain times lifeworkstartupsGTD {#2020-06-30}

So, when life turns uncertain you have two choices. Cling to things that seem to add stability and certainty, i.e. try to "stay safe", or embrace the uncertainty, live now, carpe diem, and do things would seem to be fulfilling now.

I'm choosing the latter. At 58, in the middle of a pandemic and social unrest, I'm moving to a startup. The following are notes from a friend who has been playing the silicon valley startup game for a few decades. These are notes-to-self and anybody else who cares from that conversation:

  • Map out the architecture of the org/org structure (official) vs. what is actually working
  • Whats the (people) API: theory, practice?
  • Find "they guy who built it, knows everything"
  • What is the aspirational architecture vs. what's really built?
  • Find "the guy" who has it all in his head, maybe stuff that has not made it to paper. Whiteboard it, write it up.
  • Most places don't do that
  • Look at reality vs. getting stuck in "my teams perspective"
  • Use systems thinking to figure it all out
  • Find the "old salts" who know where the bodies are buried, not "official channels"
  • "First 90 Days", book
  • "An elegant puzzle", book
  • #1 lesson for all startups: "IT'S ALL ABOUT HOW MUCH CASH YOU HAVE IN THE BANK"
  • If company is healthy, CFO knows burn rate, want's whole company to be thinking about it
  • Health check: how aware are people of cash position?
  • Build vs. buy
  • Bailing wire and duct tape?
  • WATCH BURN RATE, WATCH REVENUE
  • Valuable people: people who understand tech and that you have to be a functioning business, i.e. you need more $ revenue than you are spending
  • People should be excited about growth
  • Watch out for scaling company before projected/actual growth in revenue
  • Biz/finance folks should be excited about you being interested in finances. Defensiveness is a warning sign. You WANT people who care about $. People share what they are interested in
  • Working remote, COVID
    • open door policy?
    • Ask admin assistant "Can I get 1/2 hour on X's calendar"?
    • Have/ask leading questions
    • Dig into current, next challenges
    • Demonstrate that you are thoughtful and someone who wants to make things work
  • Most important: GET THINGS DONE
  • reward/appreciated if you are seen as someone who wants to make things work, shape product
  • not "staying in my lane"
  • culture to pass things on, figure out where the holes are, fill them
  • Each team should have onboarding guide
  • Whoever was last onboarded updates it
  • if not, as ?Mentor? to get it
  • You should have a mentor
  • there should be a doc that includes "what IT didn't tell you
  • "When I build systems, I try to build something with good [benefits?] but light filling" (e.g. don't over-engineer)
  • Two bad extremes:
    • Try to build something that works now, don't "boil the ocean"
    • Pure agile people...constant refinement, incrementalism.
  • e.g. you know you need a memory managers. Start with an interface.
  • People. There are always "a few of 'those' people", hard to work with, disrupt everything. Stay away.

PUBLISHED 6.10 Disclaimer philosophyhumor100DaysToOffload {#disclaimer}

The opinions expressed in this [FOO] are mine, and not those of my employer. In fact, they may not even be mine. I may have changed my mind. I may have grown beyond a particular opinion. I may be trolling you. I may be engaging in Socratic dialog to tear down your beliefs. I may be tearing down my own beliefs. γνῶθι σεαυτόν!

7 Life life {#life}

WIP 7.1 "I ain't no Senators son, no !" 100DaysToOffload {#2024-01-08}

The short story ..

{{< figure src="images/BAZ.JPG" caption="Figure 17: \"Name of work\" by WHO is licensed under cc by 2.0" width="200px" >}}

Warning ... first-world baby-boomer problem described here.

So, I'm stitting here on the group-W bench, I'm just sitting here...

OK. Really. Not trying to get out of the Viet Nam draft, just having another surreal interaction with the US Federal government 50 years later along the lines of

Some folks are born silver spoon in hand Ah, they really help themselves But when the tax man comes to the door Lord, the house look a rummage sale, oh yeah

John Fogerty/Credence Clearwater Revival https://www.azlyrics.com/lyrics/catpower/fortunateson.html

I retired last month. As a result of a lot of luck and about 38 years hard work, I have more money now than at any other point in my life, and thanks to the Obamacare (ACA) rules and the way my finances are structured I have strong incentives to arrange things so that I have very little "income" this year. In fact, I'm flirting with having so little income that I would qualify for Medicaid and be at or near the federal poverty level.

So, yeah, I'm trying to make the house (1040) look like a "rummage sale" all for benefit of the taxman. And it's all legal and right there on the the government web sites.

It's just surreal.

There's one for you, nineteen for me, should five percent appear to small, be thankful I don't take it all, 'case I'm the taxman

George Harrison, the nascient neo-con.

#nn of #100DaysToOffload take 2.1, https://100daystooffload.com/

WIP 7.2 Congress, Big Pharma and Kickbacks, Oh My !!! {#2023-12-30}

GoodRX may save my son $3,500 or more on his prescription meds. This is a large fraction of the income he's earning on his first job.

Congress exempted "Big Phrama" from kickback rules in the 90s, the result seems to be that prices signals are allowed to work in the market to the benefit of people who would otherwise be made poor buying medicine they need at artificially high prices.

I was wondering how GoodRx gets such deep discounts. From: https://www.dallasnews.com/news/watchdog/2022/02/24/dear-watchdog-how-does-goodrx-knock-down-the-price-so-steeply-for-many-drugs-at-the-pharmacy/

GoodRx says it earns money when a customer uses her or his GoodRx code to make a purchase. Even more money is made when the consumer becomes a repeat customer.

To be clear on this, when you use a GoodRx code, a PBM receives a portion of that. GoodRx then receives a percentage or a fixed payment from the PBM for directing the customer to that PBM's pricing and the pharmacy, the company explains.

In other industries, these payments could be called illegal kickbacks. But in the early 1990s, Congress exempted drug companies' rebates from federal anti-kickback laws. The thinking was that the payments could serve as a negotiating tool, according to Consumer Reports.

Reason has a series of podcats that shows how federal government myopia of a different sort (tariffs) cause baby-food shortages https://reason.com/podcasts/nice-things/

#53 of #100DaysToOffload take 3.1, https://100daystooffload.com/

PUBLISHED 7.3 Count Your Blessings 100DaysToOffload {#2023-02-09}

Do something radical.

Count your blessings, name them one by one

Literally. Do it. Write them down. Meditate on all the good stuff in your life. Maybe even give thanks.

https://hymnary.org/text/when_upon_lifes_billows_you_are_tempest

(the fact that this follows yesterdays "Making Lists" musing is just coincidental ... he asserts ... our maybe it's the positive application)

#47 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.4 Making lists emacs100DaysToOffloadorgmode {#2023-02-07}

Dad made lists. Lots of them. I have Emacs org mode.

Making lists is part of the story I tell myself about how I'm working on the right things and getting them done.

Dad was an incurable list maker. He had to-do lists from Mom. He wrote detailed instructions (a list) of how to set up the camper. He posted lists of the date that each of my brothers and me would start paying for their own gas for the car and the milage rate. When he used computers he decided to save everything on USB drives. There was (is) a list indexing those USB drives. There were multiple phone lists updated regularly. There were (are) song lists in the harmonica case.

I have Emacs Org Mode ("Your life in plain text"), the penultimate list making software.

The lists I make on computers bear only tangential relationship to what I do. They are never done. In fact, computers make it all to easy to make lists of more things than I could every do. So, why?

The fantasy is that when I make lists, they are organized, complete, logical, right, drive all that I do (and don't do) and that I'm more effective, accomplish more and am happier as a result. Or maybe I just need the illusion of order.

The reality is, I do what I do. I am time bounded. Lists grow to infinity. Lists are there more to make me feel good than to drive actual behavior, so that I can tell myself (and others) that I am ORGanized. Lists are there for psychological reasons. They are there because I like making lists. It's enjoyment of the process and the illusions about what they help me accomplish, not, for the most part, because I get more done (but I think I do...no, really....)

True, it is better to have a plan than no plan. "If you aim at nothing, you will hit it every time." Got it. But, in reality, lists are part of the story I tell myself about how I'm working on the right things and getting them done.

Now,

M-x org-agenda

what am I doing today? ...

#46 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.5 Try writing more, you'll worry less 100DaysToOffload {#2023-02-04}

The past couple weeks, I've intentionally cut the phone out my morning routine. I was already writing a daily journal (on paper), about a page or two a day. I've always found that to be cathartic, as well as a good way to organize my thoughts and do some day-to-day planning. Now I'm writing two daily journals.

The second journal is an attempt to capture family history and oral tradition. A lot of history, artifacts and stories have landed on me after 150 or 200 years. I'm "getting them out" in a semi-organized manner, using what I know of peoples financial circumstances as writing prompts. There will probably be online versions later, but I find the process of writing on paper leads to much more creativity at the start.

Which leads me back to the start of this post. You can start you day doom-scrolling, filling your head with sound bites, stories of political (and other) apocalypses, or you can use the time to create, reflect and plan before spending the time you are given this day. Your choice.

(turns out this is version 2 of my previous post...)

#45 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.6 mornings without the phone (regaining my mind) 100DaysToOffload {#2023-01-29}

Believe it or not, you will be OK if you don't use your "smart"-phone to look up everything the minute you think of it, if you don't have it by your bed at night and you don't turn it on for a few hours. You might even regain a less-addicted, more thoughtful "smart"-you.

For the past few days I've been going "Cold Turkey" on using the "smart" phone as part of my morning routine: checking news, listening to podcasts, checking email, looking up things I'm curious about, etc.

It feels like I'm getting my own mind back.

I have spasms of "I have to look this up", but I really don't need to. They quickly pass, and I'm OK without knowing why the Crickets were not with Buddy Holly when his plane went down.

Sometimes you want to maintain control of your own stream-of-consciousness. Sure, it might be free association of ideas, knowledge and experiences that are already bouncing around in your skull. But they are YOUR thoughts. Not some advertising-induced, attention grabbing graphic-heavy distractions that some web-designer or marketing person decided you needed to see to drive "engagement" with whatever their schtick is.

It's OK not to know. Get your own mind back. Break your addiction to the smart phone, for at least part of the day.

The first version of this was written in a paper journal with a pencil.

#44 of #100DaysToOffload take 2.1, https://100daystooffload.com/

7.7 Death, Taxes, and Job 100DaysToOffload {#2023-01-11}

Today I'm going to pay my taxes, work on updating my living will and health care power of attorney, telling others when I want doctors to pull the plug if I can't make that decision myself.

Death and taxes. You can't live with them, and they get you in the end.

When discussing death, taxes, and "I know I'm right, why is all this bad stuff happening to me?", there's no better place to turn than Job...

Job is the oldest book in the bible. It pre-dates Rome, it pre-dates Abraham Lincoln, Isaac Newton, Jacob Astor, Joseph Stalin, and Benjamin Netanyahu :-). It pre-dates the Christian faith and Jesus' birth by hundreds of years.

For those who may not be familiar, Job is a story of suffering. Unjust suffering. Short version: Behind the scenes (Job never learns this) Satan makes a bet with God that Job (God's "righteous servant") will curse God if God lets Satan take away his money, family, and health. God takes the bet. Job's children die. His livestock is stolen. He skin breaks out in boils. His wife and his friends blame him and tell him it's all his own fault. Some friends. His loving wife summarizes "Job, do you still hold to your integrity? (claim it's not your fault) Curse God and Die !"

Fortunately for us (and germain to the topic of my living willing/advanced medical diretive), Job did not live in 21st Century Canada, was not counseled to kill himself to keep the governments health care expenses down, but instead endured (seemingly) pointless suffering, wrestling with the question "Why?", and as a result we have one of the greatest works of literature in human history that has inspired theological and philosophical debate and great art for millennia. "Curse God and Die ?"

Let's hear from Job.

For I know that my redeemer liveth, and that he shall stand at the latter day upon the earth: And though after my skin worms destroy this body, yet in my flesh shall I see God: Whom I shall see for myself, and mine eyes shall behold, and not another;

Job 19:25-27

I can not read those words without hearing the setting in Handel's Messiah.

The phrase

Yet in my flesh shall I see God

is likely going on my tombstone. It is an expression of the hope of resurrection and eternal life.

Seeing those words on a tombstone would probably make Job happy (Job happy?), because, immediately before that he said:

Oh that my words were now written! oh that they were printed in a book! That they were graven with an iron pen and lead in the rock for ever!

Job 19:23-24

But in context, he's referring to his long-running instance that he is innocent, that his actions and thoughts are right, and that no-one (God included) can question that. Sound like any people or current cultural movements you know?

The book ends with God asking Job a series of unanswerable questions. Job finally admits he may not have the whole picture and that maybe it's time to be humble and admit his limitations, frailty, mortality and, yes, the possibility of his own moral failings when faced with an Eternal, Omnipotent, Infinite, Just and Merciful Creator.

May I do the same.

Oh, and to those who may decide to pull the plug on me or not, yeah, the answers are often not clear. Sometimes suffering has a purpose. Do what you think is best at the time and leave the rest to God. It's all any of us can do.

#43 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.8 Generation P 100DaysToOffload {#2023-01-08}

I think I'm a member of "Gen-P", the "Peter Pan" generation who grew up in the shadow of the 1953 Disney production that touted the idea that we never have to grow up.

{{< figure src="/ox-hugo/boat.jpeg" caption="Figure 18: \"Boat off Jeckyll Island\" by George Jones is licensed under CC BY 2.0" width="400px" >}}

A friend who's a few years older than me recently related trials she is having caring for elderly parents. Nine years ago, my father moved to be near us. For the last 5 years of his life I spent time providing help to a very independent-minded person who rarely admitted he needed my help. This included an incident where I had to take the car keys from someone for whom driving was a right of passage into adulthood. It was not pretty.

Somewhere in the late fifties or early sixties (when I as born), I think the old notions of independence that were common in the 30s, WWII, and my parents generation and earlier went out the window. They lived in a much harsher world, and understood that fact. Farming. The depression. WWII. The bomb. There was nowhere near the economic prosperity that came in the decades after. There was nowhere near as much social safety net as there is today. Shades of Archie Bunker's "Those Were The Days" are now drifting through my head" ... it's time to stop this line of thought.

Then came Peter Pan. "A Generation Lost In Space". I look in the mirror and sometimes wonder who that old man is. When addressed as "Mr. Jones", I wonder who they'r talking to? To hear my daughter-in-law call me "Dad", seems very strange.

But life moves on. The lost boys and Wendy do, in fact grow up.

Back to my friend who's caring for her parents. Enjoy the seasons of life. If you're in a position to help someone (kids, older parents), be glad about it. Life can be rough. Pre-"Boomers" seem to have gotten that more than me. Almost in spite of my self, I've learned that some of the deepest meaning in life comes in stepping up to deal with adversity.

Have fun in never-never land. I don't think I'm coming.

#42 of #100DaysToOffload take 2.1, https://100daystooffload.com/

WIP 7.9 Why do we hack? 100DaysToOffloademacs {#2022-12-04}

Why do we hack? Because we enjoy it? Because we want others to use our work? Because we get paid?

{{< figure src="/ox-hugo/emacs.png" caption="Figure 19: \"Teco Emacs on TOPS20\" by George M. Jones is licensed under CC BY 2.0" width="600px" >}}

Once again EmacsConf went to fountainhead of free software and gave us a chance to hear from and interact with rms.

People in the public eye often get on (or get put on) a soapbox repeating the same lines. Stallman even chose to open by playing an 8 year old TED talk he did extolling software freedom. Certainly not new, but once in a while it's refreshing to return to primary sources rather than news or other mediated views. This talk and the Q&A was a view straight into the heart, soul and source of the Free Software movement.

I asked two questions on the webpad which Stallman answered. In both cases I was trying to get past the repeated soapbox points to what makes the person underneath tick.

Despite the utter profusion of tools built around the ecosystem he created over the past 40 years (just look at the program of EmacsConf and the contents of the *LPA archives), several of his comments lead me to believe he still views emacs as "just an editor", so to clarify I asked:

Q: What do you use emacs for beyond editing?

A: I use it for reading and writing email; this is what I do most of the day. (Sings) "I've been answering my email, all the g**-d***** day / .. / <transcriber lost the thread about here [lyrics available at https://stallman.org/doggerel.html#IveBeenAnsweringMyEmail]

Which confirmed my suspicion about non-use of the ecosystem.... but a live performance of his own parody song about email? Score one for touching the human behind the troupe.

As someone who's been around computers and Emacs long enough to have started using the TECO based emacs something like 3 years after RMS created it (c.a. 1979 for me), I look back fondly on some of the tech I've used (all of which included versions of emacs): TOPS20, TOPS10 (!), Multics, VMS, BSD Unix, SunOS, Solaris, etc and thanks to places like SDF and friends I can still log in and tinker in those environments once in a while. At EmacsConf 2020 Stallman waxed nostalgic for a moment about (I think) DDT (Dynamic Debugging Technique) or similar for a minute and the sense of control it gave, so this year I probed:

Q: Do you ever dabble in retro-computing, e.g. logging into TOPS10/20 systems SDF, etc?

A: No, I decided it's a waste of time. It's tinkering that would not develop anything of any importance or use. And I know if I'm going to enjoy developing something... I could enjoy developing anything... I decided not to distract my attention from useful computing.

So that's revealing. It acknowledges the existential pleasure of creating, in any environment, but only values creations that are likely to be used by others.

I have a son who's about to finish a doctorate in piano performance. Clearly it's legitimate for him to perform for the enjoyment of audiences, that is "useful". But I think it was also legitimate for him, a child, to sit down at the harpsichord in the hallway of George Washington's Mount Vernon and to knock out baroque pieces for the sheer joy of it, I don't think that was a "distraction" or "waste of time".

A lot of what makes Emacs what it is, is the accretion of scratch-you-own-itch solutions (Org-mode, for instance) done for oneself and possibly the pleasure of just writing the code and making things work, and then shared as an afterthought. In this context GNU Emacs itself is now 40 years old and was at the time a re-implementation of a then 7 or 8 year old system (TECO Emacs) targeted to run on a re-implementation of a system (Unix) created in 1969. Today (much to my amazement) there are STILL people into the Amiga[^fn:13], C-64s, and there are PDP-10's that run on raspberry-pi's. I once had an office-mate who "wrote" his own version of the Z80 in Verilog, because he could.

I appreciate the desire to have one's software used widely, but I think its equally valid for people to do their own thing, possibly in nitch areas or on obsolete platforms, just because they want to. I'd even say these are prime examples of people exercising software freedom on their own hardware and, at least to them, this is "useful computing".

Hat's off to RMS for Emacs, GCC, Core Utils, the GPL, FSF, Free Software...

Happy Hacking !!!

#38 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.10 Just a flu shot 100DaysToOffload {#2022-11-18}

I got a flu shot this week.

I happened to be at the pharmacy waiting for a prescription and had been planning on getting one, so I did.

No politics...

No threats of being fired by my employer.

No media coverage.

No G20 summit leaders agreeing I should not be able to travel without it.

No politics dividing me from friends and family.

No Robert F. Kennedy, Jr. books full of conspiracy theories.

No doubts about the long term side-effects of under-tested medical interventions.

Just a flu shot.

Because I thought it might help me.

#36 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.11 "Red" vs. "Blue" Name calling? We can do better than that. 100DaysToOffloadreadingpolitics {#2022-11-06}

As we approach another election in the US where hearing cries of "Red" vs. "Blue" become unavoidable, I'm increasingly convinced that such labels are unhelpful substitutes for thought and actually engaging with other people and ideas.

I've been listening to Jordan Peterson's "12 Rules For Living", as well as his podcast lately. Yes, per Wikipedia Jordan Peterson can be labeled a

 Canadian media personality, clinical psychologist, author, and
 professor ... public intellectual .. conservative ... classic
 British liberal ... traditionalist

but in listening to him, I am coming more strongly to the option that labels such as "conservative" or "liberal" are just intellectual crutches people use to avoid thinking, to avoid engaging with ideas and people, to label people in "us" and "them" categories such as "Red" and "Blue", and to cluster together into tribal groups. The result is we reject our fellow human beings out of hand and we are all worse off for doing so.

I'm only two chapters in, but his "12 Rules For Living" is already both an interesting story and one of the most thought-provoking things I've read in a long time. He draws on his experience as clinical psychologist dealing with broken people, his own experience growing up in a small oil town in northern Alberta, Canada (teenagers cruising a small town, drunken parties, long dark nights), and along the way walks through the story in Genesis 1-3 with the eyes of a psychologist answering the question why we take care of other people, even our pets, better than we do ourselves (Hint 1: we're all deeply messed up and we are all to aware of this. Hint 2: The whole "Red" vs. "Blue" thing and the tribal identity around it is in fact a proxy for a deeper human need for meaning)

Even two chapters in, I'd recommend it

#34 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.12 The way to get something done is to not do everything else. {#2022-10-24}

See the title.

#31 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.13 Friends 100DaysToOffload {#2022-10-23}

Aristotle identified three types of friendship - friendships of association, utility and virtue. Who were you "best friends" with in early school years? Do you keep up with your old co-workers? Who has hurt you deeply, yet you still wish them the best?

This morning I listend to a podcast that gave a summary of Aristotle's classification of friendships. This is a summary of a summary of a summary of one of the greatest thinkers in human history. Aristotle classed friendships in three categories (and this is from memory, so I'm pretty sure I'm not naming them they way Wikipedia or Aristotle's Ethics would)

Friendships of Associaiton : School friends, sports team members, people I meet hiking.

Friendships of Utility : Most of your Linked-in contacts.

Friendships of Virtue : People you care about (and who care about

you) for their (your) own sake.  I'm thinking a Mother's love for a
child falls here (but that may be a category all by itself).  Who do
you love "just because"?  Who want's the best for you even if you
hurt them deeply?

#30 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 7.14 "We" are "pleased" to.. 100DaysToOffload {#2022-04-26}

Email from [company I have investment with]:

  We are pleased to let you know that there is a new document for you to review

Translation,

the corporate machine sent this to you to mitigate it's risk of being sued by you and fined by government regulators for not doing so. There is no "we" in the personal sense. And no human being is "pleased" by this. Emails like this are a debasement of perfectly good words describing human interaction at best and disingenuous, self-serving, collectivist, lies at worst.

#27 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.15 Marcus Aurelius was right 100DaysToOffload {#2022-04-19}

I've been reading Marcus Aurelius' Meditations. I'm trying to have a positive effect on the things and people I can actually change (myself and my own reactions in this moment). Below are some quotes along those lines from Longfellow, Bob Dylan, the Apostle Paul and Reinhold Neibuhr, some of classics of "Don't worry, be happy". Now if I can just internalize some of this...

{{< figure src="/ox-hugo/boom_small.jpg" caption="Figure 20: \"The cannon thundered in the South,\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

Worry is debilitating. And usually you can't do much about whatever is worrying you directly. It can raise your blood pressure. It can get you to opine on geo-political solutions and outcomes you have very little hope of affecting or even influencing. See the war in Ukraine.

I keep coming back to Longfellow's A Psalm of Life

"Act, act the living present, heart within and God o'erhead
...
Let us then be up and doing, with a heart for any fate"

Henery W. Longfellow

This from a man who new the loss and devastation of war

And in despair I bowed my head;
"There is no peace on earth," I said;
"For hate is strong,
And mocks the song
Of peace on earth, good-will to men!"

https://en.wikipedia.org/wiki/I_Heard_the_Bells_on_Christmas_Day

Marcus Aurelius is right. Worry keeps you from doing the good you can do now, both for the benefit of yourself and those around you. It keeps you from affecting the things you can affect.

To go back a few decades:

"Karl Marx has got you by the throat,
and Henry Kissinger's got you tied up into knots.
When you gonna wake up, and strengthen the things that remain"

Bob Dylan

The big stuff will happen. You largely can't change it. Change what you can, which is yourself in this moment.

Slightly out of context (go read the context), but...

Let us not become discouraged in doing good, for in due time we will
reap, if we do not become weary. So then, while we have
opportunity, let us do good to all people,...

Paul, Galatians 6:9-10

And

God, grant me the Serenity
To accept the things I cannot change...
Courage to change the things I can,
And Wisdom to know the difference.

Reinhold Neibuhr

Neibuhr had a large influence on a young pastor named Dietrich Bonhoeffer in Germany in the 1930s and 1940s who was executed in prison for, well, trying to do what he could do in his time...

Post 26 #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.16 Shared Experiences 100DaysToOffloadTrailThoughtsoutdoors {#2022-04-12}

Shared experiences bring us together.

This is some (possibly obvious) introspection involving the Appalachian Trail, the moon landing and the Beatles.

{{< figure src="/ox-hugo/earthrise.jpg" caption="Figure 21: \"Archive: Apollo 11 Sees Earthrise (NASA, Marshall, 07/69)\" by by NASA's Marshall Space Flight Center is licensed under CC BY-NC 2.0" width="400px" >}}

Saturday I was out on a training hike on the Appalachian trail in central Pennsylvania. I met a German (well, German speaking) hiker with the trail name "Boomerang". We talked for about 10 minutes. In all likelihood I will never see him again. But we had a bond, largely because of our shared experience of the trail. I can talk to random hikers about experiences we share, people we've met and places we both know, "Oh, the outfitter in Harpers Ferry, you mean the one on the left side going up the hill from town towards the ATC headquarters?". Shared experiences bind us together.

My brothers and I have shared memories and experiences from our formative years that no one else can ever share. My wife of 35 years and I have had and raised two "kids". She knew my (now deceased) parents, grandmother and extended family. You only have so many people in your life with that level of connection. They are irreplaceable.

You see the need for connections in the existence of (American) VFW posts (a gathering place for former military members), in the existence of Eastern Othodox churches and synagogues all over the old ethnic neighborhoods of Pittsburgh and in efforts to preserve endangered languages (Breton, Irish, Hawaiian...)

In a larger sense, we all share the human experience: birth, life, struggles, death, the quest for sigificance and the desire for eternity.

The moon landing on July 20, 1969 was a moment when the world stopped. All of humanity was glued to TVs and radios. My parents kept us up late to watch the landing. People stared at the moon in the sky as people have done for all of human history, but with the knowledge that there were people there. We were there. The next day, the Beatles went into the studio and started work on a song called "Come Together". We need to.

#24 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.17 Life! Carpe diem! Carpe viam! Carpe vitam! 100DaysToOffload {#2022-04-08}

I am listening to Jack Kerouac's On the Road - Wikipedia. What a rant! What a stream-of-consciousness-grab-life-by-the-horns-drink-until-it-kills-you peaan to not missing a single moment or experience in life !

{{< figure src="/ox-hugo/upwared_and_onward.jpg" caption="Figure 22: \"Upward and Onward\" by George Jones is licenced under CC SA 4.0" width="300px" >}}

A lot of what happened in the 60s starts, I won't say to make sense, but to have a context.... musically there was Route 66, Tangled Up In Blue, All Come To Look For America, Me And You And A Dog Named Boo, There's A Killer On The Road .... and to some extent Woodstock (what happens 10 years later when thousands of people try to live the carefee life spontaneously together on a farm in upstate NY without proper infrastructure) and as an echo people following the dead on tour .... Wow, man !

Keruac's and friends lifestyle choices were, let's just say different than my own, but man did he grab the bull (life) by the horns.

In my own tame way I get out and play where there are bears, rattle snakes thunderstorms, chances to discuss 19th century philosophical movements with a rap-loving kid from the Bronx out for a hike and a meet a guy from Mexico City hiking the Appalachian trail because his grandfather read Thoreau in Spanish ... https://outdoorfoo.wordpress.com/

To life !

#23 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.18 New Cars 100DaysToOffload {#2022-03-31}

Cars have changed. Back in the day you could "pop the clutch" to start a car by letting it roll down hill, putting it in first gear with your foot on the (manual) clutch, let the clutch out ("popping the clutch") and often the car would start. Handy if you had a car with a dead battery at the top of a hill.

Cars are full of electronics now, and that can be good, and it can be very bad...

The only electronics on cars back in the day were the battery, the spark plugs, fired by an alternator, the starter motor, the lights, the radio, the heater fan (OK, there are were a lot of electronics...)

But now, cars are Internet connected computers integrated with everybody's favorite obsession, the smart phone. The computers in the car can physically steer, apply breaks, accelerate, decelerate, monitor your alertness, turn the car off, call 911 if you crash, etc. These are all usually good, or at least well intentioned when they work as designed in the conditions they were designed for.

But there are potential downsides. Pretty sure it would be technically trivial for you to get a speeding ticket every time you went 26 in a 25 zone. And Siri, Android Auto, Alexa and friends can listen to your conversations, do speech to text, feed them to machine learning trained programs to pick out anything, not just your selection of music or driving direction. Have you ever ranted to a friend in a car about social, political or religious topics ... or maybe the suspected paternal lineage of the driver who just cut you off? It might all be on record.

And I've worked with computers for too long to believe in bug free code or code with no design defects. Things break. In this case, it could cost me my life.

Then there are security issues. If the car can do the right thing with properly functioning software and in road and weather conditions, it could do the wrong thing as well if someone messes with the software, sensors (radar, camera), or operating environment. With a cell phone or other radio connection, cars are now, in once sense, computer systems with constant Internet connections.

This has been a topic in hacker circles for several years now: https://www.blackhat.com/us-18/training/car-hacking-hands-on.html, and industry is acknowledging the problem https://www.einfochips.com/blog/automotive-iot-security-an-inevitable-factor-in-growing-market-of-connected-vehicle-ecosystem/ We don't need to envision any cloak-and-dagger-middle-of-the-night car mods in a futuristic James Bond film to see what could go wrong.

So I'm pretty sure we're not going back. I considered buying a refurbished 1970s VW beetle to get away from all this, but for now I'm going to accept risks, cited above and completely ignored by car salesmen on the theory that it's more likely the car will keep me from making a fatal lane change than that Dr. No (or random functionaries at the TSA, local police or a kid in his basement) will hack my car.

There was a time when driving was the symbol of autonomy, independence, personal responsibly, individualism and adventure. You see bit's of that in Jack Kerouac's "On the Road" and Nat King Cole's "Route 66". Those days are, I think, gone. Now, how do I connect Android Auto and setup Waze? ...

#21 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.19 "I close my eyes, only for a moment, but the moment's gone" 100DaysToOffload {#2022-03-30}

When you're on a world tour following COVID lock-downs, nominated for 3 Grammys, scheduled to play at the Grammy's this year ... and your drummer dies....

https://youtu.be/fns6N_iAVBw

I close my eyes
Only for a moment and the moment's gone
All my dreams
Pass before my eyes, a curiosity
...
Dust in the wind
All we are is dust in the wind (All we are is dust in the wind)
Dust in the wind (Everything is dust in the wind)
Everything is dust in the wind

From memory and https://genius.com/Kansas-dust-in-the-wind-lyrics

#20 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.20 It will be done when it's done 100DaysToOffloadhistorygif {#2022-03-24}

Steve Wilhite died last week. Yes, he created GIF, but that was just a side project among mountains of mostly single-handed coding projects that were a large part of what kept CompuServe going for years in the face of AOL and the Web.

One of my coworkers recalled:

...many times when asked about a delivery date Steve would answer "it will be done when it is done."

I laughed when I read that. It was so Steve. It would have been said authoritatively, matter of factly, and any poor project manager involved would have to take that as the final word, because Steve was right ... and consistently delivered.

{{< figure src="/ox-hugo/steve.gif" caption="Figure 23: \"CompuServe Languages and Tools Group c.a. 2019\" by George Jones is licenced under CC SA 4.0" width="200px" >}}

You got the same type of response when asked how to pronounce GIF. To quote Steve "Choosy programmers choose GIF", echoing an old JIFF peanut-butter commercial, soft "g". It didn't matter that the president of the United States disagreed. The president was just wrong. End of story.

Steve was laconic, matter-of-fact and almost always right. He had a knack for knocking out the right project at the right time, be it the 3 DEC10 compilers in the 70s and early 80s, the "Host Micro Interface" (HMI) protocol that let the Information Service move away from text-only command line interfaces, to WinCIM (the CompuServe graphical Interface/UI/Information Manager on Windows). I used capabilities provided in WinCIM to write FTP and Telenet gateways that allowed users to access the Internet. Steve also wrote libraries included in WinCIM that provided enough functionality for me to write a web browser....that was never released :-(. It allowed users without a direct Internet connection (most people) to browse the web which was full of GIFs then.

A lot of the reporting about Steve and his "Webby" award for GIF refers to him working on it with "his team". I guess I was part of that "team" ... he had hired me out of college and I was in "his" Languages and Tools group (Compilers and Runtime Systems) and was 2 doors down when he was parading people in to see the fruits of a project (one of the MANY) he did on the side/at home called GIF that displayed, if I recall correctly, on DOS systems, Windows systems, Atari STs, Amigas, all which Steve had either in his office or at home or both. We did a little collaborative coding to port MicroEmacs to the Amiga which became today's mg (nee Micro Gnu Emacs) editor, but GIF was just Steve.

Sandy Trevor (CompuServe Executive Technical VP) and others were wise just to let Steve do his thing.

Beyond the code, I think Steve stamped a lot of his outlook on a young me. That's probably part of why I've dodged management at every opportunity. There's too much "real work" to do :-). Years later, I worked at Amazon for a bit and grew very quickly to appreciate the leadership principals: https://www.aboutamazon.com/about-us/leadership-principles. Turns out, in retrospect, I think they were describing the Steve I knew to a "t": He was right, a lot, dove deep, delivered results, earned trust, was always learning and curious, thought big and was forever inventing and simplifying. I think Bezos was somehow taking queues from Steve.

Steve also had one quality that a lot of utterly brilliant people lack: He took you (me) where you were. Not everyone went home and read Knuth and CACM cover-to-cover for bedtime stories. He got that. He took you where you were as a programmer and a person. That gave me room to grow personally and professionally at a critical time in life.

There was way more to Steve than GIF. His output was prolific and in his laconic let-your-code-do-your-talking kind of way, he was inspiring. I was privileged to have a front row seat to watch a master at work.

#19 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.21 Present Duties 100DaysToOffload {#2022-03-02}

This is framed quote that's been hanging on my family's walls since sometime in the late 19th or early 20th century. It's way more positive than the other things I was thinking of posting in these dark times...

{{< figure src="/ox-hugo/IShallPassThisWayButOnce3.jpeg" caption="Figure 24: \"Present Duties\" by William Penn paraphrasing Jesus is in fact not copyrightable, Charles Scribners's Sons claims c.a. 1897 notwithstanding." width="600px" >}}

#15 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.22 It seems like a good day for some Russian opera 100DaysToOffloadhistorymusic {#2022-02-26}

Below is some text from Rimsky-Korsakov's last opera, where the people mockingly pledge loyalty to the Russian King (Tsar)

King Dodon, a lazy and gluttonous ruler, is greatly worried by his warlike neighbors.

It seems the Kremlin's website is having some issues right now...

{{< figure src="/ox-hugo/movealong.png" caption="Figure 25: \"Kremlin Website, Nothing To See Here, Move Along\" by George Jones is licenced under CC SA 4.0" width="300px" >}}

People (shouting).
Long life to thee! Hurrah!
May thou have every good thing!
(Begin to sing.)
"We are thy faithful servants.
Who kiss the Royal feet.
We are glad to serve thee.
To amuse thee with our foolishness,
To box for thee upon a holiday,
To bark, to crawl on all fours,
So that thy hours may flow quickly
And may bring sweet sleep.
Without thee we should have no
Reason for existing;
For thee we were born
And for thee we have had chidren."

From https://archive.org/stream/lecoqdorgoldenc02pushgoog/lecoqdorgoldenc02pushgoog_djvu.txt

In the historical context (1908), Russia had just lost a war to Japan where it's army was defeated and two fleets were sunk by Japan. The Tsar was in disgrace. The start of WWI was only 6 years away and the Russian revolution was only 9 years away.

The (Tsarist) censors didn't like the text. Wonder why.

#12 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.23 Oh, Little Town of Harpers Ferry, How Still We See Thee Lie 100DaysToOffload {#2022-02-18}

Harpers Ferry: a quaint little town, vegan restaurants, a national park, Appalachian Trail headquarters, great place to hop a train to DC or Pittsburgh, a Kansas album cover or a great place to start a civil war? It’s all in how you look at it, who’s looking, and when.

This is a picture I took on a hike above the town on Loudoun Heights Saturday and the painting of John Brown in the John Brown museum.

{{< figure src="/ox-hugo/hf.png" caption="Figure 26: \"Harpers Ferry\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

Saturday I went hiking above Harpers Ferry, WV. Today it’s just a sleepy little town with a good little vegan restaurant, headquarters of the Appalachian Trail Conservancy and a lot of national park buildings (most of the old downtown). But back in the day (1859), it housed the federal armory, gun factory and John Brown thought it would be a great place start a slave rebellion. He was wrong. But he lit the fuse of the Civil War that ended slavery. His short lived rebellion was put down by federal troops lead by … Robert E. Lee, later commander of the Confederate army and JEB Stewart, a confederate general. And you may even recognize a Kansas (70s band) album cover in the painting of Brown-as-Moses with a bible in one hand and a gun in the other.

Turns out there is no museum in Harper Ferry dedicated to the man who enforced the status quo. I guess we know who was “on the wrong side of history.

#10 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.24 Oh, you gotta get a glory in the work you do 100DaysToOffloadpoetrywork {#2022-02-15}

I've been reading a lot of poetry lately. A snatch of a poem my grandmother used to quote about finding meaning in work came to mind:

Oh, you gotta get a glory
In the work you do;
A hallelujah chorus
In the heart of you.
Paint, or tell a story,
Sing, or shovel coal,
But you gotta get a glory
Or the job lacks soul.

Berton Baley

Even Google and Duck-Duck Go don't know much about it, so here it is in my grandmothers handwriting. From cleaning houses, to taking care of kids, to canning beans she NEVER did anything halfway.

{{< figure src="/ox-hugo/glory.jpg" caption="Figure 27: \"Oh, you gotta get a glory\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

#9 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.25 The mighty Casey has struck out 100DaysToOffloadsportspoetry {#2022-02-14}

I watched the Super Bowl last night, in which a second Ohio team just missed a national championship in a year. There is no joy in Porkopolis. I don't know any good football poems, but...

{{< figure src="/ox-hugo/joy-in-mudville.jpg" caption="Figure 28: \"Joy in Mudville\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

I stayed up late (for me) last night to watch the Super Bowl. The Bengals were the only professional team I ever half-way followed. This was in the 70s and into the 80s when they made their two other Super Bowl appearances. They, unlike the later "Bungles" were worth watching.

I started following them largely because they were in Cincinnati and at the time I had become a huge (not half-way) Reds fan. It was a good time to be a Reds fan. Those were the years of the Big Red Machine ... Rose, Bench, Morgan, Perez, etc. Back-to-back World Series wins in 75 (the year I started following) and 76. I was hooked (see some thoughts on where professional baseball has gone here). The Bengals gave me something to follow in the off-season. I even followed the Cincinnati Stingers hockey team in the short lived WHL for similar reasons. It probably didn't hurt that I grew up in Columbus during the Archie Griffin years and that the Bengals drafted him in 76. It just seemed natural that the teams I (somewhat) followed played in the Rose Bowl (then the national title game for college football), the world series and, probably, the Super Bowl every year.

Other than the Reds, I was never really a huge sports fan. Growing up in Columbus, Ohio you don't realize how pervasive Buckeye-fever is: it's in the water, its in the air, it's in the people's blood. I realized that this was not universal only when I moved away.

So, when the Buckeyes were in the title game this year I signed up a free trail FuboTV account, watched the game and immediately canceled. I did the same thing with the Bengals in the Super Bowl last night (honestly I could not have named a single player on the team.)

Yesterday, for different reasons, I was reading some of the poetry my Grandmother loved. Which is probably what brought this to mind, so, for my friends in Cincinnati and those who actually care about Football...

Casey at the Bat by Ernest L. Thayer

Oh, somewhere in this favored land the sun is shining bright; The band is playing somewhere, and somewhere hearts are light,

And somewhere men are laughing, and somewhere children shout; But there is no joy in Mudville-- mighty Casey has struck out.

https://www.ellenbailey.com/poems/ellen_097.htm

#8 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.26 Ἰλιάς 100DaysToOffloadhistorysnark {#2022-02-13}

The Iliad and Dr Seuss have nothing to say to us today. "One fish, two fish"? Really. Recent translations of liner-A tablets reveal that it was a faceBOOK post that launched 1000 ships.

{{< figure src="/ox-hugo/delphi.jpg" caption="Figure 29: \"Oracle headquarters, Delphi, Greece AUC MMDCCXLII\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

I recently finished re-listening to the Iliad (20 hours) and was struck by how little has changed in 3000 years:

  • The Olympian gods still enter directly into human battles.
  • The Hittites still rule Anatolia (Turkey).
  • Slavery is still a thing in the Mediterranean.
  • Raiding and plundering coastal towns is a perfectly acceptable career path.
  • Augery (reading the livers of animals) and portents (birds flying to the right or left) are still seen as valid ways making important decisions.
  • Political leaders are valued for their bravery in battle, leading from the front, risking their own lives and leading by example.

And there is even new evidence, deciphered form Liner-A tablets, that they were deeply concerned about issues of climate change, social justice and COIVD-19 vaccines. It seems that the oracle at Delphi read a Facebook post and clued them in that the people of the early 21st century (21st century from what?) would be rightly obsessed with these issues and that these people and their views would be the pinnacle of moral development for all of human history, and that the opinions and concerns of twitter mobs in that era were fixed, immutable and correct for all time.

In fact, the Trojan war was launched because the Trojans were on the wrong side of history on all these issues. So Agamemnon and the boys showed up and did the right thing. They administered social justice and burned it all down. For millennia we've referred to "The face [Helen] that launched 1000 ships", but that was due to an incorrect textual variant in the source documents. It was a "faceBOOK" post that launched 1000 ships. Unfortunately, this lead directly to Aeneas founding Rome. They were also on the wrong side of history. What can you do?

There are some themes that Homer dealt with at length. Things change. These are no longer issues for humanity:

  • Wrath
  • Jealousy
  • Hatred
  • War
  • Death
  • Greed
  • Pride
  • Fate
  • Joy
  • Sorrow
  • Glory
  • Destiny
  • Companionship
  • Loyalty
  • Retribution
  • Pathos
  • Grief
  • Treachery
  • Mortality

It's a good thing nobody has to read Homer any more. Or Dr Seuss. That stuff is problematic, and longer that 140 characters!

#7 of #100DaysToOffload take 2, https://100daystooffload.com/

PUBLISHED 7.27 Conspiracy theories can be fun! games100DaysToOffload {#2022-02-05}

Illuminati is a game that allows you indulge your inner conspiracy theorist, hopefully in a self-aware tongue-in-cheek manner. My son apparently made off with my copy. I think he's in on it. He took it as part of a secret communist conspiracy to keep me from suspecting the truth about secret communist conspiracies...

{{< figure src="/ox-hugo/illumiati.png" caption="Figure 30: No, really, the Freemasons have been secretly runing America since it's founding." width="200px" >}}

I can't find my copy of Illuminati, I'll keep looking but my SUSPICION is that DANIEL took it to CEDARVILLE in a blatant attempt to prevent YOU from knowing that the democratic party controls the international communist conspiracy who use their orbital mind control lasers (see tin foil hats) to control the convenience store clerks who incite KKK rallies that buy large numbers of Chick-fil-A sandwiches secretly on Sunday at, wait for it....the brand new Chick-fil-A dining hall on the cedarville campus (what more proof do you need, seriously !!!!)

And because I can't leave anything un-analyzed...

Conspiracy theories are more of a problem when you're close to them, when they're believable, and may have an impact on your life. I'm not to concerned (outside historical and literary interests) as to whether Marc Antony was actually planning to crown Julius Caesar as King of Rome. I'm not invested (as Cicero was) in the myth that the rule of Rome was going to stay in the hands of the Senatorial class and the Tribunes.

This, on the other hand, hits a little close to home https://www.simonandschuster.com/books/The-Real-Anthony-Fauci/Robert-F-Kennedy/Children-s-Health-Defense/9781510766808 Be careful...

#3 of #100DaysToOffload take 2, https://100daystooffload.com/.

PUBLISHED 7.28 Adding years to your life, or life to your years? 100DaysToOffload {#2022-02-04}

My great aunt took her first motorcycle ride at 100.

{{< figure src="/ox-hugo/aunt-bess-on-motorcycle.jpg" caption="Figure 31: \"Aunt Bess Takes Her First Motorcycle Ride at 100\" by George Jones is licensed under cc by 2.0" width="400px" >}}

Some thoughts on living in a small town, neuroscience and life.

What are you doing on your 100th birthday?

My great aunt Bess was one of 11 children, who lived her whole life in the small community around Frankfort, Ohio. She had scores of cousins and nephews and nieces. In her younger years, she worked as a cook in the local high school cafeteria and so knew an entire generation of kids in the community (and their kids) as they grew up. The last 50 years or so of her life, she lived in her own house on the edge of town. She lived on her own until the year she died (at 102). When we went to visit the routine was "Well, I don't know what I'll feed you all", and an hour later a full thanksgiving dinner-style meal was on the table no matter what time of year from corn she had canned, etc.

We had a big birthday party for her at a local church when she turned 100. There where 100 or more people there. And that was the day she strapped on the leather and took her first motorcycle ride with a nephew.

She added both years to her life AND life to her years.

I recently listened to a book called "Successful Aging" by professional musician-turned-neuroscientist Daniel Levitin. One of the key ideas he points out is that people thrive on interaction with other people, from the earliest stages of childhood development to centegenarians like my aunt. For the book he interviewed a number of successful older people from former Mexican president Vicente Fox, to the Dali Lama, to former US Secretary of State George Shultz and professional jazz musician Sonny Rollins, all of whom were active and engaged well into their 80s or 90s.

And it's not just old people. Levitin goes into the literature of childhood development. Kids need social interaction to develop properly. Kids thrive, literally, on social interaction. Social interaction is important to the early development of the brain, language learning and learning the self control needed to function in society. Without social interaction, some of these developments are physically retarded or absent, often permanently and irreversibly.

As Stacey Lance recently pointed out with some of what's been going on for the past few years, "I’m a Public School Teacher. The Kids Aren’t Alright." https://bariweiss.substack.com/p/im-a-public-school-teacher-the-kids. Kids need social interaction. My own reflections on the article are here http://curious.galthub.com/blog/2022-01-24/

I'm told similar things about the correlation between aging and thriving by a friend who is a financial councilor (he works with lots of older people) and our former pastor, in his 70s, who himself is working a third or fourth career at a construction company and maintaining the very active walking regime he and his wife have maintained for years.

In the past two years:

  • I've seen a big family wedding celebration scaled down and held almost secretly for fear of police showing up.
  • We canceled our annual new-years gathering of friends and family.
  • I skipped visiting a relative who's husband had just died as I was driving right past her house 100s of miles from home.
  • Churches stopped meeting.
  • The Catholic church stopped serving Communion in person, for the first time in 2000 years. Diocletian didn't even get that far with his persecution (I'm not Catholic).
  • Photography clubs stopped meeting.
  • Kids stopped going to school (well, not home-schoolers...).
  • People stopped going to restaurants and socializing.
  • Appalachian Trail maintenance training and work trips have been canceled.
  • Events people have planned their lives around like spending 6 months hiking, meeting 100s of people from, literally, all "walks" of life have been canceled.
  • I (and millions others) have canceled plans to travel, meet people and enjoy interaction with our fellow human beings.

Are we adding years to our life, or life to our years?

{{< figure src="/ox-hugo/aunt-bess-and-bryan.jpg" caption="Figure 32: \"Aunt Bess holding a young Bryan\" by George Jones is licensed under cc by 2.0" width="400px" >}}

#3 of #100DaysToOffload take 2, https://100daystooffload.com/.

PUBLISHED 7.29 "This train's got the disappearing railway blues" trainshistorytravel {#2022-01-27}

I recently took an Amtrak trip form Pittsburgh to Tucson and back. My cousin asked me

How was the Amtrak ride? It went through Chillicothe for a few years maybe in the 1970's. Then B&O/CSX abandoned the tracks.

and noted

in the 1920'... there were 5 passenger trains a day from Cincinnati to Columbus

{{< figure src="/ox-hugo/trains.jpg" caption="Figure 33: \"Trains\" by George Jones is licensed under CC BY 2.0" width="600px" >}}

Some pix from trip are here https://pixelfed.social/p/eludom/392240376640730492

The trip was long. 6 days on the train for what would have been two 4 hour flights. But no airport. No TSA !!! And it's relaxing. Would NOT want to do a trip of that length in coach. The sleepers are tiny, but still. And it comes with "dinner in the dinner, nothing could be finer" and COFFEE!!!

I think the train service to Chillicothe stopped in the 60s. Mom and Dad took us (or maybe just my older brother) on one of the last trains.

Government officials seem to be stuck on the need for modes of transportation that stopped working 70 years ago, in part because of government action in the form of federal highway subsidies, in part because, well, airplanes, which were the work of a couple Ohio boys form Dayton. Now they want force everyone to subsidize the one they killed and make the other so unpleasant that it's unusable.

PUBLISHED 7.30 social costs covid {#2022-01-24}

I sent this to my son who is on the path to being a high school socials study teacher.

This article has me trying to project the impact today's "social distancing" would have had on a very messed up introverted teenager of 45 years ago. It's not a pretty picture.

https://bariweiss.substack.com/p/im-a-public-school-teacher-the-kids

I’m a Public School Teacher. The Kids Aren’t Alright.

My students were taught to think of themselves as vectors of disease. This has fundamentally altered their understanding of themselves.

  From: ME (Today 04:49) (inbox)
  Subject: What you're heading into
  To: SON
  Date: Fri, 21 Jan 2022 04:49:50 -0500

  https://bariweiss.substack.com/p/im-a-public-school-teacher-the-kids

  As a homeschooler you may not resonate with this, but I can't
  imagine how the introverted, messed up kid I was
  would have turned out without the huge array of social experiences available to me.

  And to think of teenagers, invincible, immortal, carefree teenagers
  with the world at their feet being made to   feel that they ARE the
  problem and that they need to shut down and isolate?  We're loosing
  a generation.

  The title  may be an oblique reference to "the kids are all right" by the who (very Beatles 1966 sounding, with
  shades of the beach boys and prefiguring the Ramones some)...or
  maybe I'm just getting old.

PUBLISHED 7.31 Inclusion and Diversity in Ancient Egypt snark {#lets_celebrate}

Today is a newly decreed "inclusion and diversity" holiday at work.

I've got the inclusion and diversity cards ready to go. I've got the inclusion and diversity lights out of the garage and strung them all over the house (we're going to out-do the neighbors this year !). We've celebrated the annual ritual of baking ethnic foods (cultural appropriation at it's best, yum !!!). And when the kids are home, we will all gather 'round the fireplace with hot chocolate and ask

Why is this night different from all other nights?

and tell stories of oppression and patriarchy .... wait ....

PUBLISHED 7.32 What is "the news"? life {#the-news}

Last Sunday I went to a Christmas concert a a local church. All flutes (plus the occasional Harp). Who knew there was a contra-bass flute ?

The concert was a benefit for "Furthest Corners" mission that has a school and hospital in Myanmar (Burma). I talked to one of the missionaries who had to leave the country recently due to the civil war. The civil war in [Burma] has been going on on-and-off for 70 years. Who knew?

It seems the military decided to bomb the school. It's half gone. They are holding school in the other half.

I asked about the war. Apparently its "everybody against the military and the police now." Imagine having to go the grocery store (or grow and store your own rice) in an environment where you might get mugged by the police. Where do you turn? How do you live? How do you eat?

I also recently finished All Quiet on the Western Front, a book about the experience of one German soldier in the trenches of WWI. The German title of the book Im Westen nichts Neues, literally translates "Nothing New in the West" referring to the "news" from the front they day the main character was killed, with the end of the war in sight and "not much going on". "Not much" in who's view?

"The news" tends to be voyeuristic, detached, high level and mass market. It tends to feed judgmental views and tribalism.

People are what matter. Kids having a school to go to (or half a school). Having food to eat. Living free from fear of those who are supposed to protect you. But that's not news.

`##################### I Heard The Bells On Christmas Day #############################`

And in keeping with the Christmas concert and war theme, these words were written by Henry Wadsworth Longfellow during the depths of the American civil war:

https://hymnary.org/hymn/CYBER/2815

1 I heard the bells on Christmas day
Their old familiar carols play,
And wild and sweet the words repeat
Of peace on earth, good will to men.

2 And thought how, as the day had come,
The belfries of all Christendom
Had rolled along th’unbroken song
Of peace on earth, good will to men.

3 Till ringing, singing on its way
The world revolved from night to day,
A voice, a chime, a chant sublime
Of peace on earth, good will to men.

4 And in despair I bowed my head
There is no peace on earth, I said,
For hate is strong and mocks the song
Of peace on earth, good will to men.

5 Then pealed the bells more loud and deep:
God is not dead, nor doth He sleep;
The wrong shall fail, the right prevail
With peace on earth, good will to men.

These verses, usually omitted in modern hymnals, reflect the words'
origin during the American civil war:

Then from each black, accursed mouth
The cannon thundered in the South,
And with the sound the carols drowned
Of peace on earth, good will to men.

It was as if an earthquake rent
The hearth-stones of a continent,
And made forlorn, the households born
Of peace on earth, good will to men.

Archive Of This Page

PUBLISHED 7.33 When we focus on fear and stop caring for people covidlifehealthfamilycovid {#up-with-people-2021-12-06}

The real tragedy of COVID is the collateral damage it's causing to the way we interact with other people. This is worse than even the deaths it causes. The damage includes a lack of civility, division in families, and people dying alone in hospitals because nobody's allowed in.

From a Christian point of view, "the end is not the end". We need to strive to "live at peace with all men (even those we disagree with on divisive social issues), so far as it depends on you". Without that perspective, all that's left is fear of death and division (who's author is well known).

The medical system itself is a casualty of COVID. My wife got COVID and had gone two weeks without food or (my larger concern) much liquid and was lacking motivation to even do anything about it when I convinced her to go to her doctor. All they would do is a COVID test in the car. They would not even see her until she had a negative test. Her test was positive. So they would not see her. A friend at church is a nurse at a medical practice that is specializing in COVID treatment. They use alternate therapies, including Ivermectin and claim %100 success (e.g. no deaths). I was (and am) skeptical of Ivermectin ... this "just happened" to land at the top of my news feed the morning I got up with the intent of researching it https://astralcodexten.substack.com/p/ivermectin-much-more-than-you-wanted

But a) they agreed to see her when her doctor would not b) they got an IV (fluid) into her when she was severely dehydrated c) they caught the fact that she was developing pneumonia and prescribed antibiotics d) they had us get a blood-oxygen monitor for use at home, gave us a nebulizer and a prescription for albuterol with instructions to call them any time of day or night if her O2 levels got too low e) the result of all this was that she became interested in her own care and motivated to participate in it and f) I had the chance to server her in ways I usually don't which has been positive for our relationship.

And she's better now.

I'll take "fringe" medicine that cares for people over "mainstream" medicine that lets them die because they are too worried about lawsuits and government edicts to actually care fore people.

The real tragedy of COVID is not the deaths, but what it is doing to the way we interact with our fellow human beings.

PUBLISHED 7.34 Trust, Money, Force, Blockchain, Wired and China lifemoneycrypto {#money-2021-12-05}

Web3 sound like bs ---Elon Musk

https://maxread.substack.com/p/is-web3-bullshit

I'm just starting to come to terms with "Web3", "blockchain" etc.

Having thought that the end of brick-and-mortar stores and cash were right around the corner in 1995, I'm a little skeptical of new web trends. I'm a life-long fad-avoider and I've smelled a big fad around "blockchain" since it began. Wired is all over it. What further proof is needed?

That said money is about trust. Do you believe someone else will exchange goods and services for gold? Do you believe this coin really contains %100 gold? Do you believe this paper money is backed by gold? Do you believe this paper money (fiat currency) that is no longer backed by gold will continue to be accepted in trade? Do you believe it will hold value in the face of a central bank that is printing infinite amounts of it in response to political demands? Do you believe that those account balances that represent your life savings, which are nothing more than numbers in some database are secure from loss/being completely wiped out in two seconds by cyber fraud, ransomware, accidental deletion, bureaucratic incompetence, corporate self interest or the government?

Money is also about force. Will those in charge of the current fiat currencies, who wield force (police, courts, regulations, laws, armies) use that force to shut down a new fiat currency (blockchain) that they don't/can't control. My guess is, yes. See China.

PUBLISHED 7.35 No TV life {#NoTV}

{{< figure src="/ox-hugo/tv.jpg" caption="Figure 34: \"\"Console Television Receiver\"\" by ellenm1 is licensed under CC BY 2.0" width="400px" >}}

When I got married I made the decision not to have a TV because I knew my personal tendency to let it suck up my attention and I did not want that as an additional distraction from the hard work of building and maintaining important relationships. My (now 23 year old) son and I are currently working through the first 3 seasons of Star Trek The Next Generation (TNG) on DVD.

Growing up (this will date me) I watched some of the (then) current kids shows. I remember how much my grandfather loved watching Lawrence Welk. The annual airing of The Wizard of Oz ad A Charlie Brown Christmas were anchors of the TV-watching year. My best friend would not miss the Jerry Lewis telethon. All In the Family, The Waltons and MASH where staples. In the 70s there were cult-like re-runs of Star Trek TOS and this wacky British show called Monty Python's Flying Circus late at night on the PBS station. And there were major events like the moon landing (I was 8, vague memories) and the celebration of the American bicentennial and less happy things like the nightly body count on the evening news during the Vietnam war.

We often watched together as a family (or part of a family). Most families at the time had "the TV", one TV (Mr. Green of the Monkeys "Pleasant Valley Sunday" not withstanding). There were in our case only 4 stations to choose from, the CBS, ABC, NBC and PBS affiliates. We argued over who got "the good chair", who had to get up and change the channel (yes, no remotes) and if you got your place when you came back. With so few selections, it was highly likely that some of your friends had watched the same show the night before. There were no VCRs, DVDs or YouTube. You watched what the local stations put on, when they chose to air it (yes, air) or you didn't watch anything. This lack of choice contributed to a shared culture, shared experiences. I wonder if the ancient Athenians had more than one play by Aeschylus or Euripides at the same time?

"Back in the day" (40s to early 80s) there were local and regional TV shows. Cincinnati had the Paul Dixon Show and Midwestern Hayride, Dayton had Phil Donahue (who later went national). Columbus had Lucy's Toy Shop (live kids show) and Flippo the Clown..afternoon B-Movies with commentary ... and a recording of Flippo (Bob Marvin) playing the Beatles Norwegian Wood on sax with his Jazz Combo for the theme song. Any "kid" of a certain age (OK, we're all now approaching 60) from central Ohio can still sing theme from Lucy's Toy Shop by heart. TV of the day created a shared culture. Those a few years older than me seemed to all have watched they American debut of a British group on the Ed Sullivan show playing a style of music copied from American artists such as Elvis Presley who in turned copied it from the current black artists of the day. There's a lot to be said for shared culture.

...

PUBLISHED 7.36 The World Needs Visionaries historyamazon {#visionaries}

Jeff Bezos is stepping down as CEO of Amazon Monday. I met him briefly at an internal company conference (the Amazon Machine Learning conference) when I worked there 2016.

{{< figure src="/ox-hugo/Jeff_Bezos.jpg" caption="Figure 35: Jeff Bezos" width="200px" >}}

I admire him. He's created things. He built a company that's changing the world. He had vision. He (and his in-laws) took risks. He provided leadership (see the The Amazon Leadership Principals) and he knew when to get out of the way.

Any organization of humans that's big enough will have problems. It's full of humans. But I view it as a mark of success that the teamsters and the taxman are taking aim at Amazon now. There is value there that can be envied, vilified, stolen, leached off of and sued[^fn:14]. The European Union and Congress are not trying (as hard) to take down smaller companies. Amazon is on their radar because there is real value there. Bezos created it and he deserves every penny of the value his %10 stake in the company gives him. Who is John Gault Dagny Taggart?

A couple years ago I finally met Jeff Wilkins, the early CEO of CompuServe. I had heard him spoken of in reverential terms by Steve Wilhite (creator of GIF) and others at CompuServe. But Henry Block canned Wilkins the week I started at CompuServe. After meeting Wilkins and having a little time to actually talk to him, I get the importance of vision at the top. Wilhite, Dr. John Goltz et al. did some amazing tech work (packet switching in 1972 anyone?) but it took vision to drive the company to pioneer much of what we now know as the online world in the 1975-1985 time-frame ... email (gmail), electronic news, online shopping (Amazon, eBay), chat (slack), file sharing (iTunes), discussion groups (blogs, twitter, et al.), "cloud computing" (wide area networking, virtual private networks and time-sharing). CompuServe ran on steam (and the back of some great tech work by Wilhite and others) for another 10 years, but the vision was gone. CompuServe was eclipsed (and purchased) by Steve Case and AOL, the Internet happened and about this time an online bookstore was starting up.

Hats off to the visionary, the risk taker and the leader. You made the world a better place. Thank you...and enjoy your trip to space following the vision of Robert Goddard, Gene Roddnenbery and others :-)

PUBLISHED 7.37 Some Happy Notes musicfamilylifepiano {#happy-notes}

And on a happy note...my son Bryan has finished his Masters of Piano Performance at Duquesne University and will be headed to Penn State to pursue a Doctor of Musical Arts. You can watch listen to Bryan Jones' masters degree piano recitle at Duquesne on Youtube.

{{< figure src="static/bryan.png" >}}

7.37.1 Bryan's Music {#bryan-s-music}

The corona virus has wreaked havoc with many things, not the least of which is the performing arts, but, as they say, "the show must go on". The program was to have been a live performance, but things being what they are (social distancing) recordings where made to satisfy the requirement.

The program includes:

  • Schumann: Symphonic Etudes, Op. 13 (original version, 1837)
  • Debussy: Images Book II - I. Cloches à travers les feuilles
  • Debussy: Images Book II - II. Et la lune descend sur le temple qui fut
  • Debussy: Images Book II - III. Poissons d'or
  • Ginastera: Piano Sonata #1, Op. 22 - I. Allegro marcato
  • Ginastera: Piano Sonata #1, Op. 22 - II. Presto misterioso
  • Ginastera: Piano Sonata #1, Op. 22 - III. Adagio molto appassionato
  • Ginastera: Piano Sonata #1, Op. 22 - IV. Ruvido ed ostinato

I particularly like the Debussy.

7.37.2 Other Happy Notes {#other-happy-notes}

My other son Daniel is finishing out his junior year at Cedarville from home. Bryan's girlfriend (also graduating from Duquesne) will again spend the summer doing something she loves, counting birds for Bird Conservancy of the Rockies. A "kid" I knew from scouting is headed off for a masters in biomedical engineering this fall, and we may hike together a week or two if possible in June or July.

Life goes on. All is not doom and gloom. There are some happy notes. Share some of yours?

PUBLISHED 7.38 All is not doom and gloom: go for a walk !!! lifehope {#go-for-a-walk}

I find that when I stay glued to twitter (pick your social-media-of-doom-amplifier) I tend to get a rather gloomy view of life. There is indeed a lot one can be gloomy about these days. But if you just go for a walk and look around you may be surprised:

I found this art sidewalk art at just about the exact place where last fall I had purchased a cup of lemonade from 4 eager young entrepreneurs. I suspect the ring leader of that optimistic young bunch.

{{< figure src="/ox-hugo/sidewalk-art.jpg" caption="Figure 36: Sidewalk art" >}}

Spring is the best time of year. The daffodils bloom, dogwoods are in full bloom, red-bud trees come out, the tree-frogs sing up a storm (at least that's how it goes in Virginia)

{{< figure src="/ox-hugo/dogwood.jpg" caption="Figure 37: Dogwoods in bloom" >}}

I recently had my yard re-graded and re-seeded and now, after 17 years I have full luscious grass (that has to be mowed). This may not happen again:

{{< figure src="/ox-hugo/grass.jpg" caption="Figure 38: Actual grass" >}}

And last but not least I saw a bird I don't think I've seen before, it turned out to be a common tree swallow, but it was startling to see the almost metallic, shinny dark blue back and white belly (the picture does not capture it well)

{{< figure src="/ox-hugo/tree-swallow.jpg" caption="Figure 39: Tree Swallow (Tachycineta bicolor)" >}}

Go for a walk. Look at the world around you. It's spring. All is not doom and gloom!

PUBLISHED 7.39 Digital chimney smoke? lifetwitterDigitalFrontiers {#digital-chimney-smoke}

Daniel Boone is quoted (via Hubert Humphrey) as saying

when he could see the smoke from another chimney, felt himself too crowded and moved further out into the wilderness.

Mark Twain said

Whenever you find yourself on the side of the majority, it is time to pause and reflect.

I was on email as early as 1980 on a DEC20. I was on Usenet news when it was the digital frontier and on the Internet in the mid-80s, 10 years or so before the Web. I helped bring America online working at CompuServe before America Online existed. I quit Facebook in the run-up to the 2016 election as it got too political and now I find that my main digital platform (Twitter) is home to the daily, um, ?sophisms? of the President who spawned the political rhetoric I fled.

Is it time to move on? Time to find another avant-guard tech hole to clime into? Thanks to the Internet there are infinitely more options than just the dial-up BBS systems of the early 80s.

I was a little sad to loose contact with all the elementary school friends that Facebook enabled me to reconnect with after 40 years (OK, not really) and I would be sad too loose touch with the zany #ClassicsTwitter crowd (aeneasgoogling apud elysium I'm looking at you) that tweets in Latin.

Where to go? Maybe just pick up stakes, head west and see where I find myself?

PUBLISHED 7.40 Getting started in life is harder right now lifefamilycovid {#2020-05-05}

Getting started in life is harder right now. I have two college age sons who both just finished up their year with online classes, and both are home now. In "normal" times they would be working summer jobs or participating in other activities that would help them advance toward their chosen careers. Jobs may or may not happen. Even getting out of the house may not happen much. These are weird times.

{{< figure src="/ox-hugo/seals.png" caption="Figure 40: The Great Seal of the State of Ohio" >}}

I am happy to help my sons with a place to live, emotional and other support, but it is a time of life where they should be moving towards increased independence. The opportunities to do that are drastically reduced right now. This state of affairs concerns me, and it's not just my family. Maybe we need to look for the silver lining, find opportunity in change, etc., but it is certainly going to take more effort and intentionality right now.

Day 06 of #100DaysToOffload.

PUBLISHED 7.41 Awesome online singing from Denmark to Australia, and social distancing too! choirmusicsingingeastersacredharpharmoniasacracovid {#2020-05-06}

There are some amazing online singing events happening now around the world: Denmark, Australia, Nashville, etc. I want to highlight a couple examples of that to add brightness to these dark times.

Human beings have an unquenchable desire to live in community. Singing has always been an expression of that. Modern technology has enabled it.

{{< figure src="/ox-hugo/sacred-harp.png" caption="Figure 41: The Sacred Harp Quarantine Chorus" >}}

Day 07 of #100DaysToOffload.

  • Harmonia Sacra - a capella four part shape note singing

    I sing (the quality is arguable at times). For the past 25 years on-and-off I've been singing 4 part a capella hymns in Mennonite circles. It's a communal thing. You can sing the bass line by yourself, but it's not the same.

    For the past 10 years or so, my family and I have been driving over to Shenandoah Valley 2 or 3 times a year to participate in a few of the annual "sings" that have been happening in the area since Joseph Funk first published Harmonia Sacra in 1832 (in the little town of "Singers Glen"[^fn:15])

    Since we could not have the regular April singing in person, I figured out how to host one on Zoom, based on instructions for leading Chorial Music over Zoom by Jim Daus Hjernøe of the Royal Academy of Music in Denmark

    {{< figure src="/ox-hugo/royal-academy.png" caption="Figure 42: RAMA Vocal Center, Denmark" >}}

    Basically, I split out a number of tracks from one of the better sings and rebroadcast the them as guide tracks. Here is a recording of "Dedication Anthem", a.k.a., "606", a.k.a. "The Mennonite National Anthem" sung in 4 part harmony by 400 people.

    It worked, more or less. There was not the same sense of community as standing right next to other singers, but it let out some our pent up need to sing our favorite joyful songs in a time of uncertainty.

  • The pros in Nashville

    And then there were the pros in Nashville. The Nashville Studio Singer Community - Virtual Cell Phone Choir - “It Is Well With My Soul” arranged by: David Wise This was a group of professional singers, who indeed looked like they were enjoying being part of the virtual community of singers. They covered the standard hymn "It Is Well With My Soul" which was written by Horatio Spafford in response to the loss of his family when a ship sank.

    {{< figure src="/ox-hugo/it-is-well.png" caption="Figure 43: The Nashville Studio Singer Community - Virtual Cell Phone Choir" >}}

  • Is it well?

    When peace like a river, attendeth my way, When sorrows like sea billows roll; Whatever my lot, Thou hast taught me to say It is well, it is well, with my soul.

    Whatever your faith, I think we can all take a little solace in the human spirit that can't be contained and overflows into joyous music even at times like these. It is indeed well with my soul.

PUBLISHED 7.42 Life imitates... lifegamescivilization {#2020-05-07}

And to get away from it all tonight we played (well, continued) a game of Civilization: Famine, Strife, Civil War, Flood, Earthquakes, Volcanoes, but strangely no epidemic (yet).

{{< figure src="/ox-hugo/civ.jpg" caption="Figure 44: Civilization" >}}

I think I'll take the real world please. Wait, no. We're loosing Democracy, Law and Philosophy....

Day 08 of #100DaysToOffload.

PUBLISHED 7.43 Things That Have Been Around The House for 220+ Years familyhistorytolkienlife {#the-stuff-of-time}

The world has changed. I see it in the water. I feel it in the Earth. I smell it in the air. Much that once was is lost, For none now live who remember it. ”

― J. R. R. Tolkien

Life goes on, until it doesn't. Then those of us who are still here are often left with the cherished collections of a generation, or two, or three, or four, or... The oldest thing I think I have in the house is this page torn out of a family bible (I have at least 3 of them, big, old, once-cherished). It records the death of a William Gould in 1792, and of Joseph Dennis Gould in 1835.

{{< figure src="/ox-hugo/goulds.jpg" caption="Figure 45: left-behind" >}}

I also have lecture notes Joseph Gould took at seminary, as describe in this slightly edited email I sent to a relative a few years ago. There were some big things going on in those days.

And here, almost certainly is the Dr. Beecher in question. Father of Harriet Beecher Stowe [Uncle Tom's Cabin]. Calvinist evangelist at the head of the second great awakening, leader in the temperance movement and at the center of a controversy at a seminary in Cincinnati about slavery the same year [1834] these notes were taken...18 straight nights of debate on the topic, near riots, 50 students withdrawing en mass and moving to Oberlin college. The church and the nation [were] starting to pull apart.

And then there was this barn [built by my ?great-great? grandfather Morrison for my other great-great grandfather ?Ephriam Gouuld?] north of Marietta [Lower Salem, Ohio] that housed runaway slaves. It was a stop on the underground railroad just north of the Ohio river. And 27 years later another young man [my great grandfather Elisha Morrison, later to marry Lydia Catherine Gould] who enlisted in the union army....

http://en.m.wikipedia.org/wiki/Lyman_Beecher

.... I have a book that appears to have started as Joseph Gould's notes on "Dr. Beechers lectures on theology" in 1834, then used by Daniel Gould as his account book from 1847 to his death in 1851. Then it contains Ephraim Gould's records as administrator of the estate, later records of Morris Morrison and and E F Morrison through 1891, and finally entries from Anna Gould from 1923 to 1925. We have Anna Goulds will dated 1925. I think I was told she was a sister to [my great grandmother] Catherine Gould Morrison and cared for Ephraim Gould in his old age, which is probably also why I have his cane..... I guess paper was scarce....

I'm not sure what to make of all this. It's good to know where you came from. There are stories and values associated with some of these things. It's good to remember the trials and victories of those who came before.

“I wish it need not have happened in my time," said Frodo. "So do I," said Gandalf, "and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us.”

― J.R.R. Tolkien, The Fellowship of the Ring

Day 11 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.44 More Thoughts on More Stuff familyhistorylife {#the-stuff-of-time}

{{< figure src="/ox-hugo/our_mantle_2020_05.jpg" caption="Figure 46: Things on our mantle" width="400px" >}}

7.44.1 What is this and who is it for? {#what-is-this-and-who-is-it-for}

This is written primarily as a personal reflection to my cousin about us both winding up with tons of family "stuff". Secondarily it is intended for a family newsletter. Tertiarily, for my sons to document snippets of family history, and lastly (quarternarily ?) it is written as an "open letter".

7.44.2 To John {#to-john}

John, you and I both have a lot of "family stuff", for different reasons I think. I sort of inherited it as, literally, "the last man standing". I care about it some. I've been told stories about some of it my whole life. I think you have been a little more active (well, a lot more active) in collecting and organizing "family stuff".

7.44.3 Some (more) of the stuff I have {#some--more--of-the-stuff-i-have}

I have (top of the head, small sample) the Crokinole game board (19th century I think), the big old custom-made oak cabinet (that has moved exactly 3 times since it was made in the 1860s), two old oak kitchen tables (Grandma/"Esther Morrison"'s and Ernie's), our great grandmother's 1868 wind-up clock with which she "set up housekeeping", wall hangings, family bibles, hymnals, cookbooks, school books, farm records, the founding constitution of the Union Soldiers Aid Society (1863) of the Dry Run Church, tools (Grandpa's scythe), and until recently we had the Civil War Diary of Elisha Morrison and his discharge papers. Mike has the rifle Elisha Morrison picked up after the other one he had was struck by a bullet saving his life, or none of us would be here today.

On the Jones side I have all Dad the photography major's negatives, the Jones/Reeder/Williams family records, my grandmother's family photo album showing Dad's high school dance band practicing (led by one of Nancy's former neighbors ... small world) and pictures of the TV showing live atomic bomb test blasts and the coronation of Queen Elizabeth (who is STILL on the throne, is she immortal?)

If anybody in the family wants some "family stuff" talk to me. Much of it can be had cheep (free). I may be making an inventory which would aid your selection.

7.44.4 What's the value? {#what-s-the-value}

Some of the people we have behind us include Pilgrims (John Alden, Priscilla Mullins), "Underground Railroad" participants (Ephraim Gould), Union Soldiers (Elisha Morrison) and on "Esther (Free) Morrison"'s side a Hessian Soldier from the Revolution who jumped ship and took the name "Free" with some connection to the zany "Immortal J. N. Free", and then there's "Cousin Henry [Longfellow]" (also descended from John Alden)

Tell me not in mournful numbers, life is but an empty dream....life is real! Life is earnest! And the grave is not it's goal; Dust thou art, to dust returnest, was not spoken of the soul

It's good to know where you came from. It's good to know the laudable deeds of your ancestors. Not everybody has that. Not all deeds we know about were laudable or momentous,

"Though it's the laughter, we will remember, whenever we remember, they way we were ... the rest we simply choose to forget" (B. Streisand)

7.44.5 Where is the stuff going? {#where-is-the-stuff-going}

I often wonder where this stuff is going. Some of it's been around since the 1700s. Apparently somebody has cared about it in every generation since then. Maybe I'm the last. Maybe it will finally wind up in the dump (Bryan, Daniel, Doug, Meg .... your call :-))

7.44.6 Where are WE going? {#where-are-we-going}

At one level we are stuff. I think you and I may both have a date to join all the loved ones we know in the Frankfort cemetery in the next few years (every time I go there I look around and say "Thelma/Bess/Mom/Dad/Grandma...what are YOU doing here?". As time goes on I "know" more and more people there.

Until then, back to "Cousin Henry"

Let us, then, be up and doing, With a heart for any fate ; Still achieving, still pursuing, Learn to labor and to wait.

And one of the passages that I'm sure inspired him:

54 But when this perishable will have put on the imperishable, and this mortal will have put on immortality, then will come about the saying that is written, “DEATH IS SWALLOWED UP in victory. 55 “O DEATH, WHERE IS YOUR VICTORY? O DEATH, WHERE IS YOUR STING?” 1 Corinthians 15

7.44.7 Closing {#closing}

Stay safe during this strange (COVID19) time. Enjoy time with your family. Enjoy your genealogy work (and thank you). Thanks for following up with Ebright on Dad's stone. Hope to see you soon.

Day 14 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.45 Cincinnati Reds Opening Day 2020 BaseballMLBRedsHopeCincinnatiTraditionsLife {#opening-day-2020}

Opening day [of baseball] in Cincinnati has always been a time of hope and optimism, a time to look forward to, a time to enjoy being with family and friends, a time to enjoy looking at the forsythia and daffodils heralding spring, to walk across the Ohio River on the Roebling bridge, to take in the annual Findlay Market Parade, and to hear the umpire (or Marty and Joe on the radio) say "Play Ball." I am declaring today my personal "Opening Day 2020"

{{< figure src="/ox-hugo/in_yankee_stadium_20180902.jpg" caption="Figure 47: In Yankee Stadium" width="400" >}}

7.45.1 Personal History {#personal-history}

I started following the Cincinnati Reds in'74 and went to my first game in 1975. In part, this was as a way to retain some connection with my Grandfather who died early in '74. My first baseball memory is of watching the final out of the '72 world series against Oakland with him.

The mid-70s were a good time to start following the Reds. "The Big Red Machine" (Rose, Bench, Perez, etc) had been in the series in '70 and '72 and wound up as World Champions in '75 (RedSox, 7 games, lots of drama) and '76 (swept the Yankees in 4 games). I was in the stands for one game in each of those series. Joe Morgan won back-to-back MVP awards, Foster had an amazing 52 home run year in '77. There was more than hope there. There was accomplishment to admire by one of the best teams in the history of the game.

{{< figure src="/ox-hugo/reds_1976_stein.jpg" caption="Figure 48: The Big Red Machine" width="400" >}}

Then there was Pete (Rose). Mr. Cincinnati, "Charlie Hustle", "The Hit King", batting champion, MVP, a 44 game hitting streak in '78. He eventually passed Ty Cobb's all-time hit count dumping a single in to right on September 11, 1985 (and THAT for me will, will always be THE event of 9/11). I was there and had driven 3 straight nights from Columbus to be in the stands for the event.

{{< figure src="/ox-hugo/pete_and_ken.jpg" caption="Figure 49: Statue of Charlie Hustle in action" width="400" >}}

I was in the stands again for another series victory in 1990 over the A's, which helped mitigate some of the pain caused by, shall we say, Pete yielding to his competitive spirit a little too much the previous year and as a result being banned for life from the game.

There have been good times (see above) and bad times including the early 80s after Dick Wagner prematurely dismantled the Big Red Machine, and the last 5 years where the Reds have finished last. But opening day was always a day of hope. A clean slate. A new start.

7.45.2 Traditions {#traditions}

Baseball is (was?) a game of traditions. Cincinnati had always been accorded the privilege of having the first opening game of the season in honor of their being the first professional baseball team (undefeated in 1869) and having, to some degree, inspired the birth of professional baseball itself. That tradition ended sometime in the 80s or 90s in favor of increased revenue to MLB from TV contracts having other teams open.

I had my own traditions. I attended 27 straight opening day games from 1976-2002. That streak ended the year I moved to Virginia, not because it was too far, but because the event had become a zoo and it became more of a crowd/media event than a time for fun and relaxation. Since then, I've attended at least one game every year running that streak to 46 years. That tradition too is in jeopardy if there turns out to be no 2020 season due to COVID-19.

And then there are the obligatory pre-game stops at Skyline Chili for coneys and chili-spaghetti before the game and Greater's ice cream after the game. If you're from Cincinnati, you know.

{{< figure src="/ox-hugo/skyline.jpg" caption="Figure 50: The One True Game Day Food" width="400" >}}

The sound of the Reds broadcasters, "Marty and Joe" (and later others after Joe retired), has been the backdrop to so many of our lives. Listening on the radio, in the car, out in the yard, late at night. Joe signing off with is signature "Rounding third and heading for home", and Marty's call "And this one belongs to the Reds" after every victory. Marty retired last year.

{{< figure src="/ox-hugo/marty.jpg" caption="Figure 51: Marty" width="400" >}}

And then there were the friends and family that went with me. Dad took us to my first game against his hometown Pittsburgh Pirates. Mom was in the stands with me the night Pete got 4192. I think my brother Mark was there the night Seaver pitched a no-hitter. My (future) wife Stephanie learned quickly that this was part of life. Son Daniel still has a life-long streak of one game a year going. And my friend Ken (two whom this missive is dedicated) has been to games with me for something like 40 years, including 20 or so opening games. And for the record, the Davy Concepcion was a better shortstop than Larry Bowa :-)

{{< figure src="/ox-hugo/family_at_GABP.jpg" caption="Figure 52: Family at GABP" width="200" >}}

{{< figure src="/ox-hugo/philip_and_jeff.jpg" caption="Figure 53: Uncle and Cousin at GABP" width="200" >}}

7.45.3 What now? {#what-now}

I was mentally gearing up to give Tommy Thrall a chance. He was to slated to replace Marty this year. The Reds spent significant money in the off-season building a team to get out of the cellar and back into contention. I was willing to hope again.

I was already toying with ending my 46 year streak this year anyhow. A few years ago baseball started using TSA-style metal detectors at the ballpark. Just as Opening Day became a zoo, there is something "too corporate" about MLB games these days, in contrast with, say, local minor league games. "Money-ball" has turned the game into a series computer/stats driven calculations where it is impossible to second-guess the manager without your own data analysis infrastructure and machine learning models. I no longer understand the basic stats, and I do data analysis for a living. My friend Ken refuses to carry a smart phone and it becoming nearly impossible to get/use paper tickets anymore. Add to that the possibility of having to wear masks and practice social distancing in stadiums designed for anything but that and it feels to me like the "national pass-time" will have transformed into some kind of Orwellian panopticon. No thank you. I wish major league baseball the best. It's been a wonderful part of my life.

7.45.4 Moving forward together {#moving-forward-together}

Life moves on. We can get stuck in the past or remember it fondly (or not), learn from it, and move forward.

{{< figure src="/ox-hugo/dogwood.jpg" caption="Figure 54: Dogwood, herald of spring" width="400" >}}

The "national pass-time" may never be back, unless you count socially-distanced people staring at their cell phones not talking to each other as a "pass-time". People don't walk or drive their horse-and-buggy to the "ball-field" anymore. People don't sit on their front porch waving at passers-by. You can't just play hooky from school or take the day off work for a relaxing afternoon in the sun forgetting your problems watching the "Mudville Nine" and cheering on the Mighty Casey.

So we (I at least) will enjoy the memory of what was, and look for new ways to slow down, new ways to enjoy life, and new ways to spend time with family and friends. To all those who've enjoyed a game or two or thirty with me, thanks. I enjoyed your company.

Look me up if there's some kids headed out to the pasture on the "back 40" for a pick-up game, a local little league game or a church softball tournament. Let's spend time together. Let's enjoy life together.

{{< figure src="/ox-hugo/reds_baseball.jpg" caption="Figure 55: Opening Day Baseball" width="400" >}}

PUBLISHED 7.46 The science is settled? Who says so? sciencephilosophy {#who-says-so}

I recently picked up reader of samples of important ancient texts that I've had for a LONG time and read excerpts from Socrates Apology. Short version:

Oracle of Delphi : "Socrates is the wisest man"

Socrates : Nice hypothesis, Apollo, you may be a god, but let's test it....

Socrates : Seeks out "The Wise" of his day, Politicians, Poets,

Artisans ... questions them ... has them all expose themselves
as blithering idiots.

Socrates : OK, "The Wise" are all blithering idiots. They are

not wise.   The hypothesis holds ... for now.

The Wise : (still mad), Yo, Socrates, here's some hemlock

(poison).  Drink up...

There is nothing new under the sun. In the mid 20th century, in response to questions about "what is a science" Karl Popper proposed "falsification" as a way do delineate scientific theories from non-scientific theories. The basic idea is that one counter-example disproves a theory.

Socrates defense (5th century BC) is a clear example of the method Popper had in mind. There is nothing new under the sun. And if we follow Popper and Socrates, "the science" (or the pronouncement of the god) is never "settled". Conclusions are always tentative and are always just one counter example away from being rejected.

For more on Popper and the "what is a science" question see:

8/7/20

PUBLISHED 7.47 Plato's Cave: a plea for good leadership philosophyleadership {#platos-cave}

You learn things when you read original sources for yourself.

I recently picked up a copy of Plato's allegory of "The Cave". I had known some of the highlights of the story before, the shadows on the wall, prisoners thinking that the shadows were reality, since that's all they ever knew, of one prisoner being taken out to see the sun and seeing the true light, coming back down and trying to, literally, enlighten his fellows, and being thought crazy.

{{< figure src="/ox-hugo/shadows.jpg" caption="Figure 56: Shadows on the wall" width="200px" >}}

But I had not known the context until reading the original. He was talking about the need for rulers of the state to have a higher vision, to have a view of truth, of the transcendent, to willingly leave the ivory tower, the "Isle of the blessed" if you will, where they desired to spend their whole life in contemplation of the truth, and to willingly go back into the cave to enlighten their brethren and lead with a knowldge of truth, not desiring the mundane (and false) trappings of the world of shadows (power, wealth, leisure, goods) for their own sake and for their own use. Rulers who do not have that vision, and who only focus on this life are bad rulers, and everyone (including the rulers) loose out.

Whereas the truth is that the State in which the rulers are most reluctant to govern [because they would rather be engaged in philosophical pursuits] is always the best and most quietly governed, and the State in which they are most eager, the worst. ...

Yes, my friend, I said; and there lies the point. You must contrive for your future rulers another and a better life than that of a ruler, and then you may have a well-ordered State; for only in the State which offers this, will they rule who are truly rich, not in silver and gold, but in virtue and wisdom, which are the true blessings of life. Whereas if they go to the administration of public affairs, poor and hungering after their own private advantage, thinking that hence they are to snatch the chief good, order there can never be; for they will be fighting about office, and the civil and domestic broils which thus arise will be the ruin of the rulers themselves and of the whole State. --- Plato, Republic, 8.vii

Where there is no vision, the people perish --- Proverbs 29:8, KJV

PUBLISHED 7.48 The History Of Rome - nihil novi history100DaysToOffloadrome {#history-of-rome}

I've been listening to "The History of Rome" podcast recently. There is nothing new under the sun: Plagues (er, "pandemics"), riots, xenophobia, wars, greed, ambition, and political factions.

It's filling in a lot of gaps and details for me. I would recommend if you're interested in history. Today's basic problems are not new.

{{< figure src="/ox-hugo/legoRoman.jpg" caption="Figure 57: Life-Size Lego Roman Soldier, Lego Store, Rome, 2019" width="200px" >}}

Post 22 #100DaysToOffload https://100daystooffload.com/

  • Why was Mark Twain's home town named for a general who ultimately lost? (hit, he spent 10 years wondering around Italy conquering everything but Rome itself and his tactics are still studied in military schools).

  • Where did Tolkien get the idea for war "Oliphants"? (related to the last question).

  • What is a Pyrrhic Victory? (hint: the kind you don't want many of)

  • What happens when you move from a democratic society made up of a broad base of citizens with wide distribution of wealth (farms) to one where most of the wealth is held in a few hands (hint: Jefferson and the other American founders had seen where that lead and thus championed the idea of the "Yoeman farmer")

  • How do you accomplish land (wealth) reform and not get killed? Ask the Gracci, wait, they were both killed. Ask the American Indians, wait, wait...

  • What happens when the reward structure for civic and military leaders morphs from community-minded civic responsibility to personal power bases and personal enrichment? (you get Caesar ... who gave us the basic calendar we use to this day ... and then got killed)

  • Is peace under military dictatorship (the "Pax Romana") worth the loss of freedom? What have the Romans ever done for us?

PUBLISHED 7.49 There's a lot to be said for climbing mountains latinlifehiking {#turba}

Vulgate (Latin): Matthew Chapter 5

1 Videns autem Jesus turbas, ascendit in montem...

or, roughly (my translation):

Jesus, however, seeing the crowd/mob/political disturbance went up on
the mountain...

The word "turba" per my paper dictionary tends towards a crowd that is politically disturbed. It can also mean an eddy (water) or a child's spinning top. Per https://en.wiktionary.org/wiki/turba#Latin it means...

stir, disturbance, tumult, uproar, trouble
mob, crowd, throng
multitude

The world is like that. You have to get a way to clear your head, to see clearly, to literally "get above it all". I like going up mountains (of the 1000 to 3000 foot variety in the eastern US).

Apparently, Jesus had this figured out. This was his opening move to set the scene for delivering the most profound sermon in history: "Blessed are the poor in poor in spirit...the meek..the peacemakers...those who thrust and hunger for righteousness..."

Go climb a mountain. See what happens (in your mind) next.

PUBLISHED 7.50 Dad treated people like people. I admire that. family100DaysToOffload {#people}

When my father was writing letters to faceless, nameless people stuck jobs answering IRS letters, he started with tiles like:

PENALTY OR NO PLENALTY, THAT IS THE QUESTION

Big, bold a the top, and IN CAPS.

When talking to nameless customer service drones on the phone, he always acted as if they were personally empowered, able to make decisions, and as if they were personally invested in their companies mission and in serving him, as their customer. He expected them to be engaged, to take responsibility, to solve problems, and to interact with him as a human being on equal terms.

In a way, this was naive, not recognizing how many people have just been turned in to mindless cogs in the machine. But in a way, it was him insisting on dealing with every human being as a person.

Dad treated people like people, whether they saw themselves that way or not.

I admire that. Thanks, Dad.

Post 24 #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.51 Joy in the sorrows of others? {#joy-in-sorrow}

"Why is it that man desires to be made sad, beholding miserable and tragic things which he himself would by no means wish to suffer? Yet he desires as a spectator to feel sorrow, and this sorrow is his pleasure..."

Was this guy watching too much news, political mudslinging or maybe just hanging out on Facebook?

No, this was Augustine in "The Confessions" circa AD 397 talking about his youthful fascination with stage plays. People have not changed. I have the same desire to feed on doom and gloom. It's not healthy.

So, what do you do? My answers have included unplugging from thew news (never owning a TV by choice), becoming very intentionally and deliberately apolitical, turning off Facebook (2016) and Twitter (2020) as they became political cesspools and conduits for voyeuristic negativity (e.g. "news") to creep back in to my life.

But humans don't change. I have not changed. I just choose to remove the fire-hoses delivering gloom and tragedy to me 24x7. It will find me again, and I will have to make more choices to cut it out.

""Always look on the bright side of life"

Monty Python, Life of Brian

Well, yes.

The Monty Python song embraces an outlook that sees a world full of bad things, and that it views, in the end, as meaningless and absurd (see their next movie, "The Meaning of Life" or John Cleese' most recent (2020) one man show "Why There Is No Hope" in which they drive the point home)

Augustine himself passed through a period where he embraced skepticism...literally the Greek philosophy of Skepticism that doubted everything, including the existence and know-ability of meaning itself. But he went further.

It's not enough to create a vacuum, to get rid of the bad, the negative. A vacuum will always be filled. My answer is to try to go where Augustine wound up as articulated by the Apostle Paul:

Finally, brethren, whatever is true, whatever is honorable, whatever is right, whatever is pure, whatever is lovely, whatever is of good repute, if there is any excellence and if anything worthy of praise, dwell on these things.

Philippians 4:8, NASB

What are you allowing to fill your vacuum ?

Post 33 of #100DaysToOffload https://100daystooffload.com/ (yeah, I'm going slowly)

PUBLISHED 7.52 History: escape to the past or lessons for the present? history100DaysToOffload {#why-history}

I've always liked history. And because the un-examined predilection is not worth having (γνῶθι σεαυτόν), I turn to Livy to understand it:

This I hold to be the chief value and reward of history, to have examples of all kinds set forth as an illustrious record, from which you may choose what is worthy of imitation in public and private life, and what is to be shunned as wrong in inception and ruinous in outcome

Livy, Preface to History of Rome.

Quoted from "Classics In Translation: Volume II, Latin Literature", MacKendrick and Howe, 1982

So, history provides examples for present living. It provides a moral and practical purpose, helping to guide our interactions with others in the present, but also...

To me on the contrary it is one of the rewards of my labors to turn away for a little while from the multitude of evils which our own age has witnessed, and to give my whole mind to those earlier times, released from every care or consideration by which the historian's mind might be troubled and distracted, if not deflected from the pursuit of truth.

Livy, Preface to History of Rome.

Quoted from "Classics In Translation: Volume II, Latin Literature", MacKendrick and Howe, 1982

The study of history can also provide a private, personal escape from the calamities and confusion of the present.

And of course, there can be value in loving or doing a thing for it's own sake. Without such passions, life becomes meaningless drudgery. That said, here, from this morning's introspection, are a few more possible reasons I might be fascinated with history. History can be:

  • an escape
  • a "safe place"
  • a source of examples for living in the world today
  • a place to find idealized people and institutions (that may never have actually existed in the form we visualize)
  • something fixed in a changing world
  • a place where we know the outcomes
  • a place where we can approach the world in the third person
  • something to give context and explanations to our current beliefs
  • a place where we do not have to enter into personal conflict
  • a collection of interesting stories

And, yes, I do have one son studying to be a History/Social Studies teacher and another who has devoured the western cannon. The apples do not fall far from the tree.

Post 34 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.53 Nixon's The One !!! history100DaysToOffload {#nixons-the-one}

For those who remember the "All in the family" sitcom:

Mister, we could use a man like Richard Nixon again

{{< figure src="/ox-hugo/nixon.jpg" caption="Figure 58: \"Richard Nixon\" by History In An Hour is licensed under CC BY 2.0" width="200px" >}}

Richard Nixon lost the 1960 election to John F. Kennedy in the closest (popular) election of the 20th century. There was a credible case to be made that voting irregularities in Chicago (read, the Richard Daley political machine) and Texas put Kennedy over the top (in the electoral college). And yet...

On Wednesday afternoon, November 9, 1960, Nixon officially conceded the election to Kennedy. He told his friend, journalist Earl Mazo, that “our country cannot afford the agony of a constitutional crisis.”

https://www.constitutioncenter.org/blog/the-drama-behind-president-kennedys-1960-election-win/

On this election day 2020, I reflect, in all seriousness that "We could use a man like Richard 'I am not a crook' Milhouse Nixon again", a man with the character, morals and civic pride to put the interests of the country above his own.

Post 35 of #100DaysToOffload https://100daystooffload.com/

PUBLISHED 7.54 What a day for a daydream 100DaysToOffload {#dream-on}

"Ladies and Gentlemen, may I have your attention..."

This piece began as some thoughts on "attention" and wound up as reflections on daydreams. I think I'm a fan of daydreaming.

  • Attention

    Attention is a finite commodity. You only have so much attention to give in your life, in your day. Parents want your attention. Brothers and sisters and friends want your attention. Teachers want your attention. Employers want your attention. Politicians want your attention. Social media wants your attention. And, of course, advertisers[^fn:16] want your attention (the most literal translation of the Latin roots of the word "advertisers" would be rendered "turn-toward-ers")

    Sometimes there is a reward (punishment) for your attention (in-attention). Sometimes you are just "had" and your money goes away with your attention, never to return.

    You never get your attention back once you've given it. You can't create more attention. You can't save attention. You can waste attention. You can fragment attention. You can destroy attention.

    Attention is a precious, irreplaceable commodity. Guard it. Use it wisely.

    Which leads to...

  • Daydreams

    We say daydreamers are "lost in their own thoughts". They don't do the things other people want them to do. They don't give their attention to things other people think they should give their attention to.

    But (some) dreamers change the world.

    All men dream: but not equally. Those who dream by night in the dusty recesses of their minds wake in the day to find that it was vanity: but the dreamers of the day are dangerous men, for they may act their dreams with open eyes, to make it possible.

    T.E. Lawrence, https://en.wikiquote.org/wiki/T._E._Lawrence

    Daydreamers are "their own people". And that bothers people who want them to be somebody else, to pay attention to certain other things.

  • One daydreamer

    This may not be "the perfect blog post". It may not have the perfect structure and flow. It may not end concise advice you can live by and a nice list of actionable items.

    I've going to end it with a quote from a daydreamer who was torn apart for 40 years by demands on his attention from school teachers, societal norms, family, fans who loved him, people who hated him, the music industry, his band-mates, religious teachers, artists, social causes, politicians, the media and lawyers:

    ...
    
    People say I'm lazy
    Dreaming my life away
    Well they give me all kinds of advice
    Designed to enlighten me
    When I tell them that I'm doing fine watching shadows on the wall
    "Don't you miss the big time boy, you're no longer on the ball?"
    
    I'm just sitting here watching the wheels go round and round
    I really love to watch them roll
    No longer riding on the merry-go-round
    I just had to let it go
    
    I just had to let it go
    
    J. Lennon, Father, "house-husband" and bread-maker, 1980
    

    Dream on.

    Post 37 of #100DaysToOffload https://100daystooffload.com/

    8 Outdoors outdoors {#outdoors}

    PUBLISHED 8.1 Hikers, Volunteers, Hard Work and Relationships snark {#2023-03-11}

    In your "Presidents Log Book Entry" article in the monthly newsletter, you talked about the need for the Potomac Appalachian Trail Club (PATC) to build its "brand identity" to reach our target "consumers". About that...

    I'm involved in PATC as a trail maintainer and an avid hiker with 1700 miles of an AT Section hike over 14 years. I'm in it to meet the likes of Tom Johnson, one of your predecessors as PATC president. I ran into him once in the middle of a long day-hike, corresponded a bit and devoured the copy of the history of the PATC which he wrote and sent to me shortly before he passed on while leading a hike. I'm in it to work with Jon & Katherine Rindt, Mosby district supervisors. I admire their non-ceasing selfless work to clear 100s of blow downs, corral the cats (volunteers like me), fix signage, work with the county/state/parks to get parking lots fixed, etc. I'm in it to take trail maintenance classes from the likes of Robert Fina and to, again, admire the dedication, learning and investment of time and resources he puts into it. I do my little bit, but there are giants out there. I'm in it to take walks with my family, to meet casual hikers and to talk to the steady stream of thru-hikers who are on a mission. I'm in it drag my daughter-in-law, a professional ornithologist, out with me to do maintenance and to be amazed as she identifies 30+ in species of birds around us on one outing without even seeing most of them. She then put together a display about the birds that is in the display case at the Tucker Lane parking lot (thanks to Jon, too).

    So, yeah, brand identity. I'd welcome the chance to get to know you and to talk to you about it, one-on-one. I could use some help cleaning out water bars and weed-wacking my section once the vegetation gets going later this spring. Let me know if you'd like to help.

    #48 of #100DaysToOffload take 2.1, https://100daystooffload.com/

    PUBLISHED 8.2 Spring Creeping Up The Mountain 100DaysToOffload {#2022-04-17}

    This is the view from White Rocks 13 miles north of Harpers Ferry. In the fall you can see the colors (leaves changing) creeping down the mountain because it’s colder as you go up. Here you can see spring creeping up the mountain.

    {{< figure src="/ox-hugo/spring_creeping.jpg" caption="Figure 59: \"Spring Creeping Up The Mountain\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

    #25 of #100DaysToOffload take 2, https://100daystooffload.com/

    PUBLISHED 8.3 Hope springs eternal. hiking100DaysToOffload {#2022-04-03}

    • The sun is always shining.
    • The flowers are always blooming.
    • There are no bugs.
    • The trail is always flat.
    • There are no rocks.
    • It never rains.
    • It's never too cold.
    • It's never too hot.
    • There's never overcrowding.
    • Your gear always works.
    • Your physical conditioning is always good.

    {{< figure src="/ox-hugo/2022-04-02-lake_small.jpg" caption="Figure 60: \"Sun on lake\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

    This is bloodroot. I also saw a few early violets. The daffodils are up. The forsythia are starting. Red-buds soon. Then dogwoods. Spring in northern Virginia !

    {{< figure src="/ox-hugo/2022-04-02-flower_small.jpg" caption="Figure 61: \"Spring Flowers\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

    This is a nice flat stretch. Somehow every time you start you think it will be like this.

    {{< figure src="/ox-hugo/2022-04-02-perfect-trail_rotated.jpg" caption="Figure 62: \"Perfect trail\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

    This is a water-removal feature that was being installed by fellow trail maintainers as I hiked. It is a textbook example that follows the "SET" principal where the features are Sustainable, Effective and Traversable.

    {{< figure src="/ox-hugo/2022-04-02-water_small.jpg" caption="Figure 63: \"Water Removal - Textbook Example\" by George Jones is licenced under CC SA 4.0" width="400px" >}}

    Somehow, getting out in nature in early spring renews hope.

    #22 of #100DaysToOffload take 2, https://100daystooffload.com/

    PUBLISHED 8.4 Hiking and Art hiking100DaysToOffload {#2022-02-23}

    From Eagles Rock you can look back east and see the Massanutten range and pretty much all of Shenandoah National Park. From Tibbets Knob there is a nice view of a valley and "Big Schloss" which is a rock formation and the destination of another popular local hike.

    {{< figure src="/ox-hugo/cowart.jpg" caption="Figure 64: \"But is it art?\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

    More pictures here https://pixelfed.social/p/eludom/402070358478944399

    #11 of #100DaysToOffload take 2, https://100daystooffload.com/

    PUBLISHED 8.5 Why I hike 100DaysToOffloadhiking {#2022-02-07}

    Why I hike. A picture is worth 1000 words

    {{< figure src="/ox-hugo/sun-behind-ice-on-tree.jpg" caption="Figure 65: \"Sun behind ice on tree\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

    I went hiking in Shenandoah national park Satuday. Pictures here https://pixelfed.social/p/eludom/396268280449793695

    I had not been out much lately (winter, cold), but this reminded why I hike. You get to the top (in this case, of "Mary's Rock") and have breathtaking views (often when you are already out of breath :-). There is the sense of accomplishment in having finished the climb (in this case a modest ~1000 plus feet up, 1.5 miles). You meet people (I met an older gentleman with a camera, and we stopped and talked photography for 20 minutes, I ran into some old friends). You have time to think (assuming you don't blast music or podcasts into your brain while you could be letting it enjoy the quite of nature). And it's fun.

    In some cases you take calculated risks ... this time the trail was 3 miles of ice, treacherous in spots. I "only" fell twice. Others had cramp-ons on their shoes to give traction, I just had my poles and did "rock hopping" most of the way up, avoiding the ice. But there is nothing to match the feeling you get when you reach the top and stare out into infinity across the mountains and valleys.

    There are 200 some words here. Which are worth about 1/5 of a picture.

    #5 of #100DaysToOffload take 2, https://100daystooffload.com/

    PUBLISHED 8.6 Hiking, the Appalachian Trail, Health and Choices hikingAppalachianTrailATCPATCKatahdinoutdoors {#hiking-and-strange-times}

    I've section-hiked over 1000 miles on the Appalachian Trail. Through-hikes have been shut down this year, upsetting plans people have made for years. I'm headed out today to do maintenance today. Not sure what I'll find. I will be good to be out.

    {{< figure src="/ox-hugo/katahdin-abol.jpg" caption="Figure 66: Mt. Katahdin from Abol Bridge, 2018" >}}

    Day 05 of #100DaysToOffload.

    I like to hike. The Appalachian Trail is near my house. Literally the day before the Appalachian Trail Conservancy (ATC) recommended EVERYONE stay off the trail (180 degrees against its primary mission), I accepted the responsibility of maintaining a 3 mile section for the Potomac Appalachian Trail Club (PATC). Just yesterday I got word that trail maintainers have a local exception and are allowed to be on the trail. I'm going out this afternoon to see how much underbrush needs cut, if there are any trees that need chainsaw work, if any work is needed on erosion control, etc. It will be a joy to "be out" again.

    A couple weeks before the cronavirus lockdown started, I went for a hike on the Tuscarora Trail. It was going to be a quick day hike. Up 900 feet, along a ridge, back down. Maybe 8 miles. Going up the hill I fell on a rock and sliced my forearm open and wound up going the ER in Romney, WV with 21 stitches. I accept some risk when I choose to hike (there are bears too). With the potential strain on the medical system and emergency care being uncertain, I'm choosing not taking risks now.

    I am a "section hiker". I go out when I can, usually 2 weeks or so a year. I have over half the Appalachian Trail done (1000+ miles) and had plans to go out Memorial Day (May 25) for two weeks. That's probably not happening. I'm not young. I only have so many years to get this done. Health is never a given.

    The ATC asked all hikers this year to call it off: through hikers, section hikers as well as day hikers. Through hikers are people who have re-arranged their life, their finances, their work and family life to spend 6 months on the trail. For many, it may be a once-in-a-lifetime opportunity. But for most, through-hiking involves staying together in shelters on rainy nights, sleeping in bunk-houses in hostels, getting rides with local shuttle drivers, going into trail towns to shop for re-supply, etc. These all make social-distancing hard. And there is the assumption that there will be some local medical care available, like that which I needed when I fell. So the ATC asked people to shut it down this year.

    The last time I was out hiking, the day after my initial trail-maintainer training, the parking lot at the trail-head was packed. Not sure what I'll find today. Crowds? Empty Trails? A persistent through-hiker? People make their own choices.

    {{< figure src="/ox-hugo/on-katahdin.jpg" caption="Figure 67: me, on top of old smokey, 2018" >}}

    PUBLISHED 8.7 WARNING: Extreme Social Distancing In The Rain outdoorsbackpackinghikingREI {#2020-05-14}

    I've got some extreme social distancing going on this weekend. It requires gear. Might involve a mountain or two. Loaded up the pack and put it on. Feels good! There may be rain, but

    There is no bad weather, only bad gear

    {{< figure src="/ox-hugo/gear.jpg" caption="Figure 68: Social Distancing Gear" >}}

    Will have minimal connectivity, so #100DaysToOffload will be on hold for a few.

    Day 12 of #100DaysToOffload https://100daystooffload.com/

    PUBLISHED 8.8 Tuscarora Trek backpackinghikingREIoutdoors {#2020-05-17}

    May 15-17, 2020 Son Bryan ("Music Man"), Jason Boyle ("Alaska") and I ("Curious George") hiked 30 miles on the Tuscarora trail.

    The picture below shows Bryan standing on Eagles Rock with the first 11 miles of the hike on the ridge behind him.

    {{< figure src="/ox-hugo/eagles-rock.jpg" caption="Figure 69: Bryan at Eagles Rock" >}}

    Full trip report and more pictures here: https://outdoorfoo.wordpress.com/2020/05/17/tuscarora-trek/

    Day 13 of #100DaysToOffload https://100daystooffload.com/

    PUBLISHED 8.9 Things that fall in the river get wet lifeoutdoors {#get-wet}

    {{< figure src="/ox-hugo/paddling.jpg" caption="Figure 70: Bryan paddling on the Shenandoah" width="400px" >}}

    8.9.1 Intro {#intro}

    This weekend my son Bryan, friends (former scouts from Philmont days) Sam and Preston and friend Jack went on an canoe trip down the Shenandoah river. We were only dumped in the river by two of the two rapids we encountered. More on that below.

    {{< figure src="/ox-hugo/swimming.jpg" caption="Figure 71: Things that fall in the river get wet" width="400px" >}}

    8.9.2 Other people having fun {#other-people-having-fun}

    Along the way we saw many people out enjoying the Memorial Day weekend along the river. The photo below shows a water slide set up to let kids slide into the river, with a twist: the last 10 (3m) feet or so of the slide were down a mud bank. For safety there was a kayak in the water to help the fun-havers out if needed

    {{< figure src="/ox-hugo/mud-slide.jpg" caption="Figure 72: Water and Mud Slide Into The River" width="400px" >}}

    8.9.3 Getting Dumped the first time {#getting-dumped-the-first-time}

    The river was up. Running about 6 feet (1.8m) at Luray. The outfitters along the river recommend only going at 5 feet (1.5m) or less. Our second day out we were making 5 miles per hour (8 km/h).

    We hit the Compton Rapids. The swells were 3 feet (0.9m) or so. We made it about half way through, taking on water, and then got dumped. Life jackets are a good thing. It was a little dicey floating though the end of the rapids. We kept our paddles and stayed with the upside-down canoe. The only losses were a couple water bottles, cup holders and a fishing rod (other canoe). Most everything was tied down.

    We floated 10 or 20 minutes in still-ish water and wound up swimming our swamped canoe to the banks where there was a large group camp-out. Some of the people (speaking pretty-much only Spanish) helped get our sorry selves and swamped canoe out of the water and drained out. They gave us 6 water bottles which replaced the water we had lost. Gracias !

    8.9.4 Getting Dumped the second time {#getting-dumped-the-second-time}

    {{< figure src="/ox-hugo/swamp-number-2.jpg" caption="Figure 73: Pulling out after the second spill" width="400px" >}}

    The second time we got dumped was a about a mile from the end of the trip. Our planning had failed to disclose the presence of these rapids, just had it had failed to disclose the possibility of portage around the first set (Preston :-))

    The other canoe went first. We hung back in the smooth (but fast) water so as not to run into them if they had trouble. They did. They dumped about half way through. These canoes were a little heavy with gear and people and not horribly stable. Extra water in the boat does not help.

    I decided to go to the shore and work thorough options. We reached shore 10 or 20 yards (9 or 18) upstream from the rapids. I grabbed a tree root to hold us in place, but the current flipped us. At that point I made the call to "abandon ship". We let the canoe go and swam to the bank rather than float the rapids in life jackets.

    We climbed up the bank, staggered downstream and found that our friends were a) OK and b) had snagged our canoe.

    8.9.5 The end {#the-end}

    In the end, we had minimal losses, no significant injuries, no harm, no foul? Live and learn? Life jackets, tying down your gear and quick thinking are your friend. And fun was had in the face of self-selected risks.

    {{< figure src="/ox-hugo/starting-out.jpg" caption="Figure 74: At the takeout point (BEFORE we were drowned rats)" width="400px" >}}

    Days 15 and 16 of #100DaysToOffload https://100daystooffload.com/

    PUBLISHED 8.10 AT Hiking 2020: 1500 miles down, 700 to go hikingAppalachianTrailoutdoors100DaysToOffload {#AT2020}

    1500 miles down, 700 to go to finish section hiking the Appalachian Trail with 215 miles completed this year in 3 trips.

    Of course, I have some of the hardest miles left: the Smokies, Mt. Washington, the Whites, the Presidentials, the Bigelows, but with persistence, luck, health, constant gear tweaks (and some HARD hiking) I should finish in a few years.

    {{< figure src="/ox-hugo/2020-AT-Milage-Status.png" caption="Figure 75: Miles to go before I sleep" >}}

    #100daystooffload #hiking

    8.10.1 9/6 - 9/12/2020 Bennington VT to Great Barrington, Mass (Rt. 23) {#9-6-9-12-2020-bennington-vt-to-great-barrington-mass--rt-dot-23}

    82 miles, 6 nights.

    {{< figure src="/ox-hugo/TheCobbles.jpg" caption="Figure 76: View From The Cobbles, Mt. Greylock, Cheshire Mass (in valley)" >}}

    From Sunday 2020-09-06 to Saturday 2020-09-12 I hiked 82 miles SOBO on the Appalachian Trail from Bennington, VT (VT 9) to Great Barrington, Mass (Mass 23). Highlights (high point) of the trip included Mt. Greylock, the highest point in Mass, the lovely town campsite in Cheshire, Mass, Camping by a beaver dam Sunday night and seeing Moose in the morning, lots of beaver dams/bogs, staying 2 nights (Thursday, Saturday before driving home) at the Berkshire Lakeside Lodge, a lovely little motel .2 off the trail, and, of course, lots of hiking and people. Resupply in Dalton, Mass at the Post Office. Chocolate shake and meatball grinder in Cheshire. Pizza and milk in Dalton. Magic coming down to 20 Thursday in the most-of-the day rain. The weather, except for Thursday rain, was excellent. Upper 50s to lower 80s.

    Pre-trip I stopped at a Legend Of Sleepy Hollow/Rip Van Winkle site, and just down the road the Martin Van Buren home, a short hike in Philmont (!), NY to a high waterfall that people were swimming under, saw some wild turkeys. Stayed at the Days Inn in Great Barrington and got a shuttle Sunday morning from Debbie Andrus

    Post trip, I went back to the Berkshire Lakeside Lodge. I'd spent time in the area. Normal Rockwell museum. Lakes. Tanglewood music festival (Boston Symphony summer series). Shaker village (I camped at the ""Shaker Campsite""). West Stockbridge is a lovely little town. It has the ""TurnPark"", an outdoor interactive art park where I met one of the artists (cutting the weeds). Good food. Probably expensive and crowded in a non-COVID high season. "

    8.10.2 7/3-7/4/2020 Davenport Gap to Hot Springs {#7-3-7-4-2020-davenport-gap-to-hot-springs}

    33.9 miles, 1 night

    {{< figure src="/ox-hugo/MaxPatch.jpg" caption="Figure 77: View From Max Patch in the Morning" >}}

    Breakfast at diner. Shuttle to I-40. Lost 1 - 1.5 hours because shuttle driver (NYC guy) was a slave to his GPS, would not just hop on 40. On trail at 10. Made it to Max Patch about 6. UP HILL. I was shot. July 3 on the summit was a mob scene. I camped 1/2 mile short. Tried cold dinner (mashed potatoes + stuffing + chicken). Meh. Went up for sunset, and again just after sunrise. Bueatiful. Hiked 21 back into Hot Springs. Hiked a little way with 2 girls from Tucker/Stone Mountain, GA (where my wife went to school). Hit town. Liquid. Shower. DROVE to store. White Castles. Bed. Drove home. %65.1 of trail done.

    8.10.3 6/17-6/24/2020 Hughs Gap to Hot Springs {#6-17-6-24-2020-hughs-gap-to-hot-springs}

    99 Miles, 7 nights.

    {{< figure src="/ox-hugo/RobBird.jpg" caption="Figure 78: Rob Bird provided \"Trail Magic\" 2 hikes in a row" >}}

    "Mountian Squid" joined me for the first 3 miles. Ran into 2 older Russian couples who were out for the first time. Hiked with the owner of https://www.flowmarshall.com/ gallary in Marshall, NC and her British husband for a bit. Stayed at Uncle Johnnies 1st night, shuttled to Hughs Gap. Stayed at Uncle Johhnies 3rd night, resupplied, hiked on to Hot Springs. 20 into hot springs from Laurel Fork. Zeroed at Laughing Heart hostle, shuttled back to Irwin to get car, drove, car broke down in Wythville (axel), rented a car, came home, started a new job, went back to Wythville Wednesday night. Got car Thursday drove back to Hot Springs/Laughing Heart, run by "Chuck Norris" and "Tigger" ... former Jesuit retreat center/hostel. Great place. Got food in Hot Springs hiking in. Big hill/rock steps coming down.

    Post 26 #100DaysToOffload https://100daystooffload.com/

    9 Latin latin {#latin}

    PUBLISHED 9.1 Doing Latin without thinking about it 100DaysToOffloadduolingo {#2022-02-06}

    This may be obvious to people who are fluent in several languages, but communicating in different languages does not have to be like working a proof in geometry. The Latin I learned focused on being able to consciously understand all 144 different inflected forms (yes, 144) of any standard Latin verb. Pretty sure most children in antiquity could not separate a genitive geurnd from a supine from a plural perfect passive participle. But they could talk.

    {{< figure src="/ox-hugo/ForumRomanarumNocte.jpg" caption="Figure 79: \\"Forum Romanarum Nocte, Anno MMXIX\\" by George Jones is licenced under CC SA 4.0" width="600px" >}}

    I've been doing both the Spanish and Latin courses on duolingo for a few weeks (24 days, per the app). Today, I had an experience I've not had in 35 years of toying with Latin: I was translating without being aware of conjugations or declensions or even if I was translating to or from Latin. They flip quickly between reading, listening and written translation exercises in the native language and the language being learned. It was so effective that I forgot which language I was working in. It was just ideas and words.

    To repeat a quote from an earlier blog post:

    There is no reason why learners should be made to treat every Latin text as puzzle to be deciphered into translation, rather than a specimen of normal human communication to be understood as such.

    http://blogicarian.blogspot.com/2019/03/argumentum-ad-ignorantiam.html?m=1

    Euge, Duolingo!

    #4 of #100DaysToOffload take 2, https://100daystooffload.com/.

    PUBLISHED 9.2 Learning Latin the wrong way, an argument against ignorance. latin {#2022-01-29}

    I'm doing some of the Duolingo Latin course. Who knew you could shop, converse and joke in Latin? Certainly not the classics professors I learned from. Quid pudor est.

    There is no reason why learners should be made to treat every Latin text as puzzle to be deciphered into translation, rather than a specimen of normal human communication to be understood as such.

    http://blogicarian.blogspot.com/2019/03/argumentum-ad-ignorantiam.html?m=1

    A longer quote from the article:

    The fact that there aren't any Romans to chat with anymore didn't stop people like Erasmus from using it as a conversational language with other educated people. Even though there is little practical need for spoken proficiency in Latin anymore, there is no reason why learners of Latin today should be railroaded into the kind of semi-literacy that academic classicists often acquire. There is no reason why learners should be made to treat every Latin text as puzzle to be deciphered into translation, rather than a specimen of normal human communication to be understood as such.

    There's a lot more. Very cogent. Makes me sad I (halfway) learned Latin the way I did. Duolingo is good.

    Lingua latina vere vivit.

    ---George Jones

    PUBLISHED 9.3 Vis tibi sit latinrome {#2020-05-04}

    On the occasion of the ancient Roman Festival Bella Stellaria, I wish you

    Vis tibi sit

    Lucas Skywalker

    magis de bella stellaria hic: https://la.wikipedia.org/wiki/Star_Wars et hic https://twitter.com/tutubuslatinus/status/1257065883614109696

    Day 05 of #100DaysToOffload.

    PUBLISHED 9.4 Latin Flash Cards in the 21st century (2773 AUC) 100DaysToOffload {#flashcards}

    Latin flash cards are not what they were in 1983: https://latinlexicon.org.

    It's got a thing where you can pop in a sentence (say, one form Cicro or random #Latin conversations on twitter (yes, they exist)), and you can click on the words (yellow above), it shows you all the possible words that particular inflected word might be and then offers to build flash cards for you...complete with citations/examples from the literature....I know what my Latin reading tool is from here on out.

    # #+attr_html: :width 200px

    {{< figure src="/ox-hugo/flashcards.png" >}}

    Post 23 #100DaysToOffload https://100daystooffload.com/

    10 Writing writing {#writing}

    PUBLISHED 10.1 100DaysToOffload, Take 2 {#2022-02-03}

    I'm going to make another run #100DaysToOffload https://100daystooffload.com/

    First attempt made it to about 40 posts. Interrupted for a year or so in part by a refusal to post anything else on github, which was where I was hosting my blog and the saga of getting a raspberry pi-based blog to my liking up-and running chronicled in part here http://curious.galthub.com/blog/no-marketing/ and here http://curious.galthub.com/blog/hugo-via-mysocket/

    Pretty sure I won't make it daily, but I've got a huge backlog of ideas (from my daily paper journal, email to friends, etc) and now, a place I feel good about to put them out.

    Stay tuned. Thanks Kev.

    #1 of #100DaysToOffload take 2, https://100daystooffload.com/.

    PUBLISHED 10.2 But that would be too easy {#2022-01-23}

    This is a navel-gazing simple desultory philippic about adventures in yak-shaving. It is dedicated JTR's ox-hugo theme I've borrowed for the second time. Thanks!

    "But you could just use wordpress"

    he tells himself.

    "Ahh, but then think of all the yak shaving you would miss."

    he responds to himself.

    "Opportunity cost, he thinks...".

    "Yessss, preciousssss. The opportunity cost. Gollum. Gollum. Gollum."

    These are notes-to-self on converting my blog to using JTR' new hugo template.

    These are mostly of interest to (my future) self and JTR.

    This is round 2 of how I use ox-hugo to pubish my blog. Round 1 is documented here https://curious.galthub.com/blog/hugo-org-github/

    10.2.1 The work flow {#the-work-flow}

    The general work flow is

    • .org file -> ox-hugo export -> .md in content/
    • .md in content/, images/ and static/ -> hugo -> .html in docs/
    • .html files in docs/ -> rsync -> web server public html directory

    10.2.2 DONE [3/3] Action Items {#done-action-items}

    • DONE [7/7]Testing and figuring out what to chang
    • DONE Clone the JTR current template

         git clone https://gitlab.com/taonaw/taonaw
      
      • DONE Set up new capture template
         (setq org-capture-templates
            (quote (
                    ...
                   ("h" "hugo blog" entry (file "~/blog/drafts.org")
      "*** TODO %^{title}
      :PROPERTIES:
      :EXPORT_FILE_NAME: %(format-time-string \"%Y-%m-%d\")
      :EXPORT_HUGO_PUBLISHDATE: %(format-time-string \"%Y-%m-%d\"):
      :END:
      
      The short story ..
      
      #+caption: [[https://FOO.COM/BAR/BAZ.JPG][\"Name of work\" by WHO is licensed under cc by 2.0]]
      #+attr_html: :width 200px
      [[file:images/BAZ.JPG]]
      
      #+hugo: more
      
      The long story...
      "
                   )
      
    • DONE Update config.toml

      ```text diff --git a/config.toml b/config.toml index f9089c30..abc6cd5c 100644 --- a/config.toml +++ b/config.toml @@ -1,17 +1,17 @@ enableRobotsTXT = true canonifyURLs = true -baseurl = "https://helpdeskheadesk.net/" +baseurl = "http://curious.galthub.com/" publishDir = "docs" languageCode = "en-us" -title = "The Art of Not Asking Why" +title = "Curious Musings" # themesDir = "themes" # theme = "hyde" -disqusShortname = "taonaw" +#disqusShortname = "curious" footnoteReturnLinkContents = "[^ back]"

      [author]

      • name = "JTR"
      • homepage = "helpdeskheadesk.net"
      • name = "George Jones"
      • homepage = "curious.galthub.com"

      # If Porting existing theme [original] @@ -20,7 +20,7 @@ footnoteReturnLinkContents = "[^ back]"

       repo = "https://www.github.com/mdo/hyde"
      

      [params]

      • description = "A Blog by JTR: Tech, Life, and the Stuff in Between."
      • description = "A Blog by George Jones: Musings on life, computers, security, etc.."

        themeColor = "theme-base-0a"

      [paginator]

      
      <!--list-separator-->
      
      -  DONE Update the sidebar
      
      ```text
      diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html
      index 6700d4d7..06ab109f 100644
      --- a/layouts/partials/sidebar.html
      +++ b/layouts/partials/sidebar.html
      @@ -17,6 +17,9 @@
               {{ range .Site.Menus.main -}}
                 <li><a href="{{.URL}}"> {{ .Name }} </a></li>
                {{- end }}
      +        <!-- ELUDOM - list all my posts -->
      +        <h4><a href="/blog/">All Posts ►</a></h4>
      +
             </ul>
             <ul class="sidebar-nav">
                 <h3>About</h3>
      @@ -24,23 +27,25 @@
                     <a href="{{ .Site.BaseURL }}/about">Author</a>
                   </li>
                   <li>
      -         <a href="{{ .Site.BaseURL }}/taonaw">TAONAW</a>
                   </li>
      +            <!-- ELUDOM - large image at bottom of sidebar -->
      +            <img src="/thinker.png">
             </ul>
             <ul class="sidebar-icons">
               <li>
      -     <a href="http://helpdeskheadesk.net/index.xml"><i class="fa fa-rss-square fa-lg" aria-hidden="true"></i></a>
      -   </li>
      -   <li>
      -     <a href="https://mastodon.technology/@jrss"><i class="fab fa-mastodon fa-lg"></i></a>
      +          <!-- ELUDOM - change link to RSS feed  -->
      +          <a href="http://blog.galthub.com/index.xml"><i class="fa fa-rss-square fa-lg" aria-hidden="true"></i></a>
               </li>
               <li>
      -     <a href="https://keys.openpgp.org/search?q=brownexitus%40protonmail.com"><i class="fas fa-lock-open fa-lg"></i></a>
      +          <!-- ELUDOM - change link to mastadon id  -->
      +          <a href="https://fosstodon.com/@eludom"><i class="fab fa-mastodon fa-lg"></i></a>
               </li>
      +        <!-- <li> -->
      +        <!--   <a href="https://keys.openpgp.org/search?q=brownexitus%40protonmail.com"><i class="fas fa-lock-open fa-lg"></i></a> -->
      +        <!-- </li> -->
             </ul>
           </nav>
         </div>
       </aside>
      
    • DONE Delete most of JTR' content

      • Just delete the stuff you don't want in content/

      • Beware of browser caches with old tags (refresh)

    • DONE [6/6] Remove/replace JTR' custom artwork with Thinker

      • DONE stop JTRs image from loadiing

        Comment out in /static/css/hyde.css, both

        /* background-image: url("/taonaw_logo.png"); */ twice

        George Jones :emacs: :orgmode: @eludom
        @jrss Having trouble figuring out where to remove your custom graphic from the sidebar.  Thought maybe favicon.png but I can't figure out where to remove it?
        
        JTR :emacs:☕
        @jrss@mastodon.technology
        
        @eludom taonaw_logo.png and title-logo.png in static I believe.
        
        George Jones :emacs: :orgmode: @eludom
        
        @jrss OK.   Killed it (comment) in .css.   SOMEONE (browser, hugo server, ...) was caching the image and refused to let go even after I renamed the files.
        
        • DONE add "thinker" at bottom of "about" in sidebar

        • Add immage static/thinker.png

        • Update the sidebar

        <ul class="sidebar-nav">
                  <h3>About</h3>
                    <li>
                      <a href="{{ .Site.BaseURL }}/about">Author</a>
                    </li>
                    ...
                    <!-- ELUDOM - large image at bottom of sidebar -->
                    <img src="/thinker.png">
        
           <img src="https://eludom.github.io/title-logo.png">
        
      • DONE load thinker image from somewhere other than github. Local?

        Make the following changes to layouts/partials/sidebar.html

        
                    <!-- <img src="https://eludom.github.io/title-logo.png"> -->
                    <img src="/thinker.png">
        

        and static/thinker.png

        • DONE Test on mastadon once live

          • The "normal" way to validate "twitter" cards is on the twitter web site https://cards-dev.twitter.com/validator
          • since I started using twitter cards on my blog posts, I've quit twitter. No account
          • The twitter validator requires a twitter login.
          • But mastadon (and others I'm sure) read and use the twitter card info in links/posts.
          • SOOO ... validate live by posting links to blog posts that have (should have) twitter cards to mastadon and see if they work. I tested with a private message to myself.
        • DONE Add my index of all posts back in

        Just add this to layouts/partials/sidebar.html

           <h4><a href="/blog/">All Posts ►</a></h4>
        
      • DONE Remove comment mechanism or sign up for service

        • Not there any more ?
        • Check again when I go live
    • DONE [2/2] Transition to new template
    • DONE [6/6] Make a clean version of JTR new template

      • DONE Do a clean checkout of JTR new template

        git clone https://gitlab.com/taonaw/taonaw
        git checkout -b20220122-barebones
        
        • DONE Pair down to almost no content

        • e.g. content/posts (mine go to content/Blog)

        • DONE Add my own minimal content (sidebar, title, a few posts)
        • DONE Make sure it works
        • DONE [2/3] Fix any problems
        • DONE Replace "Thinker" image with something attributed/credited

          Using the following, with attribution (alt tag), but local copy of image

              Short Link (Direct Image Link)
              <a href="https://www.pikpng.com/pngvi/mxwhTw_thinker-rodin-thinker-clipart/" target="_blank">Thinker - Rodin Thinker Clipart @pikpng.com</a>
          
          • DONE Comment mechanism not working, need account or delete it.
              Your Commento.io account has been suspended. Go to the Commento dashboard to resolve this.
          

          Comment out disqusShortname in config.toml

              # disqusShortname = "curious"
          

          layouts/_default/single.html

          defines

          {{ if .Site.DisqusShortname -}}
          <hr>
          <h2>Comments</h2>
          <script defer src="https://cdn.commento.io/js/commento.js"></script>
          <div id="commento"></div>
          {{- end }}
          
        • TODO Figure out why hugo thinks I don't have a #+title

          • ox-hugo export all seems to be broken. Complains that #+title not found. May have to export one by one.
        • DONE commit changes, possibly push branch

        • Note taken on [2022-01-22 Sat 11:10]

          • pushed to ssh://gitea@git.galthub.com/gmj/taonaw.git
    • DONE [5/5] Pair down my old blog (keeping same .git)

      • DONE create a branch of my content for merging in new stuff
      • DONE Delete most everything but content
      • DONE copy over templates etc from clean JTR version
      • DONE re-export my posts from curious.org

        • export everything
          • ox-hugo export all seems to be broken. Complains that #+title not found. May have to export one by one.
        • did it one by one with the help of emacs keyboard macros
      • DONE test
    • DONE [4/4] Go live
    • DONE Copy to live site
    • DONE test, fix any problems
    • DONE have JTR look at it
    • DONE fix any problems

    TODO 10.2.3 [0/1] Future additions {#future-additions}

    • TODO add in Wayback machines links per Karl Voit

    https://karl-voit.at/2020/10/23/avoid-web-forums/

    PUBLISHED 10.3 Poetry in the trash lifebloggingpoetry {#poetry-in-the-trash}

    A few years ago, my mother went through the effects of her cousin after she died. It turns out Thelma Jane wrote poetry. Nobody knew. It wound up in the trash.

    Thelma lived alone. Her husband had died in his 40s. They had no children. Her mother, my great-aunt Bess, lived to 102 and took her first motorcycle ride at 100. My mom had to go through Thelma's stuff and Aunt Bess' stuff, most of which Thelma still had. I now have some of the leftovers. But nobody wanted the poetry. So it's gone.

    This brings me to the question this article explores: why write?

    #100daystooffload #whywrite #poetry

    Permanence? : Thelma's poetry is gone. Even names carved on tombstones crumble with time. If your writing is very good (see, e.g., Virgil and Cicero) and you're lucky (see scribes in Celtic monasteries) your scribblings on paper, velum or in cyberspace might last the centuries and inspire other writers (see Dante).

    Therapy? : I've been journaling (on paper) for a month or so. I find the process quite creative and even cathartic. And there is something freeing about being able to scribble, erase, underline, circle, draw arrows from one idea to the next, and in processing information a non-linear fashion. Unexpected connections can be made. I'm a huge fan of emacs org mode (this blog post is being written in org mode exported using ox-hugo to export a hugo static web site hosted on Github pages, but even using the best of digital writing tools, there is something not quite as free about it. There is something mentally relaxing about writing on paper (and going for long walks).

    Learning? : You learn by doing. The process of writing (can) help you organize thoughts. You often have to research things. Putting ideas out there opens you up to criticism. You have to defend or modify your position. It can be a starting point for conversation.

    Social Connections? : See Facebook, Twitter, et al. For all their downsides, there is no denying that writing, even the at the banal and everyday level of much of "social media" generates connections. I prefer to think it will allow me to maintain meaningful connections to people who are important to me in life, but my writing may not, in fact, be that noble.

    Hubris? : Pride? Vanity? Self-importance? Self-absorption? These are all possibilities.

    Professional Reasons? : I sometimes write on professional topics, see Bears Attacks and Cybersecurity and Reproducable Security Analytics. A mix of the same motivations is often in play.

    To kill time? : In this busy world we don't often feel that we have time to kill. We don't sit on our front porch watching the world go by (and, in fact, it's been a hundred years or so since the front porch featured prominently in residential architecture, at least in the USA.), and even Baseball, the "national pass-time" is looking for ways to speed up the game for a public that has lost patience. Maybe we need to slow down and focus on important things, or just enjoyable things. Writing may be one of those things.

    A habit? : For some people, writing is a habit. I think that may be one of the goals of the #100DaysToOffload concept. I'm going to give it a try. Thanks Kev Quirk

    I'll never know why Thelma Jane wrote her poetry. I'm still trying to figure out why I write. Maybe it's one of the reasons discussed above. Maybe it's all of them.

    PUBLISHED 10.4 9 days of #100DaysToOffload bloggingwritingemacs100DaysToOffloadtext {#2020-05-08}

    10.4.1 Experiences after 9 days of blogging {#experiences-after-9-days-of-blogging}

    About 3 weeks ago I decided to start blogging. For various still ill-defined reasons, some of which I explored in a blog post contemplating the fate of writing and writers great and small. But it's still somewhat mushy.

    I spent some time coming up the curve on the Hugo framework for building static web sites and the emacs org mode counterpart ox-hugo which let me put up my Curious Musings blog.

    The a few days after that on Fosstodon (open source distributed social media) I came across the https://100daystooffload.com/ challenge which, basically encourages you to "just write". Good timing. Here it is.

    I've put out a couple posts that I've put some work into like this one about Awesome online singing from Denmark to Australia, and social distancing too! and a tribute to Steve Wilhite who was my first mentor and whom some of you know as the creator of GIF (a very minor output of Steve's total work that just happened to stick). Some post have been quick.

    10.4.2 "Yes, but what if everyone did this"? {#yes-but-what-if-everyone-did-this}

    Yesterday, also on Fosstodon, Per Gregory@g had this say:

    "Social media: Don't use it to impress people, use it to impact people" ~ unknown

    I love this, and I'm going to remind myself of it when on social media.

    Wise words. Basically, "it's not about me" (unless you take the catharsis or hubris angles I explored earlier). OK, it should not be all about me.

    10.4.3 Who is this post for? {#who-is-this-post-for}

    So who is this post for and is it useful? You be the judge.

    Maybe you're interested in getting started blogging, or wondering what software you could use, or where you could find new online communities that are not monitized by ads, or you want to pay tribute to someone, or you're interested in organizing online choral singing, or joining meet-ups of new online communities during social distancing. Then this post might be for you.

    Day 09 of #100DaysToOffload.

    PUBLISHED 10.5 #100DaysToOffload stalled, but that's OK blogging100DaysToOffload {#2020-06-09}

    So my attempt at "just blogging something" for 100 straight days as part of #100DaysToOffload https://100daystooffload.com/ has stalled, but that's OK.

    I have a home painting project going that keeps expanding in scope every time I look at it. I've gone on a couple weekend backpacking/canoeing trips, and (biggest time sync of all), I'm in the middle of a job change. That sucks down time and energy. Oh yeah, and the country/world is in a little turmoil right now (COVID-19 and protests) which is, to say the least, distracting, disorienting, disturbing, destructive and otherwise detrimental to a simple goal of blogging every day.

    {{< figure src="/ox-hugo/painting.jpg" caption="Figure 81: The ever-exapanding painting project" width="200px" >}}

    That said, I think #100DaysToOffload was (and is) a success for me. I've gotten into a "writing mindset." My paper journaling (started just before COVID-19 hit) continues on a mostly-daily basis. A number of the blog entries I've written have spurred conversations with friends. I've posted copies of a couple of them on my linked-in feed because I thought they were relevant there.

    I seem to be a failure at building a large social media following, but that too is OK. I write what (to me) is interesting, thought provoking stuff and get 3 or 4 "likes" and 10 or 20 people reading it. I guess I'm not cut out to be an "Influencer" or "Thought Leader" (both terms I despise). TED talks anyone?

    I am and always have been about one-on-one relationships. The whole idea of broadcast media (you know, TV, Radio) bothers me. You're just "one-of-the crowd". But then, hyper-targeted advertising feed by corporate spying and machine learning isn't much better.

    I've taken to writing every blog post (except maybe this one :-)) with an individual in mind, kind of like an open letter. I write for one person. Some of the models are Cicero's letters to his friends and the correspondence John Adams and Thomas Jefferson carried on late in life. As personal letters, the writing can be focused and specific while still dealing with topics of possible general interest. For instance this, https://eludom.github.io/blog/the-stuff-of-time/ was written for my cousin the family genealogist reflecting on us both having a lot of family "stuff". And this https://eludom.github.io/blog/opening-day-2020/ was written for my friend Ken who has been going to Reds games with me for 30 years, reflecting on changes in the game and why we go in the first place (friendships, diversion, traditions, hope...)

    And I'm also writing for myself. The process of thinking and writing let's me collect my thoughts, capture them for myself and anybody else who may care. It also allows me to start conversations with people, referencing my writing if appropriate.

    So I'll keep writing. Don't look for me to complete 100 posts in 100 days. Life has not gone like that. But there is value to me, and I think potentially others, so I'll keep it up.

    Day (well, post) 17 of #100DaysToOffload https://100daystooffload.com/

    11 Social Media Series social {#social-media-series}

    This is going to be series of articles about my experiences with "social media" and "walled gardens"

    PUBLISHED 11.1 40 years of walled gardens & open platforms: Part I historycomputingsocialUSENETFacebookTwitter {#walled-gardens-part-1}

    This the first in a series of articles where I do a brain dump pf something like 40 years experience with "social media" of various forms: Dial-up BBSs, Fidonet, Usenet, IRC, CompuServe, AOL, Slashdot, Sourceforge, blogspot, Facebook, Jabber, Google+, Twitter, LinkedIn, Mastadon "...we didn't start the fire (flame-war?)..." OK, maybe we did.

    I hope this is useful, or at least interesting. It may wind up just being a mix of introspection, hubris or narcissism, it may be part of working up the nerve to quit Twitter as I quit Facebook in 2016, maybe I'll even work up the nerve to go cold turkey as tychi is doing.

    {{< figure src="/ox-hugo/rs232.jpg" caption="Figure 82: RS-232 pin-outs" >}}

    Post 20 of #100DaysToOffload https://100daystooffload.com/

    11.1.1 Before my time {#before-my-time}

    To being with, we need to set the stage. We're here. Now. How did we get here? What went before? Understanding these might help us both to live in the world as we find it and figure out how to move forward.

    '- - - ... - - -' : Yesterday, <2020-08-16 Sun> was the 100th anniversary of the first trans-Atlantic telegram: https://cryptologicfoundation.org/what-we-do/educate/bytes/this_day_in_history_calendar.html/event/2020/08/16/1597554000/1858-early-telegraph-communications/77123 In a very real sense, the telegram was the beginning our digital age.

    Telegraphs, Phones, Blind Kids and Steve Jobs : Phil Lapsley wrote a fascinating book called "Explode The Phone". It is fascinating story of technology and hacking culture from telegraphs to somewhere after Steve Jobs and Woz were going door to door in the Berkeley dorms selling little black boxes. Phil gave a keynote at USENIX Security one year and I was there and talked to him a bit ... part of his passion was to record the "Phone Phreak" culture that lead directly to the modern "Hacking" (good sense) culture while enough of the principals were still around. I talked to "Captin Crunch", one of the main subjects of the book at ToorCon one year. What a character. The entire hacker/blackhat/freedom-to-tinker movements (and Apple Computer) owe him homage. Just don't give him a piggy-back ride. Phil was also the author of Network News Transport Protocl (NNTP) for for Usenet and we may get to why Usenet, pathalias, GNUS and friends may or may not have been a good idea in later posts.

    I want to pick up the story where I have personal history and Phil's book, conveniently runs right up to about that point.

    I guess one of my goals parallels his: to document bits of how we got to the "Social Media" (and "walled gardens") of today, as I've live through and been a small player in bits of it.

    PUBLISHED 11.2 40 years of walled gardens & open platforms: Part II historycomputingsocialUSENETFacebookTwitter100DaysToOffload {#walled-gardens-part-2}

    Here are some developments in late 70s and early 80s where I started to become aware/involved in "Online" things that eventually evolved into today's Social Media: Modems[^fn:17], BBS systems, TOPS-20 Bulletin Boards, Usenet News and the birth of CompuServe.

    {{< figure src="/ox-hugo/modem.jpg" caption="Figure 83: Desktop Dial-up" >}}

    Post 21 #100DaysToOffload https://100daystooffload.com/

    Dialup BBS Systems : Once upon a time it was illegal to connect modems (or anything else but AT&T equipment) to the phone network. And that was, basically, the only network. Some time after that changed, dialup Bullitin Board Systems (BBS) arrived. You could dial up and connect to a BBS running in someone's house often connected to the only line (the home phone). Mom and Dad may have wondered at first why they picked up a call and heard awful electronic squawking noises rather than someone saying "Hello". Once on, you could leave messages, read messages, etc. Communities formed this way.

    TOPS-20 Bulletin Boards : I'm not sure, but my first exposure to bulletin boards and email ("social media") was probably on the Ohio State DecSystem-20. I had friends who worked there, and we later went to school there and thus had a "legitimate" accounts. The world and software I remember is describe well here http://www.columbia.edu/kermit/dec20.html. Kermit (the project that the authors of this article ran) was a very important piece of software for 10-15 years, a workhorse of moving files across dial-up phone connections.

    Usenet News : Social media c.a. 1980. Usenet was (is) a system that moves messages (posts) between connected computers. In the beginning this was dial-up lines. Mostly between universities and research institutions and, of course, AT&T/Bell Labs etc. For a while the USENET "backbone" (the long haul links, the well connected sites) were run by an unofficial cabal internally at AT&T (because they had free access to "long lines") and traffic was farmed out to local sites (universities) for further distribution. It was the quintessential "old boy" network. To connect, you had to know someone and convince them to "give you a feed". I was on sometime from the mid-80s on. A few ?representative? newsgroups: comp.sources.amiga, rec.humor.funny alt.ensign.wesley.die.die.die

    CompuServe: Dialup+Network+Dec10s == Information Service : CompuServe ("Online Services") was born in this world. People started having "Personal Computers" in the late 70s and early 80s. Modems started becoming a thing. While Usenet, BBS systems, Fido-net and friends started using these technologies to connect people in non-commercial settings, Compu$erve started to do so in a commercial setting. CompuServe had been running a nationwide packet switching network since 1972 (take that, ARPANET !), had been selling business oriented computing services, and time sharing on its DecSystem10's accessed via that network as well as growing raft of dial-up modem pools, conveniently located in H&R Block offices around the country at a time when having "Local" numbers was important (long distance was expensive). This was the 1970s version of "Cloud Computing". Business use slacked off at night, so what was a good time-sharing company to do? Why start an Information Service that grew into the familiar lineup of "Forums" (BBS), "InfoPlex" (email), "CB" (chat/Aim/IRC), and the recurring services that every online service, search engine and social network eventually devolves to: News, Weather, and Sports. I think the online service started around 1980. I began working there in 1985. More from the CompuPerspective as these posts progress.

    PUBLISHED 11.3 Goodbye Twitter {#Goodbye Twitter}

    11.3.1 1 of 2 {#1-of-2}

    Goodbye twitter. In 2016 Facebook got too political so I dropped it. Now, Twitter. You can reach me as gmj AT pobox DOT com. Please drop an email if you to stay in touch. I blog semi-regularly at https://eludom.github.io/.

    11.3.2 2 of 2 {#2-of-2}

    https://en.wikipedia.org/wiki/Mastodon_(software) is a free, open source, ad-free, distributed twitter-like thing. No corporation algorithmically manipulates your timeline and AUPs are set by the community. I'm on the https://fosstodon.org instance.

    PUBLISHED 11.4 Hello twtxt HOWTO100DaysToOffloadgeek {#hello_twtxt}

    And in the to-simple-to-be-true category...

    twtxt is a decentralised, minimalist microblogging service for hackers.

    https://twtxt.readthedocs.io/en/latest/user/intro.html

    $ twtxt tweet "Is there anybody out there, just nod if you can hear me"
    

Install twtxt

pip3 install twtxt

Configure twtxt

twtxt config
...
 $ cat ~/.config/twtxt/config
[twtxt]
nick = gmj
twtfile = /home/gmj/twtxt.txt
twturl = http://www.port111.com/george/twtxt.txt
disclose_identity = True
character_limit = 140
character_warning = 140

[following]
twtxt = https://buckket.org/twtxt_news.txt
adiabatic = https://www.frogorbits.com/twtxt.txt
beyond = https://enotty.dk/beyond.txt
jcolag = https://john.colagioia.net/twtxt.txt
vain = https://www.uninformativ.de/twtxt.txt
prologic = https://twtxt.net/user/prologic/twtxt.txt
antonio = https://twtxt.net/user/antonio/twtxt.txt

Post some tweets

$ twtxt tweet  This is incredible.  Simple.  Text.  Decentralized :-\)
$ twtxt tweet  There is life after twitter.  https://eludom.github.io/blog/goodbye-twitter/
$ twtxt tweet Thanks @prologic

Push my twtxt.txt file to the server (dropbox, github, s3 buckets, etc would do...anything with a public URL)

scp twtxt.txt gmj@port111.com:~/public_html/george/twtxt.txt

Follow someone:

twtxt follow prologic https://twtxt.net/user/prologic/twtxt.txt

Read your timeline

$ twtxt timeline

Some of the docs

https://twtxt.readthedocs.io/en/latest/user/usage.html

https://twtxt.readthedocs.io/en/latest/index.html

And if you want a browser based interface that does threading, etc (BUT requires a login...)

https://twtxt.net/

Day 32 of #100DaysToOffload.

12 Tech HOWTOs HOWTO {#tech-howtos}

PUBLISHED 12.1 To publish my configs, or not, that is the question. 100DaysToOffloadlinux {#2022-11-08}

This is a HOWTO on publishing certain Unix config files while keeping others private using GNU stow and ?clever? groupings of files into directories such as home.public.dotfies and home.private.mailconfig

I like to publish my personal config files (.bashrc, emacs configs, etc) but there are some things you probably just don't want to share because they only apply to you (your list of rss feeds) or are just personal, and some things you should not share such as files with passwords.

To solve this problem, I break stuff down into public,private and secret categories. I used to have these live under

~/{public,private,secret}/*

but any more, I just used GNU stow which builds symlink trees. Now I have

~/stow/home.public/dotfiles/.bashrc

which gets symliked into

~/.bashrc

by doing

cd ~/stow/home.public/dotfiles
stow

The beauty of this is that I have repos made public such as

http://git.galthub.com:3000/gmj/home.public.dotfiles

and others private and secret not published. You can even mix "work" and "home" by using hierarchies such as

work.private.dotfiles

to use different ~/.gitconfig files.

You get the idea. I've probably gone to far with it http://git.galthub.com:3000/gmj/

#35 of #100DaysToOffload take 2.1, https://100daystooffload.com/

PUBLISHED 12.2 HOWTO: Breaking and fixing DNS - Understanding modern DNS on Ubuntu. DNSUbuntuHOWTOLinuxsystemd {#dns-today}

One dark and stormy night I broke my DNS. I decided to move beyond /etc/resolv.conf and see what demons (daemons?) were lurking under the hood. "Its complicated." This is the story of understanding, debugging and fixing it.

12.2.1 /etc/resolv.conf {#etc-resolv-dot-conf}

If you look at /etc/resolv.conf on a Linux system today (Ubuntu 19.10) you will find something like:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.1
search lan

But the file seems to change. I've seen it without most of the verbiage above. I've seen the file contain both 127.0.0.1 and 127.0.0.53. Confusing. systemd?

12.2.2 You can edit /etc/resolv.conf {#you-can-edit-etc-resolv-dot-conf}

First let me say that despite the dire warnings below, you can edit /etc/resolv.conf, e.g. to make it look like

# Generated by NetworkManager
search lan
nameserver 9.9.9.9

And it will work until NetworkManager chooses to overwrite the file. Not sure if sudo chmod 444 /etc/resolv.conf be enough to keep NetworkManager from overwriting it.

12.2.3 You can make /etc/resolv.conf immutable {#you-can-make-etc-resolv-dot-conf-immutable}

If you do edit /etc/resolv.conf you can make it immutable to prevent systemd from updating it:

$ sudo chattr +i /etc/resolv.conf
$ sudo rm /etc/resolv.conf
rm: cannot remove '/etc/resolv.conf': Operation not permitted

12.2.4 Debugging a broken DNS {#debugging-a-broken-dns}

I was living dangerously and simultaneously playing with https://pi-hole.net/ and letting Ubuntu try to upgrade my system. It went south. DNS stopped working. The following were some of the debugging steps I took to try to understand/fix the issue:

  • Testing resolution - is name resolution working?

    In this phase of debugging, I try to do name resolution as configured:

    dig - no namserver specified

    : I ran $ dig www.uu.net to see if everything was working as

    intended.  Nope.  No response.
    

    dig - known-good nameserver : I ran `$ dig www.uu.net

                           @9.9.9.9` to see if I could resolve against a known-good
    nameserver.  This worked.  No issues with connectivity/routing.
    

    dig - 127.0.0.53 : I ran $ dig www.uu.net @127.0.0.53 to see

    if the local systemd-resolved nameserver specified in
    /etc/resolv.conf was working.  Nope.
    

    systemd-resolved - how is it configured? : I ran `$

                           systemd-resolve --status` to see how systemd thought dns was
    configured.  The wireless interface I was using pointed to a
    nameserver (the proxy server on my wireless router) that should work:
    
    $ systemd-resolve --status
    ...
    Link 3 (wlp2s0)
          Current Scopes: DNS
           LLMNR setting: yes
    MulticastDNS setting: no
          DNSSEC setting: no
        DNSSEC supported: no
             DNS Servers: 192.168.86.1
              DNS Domain: ~.
                          lan
    

    systemd-resolve - let systemd resolve a name : dig(1) and host(1) are

    not the only game in town for doing command line DNS look-ups.
    Systemd (of course) will do it for you:
    ```text
                          $ systemd-resolve www.uu.net
                          www.uu.net: 152.195.32.39
    ```
    In this case, it worked, which tells me that systemd-resolved
    is happy and working.
    

    try dig again : Try another "normal" lookup:

    ```text
                          $ dig www.uu.net
    ```
    This failed.  The conclusion seems to be that the whatever the
    resolver library is looking at (127.0.0.53) is not working.
    

    edit /etc/resolv.conf : Pointing /etc/resolv.conf at

    working nameservers fixed the problem:
    
    # Generated by NetworkManager
    search lan
    #nameserver 127.0.0.53  # BROKEN. systemd-resolved nameserver set by NetworkManager
    #nameserver 9.9.9.9     # WORKS. quad9 nameserver
    nameserver 192.168.86.1 # WORKS. wireless router nameserver
    
    • Conclusion - the systemd-resolved is not answering
  • What name resolution processes are running?

    The next question is: what's (not) running? What's (not) listening?

    To answer these questions, I poked at the network and the running processes:

    nmap - look for listeners

    : nmap did not show a DNS listener at 127.0.0.53

    gmj@ed home-computing [master] $ sudo nmap -v -sU -PS  127.0.0.53
    
    Starting Nmap 7.60 ( https://nmap.org ) at 2020-05-10 07:51 EDT
    Initiating Parallel DNS resolution of 1 host. at 07:51
    Completed Parallel DNS resolution of 1 host. at 07:51, 0.02s elapsed
    Initiating UDP Scan at 07:51
    Scanning 127.0.0.53 [1000 ports]
    Completed UDP Scan at 07:51, 2.80s elapsed (1000 total ports)
    Nmap scan report for 127.0.0.53
    Host is up (0.000049s latency).
    Not shown: 997 closed ports
    PORT     STATE         SERVICE
    68/udp   open|filtered dhcpc
    631/udp  open|filtered ipp
    5353/udp open|filtered zeroconf
    

    zeroconf :: Is zeroconf listening? What is 5353?

    It looks like 5353 is multicast DNS.

    $ egrep -i domain\|dns /etc/services
    domain      53/tcp              # Domain Name Server
    domain      53/udp
    mdns        5353/tcp            # Multicast DNS
    mdns        5353/udp
    

    lsof -i : look at listening ports

    Next, I used lsof(1) to look at listening and connected ports,
    successively grepping out the "known" and "uninteresting":
    
    gmj@ed home-computing [master] $  sudo lsof -i -n  | egrep -vi established\|dropbox\|ssh\|http\|smtp\|bootp\|ipp
    COMMAND     PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    avahi-dae  1064           avahi   12u  IPv4  25434      0t0  UDP *:mdns
    avahi-dae  1064           avahi   13u  IPv6  25435      0t0  UDP *:mdns
    avahi-dae  1064           avahi   14u  IPv4  25436      0t0  UDP *:42027
    avahi-dae  1064           avahi   15u  IPv6  25437      0t0  UDP *:44240
    dnsmasq    2538 libvirt-dnsmasq    5u  IPv4  37248      0t0  UDP 192.168.122.1:domain
    dnsmasq    2538 libvirt-dnsmasq    6u  IPv4  37249      0t0  TCP 192.168.122.1:domain (LISTEN)
    brave     28951             gmj   43u  IPv4 250584      0t0  UDP 224.0.0.251:mdns
    

    Looks like avahe-dae[mon] is listening on multicast-dns (mdns) on 5353, and there are outbound connections to 192.168.122.1:53, which was a wired connection to the router, but nothing listening on port 53. This is a problem.

    • Why is systemd-resolved not answering - do I care?

    Do I really want to debug systemd-resolved? No. I was half planing on upgrading to the latest Ubuntu release (20.04) anyhow. This seems like the time to do it, rather than debugging this problem further.

    • Lessons learned

    run servers on dedicated systems : I had been messing with

    <https://pi-hole.net/> on this system (a laptop that mostly does
    not move/go off the net).  There was some confusion/doubt
    about whether this interacted badly with things/caused the
    problems.   It may have.  I un-installed it.   But running a
    dedicated server would be better.
    

    Failed Ubuntu "upgrade" : The actual trigger that made things not

    work was an attempt to let the Ubuntu installer upgrade the
    system.  This failed in strange ways.  After running, my
    system which was Ubuntu 19.10 reported (/etc/issue) to being
    18.04 and the pi-hole logs reported that they could not find
    the wireless interface it had been configured to use (but the
    device was still there, same name, still working...)
    

    12.2.5 Next Steps {#next-steps}

    • TODO Do a hard upgrade to Ubuntu 20.04

    • Full backup, wipe disk, restore...

    • Use ansible, docker, chief or similar to make configs repeatable.

    • TODO Set up a server to run pi-hole and other services

    • Possibly re-purpose an old laptop or pogo-plug device running something minimal like Arch Linux

    • Use ansible, docker, chief or similar to make configs repeatable.

    12.2.6 Things to learn more about {#things-to-learn-more-about}

    avhai : So what is avhai-dae[mon]? It looks like a zero-configuration (I wish !) networking services that uses multi-cast DNS on a local network. Do I need to be running this?

    systemd-resolved : I may want to learn more about this, as it is part of the new regime in most Linux distros. But not now.

    • For Further Reading

    resolvers, stub resolvers and nameservers : https://unix.stackexchange.com/questions/500536/what-are-dns-server-resolver-and-stub-resolver

    Day 10 of #100DaysToOffload. Delayed a day due to DNS problems :-)

    13 Short short {#short}

    PUBLISHED 13.1 Get going, go get go git going humor100DaysToOffload {#2022-10-30}

    I'm in the process of installing a new "git" server. It's written in the "go" language. I was about to get out of bed to work on it, so...

    Get going, go get go git going

    #32 of #100DaysToOffload take 2.1, https://100daystooffload.com/

    PUBLISHED 13.2 Check Czech Check, Czech? Check! humor100DaysToOffload {#2022-10-30b}

    I was once eating in a restaurant with some co-workers in Prague, and it came time to leave. We wanted the check. In that setting, this would have been a meaningful sentence (in convoluted punning English) addressed to our waiter...

    Check [for the] Czech Check, Czech [waiter]?

    to which an appropriate reply from the waiter might have been:

    Check!

    #33 of #100DaysToOffload take 2.1, https://100daystooffload.com/

    [^fn:1]: yes, there are many better tools for this job, but not in the constrained environment where this had to run. [^fn:2]: This was several years before the start of the GNU project. [^fn:3]: Knuth's The Art Of Computer Programming is available on github. I'm not going to provide a link because when I went there and tried to view the site it crashed my browser and nearly froze my computer. My guess is Knuth just did something that was perfectly sensible from a theoretical view (maybe creating a 50 gig PDF), but which mere software chokes on. Computer Science classic texts as DOS attacks? Another unintended side effect. I wonder if MITRE ATT&CK has mapped that threat yet? [^fn:4]: And, yes, Tim Berners-Lee was in academic circles then and could not have helped knowing about Knuth's WEB ... score naming the Word Wide Web as a side effect of a side effect for Knuth? [^fn:5]: Actually, it's in in an .org format with custom elisp code that implements cpp style ifdef logic for producing different output for the short resume, the long resume, linkedin, etc. off the same source, that creates latex on export which is then run through tex and friends to produce a pdf, but shhh. Pay no attention to that man behind the curtain. [^fn:6]: "Bill Gates and the Nameless Corporate Droids" sounds like a fine name for a band, right up there with "The Dead Kennedys" [^fn:7]: Oppressive governments and various other not-so-friendly motivations fall here as well. [^fn:8]: once the layout/partials/head.html was fixed

    Posts 39, 40 and 41 of #100DaysToOffload https://100daystooffload.com/. This one was a production. It counts for 3. [^fn:9]: This was about 10 years before the world wide web ... maybe Berners-Lee got some inspiration on the name from Knuth? Or Sir Walter Scott: "‘Oh what a tangled web we weave/When first we practice to deceive" [^fn:10]: Note that these are not randomly chosen questions. They map fairly directly to some of the basic questions of epistemology, morals and ethics. [^fn:11]: Steve corrected me. There were never actually plans to write an Ada compiler. But I was unaware of the XBASIC compiler. So 3 compilers in all. [^fn:12]: Steve informs me he was NOT pulled into the WOW project. Maybe the outcome would have been better if he had... [^fn:13]: The Amiga was my first computer. I was the first person to port an Emacs editor to the Amiga, porting a version of what became "MicroEmacs" and mg to it and receiving a phone call from one of the core Amaga engineers at Commodore asking if they could use it after I posted to comp.sources.amiga [^fn:14]: See The Beatles and Apple Corp. (not Apple Computer) for examples of creative visionaries who wound up in a morass of lawsuits. George Harrion, "Sue Me, Sue You Blues". [^fn:15]: Alice Parker, associate of the former Atlanta Symphony Orchestra and Choir conductor Robert Shaw wrote a play called "Singers Glenn" about Joseph Funk which is staged very 5 years in Singers Glen across the street from his log cabin with descendants in attendance. She has attended many of the performances. [^fn:16]: ADS stands for "Attention Distraction Syndrome" [^fn:17]: Modem picture courtesy of: "Dial-a-Grue" by Digital Game Museum is licensed under CC BY 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by/2.0/