Trevor baby stare

How to Spend Money on the 2020 Election

Aside from online shopping and face masks, one of the few areas where Americans are spending more this year is on elections. People across the political spectrum believe that 2020 will be a critical election for the future of our country, and election spending rules aren't what they once were. If one were motivated to donate money toward the election with a month to go, what are the options? I wrote a document outlining the options.

Caveat: I'm not an expert, this is not legal advice, and this is not a request for a donation to any particular group.

This entry was originally posted at – comment over there.

Trevor baby stare

Disaster is the Catalyst of a Revolution

The relationship between disaster and revolution has seldom been explored, though it crops up throughout the history of revolutions. Catastrophic weather across France in the summer of 1788 brought on the crop failures and bad harvests that led to the rising bread prices, shortages, and hunger that played a major role in triggering the French Revolution the following year. The 1870–71 siege and occupation of Paris in the Franco-Prussian War brought on the sense of daring and solidarity that made possible the Paris Commune—several weeks of insurrectionary self-government Kropotkin and anarchists everywhere have cherished ever since. Belli spoke of Nicaraguans feeling after the earthquake that since they could lose their life, they wanted to make it means something, even if that involved risks. Disaster and crisis can stiffen resolve… Sometimes they work by making a bad situation worse to the point of intolerability; they create a breaking point. Sometimes they do so by making obvious an injustice or agenda that was opaque before. Sometimes they do so by generating the circumstances in which people discover each other and thereby a sense of civil society and collective power. But there is no formula; there are no certainties. Leftists of a certain era liked to believe that the intensification of suffering produced revolution and was therefore to be desired or even encouraged; no such reliable formula ties social change to disaster or other suffering; calamities are at best openings through which a people may take power—or may lose the contest and be further subjugated.

— Rebecca Solnit, A Paradise Built in Hell: the extraordinary communities that arise in disaster

Although I've been making slow progress (distracted by 2020!), A Paradise Built in Hell was an excellent book choice for 2020.

I've also been listening to Mike Duncan's Revolutions podcast for the last several years, too[1]. I've noticed a theme that what history knows as the big moments that made a revolution seem inevitable were often a surprise or a minor event at the time. When the social order sits atop a rotten and rickety structure, it's anyone's guess what will happen when a piece of that edifice gives way.

[1] The series will end after the 1917 Russian revolution and it's currently taking a break after the 1905 Russian revolution, so if you start binging now, the last episode should be available by the time you're ready to listen.

This entry was originally posted at – comment over there.

Trevor baby stare

When Ma Bell was a Search Engine

I realized today that the entire premise of one of the greatest Rock & Roll songs in history has been obsoleted by the 21st Century.
Long distance information, give me Memphis, Tennessee
Help me find the party trying to get in touch with me
She could not leave her number, but I know who placed the call
Because my uncle took the message and he wrote it on the wall
The geography is also a little questionable these days.
Help me, information, get in touch with my Marie
She's the only one who'd phone me here from Memphis, Tennessee
Her home is on the south side, high up on a ridge
Just a half a mile from the Mississippi Bridge
There are a couple small residential areas within half a mile of the Memphis-Arkansas Bridge in south Memphis. The most likely candidate is around Esplanade Pl and Riverside Blvd, which Google Maps shows as being next to some relief, though I wouldn't call it a ridge. Maybe Marie's house got torn down for an industrial facility in the last sixty years.

I did, however, finally realize what the relationship between Marie and the singer is.
Help me, information, more than that I cannot add
Only that I miss her and all the fun we had
But we were pulled apart because her mom did not agree
And tore apart our happy home in Memphis Tennessee

Last time I saw Marie she's waving me goodbye
With hurry home drops on her cheek that trickled from her eye
Marie is only six years old, information please
Try to put me through to her in Memphis Tennessee
Given Chuck Berry's reputation for interest in teenage girls (he was convicted of having sex with a 14-year-old after transporting her across state lines, though he appealed claiming prejudice), I'd always assumed that Marie was a love interest, but 6-years-old seemed disconcertingly wrong. But the song makes way more sense if the singer had a relationship with Marie's mother and developed a fondness for her daughter (either as the father or as the boyfriend of a single mother), but then got kicked out by the mother.

Here's a relaxed 1972 performance with Chuck Berry wearing a fabulous shirt.

This entry was originally posted at – comment over there.

Trevor baby stare

Letter to Boulder City Council

[Context: the Bedrooms Are For People initiative to change Boulder's "only 3 unrelated people can live in a house" code is in dispute because of a dispute over signature deadlines, so supporters have been making their voice heard in communication to city council.]

I am writing in support of eliminating the “3 unrelated” city occupancy rule, and to support increased residential density more broadly.

I was born in Boulder, and have lived in and around the city my whole life. I attended CU, work near Pearl Street, and own a home in east Boulder. My parents moved to Boulder in the 1960s, and still live in the 4-bedroom north Boulder house they bought in 1980. Growing up, this was a middle class neighborhood; our neighbors did construction, worked at the library, wrote books, and one served on city council. When my parents reach the point that they need to move into a retirement home, my hope is to rent the old house out to other folks of modest means so that people whose work is vital to a vibrant Boulder---from teachers to firefighters to nurses to students to retail clerks---can afford to live in Boulder. Our family demonstrated that four related adults plus a friend could live in this house without a negative impact on the community; why should the occupancy be limited to three when we rent it out?

I spend much of my free time as a climate advocate. Climate change is a major systemic risk that requires communities around the world to reevaluate business as usual. I applaud the City Council for declaring a climate emergency resolution and setting ambitious goals for greenhouse gas reduction by 2030. Pandemic shutdowns aside, vehicle emissions by in-commuters to Boulder account for a significant fraction of Boulder’s contribution to climate change. Even if the combustion occurs outside city limits, these emissions are still on “our tab” so to speak when they come from folks who would like to live in Boulder but cannot afford to do so. Climate change doesn’t care on which side of a municipal border emissions occur. Boulder’s investments in low-carbon transportation, including our beloved bike trails and quality bus transit, will be even more valuable as higher density increases utilization. Compared to the millions of dollars the city has spent on municipalization, increased occupancy limits is one of the cheapest reductions in CO2 we could make.

I have many friends and colleagues in the Bay Area where low-density housing policy is heading to crisis levels, creating major stress on essential workers and reducing quality of life for even the well-paid professionals who can afford housing. Let’s take heed of this warning and work to increase housing density in Boulder before we stumble into the same fate.

Trevor Stone

This entry was originally posted at – comment over there.

Trevor baby stare

Shelf Care part two

I previously blogged about finding the right bookshelves for my new home with a note that I need to develop a shelving plan for the boxes of CDs in the garage :-/ The house is abundant in many ways, but "horizontal wall space that's not in a walkway" isn't one of them.

A couple months into COVID I noticed that we kept getting steep discount coupons from Wayfair and I figured that there's no time like a pandemic for arranging your furniture. I found a couple 1000+ CD shelving units on the site and we rearranged the living room so that a tall media shelf could go where the TV had been, but then I never got around to actually ordering the shelving units. (COVID hasn't made me any better at actually finishing projects.) Realizing that assembling furniture would be a good alternative to staring at a computer screen after work, I decided to up the priority on this. I poked around the web and found something even better than wooden shelving: 6-foot tall CD-sized metal racks. The lack of a back here is key: we can place the unit over the light switch, leaving plenty of space to control the lights but letting the shelves be flush with the edge of the wall.

After setting one rack up, filling the middle with DVDs, and adding a couple rows of CDs my wife said "I have an idea…" I could somehow tell that the idea was "Organize everything by color." I remember poking fun at someone a decade ago for saying they organized their DVDs by color. "What?! Do you come home and say 'I'm in the mood for a red movie today?" But looking at four shelves of movies I realized that a linear scan wasn't too bad to find the movie you're looking for, and it might look interesting. And yeah, it turns out a DVD rainbow is kinda cool.

CDs are off-limits for color sorting, though. Non-adjacent albums by the same band would be a constant nag on the librarian in the back of my brain.

This entry was originally posted at – comment over there.

Trevor baby stare

It's Almost July?

It's been a crazy June, from Black Lives Matter protests to rising coronavirus infections in the US to getting the hang of working from home every day.

But after a day of staring at the screen for all work and communication needs, and then following up on important personal email and then checking Twitter's trending topics to see what new craziness 2020 has gotten up to… I almost never feel like staring at a screen and writing some more.

So hi, I'm still alive, still healthy, still wishing things could be different.

This entry was originally posted at – comment over there.

Trevor baby stare

Kitchen Misadventures

In mid-March when COVID-19 restrictions started to come into place in Colorado I stopped by my friendly local homebrew store to get some ingredients. "Not being able to leave home for several weeks sounds like a great opportunity to make some beer." The Yeast Herders Gatherum at Dragonfest recently started doing annual challenges, and one of this year's is a braggot, which is alcohol made from a combination of honey and grain sugar. I've been thinking about braggot options for several months, but hadn't hit on a recipe I really liked. I decided that following something resembling an Irish red ale would be a decent first braggot experiment and at least ought to look interesting. 4 pounds sparkling amber liquid malt extract, 1 pound red malt, five pounds of Brazilian wildflower honey from the 50 pound bucket we ordered years ago.

But then I got pulled into other weekend projects, and come late may the only thing I'd gotten fermenting was a continuous brew jun kombucha. (The jun style has yeast and bacteria adapted to green tea and honey rather than black tea and sugar and boy howdy do I have a lot more green tea and honey in my kitchen.)

So a rainy day on Memorial Day weekend, two months after picking up the supplies, became the day to finally get around to making this braggot. I spent four and a half hours cleaning the kitchen, gathering brewing supplies, remembering how this all works, realizing I hadn't started an extract beer for almost two years. I heated a gallon of water and put the "Viking Red" malted barley in my metal steeping basket. After that steeped for about 45 minutes I sparged it into the big brew pot. Then I opened my container of liquid malt extract…

… and discovered it had developed several spots of mold on the surface while sitting on the counter for two months. Crap.

I briefly considered scraping the top layer off and brewing with the rest. That's totally what my European ancestors would've done, right? It'll be boiled for an hour, and then the hops and later alcohol will keep the micro-organisms at bay, right?

I thought about it, and realized that "Hope there's no mold in here" would be hanging in the back of my head any time I went to drink a beer, and that thought is definitely going to detract from the flavor.

So I called an audible and decided to make a "mostly mead" braggot rather than the half-and-half plan I had. So I started adding honey to the warm malt wort. (If I'd thought about it a little harder I probably would've boiled the red wort first, so we'll see if the small malt flavor is even detectable in the end.) The honey in the bucket has been starting to crystalize, so scooping out five pounds worth was something of an adventure, but it dissolved fairly nicely.

I then cast around the kitchen for other things I could add to the pot which might bring more interest to the brew, since my "nice balance of honey and malt flavors" plan was defunct. I tossed in some freeze-dried ginger bits, not having fresh ginger on hand. And then I realized that maybe I should add some of the hops I'd planned for the original brew and treat this like a red hopped mead. Worth a shot, eh?

So I pitched the yeast, my first attempt at making mead with ale yeast. Then had dinner and took a break.

After regaining sustenance I embarked on Phase II of my kitchen plans for the day: make banana bread with the spent barley grains from the brewing. But this plan was quickly redirected when I discovered that the very-brown bananas on my counter had mold on the bottom. (I'd intended to make banana bread last weekend, but lacked the energy.) I Googled up [spent grain cookies] and found a recipe that looked reasonable. 1.5 cups flour, 1.5 cups spent grain, eggs, (vegan) butter, dried cranberries, chocolate chips, etc.

I got that batter stirred up and then set to smashing up a giant clump of brown sugar in a mortar and pestle. Kelly asked me what I was doing to make all that noise. She then Googled ways to de-clump brown sugar, so we talked for a minute. I then returned to the kitchen, noticed the oven was heated, and put cookies on the sheets.

While cleaning up I realized that the sugar was still in the mortar. Crap. I'd gotten distracted by the conversation and forgotten that I hadn't finished the batter. So I sprinkled some sugar on the half-baked cookies in the hopes that they wouldn't be totally inedible. But damn, this wasn't a good day for culinary execution.

The cookies taste alright, though I need to find a way to remove the husks from spent grain before I cook with it. It's tasty, but the dry and pokey grain skins are a big distraction.

And the wort tastes alright. It's hard to go wrong with honey water :-) I think the hops was a good move, but so far it really doesn't taste like malt. Maybe I'll make two gallons of barley wort when I transfer this to secondary and go from a 3 gallon hop mead to a 5 gallon full braggot? Or maybe I'll just craft a new braggot recipe and compare the malt level influence.

Given today's adventure, my next brewing project is starting to look a little quixotic. Another Yeast Herders challenge is to use pear, so I got a big can of pear puree a couple months ago, then discovered it seemed to be leaking, but it stopped. Is the can spoiled? Or can I combine it with ~9 pounds of crystalized honey to make something semi-palatable? Tune in next time for "My sobering kitchen."

This entry was originally posted at – comment over there.

Trevor baby stare

LiveJournal Crossposts Fixed

I just noticed that crossposts from my Dreamwidth account to LiveJournal (hey, remember LiveJournal?) were broken for the last year. I think LiveJournal forced a password reset (half a year after someone blew me off on a support ticket when I suggested they'd suffered an account breach) and I forgot to update it on the Dreamwidth crossposting side.

That's fixed now, and I've triggered a crosspost for everything I read in the last year. If that all showed up in your LJ friends page at once, apologies for the mess. (And also, why haven't you migrated to Dreamwidth yet?)

So, uh, in the last year:
  • I was having trouble sleeping and tried to take a relaxing vacation to Jamaica, but couldn't sleep there either.
  • Dealt with some exciting water-related homeowner problems.
  • Got some medical interventions that helped with sleep and inflammation.
  • Took my parents to Iceland to celebrate their 50th wedding anniversary.
  • Lobbied Congress to pass climate change legislation.
  • Delivered a stand-up comedy bit about passing a climate change bill through Congress.
  • Gave a talk at Ignite Boulder 40 about turning organizational charts upside down.
  • Recognized that I'd just been in go-mode for two months straight, and decided to spend the winter holiday season sitting around organizing digital photos.
  • Spent January and February feeling burned out and introspective.
  • Got periodontal surgery that I'd been putting off for most of a decade.
  • Oh hey, it's a global pandemic! Time to work from home, have video conferences, chill out, go for a walk every day, clean up the garden, and do those things I wouldn't normally get around to, like write a vim plugin and read the appendices to Lord of the Rings that I apparently skipped at age 15.

This entry was originally posted at – comment over there.

Trevor baby stare

conjoin: A Vim Plugin for Continuation Characters

As an avowed introvert, I took the opportunity of the new fewer-social-commitment world of coronavirus stay-home orders to do some fun programming on personal projects, like my Elizabethan curse generator. While working on bash and Tcl implementations I discovered that vim, my favorite text editor, did not automatically remove line continuation characters when performing a join command. In my case, I had copied an array of quoted strings from Python into a shell script, which doesn't need quoted strings, and wanted to realign the declaration to fit nicely in 80 columns, like so:
noun=(apple-john baggage barnacle bladder boar-pig bugbear bum-bailey \
canker-blossom clack-dish clotpole coxcomb codpiece crutch cutpurse \
death-token dewberry dogfish egg-shell flap-dragon flax-wench flirt-gill \
foot-licker fustilarian giglet gudgeon gull-catcher haggard harpy hedge-pig \
hempseed horn-beast hugger-mugger jack-a-nape jolthead lewdster lout \
maggot-pie malignancy malkin malt-worm mammet manikin measle minimus minnow \
miscreant moldwarp mumble-news nut-hook pantaloon pigeon-egg pignut puttock \
pumpion rabbit-sucker rampallion ratsbane remnant rudesby ruffian scantling \
scullion scut skainsmate snipe strumpet varlot vassal waterfly whey-face \
whipster wagtail younker)
Unfortunately, the J command in vim leaves those trailing backslashes (which mean "the command keeps going on the next line") in the middle of the combined line. After a bunch of Googling, I determined that there wasn't a vim setting to do so, and nobody had written a plugin for it either.

So of course I decided that extra home-bound free time meant it was time to learn how to write a vim plugin so that I could change the behavior of the line-joining commands. A couple coworkers mentioned that such a plugin would be even more useful if it could merge strings when joining as well (resulting in "lorem ipsum" rather than "lorem " + "ipsum"). This in turn provided a great excuse to geek out on programming language details on Wikipedia, Rosetta Code and And thus was born vim-conjoin, a plugin that remaps J, gJ, and :Join to handle continuation breaks and string concatenation.

This exercise was absolutely a violation of XKCD's Is It Worth the Time graph: I spent the better part of two weekends, plus a few evenings, implementing and testing this plugin (mostly testing). It will, in my lifetime, perhaps save me an hour of work. So hopefully other vim users find it useful, too.

As with any personal programming project, the time wasn't entirely wasted, of course. The next time I want to write a vim plugin I'll have a much better idea of what I'm doing. And I learned more in a couple weeks about vim than I've learned in most individual years in the last two and a half decades I've used the editor. (Though it's going to take me awhile to remember to put call before function invocations and I'm forever forgetting the l: and a: prefixes on local and argument variables.) And the Wikipedia adventures led me to finally read up on INTERCAL a famously obtuse parody language, and LOLCODE, a lolcat-inspired esoteric programming language that I wish I'd heard about in 2007 when it was announced. (LOLCODE unfortunately seems to have been abandoned; the language author hasn't responded to a 2018 proposal for array (BUKKIT) syntax.) And that gave me an idea for an esoteric language of my own that I hope to work out during the remainder of quarantine time…

You do you. And make sure you've got an unnecessarily polished tool while doing so.

This entry was originally posted at – comment over there.