Honey Day in Dark Mode

Paul R. Potts

15 Dec 2019

Reader Commentary

Last week I wrote:

I think our housemate also assembled the juicer wrong a few months ago, and broke one of the parts.

I heard from a couple of people who thought I meant that our housemate Joy broke the juicer. That was not what I meant to say at all. This happened a few months ago, and Joy wasn’t living with us at the time. I don’t know for sure who broke the juicer. Grace just found it broken one day, and I know our housemate was using it at the time, but it could easily have been one of our inquisitive/destructive children. There were eleven children living here at the time, and at least six or seven of them were capable of reaching things on the counter.

I really intended to bring it up not to criticize our former housemate, but as an example of how I haven’t been able to stay on top of simple things, like fixing the juicer. But because I’m often not as kind, generous, and forgiving as I should be, I couldn’t resist throwing a jab at our former housemate, who I was often angry at, because, again, I’m often not as kind, generous, and forgiving as I should be.

I’m also perpetually angry about how even high-end appliances like these are built to break. (See also: our washing machine and our dryer, both of which needed expensive repairs within two years of purchase, compared to the vintage appliances we had in Saginaw).

And now I’ve probably spent longer writing about the juicer than it would take me to order a replacement part.

Dark Mode

I loathe this time of year. I was looking at my Twitter feed, using the app on my phone. The time turned to 5:37 p.m., the official time of sunset today, and the app switched to dark mode. It had actually been dark outside for some time.

I wouldn’t mind it if I could go to bed about nine and sleep until about nine, and spend the early evenings sipping a hot beverage in a candle-lit room and telling stories to my children. But the world has other demands. This time of year, I rely heavily on my obsessive-compulsive personality disorder to keep me functional and getting things done. So I tend to have two modes: staring blankly into space, and working obsessively. For the first few days this week, I worked fourteen-hour days, obsessively writing and rewriting a piece of code until I had honed to to be as sharp and pointed as I could get it. I wrote on Twitter:

Reading the code I wrote last night at the end of a 14-hour work day and wondering whether it’s great and brilliant, or whether I was having a mild psychotic episode.

And the answer was “a bit of both, really.”

My Mild Psychotic Episode Code

What I was writing was a new implementation of a standard algorithm for Base 64 encoding and decoding. Base 64 encoding is a way of encoding binary data (containing images, sound files, or whatever) in a way that is safe to use in e-mail messages and other formats that only support the old-fashioned ASCII character set. I’m not using it for that purpose, exactly, but as part of my bootloader, to support receiving firmware updates and EEPROM data.

I wanted the data itself to use a restricted character set so that the byte values I use to delimit my data packets can never be found inside the packets themselves. There are different ways to accomplish this; you can use escape characters, or various other techniques, but escape characters means that the length of the data changes depending on the data. In Base 64, it doesn’t change. And the other techniques tend to require more code. Base 64 is quite simple. It also makes it very easy to see the data packets when they are captured in a buffer, or using a logic analyzer, and making it easy to debug things is always a high priority for me.

I looked at some existing open-source implementations, but I didn’t find any of them suitable for inclusion in a small embedded bootloader. So I wrote my own. The process of writing my own serves as a good example of how I work: writing a first draft of the code, and writing tests alongside it, refining it, making some discoveries, revising it, revising the tests, then getting it working in a real application, and revising it, and the tests, yet again.

Going Up the Waterfall

This runs completely counter to the way that programmers were traditionally taught to work. In Ye Olde Days, programming and testing and debugging were very expensive operations, and so left to profesionals, with a lot of ceremony around them. A manager spoke to a programmer analyst, who drafted a specification, then revised the specification, and then handed it off to an implementation programmer, who programmed the specification (and merely writing the program was considered less of an intellectual challenge, and therefore a lower-paid role, than the role of the programmer analyst). Then there might be quality-assurance people involved, and some bug fixes (again, with a lot of ceremony, defect reports, and chains of command). But it is a “waterfall” method: the specification gets chiseled in stone, and then code gets chiseled in stone, and the work flows from high-level to low level. The water doesn’t flow back up.

I only find this method to be actually useful for high-level definition of features and interfaces. And in fact it is actually important, when defining a product, with a set of features. It is also useful as a starting point for defining a module — a stand-alone piece of code, such as a library, like this one. But I’ve come to think of it as not just useless, but destructive to quality, when programmers try to apply it to the process of writing the module itself. After forty years of programming I have come to believe that at a module level, code can benefit from revision, even if it works, just as an essay or short story can work better after revision.

After my long days, and my “mild psychotic episode,” I discovered that I had actually written a new C implementation of the Base 64 algorithm which is, in my view, far simpler and better than any of the existing implementations I was able to find.

Oversharing

Which brings up a big point of frustration. I’d love to share it. But it is work for hire, and so the intellectual property of my employer. This is true of almost everything I’ve written in my career developing software; thirty years. It isn’t open source, although I am considering whether I can negotiate with my employer to allow parts of this code to become open source. Given that it is an implementation of a standard algorithm, I think it’s fine to write an article about it and illustrate some of the thinking behind my implementation, because they are illustrative of C programming techniques in general. So I might do that. I tried to do it in my evenings this week, but I was just too tired.

What I’d really like to do is make parts of the Github project accessible for other programmers, under a very permissive license, because I think they could benefit from being able to read and use this code. I know I would have been quite happy if I had been able to find this implementation, or something like it. It would have saved me a lot of time.

In general, I think I’ve reached a stage in my career where I really feel like it is my job, in a deeper sense than “my current job,” to teach and mentor and work with other programmers instead of in competition with them. I’d love to be teaching, but teaching has become low-wage, high-stress contingency work for the precariat. It’s not so much pride, per se, that makes me want to share this work. I want to be able to talk to other programmers about it.

I’ve learned a lot, more than most programmers know, but I also have more to learn. But in my current workplace I’m the only programmer in my office. I learn by reading things that other practitioners are able to share, these days usually online rather than in books. As the sole developer for our group, I’m personally responsible for an awful lot, and sometimes it feels like a very heavy burden to carry alone. There are other programmers in other business units, but there isn’t a big culture of sharing within the company. Asking programmers to be extraverts is not usually very effective. And unfortunately, in a lot of workplaces, for various reasons, programmers within an organization often come to feel like they need to hoard information and keep their work hidden from each other, because no one wants to be the butt of criticism, and cats don’t like to be herded. But maybe I can at least help to establish some code-sharing within my organization.

So anyway. I may have another short essay soon, describing how I came up with this new implementation, and including some bits of code. A few of you might find that interesting. If you don’t, just skip over it.

Saturday

This morning Joshua and Pippin sang at the mall. Grace took them, and ran into several people she knew. I had planned to go along, but after this past week I was really just not feeling very good. My throat was raw and it felt like I was getting yet another virus. So I stayed home and tried to get some extra sleep.

Malachi’s Honey Day

Today is baby Malachi’s first birthday. We told the kids this, and someone immediately ran and brought him a spoonful of honey. Babies aren’t supposed to eat honey until they are a year old, because in rare cases honey can contain botulism bacteria that their infant immune systems aren’t equipped to deal with. So… “honey day” is our new term for “first birthday!”

Sam was kind enough to bring me some re-heated coffee and so I managed to get up and out of the house a bit later in the day, for Holy Hour at our church. Joshua and Pippin stayed for a while after and wound up getting a round of training on how to be altar servers. So they aren’t on the schedule yet, but early in 2020 they will probably serve at their first Masses.

Farewell to Mother Loaf Breads

After that we drove out to Milan on a sad errand — to say goodbye to Mother Loaf Breads in Milan. They are shutting down business at the end of the year. Mother Loaf is really a two-person operation, run by folks named Stephanie and Jeremiah. Stephanie has a full-time job at the University of Michigan, while I think Jeremiah does this full-time. But unfortunately both of them say they are quite burned out on baking, and need a break. They will probably be making bread for sale again, somewhere, in the near future. But we will really miss going down to Milan on Saturday mornings and bringing back delicious bread. Last week on Twitter I wrote:

Today’s herb and olive focaccia from @MotherloafBread is fantastic… the crust is crispy and chewy like a sesame seed bagel while the inside is soft like a croissant and the tangy oily slightly bitter olives OMG [passes out]

That focaccia was just a sourdough bread with sesame seeds, olive oil, Greek olives, and dill. But Stephanie and Jeremiah have a real gift for making delicious food out of very basic, traditional ingredients, while at the same time always throwing in a little something extra that takes things over the top: a bit of white pepper in a potato-herb focaccia, cardamom in the dough of a roasted fruit bun, or a cider reduction in a glaze. They’re really good at this and we really hope to be able to support their work again in the near future.

Mother Loaf was completely out of bread, but they still had some delicious black bean chili, so we grabbed a couple of containers of chili and sat next door at Milan Coffee Works, where their toilet says “coffee recycling station.” I had already had some re-heated coffee earlier, so I asked for a single shot of espresso. Their espresso is always different, depending on what they have been roasting and grinding recently. This time it was some kind of Brazilian coffee — not citrusy, or winey, but very earthy and quite bitter. To me, it tasted more like a robusto than an arabica. (I have no idea if that is actually true, but that’s what it tasted like to me, and it is possible, as there is some robusto grown in Brazil).

It wasn’t my favorite espresso ever, but I’m always happy to try different types of coffee. This one might work better as part of a blend.

For dinner, Grace made some chicken wings with a delicious sauce, and we had salad. To celebrate Malachi’s birthday, we fed him a chocolate cupcake and raspberry tofu ice cream. So I think he had a pretty good birthday.

Sunday

This morning, to celebrate his first full day as a one-year-old, Malachi peed all over me while I was changing his diaper. That’s something he hasn’t done in a long time, so it was surprising. I guess we needed to wash the sheets anyway… and those clothes. Our little boy is well-hydrated, at least!

I stayed up too late working on the newsletter Saturday night, and did not get the kids to bed at a reasonable hour, and so things weren’t great this morning. We did manage to get the kids to Mass, along with our friend Robert. Afterwards they had coffee and donuts. I got myself only a black coffee. I put a little packet of MCT oil into it (MCT stands for “medium chain triglycerides,” and MCT oil is made from coconut oil as a high-energy, zero-carb food additive). But something rather strange happened. As I was getting the kids into the car, the MCT oil mixed with coffee dissolved a hole in my styrofoam coffee cup. So I got peed on a second time. I’m glad it started leaking while I was still getting into the car and not while I was driving.

Apparently that’s a known problem among paleo enthusiasts, but I had never heard of it. I knew that some kinds of organic solvents like heptane (in gasoline) would rapidly dissolve styrofoam, and I’ve done that as a demonstration. But I didn’t realize that an oil could do it too. Fish oil will do it. Which leads me to wonder all kinds of things: is MCT oil really safe to eat? And is it really safe to serve any foods with oils or fats in them in styrofoam containers at all? A quick look at some poison control web sites indicate that a bit of styrofoam, swallowed, is not considered to be much of a health hazard, as long as one doesn’t choke on it. But still.

After Mass, we went out to the Bomber for a late breakfast at the Bomber. I am trying to reduce the carbs, so I had an omelette with no potatoes and no bread. I’ll probably fast for the rest of the day. Maybe I’ll have some broth this evening. I haven’t really been feeling my best all weekend, so I probably won’t feel like eating anyway.

After our late breakfast, I ran a few errands with Joshua and Pippin, and then had a brief rest at home. And then it was time to take Veronica to youth group. So I’m writing this at the church.

This Week’s Cool Things

I got a copy of Men at Work’s first CD, Business as Usual from an eBay seller. When I order a CD that is actually old — from the eighties — it always arrives in fine shape. When I order a recent pressing, the case is usually badly broken. There’s a simple explanation for this; CD cases used to be much sturdier.

Drop-Testing CD Cases

Kids are really good at breaking CD cases. In fact ours have broken many dozens of them.

It’s hard to find decent replacement cases. So a few months ago I actually ordered a dozen different kinds of replacement CD cases from various suppliers. I put CDs and booklets in them, and then ran them through some real-life tests, along with some old (1980s-era) CDs, and some newer ones. We:

I had CD cases made of the usual somewhat brittle, transparent plastic, as well as some made from a more flexible translucent material. Almost all of them broke in the first drop test. The 1980s-era cases tended to lose their little side tabs, but didn’t break too badly, while the later ones shattered. I was very surprised that the softer, more flexible cases also broke when dropped — those little tabs that hold the cover on just snapped off. The more flexible cases held up better when stepped on, though.

Only one case out of a dozen kinds actually survived all the tests, holding up better than the 1980s-era CD cases, and that one did show some discoloration where the plastic parts flexed. So I’m planning on ordering a hundred of those or more, when money allows, and we will have a little party where we go through the rack of CDs and replace broken cases. I’m not going to tell you the vendor and part number of these CD cases yet, because I’m afraid that by the time I buy more of them, they will have been discontinued, or replaced with a more cheaply-made version; China’s famous “quality fade.” If I actually manage to buy more, and they seem to be as rugged as our sample, then I’ll happily tell you where you can get them and give them my official endorsement, for what it’s worth.

Business as Usual by Men at Work (1982 album)

This is an iconic eighties record. I used to own it on vinyl, and listen to it a lot. I don’t think I’ve heard the whole record for almost thirty-five years, but I found it quite amusing that I could still sing along with every song, and remembered not just the choruses, but most of the verses as well.

It’s a very well-recorded album, and the original mastering for compact disc was nicely done as well. As a result, it is not crying out for a remastering job, although there are remastered versions. But the original sounds bright and clean; Men at Work used very little distortion on the guitars. The saxophones and flutes sound great, too, played by Greg Ham. Apparently seven months of work went into recording the album. That’s a lot! But you can hear the effort they put into it.

The real musical energy that propels most of these songs along is not so much the rhythm section, as it is in the Duran Duran albums I reviewed earlier, although the drumming is just fine. It’s the fun interplay between vocal and saxophone, and occasionally guitars. Ham really works out the saxophone: it’s raspy at times, nasal at times, and sweet and smooth at other times. I know some folks don’t like the sound of a saxophone; it still carries with it a kind of stigma as an instrument of ill repute, something played in sleazy strip clubs, compared to the more reputable horns. But I love the vocal-like expressiveness that a good player can wring from a saxophone.

If you recall this album at all, you probably remember the single “Down Under,” which got a lot of radio play. It’s a silly song, but it has a fun reggae vibe going on. There was an earlier version of the song, released in Australia, the played up the Jamaican sound a lot more; in fact, it sounds almost like it could be a song by The Police, but with an Australian accent. It’s an enjoyable song, but Business as Usual has other moods to offer.

The album opens with Who Can it Be Now?, another fun song with a call-and-response chorus melody that alternates between voice and saxophone. It’s got the same kind of general vibe as Paranoia by The Kinks:

Who can it be knocking at my door?
Go ’way, don’t come ’round here no more
Can’t you see that it’s late at night?
I’m very tired, and I’m not feeling right
All I wish is to be alone
Stay away, don’t you invade my home
Best off if you hang outside
Don’t come in, I’ll only run and hide

Remember how I wrote that saxophone could have a vocal quality? I was talking to Grace about this song and how in the chorus, Hay sings “who can it be now?” and then Ham’s saxophone mimics his vocal phrasing. Grace was startled to realize that in her memory, the chorus had a second voice repeating “who can it be now?” In other words, that vocal quality to the sax was convincing enough that she had remembered it as a voice.

Aside from their musical quality, the first nine songs earn points because they don’t allow the listener to get bored. They are all under 3 minutes and 30 seconds long. They are quick, upbeat, and generally pretty light in mood, with some tasty ear candy. They do the job, and then they are done. Where they are sarcastic, or dark, it’s usually a fun, winking sort of sarcasm. Even when the lyrics bring in bits of Cold War paranoia and a touch of various anxieties, the overall album sounds remarkably optimistic — for the first seven songs, at least. Things change up a bit when we get to the last three tracks. “Touching the Untouchables” seems to be about homelessness, and it takes a little more serious stance, accusing the listener of indifference:

Touching the untouchables but they don’t know
Respect the disrespectable, but in the end you know
You turn away

Next up, “Catch a Star” is a quick song, but it has a minor moodiness to it:

Isolation, rows and rows of cars
Isolation, like Jupiter and Mars
Staring faces, set in celluloid
Welcome to the late show, starring Null and Void

I’m not really sure what that means, but it sounds edgy, especially for 1982. And the phased and echoed guitars on this track are very nice.

The final song, “Down By the Sea” is almost seven minutes long. Compared to the nine quick, poppy songs which preceded it, the long run time makes this one feel luxurious, like the album is doing cool-down stretches. It features a lot of slow, simple, melodic soloing on a clean electric guitar, and a simple vocal line over a drum track, saxophone accents, and a lot of reverb. And it takes its time to actually be evocative of a place and time:

Down by the docks
Live all the silent sea-ships
Crates are stored on blocks
Where now only the rats live

It’s a lovely ending for a lovely album.

I’m not going to claim that most of these songs have any great signficance; they are, for the most part, basic pop songs with bubblegum pop lyrics. The duet-like energy propels them, and the Australian accent and idiom lends them a vague exoticism (in 1982, Australia was pretty exotic to a kid growing up in Pennsylvania). But overall, this recording has held up very well. Just a few years before the release of Business as Usual, Men at Work had recorded a song called Keypunch Operator. It’s interesting to compare that with their work on Business as Usual. In their “Keypunch Operator” stage, they sounded like a fun bar band, some guys you’d love to go see in a small club. But they didn’t sound like they were ready for international stardom, and number one singles, and a Grammy award. How quickly things changed for them! It would be interesting to consider the role that MTV played, as they were one of the bands whose videos were shown constantly in the early days of the channel.

Men at Work did not last, as a band; they released Cargo, which contains their single best song, and one more album, which did not do well at all, and never released another record. The band was the subject of a ludicrous copyright suit, on the basis that Ham’s flute solo in “Down Under” infringed on the old Australian children’s song “Kookaburra.”

The flute part does actually briefly reference the melody of “Kookaburra,” but the copyright owner claimed that Men at Work should pay them “between 40% and 60% of the previous six years of earnings from the song,” which in my view is entirely ridiculous. I sang “Kookaburra” in grade school music classes; I had always thought that it was a traditional song which should be long past the reach of any reasonable copyright claim, just as “Happy Birthday” ought to be. But it wasn’t, and Men at Work were liable; fortunately, the judge expressed the view that a brief riff referencing an old melody wasn’t worth all that much, and awarded the copyright holder just 5%. But unfortunately, Greg Ham, the multi-instrumentalist responsible for all the wonderful saxophone and flute riffs on Business as Usual, as well as keyboard parts, and backing vocals, and the lead vocal on the Devo-esque tune “Helpless Automation,” was found dead in his home in 2012, at the age of 58.

Colin Hay, by the way, is still making music, and some of his songs are sufficiently… well… songs to work quite nicely when performed simply, with just his voice and guitar accompaniment.

In a week or two, when my copy of Cargo shows up, I’ll talk about their second album, which has their single best song.

Star Wars, The Empire Strikes Back, and Return of the Jedi (NPR Radio Dramas, 1981, 1983, and 1996)

A few years ago I found these radio dramas on eBay. I have long been a fan of the original Star Wars films and also a fan of radio drama, so it seemed like something I’d enjoy; I also wanted to use them to introduce the kids to radio drama, using a familiar story. But like many of my books and CDs and DVDs, I never fully made use of them; when I started commuting from Saginaw to Ann Arbor in 2015, I spent half of my time living out of my car. Then I packed up everything when we moved, and much of it has been in boxes ever since, although since I made a careful catalog, if I miss something in particular I can look it up, find the numbered box it is in, and pull it out.

And so I’m listening to these radio dramas.

They use a mix of original cast members and new cast members. Mark Hamill plays Luke Skywalker, and Billy Dee Williams plays Lando Calrissian. Anthony Daniels is C-3PO again. But they didn’t get Carrie Fisher, Alec Guiness, Harrison Ford, or James Earl Jones. Instead we hear Ann Sachs as Leia, Bernard Behrens as Kenobi, Perry King as Solo, and Brock Peters as Vader. They all do pretty decent jobs, but it is initially odd to hear their voices in such familiar parts. But the extensive use of the original score and original sound effects helps make up for it.

The first movie adaptation runs for six hours, considerably longer than the original movie, filling seven compact discs. It originally aired in 1981. There is quite a bit of additional back-story. In particular we hear more scenes with Luke on Tatooine, interacting with his friends, including Biggs, and more scenes leading up to the battle that opens the original Star Wars film, as Leia manages to get the plans for the Death Star and flee from the Imperial fleet. This additional material varies a bit in quality, and since I’m not actually a huge Star Wars nerd, I am unclear on how much of it is now considered “canon.” But overall the adaptation is fun to listen to.

The adaptation of Empire is a bit shorter, at 4 hours and 15 minutes on five compact discs. It originally aired in 1983. We get more interaction between Skywalker and Vader, and more scenes in Cloud City, with additional dialogue between Calrissian and Leia, and there are scenes between Skywalker and Yoda that are longer. It’s disconcerting to hear another actor play Yoda, especially when that actor is John Lithgow. While Sachs and King and Peters play their roles as inspired by the originals, Lithgow seems to insist on doing a Frank Oz impression the whole time. I think this is a mistake, and it would have been better if he had come up with his own voice for Yoda, inspired by Oz’s performance, rather than constantly reminding us of the work of a different, and better, voice actor.

I just started listening to the third part, which is much shorter; it only fills three compact discs. The third part was very late; it wasn’t released until 1996, and I’m not clear whether it was ever actually broadcast on NPR. I’m a bit turned off, right off the bat, because Hamill doesn’t play Skywalker. That’s quite disconcerting, especially after hearing him in the first two adaptations. I’ll finish the third part, out of curiosity, but I can’t really recommend it. Apparently it languished in development hell for a long time, and then:

The audio play’s adapter Brian Daley died only hours after recording had concluded; “additional material” was contributed by John Whitman, who introduced changes required for continuity with the newly developed plan for the prequels, as well as changes identified by the director and cast. The series was dedicated to the memory of Brian Daley.

Daley wrote three Star Wars novels which I read back in the day: Han Solo at Star’s End, Han Solo’s Revenge, and Han Solo and the Lost Legacy. There are lots of Star Wars novels now, but these were some of the first, and are still considered some of the best. I think I’ve still got copies in a box somewhere.

So, that’s a depressing note to end on. But the year, and the decade, are rapidly coming to an end!

About This Newsletter

This content is available for your use under a Creative Commons Attribution-NonCommercial 4.0 International License. If you’d like to help feed my coffee habit, you can leave me a tip via PayPal. Thanks!