<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. https://www.livejournal.com/bots/  -->
<rss version='2.0'  xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Trevor Stone&apos;s Journal</title>
  <link>https://flwyd.livejournal.com/</link>
  <description>Trevor Stone&apos;s Journal - LiveJournal.com</description>
  <lastBuildDate>Sun, 09 Jan 2022 04:55:32 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>flwyd</lj:journal>
  <lj:journalid>179498</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://l-userpic.livejournal.com/358161/179498</url>
    <title>Trevor Stone&apos;s Journal</title>
    <link>https://flwyd.livejournal.com/</link>
    <width>95</width>
    <height>96</height>
  </image>

  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/402140.html</guid>
  <pubDate>Sun, 09 Jan 2022 04:55:32 GMT</pubDate>
  <title>Advent of Raku (and a little Go)</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/402140.html</link>
  <description>&lt;a href=&quot;https://adventofcode.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Advent of Code&lt;/a&gt; is an annual programming challenge.  Every night at midnight EST from December 1st through 25th, a new problem is posted to the website, along with a participant-specific input file.  Participants can use any programming language they want to solve the problem, using their input, and see if the output of their program matches the expected value.  Once that&apos;s done, a second part of the problem becomes available.  Part 2 uses the same input file and is generally a variation on the first part, such as changing the goal from &quot;find the maximum&quot; to &quot;find the sum of all&quot; or increasing the number of times an operation needs to be performed so that an inefficient algorithm will be far too slow.  Problems are usually straightforward at the beginning of the month and get more challenging as the month progresses.  There&apos;s a stats page measuring time-to-completion and a top-100 leaderboard, but no prizes; many folks pursue their own goals like learning a new language or minimizing program runtime which are somewhat at odds with quick finishes.&lt;br /&gt;&lt;br /&gt;After having lots of fun and learning Kotlin with &lt;a href=&quot;https://flwyd.dreamwidth.org/396527.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Advent of Code in December 2020&lt;/a&gt;, I decided to use &lt;a href=&quot;https://raku.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Raku&lt;/a&gt; for this past year&apos;s edition (&lt;a href=&quot;https://github.com/flwyd/adventofcode/tree/main/2021&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;with code shared on GitHub&lt;/a&gt;).  Raku is the new name of &lt;em&gt;Perl 6&lt;/em&gt;, a &quot;member of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Perl&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Perl&lt;/a&gt; family of languages&quot; which famously took a decade and a half of community experimentation before a finalized version was released.  Perl, in turn, is a language originally focused on working with collections of text files which is famously easy to write or hard to read, depending on who you ask.  Raku keeps many of Perl&apos;s basic syntactic elements&amp;mdash;like scalar, array, and hash variables identified by &lt;code&gt;$&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, and &lt;code&gt;%&lt;/code&gt; sigils&amp;mdash;but also brings to bear a lot of modern programming language developments like class-based object orientation, concurrency, type constraints, multi-dispatch, and just-in-time compilation.  Raku is also what one might call &lt;em&gt;Unicode-forward&lt;/em&gt;.  Most languages these days allow Unicode literals in strings, and most languages made since the &apos;90s allow Unicode letters in program identifiers.  Raku takes this significantly further.  First, Raku strings are sequences of graphemes rather than just bytes or Unicode code points, so both the single-code-point and the &quot;combining diacritics&quot; variants of &lt;code&gt;&quot;&amp;eacute&quot;&lt;/code&gt; are identical in Raku.  Second, Unicode characters aren&apos;t just limited to letters: the language and standard library provide &lt;code&gt;$thing &amp;isin; ($set1 &amp;cup; $set2)&lt;/code&gt; for set operations, &lt;code&gt;@words&amp;raquo;.uc&lt;/code&gt; to upper-case each element of an array, &lt;code&gt;⚛++&lt;/code&gt; for atomic-increment, &lt;code&gt;25 ** &amp;frac12;&lt;/code&gt; as another way to perform a square root, and quoting strings with arbitrary characters like &lt;code&gt;say q༺hello world༻.uc&lt;/code&gt;.  Additionally, Raku took one of Perl&apos;s big selling points in the &apos;80s and &apos;90s (terse and powerful regular expressions) and evolved them into &lt;em&gt;grammars&lt;/em&gt; which are easier to read, modify, and compose, and likely also faster.  This grammar support is what drew my interest to Raku, since I started a hobby project that involves parsing a small amount of information from source code written in a large number of languages, and the ability to quickly write but still maintain textual matchers would make that project more pleasant.&lt;br /&gt;&lt;br /&gt;One of the driving principles in the design of Raku (and Perl before it) is &lt;q&gt;There&apos;s more than one way to do it&lt;/q&gt; (TMTOWTDI).  Another principle (repeated frequently by people who post in help forums, it seems) is that programming in Raku should be &lt;em&gt;fun&lt;/em&gt;.  Several times while working on an Advent of Code solution I tried to do something in a way that looked both elegant and reasonable, only to find out that There&apos;s More Than One Way To Do It, But Some Of Those Ways Are Wrong.  (Furthermore, since TMTOWTDI, the documentation usually doesn&apos;t say &quot;This isn&apos;t a good tool for X, use Y instead.&quot;)  For example, I spent at least half an hour trying to understand why my memoization code didn&apos;t seem to be caching my &lt;code&gt;Pair&lt;/code&gt; objects, despite all my experiments with the interactive interpreter looking like things should work just fine.  It turns out that &lt;code&gt;foo =&amp;gt; 42&lt;/code&gt; creates a Pair which uses value equality for both key and value, but &lt;code&gt;my $key = &apos;foo&apos;; my $val = 42; $key =&amp;gt; $val&lt;/code&gt; creates a Pair that holds on to the &lt;code&gt;$val&lt;/code&gt; scalar (but not the key scalar) and thus uses (half) reference equality.  &lt;a href=&quot;https://docs.raku.org/type/Pair&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;The documentation explains this behavior in an aside&lt;/a&gt; and explains that &lt;code&gt;.freeze&lt;/code&gt; will result in an immutable Pair, but it&apos;s easy to encounter Pairs in documentation that doesn&apos;t mention that, and the half hour of WTF was not at all fun.  (Another Way To Do It would be implementing a 2-value tuple class myself, which wouldn&apos;t have added fancypants scalar handling.)  This discovery also reduced my confidence in the language a bit: when I look at a block of code, am I sure that my variables work as values, or might something &lt;em&gt;else&lt;/em&gt; hold on to this funny scalar reference?&lt;br /&gt;&lt;br /&gt;Another un-fun discovery was that &lt;code&gt;for @first &amp;cap; @second { &amp;hellip; }&lt;/code&gt; doesn&apos;t iterate through the shared elements of two arrays, but instead iterates through &lt;em&gt;Pairs, where the value is always &lt;code&gt;True&lt;/code&gt;&lt;/em&gt;. I was aware that many set implementations are implemented as a hash table where the keys are set elements and the values are a placeholder value like a boolean.  But most languages hide this implementation detail and present a set as akin to an unordered list which doesn&apos;t allow duplicate values.  The workaround is easy (call &lt;code&gt;.keys&lt;/code&gt; on the set when iterating over it), and it provides a nice symmetry with Bags (multisets) and Mixes (weighted sets), but it was still a big surprise.  This was made worse by Raku&apos;s gradual typing discipline and implicit conversions; I think I was putting the set elements into a Hash, which converts keys to strings by default, so rather than a compile or runtime error complaining that I was using a Pair where a Str was expected I got a Hash with keys like &lt;code&gt;foo&amp;lt;tab&amp;gt;True&lt;/code&gt; rather than just &lt;code&gt;foo&lt;/code&gt;.  Iteration and automatic conversion also combine in un-fun ways because the base class for most objects implements all the List methods by converting non-iterable objects into single-element lists.  I would find it a lot more fun if the Raku compiler would tell me that &lt;code&gt;sub answer(--&amp;gt; Int) { 42 } ; for answer() { &amp;hellip; }&lt;/code&gt; was attempting to iterate over a non-iterable (maybe I changed &lt;code&gt;answer&lt;/code&gt; from a List to an Int and forgot to update all the callers) rather than silently iterating over a single element.  This annoyance is compounded by the fact that scalar references to iterable types (like a sequence, list, or array) are turned into single-element lists in this context, so changing &lt;code&gt;my $x = nums =&amp;gt; (1, 2, 3, 4); .say for $x.value&lt;/code&gt; (which prints four lines with one number each) to &lt;code&gt;my $x = (1, 2, 3, 4); .say for $x&lt;/code&gt; changes the output to print a single line with four numbers and a pair of parentheses.  This makes changing the shape of data structures while developing a program (like adding or removing a wrapper class) create surprising effects that aren&apos;t caught by the compiler.  And maybe it&apos;s just me, but I think programming is more fun when the computer quickly tells you when you make a mistake, rather than losing an hour of sleep because you were debugging code that looked reasonable.&lt;br /&gt;&lt;br /&gt;Working in Raku did have some fun elements.  Contrary to my complaints about automatic conversions for container types, the ability to seamlessly work with numbers parsed from text was pretty nice for Advent of Code problems.  Having a Complex number type that works as a hash key made several 2D grid traversal problems fairly convenient.  And I even &lt;a href=&quot;https://github.com/flwyd/adventofcode/tree/2021/day10/day10.raku&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;got to leverage Raku&apos;s nice Unicode property support&lt;/a&gt; on a problem about open/close punctuation balancing.  I opted to use Raku this year as a way to try out grammars, and they were generally nice.  They&apos;re way more readable than Perl regular expressions and the &quot;Perl-compatible&quot; regex implementations that have come along in the past three decades, and the ability to supply an Actions class to parse the relevant data from a match and bubble it up makes working with the result of a complex parse much nicer.  Grammars are generally overkill for AoC inputs, but I found the structure pretty nice.  The one downside to Raku grammars was the lack of helpful information when a parse failed.  Unlike a typical programming language compiler that outputs the line and column where input didn&apos;t match expectations, a failed grammar parse just returns null, even though Raku has a Failure type that allows conveying additional information.  So when my parsing rules were wrong I generally had to put output statements in the Action class and manually inspect what the next token should&apos;ve been.&lt;br /&gt;&lt;br /&gt;Contrary to last year, when I mostly focused on implementing the code and learning the language, I spent a lot of time on the social side of AoC this year.  Last year I participated a bit in &lt;a href=&quot;https://reddit.com/r/adventofcode&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;the Reddit community&lt;/a&gt; to provide hints to folks who were stuck.  This year, after solving the problem and then participating in Google&apos;s group chat about the day&apos;s challenge, I frequently spent a couple hours on Reddit, reading through the &quot;solutions megathread&quot; and checking out people&apos;s visualizations.  This meant a lot of 3am bedtimes this December, followed by another late night.  Coupled with trying to actually get some work done, I spent far too much time staring at a screen this December.  Also, unlike 2020, there were social reasons to leave the house this year&amp;mdash;friends were amused that I was programming in Vim over SSH from a smartphone while semi-drunk at a holiday party while also chatting with folks.  (There were just a couple small bugs by the time I got home, and Vim&apos;s terse modal editing proved to be a nicer phone-based development environment than I&apos;d expected.)&lt;br /&gt;&lt;br /&gt;Three weeks of late nights&amp;mdash;including an all-nigher for day 19 because I&apos;d incorrectly assumed that rotations in 3D were commutative&amp;mdash;definitely caught up with me.  I was pretty burned out by the time I got stuck and went to bed on day 23, which is kind of an interesting problems with a lot of little fussy ways to introduce bugs.  I was extra toasty on day 24 (the night leading into Christmas Eve) when I discovered that what I thought would be a reasonable solution&amp;mdash;a modified binary search&amp;mdash;didn&apos;t work at all because in the possible solution space of about 20 trillion numbers, fewer than ten are even potentially the right answer.  This fact about the input file wasn&apos;t at all clear from the problem statement, and the frustration was intensified by the fact that (contrary to every other AoC problem I&apos;ve seen) there was no realistic example and expected output to experiment with.  The fact that a seemingly reasonable solution can run for hours without providing any insight about the problem (other than &quot;valid values are sparse&quot;) and that (as far as I can tell) an efficient solution to this otherwise NP-complete problem requires making assumptions based on a single input file, pretty much soured me on what had otherwise been an enjoyable month.  That one day&apos;s problem (following a couple late nights) made me strongly question ever participating in &quot;live&quot; (i.e. during December) AoC ever again, which isn&apos;t a good feeling to have on Christmas Eve.&lt;br /&gt;&lt;br /&gt;Raku&apos;s final un-fun factor played a role in this burnout too: slow execution speed.  I&apos;d seen folks who hang out on Raku help communities warn folks that Raku performance isn&apos;t great, but I figured it would be fine for Advent of Code, which has lots of folks working in languages like Python and more tortured environments like Bash or Google Sheets.  But on days 19, 23, and 24 I discovered that my Raku code would spend tens of minutes running on the example input before producing a wrong answer, which is not a good situation in a &quot;implement a program before bedtime&quot; challenge.  To more quickly test wrong hypotheses and spot bugs, I reimplemented those days in &lt;a href=&quot;https://go.dev/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Go&lt;/a&gt;.  The Go language is far more verbose and has many fewer features than Raku, but I could implement a Go solution and try it five times in the time it would take to run my Raku code twice.  My day 19 solution in Go&amp;mdash;using the same algorithm and only slightly optimized code paths&amp;mdash;was about a hundred times faster than the Raku implementation.  I recall noticing that one Go run took 45 seconds while Raku took 45 minutes.  I spent more time optimizing the runtime of the day 23 solution (due to some discussion in the group chat at work) and ended up with a 2.5 second solution in Go and a 68 minute solution in Raku.  I even spent some time with the Raku profiler (which amusingly produced about a gigabyte of output for 45 seconds of runtime and had to be analyzed with sqlite because the HTML profiler output crashes any browser tab) and was only able to get a maximum 10% speedup after playing with all of the hot code paths under my control.  Two orders of magnitude in runtime is difficult to make up with even the most amazing language expressiveness.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/400979.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/400979.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/400979.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/402140.html?view=comments#comments</comments>
  <category>raku</category>
  <category>program</category>
  <category>go</category>
  <category>advent of code</category>
  <media:title type="plain">KGNU - Electronic Air</media:title>
  <lj:music>KGNU - Electronic Air</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/401903.html</guid>
  <pubDate>Sat, 01 Jan 2022 10:10:00 GMT</pubDate>
  <title>Wild End to a Wild Year</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/401903.html</link>
  <description>A popular casual topic of discussion the last few weeks has been that the Front Range has never gone this long without getting the first snow.  Since October we&apos;ve had two or three overnight dustings without any measurable accumulation.  We&apos;ve had far more unseasonably warm days, with plenty of &quot;Mid-sixties and sunny&quot; T-shirt weather in mid-December.  &lt;br /&gt;&lt;br /&gt;Weather forecasters predicted a big snow on New Year&apos;s Eve.  The snow rode in on the tails of a big wind storm, with gusts in some places over 100 miles per hour.  Last week also featured 100+ MPH gusts at the airport in Broomfield and other topologically ripe locations.  Unfortunately, this week&apos;s gusts reportedly knocked down some power lines near Marshall Mesa which sparked fires in unusually dry grass&amp;mdash;extra dry because we haven&apos;t had any snow since April, natch.  The strong winds quickly pushed the fire eastward through open space, forcing the evacuation of the towns of Superior and Louisville.  Wind pushed fire onto houses and through neighborhoods; emergency officials estimate that more than 500 homes were burned.  This makes it the most structure-destructive fire in Colorado history, despite being far smaller than the month-long major forest fires we&apos;ve seen in the past.  A lot of affected residents probably wouldn&apos;t have thought of themselves as in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Wildland%E2%80%93urban_interface&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Wildland-urban interface&lt;/a&gt;; while many of the affected neighborhoods are next to open space, the fire also jumped the highway and burnt houses where the closest thing to a wild space is a greenbelt along a creek.&lt;br /&gt;&lt;br /&gt;Fortunately, the forecast snow arrived this morning, dousing the fires and bringing the first significant moisture to the area in several months.  This is now the second year in a row that a fire burning within a couple miles of our family&apos;s dwellings was extinguished by snow; the East Troublesome Fire last November climbed over the Continental Divide and got close to our family&apos;s cabin near Estes Park.  While a dry final three months of the year and unseasonably warm December days aren&apos;t uncommon in Colorado, recent years have escalated the dry weather and unpredictable precipitation or lack thereof.&lt;br /&gt;&lt;br /&gt;We were unaware of the fire for most of the day yesterday.  I took the day off work and joined Kelly&apos;s family for a visit to &lt;a href=&quot;https://meowwolf.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Meow Wolf&lt;/a&gt; in Denver.  It&apos;s sort of what you might get if Dr. Seuss and Burning Man teamed up to make an interactive art museum.  Driving to an errand in Commerce City we noticed the huge wall of smoke stretching across the north Denver metro area.  For quite awhile I thought it was probably dust getting kicked up by the strong winds; the colors and patterns in the clouds didn&apos;t look like wildfire smoke to me.  I guess I&apos;m just used to tree smoke coming over the mountains; a grass and suburb fire has a much different character.  US-36 was closed from Broomfield, and we wanted to stop at the Asian grocery store there for some supplies anyway.  Not knowing whether we had power or any wind damage at our home in Boulder, we decided it would be best to face the unknown with a full stomach, so we stuck around for pho and boba.&lt;br /&gt;&lt;br /&gt;Driving home along US-287 through Broomfield we caught some glimpses of burning fires in the darkness of night, with cars lining several streets so folks could get a look.  It&apos;s a sight I&apos;ve seen before, but never in late December.  As we approached home we drove through some blackout neighborhoods, but drew hope when the part of Arapahoe near our house was lit up.  As we pulled onto the street we could tell luck was not in our favor, as we routed around two utility trucks parked next to a large tree in the middle of the road, and the whole block was dark, save for a few houses with a solar+battery system, keeping the holiday lights shining.  Our neighbor gave us a quick update: several trees around our house had fallen, including a few that took down power lines.  The neighbors right behind us had a tree uproot (falling away from the fence, and also not endangering their house), and a power line got hit by a tree crossing our next-door neighbor&apos;s house.  We took a walk around the block in an odd mix of serene quiet mixed with occasional bright spotlights from utility trucks.  A neighbor down the street had a tall blue spruce uproot and fall across their yard and driveway, and our neighbors across the street said one of their trees narrowly missed a service vehicle that afternoon.  Our house came through pretty well; our glass patio table flipped over and landed 15 feet away from its starting position, but doesn&apos;t seem to have cracked.  One of our sheds had the latch tear off and then the door got jammed stuck inside, but other than that we just had a lot of sticks littering the yard.&lt;br /&gt;&lt;br /&gt;Being practiced Burners and festival attendees, we had plenty of flashlights on hand.  I even picked up a 100 amp-hour LiFePo4 battery this fall to power Kelly&apos;s CPAP while camping, so I charged our phones and listened to both local FM radio and the local amateur radio emergency response channel on my ham radio.  We gathered important items in case we needed to evacuate overnight and otherwise took it easy in the dark.  The battery+CPAP setup worked like a charm; I didn&apos;t expect to use it at home before giving it a run in a tent.  Power came back at 4:15 in the morning (shout out to the hard-working Xcel Energy crews) and New Year&apos;s Eve brought the wet snow we&apos;ve been needing all month.&lt;br /&gt;&lt;br /&gt;Hearts out to my friends and coworkers who live in Superior and Louisville, and may everyone&apos;s 2022 be a lot more chill.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/400712.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/400712.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/400712.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/401903.html?view=comments#comments</comments>
  <category>emergency</category>
  <category>new year</category>
  <category>boulder</category>
  <category>fire</category>
  <media:title type="plain">KGNU New Year&apos;s Eve specia</media:title>
  <lj:music>KGNU New Year&apos;s Eve specia</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/401652.html</guid>
  <pubDate>Sun, 21 Nov 2021 00:53:24 GMT</pubDate>
  <title>Alice in Scrubs - Booster (filk)</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/401652.html</link>
  <description>Ain&apos;t found a way to kill me yet&lt;br /&gt;Spicy food still makes me sweat&lt;br /&gt;Every weekend I just go nowhere&lt;br /&gt;Safe at home with my new pet&lt;br /&gt;Hydroxychloroquine was no safe bet&lt;br /&gt;Spike proteins assail me from somewhere&lt;br /&gt;&lt;br /&gt;Here they come to give the booster&lt;br /&gt;Yeah, here come the booster&lt;br /&gt;You know I ain&apos;t gonna die&lt;br /&gt;No, no, no, you know I ain&apos;t gonna die&lt;br /&gt;&lt;br /&gt;Here they come to stab the booster, ah yeah&lt;br /&gt;Yeah, here come the booster, yeah&lt;br /&gt;You know I ain&apos;t gonna die&lt;br /&gt;No, no, no, you know I ain&apos;t gonna die&lt;br /&gt;&lt;br /&gt;Feelin&apos; fine, glad you asked&lt;br /&gt;They spit on me, I wear a mask&lt;br /&gt;Doctor sent me results from my swab&lt;br /&gt;Got my shots &apos;gainst covid death&lt;br /&gt;My buddy&apos;s breathin&apos; his dyin&apos; breath&lt;br /&gt;Oh RNA, please won&apos;t you help me make it through?&lt;br /&gt;&lt;br /&gt;Here they come to give the booster&lt;br /&gt;Yeah, here come the booster, yeah&lt;br /&gt;You know I ain&apos;t gonna die&lt;br /&gt;No, no, no you know I ain&apos;t gonna die&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Original (content warning: Vietnam war, violence, guns, knives, blood): &lt;a href=&quot;https://www.youtube.com/watch?v=uAE6Il6OTcs&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Alice in Chains - Rooster&lt;/a&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/400635.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/400635.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/400635.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/401652.html?view=comments#comments</comments>
  <category>lyric</category>
  <category>filk</category>
  <category>coronavirus</category>
  <category>music</category>
  <category>covid-19</category>
  <media:title type="plain">Alice in Chains - Rooster</media:title>
  <lj:music>Alice in Chains - Rooster</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/401245.html</guid>
  <pubDate>Fri, 05 Nov 2021 06:38:29 GMT</pubDate>
  <title>Please Call your Senators and Representatives</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/401245.html</link>
  <description>I &lt;a href=&quot;https://flwyd.dreamwidth.org/399228.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;wrote previously asking people to write or call their Senators to include carbon pricing in the reconciliation bill&lt;/a&gt;.  Now it&apos;s crunch time.  If you&apos;re willing to do me a favor, please go to &lt;a href=&quot;https://cclusa.org/take-action&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;cclusa.org/take-action&lt;/a&gt; and make a couple calls to your elected representatives.  It will take less than five minutes and help the U.S. achieve a 50% reduction in emissions by 2030.&lt;br /&gt;(Please do this now even if you did it earlier this year.  We&apos;re hoping for a really big showing.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since July, supporters of carbon pricing have made nearly 160,000 contacts to Congress and the White house on this topic.  There&apos;s been lots of talk about carbon pricing in negotiations on The Hill, and lots of folks have endorsed the idea.  It&apos;s not currently part of the reconciliation bill framework that Joe Biden announced last week or that the House is working with, but there&apos;s still an opportunity to get it in the Senate bill.  Anyone who lives in a state with a Democratic Senator can help this happen: the more support (say) Senators Michael Bennet and John Hickenlooper hear for carbon pricing, the more they&apos;ll be willing to push for it in negotiations with Senators like Joe Manchin who are on the fence.  Democratic Representatives also need to hear that it&apos;s popular in their district so they&apos;re on board if a carbon price is part of the final bill.&lt;br /&gt;&lt;br /&gt;Republicans unfortunately don&apos;t have a seat at the table in the reconciliation bill process, but there&apos;s encouraging news there too.  &lt;a href=&quot;https://curtis.house.gov/conservative-climate-caucus/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;72 Republican members of the House have joined the Conservative Climate Caucus&lt;/a&gt; and &lt;a href=&quot;https://www.eenews.net/articles/red-new-deal-gop-offers-a-climate-plan-of-its-own/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Senate Republicans just announced a climate plan with a target of 40% emission reduction by 2050.&lt;/a&gt;  During a meeting for volunteers this evening, Citizens&apos; Climate Lobby&apos;s government affairs leader used the metaphor that many in the GOP are now walking in the right direction and it&apos;s our job to encourage them to walk faster, which is a lot easier than convincing them to turn around and walk the opposite way.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/400372.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/400372.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/400372.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/401245.html?view=comments#comments</comments>
  <category>congress</category>
  <category>climate</category>
  <category>carbon pricing</category>
  <category>ccl</category>
  <media:title type="plain">KGNU - Sleepless Nights</media:title>
  <lj:music>KGNU - Sleepless Nights</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/400981.html</guid>
  <pubDate>Mon, 01 Nov 2021 00:58:16 GMT</pubDate>
  <title>When the Fox Doesn&apos;t Come Out to Play</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/400981.html</link>
  <description>Amateur radio enthusiasts sometimes organize a &quot;fox hunt.&quot;  A radio transmitter in an undisclosed location periodically broadcasts a signal on some frequency and participants use a directional antenna, a compass, and other tools to triangulate the transmitter&apos;s location.&lt;br /&gt;&lt;br /&gt;Yesterday, the Boulder Amateur Radio Club organized a bit of a &quot;reverse fox hunt.&quot;  Two weeks ago, some club members noticed some unexpected transmissions on the club&apos;s VHF repeater from radio operators that were not also listening to that frequency.  Someone was able to track down someone who&apos;d made some of those transmissions and found that they had an AllStar hotspot operating on UHF simplex frequency 446.175 MHz.  A hotspot in an amateur radio context is a low-power transceiver that&apos;s connected via the Internet to a wide-area digital radio network.  The hot spot listens to a simplex frequency, sending anything it receives to the network.  Likewise, any transmissions from the network are rebroadcast on the simplex frequency by the hotspot.  This allows someone, perhaps the owner of the hotspot, to talk with people all over the world using a mobile or handheld radio that would normally only reach the local area.&lt;br /&gt;&lt;br /&gt;The hotspot owner changed the frequency it was operating on.  This stopped the stream of AllStar network chatter on the Boulder repeater, but this wasn&apos;t the root problem.  Club members continued to notice occasional transmissions from 446.175 coming through on the repeater&apos;s frequency, suggesting that someone else was running a cross-band repeater with UHF input and VHF output on the club repeater&apos;s 146.100 MHz input frequency.&lt;br /&gt;&lt;br /&gt;So some club members organized a &quot;reverse fox hunt.&quot;  Rather than listening for periodic transmissions from the &quot;fox&quot; we wanted to find locations where we could trigger the cross-band repeater, then triangulate its location.  (I assume the final step would be &quot;Knock on the nearest door and see if they&apos;re a ham operator.)  Five of us gathered in the NCAR parking lot early Saturday afternoon.  We weren&apos;t able to trip the cross-band repeater from NCAR, which has line of sight to all of Boulder, so we concluded that the fox was either over the hill in the Denver area or wasn&apos;t out of its foxhole that day.  When the cross-band repeater had been active, we were able to get reports that it got triggered from Denver&apos;s Stapleton neighborhood and from an antenna on a mountain near Coal Creek Canyon.&lt;br /&gt;&lt;br /&gt;We split up, sending one person to the Coal Creek area, one to Stapleton, one to Federal Heights, and one to Arvada.  I headed down to Green Mountain, which was my favorite vantage point over metro Denver when I lived in Jefferson County.  I transmitted from a few spots on the trail, neither of which lit up the Boulder repeater.  One of our group had wondered if the cross-band repeater might be configured with a PL code&amp;emdash;a tone of a particular frequency which must be transmitted along with the FM wave in order to activate a repeater to make it less likely to accidentally rebroadcast a message you didn&apos;t intend to.  So I spent about half an hour turning the knob on my radio and making test transmissions with each possible squelch tone.&lt;br /&gt;&lt;br /&gt;In the end, we concluded that the fox didn&apos;t come out to play yesterday, and we haven&apos;t noticed any spurious transmissions on the Boulder repeater this week.  But playing radio was a pretty good excuse to go for a hike on a gorgeous late October afternoon, even if I didn&apos;t get to play with the directional yagi antenna I borrowed from a coworker.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/400092.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/400092.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/400092.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/400981.html?view=comments#comments</comments>
  <category>ham radio</category>
  <media:title type="plain">World Series Game 5</media:title>
  <lj:music>World Series Game 5</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/400838.html</guid>
  <pubDate>Fri, 01 Oct 2021 05:51:08 GMT</pubDate>
  <title>Life, the Universe, and Birthdays</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/400838.html</link>
  <description>For many years I&apos;ve assumed that when I turned 42 I would throw a big party, invite a bunch of hoopy froods, and see if everyone knew where their towel was.  As it turned out this week, I had about 2000 people at my birthday party, I didn&apos;t have to plan the event, and I didn&apos;t see many towels.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://element11.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Element 11&lt;/a&gt; is a long-standing regional Burning Man event in the Utah desert.  It&apos;s normally held in July or June, which tend to be prime busy-in-Colorado times, particularly since Apogaea&amp;mdash;Colorado&apos;s regional burn&amp;mdash;is the second weekend of June.  This year the organizers moved Element 11 to the last weekend of September, maximizing the amount of planning time in a year of chaos, minimizing the number of excuses for people to not be fully vaccinated, and balancing days which aren&apos;t too hot with nights that aren&apos;t too cold.  Since Burning Man itself was cancelled and I didn&apos;t want to go to Plan B/Renegade Burn, I figured I&apos;d have plenty of spoons for a regional in another state.  Plus, I didn&apos;t have to plan a complicated themed birthday party.&lt;br /&gt;&lt;br /&gt;It felt really good to be able to wander around, meet strangers, give hugs, dance to big sound, and share food.  So far, it seems the policy of &quot;proof of vaccination or a recent negative COVID test&quot; was successful as I haven&apos;t heard that there was any COVID spread at the event.  The fact that almost everything was outside certainly helped.  I&apos;ve now got a bit of a scratchy throat and some sore body parts, but my home-COVID test was negative, so I think this is just my immune system having forgotten how to deal with other people&apos;s garden variety germs, plus a depleted sleep schedule.  I feel significantly less lousy than I did after getting back from a summer road trip.&lt;br /&gt;&lt;br /&gt;The month leading up to the event was pretty jam-packed.  I spent a bunch of time researching and ordering components for a solar and battery system so that Kelly could sleep with a CPAP, but I didn&apos;t give myself enough lead time and the project failed to come together before the trip, culminating in a comedy of errors including a brand new multimeter that needed aluminum foil shoved in the battery compartment in order to operate.  Fortunately I&apos;ve now got months to get things right and up my electrical game before our next camping adventure.&lt;br /&gt;&lt;br /&gt;In addition to wrangling electrical components I spent a lot of time in the last month and a half playing with &lt;a href=&quot;https://redistricting.colorado.gov/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Colorado Redistricting Commission&lt;/a&gt; maps.  The state has a new citizen-focused redistricting process, ideally reducing the political maneuvering involved, and anyone could submit their own maps and comments.  I&apos;m disappointed the commission and staff didn&apos;t follow my advice to (a) split census blocks in more natural ways so that neighbors stay in the same district and (b) allow slight variance (order of hundreds) in district size, following the &quot;must be justified&quot; portion of the law.  Overall, though, the process seemed to work really well, and almost everyone at the hearings I attended was polite and on-topic, a rarity in the political world these days.  There were a lot of &quot;We don&apos;t want to be in a district with &lt;em&gt;those&lt;/em&gt; people&quot; comments, which make me sad as a collaborationist, but are understandable given the trend in the last half century for people to self-segregate politically.&lt;br /&gt;&lt;br /&gt;I also spent a bunch of energy the weekend before Element 11 first picking apples and then helping press them into cider.  We ended up with way more fruit than we could process and at the end of the day had more liquid than anyone could take away, particularly when the cooling system failed a few days later.  I&apos;ve got a cider brewing with wine yeast and a cyser (honey + apples) brewing with ale yeast; I&apos;m hoping these turn out better than my last round of cyser which&amp;mdash;three years later&amp;mdash;still has a harsh flavor.  This was a total blast, but cut way down on event packing and prep time.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/399781.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/399781.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/399781.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/400838.html?view=comments#comments</comments>
  <category>cider</category>
  <category>element 11</category>
  <category>congress</category>
  <category>burning man</category>
  <category>map</category>
  <category>birthday</category>
  <media:title type="plain">KGNU - Jazz Lives</media:title>
  <lj:music>KGNU - Jazz Lives</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/400482.html</guid>
  <pubDate>Tue, 10 Aug 2021 06:33:59 GMT</pubDate>
  <title>Encryption Turns a Network Security Problem Into a Key Management Problem</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/400482.html</link>
  <description>After over a decade, the time has finally come…&lt;br /&gt;someone sent me an email encrypted with my PGP public key.&lt;br /&gt;&lt;br /&gt;Based on the timestamp on my website, I set up GnuPG in 2007, which is two computers and about four hard drives ago.  And while I&apos;m a digital pack rat, those were the days that &quot;copy your entire old computer to your new computer&quot; would still cramp your new computer&apos;s space.  So I would manually copy the home directory contents I knew I&apos;d want like &lt;kbd&gt;Documents&lt;/kbd&gt; and &lt;kbd&gt;.vimrc&lt;/kbd&gt; but I probably didn&apos;t notice my private key file.&lt;br /&gt;&lt;br /&gt;So for more than a decade I&apos;ve been advertising a way to send me an email that no one can intercept and decrypt… including myself. 🤦‍♂️

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/399419.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/399419.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/399419.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/400482.html?view=comments#comments</comments>
  <category>encryption</category>
  <category>email</category>
  <category>security</category>
  <category>backup</category>
  <media:title type="plain">KGNU - Sleepless Nights</media:title>
  <lj:music>KGNU - Sleepless Nights</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/400347.html</guid>
  <pubDate>Sat, 31 Jul 2021 18:19:09 GMT</pubDate>
  <title>Please Email or Call Your Senators</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/400347.html</link>
  <description>I’d like to ask you for a favor.  Feel free to say no :-)&lt;br /&gt;Please take five minutes to email or call your two U.S. Senators and ask them to support carbon pricing.  If you don’t have your senators on speed dial, a group I volunteer with has a tool to make this an easy contact.  Just visit &lt;a href=&quot;https://cclusa.org/senate&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;cclusa.org/senate&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you’re contacting a Democratic senator, please ask them to put a price on carbon in this year’s budget reconciliation.  This is the most likely path for ambitious climate legislation this year, and Democrats are in the driver’s seat.&lt;br /&gt;If you’re contacting a Republican senator, please ask them to support putting a price on carbon this year, because it will address climate change while strengthening the U.S. economy.  While the Republican party is a little behind the Democrats on bold climate action, several GOP senators have voiced support for carbon pricing.  It’s a policy they can support without losing their conservative credentials.&lt;br /&gt;&lt;br /&gt;If you’re feeling unsure about calling Congress, I’ve shared a &lt;a href=&quot;https://photos.app.goo.gl/pyyH1MNQawy8nHPA7&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;video of me making the call&lt;/a&gt;.  I’ve always felt awkward on the phone, and if I can do it so can you!  &lt;em&gt;Pro tip&lt;/em&gt;: if you call after business hours you can leave a voicemail, and your support will still be noticed.&lt;br /&gt;&lt;br /&gt;If you’re able to send two emails or make two calls, THANK YOU!  If you’d like some extra credit, ask at least three friends to call their senators.  Feel free to forward this post to them if you’d like.&lt;br /&gt;Support from constituents gives senators and representatives the reassurance they need to do what’s right, and I’ve spent a lot of energy in the last five years focused on demonstrating to Congress that carbon pricing is popular.  Your email or call to your Senator means a lot to me.  You rock!&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;If you’d like to learn a little more about carbon pricing, here’s my quick explainer:&lt;br /&gt;&lt;br /&gt;When historians write the history of the 2020s, how America responded to climate change at the beginning of the decade will play a big role.  We face big challenges associated with the climate, and big action is needed to stop greenhouse gas pollution.  The current U.S. Congress is in the best position in over ten years to ensure the biggest emitters shift course and drastically reduce their use of fossil fuels.&lt;br /&gt;&lt;br /&gt;A price on carbon is one effective way to quickly reduce greenhouse gas pollution.  A &lt;em&gt;carbon fee&lt;/em&gt; would be assessed on coal, oil, and natural gas; low at first, but getting bigger every year.  This will create an incentive to switch to cleaner forms of energy; companies that switch to clean power will be able to outcompete those who pollute more.  The impact of higher fossil fuel prices on lower income folks can be offset by a &lt;em&gt;carbon dividend&lt;/em&gt;: the collected fees are divided into equal amounts and distributed to every American each month.  Since folks with lower incomes usually have a much smaller carbon footprint than people and companies who can afford to consume more, the carbon dividend is an effective way to &lt;em&gt;make polluters pay to solve the problem&lt;/em&gt; while protecting folks who would otherwise have trouble with higher energy prices.  Finally, to prevent businesses from just shipping carbon pollution (and jobs) to other countries, a &lt;em&gt;carbon border adjustment&lt;/em&gt; can apply the carbon fee to imports from countries which don’t have a carbon price, and rebate the fee paid by U.S. exporters shipping to those countries.  This incentivizes other countries around the world to adopt a carbon price to stay competitive.  In fact, the E.U. just announced details of their carbon border adjustment, which has inspired China to step up the pace of their own carbon pricing plans.  That’s right, the U.S. is currently lagging China in adoption of the most effective solution to climate change.&lt;br /&gt;&lt;br /&gt;This idea has broad support: IPCC scientists report that a strong price on carbon will be necessary to keep the world below 1.5 degrees warming.  &lt;a href=&quot;https://econstatement.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Over 3500 economists&lt;/a&gt;—liberal, conservative, progressive, and libertarian—have endorsed the carbon fee &amp; dividend plan, the biggest joint statement in the history of the profession.  &lt;a href=&quot;https://citizensclimatelobby.org/newspaper-editorials-carbon-price/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Recent editorials in major newspapers&lt;/a&gt; have called on Congress to pass a carbon price.  More than 1000 businesses, plus hundreds of nonprofits, faith groups, and local governments, have endorsed the &lt;a href=&quot;https://energyinnovationact.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Energy Innovation and Carbon Dividend Act&lt;/a&gt;, which could be the language used in a budget reconciliation bill.&lt;br /&gt;&lt;br /&gt;For the past four and a half years I’ve volunteered with &lt;a href=&quot;https://citizensclimatelobby.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Citizens’ Climate Lobby&lt;/a&gt;, the largest carbon pricing advocacy group in the country—and probably the world.  We educate the public and community leaders about the benefits of the carbon fee &amp; dividend approach and the importance of climate action, and have gathered support from over 200,000 people around the world.  CCL organizes several meetings each year with every Congressional office.  In the last year and a half, thousands of people have been empowered to lobby their own Member of Congress via videoconference or over the phone.  I’ve found lobby meetings with Congressional staff to be very personally rewarding.  I truly believe that action on climate change can help bring a politically fractured America closer together so that we can collaborate on the big challenges of the 2020s.  Behind closed doors there’s more interest in tackling these problems than you might think if you watch cable TV.&lt;br /&gt;&lt;br /&gt;If you’re a fan of different climate solutions, that’s great!  There’s lots of work to be done over the next three decades if we want to “hang on to the holocene” &lt;a href=&quot;https://www.adamfrankscience.com/light-of-the-stars&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;as Adam Frank put it&lt;/a&gt;.  We need to pivot our electrical system, rethink transportation, improve millions of buildings, restore forests, shift agricultural practices, invent new technology, and build resilient communities, all while responding to emergencies and addressing injustice.  I’m excited about carbon pricing because it’s the biggest step we can take, and it affects several emission sources at once, and it’s compatible with and complimentary to most other climate solutions.  If regenerative agriculture or ending fugitive methane emissions are more up your alley, that’s awesome.  To solve climate change we need a diverse team with a lot of specialized skills and interests.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/399228.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/399228.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/399228.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/400347.html?view=comments#comments</comments>
  <category>economic</category>
  <category>congress</category>
  <category>climate</category>
  <category>politic</category>
  <category>carbon pricing</category>
  <category>ccl</category>
  <media:title type="plain">KGNU - Terra Sonic</media:title>
  <lj:music>KGNU - Terra Sonic</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/399925.html</guid>
  <pubDate>Thu, 22 Jul 2021 04:39:04 GMT</pubDate>
  <title>A Slightly Incorrect Phonetic Alphabet</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/399925.html</link>
  <description>When communicating over a noisy voice channel, like a two-way radio or a poor phone connection, it&apos;s useful to using a spelling alphabet to make key words extra clear.  While many people on the phone use the first English name that comes to mind (&quot;P as in Peter, H as in Harold, O as in Olivia, N as in Nancy, E as in Eve&quot;), the lack of a standard set leaves plenty of room for confusion (&quot;was that Eve or Steve?&quot;).  Most radio protocols standardize on the &lt;a href=&quot;https://en.wikipedia.org/wiki/NATO_phonetic_alphabet&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;NATO phonetic alphabet&lt;/a&gt;.  But if you want to have a little fun, I&apos;ve provided an updated alphabet that is just slightly out of tune.&lt;br /&gt;&lt;br /&gt;Alfalfa&lt;br /&gt;Bravado&lt;br /&gt;Charlene&lt;br /&gt;Deltoid&lt;br /&gt;Eco&lt;br /&gt;Faux pas&lt;br /&gt;Gulf&lt;br /&gt;Hostel&lt;br /&gt;Indiana&lt;br /&gt;Jeweled hat&lt;br /&gt;Killer&lt;br /&gt;Llama&lt;br /&gt;Mic&lt;br /&gt;No number&lt;br /&gt;Otter&lt;br /&gt;Popcorn&lt;br /&gt;Québécois&lt;br /&gt;Roaming&lt;br /&gt;Sarah&lt;br /&gt;Tangle&lt;br /&gt;Unicorn&lt;br /&gt;Victory&lt;br /&gt;Whisked&lt;br /&gt;X rated&lt;br /&gt;Yanking&lt;br /&gt;Zoro

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/399062.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/399062.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/399062.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/399925.html?view=comments#comments</comments>
  <category>ham radio</category>
  <category>alphabet</category>
  <category>radio</category>
  <category>humor</category>
  <media:title type="plain">KGNU - Reggae Transfusion</media:title>
  <lj:music>KGNU - Reggae Transfusion</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/399680.html</guid>
  <pubDate>Sat, 12 Jun 2021 04:18:23 GMT</pubDate>
  <title>Ham, Not Bacon</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/399680.html</link>
  <description>In April, Burning Man announced that Black Rock City would not be built in 2021.  I&apos;d been holding out hope that the COVID recovery would be looking promising enough to make the event possible, and I&apos;d been mentally preparing to spend a couple weeks wearing fashionable dust masks and experimenting with post-pandemic community creation.&lt;br /&gt;&lt;br /&gt;My first world problem then turned to &quot;What can I spend my big pile of accumulated vacation hours on now?&quot;  Early last year Google extended the unused vacation cap from 240 hours to 300 hours, since encouraging people to take a vacation when everyone was supposed to stay at home would&apos;ve been irresponsible.  I took a couple long weekends last summer, but between an &quot;Avoid interacting with too many people&quot; pandemic and &quot;The western U.S. is blanketed in smoke, so visiting the mountains is no fun&quot; there wasn&apos;t much worth spending vacation time on.  As winter approached, I realized I was going to hit the cap before the weather was nice enough to run around outside, so I focused on long weekends of &quot;Do stuff around the house.&quot;  Between holidays and well-placed vacation days, I didn&apos;t have a five-day work week between mid-December and late February, which was fairly pleasant.&lt;br /&gt;&lt;br /&gt;But now that summer has arrived, I decided it&apos;s time to have a big ol&apos; vacation.  I&apos;d much rather have a two-week adventure than have ten 3-day weekends in a row.  Fortunately, there&apos;s an opportunity to scratch my Black Rock City itch as well.  There&apos;s a long annual tradition of people visiting the Black Rock Desert at the beginning of July, popularly dubbed the &lt;a href=&quot;http://juplaya.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;4th of Juplaya&lt;/a&gt;.  This is the same location as Burning Man, but rather than creating a temporary city of 70,000 people in a few square miles, small groups of friends set up camps around the fast desert space with no central coordination.  I&apos;ve never been to Juplaya before, since the two-day trip each way always seemed like a big challenge to visit a place I was just going to return to seven weeks later.  But with Burning Man off the table, 2021 seems like a great opportunity to explore the unique features &quot;outside the trash fence.&quot;  Plus, I can throw in a road trip to visit friends and family on the west coast.&lt;br /&gt;&lt;br /&gt;As I started planning this trip, I quickly realized that I ought to get an amateur radio (ham) license.  Radios are key to Burning Man operations, and with nine years rangering I&apos;ve come to think of radio chatter as part of the playa experience.  But while the org runs a commercial radio system in BRC, the rest of the year requires a ham license to &lt;a href=&quot;http://cq-blackrock.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;spread your message across the desert&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The U.S. amateur radio system provides three levels of license&amp;mdash;technician, general, and amateur extra&amp;mdash;each with successively larger parts of the electromagnetic spectrum they&apos;re allowed to transmit on.  Licenses are gained by passing a multi-choice written exam, with the question pool published in advance.  From an academic perspective this seems like an unreliable way to assess someone&apos;s full understanding of the subject matter, but on the other hand you don&apos;t actually need to know things like how to read a circuit diagram in order to use a push-to-talk radio.&lt;br /&gt;&lt;br /&gt;With my road trip starting in mid-June and another short vacation I had planned in early June, I had a pretty limited period of time to learn the material.  While waiting for my &lt;a href=&quot;http://www.arrl.org/shop/Ham-Radio-License-Manual&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Technician license manual&lt;/a&gt; to arrive, I read through the free PDF &lt;a href=&quot;https://www.kb6nu.com/study-guides/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;The No-Nonsense Technician-Class License Study Guide&lt;/a&gt;.  After two nights I was able to obtain a passing grade on &lt;a href=&quot;https://hamstudy.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;hamstudy.org&lt;/a&gt;, but I sure felt like I didn&apos;t understand half of the material.  There&apos;s a significant focus on the physics of electromagnetism and circuits.  I&apos;ve long felt that my grasp of electromagnetism from Physics II was much worse than my understanding of Newtonian mechanics from Physics I, and probably worse than my understanding of relativity and quantum mechanics from Physics III.  I have no problem explaining the dual particle/wave nature of photons and could probably work through probabalistic quantum tunneling, but have been kind of confused for over two decades about what exactly an ampere is.&lt;br /&gt;&lt;br /&gt;Once I got the ARRL manual I zipped through the 200 or so pages in four evenings and felt like I had a much better understanding of what the heck was going on.  After a few more rounds of hamstudy.org practice exams, I drove to southeast Denver (the license test that best met my time concerns) and managed to get a perfect 35/35 score.  That felt like a pretty good accomplishment given that my first exposure to any of the material was only a week earlier.  Just for kicks I decided to take the general exam, having studied absolutely none of its questions but having all the radio basics bouncing around my head.  I managed a 23/35 on that one, which is three questions shy of a passing grade.  I guess the test isn&apos;t a completely bogus assessment, then.&lt;br /&gt;&lt;br /&gt;By the time I got home an hour and change later, the next callsign on the FCC&apos;s stack, &lt;a href=&quot;https://www.qrz.com/db/KF0FTJ&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;strong&gt;KF0FTJ&lt;/strong&gt;&lt;/a&gt; had been assigned to yours truly.  I am now legally allowed to transmit on the VHF and UHF bands as well as portions of the HF bands.  (The names for portions of the radio spectrum are kind of silly.  It feels like someone started with &quot;Low Frequency&quot;, &quot;Medium Frequency&quot;, and &quot;High Frequency&quot; and then people kept saying &quot;But wait, why not turn it up a notch?&quot; so there&apos;s now Very, Ultra, Super, and Extreme High Frequency for [VUSE]HF.)&lt;br /&gt;&lt;br /&gt;In general, the lower the frequency the further it can travel, but also the less information can be packed into the signal.  Also, the lower the frequency the longer a good antenna needs to be.  My main amateur radio interest is in emergency communications and disaster response, for which battery-powered and easily-mobile radios are ideal, so VHF seems to be the primary band.  The HF bands allow amateur operators to talk with people hundreds or thousands of miles away, and hams like to geek out on things like bouncing radio waves off the moon and the solar cycle&apos;s effect on long-distance communications thanks to the ionosphere.  I find that mildly interesting, but I still don&apos;t entirely see the attraction in having a complicated radio setup to talk to people on the other side of the continent now that the Internet has made it cheap and easy to talk to any of two or three billion people around the world.  I imagine the ham experience was pretty amazing in the &apos;50s through the &apos;80s.  Amateur radio experimentation led to many of the Internet protocols that have come to supplant the service.&lt;br /&gt;&lt;br /&gt;I think &quot;I have a license, now who will I actually talk to?&quot; is a common issue for hams.  Fortunately, the ham community seems to be pretty friendly (they&apos;re people who&apos;s hobby involves elaborate setups to talk to people, after all).  I&apos;ve been participating in a weekly Boulder Amateur Radio Club discussion net, and yesterday I received a &quot;radiogram&quot; originating in Pasadena congratulating me on getting a new license that was relayed through &quot;Traffic Nets&quot; until someone on the Colorado traffic net picked it up and gave me a phone call to make the delivery.  This is way less efficient than email, but I&apos;m glad that folks are keeping in practice with a communication system that can serve as a backup in the face of a widespread Internet outage.  Because if there&apos;s one thing I&apos;ve learned working at a major Internet company for a decade it&apos;s that having a well-tested plan for component failure is crucial.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/398647.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/398647.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/398647.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/399680.html?view=comments#comments</comments>
  <category>communication</category>
  <category>ham radio</category>
  <category>black rock desert</category>
  <media:title type="plain">KGNU - Dusty Grooves</media:title>
  <lj:music>KGNU - Dusty Grooves</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/399389.html</guid>
  <pubDate>Thu, 13 May 2021 05:55:31 GMT</pubDate>
  <title>And they say Facebook knows too much about people</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/399389.html</link>
  <description>Email from a Facebook recruiter: &lt;blockquote&gt;I haven’t heard back from you regarding opportunities at Facebook which tells me one of three things:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You’re already employed with 100% satisfaction at Amazon Web Services (AWS), and if that’s the case please let me know so I can stop messaging you.&lt;br /&gt;&lt;li&gt;You’re still interested but haven’t had the time to get back to me. Please use this link to schedule time on my calendar.&lt;br /&gt;&lt;li&gt;You’ve fallen and can’t get up - in that case let me know and I’ll call 911 🚨🚑&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Please let me know which one, because I’m starting to worry… Thanks in advance and I look forward to hearing from you.&lt;/blockquote&gt;&lt;br /&gt;This actually answers a question I&apos;ve had for some time: why have 8 Facebook recruiters sent nearly 40 messages over 5 years to an email address that&apos;s not on my resume pitching jobs in Seattle, a city that&apos;s a thousand miles from where I live?  Perhaps the answer is that they think I&apos;ve been working at Amazon the whole time.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/398413.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/398413.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/398413.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/399389.html?view=comments#comments</comments>
  <category>email</category>
  <category>facebook</category>
  <media:title type="plain">KGNU - Reggae Transfusion</media:title>
  <lj:music>KGNU - Reggae Transfusion</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/399335.html</guid>
  <pubDate>Wed, 05 May 2021 06:44:19 GMT</pubDate>
  <title>A Climate Anthem Needs to be Singable</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/399335.html</link>
  <description>The climate change podcast &lt;a href=&quot;https://gimletmedia.com/shows/howtosaveaplanet/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;How to Save a Planet&lt;/a&gt; did a recent episode about &lt;a href=&quot;https://gimletmedia.com/shows/howtosaveaplanet/llhl9xr/wheres-our-climate-anthem&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;social movement anthems and why the climate movement is missing one&lt;/a&gt;.  There was a bunch of great material in the episode, but as someone who grew up around both folk music and social movement awareness, I felt like they missed the mark on a really key feature of a movement anthem.  And it got me wound up enough that I wrote a whole long comment to the show about it, reproduced below.&lt;br /&gt;&lt;hr&gt;I enjoyed the movement song digging that Kendra did around &lt;a href=&quot;https://en.wikipedia.org/wiki/We_Shall_Overcome&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;We Shall Overcome&lt;/a&gt; and I am excited that you did a show all about finding a good climate anthem.  It&apos;s much needed!&lt;br /&gt;&lt;br /&gt;I think the criteria you laid out are missing a key ingredient: the song needs to be easy to teach to a crowd of people, who can then constructively sing along even if they forget some of the words.  A climate anthem needs the key message in an easy-to-remember chorus, and ideally the verses should be easy to sing as call and response.  It also needs to work well &lt;i&gt;a capella&lt;/i&gt;, or at most with a single guitar.  A song with a catchy tune and a danceable beat is probably not a good candidate, because the band won&apos;t be at every march.  Independent of the lyrics, the clip of All Star by Smash Mouth was the only one played on the show that sounded like it could succeed musically as an anthem.&lt;br /&gt;&lt;br /&gt;I also found Dr. Redmond&apos;s assessment of the lack of a climate anthem interesting.  She proposed that popular culture is tied to Black culture, but the environmental movement has for a long time not been connected to that Black culture.  I think that&apos;s only part right: it&apos;s not the connection to Black popular culture that&apos;s missing in much of the environmental movement, but a lack of connection to group singing in general.  Singing in church plays a big role in Black communities (and played an even bigger one in the civil rights era).  This isn&apos;t just a black thing though; socialist groups and labor unions that were predominantly white sang march- and hymn-derived songs like &lt;a href=&quot;https://en.wikipedia.org/wiki/Solidarity_Forever&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Solidarity Forever&lt;/a&gt; at meetings.  (Solidarity Forever is, of course, based on &lt;a href=&quot;https://en.wikipedia.org/wiki/John_Brown%27s_Body&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;an abolitionist hymn&lt;/a&gt; and thus connected to the Black struggle for freedom.  But it could spread through camps of European immigrants with no connection to African American communities or culture.)  With both church and labor union membership way down among left-leaning middle-class white folks, most of us are simply out of practice at singing in groups.  And the proliferation of recorded music in the last half century has meant that if we want to hear a song we usually don&apos;t need to sing it ourselves.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/398138.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/398138.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/398138.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/399335.html?view=comments#comments</comments>
  <category>climate</category>
  <category>song</category>
  <category>music</category>
  <media:title type="plain">How to Save a Planet podcast</media:title>
  <lj:music>How to Save a Planet podcast</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/398951.html</guid>
  <pubDate>Wed, 21 Apr 2021 08:10:38 GMT</pubDate>
  <title>Double-counting Land Use</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/398951.html</link>
  <description>I was listening to &lt;a href=&quot;https://peakenvironment.libsyn.com/73-jacks-solar-garden&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listening to a podcast&lt;/a&gt; featuring &lt;a href=&quot;https://www.jackssolargarden.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Jack&apos;s Solar Garden&lt;/a&gt;.  The idea is to install solar panels on farmland and then grow shade-tolerant crops below it, or let livestock range and benefit from the shade on hot days.  This provides the farmer with multiple income streams: electricity sales and agricultural produce.  &lt;a href=&quot;https://en.wikipedia.org/wiki/Agroforestry&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Agroforestry&lt;/a&gt; follows a similar farm-as-ecosystem approach&amp;mdash;trees, crops, and livestock grown together can be more productive in the long term than the three grown in separate monocultural areas.  (This is partly because the three work symbiotically with soil health.  Also, chickens are a pretty effective insecticide and fertilizer, reducing cost of inputs.)&lt;br /&gt;&lt;br /&gt;This led me to think about maps and statistics I&apos;ve seen about land use, which tend to account for just a single use for any given acre of land.  You might see an infographic about the percentage of land devoted to cattle, to wheat, to forests, to solar power.  This accounting system makes the math easier, but blinds the reader to the possibility of multi-use synergy.  Why settle for 20 acres of lettuce and 20 acres of solar when you could have 40 acres of both?&lt;br /&gt;&lt;br /&gt;As we combat climate change and account for a rapidly-growing global population, the more creative we can get with the mostly-fixed amount of land on the planet the better chance we&apos;ll have of thriving as a human species.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/397954.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/397954.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/397954.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/398951.html?view=comments#comments</comments>
  <category>ecosystem</category>
  <category>climate</category>
  <category>agriculture</category>
  <category>system</category>
  <category>energy</category>
  <category>solar</category>
  <media:title type="plain">KGNU - Sleepless Nights</media:title>
  <lj:music>KGNU - Sleepless Nights</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/398728.html</guid>
  <pubDate>Thu, 01 Apr 2021 05:22:43 GMT</pubDate>
  <title>🎵 I just got vaxed / and it felt so good 🎵</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/398728.html</link>
  <description>&amp;hellip; commence Lonely Island filk.&lt;br /&gt;&lt;br /&gt;I got the first dose of the Pfizer/BioNTech COVID-19 vaccine this afternoon, so I&apos;m pretty psyched about the possibility of having a summer that doesn&apos;t revolve around my living room.&lt;br /&gt;&lt;br /&gt;The experience of getting the vaccine itself was pretty painless.  Walked from my house to a pharmacy, filled out a form, sat around for a few minutes, a purple-haired nurse stuck a small needle into my bicep (way less uncomfortable than a blood draw), and told me to stay nearby for 15 minutes.  I walked over to the local game store and picked up the new Dominion set, then walked home.&lt;br /&gt;&lt;br /&gt;The experience of actually signing up for a vaccine, on the other hand, is pretty hectic.  Since the U.S. health care wasn&apos;t really designed and there&apos;s no centralization, every vaccine provider has a separate process for signing up for a shot, with different ways of assessing eligibility.  I learned last week that a medication I take for psoriatic arthritis qualifies me in Colorado&apos;s Phase 1B.4 group, though the state&apos;s official website doesn&apos;t list which medications meet that criterion, so I had to check with my doctor.  I then went to sign up on the King Soopers pharmacy website.  They&apos;ve got a digital assistant that asks a bunch of questions, none of which is &quot;Are you taking a medication that&amp;hellip&quot;, so it concluded I wasn&apos;t currently eligible.  I next tried signing up through BCH (the local hospital, which also owns my primary care doctor&apos;s office).  Their system emails you when it thinks you qualify, but I discovered that my electronic health record didn&apos;t have the relevant drug I&apos;m taking, so the BCH system wouldn&apos;t have known I was eligible.  (When I went to add the medicine to my profile I also discovered there was at least a dozen ways that this drug is referenced in the database, and I don&apos;t know if their eligibility-checking system knows the drug qualifies.)  Other websites just listed the eligibility groups and asked which one you were eligible for.  Several required you to sign up with an account in their system, and by the time you get through filling out such a form, the appointment slots are likely to be all taken.&lt;br /&gt;&lt;br /&gt;Fortunately, enterprising tech-inclined individuals have set up some tools to highlight available vaccination appointments.  &lt;a href=&quot;https://www.vaccinespotter.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Vaccine Spotter&lt;/a&gt; scrapes and aggregates pharmacy scheduling websites and &lt;span style=&quot;white-space: nowrap;&quot;&gt;&lt;a href=&quot;https://www.dreamwidth.org/profile?user=covaxalerts&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://www.dreamwidth.org/img/silk/identity/user.png&quot; alt=&quot;[profile] &quot; width=&quot;17&quot; height=&quot;17&quot; style=&quot;vertical-align: text-bottom; border: 0; padding-right: 1px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.dreamwidth.org/profile?user=covaxalerts&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;b&gt;covaxalerts&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; publishes that info on Twitter.  I was able to snag the convenient appointment when I checked Vaccine Spotter shortly after midnight a few days ago, so hooray for being a night owl.  (I may have also lucked out that Walgreens wasn&apos;t yet on the Colorado website as a provider, so they may have just onboarded and fewer people were obsessively checking their site.)&lt;br /&gt;&lt;br /&gt;Coincidentally, we&apos;ve scheduled our first vacation (not counting a short trip to the family cabin) in over a year for next week, so I&apos;m glad to have an extra layer of defense against potential exposure while soaking in a hot spring.  There&apos;s light at the end of the tunnel, but keep wearing your mask and stay at distance so we don&apos;t blow it before we reach the finish line.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/397645.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/397645.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/397645.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/398728.html?view=comments#comments</comments>
  <category>vaccine</category>
  <category>covid-19</category>
  <category>health</category>
  <media:title type="plain">KGNU - Reggae Transfusion</media:title>
  <lj:music>KGNU - Reggae Transfusion</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/398529.html</guid>
  <pubDate>Wed, 24 Mar 2021 06:31:38 GMT</pubDate>
  <title>March 22nd: A Sooper Terrible Day</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/398529.html</link>
  <description>March 2020: &quot;I&apos;m going to the grocery store, I hope I don&apos;t get COVID.&quot;&lt;br /&gt;March 2021: &quot;I&apos;m going to the grocery store, I hope I don&apos;t get shot.&quot;&lt;br /&gt;&lt;br /&gt;Yesterday afternoon a young man from Arvada brought a semi-automatic rifle to the south Boulder King Soopers grocery store and murdered 10 people.  &lt;a href=&quot;https://en.wikipedia.org/wiki/2021_Boulder_shooting&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Wikipedia has a summary&lt;/a&gt;, or a quick search can find a lot of news reports.&lt;br /&gt;&lt;br /&gt;I may have spent more time at the Table Mesa Shopping Center (site of the shootings) than any other commercial parcel.  My very existence is thanks to my grandparents purchase of a home three blocks away when they retired from the Army.  I spent the first month of my life in that house, so this King Soopers might&apos;ve been the first super market I was ever inside.  My grandparents later moved to the Meridian retirement community, the building right behind King Soopers.  I spent three years of high school in the building next door to that, when New Vista High School was in the Paddock campus.  We would occasionally decide to move class to Caf&amp;eacute; Sole, students would grab lunch at King Soopers or a slice of pizza at Abo&apos;s.  I spent hundreds of afternoons and weekends at Dragonfire Games playing cards.  There was a laser tag arena there for a few years.  Laser tag sessions were kind of pricey, so I only played a few times, but I did buy a super-lucky box of Middle-earth starter decks there once.  I biked through the King Soopers parking lot to get to class in the morning, and along the edge of it on the way home.  I remember buying Otter Pops and Henry Weinhard&apos;s Root Beer for D&amp;amp;D games at a friend&apos;s office in the Mock Realty building around the corner.&lt;br /&gt;&lt;br /&gt;As an adult, I&apos;ve bought beer at Pettyjohn&apos;s Liquor (not to mention the free cardboard boxes for moving).  I&apos;ve eaten breakfast, lunch, or dinner at almost every restaurant there, and it was at Southern Sun that I planned my first Burning Man trip with some old and new friends.  That King Soopers was my main grocery store when I moved back to Boulder and lived in Martin Park, and one of my roommates was studying at the cooking school in the shopping center.  I&apos;ve still got clothes that I got when Savers was on the far side and I have clear memories of a couple trips to King Soopers.&lt;br /&gt;&lt;br /&gt;Everyone processes a tragedy in their own way.  A couple days ago I realized I needed granola, non-dairy Ben &amp;amp; Jerry&apos;s, and a few other items.  We didn&apos;t get it done on Saturday, and Sunday was cold and snowy.  Now I&apos;ve got an odd determination to get to to the 30th Street King Soopers (my current main grocery store), in a completely mundane act of defiance.  That&apos;s a defiant act for tomorrow, though.  Today I had a meeting with Rep. Neguse&apos;s environment and climate aide.  Then Kelly proposed that it might be nice to step out of the Boulder Bubble for a bit, so we drove down to Denver to buy some games and have a fantastic meal at Domo, which has a fantastically serene traditional Japanese setup.  Not feeling like passing back through the membrane quite yet, we stopped at the Target in Superior and overcompensated on the Ben &amp;amp; Jerry&apos;s.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/397361.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/397361.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/397361.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/398529.html?view=comments#comments</comments>
  <category>shooting</category>
  <category>processing</category>
  <category>grocery store</category>
  <category>boulder</category>
  <category>table mesa</category>
  <category>violence</category>
  <media:title type="plain">Bewitched</media:title>
  <lj:music>Bewitched</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/398121.html</guid>
  <pubDate>Mon, 01 Mar 2021 06:31:46 GMT</pubDate>
  <title>Writer&apos;s Block</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/398121.html</link>
  <description>There&apos;s all kinds of stuff I&apos;ve wanted to write about in the last year, but man has the will to write been lacking.&lt;br /&gt;&lt;br /&gt;There&apos;s a bunch of news in the last year that&apos;s been a good hook for a letter to the editor, but I never muster the will to poke around for the coverage in a local paper and then write up a response.  (I managed to get enough focus this month to collaborate on an LTE about the passing of &lt;a href=&quot;https://en.wikipedia.org/wiki/George_Shultz&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;George Shultz, Republican elder statesman and climate advocate&lt;/a&gt;, but we submitted it nearly two weeks after his passing and the paper probably thought it was old news by then.)  Last fall I had several ideas about framing carbon fee &amp;amp; dividends for a conservative audience, and had several days that I intended to write something, but have nothing to show for the plans other than my comment contributions to what some other folks wrote.&lt;br /&gt;&lt;br /&gt;At the beginning of the year I was planning to be an active voice for bipartisan climate solutions in the new Congress, but then Donald Trump dispatched a mob to defile one of our country&apos;s sacred places.  Bipartisanship became a challenging hook, and I was too engrossed in the &quot;WTF just happened&quot; details that unfolded on the Internet over the next few weeks.  I was sucked in to &lt;a href=&quot;https://projects.propublica.org/parler-capitol-videos/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;watching&lt;/a&gt; all the &lt;a href=&quot;https://www.propublica.org/article/why-we-published-parler-users-videos-capitol-attack&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;videos posted to Parler&lt;/a&gt; around the Capitol on January 6th.  It was a fascinating slice of history captured by people who probably didn&apos;t know just how big a historic moment they were filming.  I spent several evenings and weekend days watching them in chronological order, and had thoughts of writing a blog post about what I&apos;d observed, but then I ran out of steam between 3:15 and 3:30 of the day.&lt;br /&gt;&lt;br /&gt;Last summer I had a couple design documents I&apos;d said I would write at work and could barely get a couple paragraphs written.  I also have several &quot;Update the documentation with new information&quot; bugs assigned to me that I frequently think about but never address.  I was able to write a couple good design documents about things I had clear plans on how to build, but I&apos;ve been nowhere near as prolific in work writing as I was in the 2011 to 2015 time frame.&lt;br /&gt;&lt;br /&gt;I&apos;ve also been pretty lousy at email correspondence during the pandemic (and for the last several years, to be frank), and social video conferences usually feel like a chore.&lt;br /&gt;&lt;br /&gt;Oddly enough, despite all this writer&apos;s block, I&apos;ve been significantly more productive at writing code in the last year than I was the previous four.  Writing a five paragraph article takes all the energy in the world, but I can knock out code for hours on end with no problem.  Writing English as a hobby is a no-go, but I somehow have the focus and clarity to switch from my work chair to my living room chair and still write code for personal projects.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/397300.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/397300.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/397300.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/398121.html?view=comments#comments</comments>
  <category>code</category>
  <category>writing</category>
  <media:title type="plain">KGNU - Dub Palace</media:title>
  <lj:music>KGNU - Dub Palace</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/397906.html</guid>
  <pubDate>Tue, 19 Jan 2021 21:09:40 GMT</pubDate>
  <title>When Shoulders Hit the Ground</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/397906.html</link>
  <description>In a meeting discussing a proposal that&apos;s similar to some that had been implemented and failed, I noted that &lt;em&gt;We&apos;re standing on the corpses of giants.&lt;/em&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/397052.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/397052.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/397052.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/397906.html?view=comments#comments</comments>
  <category>idiom</category>
  <category>work</category>
  <category>quote</category>
  <media:title type="plain">Stereolab - Metronomic Underground</media:title>
  <lj:music>Stereolab - Metronomic Underground</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/397795.html</guid>
  <pubDate>Mon, 11 Jan 2021 03:16:09 GMT</pubDate>
  <title>A Chant</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/397795.html</link>
  <description>Donald Trump&lt;br /&gt;He&apos;s not nice&lt;br /&gt;Such a crook&lt;br /&gt;Impeach him twice

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/396790.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/396790.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/396790.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/397795.html?view=comments#comments</comments>
  <category>impeachment</category>
  <category>politic</category>
  <category>trump</category>
  <media:title type="plain">KGNU - Eclipse</media:title>
  <lj:music>KGNU - Eclipse</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/397316.html</guid>
  <pubDate>Sun, 27 Dec 2020 06:24:42 GMT</pubDate>
  <title>Advent of Kotlin</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/397316.html</link>
  <description>Each December for the past several years, &lt;a href=&quot;https://adventofcode.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Advent of Code&lt;/a&gt; has presented a series of 25 daily programming challenge, with each problem adding to a Christmas-themed narrative.  I think I&apos;d seen references to AoC in the past but hadn&apos;t paid it any mind.  This year, my team at work is evaluating Kotlin for adoption in our Android Java codebase, so a small daily excuse to get experience with the language seemed promising.  Plus, there&apos;s a global pandemic so it&apos;s not like I&apos;ve got any holiday parties to attend.&lt;br /&gt;&lt;br /&gt;The event was more fun than I&apos;d anticipated.  Challenges are released at midnight America/New_York each night, and there&apos;s a time-to-completion leaderboard, so there&apos;s a competitive challenge aspect to get the juices flowing.  This wasn&apos;t great for health, though&amp;mdash;on a couple nights I started programming at 10pm America/Denver while already tired and didn&apos;t go to bed until 3am, whether because I was too sleep deprived to effectively debug or because I was having fun giving hints on the &lt;a href=&quot;http://reddit.com/r/adventofcode/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;contest&apos;s subreddit&lt;/a&gt;.  Mostly it was fun because the problems are small enough to do in one sitting and often involve an interesting algorithm.  Lots of participants give themselves an additional challenge, like using a different programming language each day or using an unusual or challenging language&amp;mdash;I saw someone posting solutions in the &lt;a href=&quot;https://en.wikipedia.org/wiki/M4_(computer_language)&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;m4 macro language&lt;/a&gt; and some folks using Excel.  Lots of folks create visualizations of their algorithm solving the problem; this year&apos;s challenges involved several which were based on &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Conway&apos;s Game of Life&lt;/a&gt; which naturally offer interesting visualizations.&lt;br /&gt;&lt;br /&gt;My experience with Kotlin was a bit mixed.  Kotlin is a programming language designed to run on the Java Virtual Machine and play well with Java code, but with a more expressive syntax and some features informed by two decades of programming language evolution since Java came into the world.  It is perhaps most widely used in the Android ecosystem where some of its features help cover for poor Android framework design and API choices and where its coroutine concurrency model is a better fit for client application programming than Java is.  Kotlin can also run in JavaScript and iOS environments, offering a hope of cross-platform shared logic.  I&apos;ve seen enough cross-platform efforts fail to be widely adopted to be skeptical on this front, though.&lt;br /&gt;&lt;br /&gt;Using Kotlin for Advent of Code offered several benefits over Java.  First, the heavy type inference and lower repetition and boilerplate reduced the number of symbols that had to be typed, which is nice for short programs, particularly one with Fake Internet Points for programming quickly.  The standard library provides a lot of handy utilities like ranges, a typed &lt;code&gt;Pair&lt;/code&gt; class and &lt;code&gt;check&lt;/code&gt;/&lt;code&gt;require&lt;/code&gt; (functions which concisely throw an exception if the program is in an invalid state) for which Java needs a library like &lt;a href=&quot;https://github.com/google/guava/wiki&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Guava&lt;/a&gt;.  &lt;code&gt;when&lt;/code&gt; blocks were also handy in many AoC puzzles, and a lot friendlier than a chain of if/else conditions.  Kotlin&apos;s fluent collection transformations (&lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;sum&lt;/code&gt;, and friends) feel a little more expressive than Java Streams, and I found multiple occasions where &quot;potentially infinite sequences&quot; were helpful.  Coroutines (which power sequences) are, I think, Kotlin&apos;s biggest selling point, and while most Advent of Code problems don&apos;t particularly benefit from concurrency, I found yielding values from a recursive function easier to implement and reason about than accumulating a list that gets returned up the chain.&lt;br /&gt;&lt;br /&gt;I&apos;m not entirely won over on Kotlin, though.  My first gripe is that the language is at risk of falling into the C++ and Perl trap wherein the language provides multiple ways to do very similar things and two pieces of code which do the same thing look very different.  This in turn can create a cognitive impediment when reading code written by a different programmer or team.  One example of this is the distinction between properties and no-arg methods.  In Kotlin, one writes &lt;code&gt;list.size&lt;/code&gt; as a property but &lt;code&gt;list.isEmpty()&lt;/code&gt; as a method and I&apos;ve been unable to find guidance on when to use one rather than the other for read-only state.&lt;br /&gt;&lt;br /&gt;Second, one of Kotlin&apos;s selling points is nicer handling of nulls, since nullability is part of a type definition (&lt;code&gt;String?&lt;/code&gt; is nullable, &lt;code&gt;String&lt;/code&gt; is not).  This is handy, and reduces boilerplate, particularly with null-happy APIs like Android.  But it also means the compiler forces you to handle null cases which you know semantically can&apos;t occur, such as calling &lt;code&gt;.max()&lt;/code&gt; on a collection that you know is not empty.  This leads to a proliferation of method name pairs, one of which throws an exception and one of which returns null (elementAt/elementAtOrNull/elementAtOrDefault, getValue/get/getOrDefault, maxBy/maxByOrNull, maxWith/maxWithOrNull&amp;hellip;).  This also isn&apos;t entirely consistent within the standard library: &lt;code&gt;list[5]&lt;/code&gt; throws an exception if the list has fewer than six elements, but &lt;code&gt;map[5]&lt;/code&gt; returns null if that key is not present.  The need for &quot;OrDefault&quot; method variants also seems a bit odd when the language also provides the Elvis operator (&lt;code&gt;?:&lt;/code&gt;) for null-coalescing.&lt;br /&gt;&lt;br /&gt;Third, the impression that Kotlin is basically Java with nicer syntax can lead to unpleasant surprises when the Kotlin standard library has a slightly different implementation to a similar method in Java.  For example, in Java, String.split with an empty argument returns an array with one character per string: &lt;code&gt;&quot;cake&quot;.split(&quot;&quot;)&lt;/code&gt; is the same as &lt;code&gt;new String[] {&quot;c&quot;, &quot;a&quot;, &quot;k&quot;, &quot;e&quot;}&lt;/code&gt;.  The same behavior holds true in JavaScript, Python, Perl, and perhaps dates back to &lt;a href=&quot;https://en.wikipedia.org/wiki/AWK&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;AWK&lt;/a&gt;.  Kotlin, on the other hand, returns an array with empty strings at the beginning and end: &lt;code&gt;&quot;cake&quot;.split(&quot;&quot;)&lt;/code&gt; is the same as &lt;code&gt;arrayOf(&quot;&quot;, &quot;c&quot;, &quot;a&quot;, &quot;k&quot;, &quot;e&quot;, &quot;&quot;)&lt;/code&gt;.  What&apos;s worse, the behavior of splitting on an empty string or pattern is not documented in Kotlin, so I don&apos;t know if it&apos;s a bug or an intentional choice.&lt;br /&gt;&lt;br /&gt;This brings up another of my Kotlin complaints: documentation.  There are plenty of valid complaints about Java&apos;s verbosity, but the clarity and completeness of Javadoc in the Java world is wonderful.  I very rarely have to read the code in the JDK or a widely-used library to understand how it will handle a particular input.  (The same cannot be said for Ruby, for example.)  Kotlin seems to prefer more terse documentation and rarely gives sample code, so you&apos;re often left to figure it out yourself, experimentally.  The Kotlin web interface for API documentation also has some notable room for improvement, like proper handling of &quot;Open in new tab&quot; clicks.&lt;br /&gt;&lt;br /&gt;My final Kotlin complaint that cropped up during Advent of Code is a sneaky one.  One of Kotlin&apos;s neat features is extension methods: you can define a method on a type defined by someone else, like &lt;code&gt;operator fun Pair&amp;lt;Int, Int&amp;gt;.plus(other: Pair&amp;lt;Int, Int&amp;gt;) = Pair(first + other.first, second + other.second)&lt;/code&gt;.  This can help the readability of code with several steps by chaining all method calls from top to bottom, whereas Java would end up with a mix of static method calls wrapped around method chains.  This feature, however, comes with a major downside: extension methods are resolved statically against the declared type of the receiver.  They are &lt;em&gt;not&lt;/em&gt; dispatched dynamically, despite having identical syntax as dynamically dispatched methods.  A concrete example I ran into: a function which checks the neighboring cells of a 2-D grid used the following code:&lt;br /&gt;&lt;pre&gt;fun checkNeighbors(x: Int, y: Int) {
  for (i in (x-1..x+1).intersect(0 until height)) {
    for (j in (y-1..y+1).intersect(0 until width)) {
      // do something with grid[i][j]
    }
  }
}&lt;/pre&gt;&lt;br /&gt;This expresses &quot;go through all the cells from above left to below right while staying inside the grid bounds&quot; by using the intersection of pairs of ranges.  Unfortunately, this is an O(n^2) algorithm because &lt;code&gt;intersect&lt;/code&gt; is defined as an extension method of &lt;code&gt;Iterable&lt;/code&gt;, so it runs through all &lt;var&gt;width&lt;/var&gt; columns for each &lt;var&gt;height&lt;/var&gt; row, even though at most three of each are relevant.  I could write a specialized &lt;code&gt;IntRange.intersect(other: IntRange) = IntRange(max(start, other.start), min(endInclusive, other.endInclusive))&lt;/code&gt; extension method, and it would improve the complexity in this code to O(1).  But if someone passed an IntRange to a method declared to take an Iterable or a ClosedRange, an &lt;code&gt;intersect&lt;/code&gt; call on that argument, the inefficient generic version would be used.  This contrasts with Java 8&apos;s similar mechanism, &lt;code&gt;default&lt;/code&gt; methods on an interface, which allow implementations to provide a specialized version dispatched at runtime.&lt;br /&gt;&lt;br /&gt;Returning circularly to the &quot;too many ways to do the same thing&quot; problem, here are some efficient ways to write that grid code in Kotlin:&lt;br /&gt;&lt;pre&gt;for (i in (x-1).coerceAtLeast(0)..(x+1).coerceAtMost(height-1)) {
  for (j in (y-1).coerceAtLeast(0)..(y+1).coerceAtMost(height-1)) {

for (i in (0 until height).let { (x-1).coerceIn(it)..(x+1).coerceIn(it) }) {
  for (j in (0 until width).let { (y-1).coerceIn(it)..(y+1).coerceIn(it) }) {

for (i in x-1..x+1) {
  if (i in 0 until height) {
    for (j in y-1..y+1) {
      if (j in 0 until width) {

for (i in (x-1..x+1).filter((0 until height).contains)) {
  for (j in (y-1..y+1).filter((0 until width).contains)) {&lt;/pre&gt;&lt;br /&gt;but I&apos;m really not sure which is the most idiomatic.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/396527.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/396527.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/396527.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/397316.html?view=comments#comments</comments>
  <category>java</category>
  <category>kotlin</category>
  <category>program</category>
  <category>advent of code</category>
  <media:title type="plain">KGNU - Under the Floorboards</media:title>
  <lj:music>KGNU - Under the Floorboards</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/397136.html</guid>
  <pubDate>Thu, 03 Dec 2020 04:05:00 GMT</pubDate>
  <title>Spam: Precise counts of threats and insults</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/397136.html</link>
  <description>I enjoyed the over-the-top absurdity of this spam message I received through my website.  Unsurprisingly, the referenced Bitcoin address has never received a transaction.&lt;br /&gt;&lt;blockquote&gt;Your reputation and business are at stake!&lt;br /&gt;&lt;br /&gt;We on your behalf in the message your website address trevorstone.org and your contact information (including in social. Networks and messengers) will send:&lt;br /&gt;&lt;br /&gt;+ on 15,897,318 sites, threats with insults to site owners, US residents, Europeans, LGBT and BLM.&lt;br /&gt;&lt;br /&gt;+ 790,000 messages to bloggers with threats and insults&lt;br /&gt;&lt;br /&gt;+ 2 367 896 public figures and politicians (from the USA and Europe) with threats and insults&lt;br /&gt;&lt;br /&gt;+ 70,000 negative reviews about you and your website trevorstone.org&lt;br /&gt;&lt;br /&gt;+ 23 467 849 contact forms of sites with threats and insults&lt;br /&gt;&lt;br /&gt;+ 150,000 emails messages to people with disabilities with threats and insults, many of them will definitely sue you&lt;br /&gt;&lt;br /&gt;+ 57000 emails of messages to veterans with threats and insults, FOR THIS YOU WILL BE EXACTLY SITTED&lt;br /&gt;&lt;br /&gt;Following from all of the above, you will get a lot of losses:&lt;br /&gt;&lt;br /&gt;+ an abuse from spam house, amazon and many webmasters (for spam, insults and threats) will come to your site trevorstone.org, as a result, your domain will be banned and blacklisted&lt;br /&gt;&lt;br /&gt;+ people will sue you because you threatened and humiliated them&lt;br /&gt;&lt;br /&gt;+ in court you will not prove anything, everything will look as if you did it all, MOST YOU WILL GO TO PRISON&lt;br /&gt;&lt;br /&gt;+ internet will be inundated with negative reviews about you and your website trevorstone.org&lt;br /&gt;&lt;br /&gt;+ threats and reprisals from BLM and LGBT community members, in fact, these are dangerous community guys&lt;br /&gt;&lt;br /&gt;Total: you will lose your business, all your money, you will spend on lawyers and compensation for court decisions, you will go to jail, your life will turn to hell ...&lt;br /&gt;&lt;br /&gt;We already have everything ready to launch all of the above, but we decided to give you a chance to avoid all this, you can buy off a small amount of money.&lt;br /&gt;&lt;br /&gt;Make a payment, transfer 0.39 Bitcoins to this address&lt;br /&gt;&lt;br /&gt;1JDYfBMP3vg8TcuFuwSHc1Wop3rREqupC4&lt;br /&gt;&lt;br /&gt;We are waiting for the transfer from you until November 27, on Saturday November 28, if payment does not come from you, we will begin to destroy your business and you along with it.&lt;/blockquote&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/396038.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/396038.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/396038.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/397136.html?view=comments#comments</comments>
  <category>spam</category>
  <media:title type="plain">KGNU - Musica Mundi</media:title>
  <lj:music>KGNU - Musica Mundi</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/396816.html</guid>
  <pubDate>Tue, 01 Dec 2020 03:42:17 GMT</pubDate>
  <title>Alice&apos;s Algorithm</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/396816.html</link>
  <description>This song is called “Alice’s Algorithm”&lt;br /&gt;It’s about Alice, and the algorithm&lt;br /&gt;But “Alice’s Algorithm” is not the name of the algorithm&lt;br /&gt;That’s just the name of the song&lt;br /&gt;That’s why I call the song “Alice’s Algorithm”&lt;br /&gt;&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;Send a syn, you’ll get an ack&lt;br /&gt;Two prime numbers are hard to hack&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;&lt;br /&gt;Now it all started two Thanksgivings ago, two years ago, on Thanksgiving&lt;br /&gt;When my friend and I wanted to send a message to Alice with an algorithm&lt;br /&gt;But Alice doesn’t get mail through the algorithm,&lt;br /&gt;She gets mail on a server running the algorithm,&lt;br /&gt;In the home directory, with her copy of RSA and Carol the sysadmin&lt;br /&gt;And livin’ in the home directory like that, they’ve got a lot of room in /var where the spool used to been&lt;br /&gt;Havin’ all that room (seein’ as how they deleted all the spools)&lt;br /&gt;They decided that they didn’t have to take out their garbage for a long time&lt;br /&gt;Our message got up there and found all the garbage in there&lt;br /&gt;And we decided that it’d be a friendly gesture for us to collect the garbage into /dev/null&lt;br /&gt;So we took the half-a-gig of garbage,&lt;br /&gt;Set it to the input of the mark-and-sweep microcode&lt;br /&gt;Took stacks and heaps and methods of compaction&lt;br /&gt;And headed on towards the bit bucket&lt;br /&gt;Well we got there and there was a big sign and a umask across /dev/null sayin’&lt;br /&gt;“/dev/null is closed on Thanksgiving”&lt;br /&gt;And we’d never heard of a bit bucket closed on Thanksgiving before&lt;br /&gt;And with tears in our eyes we drove off into the root dir lookin’ for another place to put the garbage&lt;br /&gt;We didn’t find one&lt;br /&gt;‘Till we came to a temp dir, and in that temp dir was fifteen dirs&lt;br /&gt;And in the last of those dirs was another heap of garbage&lt;br /&gt;And we decided that one big heap was two little heaps&lt;br /&gt;And rather than reallocate that heap&lt;br /&gt;We decided to leave ours there&lt;br /&gt;That’s what we did&lt;br /&gt;Went back to /home, computed a message digest that couldn’t be reversed&lt;br /&gt;Put the thread to sleep, and didn’t run again until the next morning&lt;br /&gt;When we got an email from Officer Eve.&lt;br /&gt;She said “Kid,&lt;br /&gt;We found your PII in a header at the bottom of half-a-gig of garbage&lt;br /&gt;And I just wanted to know if you had any information about it.”&lt;br /&gt;And I said “Yes ma’am, Officer Eve, I cannot return false,&lt;br /&gt;I put that email under that garbage.”&lt;br /&gt;After speakin’ to Eve for about forty-five minutes over TCP we finally arrived at the truth of the matter&lt;br /&gt;And she said that we had to go down and collect the garbage&lt;br /&gt;And also had to exchange messages with her at the Police Officer Website&lt;br /&gt;So we got in the mark-and-sweep microcode&lt;br /&gt;With the stacks and heaps and methods of compaction&lt;br /&gt;And resolved the IP of the Police Officer Website&lt;br /&gt;Now, friends, there was only one of two messages that Eve could’ve sent at the Police Officer Website&lt;br /&gt;And the first was that she could’ve written to the blockchain that we were so brave and honest over email&lt;br /&gt;(Which wasn’t very likely and we didn’t expect it)&lt;br /&gt;And the other thing was that she could’ve DOSed us and told us never to be seen storing garbage in the temp directory&lt;br /&gt;Which is what we expected&lt;br /&gt;But when we got to the Police Officer Website, there was a third possibility that we hadn’t even counted upon&lt;br /&gt;And we was both immediately arrested&lt;br /&gt;Put in chroot&lt;br /&gt;And I said “Eve, I can’t clean up the temp dir with this chroot env”&lt;br /&gt;She said “Shut up kid,&lt;br /&gt;And get at the back of the priority queue”&lt;br /&gt;And that’s what we did, sat in the back of the priority queue,&lt;br /&gt;And got routed to the quote scene of the crime unquote&lt;br /&gt;I want to tell you ‘bout the domain of stockbridge.ma.us where this is happenin’&lt;br /&gt;They got three firewalls, two police officers, and one packet sniffer&lt;br /&gt;But when we got to the scene of the crime&lt;br /&gt;There was five police officers and three packet sniffers&lt;br /&gt;Bein’ the biggest crime since the Unix epoch&lt;br /&gt;And everybody wanted to get in the blog post about it&lt;br /&gt;And they was runnin’ all kinds of forensic software they had lyin’ around the Police Officer Website&lt;br /&gt;They was takin’ full disk snapshots, syslogs, packet-sniffin’ logs,&lt;br /&gt;And they took twenty-seven 8 megapixel colored JPEG screenshots&lt;br /&gt;With circles and arrows and a paragraph in the EXIF tags of each one&lt;br /&gt;Explainin’ what each one was, to be used as evidence against us&lt;br /&gt;Took screenshots of the ingress, the egress, the home page, the terms of service&lt;br /&gt;And that’s not to mention the ASCII art!&lt;br /&gt;After the ordeal, we went back to the jail&lt;br /&gt;Eve said she was gonna put us in a chroot&lt;br /&gt;She said “Kid, I’m gonna put you in a chroot&lt;br /&gt;I want your wallet and your shell”&lt;br /&gt;I said “Eve, I can understand your wantin’ my wallet, so I don’t have any crypto to spend in the chroot&lt;br /&gt;But what do you want my shell for?”&lt;br /&gt;And she said “Kid,&lt;br /&gt;We don’t want any deletions”&lt;br /&gt;I said “Eve, did you think I was gonna rm my program for leaking?”&lt;br /&gt;Eve said she was makin’ sure, and friends, Eve was,&lt;br /&gt;‘Cause she set mode -x on /bin so I couldn’t run head and overwrite my files&lt;br /&gt;And she took out the printer paper so I couldn’t print on green bars, roll the fan-fold paper out the window, and let the data escape&lt;br /&gt;Eve was makin’ sure&lt;br /&gt;And it was about four or five hours later that Alice&lt;br /&gt;(Remember Alice? It’s a song about Alice)&lt;br /&gt;Alice connected&lt;br /&gt;With a few nasty messages to Eve on a side channel, bailed us out of chroot&lt;br /&gt;And we went back to /home, had another message digest that couldn’t be reversed&lt;br /&gt;And didn’t run again until the next morning, when we all had to go to court&lt;br /&gt;We opened a socket, wrote down&lt;br /&gt;Eve opened a socket with the twenty-seven 8 megapixel colored JPEG screenshots with the circles and arrows and a paragraph in the EXIF tags of each one, wrote down&lt;br /&gt;Man came in, ran “arping”, we all synced up&lt;br /&gt;And Eve synced up with the twenty-seven 8 megapixel colored JPEG screenshots&lt;br /&gt;And the judge opened a socket, wrote down with a screen reader program, and it wrote down&lt;br /&gt;We wrote down&lt;br /&gt;Eve looked at the screen reader program&lt;br /&gt;Then at the twenty-seven 8 megapixel colored JPEG screenshots with the circles and arrows and a paragraph in the EXIF tags and looked at the screen reader program&lt;br /&gt;And then at the twenty-seven 8 megapixel colored JPEG screenshots with the circles and arrows and a paragraph in the EXIF tags and began to cry&lt;br /&gt;Because Eve came to the realization that it was a typical case of Accessible Blind Justice&lt;br /&gt;And there wasn’t nothin’ she could do about it&lt;br /&gt;And the judge wasn’t gonna look at the twenty-seven 8 megapixel colored JPEG screenshots&lt;br /&gt;With the circles and arrows and a paragraph in the EXIF tags explainin’ what each one was, to be used as evidence against us&lt;br /&gt;And we was fined five percent of a bitcoin&lt;br /&gt;And had to clean up the garbage in the temp dir&lt;br /&gt;But that’s not what I came to tell you about&lt;br /&gt;&lt;br /&gt;I came to talk about cyberwar&lt;br /&gt;They got a buildin’ down in Fort Meade, Maryland, called NSOC&lt;br /&gt;Where your packets come in and get injected, inspected, detected, infected, reflected, and selected&lt;br /&gt;I went down and got my email examination one day&lt;br /&gt;And I opened a socket, wrote down&lt;br /&gt;Turned off my spell check the night before&lt;br /&gt;So I looked and scanned my best when I went in that morning&lt;br /&gt;‘Cause I wanted to look like the RFC-compliant kid from BSD&lt;br /&gt;Man I wanted&lt;br /&gt;I wanted to scan like&lt;br /&gt;I wanted to be&lt;br /&gt;The RFC-compliant kid from Berkeley&lt;br /&gt;And I opened a socket, wrote down&lt;br /&gt;I was downloaded, sideloaded, hung up&lt;br /&gt;And all kinds of mean, nasty, ugly things&lt;br /&gt;And I opened a socket, I wrote down&lt;br /&gt;They sent me a message that said “Kid,&lt;br /&gt;See ELIZA on port 604”&lt;br /&gt;I signed in there, I typed “Shrink,&lt;br /&gt;I wanna kill&lt;br /&gt;I mean I want, I want to kill -9&lt;br /&gt;Kill&lt;br /&gt;I want to see stacks and core dumps and errors in my logs!&lt;br /&gt;Eat dead, zombie processes!&lt;br /&gt;I mean kill. Kill! Kill! Kill!”&lt;br /&gt;And I starting scrollin’ up and down, typin’ “Kill! Kill!”&lt;br /&gt;And ELIZA started scrollin’ up and down with me&lt;br /&gt;And we was both scrollin’ up and down, typin’ “Kill! Kill!”&lt;br /&gt;And the robot came over, added a badge to my profile&lt;br /&gt;Sent my messages through the network, and said “You’re our user!”&lt;br /&gt;Didn’t feel too good about it&lt;br /&gt;Proceeded through the network gettin’ more injections, inspections, detections, reflections&lt;br /&gt;And all kinds of stuff they was doin’ to my packets at the thing there&lt;br /&gt;And my program ran for two hours, three hours, four hours&lt;br /&gt;It ran for a long time goin’ through all kinds of mean, nasty, ugly messages&lt;br /&gt;And I was just havin’ a laggy time there&lt;br /&gt;And they was inspecting, injecting every single part of my data&lt;br /&gt;And they was leavin’ no message untouched&lt;br /&gt;Got routed through and&lt;br /&gt;I finally came to see the very last server, I opened a socket&lt;br /&gt;I opened a socket, wrote down, after a whole big thing there&lt;br /&gt;And I synced up, and I sent “What do you want?”&lt;br /&gt;It sent, “Kid, we only got one question&lt;br /&gt;Have you ever been arrested?”&lt;br /&gt;(dramatic pause)&lt;br /&gt;And I proceeded to forward the email of Alice’s Algorithm Massacree&lt;br /&gt;With full synchronization and 256-bit harmony and stuff like that, and other phenomenon&lt;br /&gt;It blocked my I/O right there and said “Kid, did you ever go to court?”&lt;br /&gt;And I proceeded to transmit the story of the twenty-seven 8 megapixel colored JPEG screenshots&lt;br /&gt;With the circles and arrows and a paragraph in the EXIF tags of each one&lt;br /&gt;It blocked my I/O right there and said “Kid,&lt;br /&gt;I want you to go over and connect to that bus that says “group-www”&lt;br /&gt;“NOW kid!”&lt;br /&gt;&lt;br /&gt;And I connected to the bus there&lt;br /&gt;And there’s group-www is where they put you&lt;br /&gt;If you may not be moral enough to join the NSA&lt;br /&gt;After committin’ your special crime&lt;br /&gt;There was all kinds of mean, nasty, ugly-lookin’ bugs on the bus there&lt;br /&gt;There was buffer overflows&lt;br /&gt;Escalation of privilege&lt;br /&gt;Escalation overflows!&lt;br /&gt;Escalation overflows runnin’ right there on the bus next to me!&lt;br /&gt;And they was mean and nasty and ugly and horrible and buggy programs&lt;br /&gt;Was runnin’ there on the bus&lt;br /&gt;And the meanest, ugliest, nastiest one&lt;br /&gt;The meanest escalation overflow of them all&lt;br /&gt;Was comin over to me&lt;br /&gt;And it was mean and ugly and nasty and horrible and all kinds of things&lt;br /&gt;And it ran in my directory and sent a message&lt;br /&gt;“Kid, what’d you get?”&lt;br /&gt;I sent “I didn’t get null, I had to pay five percent of a bitcoin and collect the garbage”&lt;br /&gt;It sent “What were you arrested for, kid?” and I said “Memory leakin’”&lt;br /&gt;And they all moved away fro me on the bus there&lt;br /&gt;With the hairy mouse pointer and all kinds of mean and nasty things&lt;br /&gt;‘Till I sent “And creatin’ an outage”&lt;br /&gt;And they all came back, established a handshake&lt;br /&gt;And we had a great time on the bus sending messages about bugs&lt;br /&gt;Buffer privileges, escalatin’ overflows&lt;br /&gt;All kinds of groovy things that we was talkin’ about on the bus&lt;br /&gt;And everything was fine, we was calculatin’ hashes and all kinds of things&lt;br /&gt;Until the robot came over&lt;br /&gt;Had some email on its screen, held it up and said&lt;br /&gt;“Kids,&lt;br /&gt;this.emails.got.fortyseven.words.thirtyseven.headers.fiftyeight.words.we.wanna.know.details.of.the.crime.timestamp.of.the.execution.and.any.other.kind.of.logs.you.gotta.share.pertaining.to.and.about.the.crime.i.want.to.know.arresting.officers.ip.address.and.any.other.kind.of.thing.you.gotta.share”&lt;br /&gt;And it transmitted for forty-five kilobytes and nobody understood a word it said&lt;br /&gt;But we had fun fillin’ out the forms and playin’ with the autocomplete on the bus there&lt;br /&gt;And I copy and pasted the Massacree with 256-bit harmony&lt;br /&gt;Wrote it down there just like the source and everything was fine&lt;br /&gt;And I exited insert mode&lt;br /&gt;And I clicked the Continue button&lt;br /&gt;And there&lt;br /&gt;There on the next page&lt;br /&gt;In the middle of the next page&lt;br /&gt;With a large margin from everything else on the next page&lt;br /&gt;In bold&lt;br /&gt;Capital letters&lt;br /&gt;Red asterisk&lt;br /&gt;Read the following words&lt;br /&gt;“Kid,&lt;br /&gt;Have you refactored your program?”&lt;br /&gt;I opened a connection to the robot, sent&lt;br /&gt;“Robot, you got some NP-complete gall to ask me if I’ve refactored my program&lt;br /&gt;I mean&lt;br /&gt;I mean&lt;br /&gt;I mean just&lt;br /&gt;I’m sittin here on the bus&lt;br /&gt;I mean I’m sittin here&lt;br /&gt;On the group-www bus&lt;br /&gt;‘Cause you want to know if I’m moral enough to join the NSA&lt;br /&gt;Snoop on women, kids, houses, and villages, after bein’ a memory leaker”&lt;br /&gt;It looked at it and sent “Kid,&lt;br /&gt;We don’t like your protocol.&lt;br /&gt;We’re gonna send your fingerprints off to the Utah Data Center!”&lt;br /&gt;And friends, somewhere in the Bumblehive, enshrined in some big database&lt;br /&gt;Is a study in zeros and ones of my program’s fingerprint&lt;br /&gt;And the only reason I’m sendin’ you the song now&lt;br /&gt;Is ‘cause you may know somebody in a similar situation&lt;br /&gt;Or you may be in a similar situation&lt;br /&gt;And if you’re in a situation like that, there’s only one thing you can do&lt;br /&gt;Is connect to the ELIZA port wherever you are&lt;br /&gt;Just connect and say “ELIZA,&lt;br /&gt;You can send anything you want with Alice’s algorithm” and disconnect&lt;br /&gt;You know, if one programmer, just one programmer, does it&lt;br /&gt;They may think she’s really weird and they won’t take her&lt;br /&gt;And if two programmers, two programmers do it&lt;br /&gt;In parallel, they may think they share login credentials and they won’t take either of them&lt;br /&gt;And if three programmers do it&lt;br /&gt;Can you imagine three programmers connecting to a port, sending an implementation of “Alice’s Algorithm” and disconnecting?&lt;br /&gt;They may think it’s an open source project&lt;br /&gt;And can you imagine fifty programmers a day?&lt;br /&gt;I said FIFTY programmers a day connectin’, sendin’ an implementation of “Alice’s Algorithm,” and disconnectin’?&lt;br /&gt;Friends, they may think it’s gone viral&lt;br /&gt;And that’s what it is&lt;br /&gt;The Alice’s Algorithm anti-massacree viral movement&lt;br /&gt;And all you gotta do to join&lt;br /&gt;Is to share it the next time it comes around on the token ring&lt;br /&gt;With duplex&lt;br /&gt;So we’ll wait until it comes around again on the token ring&lt;br /&gt;Share when it does&lt;br /&gt;Here it comes&lt;br /&gt;&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;Send a syn, you’ll get an ack&lt;br /&gt;Two prime numbers are hard to hack&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;&lt;br /&gt;That was horrible&lt;br /&gt;If you wanna end surveillance and stuff you gotta share widely&lt;br /&gt;I’ve been transmittin&apos; this song now for 25 minutes&lt;br /&gt;I could transmit it for another 25 minutes&lt;br /&gt;I’m not proud&lt;br /&gt;Or tired&lt;br /&gt;So we’ll wait until the event loop runs again&lt;br /&gt;And this time with 256-bit harmony and duplex&lt;br /&gt;We’re just padding the message is what we’re doing&lt;br /&gt;Alright now&lt;br /&gt;&lt;br /&gt;You can send anything you want with Alice’s algorithm (excepting Alice)&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;Send a syn, you’ll get an ack&lt;br /&gt;Two prime numbers are hard to hack&lt;br /&gt;You can send anything you want with Alice’s algorithm&lt;br /&gt;Da-da-da-da-da-dum&lt;br /&gt;With Alice&apos;s algorithm&lt;a name=&apos;cutid1-end&apos;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Context for non-computing folks: computer messaging protocols are often described with Alice, Bob, and Carol sending messages and Eve trying to eavesdrop. There&apos;s also a lot of Unix references in there.&lt;br /&gt;Context for non-American-folk-music folks: &lt;a href=&quot;https://en.wikipedia.org/wiki/Alice%27s_Restaurant&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Alice&apos;s Restaurant&lt;/a&gt; by &lt;a href=&quot;https://www.arloguthrie.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Arlo Guthrie&lt;/a&gt; is one of the greatest satirical songs ever performed.  &lt;a href=&quot;https://www.youtube.com/watch?v=m57gzA2JCcM&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen to it first&lt;/a&gt; to get the guitar portion rolling around your head while you read these filk lyrics.&lt;/em&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/395777.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/395777.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/395777.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/396816.html?view=comments#comments</comments>
  <category>lyric</category>
  <category>filk</category>
  <category>computer science</category>
  <category>satire</category>
  <category>music</category>
  <category>parody</category>
  <media:title type="plain">Arlo Guthrie - Alice&apos;s Restaurant</media:title>
  <lj:music>Arlo Guthrie - Alice&apos;s Restaurant</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/396654.html</guid>
  <pubDate>Sat, 28 Nov 2020 18:22:09 GMT</pubDate>
  <title>Exporting American Traditions of Consumerism</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/396654.html</link>
  <description>Having the GMail address trevorstone@, I get a lot of email destined for other people around the world named Trevor Stone.  This misdirected mail can be anything from invoices from contractors to airline ticket confirmations to Uber Eats receipts to messages from family members.  But most of it is marketing mail from websites, and most of them seem to be meant for a Trevor Stone from England who is particularly bad at putting typing his correct address.&lt;br /&gt;&lt;br /&gt;I noticed an email for this United Kingdom version of Trevor Stone which illustrates an interesting pattern: the internationalization of the consumerism parts of Thanksgiving weekend, even though the &quot;Spend Thursday feasting and visiting with your family&quot; part seems to remain an American-only tradition.&lt;br /&gt;&lt;br /&gt;&lt;blockqoute&gt;Date: Thursday 26 Nov 2020 15:38:28 +0000&lt;br /&gt;From: Millwall FC&lt;br /&gt;Subject: An early Black Friday offer has been spotted!&lt;br /&gt;&lt;br /&gt;Enjoy an early Black Friday offer - get free postage and packaging (UK ONLY) when you spend £60 or more, using the code below...&lt;br /&gt;&lt;br /&gt;This UK-only Black Friday special has an extra dose of irony because the Millwall FC&apos;s mascot is The Lions, but they&apos;re not the Lions football team &lt;a href=&quot;https://en.wikipedia.org/wiki/NFL_on_Thanksgiving_Day&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;most associated with Thanksgiving football&lt;/a&gt;.&lt;/blockqoute&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/395658.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/395658.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/395658.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/396654.html?view=comments#comments</comments>
  <category>black friday</category>
  <category>consumerism</category>
  <category>tradition</category>
  <category>thanksgiving</category>
  <category>spam</category>
  <media:title type="plain">KGNU - Old Grass, GNU Grass</media:title>
  <lj:music>KGNU - Old Grass, GNU Grass</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/396508.html</guid>
  <pubDate>Tue, 03 Nov 2020 21:22:04 GMT</pubDate>
  <title>On Partisanship and Othering</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/396508.html</link>
  <description>Today, November 3rd, 2020, is Election Day.  It is one of the sacred days of the American calendar, when the people choose our next set of leaders.  It is the day we begin to learn what our fellow citizens think, and whether enough of them think like us that our favored candidate will take the reins next year.&lt;br /&gt;&lt;br /&gt;With 21st Century media and social science we already know a lot about what our fellow citizens think.  We know that &lt;a href=&quot;https://projects.fivethirtyeight.com/trump-approval-ratings/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;about 45% of Americans approve of Donald Trump’s performance and a little more than half of Americans disapprove&lt;/a&gt;.  We know that in almost every presidential race without a major third-party candidate, &lt;a href=&quot;https://www.statista.com/statistics/1035521/popular-votes-republican-democratic-parties-since-1828/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;at least 40% of voters&lt;/a&gt; cast their ballot for the losing candidate.  Both Democratic and Republican candidates have received donations from millions of Americans, and all told &lt;a href=&quot;https://www.opensecrets.org/news/2020/10/cost-of-2020-election-14billion-update&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;around $14 billion has been spent to influence the election&lt;/a&gt;, nearly $100 per voter.  All of which is to say that, regardless of who wins, tens of millions of Americans will have voted for someone else.  And while we often talk about red states and blue states, very few states are forecast to cast less than one third of ballots for either Biden or Trump.  No matter where you live, you’re probably not too far from a pocket of support for a different party.&lt;br /&gt;&lt;br /&gt;Over the past several decades, American political partisanship has increased dramatically.  With the ease of moving, we’ve geographically clustered ourselves into areas of partisanship—your neighbors today are more likely to share your political views than neighbors fifty years ago.  This also means most Congressional races are decided in the primaries more so than in the general election, leading to an &lt;a href=&quot;https://voteview.com/parties/all&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;increasingly polarized congress&lt;/a&gt;.  With an abundance of media choices, Americans can choose to get their news from publishers whose partisan lean matches their own—and publishers can tailor their news to match the partisan lean of their target demographic.  This has led to a country in which the same event has wildly different interpretations on the left and the right (even within mainstream partisan groups), and in which there’s often disagreement about basic facts, depending on media diet.  This is good business for media companies, producing a loyal audience and reliable advertising, but it’s bad for democracy.&lt;br /&gt;&lt;br /&gt;This intense partisanship has led to a country in which people have a very distorted view of the people on “the other side.”  Fear and outrage are more effective tools than nuance and curiosity for attracting media eyeballs and motivating campaign contributions, so our partisan information sources send us a steady diet of stories about all the bad ideas and negative personality traits of politicians from the other side of the aisle.  Depending on your social and media world you might think that Democrats are out to destroy America… or that Republicans are trying to do it.  This partisan animus then naturally extends to either party’s voters.  Some folks on the right view any vote for Joe Biden as support for socialism (despite his primary defeat of the socialist candidate) while folks on the left have turned “Trump supporter” into shorthand for a violent, racist, anti-intellectual stereotype (despite Trump’s 2016 performance of 20% of votes from people of color and 40% of college graduates).  The result is a sort of negative partisanship: people often vote against candidates, parties, and perceived ideologies rather than voting because they’re inspired by positive traits.  We may not love the person we’re voting for, but at least he’s not like that other guy, and we’ll keep those terrible people out of power.&lt;br /&gt;&lt;br /&gt;Is it possible that nearly half of all Americans are stupid, evil, or want to destroy America?  No.  If a person says or does something that doesn’t make sense to you, there’s a good chance they’re just operating with a different internal logic and a worldview than yours.  When we let members of our own partisan tribe tell us about members of the other tribe, to define them by negative characteristics and differences from our tribe, it’s known as “othering,” a form of discrimination.  And with the geographic and demographic partisan alignment over the last 40 years, this political othering builds on othering based on race, education, and the urban/rural divide.  Left unchecked, othering and discrimination tends to escalate, which is dangerous ina democracy.  We’ve learned that one of the most important ways to address othering is to let people tell their own story, to share their own experience.  One of the most radical things you can do in the time of hyperpartisanship is to listen to people on “the other side.”&lt;br /&gt;&lt;br /&gt;Humans live complex lives, and there are many factors that can lead to electoral support.  &lt;a href=&quot;https://yourmorals.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Our moral values&lt;/a&gt; are expressed in different ways, with some people resonating more with candidates who display values of care or fairness, others resonating with loyalty or purity.  Some voters resonate with candidate personalities.  Some voters decide based on policy support.  Some vote based on party loyalty, or are influenced by leaders in their own identity groups.  Any successful presidential campaign represents an alliance of voters who made up their mind in different ways.  Some voters resonate with candidates in both parties, or are torn between the policies of one candidate and the personal character of another.  Some don’t find a home in either major party, and are coaxed into voting for the lesser perceived evil[1].  When we reduce all of a candidate’s voters to a single mental category we miss the opportunity to understand the rich viewpoints and experiences that came together for this moment in electoral time.  Some of the “other team’s” voters differ from us in many measures, but we might find a lot in common with other voters: they share many of our values, they share our group identities, but there was that one thing that led them to check box A instead of B.  But we won’t find that connection if we approach them from a place of prejudgment and if we don’t listen when they tell their story.&lt;br /&gt;&lt;br /&gt;Even in highly partisan places and in organizations with a significant ideological lean, a significant number of people vote for the party that’s not locally dominant.  Donald Trump got around 10% of the vote in famously Democratic cities like San Francisco, Boston, and Baltimore while Hillary Clinton captured 10 to 20% of the vote in most small rural counties.  So even if your town, your company, or your religious community feel like places where everyone agrees on politics, they’re probably not.  But it’s likely that folks with the minority position try to keep a low profile: they voted based on their values, but if they speak up about it they risk being othered, excluded, or harassed, all of which make us feel horrible.&lt;br /&gt;&lt;br /&gt;There’s a lot at stake in today’s election, and emotions are running high.  Folks who voted for winning candidates might feel elated or relieved.  Folks whose candidate didn’t make the bar might feel shock, despair, anger, or fear.  As the vote is counted this week we need to be aware that our colleagues and neighbors may feel very differently than we do.  And what we say about their candidate or their political party may feel like an attack on their tribe or on them personally.  So please be considerate as the democratic process evolves.  Empathize with your colleagues.  Listen to your neighbors.  Respect that they made a reasonable decision, based on their own values and priorities.  Recognize that we’re all in this together: democracy depends on people’s ability to collaborate despite disagreements.  And above all, &lt;a href=&quot;https://www.youtube.com/watch?v=rph_1DODXDU&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;be excellent to each other&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href=&quot;https://en.wikipedia.org/wiki/Duverger%27s_law&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Duverger’s law&lt;/a&gt; finds that an electoral system like America’s tends to produce a two-party system with limited choices.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I welcome comments on this piece.  I regret that it is but a first draft, yet its value would be reduced if I waited a week to share a more perfect version.  Thank you for reading, and take care of yourself.&lt;/i&gt;

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/395373.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/395373.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/395373.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/396508.html?view=comments#comments</comments>
  <category>election</category>
  <category>partisan</category>
  <category>othering</category>
  <category>politic</category>
  <category>america</category>
  <media:title type="plain">KGNU - Morning Sound Alternative</media:title>
  <lj:music>KGNU - Morning Sound Alternative</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/396121.html</guid>
  <pubDate>Wed, 28 Oct 2020 19:06:15 GMT</pubDate>
  <title>20 Years of World Series Stats</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/396121.html</link>
  <description>It&apos;s late October, so I just did almost all my live TV watching for the year, between postseason baseball and presidential debates.  And since my brain wouldn&apos;t shut up about this for over 3 hours, here&apos;s some interesting stats from the last 20 World Series, 2001&amp;ndash;2020.  (If you want to nerd out over more, &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_World_Series_champions&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Wikipedia of course has a list of all the Series&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;National League teams won 11 times, American League teams won 9.&lt;br /&gt;&lt;br /&gt;No team won back-to-back World Series, and only four teams had back-to-back league pennants (two losing twice, two going 1&amp;ndash;1).&lt;br /&gt;&lt;br /&gt;The Red Sox won 4, Giants won 3, Cardinals won 2, and 11 different teams won 1.  Six teams lost twice.  It&apos;s also the first 20-year period in which the Yankees only won one World Series since the first 20 year window (Yankees first win was 1923).&lt;br /&gt;&lt;br /&gt;Red Sox&amp;ndash;Cardinals was the only repeat matchup.  (The previous 20 series also had a single repeat, Yankees&amp;ndash;Braves.  The previous 20 featured three between the Yankees and Dodgers and two Orioles&amp;ndash;Pirates Series.  The 20 before that, the Yankees faced the Dodgers 7 times and the Giants, Braves, and Cardinals twice each.)&lt;br /&gt;&lt;br /&gt;Several teams won their first World Series in franchise history or their first Series after a 30+ year drought: Chicago Cubs after 108 years, Chicago White Sox after 88 years, Boston Red Sox after 86 years, San Francisco Giants after 56 years (first since move from New York), Dodgers after 32 years, Royals after 30 years; Houston Astros in their 56th year, Los Angeles Angels in their 42nd year, Arizona Diamondbacks in their 4th year.  Additionally, the Philadelphia Phillies became the final of the original 16 MLB franchises to win a second World Series.&lt;br /&gt;&lt;br /&gt;20 teams made at least one appearance.  Every &lt;a href=&quot;https://en.wikipedia.org/wiki/Expansion_team#Major_League_Baseball_(MLB)&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;expansion team&lt;/a&gt; made an appearance except four: the Mariners, Brewers, Blue Jays, and Padres.  This period contained the first World Series appearance by the Angels, Astros, Diamondbacks, Nationals, Rays, and Rockies. &lt;br /&gt;&lt;br /&gt;Of original 16 MLB franchises, only six didn&apos;t appear at least once in the last 20 Series: Athletics, Braves, Orioles, Pirates, Reds, Twins.&lt;br /&gt;&lt;br /&gt;Seven Series went 7 games, four went 6 games, five went 5 games, four were swept in 4 games.  The Nationals became the first team to win all four road games and lose all three home games.  In four championships, the Red Sox lost a total of three games.&lt;br /&gt;&lt;br /&gt;10 of the 40 pennants in this period were won by a wild card team; 6 wild card teams won the Series, and two World Series featured two wild card teams.  I suspect the wild card expansion (now four teams per league are in the playoffs) have contributed to the recent diversity in appearances and victories: a team that&apos;s performing really well late in the year now has more chances to beat an established team that got a big division lead early but didn&apos;t finish as strong.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/395227.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/395227.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/395227.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/396121.html?view=comments#comments</comments>
  <category>baseball</category>
  <category>world series</category>
  <category>sport</category>
  <media:title type="plain">Ziggy Marley - Weekend&apos;s Long</media:title>
  <lj:music>Ziggy Marley - Weekend&apos;s Long</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://flwyd.livejournal.com/395898.html</guid>
  <pubDate>Sat, 10 Oct 2020 06:16:00 GMT</pubDate>
  <title>Don&apos;t Vote for the Endless Party</title>
  <author>flwyd</author>
  <link>https://flwyd.livejournal.com/395898.html</link>
  <description>&lt;blockquote&gt;An endless fiesta would be exhausting and demoralizing: the pleasure would go out of it, the masks would disguise only fatigue and apathy, and there would eventually be nothing to celebrate.  The ordinary and the extraordinary need each other, or rather everyday life needs to be interrupted from time to time&amp;mdash;which is not to say that we  need disaster, only that it sometimes supplies the interruption in which the other work of society is done.  Carnival and revolution are likewise interruptions of everyday life, but their point is to provide something that allows you to return to that life with more power, more solidarity, more hope.  -- Rebecca Solnit, &lt;cite&gt;Paradise Built in Hell&lt;/cite&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;At temporary events like Burning Man and Dragonfest I&apos;ve often heard someone say something like &quot;We should create a community where we do this year round.&quot;  This quote refutes the idea much more eloquently than I have.

&lt;p style=&quot;font-size: smaller;&quot;&gt;This entry was originally posted at &lt;a href=&quot;https://flwyd.dreamwidth.org/394867.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://flwyd.dreamwidth.org/394867.html&lt;/a&gt; – comment &lt;a href=&quot;https://flwyd.dreamwidth.org/394867.html?mode=reply&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;over there&lt;/a&gt;.&lt;/p&gt;</description>
  <comments>https://flwyd.livejournal.com/395898.html?view=comments#comments</comments>
  <category>event</category>
  <category>festival</category>
  <category>society</category>
  <category>quote</category>
  <media:title type="plain">KGNU - Sleepless Nights</media:title>
  <lj:music>KGNU - Sleepless Nights</lj:music>
  <lj:mood>quixotic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
</channel>
</rss>
