Posts Tagged video

My Fancy Pants on JoCo Cruise 2021

I had some plans for my entry into the JoCo Cruise 2021 Fancy Pants Parade, but they involved being on an actual cruise ship. When it went virtual, I assumed there would be no parade. When the call for video submissions came on 16 March, with the deadline on 31 March, I was unprepared. I’m not shopping in-person, and I didn’t think I’d be able to order materials and make anything in time.

But as much as the virtual cruise makes it impossible to do some things we would do on the real cruise, it also makes it possible to do things we couldn’t do on the real cruise. In one in-person Fancy Pants Parade, there was a person in a motion capture suit holding a sign saying ‘we’ll fix it in post’, and also a person in a green screen suit (who was controlling the tentacles of their partner’s pants.) In a virtual Fancy Pants Parade, we really can fix it in post. So I decided to try using my pants as a green screen — for what, I wasn’t sure.

At first I thought I’d try with some black jeans and hope I could tune the green screen effect for them, but then I realised I actually had blue-green jeans (purchased purely because I was excited to find jeans that were the right length for me.) I paraded ridiculously across the room in them, and Final Cut Pro immediately recognised them as the colour to apply the green screen effect to.

I settled on showing footage from previous Fancy Pants Parades on my pants. At first I thought I’d use my own pants, to not steal anyone else’s glory, but I didn’t have footage of all my own pants. I went with the winning pants from each parade, making this sort of a restrospective — a celebration of the whole tradition of Fancy Pants Parades. As the live version of Mr. Fancy Pants often says, chances are you’re best in everybody’s pants.

After submitting my entry, I duplicated the footage, enabling different settings in each copy, to make this short step-by-step. I’ve never used a green screen effect before, so this was me learning as I went along.

I submitted my video on 21 March. On 30 March, the JoCo Cruise Home Office sent out an email saying they’d only received one submission so far, and Jonathan was “nigh-inconsolable” about it. So I encouraged some friends to submit some — as I mentioned in my last post, winning by default is not as much fun as winning by crushing the hopes and dreams of your friends. So here’s how the Fancy Pants Parade went. Watch it before reading the rest of the post if you don’t want the result spoiled:

There was a lively exploration of the problem space of pants. What is fancy? Does it modify ‘pants’, or ‘parade’? What are the most important components of being ‘best in terms of pants’: physical pants-crafting, presentation, or spirit? And is that fancy pants spirit, or we’ve-been-home-for-a-year spirit? Still, it seemed that at least the chat comments were mostly in my favour, until, in a shocking twist, they found Gina’s video, which had been accidentally left out of the parade. And hers, too, used some movie magic! More debate: Culture and history? Conception, or construction? All pants, no dance? If you are silent, the pants will speak. I put my pants on one leg at a time, but in four dimensions, somehow.

It came down to a vote, and… I won! But all the particiPANTS were winners.

This is my second win… as you might guess from this year’s video, I also won in 2014. I am not the first person to win twice — the 2016 winner had also won previously, I think in 2013.

, , , , , , , ,

Leave a comment

Audio Word Clouds

For my comprehensive channel trailer, I created a word cloud of the words used in titles and descriptions of the videos uploaded each month. Word clouds have been around for a while now, so that’s nothing unusual. For the soundtrack, I wanted to make audio versions of these word clouds using text-to-speech, with the most common words being spoken louder. This way people with either hearing or vision impairments would have a somewhat similar experience of the trailer, and people with no such impairments would have the same surplus of information blasted at them in two ways.

I checked to see if anyone had made audio word clouds before, and found Audio Cloud: Creation and Rendering, which makes me wonder if I should write an academic paper about my audio word clouds. That paper describes an audio word cloud created from audio recordings using speech-to-text, while I wanted to create one from text using text-to-speech. I was mainly interested in any insights into the number of words we could perceive at once at various volumes or voices. In the end, I just tried a few things and used my own perception and that of a few friends to decide what worked. Did it work? You tell me.

Part of the System Voice menu in the Speech section of the Accessibility panel of the macOS Catalina System Preferences


There’s a huge variety of English voices available on macOS, with accents from Australia, India, Ireland, Scotland, South Africa, the United Kingdom, and the United States, and I’ve installed most of them. I excluded the voices whose speaking speed can’t be changed, such as Good News, and a few novelty voices, such as Bubbles, which aren’t comprehensible enough when there’s a lot of noise from other voices. I ended up with 30 usable voices. I increased the volume of a few which were harder to understand when quiet.

I wondered whether it might work best with only one or a few voices or accents in each cloud, analogous to the single font in each visual word cloud. That way people would have a little time to adapt to understand those specific voices rather than struggling with an unfamiliar voice or accent with each word. On the other hand, maybe it would be better to have as many voices as possible in each word cloud so that people could distinguish between words spoken simultaneously by voice, just as we do in real life. In the end I chose the voice for each word randomly, and never got around to trying the fewer-distinct-voices version. Being already familiar with many of these voices, I’m not sure I would have been a good judge of whether that made it easier to get used to them.

Arranging the words

It turns out making an audio word cloud is simpler than making a visual one. There’s only one dimension in an audio word cloud — time. Volume could be thought of as sort of a second dimension, as my code would search through the time span for a free rectangle of the right duration with enough free volume. I later wrote an AppleScript to create ‘visual audio word clouds’ in OmniGraffle showing how the words fit into a time/volume rectangle.  I’ve thus illustrated this post with a visual word cloud of this post, and a few audio word clouds and visual audio word clouds of this post with various settings.

A visual representation of an audio word cloud of an early version of this post, with the same hubbub factor as was used in the video. The horizontal axis represents time, and the vertical axis represents volume. Rectangles in blue with the darker gradient to the right represent words panned to the right, while those in red with the darker gradient to the left represent words panned to the left.

However, words in an audio word cloud can’t be oriented vertically as they can in a visual word cloud, nor can there really be ‘vertical’ space between two words, so it was only necessary to search along one dimension for a suitable space. I limited the word clouds to five seconds, and discarded any words that wouldn’t fit in that time, since it’s a lot easier to display 301032 words somewhat understandably in nine minutes than it is to speak them. I used the most common (and therefore louder) words first, sorted by length, and stopped filling the audio word cloud once I reached a word that would no longer fit. It would sometimes still be possible to fit a shorter, less common word in that cloud, but I didn’t want to include words much less common than the words I had to exclude.

I set a preferred volume for each word based on its frequency (with a given minimum and maximum volume so I wouldn’t end up with a hundred extremely quiet words spoken at once) and decided on a maximum total volume allowed at any given point. I didn’t particularly take into account the logarithmic nature of sound perception. I then found a time in the word cloud where the word would fit at its preferred volume when spoken by the randomly-chosen voice. If it didn’t fit, I would see if there was room to put it at a lower volume. If not, I’d look for places it could fit by increasing the speaking speed (up to a given maximum) and if there was still nowhere, I’d increase the speaking speed and decrease the volume at once. I’d prioritise reducing the volume over increasing the speed, to keep it understandable to people not used to VoiceOver-level speaking speeds. Because of the one-and-a-bit dimensionality of the audio word cloud, it was easy to determine how much to decrease the volume and/or increase the speed to fill any gap exactly. However, I was still left with gaps too short to fit any word at an understandable speed, and slivers of remaining volume smaller than my per-word minimum.

A visual representation of an audio word cloud of this post, with a hubbub factor that could allow two additional words to be spoken at the same time as the others.

I experimented with different minimum and maximum word volumes, and maximum total volumes, which all affected how many voices might speak at once (the ‘hubbub level’, as I call it). Quite late in the game, I realised I could have some voices in the right ear and some in the left, which makes it easier to distinguish them. In theory, each word could be coming from a random location around the listener, but I kept to left and right — in fact, I generated separate left and right tracks and adjusted the panning in Final Cut Pro. Rather than changing the logic to have two separate channels to search for audio space in, I simply made my app alternate between left and right when creating the final tracks. By doing this, I could increase the total hubbub level while keeping many of the words understandable. However, the longer it went on for, the more taxing it was to listen to, so I decided to keep the hubbub level fairly low.

The algorithm is deterministic, but since voices are chosen randomly, and different voices take different amounts of time to speak the same words even at the same number of words per minute, the audio word clouds created from the same text can differ considerably. Once I’d decided on the hubbub level, I got my app to create a random one for each month, then regenerated any where I thought certain words were too difficult to understand.


The visual word cloud from December 2019, with both ‘Competition’ and the lowercase ‘competition’ featured prominently

In my visual word clouds, I kept the algorithm case-sensitive, so that a word with the same spelling but different capitalisation would be counted as a separate word, and displayed twice. There are arguments for keeping it like this, and arguments to collapse capitalisations into the same word — but which capitalisation of it? My main reason for keeping the case-sensitivity was so that the word cloud of Joey singing the entries to our MathsJam Competition Competition competition would have the word ‘competition’ in it twice.

Sometimes these really are separate words with different meanings (e.g. US and us, apple and Apple, polish and Polish, together and ToGetHer) and sometimes they’re not. Sometimes these two words with different meanings are pronounced the same way, other times they’re not. But at least in a visual word cloud, the viewer always has a way of understanding why the same word appears twice. For the audio word cloud, I decided to treat different capitalisations as the same word, but as I’ve mentioned, capitalisation does matter in the pronunciation, so I needed to be careful about which capitalisation of each word to send to the text-to-speech engine. Most voices pronounce ‘JoCo’ (short for Jonathan Coulton, pronounced with the same vowels as ‘go-go’) correctly, but would pronounce ‘joco’ or ‘Joco’ as ‘jocko’, with a different vowel in the first syllable. I ended up counting any words with non-initial capitals (e.g. JoCo, US) as separate words, but treating title-case words (with only the initial letter capitalised) as the same as all-lowercase, and pronouncing them in title-case so I wouldn’t risk mispronouncing names.

Further work

A really smart version of this would get the pronunciation of each word in context (the same way my rhyming dictionary finds rhymes for the different pronunciations of homographs, e.g. bow), group them by how they were pronounced, and make a word cloud of words grouped entirely by pronunciation rather than spelling, so ‘polish’ and ‘Polish’ would appear separately but there would be no danger of, say ‘rain’ and ‘reign’ both appearing in the audio word cloud and sounding like duplicates. However, which words are actually pronounced the same depend on the accent (e.g. whether ‘cot’ and ‘caught’ sound the same) and text normalisation of the voice — you might have noticed that some of the audio word clouds in the trailer have ‘aye-aye’ while others have ‘two’ for the Roman numeral ‘II’.

Similarly, a really smart visual word cloud would use natural language processing to separate out different meanings of homographs (e.g. bow🎀, bow🏹, bow🚢, and bow🙇🏻‍♀️) and display them in some way that made it obvious which was which, e.g. by using different symbols, fonts, styles, colours for different parts of speech. It could also recognise names and keep multi-word names together, count words with the same lemma as the same, and cluster words by semantic similarity, thus putting ‘Zoe Keating’ near ‘cello’, and ‘Zoe Gray’ near ‘Brian Gray’ and far away from ‘Blue’. Perhaps I’ll work on that next.

A visual word cloud of this blog post about audio word clouds, superimposed on a visual representation of an audio word cloud of this blog post about audio word clouds.

I’ve recently been updated to a new WordPress editor whose ‘preview’ function gives a ‘page not found’ error, so I’m just going to publish this and hope it looks okay. If you’re here early enough to see that it doesn’t, thanks for being so enthusiastic!

, , , , ,

1 Comment

How to fit 301032 words into nine minutes

A few months ago I wrote an app to download my YouTube metadata, and I blogged some statistics about it and some haiku I found in my video titles and descriptions. I also created a few word clouds from the titles and descriptions. In that post, I said:

Next perhaps I’ll make word clouds of my YouTube descriptions from various time periods, to show what I was uploading at the time. […] Eventually, some of the content I create from my YouTube metadata will make it into a YouTube video of its own — perhaps finally a real channel trailer. 

Me, two and a third months ago

TL;DR: I made a channel trailer of audiovisual word clouds showing each month of uploads:

It seemed like the only way to do justice to the number and variety of videos I’ve uploaded over the past thirteen years. My channel doesn’t exactly have a content strategy. This is best watched on a large screen with stereo sound, but there is no way you will catch everything anyway. Prepare to be overwhelmed.

Now for the ‘too long; don’t feel obliged to read’ part on how I did it. I’ve uploaded videos in 107 distinct months, so creating a word cloud for each month using seemed tedious and slow. I looked into web APIs for creating word clouds automatically, and added the code to my app to call them, but then I realised I’d have to sign up for an account, including a payment method, and once I ran out of free word clouds I’d be paying a couple of cents each. That could easily add up to $5 or more if I wanted to try different settings! So obviously I would need to spend many hours programming to avoid that expense.

I have a well-deserved reputation for being something of a gadget freak, and am rarely happier than when spending an entire day programming my computer to perform automatically a task that it would otherwise take me a good ten seconds to do by hand. Ten seconds, I tell myself, is ten seconds. Time is valuable and ten seconds’ worth of it is well worth the investment of a day’s happy activity working out a way of saving it.

Douglas Adams in ‘Last chance to see…’

I searched for free word cloud code in Swift, downloaded the first one I found, and then it was a simple matter of changing it to work on macOS instead of iOS, fixing some alignment issues, getting it to create an image instead of arranging text labels, adding some code to count word frequencies and exclude common English words, giving it colour schemes, background images, and the ability to show smaller words inside characters of other words, getting it to work in 1116 different fonts, export a copy of the cloud to disk at various points during the progress, and also create a straightforward text rendering using the same colour scheme as a word cloud for the intro… before I knew it, I had an app that would automatically create a word cloud from the titles and descriptions of each month’s public uploads, shown over the thumbnail of the most-viewed video from that month, in colour schemes chosen randomly from the ones I’d created in the app, and a different font for each month. I’m not going to submit a pull request; the code is essentially unrecognisable now.

In case any of the thumbnails spark your curiosity, or you just think the trailer was too short and you’d rather watch 107 full videos to get an idea of my channel, here is a playlist of all the videos whose thumbnails are shown in this video:

It’s a mixture of super-popular videos and videos which didn’t have much competition in a given month.

Of course, I needed a soundtrack for my trailer. Music wouldn’t do, because that would reduce my channel trailer to a mere song for anyone who couldn’t see it well. So I wrote some code to make an audio version of each word cloud (or however much of it could fit into five seconds without too many overlapping voices) using the many text-to-speech voices in macOS, with the most common words being spoken louder. I’ll write a separate post about that; I started writing it up here and it got too long.

The handwritten thank you notes at the end were mostly from members of the JoCo Cruise postcard trading club, although one came with a pandemic care package from my current employer. I have regaled people there with various ridiculous stories about my life, and shown them my channel. You’re all most welcome; it’s been fun rewatching the concert videos myself while preparing to upload, and it’s always great to know other people enjoy them too.

I put all the images and sounds together into a video using Final Cut Pro 10.4.8. This was all done on my mid-2014 Retina 15-inch MacBook Pro, Sneuf.

, , , , , ,


Unintentional Haiku in my YouTube Video Descriptions

Since I wrote a little app to download much of my YouTube metadata, it was obvious that I needed to feed it through another little app I wrote: Haiku Detector. So I did. In all of my public YouTube descriptions put together, with URLs removed, there are 26 172 sentences, and 436 detected haiku.

As is usually the case, a few of these ‘haiku’ were not really haiku because the Mac speech synthesis pronounces them wrong, and thus Haiku Detector counts their syllables incorrectly. A few more involved sentences which no longer made sense because their URLs had been removed, or which were partial sentences from song lyrics which looked like full sentences because they were on lines of their own. Most of the rest just weren’t very interesting.

There were quite a lot of song lyrics which fit into haiku, which suggest tunes to which other haiku can be sung, if the stress patterns match up. I’m not going to put those here though; there are too many, and I could make a separate post about haiku in Jonathan Coulton lyrics, having already compiled a JoCorpus for to find rhymes in. So here are some other categories of haiku I liked. For lack of a better idea, I’ll link the first word of each one to the video it’s from.

Apologies about my camerawork

Also, there’s a lot
of background noise so the sound
isn’t very good.

There was a little
too much light and sound for my
poor little camera. 🙂

But hey, if I’d brought
my external microphone,
it would have got wet.

I’m so sad that I
had to change batteries or
something part-way through. 😦

Who do I look like,
Joe Covenant in Glasgow
in 2008?

Now the guitar is
out of tune and my camera
is out of focus.

Performers being their typical selves

John Roderick:

they get around to singing
the song Cinnamon.

Aimee Mann asks John
Roderick to play one of
his songs (which he wrote.)

Jim Boggia:

But first, he gives us
a taste of what he’s really
famous for: tuning.

And now he’s lost his
voice, so it’s going to be
great for everything.

Cody Wymore:

Cody Wymore can’t
do a set without Stephen
Sondheim in it.

Cody horns in on
it anyway by adding
a piano part.

He pauses time for
a bit so nobody knows
he was unprepared.

It’s about being
in a room full of people
and feeling alone.

Paul and Storm:

Why does every new
verse of their song keep taking
them so goddamn long?

Little did I know
that four other people would
throw panties at Paul.

Ted Leo:

We’re gonna bring the
mood down a little bit, but
maybe lift it up!

Nerf Herder:

Meanwhile, they have to
fix up the drums because I
guess they rocked too hard.

Zoe and Brian Gray:

It’s For the Glory
of Gleeble Glorp, which isn’t
a euphemism.

Zoe Gray has to
follow Brian Gray’s songs from
the Gleebleverse.

Clint McElroy:

He’s here to perform
for us an amazing act
of léger de main.

Travis McElroy:

Travis gets up on
stage and holds a small doll’s head
in a creepy way.

which brings us to Jonathan Coulton:

He loves us and is
very glad to be with us.
This is Creepy Doll.

Jonathan Coulton
remarks on the lax rhyming
in God Save The Queen.

Jonathan will use
Jim’s capo, and he will give
it back afterwards.

Jonathan did not
know this was going to be
a cardio set.

That guy Paul has been
seeing every goddamned day
for the last two months.

MC Frontalot:

MC Frontalot
talks about samples and tells
us what hiphop is.

Jean Grae:

It’s not because she’s
a lady, but because she’s
an alcoholic.

She feels like she should
get a guitar case, even
without a guitar.

Jon Spurney:

Jon Spurney rocks out
on the guitar solo, as
he is wont to do.


at about 6:38,
we get to the point.

The ship’s IT guy:

He has been very
glad to meet us, but he’s not
sad to see us leave.

Red Team Leader:

Red Leader has some
announcements to make before
the final concert.

The Red Team didn’t
mind, because we’re the team that
entertains ourselves.

All the JoCo Cruise performers in the second half of the last show:

Let’s bring Aimee Mann
back out to the stage to join
the Shitty Bar Band.

We now get into
the unrehearsed supergroup
section of the show.

JoCo Cruise hijinks

This is the last show,
unless we’re quarantined on
the ship for a while!

Half of those palettes
were 55-gallon drums
of caveat sauce.

This pun somehow leads
to a sad Happy Birthday
for Paul Sabourin.

Paul Sabourin points
out Kendra’s Glow Cloud dress in
the front row (all hail!)

They talk about why
they did note-for-note covers
instead of new takes.

Make It With You by
Bread, which has even better
string writing than Swift.

So by Friday night,
they’d written this musical
about JoCo Cruise.

A plan to take over the world:

Here’s how it’s going
to work: first we’re going to
have a nice dinner.

And once we have our
very own cruise ship, we shall
dominate the seas.

Some Truth:

An actual cake
which is not a lie. It was
delicious and moist.

It was delicious
and moist. This is Drew’s body
given up for us.

Questions and answers:

What do you do when
you reach the limits of your
own understanding?

When she reaches the
limits of her knowledge, she
says she doesn’t know.

the green people with
buttons who are aliens
wanting to probe you

Wash your hands! Do you
need to take your life jackets
to the safety drill?

What about water,
though? Where do you sign up for
the specialty lunch?

Calls to action

All this and more can
be real if you book yourself
a berth on that boat.

It was supported
by her Patreon patrons.
You could be one too!

If you want to hear
him sing more covers this way,
back this Kickstarter:

That will do for now. Next perhaps I’ll make word clouds of my YouTube descriptions from various time periods, to show what I was uploading at the time. Or perhaps I’ll feed the descriptions into the app I wrote to create the data for, see what the most common rhymes are, and write a poem about them, as I did with Last Chance to See.

Eventually, some of the content I create from my YouTube metadata will make it into a YouTube video of its own — perhaps finally a real channel trailer. But what will I write in the description and title, and will I have to calculate the steady state of a Markov chain to make sure it doesn’t affect the data it shows?


, , , , , , ,

Leave a comment

Some Statistics About My Ridiculous YouTube Channel

I’ve developed a bit of a habit of recording entire concerts of musicians who don’t mindGraph their concerts being recorded, splitting them into individual songs, and uploading them to my YouTube channel with copious notes in the video descriptions. My first upload was, appropriately, the band featured in the first image on the web, Les Horribles Cernettes, singing Big Bang. I first got enough camera batteries and SD cards to record entire concerts for the K’s Choice comeback concert in Dranouter in 2009, though the playlist is short, so perhaps I didn’t actually record that entire show.

I’ve also developed a habit of going on a week-long cruise packed with about 25 days of entertainment every year, and recording 30 or so hours of that entertainment. So my YouTube channel is getting a bit ridiculous. I currently have 2723 publicly-visible videos on my channel, and 2906 total videos — the other 183 are private or unlisted, either because they’re open mic or karaoke performances from JoCo Cruise and I’m not sure I have the performer’s permission to post them, or they’re official performances that we were requested to only share with people that were there.

I’ve been wondering just how much I’ve written in my sometimes-overly-verbose video descriptions over the years, and the only way I found to download all that metadata was using the YouTube API. I tested it out by putting a URL with the right parameters in a web browser, but it’s only possible to get the data for up to 50 videos at a time, so it was clear I’d have to write some code to do it.

Late Friday evening, after uploading my last video from JoCo Cruise 2020, I set to writing a document-based CoreData SwiftUI app to download all that data. I know my way around CoreData and downloading and parsing JSON in Swift, but haven’t had many chances to try out SwiftUI, so this was a way I could quickly get the information I wanted while still learning something. I decided to only get the public videos, since that doesn’t need authentication (indeed, I had already tried it in a web browser), so it’s a bit simpler.

By about 3a.m, I had all the data, stored in a document and displayed rather simply in my app. Perhaps that was my cue to go to bed, but I was too curious. So I quickly added some code to export all the video descriptions in one text file and all the video titles in another. I had planned to count the words within the app (using enumerateSubstrings byWords or enumerateTags, of course… we’re not savages! As a linguist I know that counting words is more complicated than counting spaces.) but it was getting late and I knew I wanted the full text for other things, so I just exported the text and opened it in Pages. The verdict:

  • 2723 public videos
  • 33 465 words in video titles
  • 303 839 words in video descriptions

The next day, I wanted to create some word clouds with the data, but all the URLs in the video descriptions got in the way. I quite often link to the playlists each video is in, related videos, and where to purchase the songs being played. I added some code to remove links (using stringByReplacingMatches with an NSDataDetector with the link type, because we’re not savages! As an internet person I know that links are more complicated than any regex I’d write.) I found that Pages counts URLs as having quite a few words, so the final count is:

  • At least 4 633 links (this is just by searching for ‘http’ in the original video descriptions, like a savage, so might not match every link)
  • 267 567 words in video descriptions, once links are removed. I could almost win NaNoWriMo with the links from my video descriptions alone.

I then had my app export the publish dates of all the videos, imported them into Numbers, and created the histogram shown above. I actually learnt quite a bit about Numbers in the process, so that’s a bonus. I’ll probably do a deeper dive into the upload frequency later, with word clouds broken down by time period to show what I was uploading at any given time, but for now, here are some facts:

  • The single day when I uploaded the most publicly-visible videos was 25 December 2017, when I uploaded 34 videos — a K’s Choice concert and a Burning Hell concert in Vienna earlier that year. I’m guessing I didn’t have company for Christmas, so I just got to hang out at home watching concerts and eating inexpertly-roasted potatoes.
  • The month when I uploaded the most publicly-visible videos was April 2019. This makes sense, as I was unemployed at the time, and got back from JoCo Cruise on March 26.

So, onto the word clouds I cleaned up that data to make. I created them on, because wordle has rather stagnated. Most of my video titles mention the artist name and concert venue and date, so some words end up being extremely common. This huge variation in word frequency meant I had to reduce the size from 0 all the way to -79 in order for it to be able to fit common words such as ‘Jonathan’. Wordclouds lets you choose the shape of the final word cloud, but at that scale, it ends up as the intersection of a diamond with the chosen shape, so the shape doesn’t end up being recognisable. Here it is, then, as a diamond:


The video descriptions didn’t have as much variation between word frequencies, so I only had to reduce it to size -45 to fit both ‘Jonathan’ and ‘Coulton’ in it. I still don’t know whether there are other common words that didn’t fit, because the site doesn’t show that information until it’s finished, and there are so many different words that it’s still busy drawing the word cloud. Luckily I could download an image of it before that finished. Anyway, at size -45, the ‘camera’ shape I’d hoped to use isn’t quite recognisable, but I did manage a decent ‘YouTube play button’ word cloud:


One weird fact I noticed is that I mention Paul Sabourin of Paul and Storm in video descriptions about 40% more often than I mention Storm DiCostanzo, and I include his last name three times as much. To rectify this, I wrote a song mentioning Storm’s last name a lot, to be sung to the tune of ‘Hallelujah’, because that’s what we do:

We’d like to sing of Paul and Storm.
It’s Paul we love to see perform.
The other member’s name’s the one that scans though.
So here’s to he who plays guitar;
let’s all sing out a thankful ‘Arrr!’
for Paul and Storm’s own Greg “Storm” DiCostanzo!
DiCostanzo, DiCostanzo, DiCostanzo, DiCostanzo

I’m sure I’ll download more data from the API, do some more analysis, and mine the text for haiku (if Haiku Detector even still runs — it’s been a while since I touched it!) later, but that’s enough for now!

, , , , , , , , ,

Leave a comment

Three more Hallelujahs

You might have noticed that Joey and I have been writing original songs and new versions of existing songs set to the tune of Leonard Cohen’s Hallelujah. Here’s a playlist of 24 Hallelujah videos we’ve recorded so far (including one of Joey singing part of the original in a choir.) We have many more lyrics waiting to be sung. We started writing these after getting the song stuck in our heads from hearing Beth Kinderman’s ‘Stop Covering Hallelujah‘ at MarsCon 2019. The day after that MarsCon we went to the biggest ball of twine in Minnesota, in formalwear, because it’s a ball.

Byron wearing a black hat, black jacket with white shirt and red tie, and khaki pants, me wearing a long black dress and a tiara, and Joey wearing a black suit with a white shirt, all standing in front of a giant twine ball, seen through the glass of a pagoda. There is much snow on the ground.

While talking to our hitchhiker ‘Bernie’ (actually Byron) back at the MarsCon hotel, we realised that ‘Minnesota’ scans to ‘Hallelujah’, so I decided to write a Hallelujah version of Weird Al’s song, The Biggest Ball of Twine in Minnesota. I did so a few days after JoCo Cruise 2019 ended.

At MarsCon 2020, we found ourselves again in the song circle at Beth’s Space Oddity room party, so I convinced Joey to sing the Biggest Ball of Twine Hallelujah, but then I was unexpectedly recruited to sing a verse, which I think I did terribly, and then we skipped the last few. Here’s that performance:

And here are the full lyrics:

I had two weeks vacation due
From Big Roy’s Heating, Pipes and Flue
Asked kids at dinner where they’d like to go to
They made their choice as noodles twirled
Of anywhere in this great big world
The biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

Next day we loaded up the car
With wieners, taters, rhubarb pie
And rolled out in our 53 DeSoto
Picked up a guy as children fussed
His sign had said “Twine ball or bust”
The biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

We could not wait to see the twine
We only stopped when we were buyin’
More wieners and a diet chocolate soda
We sang for the 27th time that day
When we saw a sign that showed the way
To the biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

As sun was setting in the sky
Before our unbelieving eyes
A shrine beneath a makeshift twine pagoda
To see that huge majestic sphere
I had to pop myself a beer
the biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

Just who’s he trying to impress
There’s no bridge guiding to a guess
O, Twine Ball Man it seems we hardly knew ya
It’s a strange and what-on-earthly thing
Some twenty one thousand pounds of string
It’s a twisted and a ballsy hallelujah
hardly knew ya, Hallelujah, hardly knew ya, hallelujah.

I wept with joy before the ball
I bet if we unrolled it all
It’d reach right out to Fargo, North Dakota
“That’s what our country’s all about”
But then the henchmen threw us out
Of the biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

We slept a night at Twine Ball Inn
Next morning, headed home again
But I can’t think where else I’d rather go to
We didn’t want to leave; that’s clear
I think that we’ll be back next year
At the biggest ball of twine in Minnesota
Minnesota, Minnesota, Minnesota, Minnesota

When Beth Kinderman played her song in concert later at MarsCon, she flattered Joey and me with a special dispensation to continue singing Hallelujah.

A few days after I got back home, it was Joey’s birthday, so I sang a birthday Hallelujah I’d been planning ever since my own birthday. I used Joey’s Sore Throat Hallelujah as a backing track, simply by playing it on my iPad while I sang. I think I did a better job on this one, but still felt pretty uncomfortable with the high notes:


Today’s the day we celebrate
recurrence of a great first date;
it’s Joey-left-the-womb-and-came-to-Earth day
and made it better than before;
I hope you’ll stay for many more,
so I can keep on singing happy birthday.

Now, four days into JoCo Cruise, COVID-19 was declared to be a pandemic, so by the time I got home, social distancing, quarantine, and self-isolation was the hot new thing. I got enough groceries to survive and then stayed strictly inside my apartment for 14 days to make sure I hadn’t picked anything up on the cruise or in the four airports I travelled through afterward.

I also wrote lyrics for an ‘isolation’ Hallelujah. But Joey had seen my birthday Hallelujah, and somehow become convinced that I could sing Hallelujahs all by myself. So we worked out a key I was more comfortable singing it in (A, in particular) and instead of singing it for me, Joey sent a backing track in that key and got me to do it myself. I happened to record it while still in costume from an online open mic I’d participated in, so at least nobody will know it was me if I sang badly.


It follows a logistic curve.
It’s serious, and we observe
a median of five-day incubation,
so even if you’re symptom-free,
and so are all the folks you see,
please stay home if you can in isolation.
Isolation, isolation, isolation, isolation.

Since then, I’ve been uploading more videos from JoCo Cruise — I’ve just about finished uploading the entire land concert at Santo Domingo. I performed a few other things on the cruise (and one other song at MarsCon) but I’ll post about them when all the relevant videos are up.

, , , , , , , , , , , ,

Leave a comment

May the Fourth Be With You

I’ve published both of these things before, but not both on May the Fourth. Here’s a video of the poem that I wrote about Star Wars before I saw it, along with a wrap-up of what I thought about the poem after seeing Star Wars:

And here’s a musical version of that poem, set to music and sung by Joey Marianer:

I’ve just noticed that the automatically-generated closed captions on that one say ‘sorry Bingley Lloyd’ instead of ‘stars were being made’, which is hilarious, but if you’re hard of hearing you’d be better off reading the text of the poem here instead. I don’t think I’ve added proper closed captions to my video of it either yet, sorry; I should have thought about this before today.

May the force be with Peter Mayhew always.

, , , , , ,

Leave a comment

My Performances on JoCo Cruise 2019

I’ve been going to JoCo Cruise since it started in 2011, and this year I finally had the nerve and organisation (okay, so actually Phil organised it) to take part in running a shadow event. What with this and MarsCon, apparently 2019 is my year for getting on stage at events I’ve long frequented.

There are many official celebrity guests on JoCo Cruise, but anyone can request a space and time to host their own events, whether concerts, crafting workshops, jam sessions, locksports seminars, hydrating face mask parties, PGP signing parties, space dog slideshows, scotch or foreign snack tastings, meetups of people who are various flavours of non-heteronormative, religious, merfolk, impaired, purple-haired, or scientists, or just a session of yelling at the moon. All of these things are real events that happened this year. This ‘shadow’ cruise, as it’s called, took up 292 of the 605 hours of programming.

My little corner of that was Angela Brett & Phil Conrad with Friends, later referred to as the ‘Hastily Assembled Entertainment Taco’, after the official event ‘Hastily Assembled Entertainment Burrito‘. The friends involved included Randy Parcel on vocals, Ryan Nathan on drums, Joey Marianer on vocals and ukulele, and Jeff Kahan on oboe. You can see the full show in the YouTube playlist below, or read on as I self-indulgently embed the specific parts I had a hand in, along with a few others from the open mic night.

Read the rest of this entry »

, , , , , , , ,

Leave a comment

I sang on stage 😳

In the last post I mentioned that Joey Marianer and I sang ‘I Love Your Body‘ on the Open Phil Broadcast on Radio Orange. During that interview we promised to perform it at the Open Phil open mic that was coming up, so we did:

You can skip to 6:48 if you don’t want to hear me explaining who Joey is, pretending I’m not thrilled that he sets my words to music, and talking about my YouTube channel and Jonathan Coulton’s transition from code monkey to internet superstar, followed by Joey challenging Lill to a laugh-off and finding good positions for the microphones with help from Grey Sweater Guy.

I set the stage before this with another slightly disturbing love poem, Don’t Slip on the Ice, but it’s not the first time I’ve performed that one on stage, or even the best performance of it on video, so you’ll have to click on the link if you want to see it.

After we finished this song, I cajoled Joey into singing The Elements by Tom Lehrer, which he had previously planned to sing but didn’t feel up to doing in the moment. He got me back for that by getting me to sing it with him when it turned out he was indeed not quite up to it in the moment:

This is one of those songs, like Chicken Monkey Duck (which, technically, I have also sung on stage, but it feels more like a rap), where you can amaze people just by knowing the lyrics, so confidence in singing ability (of which I have very little) is not essential, though it is quite difficult to sing fast enough.

, , , , , , , , ,

1 Comment

What’s the difference between European sleeper trains and US sleeper trains?

A while ago I posted about the difference between couchette cars and sleeping cars in Europe, mentioning that I wanted to compare that experience with the newly-introduced lie-flat sleeper buses in New Zealand. Well, I tried that, but the bus turned up hours late, it was not a sleeper bus because the only sleeper bus had had some water damage, I sat upright without sleeping all night and did not get the promised free onesie until I complained on Twitter, and the bus company has now gone out of business without any help from my hypothetical damning blog post.

However, earlier this year I took a five-day train journey from San Diego to Minneapolis (between JoCo Cruise and MarsCon) so now I can compare that with the European sleeper trains.

The most obvious difference is that in the USA, you can take a five-day train journey and stay in the same country, whereas in Europe, I’ve only ever travelled for one day or night at a time. On European trains, you keep all your luggage either in the room with you or on a luggage rack elsewhere in the carriage, and carry it off yourself, which makes sense for a one-night trip. On Amtrak you can check in your larger luggage, and pick it up from a carousel at the end of your voyage.

I was travelling with Joey Marianer (you know, that guy who sings things I write sometimes!) and we were booked to take the Coast Starlight from Los Angeles to Portland, then the Empire Builder to Minneapolis.

Our train from San Diego to Los Angeles broke down, and then the new engine which had been brought into service to pull us along also broke down. We ended up getting off that train in San Juan Capistrano and waiting for a train to Los Angeles, from whence we took a bus to Bakersfield, and then a train to catch up with the night train we were originally scheduled to be on in Martinez, twelve hours later than we were scheduled to get on it. Our checked luggage made it to our destination despite all the changes of route, and I’m still not sure how.

Luckily, we had a few other JoCo Cruise sea monkeys with us for most of that part of the voyage, so we could commiserate together. I’ll comment on it more in the sections below. Compare them with the corresponding sections in the European couchette vs. sleeping cars post if you want more detail on both sides of the comparison.


There were no washbasins in the rooms, as there are on European trains, but there were basins and even showers, with provided towels and soap, at the ends of the carriages. It’s possible that European trains had showers as well, but I never noticed as I shower in the mornings but I always got off the train first thing. Unsurprisingly, they were the kind of shower that only runs for a minute or so each time you press the button, and rarely gets warm. Good enough to clean up when you really need to, but not pleasant.

During the day, we could either stay in our room or visit the observation car, where we had spectacular views of snowy landscapes. Photos from a moving vehicle don’t do it justice, so I captured an hour and a half of video:

Both the train and the replacement bus on the first day had tables, but the tables on the bus were too shaky to play card games on.

Evening Goodies

You’re not given any kind of welcome package on these trains. Given that people could be joining them at any time of day and staying for multiple days, and full evening meals, towels, etc. are provided throughout the journey anyway, such a gesture wouldn’t make too much sense. I’d have appreciated earplugs, though, and I like the newrest slippers from European sleepers as souvenirs.

Sleeping Place

While on European trains I’ve travelled alone and shared a four-to-six-bed room with strangers, occasionally lucking out with a room to myself, on Amtrak you book by the room, and fill it with whichever people you are travelling with. We booked a two-bed roomette — that’s two bunk beds, in a cabin just big enough for someone to stand next to the beds. There wouldn’t have been room to keep our suitcases in the room, but there was a slim cupboard where we could put some things. During the day, the top bunk was folded away and the bottom bunk was folded into two seats facing each other, with a fold-out table between them.

In terms of comfort and bed linen, the beds were closer those in the sleeper cars in European trains rather than a couchette. I’m told that the top bunk was more difficult to sleep on due to movement and noise.


On a European train, your ticket includes breakfast in bed just before you’re scheduled to get off the train, and perhaps a snack or drink when you board late in the evening. When you’ve booked sleeper cars on a multi-day Amtrak voyage, it includes breakfast, lunch, and dinner throughout the trip, in a scenic dining car. There are about five choices for the main course of each meal, and the choices were the same on both trains. You can have whichever meal you want, even with extra sides and toppings, and salad and dessert at dinner; only alcohol costs extra. This was a good way to ease into the real world after being on a cruise ship with unlimited included food — we just had to get used to having only one main course at each meal. Here’s a menu.

Passengers not in sleeper cars can also eat in the dining car, but they have to pay for their meals. We could go to breakfast at any time during a certain time window. Reservations are taken for lunch and dinner, with sleeper passengers getting first pick. Tables fit four people, and we were usually seated with other passengers, which often led to interesting conversations. On our first night, we were seated with a couple who had also endured the replacement train/bus debacle, so we had something to talk about.

On that note, for the first day of our trip, we were not on the sleeper train so did not have access to any of these nice meals. We got a partial refund for that. On one of the trains there were tea, coffee, and mini-muffins available for free, and on one there was an enterprising announcer trying to make more money out of our predicament:

The sea monkeys we were with shared some of their food (they were not taking a sleeper, so had packed food for their shorter journey), and another passenger shared her home-grown mandarins, in exchange for some ukulele music and IT help from Joey, as I recall. There were many friendly conversations. [Note: these experiences may not be available on your Amtrak sleeper train adventure.] We bought some food at the station in LA while waiting for the bus to Bakersfield.

I’ve now written almost 1200 words, mostly as an excuse to show you my one-and-a-half-hour-long video of scenery. Do look at the description of that video if you like the quality Josh Woodward soundtrack and want to know which songs they are. Also, check out my friend Joseph’s Patreon, as he not only makes music and stories but also provided some great hugs and conversation while we were changing trains in Portland.

If you are still interested in visiting New Zealand despite the lack of motorised beds, read up on some kiwi facts I made up, which were quite popular on Twitter.

Happy travels!

, , , , , , , , , ,

Leave a comment

%d bloggers like this: