Reading List

The most recent articles from a list of feeds I subscribe to.

School Supplies

Somedays I remember that I have a loop pedal.

loop pedal

Those are the best sorts of days.

Somedays that leads to a new song.

A loop pedal is a stack

A loop pedal is a magical device that lets you record in stacked layers. It's almost like editing something in Figma or Sketch, except each layer is the same "shape" as the first or root layer. And by shape here what I actually mean is length.

Like other guitar pedals, a loop pedal lives somewhere between your guitar (the input) and your amp (the output). It receives the input from your instrument and "does stuff" with it, before sending it onwards. For example, maybe you want to add some distortion or flange -- OR BOTH. Your guitar pedals are like the world's simplest data flow pipeline.

Guitar -> Distortion Pedal -> Flanger Pedal -> Chorus Pedal -> Amp

No cycles or braching in this DAG. I mean, maybe there could branching. Or cycles. I bet some guitarists do that, somehow. But that's beyond my pay grade.

Let's go back to our loop pedal and record something.

Imagine that I tap the loop pedal with my foot, play the following, and tap the pedal again.

X X X X X X X X

Each X here might represent one "measure" or "bar" in music theory land, but that's mostly unfamiliar territory for me, too, so instead we can say that we've played the X chord (I wish there was an X chord) 8 times of some fixed duration.

This is now our root layer for our stack.

By default, the pedal will keep "looping" this layer. You can double-tap it to "stop the loop" (maybe you'd do this when you reach a new section of your song, like the chorus).

Otherwise, now it's time to add some more layers. Tap the pedal again and you add the following layer:

X X X X X X X X
  y   y     y y

Maybe y is an awesome solo or something. Then you do it again.

X X X X X X X X
  y   y     y y
z z z z z z z z

Now, this pattern will keep repeating over and over, expanding to the right.

X X X X X X X X X X X X X X X X -->
  y   y     y y   y   y     y y -->
z z z z z z z z z z z z z z z z -->

What happens if you are recording a layer that extends longer than the root layer? Good question. The recording simple wraps around to the beginning of the root layer and you can keep going. However you will notice that you are already hearing what you recorded for this layer, so that can sound strange. Let's show an example.

I'm going to add a layer that just plays ascending notes up the guitar neck (a really crappy solo) and have this layer wrap around.

X X X X X X X X
  y   y     y y
z z z z z z z z
1 2 3 4 5 6 7 8

So far, so good. Why not keep going...

X X X X X X X X
  y   y     y y
z z z z z z z z
1 2 3 4 5 6 7 8
9 10

As you can see, my latest layer wrapped around to the beginning, such that when I played the 9, you would hear the 1 at the same time. This may or may not be what you want to do. I'm guessing.. no. Especially if you're playing some epic Type II guitar solo.

Thus, one of the more common use cases of the loop pedal is to lay down some repeatable groove that you can sing various verses or solo over. Instead of making the "unique" or "changable" a layer in your loop stack, you just keep that off to the side.

Reader beware that my loop pedal is relatively simple. There are other, better, more-intense loop pedals where you can have multiple different loop stacks going at the same time. For example, maybe you've got a loop going for the verses and another separate loop stack for the choruses in your song.

But I appreciate the simplicity of my pedal. The one thing I still haven't figured out is whether or not you can do the pop stack operation on it. The documentation suggests that you can erase the top layer of the stack, but I haven't figured it out yet. For now, I've been living in a push only world, flubs included, which you'll hear in the next section.

School Supplies

Hello, world, this is your premiere of SCHOOL SUPPLIES, the third single off my forthcoming EP: "Greetings From Buttzville, NJ":

The chords, for those interested (looking at you, The Grones) are:

Verse
G Bm Em C

Chorus
D G C

Outro(key change!)
A C#m F#m D

That's right! I pulled off my first key change. Thank you, Taylor Swift "Love Song" for the daily inspiration.

I'll leave the lyrics as an exercise for the reader.

Uncle Mike's Tips for Running a Zoom-Based Open Mic Night

Big thanks to Uncle Mike for organizing our second Zoom family open mic night. He runs a tight ship, mostly trying to prevent me from launching into a Bullet Train to Merlin's Grave medley like at Popestock.

To paraphrase his tips:

  • Each performer gets one song, of "normal song length" (so that means no Tubular Bells)
  • Announce the order in advance
  • Tune up your instrument when you're on deck or in the hole
  • Don't worry about messing up, start over if you need to, this is fun. Music is the best!
  • Change your zoom settings to "Original Sound"

This last one is key. Zoom does some "stuff" to make things sound "good" during boring work meetings that are boring. It's not optimized for fun singalongs that are fun. So, it's pretty much essential to follow these steps when you're singing and strumming over Zoom, unless you're trying to incorporate cosmic waves of hollow nothingness into your jam. Maybe you are?

Oh, you should check out Uncle Mike's music podcast, Tell You What! The Podcast. He interviews young musicians and bands on the run and it's fun and great and keeps you on your toes with new upcoming artists.

As Uncle Mike says, music is the best!

Unexpected, Useless, and Urgent

Or, What RSS Gets Right

Abraham Lincoln once said, "The medium is the message. And San Francisco summers are cold af."

Putting that aside, I've been thinking a lot (uh-oh) about why I like opening up my RSS reader app so much. And I'm not just talking about its looks, even though it's super cute (I'm using the free, open-source, and all-around neato NetNewsWire for my RSS needs).

No, I'm talkin' about them RSS feels.

Why does using opening my RSS inbox feel so much better than typing in gmail.com or tapping the iMessages icon or, heavens forbid, opening up Twitter?

With my sweet-sweet RSS, there's no anxiety. There's no guilt. In our time-tracking Screen Time home screen widget era, there's almost a baccanalian decadance to sifting through an RSS inbox, like watching honey drip from one of those wooden combs in a cereal commercial. Or -- back when we were allowed -- going to the library and reading the newspaper from those weird wooden dowels.

It should go without saying that this feeling does not extend to the other inboxen in my life. And I'd like to understand why -- and see if I can do anything about it.

A framework for messages

Butchering some data pipeline terms, let's define an inbox (e.g. email, social media, text messages, RSS, phone calls) as a sink for messages from various data providers, where these messages wait for human-in-the-loop processing (in this case, you).

O! Ye of little time! How are you meant to evaluate the "importance" of a given message? Let's explore that across two vectors: (1) prior awareness of the message's sender and (2) usefulessness of the message contents.

grid

The sweet-spot is that upper row: useful messages from both "people we know" and "people we don't know." Whereas if you're in the bottom row, you're gonna have a bad time: useless messages are never... useful.

Filtering on sender

The bottom right quadrant is easy to visualize: robo-calls about your non-existent car's expired warranty, social media ads, junk mailers in your meatspace mailbox.

You might think, perhaps, that we can use the "Expected Sender" vs "Unexpected Sender" filter to avoid this quadrant. In fact, this is what Apple allows you to do with the new Silence Unknown Callers feature in iOS 14 (which doesn't actually prevent the calls, but immediately sends unknown calls to the dead-letter queue that is your voicemailbox).

The problem with this blunt approach of dead-letter queueing the right column is that you're going to miss the serendipity of the upper right quadrant: calls from unexpected sources with useful information. Given my recent cancer diagnosis, I've had tons of important, useful calls from unknown numbers every single day, from doctors and the like -- calls that I want to triage quickly. Sending all calls from unknown numbers straight to voicemail would just be yet another inbox to maintain. Worse, I might miss something important in the upper right quadrant.

A lighter touch approach here is to auto-classify your messages into buckets based on sender. Gmail now does this with their "Primary", "Social", and "Promotion" tabs. Everything's still "in your inbox", but now you can usually just "Select all" on that Promotion tab and safely send those messages straight to the netherworld.

The bottom left quadrant is where your unique lifeforce is slowly chipped away, doomscrolling through your high school classmates' life updates or, gasp, political views. Don't get me wrong -- I really enjoy Instagram and it makes me happy to see people I know doing cool, cute stuff. But I know it can get real bad in this quadrant real quick. Unfollowing and/or muting is key here.

Filtering on content

Okay, so, if filtering on sender alone doesn't work, can we use the message contents to figure out if a given message is going to be useful?

We're now talking about pre-processing the messages in our queues.

In the days of future past, you might have employed a staffer to "sort through your office mailbox" to do this. How very Don Draper of you. But in today's era of secure password managers and 2FA, we ideally don't have that many other people in our digital inboxes. The inbox providers are aware of this, and they're starting to provide some tools to help here -- as long as you're okay with them "reading" your messages.

Gmail, for example, has gotten pretty darn good at spam detection. They're "reading your emails" and dropping the bad ones into your "spam folder" dead-letter queue. Maybe, once in a blue moon, they false-positive something that you have to go spelunking into that elephant graveyard to find. But I'm never annoyed by this, because when I see absolute garbage that they've blocked for me day-in and day-out, I'm hashtag grateful again.

This approach, however, isn't possible with all mediums. There's no way to pre-filter on content for an incoming phone-call, for example.

And the tradeoff in pre-filtering on content is, of course, privacy.

If you're down for your inbox provider to "scan" your messages, then they can potentially start to do some smart stuff, like "bubbling up" useful messages or getting rid of bottom row crud.

But, more likely than not, they're also reading them for another purpose.

The cost of free

Many of these inbox platforms are free (e.g. social media, Gmail), and someone's gotta pay to keep that spam algorithm ticking. And that someone is you.

Most ads are squarely in the bottom right quadrant. "Good" ads -- I'm talking about those Instagram candles you keep converting on -- are upper right quadrant. The platforms do their darndest to make sure their ads are as upper-right as possible, but they can't guarantee that. YouTube keeps asking me my age because it's genuinely confused as to why my viewing habits fluctuate between watching someone clean old Apple II and VIC-20 computers and the latest Super Mario 3 speed-runs.

And, c'mon, I'd rather just not ever see ads in the first place.

Okay, tough guy. Are you willing to pay for an ad-free inbox then?

Maybe? Ugh. Yes, there's a bunch of new players in the space who are emphasizing privacy and going ad-free. But am I going to willingly add yet another recurring subscription to my life? The Mandalorian is about to come back, and I'm already bracing for the impending Disney+ subscription.

I'll come back to this, because our analysis is still missing two important features.

A framework for inboxen

So, far we've only explored the features of an individual message -- not the nature of an inbox itself.

Regardless of an individual message's usefuless or your prior awareness of its sender, an inbox has two other important features that contribute to our mental well-being: (1) typical message volume and (2) expected urgency of triage.

inbox

The message volume thing is straightforward. Some platforms have a never-ending feed of messages that you can "enjoy," others not so much.

At the same time, each inbox medium connotes a inherent sense of urgency. The medium is the madness, if you will. No matter what the message says or who sends it, there's a differentiated inbox-level "urgency punch" to your lizard brain whenever any single message (spam or not) comes flying in.

Let's be more specific with some typical inboxes in our lives:

inbox overlay

Phone calls are just about as "urgent" as it gets. Prior to iOS 14, phone calls used to interrupt whatever you were doing, taking up your iPhone's entire screen real estate. Doesn't get more urgent-y than that! Luckily, calls are relatively sparse compared to text messages, which you still need to respond to, but you can "put them on ice" for days at a time with a high-degree of cultural acceptance.

Social media messages are legion in terms of volume. And, while they're not especially urgent from an innate message-level perspective, the platforms do their darndest to "notify" you of "engagement opportunities" to keep you locked-in, so these inboxes fall in the semi-urgent category in my book.

Onto RSS -- my beautiful, dark, twisted RSS. There's truly zero urgency here and relatively few messages (writing blog posts is time-consuming!). Moreover, returning to our message evaluation framework, an RSS inbox only contains messages from known senders, since you've explicitly had to add their RSS feeds to your feed-roll. And, since you've likely done that because you expect to value the contents of their messages, you're likely living in the upper left quadrant in RSS-land, enjoying that drizzled honey and those weird-newspaper rolls.

Email is the real challenge-tunity here.

Stuck in the Middle With You

Email is caught in the middle of all these features, both message-level and inbox-level. Anyone can email you at any time with any message, so there's a ton of it, and any message may be useful and/or urgent. That's mostly a good thing, and probably our RFC-writing forerunners wanted it that way.

Thus, we check our email, prodigiously, every single day. All day long. While we're pooping, while we're Zooming, while we're doing any old thing.

Perhaps this is a lens on why newsletters are making a comeback. Email readers are a "captive audience," because we cannot avoid triaging our email inboxes. As long as publishers keep their newsletters top-row-level useful, we'll keep Substacking them. Certainly, the chances of me reading an email newsletter are greater than they would be if I had to visit individual blogs. However, I think my ideal for premium content would be paid RSS feeds, rather than email newsletters, because I want to keep my email inbox clean as possible to aid in my triaging. In fact, this is what many podcasts are now doing (since podcasts are just noisy RSS feeds).

OK, enough about content-monetization (have I mentioned I have a free newsletter below?). How can we make our email inbox feel better? Is it possible to make email feel as good as RSS?

First, we should establish principles-slash-goals for each quadrant in our Conjoined Box of Message Success:

message actions

How might we think about upholding these principles in our email inboxes?

  • Upper-left: We never want to miss useful emails from people we know. None of our remediation tactics for the bottom row should impact our ability to "avoid missing" these. Got it?

  • Upper-right: This quadrant is kind of a nice-to-have for email. We aren't necessarily "looking" for new emails on a daily basis, but we also don't want to miss that awesome job-opportunity email. We need some way of pre-processing the contents or other features of the email (sender email address, subject line, etc) to bubble these up somehow.

  • Bottom-right: Spam filtering takes the prize here, but that's just table-stakes now. I think that the pre-categorization work of Gmail into Promotions and Social is really helpful, as is the ability to easily unsubscribe from ad-like emails. But the in-line ads of Gmail increase visual thrash, so it's a bit all over the place.

  • Bottom-left: This is less-relevant for email, since we've culturally moved these communications over to Facebook and the like.

Hmm, after reviewing message characteristics, email actually seems semi-okay. Most people can easily tell whether an email is going to be useful or not, provided that they take a second to glance it. The problem, then, is volume. Are we going to ensure that we glance at the most useful emails within their respective windows of urgency?

The medium is the madness

Maybe we need a faster way to just chug through emails. Power gmail users can't live without their keyboard shortcuts, for example. Or maybe we need better filtering-out of spam-like emails from our favorite clothing providers. Or maybe we need a way to remind us to triage a high-likelihood, potentially-useful email later.

Add up enough of these, and we're building a better imbox. I mean inbox. I do like the idea that companies like Superhuman and Basecamp are innovating in email to try to block and tackle against the useless and steer us towards the useful. I personally haven't made the jump yet. I'm slightly stuck in my Gmail ways now, and I do think that, with a bit more fiddly-work, I can set up my Gmail to reproduce a lot of the most impactful features of Superhuman or hey.com.

I've certainly missed some features in this analysis. But I'm trying to apply these frameworks not just to email, but to all forms on inboxes in my life that require my human-in-the-loop intervention. Something's gotta give, or this is just going to become our full-time job. Cue Slack-message sound.

Email me if you have any other ideas for inbox sanity! Just kidding - send a Tweet, for the love of all things electronic.

The Peep-Hole

Two weeks ago I woke up at 5 AM on the dot and had this entire creepy dream in my head. I went to the bathroom and scribbled it down while sitting on the toilet before I could forget it.

It being October and all, I thought I'd share this scary story...

yeasayer

Image source: the awesome Yeasayer music video for their song Ambling Alp

The Peep-Hole

There was peace in the village of Ghir, thanks to the Peep-Hole.

It had been this way for as long as anyone could remember.

"It's better than a thousand kings," said one shop-keeper.

"We're blessed to have the wisdom of our elders at our finger-tips," said another.

Any dispute, conflict, or argument could be brought to the Peep-Hole in the village center. No case or trial would be needed. The Peep-Hole had already seen and heard everything. A voice from the Peep-Hole would utter the Truth, and the matter resolved.

Ori had prepared his whole life to become a Watcher. To be one of the Watchers of the Peep-Hole was Ghir's greatest honor. Only the purest-of-heart and strongest-of-mind were chosen, and only once ever six years.

When Ori was six years old, his mother Cera was Chosen. It was the best day of Ori's life. The honor bestowed upon him was immense. He pledged that day to become a Watcher himself. He would join the Peep-Hole as the youngest Watcher ever, as soon as he came of age.

Everyone in town believed in Ori and thought he would be Chosen.

On the morning of the ritual, Ori woke up and asked the Peep-Hole in his hut for the weather.

"CLEAR AND CALM. LOW TO MID 70'S," replied the Peep-Hole.

Every hut in Ghir had access to the Peep-Hole. Its tubes stretched and tunneled from the village center into their homes. Any question, private or not, could be asked and would be answered by the Peep-Hole.

"Peep-Hole, what does it take to be Chosen as Watcher?" asked Ori.

"ONE MUST BE PURE-OF-HEART, STRONG-OF-MIND, AND BE OF-AGE TO BE CHOSEN."

Ori had heard these words thousands of times before.

"Peep-Hole, will I be Chosen as Watcher today?"

But the Peep-Hole was silent. Fear crept into Ori's heart. He tasted a cold sour in his teeth. Perhaps the ritual has already begun, he worried. Ori put on his finest clothes and raced to the village center.

The entire village of Ghir had already assembled. Ori was late, and the villagers glared at him. Ori took his place in the circle around the Peep-Hole.

The Peep-Hole gurgled and pulsed like liquid mercury. Its tubes flexed like the pulled off limbs of daddy-long-longs. Ori had seen the ritual twice before. He knew that the Peep-Hole would agigate and then announce a name.

"SREN"

The village gasped. Ori felt to the dirt.

A forlorn, meek boy stepped forward. Sren was a farmer's son. He was quiet and unassuming, and, like Ori, had just turned eighteen.

The village watched silently as Sren walked into the rippling quicksilver and disappeared. Before he was gone, he screamed.

Everyone screamed when they entered the Peep-Hole. No one knew why.

The villagers dispersed, but Ori remained. Fig, a younger girl of thirteen, came over to him.

"It's okay, Ori. There's always next ritual."

Ori glanced at her. He heard no kindness in her words. He only saw her as a potential rival.

When he returned home that night, Ori tried using the Peep-Hole again. But it refused to answer him.

Am I being exiled, he wondered. Being cut off from the Peep-Hole was an unimaginable exile. Worse than death.

And Ori wanted to die.

He wandered the village late that night, watching and listening to his fellow villages consult with the Peep-Hole from their fire-lit huts. He went to the town center and spat at the Peep-Hole. His spit fizzled on the liquid metal and evaporated. Ori sat down. He watched the Peep-Hole, watched it shimmer and and pulse. He wondered then, for the first time, where the Peep-Hole had come from. He fell asleep.

His sleep was dreamless, but Ori woke with a new clarity. Last night was the first night ever that he slept somewhere else, other than his hut. Somewhere far from his hut's Peep-Hole tube.

Ori felt powerful and confident.

Later that morning, he called the villagers back to the town center.

"Give it up, Ori," they grumbled.

"You weren't Chosen," they called.

But then they saw what he had done.

Pyres of wood had been stacked around the heptagonal Peep-Hole.

"People of Ghir," said Ori. "For too long we have been under a spell. Today I break that spell. People over Peep-hole!"

All the while, the Peep-Hole was gurgling uncontrollably behind him.

Ori lit a match and threw it into the pyre. Flames encircled the Peep-Hole. The quicksilver melted and slid to the ground, revealing a skeletal structure within.

Screams erupted from the crowd. Everyone vomited. Ori turned his head from the crowd to the Peep-Hole and collapsed again to the dirt, throwing up everywhere.

Inside the Peep-Hole were the Watchers. Or what was left of them. A pale, sickly blob pulsed and writhed from within the geodesic cage. Arms and legs and heads stuck out in all directions from the creature.

Ori couldn't stand the sight -- or smell -- of it burning, so he doused the fires. As the temperature cooled, the mercury reformed around the structure.

"Go," said Ori to the Peep-Hole. "Go and never return. We will lead ourselves."

The Peep-Hole thrummed loudly. It began to move, slowly, snapping off its tube arms one by one. The Peep-Hole slid out of the village center, towards the mountains. Ori watched it disappear into the forests.

The people of Ghir cheered Ori, naming him Hero.

For a while, all was well in the village. But then the disputes resumed. Ori wanted the villagers to settle things themselves, rationally, but he saw that they could not. He tried making rules for them to follow, but the people always found ways to re-interpret his words.

The Hero set up a trial system. The people came before him to argue their case, and Ori did his best to settle their disputes.

But soon the people became clever. They spun their words. Truths became indistinguishable from lies. Lies, truths. It was harder and harder for the Hero to resolve the matters of the village.

More than once as he stood in the town center, Ori caught a glimmer of silver in the corner of his eye, far away on the mountain-tops.

It became too much for the Hero. That day, the people came to the town center and didn't find Ori.

"He's abandoned us, too."

For many days, the villagers retreated to their huts and waited.

Then, one morning, the tubes in their huts were lit. They walked to the town-center.

The Peep-Hole had returned.

Ori was never seen again.

Notes on My Colon Cancer

The giant robot looks like a WED Treadwell, my favorite robot of all the Star Wars droids. I admit, I was worried that it would look organic, like a Sentinel from The Matrix, with wriggling Dr. Octopus arms and pinchy pincers that pinch. But I'm calmed by the robot's EVE-like exterior.

The room is sterile. A dozen masked, gloved attendants in blue buzz. I imagine I'm an astronaut about to step into the rocketship capsule.

Except I won't be going anywhere on this particular journey, unless something goes very, very wrong. In fact, I've already been asked repeatedly by various staffers to describe what I'm expecting to happen in this room over the next few hours:

"I'm here to remove my sigmoid colon via robotic surgery because of the cancerous tumor inside."

I'm 34 years old. It's October 12th, 2020. Five weeks ago I was diagnosed with colon cancer.

Stool, bloody stool

I've always been a standing wiper. Not sure entirely why. I must have once, accidentally, touched a load of poo during a seated wipe. That sort of thing can change a person.

This charming anecdote does factor into our story, because it means I've always had a pretty good sense for my poo. Consistency, quality, and color, both in the bowl and on the TP. Did you know, there's even a seven-stage scientific classification system for your poo, called the Bristol stool scale?!

Bristol stool scale

I first noticed blood two or three years ago. On a monthly or so cadence, I'd wipe and notice a reddish tinge. Not bright red, more like muddy-red. Poopy-red. Initially, I thought little of it. Just a minor curiousity. It certainly didn't happen every time. Still, I decided to check off the Blood in stool box on the forms at my annual physical with my primary care doctor that year.

A brief aside on the phrase "your primary care doctor." Like in Forgetting Sarah Marshall, the last doctor I really thought of as "my doctor" was my pediatrician. Since "becoming an adult", I've lived in three cities in two countries, which means that I've generally had no idea who my primary care doctor is or was, only that I'd need to find one to give me a referral to get this wart on my foot removed.

Firetruck

Anyway, this season's Dr. Who told me not to worry about the blood. "It's probably hemorrhoids."

WTF is a hemorrhoid? I wondered to myself as I said to him, "Sounds good." Googled it after, and I learned that it's a vein that pokes out a little in your butt and doesn't really want to be poking out a little, so it bleeds. Seems like a thing that can happen, so I more or less returned to regularly scheduled programming and just dealt with the occasional poopy-red wipe. This doc also said I probably don't need to come for a physical for a few years, that annual physicals are a myth, dry land in a water world.

Fast-forward to 2020. Everything sucks. And the bloody wipes are making a resurgence. Because, of course, they are. About four months ago I noticed that my first poop of the day (I usually go 2x) would have this purple-red streak embedded in it, like a racing stripe from hell. And it would happen almost without fail every single morning. That just didn't seem right, no matter what Doctors of Physicals Past told me. And then one morning I felt like I had actual blood dripping from my butt.

Now I consider myself to be a mostly healthy person. I eat fairly well (even though I enjoy the occasional sourdough loaf and hazy IPA), I run and bike and hike regularly, I ran an IRONMAN in 2016 and a few ultramarathons since. I also don't like being sick (who does?). But, like with most things in my life, I want to be "good" at health. An ideal dental appointment for me would go something like this, "Wow, Charlie, these are the straightest, whitest teeth we've ever seen. We'd like you to come in and be the model for our Instagram ads and also be our 3D teeth model for dentures. Congratulations. Here's two free toothbrushes. You also never need to floss again."

Anything that deviates from that ideal makes me squirm and I do think I can fix anything. For what it's worth I still believe that, if I ever encounter a blue flower on a mountain-top, I'm only a few months of mystical training away from becoming Batman. I already have the cape (it's actually a Harry Potter robe, but, hey, I'm scrappy).

At the same time, I counterweight this with a mild touch of hypochondria. I'll see the poison oak in the mistletoe, so to speak. In this case it was a gift. I googled again for stool, bloody stool and the dreaded colon cancer came back. Last time, I averted my eyes from these search results. But the bloody racing stripes weren't going away. I needed to get myself checked out.

Then I remembered an email from work: I was eligible for a OneMedical membership. I knew there was hype about OneMedical, certainly I've seen the billboards, but I still wasn't exactly sure what they were all about. It had been a few years since my last physical, as you know, so I was primary-care-less, with a bloody problem on my hands. I downloaded the OneMedical app, uploaded a photo of my insurance card, beep-boop, and I've got an appointment with a new doc in a few days in one of their nearby clinics. Already, I loved the experience - I could text my questions any time (see foot wart above). I'd describe OneMedical as a network of clinics with an app for scheduling appointments and texting with a doc. Sure, ZocDoc kinda does the scheduling thing, but Zocdoc feels like you're sifting through the classifieds. Gimme some non-user-generated-ratings-based curation, please.

So, I met with the doc, liked him a lot, discussed my bloody poops, and sheepishly asked if he'd be my new primary care. He agreed, and he also referred me to UCSF for a colonoscopy. Sure, I'm young, and it's probably hemorrhoids, we agreed, but it's the only way to be sure.

After some jiggling about with the referral documentation, we finally get the colonoscopy scheduled for a few weeks later on Sept 9th.

Then, on August 28th, Chadwick Boseman died of complications from colon cancer.

I wasn't freaked out. Okay, yes, I was very freaked out.

Colonoscopies are not bad

What's a colonoscopy? It's a surgical procedure where the doctor goes all the way up your butt to see what's going on in there. You are completely knocked out, so you feel nothing. The only thing you need to do is what we in the business like to call "bowel prep."

Allow me to describe bowel prep: the day before the procedure, you will poop your ever-living guts out for a few hours until you are clean-as-a-whistle, stem to stern. They'll give you a prescription for a gigantic jug of clear laxatives that you'll drink every 15 minutes or so for a few hours. In today's toilet-paper hoarding economy, I'd make sure that you are stocked up, because this gets messy.

Other then the laxatives, you're allowed to drink clear liquids - which is confusing because you can enjoy such clear liquids as black coffee, Gatorade, broth, even green jello.

But that's it. Easy. I watched Stranger Things season 3 again during my bowel prep day. Might not have been the best choice, as I intermittently had to pause Netflix to contribute my own liquified form of the Mind-Flayer, but it got the job done, and I cried my way thru Dustin and Suzie's hymn to childhood, again, as expected.

Okay, next, I woke up on September 9th. My appointment is around 2 PM. Normal day, right?

sf

Nope.

I decide to walk over to the UCSF Parnassus building in the creepy Mars firelight, imagining I'm the last man on Earth (and hoping I don't step on my reading glasses). Carly makes a plan to pick me up in a few hours in our car.

As expected, the procedure was painless. My only bit of further colonoscopy advice here is to ALWAYS bring a book with you, to every single medical appointment you have, because there's always going to be some sort of delay or waiting room.

An hour or so later, I woke up feeling the feels of that post-anesthesia giddiness. Except no one else was happy. Carly was in the room, a surprise to me. And my doctor looked quite serious.

In addition to two small polyps (which she removed), my colonoscopy surgeon found a tumor in my sigmoid colon. At this point, I don't know a sigmoid colon from a semi-colon, but I knew it wasn't good news. Go 2020!

Despite the odds (my youth, my health), I now had cancer. Well, I probably had it for awhile, but we just found out I had it.

My doc said I'd need to meet with UCSF's colorectal surgery team, and I'd also need to get CT scans ("cat scans") to see if the cancer had spread anywhere else in my body.

And so began one of the worst weeks of our lives.

A brief family history

Let's talk about the odds for a moment.

odds

We've already discussed my vigorous, proto-Batman level of health. And how I'm a fresh-faced, occasionally-bearded, 34 year old with the heart of a child and the strength of a chimpanzee (no, that's a humanzee).

Speaking of unfortunate genetics, it turns out that I have some family history of colon cancer.

Here's the scoop: my pops (that's cool talk for Dad) has had benign (non-cancerous) polyps in his previous colonoscopies. What's a poylp? It's a little growth thingy in your colon that may evolve into a tumor. Just like how a Charmander becomes a Charmeleon, polyps can grow bigger and more serious with more destructive power. Polyps are usually just snipped out during your colonoscopy and sent off for pathology (aka to see if they have cancer in them). Most do not. This is the case with my dad's polyp experience. Even though none of his have been cancerous, he still needs to go in for colonoscopies more regularly than those who don't have polyps.

My own tumor began as a lowly polyp, perhaps some ten years ago. We don't know exactly. But if I'd had a colonoscopy ten years ago, or five years ago, they might have seen it and snipped it out and you wouldn't be reading this.

If you go further up the Harrington tree, you'll learn that my dad's aunt (my father's mother's sister) died of colon cancer in her early 60s. And his other aunt (same side, same family) died of colon cancer in her 80s. Two factoids that I had no idea about until I asked my parents for their help filling out one of the many UCSF cancer history surveys. Also, on my mom's side, my grandfather's mother (my great-grandmother, who I never met) probably had colon cancer.

So, colon cancer is bouncing around in my family tree. But neither of my parents have it, and none of my grandparents had it, which I suppose is good. That said, I learned that my grandparents did have other sorts of cancers.

Getting confusing, right? I cannot stress this enough: Learn your family's medical history and write it down in a note on your phone. You'll be asked for this info 10,000 times before every single appointment. But, more importantly, your family history can be a signal to you and your docs whether are "higher-risk" for certain conditions.

I just didn't know about any of this. I knew there were some heart attacks in there, but not really about any of the cancer stuff. Ideally, each person would be given some sort of family history report when they're born or when they turn 18 or when they get their first Nintendo.

But that's just it. You don't get health info automatically. There's no one, other than you, to own your medical health story. You must become your own health advocate. Spoiler alert, but this is the number one lesson I learned during this entire cancer experience. Health literacy is just as important as financial literary or literacy literacy.

There are tools to help, and I'm still digging into them now. I'm much more excited now by the Apple Health stuff on iOS. I'm hoping it can become some sort of private, secure repository for my health data that I carry with me. For example, how many of you, dear readers, know your blood type? There's all sorts of little info-nuggets that you can track down NOW to pay-it-forward for FUTURE you. Cause, ain't nobody else gonna. It's like a scavenger hunt. Okay, enough proselytizing, dude.

Stage-wise limbo

Back to our story, we've just learned that I have a cancerous tumor up my butt and we've also filled out a few frightening family history reports. This is where UCSF kicks it into high gear (and, my goodness, do I love UCSF? Yes, yes I do. They are absolutely, amazingly wonderful, competent, and life-changing!).

I'm now starting to get booked for all sorts of appointments, starting with the ones previously mentioned: (1) CT scans of my abdomen and chest and (2) then the consult with the colorectal surgeon.

Because, as I later learned from my colorectal surgeon (who is the best!), when colon cancer spreads, it usually does the evolution thing from cancerous polyp (Stage 1) into tumor (Stage 2). After that, it can break through the wall of the colon into the nearby lymph nodes (Stage 3). Finally, it becomes (Stage 4) if it spreads to other organs, the first often being the liver and the lungs. At least, this is how I understand the various stages. I'm sure I'm missing some technical details and nuance. When reading about Chadwick Boseman, you'll learn that he was initially diagnosed with Stage 3 colon cancer in 2016, which eventually became Stage 4. In sum, you want your stage to be as low as possible.

At this point, pre-CT scan, Carly and I have no idea what stage I'm at. Well, we do know that I'm somewhere from 2 - 4. These appointments are going to help us understand where I'm at. Specifically, the CT scans will tell us if I'm Stage 4 or not.

Carly and I are in a daze for most of the next week. And so are our parents and our siblings. I honestly can't remember how many friends we told at this point, I know a few, but not that many. I didn't know what to say or feel.

Much like the South Park lament "The Simpsons did it!", there's usually an xkcd for whatever you're feeling or thinking:

emotions

As a wannabe stoic, I allow my negative visualization to run rampant. I'm thinking of the possibility that I've got only a few years (months?) left to live.

My CT scans are scheduled for Thursday afternoon and the meeting with the surgeon is Friday morning. Between then and now, we have the horrible Internet to do horrible searches and we have the two-page summary printout of my colonoscopy, replete with some terrifying photos of the tumor. The tumor looks like a cross between a tadpole and an eyeball (two things that I'd normally love). I don't like looking at this picture, at all, but the two-page summary somehow keeps traveling around our house, and no matter where I look, I see the pink tadpole eye staring back at me, and I wonder, "Are you my death sentence?"

The sound of silence

On Thursday, Carly and I walk over to the UCSF CT scanning place. It's slightly less hostile to human life outside today, so that's nice. After checking in with the front desk, I quickly pass through the first waiting room into the second waiting room. There's always a second waiting room.

It's here I realize that the sound of a major health issue is rapidly opening and shutting hospital doors. I scribble this pithy witicism into the back cover of my paperback copy of Flow and wait my turn with the CT machine. I'm given two bottles of "contrast" provided by reknowned-drink-maker General Electric to drink. These iodine cocktails will help the machine see my inside stuff. They taste like you're drinking printer ink. They're not that bad at all. Everyone else in here is at least fifty years old. I decide to do a five minute wall-sit to prove my vigor. Finally, I'm called back to the machine.

The CT machine looks like a coldsleep chamber crossed with a Weyland Corporation interdimensional portal. It's over in less than a minute.

Plan of attack

The scans are done and now it's up to the radiologist to read them. I'm sure some neat TensorFlow or PyTorch deep learning computer vision model could help here, but I don't have access to the dataset.

The next morning we drive over to the UCSF Center for Colorectal Surgery. It's in the beautiful ghost town of the greater Chase Center-Mission Bay area. I look up at the sun before heading in, thinking, "The next time I see you, ball of gas burning billions of miles away (quoth Pumbaa), we'll know the CT results and we'll know the plan."

When I see the sun again, we do.

The CT scans were clean. There's no sign that the cancer spread to other organs, ruling out Stage 4. This is the best news ever.

The second best news we hear is that the tumor is in a relatively excellent spot for surgery. After an impromptu rectal exam that morning (hello!) to make sure there was no cancer in the rectum, my surgeon gives us an overview of the situation and a plan of attack.

He's going to remove my entire sigmoid colon (which is about a foot long), and then simply reattach the rectum to the rest of the colon. And he's going to do this all via "robotic surgery" (using the WED Treadwell-like da Vinci Surgical System), so the scars will be teeny and the recovery much easier.

We'll only be able to tell if I'm Stage 2 or Stage 3 post-surgery. He's planning to remove the nearby lymph nodes and a pathology report will tell us if they're cancerous. If they're positive, it's Stage 3.

But, either way, we're getting this thing out of my butt, pronto.

Carly and I have a plan. We're planners. We needed this. A bit of our haze is lifted as we head into our next agenda item.

Gettin' hitched

We got married (eloped, both technically and social-distanced-ly) on Sept. 30th!

wedding

Look at those oblivious smiles. Wait -- we aren't oblivious, I have cancer. We just love eachother.

Originally slated for 2019, then after bouncing around in 2020, our cute elopement threaded a very small needle with a teeny ceremony and it was beautiful and wonderful and just what we hoped for.

Now, onto our first act as a married couple: my surgery on Monday, Oct 12th (and another round of bowel prep the day before).

Surgery ain't no joke

I don't have much to add about the surgery itself. I was there. But I don't remember anything. Thank goodness. I also haven't yet watched any YouTubes of how the da Vinci robot works. I didn't want to know before the surgery, and I'm not quite ready now to see it.

I did remember to bring a book, though:

book

And, then, after glimpsing my many-limbed robotic friend in the surgery room, it's lights out.

The next thing I know it's five hours later and I'm in a hospital bed and calling Carly to give her my room number. The nurses in the recovery area are amazing. I'm hooked up to an IV and they're monitoring my "ins" and my "outs" (my foods and my pees and poops). They do this every four hours, so you're not exactly going to get a perfect night's sleep here, but it's great to know that they're paying good attention to you.

The big goal for me for the next 24 hours is to walk around. Being the Big Hero 6 that I am, I try to walk at 9 PM on the day of my surgery (which concluded around 6 PM), and I stand up, but my heart starts racing, so I slowly plop back into bed. Then, at midnight, my nurse helps my try again, and I do it. I shuffle around the hallway like a zombie, wheeling along my IV stand. It's a huge win. I end up walking six more times that day, between many Breath of the Wild sessions and most of The Umbrella Academy Season 2.

Sure, my guts feel like someone took a blender to them, but I'm in great spirits, with incredible support from the UCSF team, Carly, and my mom.

Side note that IVs are interesting. They're like open ports into your body, allowing the medical team to either remove or add fluids. I didn't expect that they'd just keep these ports open during your hospital stay, but they do. I guess that makes sense.

port

Another secret weapon of mine that aided in my recovery: this cute avocado buddy that my sister and her boyfriend sent me:

avo

I'm squeezing this thing every time I'm jabbed with a needle (many, many times), using it as a pillow, and just loving it, cause it's so cute.

On Wednesday, after I've started farting and pooping again (great signs!), I'm sent home early.

The future

I'm home and moving slow and still feel a bunch of surgical pain in my tummy, but overall feel so happy about my progress. I have some cool scars, which I'm thinking about submitting to the @secret_buttholes Instagram:

scars

On Thursday, I get a call from my surgeon. The pathology is back early. There's no signs that the cancer spread past the colon walls. The lymph nodes don't show any signs of cancer in them. Which essentially means I had Stage 2 cancer. Per my doctors, there's no immediate need for chemotherapy.

We did it.

I still have some upcoming follow-up appointments, and meetings with cancer genetics to learn if I'm genetically predisposed to cancers. And I'm sure I'll be doing many more colonoscopies and other tests in the future. And I'm still recovering from the surgery, too.

But I (think) I'm cancer-free now. Now, there's no way to know that little microscopic cancer cells didn't manage to break through somehow, or that I don't have cancer in some other random part of my body, so it's kinda arbitrary to say something like "cancer-free." But we do know, for sure, that my colon cancer tumor was safely removed and that my doctors are extremely pleased with the results and the signs that it hasn't spread.

Hello, impostor's syndrome, my old friend

So, I guess that means I'm a cancer survivor.

Which is weird to say, because this whole thing happened very quickly. All I did was "bowel prep" for two days and then fall asleep and wake up with a painful stomach.

But I am a survivor.

In fact, I'm probably the luckiest cancer survivor ever, from my access to incredible people and resources at UCSF to the actual state of my tumor to my family and friends support network. I paid attention to my body (noticing the bloody poops) and got the support and encouragement needed to get checked.

UCSF has me signed up for a 5+ year relationship with their cancer survivors unit (I'll learn more in a few weeks when I have my first session). I'm excited about this, because I want to learn as much as I can about how to stay safe and healthy going forward. A few of my friends have told me that there's good research into fasting and Keto and their link with preventing colon cancers. I'm queuing up some Tim Ferriss episodes with Dom D'Agostino about this topic.

My wife and my family are depending on me to stay healthy, and I'm going to do everything I can to do so. I'm going to own my health and be my own health advocate.

Some thanks

It's now about a week and half out from my surgery. I'm doing better on the Bristol scale, but not quite back to normal yet.

walking

Monday was my surgery. Tuesday didn't capture my walks, because I didn't have my phone on me. But I'm moving around again, and eager to get back to regularly-scheduled life.

Thank you for reading this story. I hope it is informative and shocking and helps you think about your health and the health of those around you. For example, Molly - my sister - is definitely going to have to get a colonoscopy ASAP.

Thank you to:

  • My incredible, magical, beautiful wife Carly!
  • My parents and my mother-in-law and our siblings!
  • Our friends and family!
  • UCSF!
  • OneMedical!

Also, if I got anything wrong in this missive from a medical perspective, let me know and I can attept to correct the errata. This is meant to be my understanding of my situation, YMMV.

2021 Update! Read Part II of my cancer story: Notes on My Chemotherapy

Add Some Ghibli to Your Raspberry Pi

Maybe you caught this week's HN post that Studio Ghibli dropped 400 images into the public domain. The comments suggested that there's something odd in Japanese copyright law about taking screenshots of films, and that Studio Ghibli might have furnished these to help keep people talking about their films in reviews and whatnot.

marnie

A more useful comment gave a nice tip for scraping the images in a single wget command:

wget --random-wait --timestamping http://www.ghibli.jp/gallery/{ged,chihiro,karigurashi,ponyo,kokurikozaka,marnie,kaguyahime,kazetachinu}{001..050}.jpg

This uses the nice shell trick of using curly braces {} to expand commands and .. to expand in a numerical or alphabetical series. I first encountered this technique in the MIT course for The Missing Semester of your CS Education, which I highly recommend checking out.

For example, echo foo.{png,jpg} will expand to echo foo.png foo.jpg, and echo {1..10} will expand to echo 1 2 3 4 5 6 7 8 9 10.

Perhaps this might prove useful in your terminal travels.

Back to Ghibli. So, now that I've got all these screenshots downloaded, what can I do with them?

My little Raspberry Pi server

I've got a Raspberry Pi 4 with 8GB RAM on my home network that I can connect to via Tailscale. Usually, I like to SSH in there and sudo apt-get update and sudo apt-get upgrade just to feel alive. But I also have a few other use-cases.

I run a Plex server on the Pi. For a while, I also experimented with running Home Assistant on the Pi, but I just don't have that many internet of things devices (yet). I'm also planning to set up Minecraft server on the Pi, but I haven't found a non-sketchy tutorial yet.

Finally, I also occasionally VNC in using VNC Viewer to check out the latest magazines in the awesome Raspberry Pi magazine app, where they have free subscriptions all these awesome "maker" magazines. This alone is worth the price of a Pi, IMHO.

But, I was getting pretty tired of looking at the same stock desktop background everytime I VNC'ed in.

Using the Ghibli images as the Pi's desktop background

There's a neat command to change your Pi's desktop background from the terminal:

pcman --set-wallpaper /home/pi/Pictures/ghibli/ged009.jpg

marnie

Make sure that you've given the proper directory location for your Ghibli images, which, of course, you can get with the pwd print working directory command.

Now, I've already admit that I enjoy manually running apt-get updates, but I definitely don't want to be manually changing the background, so how about some automation?

Automating a rotating background with a cron job

We can use a simple cron job for this! First, let's write a one-liner command to randomly set the background from an image in our folder:

ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{}

It looks kinda hairy, but it's pretty simple. First, we list the contents of our directory, then we used shuf to randomly select one of the files. In fact, if you just stopped there, your output would look like this:

ls /home/pi/Pictures/ghibli | shuf -n 1
karigurashi024.jpg

But we want to pipe this randomly selected file to the pcmanfm command! I'm using xargs to do that in the next part of the command. There's probably an easier way, but this works for me.

So, now that we have our command to randomly select a background, we just need to write a cron job to run this command every... let's say, ten minutes. First, open up your computer's crontab file:

crontab -e

And add this to the bottom:

*/10 * * * * ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{}

Save the file, and you're done. Right? No. That didn't work for me. Let's look at the cron logs with this command: grep CRON /var/log/syslog

raspberrypi CRON[3870]: (pi) CMD (DISPLAY=:0.0 && ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{})
raspberrypi CRON[3866]: (CRON) info (No MTA installed, discarding output)

Not super helful. It does confirm that job ran, which is good, though. That rules out cron syntax errors. This info log is interesting. Discarding output. I don't like the sound of that. Googling reveals that we need to install a local mail server, so here we go.

sudo apt-get install postfix

postfix

You should choose a "Local" installation. Once we have a mail server, we can now inspect the cron job "mail" logs:

sudo tail -f /var/mail/pi

After a bunch of email header jargon, we finally see the error:

Cannot open display: 

--1332E5E8FA.1601069882/raspberrypi--

Awesome! I mean, the cron job still doesn't work, but at least we have some more info. That's a win. So, what have we learned? It seems like our cron job can't "open" the display. Some more Googling suggests that I need to add an env var for the display, so I add this export DISPLAY=:0.0 to the beginning on my cron job right after the cron syntax.

Did that fix it? No. But we get a new error message:

Message: x-terminal-emulator has very limited support, consider choose another terminal

Cool. Okay, so, what does this one mean? This stack overflow answer suggests that I may need to add another env var to my command. Here goes:

*/10 * * * * export DISPLAY=":0.0" XDG_RUNTIME_DIR=/run/usr/1000  ls /home/pi/Pictures/ghibli | shuf -n 1 | xargs -I{} pcmanfm --set-wallpaper /home/pi/Pictures/ghibli/{}

Yes! Our cron job works!

marnie

What are these DISPLAY and XDG_RUNTIME_DIR? According to this other Stack Overflow answer, DISPLAY is an address for your display and XDG_RUNTIME_DIR is a place to store temporary files for your user. Probably some more to dig into here, but for now, I'm just going to stare at my VNC Viewer and watch the background change.

After all this Googling and debugging, we've now got all these cute images keeping our computer happy, even when we're not there.

Automating stuff like this is part of the magic of computers. And that's why I think it goes so well with these magical Studio Ghibli images.

Watching the Studio Ghibli films

But, now I've got a ticking clock...

I hate spoilers, and I'm sad to say that I've only seen Howl's Moving Castle (after reading the book earlier this year). I loved it, much more so than book. Which means I need to watch all the Ghibli films fast, before I spoil my way through them with my desktop backgrounds.

In our first episode of the Escaping Web podcast, Oz and I chatted with Felix Tripier who brought up Grave of the Fireflies. I didn't know about the film during our conversation, but I've just discovered that it's available on Hulu. I'll be watching it very soon. As for the rest of films, I've heard they're on HBO GOMAXPROPLUS in the US and Netflix everywhere else in the world.

For now, I'm just glad to have these images on my little server whenever I log in. It's a nice happy thing in my life, and I thank the orange website for the tiny dose of inspiration.