<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://www.thecoldfish.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://www.thecoldfish.com/" rel="alternate" type="text/html" /><updated>2025-08-23T04:48:24+00:00</updated><id>http://www.thecoldfish.com/feed.xml</id><title type="html">The Cold Fish</title><subtitle>It&apos;s genetic, cultural, and acceptable.  The warmth you are not feeling is practiced.</subtitle><author><name>Jason E. Miller</name></author><entry><title type="html">State of the LC, 22 August 2025</title><link href="http://www.thecoldfish.com/2025/08/22/yotamd-day.html" rel="alternate" type="text/html" title="State of the LC, 22 August 2025" /><published>2025-08-22T00:00:00+00:00</published><updated>2025-08-22T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2025/08/22/yotamd-day</id><content type="html" xml:base="http://www.thecoldfish.com/2025/08/22/yotamd-day.html"><![CDATA[<p>It’s been a LONG time since I’ve written one of these, and there’s much to report on what I’ve done to transform the rig.  Today I’m just going to write about my ignition key, though.  I’ll try to keep it tight.</p>

<p>the other day, out second master key for the rig gave up the ghost; the blade separated from the case.  This gave the good excuse to order a new case from <a href="https://www.yotamd.com">YotaMD</a>.  The wife didn’t even bat an eye at the cost.  I bought a YotaMD case for our primary key (the one that I use everyday) and love both the case and the company’s responsiveness to my questions.  I’m glad i was able to do business with them again.</p>

<p>Unfortunately, after I ordered the case earlier this week, I took the old fob apart to change its battery.  (The wife said it the key hadn’t been unlocking the doors.) The battery change went well, but a winy transceiver (that I didn’t know existed) fell out of the silicon casing while I was fiddling with the battery.  It fell on the floor and was swept into the garbage.</p>

<p>The new YotaMD case arrived today, and I set about shifting the fob and key blade into the new case.  All seemed to go well until I tried to start the rig.  THe engine wouild catch and start to turn over, but the motor wouldn’t start.  Did the key need to be programmed because I’d changed the battery?</p>

<p>I set about looking online for instructions for reprogramming the key, and I learned all about the <em>remote</em> part of the key and the <em>immobilizer</em> part.  And I learned about all the procedures out there for putting a rig into programming mode and communicating with a new key.  Thank the gods for ih8mud!  I tried four different procedures, each of them multiple times, and none worked for me.  None turned my second key into a <em>master</em> that the rig’s security system would allow to turn off the immobilizedr (<em>i.e.</em>, stop the security light on the dashboard blinking).</p>

<p>Then I saw <a href="https://forum.ih8mud.com/threads/100-series-master-key-thread.1169560/page-8#post-13870232">this post</a> on ih8mud, learned about the transceiver nestled inside the silicon case of the key fob, and realized I might have lost it when I was changing the battery.</p>

<p><a href="/assets/images/key-fobs-transponder.jpg"><img src="/assets/images/key-fobs-transponder-thumbnail.jpg" alt="Picture of silicon case holding a tiny transceiver" /></a></p>

<p>There was a good chance I lost this before garbage day, so I dug into the two bags of kitchen garbage in our family bins and dug through the refuse.  It was gross, but I found the tiny darling.  After checking that it wasn’t just a scrap piece of plastic, I added it into the new key and the key fob functioned like a champ, locking and unlocking doors and starting the engine.</p>

<p>I learned a bunch today about my rig’s keys, mostly from reading posts online, and partly from trying lots of stuff.  I’m glad that I realized I lost the tiny transciever and didn’t dump more time into things like Techstream and going to a dealer to ask for their help.  For this I’m sending a big “thank you” to the folks who shared online what they knew about their rig!</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>Jason</name></author><category term="land-cruiser" /><summary type="html"><![CDATA[It’s been a LONG time since I’ve written one of these, and there’s much to report on what I’ve done to transform the rig. Today I’m just going to write about my ignition key, though. I’ll try to keep it tight.]]></summary></entry><entry><title type="html">GitHub Authentication Solution</title><link href="http://www.thecoldfish.com/2025/08/17/github-authentication-solution.html" rel="alternate" type="text/html" title="GitHub Authentication Solution" /><published>2025-08-17T00:00:00+00:00</published><updated>2025-08-17T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2025/08/17/github-authentication-solution</id><content type="html" xml:base="http://www.thecoldfish.com/2025/08/17/github-authentication-solution.html"><![CDATA[<p>I write in Markdown and LaTeX.  These flat file formats allow me to use version control, which I first learned from my Computer Science colleagues at Midsized University.  Thanks, dudes!  Some time ago, I adopted the <a href="https://www.git-tower.com/windows">Tower application</a> as my git environment of choice.  While I can manage git at the command line, I liked the way Tower displays information, and I like its UI with its buttons and menus.</p>

<p>In this age of computer mobility (I have two Macs at home, a Mac laptop, an iPad, and a Mac descktop in my work office), I use GitHub to host my few git repositories.  As long as I have an internet connection, this allows me to work on my writing from wherever I am.  I love it.  It’s part of my work method that has become indisensible to me.  Sure, Dropbox and iCloud sync across machines, but that Black Box is too big for me to trust 100% of the time.  When I write, especially for myself, I like to be closer to the metal.</p>

<p>GitHub requires a use account, and over the years GitHub has changed the way a person (or computer) authenticates to an account or project.  Since I started using GitHub, the service has asked me to start using 2-Factor Authentication (2FA).  it’s also asked me to use Personal Access Tokens (PAT).  The Tower application doesn’t play so well with either of those.  But I’m a good soldier.  I have my DUO app set up for GitHub 2FA, and I’ve learned how to generate my PATs and set their expiration.</p>

<p>GitHub’s 2FA authentication doesn’t effect version control.  In my experience, it comes to play when I want to log in to the web page.  Those PATs are what screw me up.  They have some role in authenticating to make changes to a repository, and it tends to drive me crazy.  This post is meant to describe my latest attempt at describing Tower’s crazy-making and how I solved that problem (this time) so next time (and there will be a next time) I <strong>remember</strong> how to solve it and don’t have to reinvent this wheel for the twntieth time.</p>

<h2 id="authentication-error">Authentication Error</h2>

<p>Yesterday, in Tower I tried to push a change to a project hosted on GitHub and I received a dialog box titled ‘Connection to Remote Failed’ Error.  The Git Error message is</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Pushing to https://github.com/USERNAME/USERNAME.github.io.git
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/USERNAME/USERNAME.github.io.git/'
</code></pre></div></div>

<p>My heart sunk.  My PAT had probably expired and I needed to reinvent a way to fix the problem.  Indeed, a look at GitHub showed that my PAT had expired.  So I made another and tried to remember what to do with it.</p>

<p>Oddly enough, there’s no place in Tower to save a PAT.  Looking in Settings &gt; User Profiles, there is a field dedicated to <code class="language-plaintext highlighter-rouge">signing keys</code> but that’s different.  Mine was blank.  After searching around the application, I could find no place to record the PAT associated with my GitHub account!  (I know that I go through this every time I recreate a solution to this authentication problem.)</p>

<p>Something else I always do is create a new token.  Walking through the instructions for <a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens">creating a personal access token (classic)</a> felt very familiar to me.  After creating it, and giving it a descriptive name, I copied the new PAT to my password manager for safe keeping and future reference.</p>

<p>But all that happened outside Tower.  Attempting to push a repo change a couple times revealed no way to notify tower of this change in authentication information.  No dialog box appeared.  No CLI opened asking for the token.  Nothing.</p>

<h2 id="command-line-git">Command Line Git</h2>

<p>Screw it, I said to myself, I’m just going to do my versioning with git at the command line.  So I opened up the Terminal, changed my working directory to be the folder containing my repo, and typed <code class="language-plaintext highlighter-rouge">git push</code>.  I was asked for my password.  I provided it.  To my disappointment, I got an authentication error.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Password for 'https://USERNAME@github.com': 
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
</code></pre></div></div>

<p>I tried again, substituting my PAT for my password.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Password for 'https://USERNAME@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/USERNAME/USERNAME.github.io.git/'
</code></pre></div></div>

<p>After giving a couple more tries with the same result, I gave up and turned to Google for help.  One search result reminded me that <a href="https://cli.github.com">GitHub has a Command Line Interface</a>.  I installed that with Homebrew, and ran `gh auth login’ as directed.  I answered some questions in the Terminal (see below) and was informed my PAT didn’t include the permissions GitHub CLI needed, so I made a new PAT with the correct permissions.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Paste an authentication token
Tip: you can generate a Personal Access Token here https://github.com/settings/tokens
The minimum required scopes are 'repo', 'read:org', 'workflow'.
</code></pre></div></div>

<p>Executing ‘gh auth login’ again and providing an eligible PAT seemed to go smoothly.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Paste an authentication token
Tip: you can generate a Personal Access Token here https://github.com/settings/tokens
The minimum required scopes are 'repo', 'read:org', 'workflow'.
? Paste your authentication token: ****************************************
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as USERNAME
</code></pre></div></div>

<p>In fact, when I exectued the vanilla <code class="language-plaintext highlighter-rouge">git push</code> command, it seemed to work!  When I pushed from within the Tower app, that also worked.</p>

<p>So it looks like I found a solution to my authentication problem on MacOS.  Hallelujah!</p>

<h2 id="update--environment-variable">Update:  Environment variable</h2>

<p>When my authenticaion token (or whatever it’s called) expires, and I want to use the above CLI colution, I need to. clear the token from my environment.  The way to do that at the command line is to issue the following command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>unset GH_TOKEN
</code></pre></div></div>

<h2 id="update-its-a-short-term-solution">Update: It’s a short-term Solution</h2>

<p>I’m finding that using ‘gh auth login’ provides a short-term solution to the authentication problem.  Short as in ‘one session’.  If I change accounts in Tower, then the benefit of the authentication goes away.  Hmmm.  Need to think about this.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>me</name></author><category term="version-control" /><category term="git" /><category term="writing" /><category term="tower" /><summary type="html"><![CDATA[I write in Markdown and LaTeX. These flat file formats allow me to use version control, which I first learned from my Computer Science colleagues at Midsized University. Thanks, dudes! Some time ago, I adopted the Tower application as my git environment of choice. While I can manage git at the command line, I liked the way Tower displays information, and I like its UI with its buttons and menus.]]></summary></entry><entry><title type="html">Wise Words After the Election of 2024</title><link href="http://www.thecoldfish.com/2024/11/07/litany-for-those-not-ready-for-healing.html" rel="alternate" type="text/html" title="Wise Words After the Election of 2024" /><published>2024-11-07T00:00:00+00:00</published><updated>2024-11-07T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2024/11/07/litany-for-those-not-ready-for-healing</id><content type="html" xml:base="http://www.thecoldfish.com/2024/11/07/litany-for-those-not-ready-for-healing.html"><![CDATA[<p>A couple days after the 2024 U.S. election, a friend posted this to Facebook because they found the words and ideas helpful as they struggled to come to grips with the cold hard fact that so many of our neighbors embrace the MAGAt brand of politics.</p>

<quotation>
Let us not rush to the language of healing, before understanding the fullness of the injury and the depth of the wound.<br />
Let us not rush to offer a band-aid, when the gaping wound requires surgery and complete reconstruction.<br />
Let us not offer false equivalencies, thereby diminishing the particular pain being felt in a particular circumstance in a particular historical moment.<br />
Let us not be afraid to sit with the ugliness, the messiness, and the pain that is life.<br />
Let us not offer clichés to the grieving, those whose hearts are being torn asunder.<br />
</quotation>

<hr />

<p>These lines are excerpts from <strong><a href="https://uuwestport.org/a-litany-for-those-not-ready-for-healing-by-dr-yolanda-pierce/">A Litany for Those not Ready for Healing</a></strong>, Dr. Yolanda Pierce.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>Jason</name></author><category term="47," /><category term="election" /><summary type="html"><![CDATA[A couple days after the 2024 U.S. election, a friend posted this to Facebook because they found the words and ideas helpful as they struggled to come to grips with the cold hard fact that so many of our neighbors embrace the MAGAt brand of politics.]]></summary></entry><entry><title type="html">Golden Girls and Carleton College</title><link href="http://www.thecoldfish.com/2022/01/01/golden-girls-and-carleton.html" rel="alternate" type="text/html" title="Golden Girls and Carleton College" /><published>2022-01-01T00:00:00+00:00</published><updated>2022-01-01T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2022/01/01/golden-girls-and-carleton</id><content type="html" xml:base="http://www.thecoldfish.com/2022/01/01/golden-girls-and-carleton.html"><![CDATA[<p>Betty White passed away yesterday.  Well-wishers flooded twitter with messages mourning her passing and celebrating her life.  One tweet from @jxeker shared a clip from <em>The Golden Girls</em> where Rose Nyland (Betty White’s character) is telling a story from her past to help her friends resolve a problem.  The clip shows her actor colleagues breaking character under the pressure  of Ms. White’s comic chops.</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I was just thinking: <a href="https://t.co/0efirriS0a">pic.twitter.com/0efirriS0a</a></p>&mdash; Lena Jessica 😷 (@lenajessica) <a href="https://twitter.com/lenajessica/status/1477021695210885124?ref_src=twsrc%5Etfw">December 31, 2021</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>After enjoying the clip, I saw the above reply from @lenajessica.  I had to reply (excuse the typo):</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">And boy is there a story behind THAT story! RIP Betty White, an blessing to all Oles everywhere.</p>&mdash; Jason &quot;Je Suis Antifa&quot; Miller (@jasonemiller) <a href="https://twitter.com/jasonemiller/status/1477039110082613251?ref_src=twsrc%5Etfw">December 31, 2021</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Because my reply has gotten a few likes (I don’t know why), I thought I’d share the unsubstantiated story to which it alludes.</p>

<h2 id="two-colleges">Two Colleges</h2>
<p>By way of background, <em>The Golden Girls</em> was in production from 1985 until 1992.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>  I’m an alum (‘93) of <a href="http://wp.stolaf.edu">Saint Olaf College</a> in Northfield, MN.  I knew of <em>The Golden Girls</em> program, and I could recognize the four lead actors, but I didn’t know much about universe of <em>The Golden Girls</em>.  Specifically, I did not know about the silly way our college was written into the show<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">2</a></sup> until Betty White <a href="https://wp.stolaf.edu/wp-content/uploads/2021/12/St.-Olaf-Magazine-Fall-2012-The-Golden-Girl.pdf">visited Northfield</a> in 1992.</p>

<p>Northfield spans the Canon River, with St. Olaf College on a hill to the West and <a href="https://www.carleton.edu">Carleton College</a>, another private liberal arts college, adjacent to downtown to the East.  St. Olaf College is a college of the Evangelical Lutheran Church of America, and it takes its Lutheran and Norweigian seriously.  Carleton College also takes itself seriously, and it might have a space it calls a chapel, but that and some religion courses are the closest it gets to organized spirituality.  These differences plus two third-rate athletics programs feather the bed for a friendly cross-town rivalry that goes back generations.</p>

<h2 id="the-legend">The Legend</h2>

<p>Legend has it that, in the beginning, a Carleton graduate was a writer for <em>The Golden Girls</em>.  The rest of the legend almost writes itself, no?  This writer paints a picture of a rural Minnesota town called <a href="https://en.wikipedia.org/wiki/Rose_Nylund#St._Olaf">Saint Olaf</a>.  The town is home to people who, like Rose, are naive but well meaning.  More often than not, that naivete tends towards idiocy.  In this way a Carleton graduate was able to paint St. Olaf College as a bunch of Scandanavian dummies.  And that is prank is in syndication for everyone to enjoy!</p>

<p>If there are annals of great acts in college rivalries, this one has to be the epitome.  Prove me wrong.</p>

<h2 id="the-history">The History</h2>
<p>There is no historical evidence that this legend is more than a funny story made up by a Carl<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">3</a></sup> during <a href="https://webcache.googleusercontent.com/search?q=cache:F38XhW7Zii4J:https://thecarletonian.com/2020/05/30/drinking-with-the-oles-and-a-t-pain-teapot-sproncert-through-the-decades/+&amp;cd=1&amp;hl=en&amp;ct=clnk&amp;gl=us&amp;client=safari">Arbstock</a>.  I’ve found a couple internet references to the story (<a href="https://www.sitcomsonline.com/boards/showthread.php?t=317520">1</a>,<a href="https://www.city-data.com/forum/minnesota/1162091-fictional-st-olaf-mn-hometown-rose-3.html">2</a>), but there are no first-person accounts from anyone in The Golden Girls’s writers good that can verify it’s more than an amusing yarn.</p>

<p>The IMDB entry for <em>The Golden Girls</em> program lists the writers on the show from the start (<em>i.e.</em>, 1985) as
<a href="https://www.imdb.com/name/nm0365358/?ref_=ttfc_fc_wr1">Susan Harris</a> (Cornell), <a href="https://www.imdb.com/name/nm0381161/?ref_=ttfc_fc_wr4">Winifred Harvey</a> (NI), <a href="https://www.imdb.com/name/nm0266673/?ref_=ttfc_fc_wr6">Barry Fanaro</a> (Mercer College), <a href="https://www.imdb.com/name/nm0622240/?ref_=ttfc_fc_wr8">Mort Nathan</a> (University of Illinois), <a href="https://www.imdb.com/name/nm0343724/?ref_=ttfc_fc_wr10">Terry Grossman</a> (NI), and <a href="https://www.imdb.com/name/nm0817565/?ref_=ttfc_fc_wr12">Kathy Speer</a> (NI).  I’ve added each writer’s <em>alma mater</em> parenthetically.  The “NI” means my Googling yeilded no information about where that person went to college.  At the date of this writing, there’s no clear connection between writers and Carleton.</p>

<p>If you can help find and primary sources (<em>e.g.</em>, document, people) or connect me with someone who I can interview to substantiate this legendary origin story, my Twitter DMs are open.</p>

<p>EDIT:  Another person who is mentioned as a writer on <em>The Golden Girls</em>, and someone who may have started as an intern on the show, is <a href="https://www.imdb.com/name/nm0515941/?ref_=ttfc_fc_wr20">Christopher Lloyd</a>.  He’s a Yale graduate.</p>

<p>EDIT: (16 January 2022)  In <a href="https://www.startribune.com/back-in-1992-betty-white-visited-minnesotas-real-st-olaf/600136234/">“Back in 1992, Betty White visited Minnesota’s real St. Olaf”</a> that appeared January 15th in the Start Tribune, Curt Brown writes</p>

<blockquote>
  <p>White’s bond with St. Olaf started in the mid-1980s, when a Hollywood producer called Dan Jorgensen out of the blue at his office at the college, where he worked in public relations.</p>

  <p>The TV guy wanted to give the college a heads up: They were going to feature White as a character from made-up St. Olaf, Minn. Jorgensen checked with the college president, who agreed it couldn’t hurt.</p>
</blockquote>

<p>While it probably wasn’t the producer’s idea to give Rose the Olaf backstory, there may be a producer out there who can verify that this tale of a college rival is true.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>IMDB entry for <a href="https://www.imdb.com/title/tt0088526/">the Golden Girls</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>Check out the Twitter account @StOlafStories which posts clips from the show that feature stories about people from Saint Olaf, MN. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Students of St. Olaf College refer to themselves as Oles.  Students of Carleton refer to themselves as Carls. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Jason</name></author><category term="apocrypha" /><category term="popular-culture" /><category term="stolaf" /><category term="betty-white" /><summary type="html"><![CDATA[Betty White passed away yesterday. Well-wishers flooded twitter with messages mourning her passing and celebrating her life. One tweet from @jxeker shared a clip from The Golden Girls where Rose Nyland (Betty White’s character) is telling a story from her past to help her friends resolve a problem. The clip shows her actor colleagues breaking character under the pressure of Ms. White’s comic chops.]]></summary></entry><entry><title type="html">Speculation on Social Justice Radio</title><link href="http://www.thecoldfish.com/2021/12/08/socialjusticeradio02.html" rel="alternate" type="text/html" title="Speculation on Social Justice Radio" /><published>2021-12-08T00:00:00+00:00</published><updated>2021-12-08T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/12/08/socialjusticeradio02</id><content type="html" xml:base="http://www.thecoldfish.com/2021/12/08/socialjusticeradio02.html"><![CDATA[<p>What can amateur radio offer the social justice movement in the United States?  I approach this question through my limited knowledge of both.  The aspect of social justice that I have in mind, at present, are public demonstrations against police injustice.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>  I’ll organize my thoughts in a call-and-response format, sharing what I’ve learned about how  amateur radio communications support events I’ve participated in and then speculating about how that might translate to supporting social justice work.</p>

<h2 id="camarillo-air-show">Camarillo Air Show</h2>
<p>I volunteered at the 2021 Wings Over Camarillo air show.  The Auxilliary Communication Service provided organizational support for the volunteers and provided some of their equipment for the effort.  This included their communications trailer that was outfit with antennas, a hydraulic telescopic mast.  With the mast extended, the trailer’s radios had receive clear transmissions from all volunteers and transmit clearly, as well.  Without the trailer, the volunteers would rely on local public <a href="http://www.cvarc.org/open-access-repeaters/">repeaters</a> which were likely distant from the event and less likely to receive signals as clearly from the volunteers’ hand transmitters.</p>

<!--![ACS Trailer with Mast Extended][acs-trailer]-->

<p>The trailer contains, among other things, working surfaces and chairs, two wall mounted large LCD monitors, at least four mobile single- and dual-band radios (2m and 70cm), a small gasoline generator, and various antennas though could be mounted to the trailer’s roof or mast.  The trailer acted as a communications hub, with one volunteer acting as ‘net control’ on our event frequency, relaying message to and from other volunteers who were moving about the event with hand transmitters.  Also in the trailer was one hand transmitter that the event organizers were using.  ‘Net control’ could pick up that radio and talk with different event staff depending on the channel they chose (<em>e.g.</em>, first aid, maintenance, security).</p>

<p>Most of the volunteers, who all wore yellow shirts and bright safety vests, would wander through an assigned event quadrant, keeping their eyes open for matters that deserved attention.  These might include an oil spill, a person in distress, a lost child, etc.  Encountering any of these would merit a notification of ‘net control’ by radio, and ‘net control’ would then pass on the message to the proper event authority. Only ‘net control’ could speak with the event staff through the event radio.  The roving volunteers could only communicate with one another and ‘net control’ via their hand radios.</p>

<p>Volunteers also carried an Automatic Packet Reporting System (<a href="http://www.aprs.org">APRS</a>) beacon that broadcasts their location to a network in a way that allows a computer in the communications trailer display the volunteer’s location on a map.  In this way, ‘net control’ can see the location of all event radio volunteers at any time.</p>

<p>One volunteer was assigned to shadow the event director.  This allowed rapid communication between ‘net control’ and the event.  Another volunteer was staged at one of the entrances to the event.  Past experience suggested that these non-wandering assignments had value, as they put people near wghere problems were likely to occur or be solved.</p>

<p>This delegation of communication duties and the use of a central coordinating hub, ‘net control’, was efficient and clear.  The operation and communication of the radio volunteers was separate from the event communication, minimizing cross-talk and confusion.  The volunteers maintained a high level of situational awareness at the event, and communicated anuy concerns to event organizers to handle.  The volunteers were not expected or prepared to do anything else.</p>

<h3 id="translation-to-a-social-justice-event">Translation to a social justice event</h3>
<p>This kind of work is immediately adaptable to a social justice event like a rally or demonstration.  Communications volunteers could wander around the area, along the peremeters and through the center, to increase situational awareness for the event organizers.  Radio volunteers could help notice people in distress, problems with the facilities,  and bad actors, reporting them to the event organizers.</p>

<p>Having a communications trailer would not be necessary, but someone in the communications group should be assigned the role of ‘net control’ to keep communications orderly and clear.  That person would liaison with the event organizers if and when the volunteers discovered issues.  Although a ‘net control’ spends most of their time waiting for calls from the other volunteers, when an issue arises, it will require net control’s full attention.  For this reason, ‘net control’ should not be assigned other duties that might distract them from their role an communications coordinator and liaison.</p>

<p>The value in adding volunteer communications to an event include increased situational awareness and decreased response time by organizers to issues that require their attention.  This will make the event safer for all participants.</p>

<p>Another indirect benefit comes from the fact that amateur radio operates on public frequencies and <a href="https://www.law.cornell.edu/cfr/text/47/97.113">may not be encrypted</a>.  This means that anyone with a radio can listen to the traffic created by the volunteers.  This adds transparency to an event, removing mystery and dispelling rumors that work against the credibility of the event.</p>

<h2 id="moorpark-country-days-parade-and-street-fair">Moorpark Country Days Parade and Street Fair</h2>
<p>This was a relatively small <a href="https://moorparkcountrydays.com">parade</a> in a small exurb of Los Angeles kicked off a street fair and car show.  Radio volunteers supported the parade.  The parade route might have been two miles long, and it crossed a moderately trafficed set of train tracks.  There were three radio volunteers.  One was the ‘net control’ who also roved around the parade area.  The second was assigned to shadow the parade manager at the parade’s starting point.  The third was assigned to ‘shadow’ the parade announcer’s<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> station.</p>

<p>The second of these communicated to the third when there were changes to the printed and planned line-up of parade entries.  The second also relayed questions and concerns by the manager when they learned their event radio (which was rented for a non-trivial cost) did not work.</p>

<p>The radio volunteers at this parade were more integrated into the operations of the event.  They helped the event organizers deliver a professional and enjoyable parade that kicked off the street fair.</p>

<p>At this even, the volunteer radio operators did not have a fixed communication hub like the ACS communications trailer at the Camarillo Air Show.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>  This meant their communications were limited by the low power of the hand held radios they used.  This turned out to be a problem, as transmissions were unclear and the volunteers lost time when they tried to reconfigure radios to use a nearby UHF repeater.  This was as much of a technology problem as it was an organizational and leadership problem.</p>

<h3 id="translation-to-a-social-justice-event-1">Translation to a social justice event</h3>
<p>This kind of support translates immediately to the context of a social justice event.  Instead of a parade, imagine a program of speakers at a rally, and the radio volunteers can be assisting event organizers with the smooth presentation of the program.  This is work that could be provided by a for-profit events management company who would likely own communications gear that would allow the coordination of staff all around the event area.  But a knowledgeable group of volunteer amateur radio operators could do the same communications work for free.</p>

<p>It’s true that their communications would be in the clear and that anyone with the proper type of radio could monitor those communications.  Any communications that should the event organizers want sheilded from the public could happen by other means (e.g., cell phone) and do not require amateur radio support.</p>

<h2 id="half-marathon">Half Marathon</h2>
<p>I’m signed up to volunteer at the <a href="http://www.santatothesea.com">Santa To The Sea</a> half-marathon event this weekend.  I will be on a bike with my hand transmitter and an APRS beacon, shadowing the last runner.  My even call sign will be ‘Chase 2’.   I imagine I will be providing the event with some degree of situational awareness, and I know that the event organizers will use my APRS beacon to see the tail end of the running pack so the route can be closed down as I pass.</p>

<p>A couple volunteers will be assigned to be in vehicles that will ferry people along the running route.  There will be a radio volunteer at each aid station, the finish line, and the starting line.  And there will be a handful of volunteers at a communications hub acting as ‘net control’ for radio communications and APRS control to monitor the positions of volunteers like me.</p>

<p>After I experience this event from the inside, I might have more to share about its operations.</p>

<h3 id="translation-to-a-social-justice-event-2">Translation to a social justice event</h3>
<p>Thinking about what kind of social justice event might be comparable to a long-distance running race, the first thing that comes to mind are the highly organized and angry protests that happened in cities like Los Angeles, Columbus, and Portland.  Not having participated in any of these, I don’t have a feel for how much central organization they had.  From afar, there appeared to be a lot of organic and spontaneous support of those events that may or may not have been coordinated.  And by ‘support’, I refer to people bringing water for others at the demonstration, and individuals and groups who provided first aid.  I am definitely not talking about coordination of agitators and those who want to pick a fight.</p>

<p>It seems obvious to me that large scale protests would benefit from a system of dedicated communications volunteers who would add to the event’s overall situational awareness and would facilitate communication between participants and those providing first aid and other types of help.  Better communications would lead to a safer experience for participants.  But I think amateur radio communications to add more to such events.</p>

<p>Radio operations could contribute to documenting the event.  Operators could monitor for counter-protestors with violent intent and who might also use radios to coordinate.  If the communications team had the hardware to do so, transmissions at the event could be recorded to create a record of the event.  To the extend that law enforcement agencies have a record of violating the rights of protestors, amateur radio operators could play a role in monitoring unencrypted police and fire radio traffic.  But the volunteers would also have a role in being a bridge between the event and public safety providers, too.</p>

<!--[acs-trailer]: /Users/millerj/Library/Mobile Documents/iCloud~md~obsidian/Documents/Obsidian Miller/images/Trailer-at-SKYWARN2-180x300.jpg-->
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>These thoughts will be wildly extendable to other types of protests or demonstrations or public displays. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>The announcers sat at a table with a PA system and provided commentary on the parade that the public could enjoy.] <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>The Ventura County Sheriff’s Deaprtment had a strong presence at the parade, and they had a mobile command unit stationed near the street fair.  In the past, the radio volunteers had been given space in that trailer to set up a repeater to support volunteer communications.  When I volunteered, our volunteer coordinator did not know that or chose not to take advantage of that resource. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Jason</name></author><category term="ham" /><category term="amateur-radio" /><category term="social-justice" /><summary type="html"><![CDATA[What can amateur radio offer the social justice movement in the United States? I approach this question through my limited knowledge of both. The aspect of social justice that I have in mind, at present, are public demonstrations against police injustice.1 I’ll organize my thoughts in a call-and-response format, sharing what I’ve learned about how amateur radio communications support events I’ve participated in and then speculating about how that might translate to supporting social justice work. These thoughts will be wildly extendable to other types of protests or demonstrations or public displays. &#8617;]]></summary></entry><entry><title type="html">Preliminary Thoughts on Social Justice Radio</title><link href="http://www.thecoldfish.com/2021/12/04/socialjusticeradio.html" rel="alternate" type="text/html" title="Preliminary Thoughts on Social Justice Radio" /><published>2021-12-04T00:00:00+00:00</published><updated>2021-12-04T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/12/04/socialjusticeradio</id><content type="html" xml:base="http://www.thecoldfish.com/2021/12/04/socialjusticeradio.html"><![CDATA[<p>Individuals who have an amateur radio license often exercise their radio skills by volunteering for community communications service.  I volunteered to work at Camarillo’s annual air show where I walked around the grounds with my handheld radio and tried to help answer questions from attendees and alert show organizers of problems when I saw them.  I also volunteered at a parade and helped the manager queue floats and rolling exhibits, updating the announcers a mile away if there were discrepancies with the written program.  Next week, I volunteer at a half marathon where I’ll ride behind the runners and report on their progress.  While these kinds of volunteer activites are enjoyable and have value, I’ve been thinking about other creative ways to use communications skills in the service of the public good, and I been wondering about social justice efforts.</p>

<p>Americans poured into the streets when George Floyd was murdered by Derek Chauvin, an officer of the Minneapolis Police Department at the time.  Protests erupted in many major cities, and many minor cities and towns.  Sadly, many protests were marred by police brutality and rights violations.  Paramilitary police departments leveraged less-than-lethal technology against women and men in the streets while journalists risked their safety to document the violence that was often escalated by police (a.k.a. peace) officers.  What role amateur radio played in those protests?  I never heard it mentioned.  How could a team of amateur radio operators could help protect the rights of Americans and make protests more visible to the public?</p>

<p>My county is home to a couple very active amateur radio clubs, and its through them that I learn of volunteer opportunities to use my radio skills.  What I didn’t know until I got more involved this year is that the people who are most active in these volunteer events (and who help identify and organize the volunteer efforts) are individuals who belong to the Auxilliary Communication Service (<a href="https://www.caloes.ca.gov/cal-oes-divisions/public-safety-communications/ca-9-1-1-emergency-communications-branch/tactical-communications/cal-oes-auxiliary-communications-service">ACS</a>) or the Amateur Radio Emergency Services (<a href="http://www.arrl.org/ares">ARES</a>).  The latter is a national volunteer effort under the umbrella of the American Radio Relay League (<a href="http://www.arrl.org/home">ARRL</a>), a professional organization for amateur radio.  The former, in California, is an <a href="https://www.caloes.ca.gov/cal-oes-divisions/public-safety-communications/ca-9-1-1-emergency-communications-branch/tactical-communications/cal-oes-auxiliary-communications-service">organ</a> of the California Office of Emergency Services.  Its members can be activated regionally by the Governor or the Governor’s designees to support a government response to public emergencies.  In Ventura County, I think this means that ACS coordinates and reports to the Ventura County Sheriff’s department.  Which makes for some awkwardness when you start trying to think of ways radio amateurs or their clubs can support social justice; that goal seems to conflict with the goals of law enforcement these days.</p>

<p>Leaders of ACS/ARES see volunteering to provide radio communications at events as a way for people to keep their skills sharp and to learn new things about working on a communication team.  This way when ACS is activated by the California OES, the volunteer members of ACS are relatively ready to support the mission of emergency response.  Since I’ve never supported an OES activation of ACS/ARES, I can only infer from what I’ve seen that the skills used in supporting parades and marathons in transferable to supporting responses to wild fires and earthquakes.  It would be reasonable to assume that the skills would also transfer to supporting social justice events, or vice versa, right?</p>

<p>This piece is getting a little long already, so I’ll bring this to a close after I mention the next thing that merits some thought:  what can amateur radio operators offer to social justice activities?  What could an individual do?  What could a team of operators do?  What could be done if the team had access to technology like a portable repeater and an <a href="http://www.aprs.org">Automatic Packet Reporting System</a> (APRS).  The U.S. Code of Federal Regulations (<a href="https://www.law.cornell.edu/cfr/text/47/part-97">47 CFR Part 97</a>) lays out limits for amateur radio.  One can’t get paid for using amateur radio frequencies, and one can’t use amateur radio frequencies to break the law.  Social justice efforts fit nicely in that pocket, and it’s worth brainstorming on how radio can be used for this important type of good.</p>

<p>Once I have time to think about this some more, I’ll write about it.  In the meantime, share your thoughts with me by <a href="mailto:millerj870@gmail.com?subject=Ham%20Radio%20And%20Social%20Justice">email</a> or at-me on twitter at @jasonemiller.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>Jason</name></author><category term="ham" /><category term="amateur-radio" /><category term="social-justice" /><summary type="html"><![CDATA[Individuals who have an amateur radio license often exercise their radio skills by volunteering for community communications service. I volunteered to work at Camarillo’s annual air show where I walked around the grounds with my handheld radio and tried to help answer questions from attendees and alert show organizers of problems when I saw them. I also volunteered at a parade and helped the manager queue floats and rolling exhibits, updating the announcers a mile away if there were discrepancies with the written program. Next week, I volunteer at a half marathon where I’ll ride behind the runners and report on their progress. While these kinds of volunteer activites are enjoyable and have value, I’ve been thinking about other creative ways to use communications skills in the service of the public good, and I been wondering about social justice efforts.]]></summary></entry><entry><title type="html">Regular Expressions and Preparing for the General Class Amateur Radio License Exam</title><link href="http://www.thecoldfish.com/2021/07/25/regex-ham-general-question-pool.html" rel="alternate" type="text/html" title="Regular Expressions and Preparing for the General Class Amateur Radio License Exam" /><published>2021-07-25T00:00:00+00:00</published><updated>2021-07-25T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/07/25/regex-ham-general-question-pool</id><content type="html" xml:base="http://www.thecoldfish.com/2021/07/25/regex-ham-general-question-pool.html"><![CDATA[<p>Last week I decided to study for and take the FCC Amateur Radio License exam for a General class license.  I earned the Technician class license a couple years ago, and I’ve been spending some time this summer learning more about my radios.  I learned that my fiddling with antennas and things has significant overlap with topics on the General exam.  So I shrugged and decided to prepare for it.</p>

<p>A trick I learned while preparing for the Technician’s exam makes the idea of taking another exam less daunting.  I <a href="https://www.qualitymatrix.com/hamclass/">took a class</a> where the instructors, Norm and Nancy Goodkin, gave us a handout that consisted of the exam’s question pool.  Each question appeared with the multiple choice answer options, and the correct option was printed in bold.</p>

<p>“Only memorize the correct answer,”  the Goodkins told the class.  “The others are just <strong>distractors</strong>.  Spending any time on the incorrect answers will confuse you.”</p>

<p>Their test-taking strategy was to condition yourself on the questions and their correct answers so that when you see them in the exam environment, the correct answer will be likely to jump out at you.  (Or your gut will direct you to “guess” the correct one.)</p>

<p>If they had made a study guide for the General class exam, this is how one of the questions and answers might have looked.</p>

<p>&lt;p style=”color:blue”&gt;
G1C15 (D) [97.313] <br />
What measurement is specified by FCC rules that regulate maximum power output?<br />
A. RMS
B. Average
C. Forward
<b>D. PEP<br />
</b>~~
&lt;/p&gt;</p>

<p>Even though that strategy worked for me, as a teacher, it goes against my learning and teaching philosophy.  But for a license, my philosophy is to get the license first without dishonest work and then learn more deeply later, through practice.  And because the FCC makes the question pool available to the public, I decided to take the same approach for the General exam.</p>

<p>A quick Google search pointed to the official question and answer pool for the 2019-2023 exams here: <a href="http://www.ncvec.org/page.php?id=364">Public Domain Release 2019-2023 General Class Pool</a>.  I downloaded the document as a text file.</p>

<p>It took me a while to notice that the answer key is embedded in the pool document itself.  Once I noticed that, I knew it would be easy (in theory) to use regular expressions to reformat the multiple choice questions in the same way the Goodkins did.</p>

<p>As anyone who exists on the periphery of computer programming knows, it can take a long time to come up with a simple script.  This endeavor into reformatting was no different for me.  First, I figured how to do it in the BBEdit text editor (which has some nice tools for testing and deploying regular expressions).  Then, after recognizing a multi-step reformatting process would benefit from being scripted, I reproduced my BBEdit work in python.  This may have taken longer than just a line-by-line edit of the questions and answers, but if I do this again (in 2023) or if someone else uses this work to help them, it will be worth it.</p>

<h2 id="reformatting-in-bbedit">Reformatting in BBEdit</h2>

<p>It took me some trial and error, aided by BBEdit’s “Pattern Playground”, to come up with  a regular expressions that would do what I wanted.  (This worked for all but the very last question.  I don’t know why it failed on that one.)</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(^G[0-9]\D\d\d\s*\()(?P&lt;answer&gt;[A-D])\)(\s.*\n|\s*\n*)(.*\?.*\n)((.*\s*){0,3})(((?P=answer)\.\s)(.*\s*))((.*\s*){0,3})(\~\~)\n
</code></pre></div></div>
<p>The “replace” expression I used was</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>\1\2)\3\4\5\6**\7**\10 \n
</code></pre></div></div>

<p>Here, I would have liked to have the opening and closing “**” commands on the same line, but I couldn’t figure out how to do that.  So I rested on the knowledge that Markdown doesn’t care, and I ran with it.</p>

<p>I also added section and subsection formatting with the following search and replace strings.</p>

<p>For sections, I searched with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(^S.*)
</code></pre></div></div>

<p>and replaced with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>## \1
</code></pre></div></div>

<p>For subsections, I searched with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>^G[0-9]\D\s-.*
</code></pre></div></div>

<p>and I replaced with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>### \0
</code></pre></div></div>

<p>I could have dealt with the title by hand, but I used this for the search</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2019-2023 General Class.*
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># \0
</code></pre></div></div>

<p>With that reformatting done, I did a University search and replace to add a slash in front of every <code class="language-plaintext highlighter-rouge">[</code> because markdown reserves those for hyperlinks.  Then I added a note to the start of the document and violá!  I had a Goodkin-ized study document.  (I will link it to the end of this posting.)</p>

<p>Then I went down a sort of rabbit hole.</p>

<h2 id="reformatting-with-python">Reformatting with Python</h2>

<p>Because the reformatting required a series of replacement steps, I thought that it would be economical to put those in a script so they could all happen at once.  I already had the regular expressions that worked in BBEdit.  Could it be so difficult to translate that into a python script?</p>

<p>I had python installed, but I didn’t have a good IDE.  A few minutes of <a href="https://wiki.python.org/moin/IntegratedDevelopmentEnvironments">research</a> led me to <a href="https://www.spyder-ide.org">Spyder</a>, which I downloaded and installed.  I was attracted to it because it had a Matlab-like interface that gives me an editor along with a console of commands, a command line console, and a workspace of variables in memory.  Together, these tools would help me cobble together and troubleshoot a script.</p>

<p>Leaning heavily on the <a href="https://docs.python.org/3/howto/regex.html">Regular Expression HOWTO</a> at <a href="http://www.python.org">python.org</a>, I identified the functions I’d need and translated the regular expression syntax into python-ese.  I had to read about file handling, too.</p>

<pre><code class="language-python=">#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 25 08:23:00 2021

@author: Jason Miller (KM6PSZ)
"""

import re, os, sys
os.chdir('/path/to/folder/')
input = open("tmp.txt","r")
output = open("tmp.md", "w")
input_str=input.read()

# -----------------------------------
# Reformat title lines
in_title=re.compile('(\s*)(2019-2023 General Class.*)')
new_title = in_title.sub(r"\n\n# \2",input_str)
# -----------------------------------
# Reformat section lines
in_section=re.compile('^(SUBELEMENT\sG\d)',re.MULTILINE|re.DOTALL)
new_section = in_section.sub(r"## \1",new_title)
# -----------------------------------
# Reformat subsection lines
in_subsection=re.compile('^(G[0-9]\D\s-)',re.MULTILINE|re.DOTALL)
new_subsection = in_subsection.sub(r"### \1",new_section)
# -----------------------------------
# Reformat question and answer lines
in_question=re.compile('(^G[0-9]\D\d\d\s*\()(?P&lt;answer&gt;[A-D])\)(\s.*\n|\s*\n*)(.*\?.*\n)((.*\s*){0,3})(((?P=answer)\.\s)(.*\s*))((.*\s*){0,3})(\~\~)\n', re.MULTILINE)
new_questions = in_question.sub(r"\1\2)\3\4\5**\7**\10\12\n",new_subsection)
# -----------------------------------
# Add backslash in from of brackets
openbrackets=re.compile('(\[)', re.MULTILINE)
new_fwdbrackets = openbrackets.sub(r"\\[",new_questions)
closebrackets=re.compile('(\])', re.MULTILINE)
new_closebrackets = closebrackets.sub(r"\\]",new_fwdbrackets)

# ----------- reformatting done --------------

output.write(new_closebrackets)
input.close()
output.close()



## for troubleshooting
#found=in_question.findall(new_subsection)
#in_section.findall(input_str)
#print(found)
</code></pre>

<p>This script does <em>almost</em> all the reformatting that needs to happen.  There’s a question or two that gets missed and a subsection heading or two, as well.  (These errors are likely due to inconsistencies in the original document.)</p>

<p>The script and the output are linked here:</p>

<ul>
  <li><a href="/assets/data/fcc-General-reformatting-regex.py">python script</a></li>
  <li><a href="/assets/data/fcc-General-reformatted.md">markdown-ified output</a></li>
  <li><a href="(/assets/data/fcc-General-reformatted-edited.pdf)">edited markdown output</a></li>
  <li><a href="/assets/data/fcc-General-reformatted-edited.pdf">edited markdown output (PDF format)</a></li>
</ul>

<p>Even with the script, there are a couple other things that need to be done by hand, anyway:</p>

<ul>
  <li>a global search and replace for a quotation character that my text editor didn’t like (YMMV)</li>
  <li>adding the missing grahic for the questions in section G7-1</li>
  <li>adding a colophon (at the end) that explains what I did to reformat the question pool</li>
</ul>

<p>A couple things I would like to add to the script include</p>

<ul>
  <li>some formatting that will make the questions easier to read (<em>e.g.</em>, italicizing the distractors and the heading to the question)</li>
  <li>figuring out how to edit the content of a capturing group to add formatting (add bold face to the answer line, italicize the lead-in information for each question, <em>etc.</em>)</li>
</ul>

<p>If I make these changes to my script, I’ll append an update to this post.</p>]]></content><author><name>Jason</name></author><category term="amateur-radio" /><category term="script" /><category term="maker" /><category term="coding" /><category term="python" /><category term="regex" /><category term="markdown" /><category term="ham" /><summary type="html"><![CDATA[Last week I decided to study for and take the FCC Amateur Radio License exam for a General class license. I earned the Technician class license a couple years ago, and I’ve been spending some time this summer learning more about my radios. I learned that my fiddling with antennas and things has significant overlap with topics on the General exam. So I shrugged and decided to prepare for it.]]></summary></entry><entry><title type="html">Flashbake rediscovered!</title><link href="http://www.thecoldfish.com/2021/07/15/flashbake.html" rel="alternate" type="text/html" title="Flashbake rediscovered!" /><published>2021-07-15T00:00:00+00:00</published><updated>2021-07-15T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/07/15/flashbake</id><content type="html" xml:base="http://www.thecoldfish.com/2021/07/15/flashbake.html"><![CDATA[<p>A long, long, long time ago, when I was first learning about git and was regularly reading <a href="">LifeHacker</a>, I discovered and started using a script that would add rich content to a git commit message.  For the last couple weeks, I’ve been trying to figure out what that script was called.  I associated it with the Lifehacker founder Gina Trapani and the author and activist Cory Doctorow, but that’s about all I could remember.  Today, I decided to ask the Twitter hivemind for help and posted this.</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Ages ago, <a href="https://twitter.com/ginatrapani?ref_src=twsrc%5Etfw">@ginatrapani</a> (Lifehacker) and maybe <a href="https://twitter.com/doctorow?ref_src=twsrc%5Etfw">@doctorow</a> shared a CLI script for logging your work with information on what you were doing at the time (the music playing at the time, the weather, etc). I can&#39;t for the life of me remember the name of the script. Can anyone help?</p>&mdash; Jason &quot;Je Suis Antifa&quot; Miller (@jasonemiller) <a href="https://twitter.com/jasonemiller/status/1415753920102625280?ref_src=twsrc%5Etfw">July 15, 2021</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Minutes later, I received this Tweet in response.</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Flashbake</p>&mdash; Cory Doctorow (@doctorow) <a href="https://twitter.com/doctorow/status/1415754805373378561?ref_src=twsrc%5Etfw">July 15, 2021</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>From the creator himself!</p>

<p>A Google search revealed that a version is still alive and being maintained (as of mid-2020) in Github here:  <a href="https://github.com/cmdln/flashbake">flashbake</a>.</p>

<p>Now I need to download it and start using it again. This should be fun.</p>

<h2 id="update-macports">Update: macports</h2>

<p>Flashbake is actually a package in macports!</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>Jason</name></author><category term="git" /><category term="writing" /><summary type="html"><![CDATA[A long, long, long time ago, when I was first learning about git and was regularly reading LifeHacker, I discovered and started using a script that would add rich content to a git commit message. For the last couple weeks, I’ve been trying to figure out what that script was called. I associated it with the Lifehacker founder Gina Trapani and the author and activist Cory Doctorow, but that’s about all I could remember. Today, I decided to ask the Twitter hivemind for help and posted this.]]></summary></entry><entry><title type="html">Software Development and Anti-Racism</title><link href="http://www.thecoldfish.com/2021/07/15/versioning-and-antiracism.html" rel="alternate" type="text/html" title="Software Development and Anti-Racism" /><published>2021-07-15T00:00:00+00:00</published><updated>2021-07-15T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/07/15/versioning-and-antiracism</id><content type="html" xml:base="http://www.thecoldfish.com/2021/07/15/versioning-and-antiracism.html"><![CDATA[<p>In these post-George-Floyd times where the apartheid-hiding bandages have been ripped from the eyes of many Americans, people talk about being anti-racist but don’t know how to do it.  Even when people are beign anti-racist, it can be hard to see the anti-racist <em>actions</em> they are taking.  This afternoon, I encountered one in the software development community.</p>

<p>In a <a href="https://www.hubspot.com">HubSpot</a> tutorial on <a href="https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners">git for beginners</a>, I ran across this text:</p>

<blockquote>
By default, every git repository’s first branch is named `master` (and is typically used as the primary branch in the project). As part of the tech industry’s general anti-racism work, some groups have begun to use alternate names for the default branch (we are using “primary” in this tutorial, for example).
</blockquote>

<p>Kudos to these folks!  If you want to know how to change the default name of the primary branch of your git repository from ‘master’ (the default) to something less charged (like ‘primary’), here’s the command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config --global init.defaultBranch primary
</code></pre></div></div>

<p>Do it up.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->]]></content><author><name>Jason</name></author><category term="git" /><category term="anti-racism" /><summary type="html"><![CDATA[In these post-George-Floyd times where the apartheid-hiding bandages have been ripped from the eyes of many Americans, people talk about being anti-racist but don’t know how to do it. Even when people are beign anti-racist, it can be hard to see the anti-racist actions they are taking. This afternoon, I encountered one in the software development community.]]></summary></entry><entry><title type="html">Exploring Antennas for my Radio</title><link href="http://www.thecoldfish.com/2021/07/09/amateur-radio-antennas.html" rel="alternate" type="text/html" title="Exploring Antennas for my Radio" /><published>2021-07-09T00:00:00+00:00</published><updated>2021-07-09T00:00:00+00:00</updated><id>http://www.thecoldfish.com/2021/07/09/amateur-radio-antennas</id><content type="html" xml:base="http://www.thecoldfish.com/2021/07/09/amateur-radio-antennas.html"><![CDATA[<p>In early 2018, I took and passed the test for a first ham radio license (Technician class).  My thought at the time was that the license would allow me to do interesting work-related things with unmanned aerial vehicles (<em>e.g.</em>, sending and receiving telemetry and image data), but nothing really happened with that.  While I was studying for the exam, I recognized that being able to operate a radio is an important skill in times of emergency, so that motivates me to be proficient with these radios.</p>

<p>In these 3+ years, I haven’t learned much.  My hand transceivers (HTs) are great but complicated.  I can barely program in frequencies and offsets and tones to get them to work with local repeaters.  And I go so long between learning sessions that I forget what I learned the last time!</p>

<p>When I learn about new things (e.g., brewing beer), I like to learn with others.  But I just haven’t connected with people who are interested in amateur radio.  I’m thinking about why that is.  From my perspective, the amateur radio community is full of old, grey men.  And it is not growing.  If amateur radio is an asset to American society, then I think it needs some help.  But I’ll write about that more later.</p>

<p>My own few radio-based accomplishments include putting an antenna on my truck, using the radio when I’m in the field doing research (e.g., to listen to NPS rangers), and getting my truck a license plate with my call sign, KM6PSZ.  This summer I have a bit more disposable time, so I’ve trying to learn to use my radio effectively.  This week, I was thinking about antennas.</p>

<h2 id="antennas">Antennas</h2>

<p>You can’t do much with a radio without an antenna, and the whip antenna on a handheld transceiver doesn’t give it much working range.  Home Owners Associations (HOA) are notorious for having rules (also called Declaration of Covenants, Conditions, and Restrictions (CC&amp;Rs)) that limit what an owner can do to the home that they own.  On the surface, these rules protect the value of homes in a neighborhood and  preserve the character of a neighborhood.  Historically, convenants were a tool of institutional racism and white supremacy used by governments, financial institutions, mortgage lenders in a process called <a href="https://www.cityofcamarillo.org/Combined%20AI%2001.16.20.pdf">redlining</a>.  CC&amp;Rs often contain more innocuous rules like the prohibition of antennas<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> on the home.</p>

<p>My HOA is unpredictable.  I know that if I put up something that visible, someone is bound to complain and I’ll get a letter.  I want my first antenna to be subtle.  I don’t want any trouble from my neighbors.  So the other day I posted a question to the “So-Cal Amateur Radio Group” on Facebook.</p>

<blockquote>
Can anyone suggest a low-cost idea for an antenna I could mount in (or on?) my house that would give my HT a bit more reception range?  I'm in a neighborhood that has a dumb HOA, so I need to be sneaky if it's outside.  TIA.
</blockquote>

<p>The next morning morning I had several helpful responses, and no snarky responses.  Score one for this group of hams!  (Other subject-groups on Facebook have a high jerk-to-kind ratio.) Here are some ideas that were shared by those who posted:</p>

<ul>
  <li>look at a <a href="https://www.hamuniverse.com/slimjim.html">Slim Jim</a> (and <a href="https://www.essexham.co.uk/slim-jim">here</a>)</li>
  <li>look at a <a href="https://www.arrl.org/files/file/Public%20Service/TrainingModules/jpole-dual-band.pdf">JPole Rollup</a></li>
  <li>consider the VOIP AllStar network</li>
  <li>there are always your aluminum gutters.</li>
</ul>

<p>Someone recommended <a href="https://n9taxlabs.com">N9TAX Labs</a> for their Slim Jims.  I took a look, and <a href="https://n9taxlabs.com/shop/ols/products/dual-band-slim-jim-antenna-with-10-or-16-foot-cable">their offerings</a> look perfect for me to start playing with.  I could find a way to mount it outside or on my rig (e.g., along a whip antenna I picked up for a run at Oceano Dunes a couple years ago).</p>

<p>The instructions for constructing a JPole antenna (linked above) get me excited about doing that as a project, and maybe designing a project for a club of young folks (e.g., at the University).  I could put one antenna in my (tiny) attic, keep another rolled up in my truck, etc.  Cool stuff!</p>

<h2 id="gutters-as-an-antenna">Gutters as an Antenna</h2>

<p>My web surfing led me to the idea of using gutters as an antenna.  It was easy to find several write-ups on the idea (<a href="https://www.eham.net/article/33775">1</a>,<a href="https://dailyantenna.blogspot.com/2019/03/loading-up-gutter.html">2</a>,and <a href="https://www.sgcworld.com/raingutterinstall.html">3</a>) and they make it sound so reasonable.  Some things I’m need to figure out:</p>

<ol>
  <li>
    <p>Tuning.  Using the gutter as an antenna would teach me about tuning and accessing different frequencies.  Would I need to buy a specialized tool (coupler or analyzer)?  Can a person use a gutter antenna with a HT?  (Desktop rigs sometimes have built-in tuners.  Do mobile transceivers?)</p>
  </li>
  <li>
    <p>Grounding.  I’d need to learn how to ground the gutter antenna, or if it was even necessary.</p>
  </li>
  <li>
    <p>Connections.  My ‘radio shack’ is my home office.  How do I run the coax from the outdoor antenna to my indoor transceiver?  If I can get coax to my telephone ‘box’ upstairs, and I use internal wiring that’s already been run to get the coax to my office?  Or will I need to put something through the wall (and find internal and external coax connectors I can use.)</p>
  </li>
</ol>

<p>Running my gutters as antennas may require a bit more homework on my part, but  it will certainly be another fun project.</p>

<h2 id="closing">Closing</h2>

<p>A day or two or researching antennas turned up some good options for me.  I have the friendly group of hams who responded to my FB query to thank for that.  If only I had a friendly group nearby that could meet face-to-face once in a while.  I’m sure I’d learn more and learn faster.  It takes more than a license to know how to operate an amateur radio, after all.</p>

<!--
SYNTAX FOR IMAGES
* use services to create JPG and to create thumbnail that is 720px wide

[![ALT-TEXT](/assets/images/filename-thumbnail.jpg)](/assets/images/filename.jpg)
-->

<!--
SYNTAX FOR VIDEO
* convert MOV to mp4 using VLC

<video width="480" height="320" controls="controls">
  <source src="/assets/media/filename.m4v" type="video/mp4">
</video>
-->
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>If your HOA’s CC&amp;Rs prohibit satellite dishes from being mounted on homes, then they are in violation of federal law (<a href="https://findhoalaw.com/satellite-dishes-generally/">Civil Code Section 4725</a> and should be revised.  There have been efforts in Congress to amend the Civil Code to give amateur radio antennas the similar privilege, but that effort has stalled (see <a href="https://www.congress.gov/bill/116th-congress/house-bill/466?s=1&amp;r=6">H.R.466 - Amateur Radio Parity Act of 2019</a>). <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Jason</name></author><category term="ham" /><category term="amateur-radio" /><category term="antenna" /><summary type="html"><![CDATA[In early 2018, I took and passed the test for a first ham radio license (Technician class). My thought at the time was that the license would allow me to do interesting work-related things with unmanned aerial vehicles (e.g., sending and receiving telemetry and image data), but nothing really happened with that. While I was studying for the exam, I recognized that being able to operate a radio is an important skill in times of emergency, so that motivates me to be proficient with these radios.]]></summary></entry></feed>