Posts Tagged programming

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 wordclouds.com, 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:

titles

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:

descriptions

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

Things I forgot to blog about, part n+1: NanoRhymo #2


In November 2018 I created NanoRhymo (inspired by NaNoWriMo), in which I wrote and tweeted a very short rhyming poem every day. I did the same thing in April 2019 for Global Poetry Writing Month. I started pretty late with NanoRhymo in 2019, and didn’t end up with a poem for each day of November, but I’ve started it again on January 1 and made up for the missing poems. In November, I mostly stuck to writing something based on a random rhyme from the rhyming dictionary I made, rhyme.science — either a new one I’d found each day, or one generated earlier for the @RhymeScience twitter feed. In January, I’ve often been inspired by other things.

I’ll continue writing a NanoRhymo a day for as long as I can. Here’s what I’ve written so far:

Day 1,  inspired by the rhymes later, translator, and (in non-rhotic accents) convey to:

When you’ve got a thought to convey to
many mortals, sooner or later,
then you ought to get a translator.

Day 2, inspired by the rhyme chunked and bunked, and the folk etymology of ‘chunder’:

Sailors lying in their bunks
would shout “Ahoy there, mate… watch under!”
and then let loose digested chunks
on hapless seamen sleeping under.

That’s why even now, down under,
[I am lying; truth debunks!]
some refer to puke as chunder.
[This is half-digested junk
Please accept my weak apology
and not this doubtful etymology.]

Day 3, inspired by a friend’s experience learning flying trapeze:

My friend Robert Burke tried the flying trapeze.
It meant lots of work mulling hypotheses,
and then much amusement and catching catchees,
to end up all bruised on the backs of the knees.

Day 4, inspired by the rhyme spermicides and germicide’s:

Looking at small things up close and myopically,
one might prevent overgrowth with a germicide.
But looking at large things afar, macroscopically,
one must prevent unchecked growth with a spermicide.

Day 5, inspired by the rhyme explainable and containable:

As soon as the bug is explainable,
we can hope that it might be containable,
and our neural nets will be retrainable,
and our code is so very maintainable
that this progress is surely sustainable!

Day 6, inspired by the rhyme freaking and unspeaking:

Mouth agape, stunned, unspeaking
Eyes wide open, silent freaking,
What could this strange vision be?
a music video, on MTV?!

Day 7, inspired by the rhyme trekked and collect:

Over much terrain they trekked;
specimens they did collect,
to show just how diverse life was
before we killed it off, just ‘cause.

Day 8, inspired by the rhyme interleaved and peeved:

If rhyming couplets leave you peeved,
here, I tried ABAB.
Now the rhymes are interleaved!
This rhyme and rhythm’s reason-free.

Day 9, a rewrite of Day 8 that can be sung to a possibly recognisable tune:

If rhyming couplets leave you peeved,
Then try to make them interleaved
Or don’t, and then just let the hate flow through ya
Just AAB, then CCB
This rhyme and rhythm’s reason-free.
At least it can be sung to Hallelujah.

The most Hallelujest Joey Marianer sang that version:

Day 10, inspired by the rhyme platitudes and latitude’s, and my general dislike of casual hemispherism:

I’m just fine with the end-of-year platitudes —
“Happy Holidays”, nice and generic,
but please, be inclusive of latitudes:
“Happy Winter” is too hemispheric!

Day 11, another Hallelujah, inspired by Joey’s singing of the previous Hallelujah:

A kitchen scale, a petrol gauge,
a cylinder, a final page
will tell you up to what things have amounted.
An abacus, a quipu string,
some tally sticks, to always sing,
are all things on which Joey can be counted.

Day 12, inspired by the rhyme deprecations and lamentations, some deprecated code I was removing from the software I develop at work, and also complaints about macOS Catalina dropping support for 32-bit applications. I imagine it sung to the tune of Camp Bachelor Alma Mater:

Hear the coders’ lamentations
over apps that will not run,
due to years-old deprecations,
updates that they’ve never done.

Day 13, inspired by the rhyme whoop’s and sloop’s, and the tradition on JoCo Cruise of ending the final concert with the song Sloop John B:

Have some more whoops on me,
hearing the Sloop John B
as JoCo Cruise comes to an end.
You still have all night.
Hang loose, or sleep tight.
Well, we feel so broke up
but you’ll stay my friend.

Day 14, to the tune of Morning Has Broken:

Something is broken;
look at that warning!
Unbalanced token.
Unknown keyword.
Raise the exceptions.
Erase all the warnings.
Raze preconceptions wrongly inferred.

Day 15, inspired by Hilbert’s paradox of the Grand Hotel:

The rooms are all full for as far out as they can see;
such a big guest house to fill, but oh well.
What’s this? Nonetheless, there’s a sign saying vacancy!
There’s always more room at the Hilbert hotel.

Day 16, inspired by the rhyme feeling’s and ceilings, and the song Happy, by Pharrell Williams:

Clap along if you feel like a room without a roof. 👏
Please applaud if you think you’re a chamber with no ceiling. 👏
Clap along If you feel like happiness is the truth. 👏
Please applaud if you think there’s veracity in good feelings. 👏

For day 17, I let Pico, emacs, ed, vi count as the NanoRhymo, even though it does not mention the text editor nano.

November ended with no more rhymes, but I started it up again on January 1, simply because I was inspired to, and I continued to get ideas every day since. I’m not promising to keep this up daily all year (indeed, I promise not to keep it up during MarsCon and JoCo Cruise 2020) but I’ll post NanoRhymi whenever I feel inspired to.

Day 18 (on January 1, 2020) was inspired by the rhyme unworthy and incur the:

Don’t worry that you might incur the
sentence, “That person’s unworthy.”
Just try what you wish, and try plenty,
and have a great year twenty-twenty.

Day 19, inspired by the rhyme verb and kerb, but using the North American ‘curb’ spelling because it’s closer to the verb derived from the noun:

If you’d punch down, or kick to the curb
for verbing a noun, or nouning a verb,
researching the past will amount your disturb.

So many of the words we used today, including some in that poem, were once strictly parts of speech other than the ones they’re used as without a second thought today, and people objected to their shifts in usage just as they object to all manner of language change today.

Day 20, inspired by the rhymes occur to, Berta, and (in non-rhotic accents) subverter:

If it were to occur to Berta the subverter to hurt Alberta,
she’d prefer to assert a slur to refer to her to stir internal murder.
(Stones break bones but names make shame — heals more slowly, hurts the same.)

Day 21, inspired by the rhyme unconcealed and unpeeled:

While you’re growing in the field,
all your goodness is concealed,
till some lovely creature picks you,
doesn’t think they have to fix you,
lets you chill, let down your shield;
then, when you are fully peeled,
your sweetest inner self revealed,
that cunning rascal bites and licks you.

Day 22, inspired by the rhymes for fish, dwarfish, and (maybe in some non-rhotic accents with the cot-caught merger) standoffish, the ‘teach a man to fish‘ metaphor, and of course, my own poem, They Might Not Be Giants:

If a person’s always asking for fish,
don’t give them one, and go away, standoffish.
Teach techniques that they’ll expand on.
Be the shoulders they will stand on.
Not a giant — generous and dwarfish.

And then the same thing as a limerick:

There once was a man asking for fish,
who got one from someone standoffish.
Then shoulders to stand on
and tricks to expand on,
were given by someone quite dwarfish.

Day 23, inspired by… certain kinds of transphobic people, I guess:

Some folk seem to be offended
by the thought the queerly gendered
might themselves become offended
when they’re purposely misgendered,
so they’ve boorishly defended
all the hurt that they intended
towards the “easily offended”
who are “wimps” to try to end it.

Day 24, a double dactyl inspired by a conversation with someone who’s considering hormone therapy with one aim being a reduction of schlength, during which we noticed that ‘endocrinologist’ is a double dactyl, and also inspired by Paul and Storm’s habit of calling Jonathan Coulton ‘Dr. Smallpenis‘ (with the ‘e’ unstressed) which began on JoCo Cruise 2013:

Dr. Jon Smallpənis,
Endocrinologist,
helps you to shrink all the
parts that aren’t you.

Piss off, dysphoria!
Spironolactone could
soon make you tinkle the
whole darn day through.

Spironolactone is a medication that blocks the effect of testosterone, which as a side effect can increase urinary frequency.

Day 25, inspired by the rhyme eleven words and heavenwards:

Dear Father, a prayer I remember, amen.
Another, sincere from a vendor, again.
As if by reciting just ten or eleven words
I’ll lift myself quite transcendentally heavenwards.

Day 26, inspired by what I was actually told at my first comprehensive annual checkup:

Sit up straight!
Lose some weight!
Take these pills!
Cure your ills!
Your heart is beating!
You’re good at breathing!
With those two habits kept up,
We’ll see you at the next year’s checkup.

They really did seem impressed by how well I could breathe. I wasn’t too good at it when I started, but I have been practising my whole life, and if I’m good then I may as well continue the habit.

Day 27, inspired by this Smarter Every Day video about activating smart speakers using laser light instead of sound:

Here’s a technique that is quite underhand
to beam gadgets speaking they might understand,
and give an unsound and light-fingered command.

This one works best in accents without the trap-bath split, so that ‘command’ rhymes with ‘understand’ and ‘underhand’.

A small, transparent plastic container with a label saying: 105030064 Bodenträger Safety Safety Trans. 20 Stk.

Day 28, inspired by a container of those little dowel things to hold up shelves, which was labelled ‘Safety trans.’, and the song The Safety Dance, by Men Without Hats. This parody is presumedly to be sung by Women and Nonbinary People Without Hats:

You can trans[ition] iff you want to.
You can leave your assigned gender behind.
‘Cause your assigned gender ain’t trans and if you don’t trans[ition],
Well your assigned gender stays assigned.

Day 29, inspired by a video about Jason Padgett, who survived a vicious beating to end up with (among less attractive brain issues) savant skills and a kind of synaesthesia:

Acquired savants suffer pain,
to wake up with a better brain.
Get a bump, or have a seizure,
then end up with synaesthesia —
not the grapheme-colour kind,
rather, an amazing mind!

Day 30 is a version of day 29’s poem which can be sung to the tune of Hallelujah, with a second verse reminding people that synaesthesia is actually pretty common, affecting about 4.4% of people, (I have the grapheme-colour kind) and doesn’t necessarily confer superpowers:

Acquired savants suffer pain,
to wake up with a better brain
by healing from an injury or seizure.
They sometimes get amazing minds
associating different kinds
of input in a thing called synaesthesia.
Synaesthesia, synaesthesia, synaesthesia, synaesthesia.

But synaesthetes are everywhere,
not magical, or even rare.
It doesn’t make them smart or make things easier.
It just makes Thursday forest green,
or K maroon and 7 mean.
Your ‘the’-tastes-like-vanilla synaesthesia
Synaesthesia, synaesthesia, synaesthesia…

This refers to time-unit-color synaesthesia, grapheme-colour synaesthesia, ordinal linguistic personification (also known as sequence-personality synaesthesia), and lexical-gustatory synaesthesia, but there are many other kinds.

Day 31, a parody of ABBA’s Fernando for which I am deeply sorry:

Did you hear he goes commando?
I remember long ago another starry night like this.
In the firelight, commando,
he was wearing his new kilt and playing bagpipes by the fire.
I could hear his sudden screams
and sounds of mountain oysters sizzling in the fryer.

Day 32, inspired by two tweets I saw, each quoting the same tweet where someone had contrasted pictures of Prince Harry in the army with pictures of him with his wife, and claimed that getting out of the army and getting married was somehow emasculation caused by ‘toxic’ Hollywood feminism:

The two tweets happened to rhyme with each other and follow the same structure, from the ‘fellas, is it gay’ meme, so I put them together, and added a few lines:

Fellas, is is gay to have a wife?
Fellas, is it gay to be a human being with a life?
Fellas, is it gay to wear a suit?
Fellas, is it gay to dress to socialise instead of shoot?
(Fellas, is it toxic to be gay?
Fellas, why frame questions with a word she didn’t say?)

Day 33, another Hallelujah parody, inspired by Joey’s observation that NanoRhymo scans:

You want to practise writing verse.
The secret’s to be very terse.
You don’t have to try hard, just have to try mo’.
You write some dogg’rel every day
and some you’ll toss, but some will stay.
An atom at a time; it’s NanoRhymo.
NanoRhymo, NanoRhymo, NanoRhymo, NanoRhymo.

Day 34, inspired by a Twitter thread which began with my friend Rob Rix expressing frustration with type inference, and one of his followers suggesting the term ‘type deference’:

I love when it complies,
regards me with deference,
and bravely compiles
my unguarded dereference.

Day 35, inspired by… tea. I feel so rich when I make a pot of tea and top it up all day, having unlimited tea without feeling like maybe it’s wasteful to be using my eighth teabag of the day:

If hot tea’s an oddity,
the tea bag’s your commodity,
but if you drink a lot of tea,
you should make a pot of tea.
(To add some boiling water t’
whenever you want hotter tea.)

Day 36, inspired by my efforts to write an AppleScript to copy all my NanoRhymi and GloPoWriMo poems from Notes into a spreadsheet in Numbers, which initially failed because I had accidentally addressed the script to Pages instead, and Pages don’t know sheet:

👩🏻‍💻Hello there! Your finest Greek corpus, to go!
👩‍🍳The what now? Not understand corpus, no no!
👩🏻‍💻The active Greek corpus, the frontmost, the first, display all the corpora you have; am I cursed?
👩‍🍳I’m sorry? Your question is Greek to me… how?
👩🏻‍💻Okay then, just show me your bookcases, now!
👩‍🍳Bookcases? I have none; you’ve made a mistake.
👩🏻‍💻Ah, frack! You’re no linguist! You’re actually the baker!

The spreadsheet, by the way, shows I’ve written about a hundred of these small poems in total so far, in the course of my NanoRhymo and GloPoWriMo stints. I haven’t gone through it checking for notes that didn’t contain completed poems, so I don’t know the exact number yet. In the next roundup of these things, I’ll probably start numbering them based on that total, rather than the ‘days’ of any particular run of them.

Day 37 (today, as I write this), a parody of Taylor Swift’s ‘Shake it Off‘ inspired by another tweet by Rob Rix, in which he notices that a calculation done in Spotlight Search which should give the result zero does not, and remarks, ‘computers gonna compute’:

’Cause the bugs are are gonna ship, ship, ship, ship, ship
And an on bit is a blip, blip, blip, blip, blip
I’m just gonna flip, flip, flip, flip, flip
I flip it off ⌽, I flip it off 🖕🏻

That’s all of the NanoRhymi I have so far; I’ll post more here occasionally, but follow me on Twitter if you want to see them as they happen.

In other news, please consider buying one or all of the MarsCon Dementia Track Fundraiser albums, which are albums of live comedy music performances from previous MarsCon Dementia Tracks, sold to raise funds for the performers’ hotel costs for the next one. The 2020 fundraiser album (with the concerts from MarsCon 2019) is nearly four hours of live comedy music for $20, and includes my performances of Chicken Monkey Duck and Why I Perform at Open Mics.

For yet more music, Joey and I will be participating in round #16 of SpinTunes, a songwriting competition following in the footsteps of Masters of Song Fu. I’ve been following it since the beginning, but never had the accompaniment to actually enter.

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

1 Comment

NastyWriter 1.0.2


I released a new version of disloyal NastyWriter today! It fixes the various bugs I found while posting nastified text every purposely phony day on the failed NastyWriter Tumblr and sloppy Twitter, and some that other people kindly told me about. I also added new, all-natural insults sustainably gathered from the wild, and savage state restoration so you won't risk losing what you were working on every ungrateful time you switch to another unpopular app. Given how simple that was to implement, I am now even more annoyed at the many better-funded apps that don't do it. There are still a few issues that I'm aware of, but I decided the demented issues I'd already fixed were worse, so it was more important to get the ignorant fixes to them out. Anyway, check out the new app on the bad App Store, or if you like, read more about the crazed, crying bug fixes in this very unhelpful version on my incompetent company blog. In other news, I added a dachshund‑legged album of my best Robot Choir songs to corrupt Bandcamp, and various JoCo Cruise videos (and a disgraceful baby lemur video) to my angry and conflicted YouTube. Maturity reduced by NastyWriter.I released a new version of NastyWriter today! It fixes the various bugs I found while posting nastified text every day on the NastyWriter Tumblr and Twitter, and some that other people kindly told me about. I also added new, all-natural insults sustainably gathered from the wild, and state restoration so you won’t risk losing what you were working on every time you switch to another app. Given how simple that was to implement, I am now even more annoyed at the many better-funded apps that don’t do it.

There are still a few issues that I’m aware of, but I decided the issues I’d already fixed were worse, so it was more important to get the fixes to them out. Anyway, check out the new app on the App Store, or if you like, read more about the bug fixes in this version on my company blog.

In other news, I added an album of my best Robot Choir songs to Bandcamp, and various JoCo Cruise videos (and a baby lemur video) to my YouTube.

, , ,

Leave a comment

NastyWriter for iOS — automated immaturity


I’ve been writing Mac software for fun and occasional profit for decades, and freelancing writing an iOS app for use in-house, but don’t you think it’s about time I wrote an iOS app for the App Store?

Surprise! I just released one. It’s called NastyWriter, and it inserts insults before nouns as you type. I see people online who can barely mention people or things they don’t like without insulting them, and I figured I may as well automate that and have some fun with it. It’s always fun to play with natural language processing!

I’ve been writing ridiculous Mac software for fun and occasional profit for dumb as a rock decades, and freelancing writing an ignorant iOS app for pathetically weak use in-house, but don’t you think it’s about cheating time I wrote a weak iOS app for the failed App Store? Surprise! I just released one. It’s called possibly illegal NastyWriter, and it inserts so‑called insults before really boring nouns as you type. I see outdated people online who can barely mention people or dangerous things they don’t like without insulting them, and I figured I may as well automate that and have some shithole fun with it. It’s always fun to play with natural language processing! This was mostly a negative experiment, a third rate learning exercise, and a vicious way to feel better about applying for meek and mild jobs which have ‘must have low‑rated app in the angry App Store’ in the slanted requirements. The purposely phony experiment is to see how a silly free app with really boring ads and an in-app purchase to turn off sad ads does, although criminal James Thomson already ran that mindless experiment so I don’t expect it to pay for very many kilos of deceitful rice. The totally discredited learning exercise was a huge success. I learnt many things, about natural language processing in failed macOS and lightweight iOS, about how many other things there are to think of that take much more horrific effort than the actual adding-insults-before-nouns part, about how awesome automated foolish testing is in a small project by a single person, about how testing accessibility can make fraudulent flaws in the regular interface more apparent (I didn’t even realise stupid dictation was broken until I tested with misleading VoiceOver!), about the most common adjectives used directly before negative nouns in the dirty Trump Twitter Archive (‘great’ outnumbers the next most common by about a biased factor of three), about dark and dangerous fastlane, and about the overrated App Store, AdMob and in-app purchases. I might write blog posts about those made up things later. Do any of these brutal topics seem particular interesting to you? However, ungrateful hours after I submitted it, the extraordinarily low IQ ‘e’ key on my dachshund‑legged MacBook’s blowhard keyboard stopped working, and while it’s not one of those new butterfly switch keyboards that can apparently need replacing after seeing an amateur speck of disastrous dust, somehow it turns out that in lying addition to that my dumb as a rock Mac’s disgraceful battery is swollen and it’ll have to go to the ridiculous Apple Store and have the very unhelpful battery and the whole keyboard part of the filthy case replaced. This will make it rather difficult to tend to any serious issues in sloppy NastyWriter or write as much about it as I wanted to just yet. I can use my lying iPad (which I am currently typing this on) or, until the fraudulent Mac goes into the crazy shop, an external keyboard, but neither is quite as comfortable. Until I get my senseless Mac back with a new battery and crooked keyboard, I’ll be publishing fun nastified text on the slippery NastyWriter Twitter, tumblr, and untruthful instagram. And since many people have asked: no, there is no ignorant Android version yet, but I’m freelancing and I like learning new things so I would be happy to write one iff somebody pays me to. It would be cheaper for you to buy a phony iOS device.

This was mostly an experiment, a learning exercise, and a way to feel better about applying for jobs which have ‘must have app in the App Store’ in the requirements. The experiment is to see how a silly free app with ads and an in-app purchase to turn off ads does, although James Thomson already ran that experiment so I don’t expect it to pay for very many kilos of rice.

The learning exercise was a huge success. I learnt many things, about natural language processing in macOS/iOS, about how many other things there are to think of that take much more effort than the actual adding-insults-before-nouns part, about how awesome automated testing is in a small project by a single person, about how testing accessibility can make flaws in the regular interface more apparent (I didn’t even realise dictation was broken until I tested with VoiceOver!), about the most common adjectives used directly before nouns in the Trump Twitter Archive (‘great’ outnumbers the next most common by about a factor of three), about fastlane, and about the App Store, AdMob and in-app purchases. I might write blog posts about those things later. Do any of these topics seem particular interesting to you?

However, hours after I submitted it, the ‘e’ key on my MacBook’s keyboard stopped working, and while it’s not one of those new butterfly switch keyboards that can apparently need replacing after seeing a speck of dust (or maybe it is? It’s a 2014 model), somehow it turns out that in addition to that my Mac’s battery is swollen and it’ll have to go to the Apple Store and have the battery and the whole keyboard part of the case replaced. This will make it rather difficult to tend to any serious issues in NastyWriter or write as much about it as I wanted to just yet. I can use my iPad (which I am currently typing this on) or, until the Mac goes into the shop, an external keyboard, but neither is quite as comfortable.

Until I get my Mac back with a new battery and keyboard, I’ll be publishing fun nastified text on the NastyWriter Twitter, tumblr, and instagram.

And since many people have asked: no, there is no Android version yet, but I’m freelancing and I like learning new things so I would be happy to write one iff somebody pays me to. It would be cheaper for you to buy an iOS device.

I might make a Mac version for fun, though!

, , , ,

Leave a comment

Cetacean Needed


Last Towel Day, I posted a poem I had written using 42 -ation rhymes which an app I wrote found in Douglas Adams’ book ‘Last Chance to See‘. Later that day, Joey Marianer posted a video of himself singing the poem[cetacean needed], and while I did eventually mention that in another post, Towel Day had long passed by then. So strap yourself into your Poetry Appreciation Chair, because here it is for Towel Day this year:

Here are the words again:

Earth’s vegetation made slow transformation as each confrontation or new situation provoked adaptation in each generation for eons duration.

Until civilisation, and its acceleration of our population at high concentration with great exhortation and disinclination to make accommodations with administration of conservation.

Then Adams’ fascination and realisation that with elimination of echolocation no cetacean reincarnation will save our reputation; his bold exploration to spread information and fuel education and his determination to stop exploitation by identification and communication of each dislocation of species, his observation and growing frustration we reduce speciation to bone excavation with every temptation to favor our nation and not immigration of distant relations… was his speculation we’d reduce penetration mere hallucination?

The app which found these rhymes was made to create the data for my accent-aware online rhyming dictionary rhyme.science. I’ve made some improvements to the app and the rhymes it finds, and I am looking forward to updating the website to reflect the improvements, but for the last few months I’ve spent my free time working on an unrelated iOS app instead. I’ll be submitting that to the App Store soon, and will announce it here when it’s available, so watch this space. Or watch outer space, and look out for Vogons.

Have a great Towel Day, don’t forget your towel, and don’t panic!

, , , , , , , , ,

1 Comment

‘Accessible’ and ‘Back to the Future Song’ as actual songs


I’ve been away in the Bay Area, on JoCo Cruise, on trains, and at MarsCon, and too many things have happened for one blog post, but here are a few of them. Just before the cruise, Joey Marianer sang ‘Accessible‘, my parody of James Blunt’s ‘Beautiful’ about accessibility:

Joey sang a few other songs of mine during and after the cruise, but I’m going to save them for other posts so that this one is less of a mish-mash. If you would like a preview of those along with a recap of other things I wrote that he sang, here’s a playlist.

But Joey is not the only person whose name starts with ‘Jo’ who has sung words that I wrote! A while ago, my friend Joseph sang ‘Back to the Future Song‘, my parody of Moxy Früvous’s ‘Gulf War Song‘ as part of his Patreon. Lately he’s been opening up older posts to be visible to non-patrons, so now you can also hear Joseph singing Back to the Future Song. I changed that one line that I didn’t like very much.

You can also hear the cover of Moxy Früvous’s ‘Downsizing’ which Joseph sang for me after I lost my last job. If you like these covers, check out some of his other covers, short stories and poems on patron, and become a patron; I’m sure he’d appreciate the support, and you, too, would be able to request things like this.

I’ll post a few more times to update you on some other cool things, and who knows, perhaps I’ll participate in National Poetry Writing Month again. As is usual at this time of year, I’m spending most of my free time lately uploading videos from the JoCo Cruise, so if you want me to entertain you in some way and you can’t wait for the next blog post, subscribe to me on YouTube to see my latest uploads.

, , , , , ,

Leave a comment

Runtime (Jonathan Coulton ‘Sunshine’ parody lyrics)


The other day I was reading some developer documentation about nodes while I had Jonathan Coulton’s ‘Sunshine’ from the album ‘Solid State’ in my head. ‘The road we’re on’ became ‘the node we’re on’ and the next thing I know I’m writing a parody about the runtime, and errors that could have been detected by the compiler in other languages or with stricter compiler settings but instead aren’t detected until runtime. I didn’t end up using the ‘node’ line. The first verse barely needed changing, so for fun I tried to keep as many words from the original as I could in the rest of the parody as well. Whether that’s a good thing depends on your taste and how well you know the original. Feel free to sing it if that’s a thing you can do!

We were blind to every sign
That we should have seen
In a clearly broken line
Machine to machine
Our mistakes were the future
But no one could tell

Lots of errors to detect
The tests didn’t show
The things compilers could have checked
We just let it go
Walked away as assumptions
Crumbled and fell

We bust our arse
To find the errors the machine could parse
Catch it just-in-time
Here in the runtime

Cast the pointer to a type it’s not (runtime)
Walk the edge case of the code we’ve got (runtime)

Every bit was filed away
There’s memory to fill
There’s no message that could say
Receiver is nil
We don’t heed any warnings
Try it and bail

Cast from Any type to this
The object’s a tease
Reflect to find out what it is
A sudden unease
If the data’s corrupt
Then when did it fail?

We soldier on (just a flesh wound)
Heap space and registers are almost gone (memory use ballooned)
Watch the stack unwind (maybe we’re doomed)
Here in the runtime

Cast the pointer to a type it’s not (runtime)
Walk the edge case of the code we’ve got (runtime)

The caller of the method must not do this
Everything’s your fault, you have been remiss
Code is fine, the world has something amiss

All the tests have slipped away
Just garbage I/O
I won’t last another day
And neither will O
EOF of a stateless mutable thing

The data’s blitzed (blame the new hire)
There’s nothing left that can remember it (cut the red wire)
But this is fine (halt and catch fire)
Here in the runtime

Cast the pointer to a type it’s not (runtime)
Walk the edge case of the code we’ve got (runtime)

Cast the pointer to a type it’s not (runtime)
Walk the edge case of the code we’ve got (runtime)

I’m not so sure about ‘EOF of a stateless mutable thing’ and whether it would be better stateful or immutable. It doesn’t exactly make sense (does anything, when it’s that far gone?) but it sounds cool, and a lot like the original. I’ll release it like this and patch it in production if necessary. 😉

, , , , , , , ,

5 Comments

A Towel Day quotation creation


May 25th is International Towel Day, in honour of Douglas Adams. The following contains 42 –ation rhymes, 41 of which are found in Adams’ book ‘Last Chance to See…‘:

Earth’s vegetation made slow transformation as each confrontation or new situation provoked adaptation in each generation for eons duration.

Until civilisation, and its acceleration of our population at high concentration with great exhortation and disinclination to make accommodations with administration of conservation.

Then Adams’ fascination and realisation that with elimination of echolocation no cetacean reincarnation will save our reputation; his bold exploration to spread information and fuel education and his determination to stop exploitation by identification and communication of each dislocation of species, his observation and growing frustration we reduce speciation to bone excavation with every temptation to favor our nation and not immigration of distant relations… was his speculation we’d reduce penetration mere hallucination?

This time last year I had just submitted my Masters thesis in Web Development for Linguistics, for which I wrote a macOS application to find rhymes in any text, gave it a lot of text to chew on, added some parameters for features of accent which affect rhymes, and made a website to make those rhymes searchable on the internet. I’m still working on some big improvements to it so I haven’t been publicising it much yet, but it’s the stress-sensitive, accent-aware, mosaic-rhyme-finding rhyming dictionary I always wanted.

That evening I was heading to an open mic night and wanted to do something Adams-related. I happen to have a plain text version of his book ‘Last Chance to See…’ somehow, so I fed it into my app, and noted down the largest group of rhymes. There were 52 distinct –ation rhymes, not counting -ations rhymes or similar derivations. I arranged them into this summary of ‘Last Chance to See…’ while on the way to the open mic. I later added the word ‘cetacean’, which was not in the book, because cetaceans (specifically, baiji, which have since been declared functionally extinct[cetacean needed]) are one of the topics. I was honestly surprised to notice today that I’d used 42 -ation rhymes in total, and I don’t recall whether it was intentional.

The way I went about writing this is summed up nicely by this quote from the book:

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.

I highly recommend the book (preferably the actual book, with photos) for anyone who is a fan of Douglas Adams or of life on Earth. The -ation words in the book which are not included in the above are:

Association
classification
consternation
conversation
evaporation
imagination
operation
preparation
quotation
representation
sensation

If you like this blog and you also like Douglas Adams, you might also be interested in my misinterpretation of the phrase “so amazingly primitive that they still think digital watches are a pretty neat idea” or some haiku I found in Last Chance to See.

Have a great towel day, and don’t panic!

, , , , , ,

6 Comments

Unintentional Haiku in New Scientist’s Medical Frontiers: The Movie


How else can you stare at an empty canvas and see a work of art?I’ve made a new version of Haiku Detector. The main changes are:

  • Performance improvements
  • Tweaks to which haiku are identified when punctuation is pronounced differently depending on line breaks and other factors (this includes a workaround for the ‘all numbers pronounced as zero’ bug I found in the speech synthesiser.) In my test data the list of haiku identified is better now.
  • Bug fixes.

To celebrate the new release, I fed in the text from the latest New Scientist ‘Collection’ issue, on medical frontiers. The funniest haiku arose when the last sentence of one article joined up with the headline and byline of the next. For example, this looks like the tagline of a movie about an underappreciated superhero, fighting to save anti-vaxxers from diseases of yore:

They will not thank you.
Dan Jones FIGHTING INFECTION
Small shot, big impact

After the opening credits, we see our hero Dan Jones in his lab, and the subtitle announcing his first challenge.

DRUG: Chlorotoxin
SOURCE: Deathstalker scorpion
CONDITION: Cancer

His superpowers come, of course, from vaccines:

Some vaccines seem to
provide us with a host of
extra benefits

But not everybody is happy with that:

Several groups have been
trying to develop drugs
that block these signals.

These groups spread propaganda:

Half an hour or
so later, you’ll feel a lot
better. Or will you?

They work around rules:

“Because we use cells,
not field-grown plants, we don’t come
under the same rules.”

And they target humanity by zapping the very microorganisms they’re made up of. Here’s a quote from the evil mastermind:

There are more cells in
your body than there are stars
in the galaxy.

These cells can then be
killed using a laser that
penetrates the skin.

And just when Dan thought he had the solution, the problems compounded to the point of suspension of disbelief, precipitating a crisis. The mastermind had cooked up her own microbial minions:

Those microbes can be
in the environment or
a vaccine syringe.

To make matters worse,
there is a shortage of new
antibiotics.

The sequel, which may or may not be a Doctor Who crossover, features a heroine who will live forever:

“Just endless.” Helen
Thomson REGENERATION
Let’s get physical

Yep, it’s definitely a Doctor Who crossover. Here’s a quote from that movie:

“I’m the doctor. I’m
going to tell you what your
feelings really mean.”

She discovered that time, and specifically time travel, is the best cure for a broken heart:

If we can’t fix hearts
with stem cells there might be an
even better way

As the animal
was slowly warmed, it began
to return to life.

But however clever the TARDIS is, there’s one thing Helen Thomson isn’t sure she can do:

But can we ever
turn the clock back to a world
without HIV?

It turned out, weirdly enough, that the answer was in making sure there was enough shelf space for one’s awards. So she went home to Britain to save the Officers of the British Empire:

On her return home,
she applied those lessons in
British hospitals.

So far, two patients
have had OBEs, but neither in
a room with a shelf…

While we’re making sequels, let’s revive an old favourite, which never had any sequels:

The matrix holds a
dazzling array of future
possibilities.

But what is the matrix?

Normally, matrix
is harvested from human
or pig cadavers.

I guess you have to see it for yourself.

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

Leave a comment

Another Haiku Detector Update, and Some Observations on Mac Speech Synthesis


Screenshot of Haiku Detector

I subjected Haiku Detector to some serious stress-testing with a 29MB text file (that’s 671481 sentences, containing 16810 haiku, of which some are intentional) a few days ago, and kept finding more things that needed fixing or could do with improvement. A few days in a nerdsniped daze later, I have a new version, and some interesting tidbits about the way Mac speech synthesis pronounces things. Here’s some of what I did:

  • Tweaked the user interface a bit, partly to improve responsiveness after 10000 or so haiku have been found.
  • Made the list of haiku stay scrolled to the bottom so you can see the new ones as they’re found.
  • Added a progress bar instead of the spinner that was there before.
  • Fixed a memory issue.
  • Changed a setting so it should work in Mac OS X 10.6, as I said here it would, but I didn’t have a 10.6 system to test it on, and it turns out it does not run on one. I think 10.7 (Lion) is the lowest version it will run on.
  • Added some example text on startup so that it’s easier to know what to do.
  • Made it a Developer ID signed application, because now that I have a bit more time to do Mac development (since I don’t have a day job; would you like to hire me?), it was worth signing up to the paid Mac Developer Program again. Once I get an icon for Haiku Detector, I’ll put it on the app store.
  • Fixed a few bugs and made a few other changes relating to how syllables are counted, which lines certain punctuation goes on, and which things are counted as haiku.

That last item is more difficult than you’d think, because the Mac speech synthesis engine (which I use to count syllables for Haiku Detector) is very clever, and pronounces words differently depending on context and punctuation. Going through words until the right number of syllables for a given line of the haiku are reached can produce different results depending on which punctuation you keep, and a sentence or group of sentences which is pronounced with 17 syllables as a whole might not have words in it which add up to 17 syllables, or it might, but only if you keep a given punctuation mark at the start of one line or the end of the previous. There are therefore many cases where the speech synthesis says the syllable count of each line is wrong but the sum of the words is correct, or vice versa, and I had to make some decisions on which of those to keep. I’ve made better decisions in this version than the last one, but I may well change things in the next version if it gives better results.

Here are some interesting examples of words which are pronounced differently depending on punctuation or context:

ooohh Pronounced with one syllable, as you would expect
ooohh. Pronounced with one syllable, as you would expect
ooohh.. Spelled out (Oh oh oh aitch aitch)
ooohh… Pronounced with one syllable, as you would expect
H H Pronounced aitch aitch
H H H Pronounced aitch aitch aitch
H H H H H H H H Pronounced aitch aitch aitch
Da-da-de-de-da Pronounced with five syllables, roughly as you would expect
Da-da-de-de-da- Pronounced dee-ay-dash-di-dash-di-dash-di-dash-di-dash. The dashes are pronounced for anything with hyphens in it that also ends in a hyphen, despite the fact that when splitting Da-da-de-de-da-de-da-de-da-de-da-de-da-da-de-da-da into a haiku, it’s correct punctuation to leave the hyphen at the end of the line:

Da-da-de-de-da-
de-da-de-da-de-da-de-
da-da-de-da-da

Though in a different context, where – is a minus sign, and meant to be pronounced, it might need to go at the start of the next line. Greater-than and less-than signs have the same ambiguity, as they are not pronounced when they surround a single word as in an html tag, but are if they are unmatched or surround multiple words separated by spaces. Incidentally, surrounding da-da in angle brackets causes the dash to be pronounced where it otherwise wouldn’t be.

U.S or u.s Pronounced you dot es (this way, domain names such as angelastic.com are pronounced correctly.)
U.S. or u.s. Pronounced you es
US Pronounced you es, unless in a capitalised sentence such as ‘TAKE US AWAY’, where it’s pronounced ‘us’

I also discovered what I’m pretty sure is a bug, and I’ve reported it to Apple. If two carriage returns (not newlines) are followed by any integer, then a dot, then a space, the number is pronounced ‘zero’ no matter what it is. You can try it with this file; download the file, open it in TextEdit, select the entire text of the file, then go to the Edit menu, Speech submenu, and choose ‘Start Speaking’. Quite a few haiku were missed or spuriously found due to that bug, but I happened to find it when trimming out harmless whitespace.

Apart from that bug, it’s all very clever. Note how even without the correct punctuation, it pronounces the ‘dr’s and ‘st’s in this sentence correctly:

the dr who lives on rodeo dr who is better than the dr I met on the st john’s st turnpike

However, it pronounces the second ‘st’ as ‘saint’ in the following:

the dr who lives on rodeo dr who is better than the dr I met in the st john’s st john

This is not just because it knows there is a saint called John; strangely enough, it also gets this one wrong:

the dr who lives on rodeo dr who is better than the dr I met in the st john’s st park

I could play with this all day, or all night, and indeed I have for the last couple of days, but now it’s your turn. Download the new Haiku Detector and paste your favourite novels, theses, holy texts or discussion threads into it.

If you don’t have a Mac, you’ll have to make do with a few more haiku from the New Scientist special issue on the brain which I mentioned in the last post:

Being a baby
is like paying attention
with most of our brain.

But that doesn’t mean
there isn’t a sex difference
in the brain,” he says.

They may even be
a different kind of cell that
just looks similar.

It is easy to
see how the mind and the brain
became equated.

We like to think of
ourselves as rational and
logical creatures.

It didn’t seem to
matter that the content of
these dreams was obtuse.

I’d like to thank the people of the xkcd Time discussion thread for writing so much in so many strange ways, and especially Sciscitor for exporting the entire thread as text. It was the test data set that kept on giving.

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

2 Comments

%d bloggers like this: