The first 500 digits of pi

When I was in high school there was a kid whose hobby was memorizing the digits of pi. He wasn’t particularly into math — in fact he was a very talented and dedicated musician. But he just enjoyed memorizing digits of pi.

None of this really mattered until one day when our math teacher asked whether anybody knew the first digits of pi. This kid piped up “I know the first 500 digits.”

The teacher, knowing that this kid was an indifferent math student, must have thought this was just an attempt to disrupt the class. What happened next was awesome.

The teacher handed the kid a piece of chalk, and said “write the first five hundred digits of pi on the blackboard.” Meanwhile, the teacher picked up his trusty Chemical Rubber Company book of math tables, while the kid proceeded to fill the board with numbers.

When he was done, the student put down the chalk and went back to his seat. The teacher, looking back and forth between the digits on the board and the book in his hands, slowly realized that this was the real deal.

For those of us in the class, seeing the board filled with the first 500 digits of pi was wonderful. But seeing the look on the teacher’s face was even better.

Reincarnation, revisited

Reading over yesterday’s post, I had a sense of deja vu. And then I realized why: I was not talking about something in the future, but rather about something in the past.

When I developed the first general purpose procedural shader language, back in early 1984, there were no GPUs. Which means that I was operating with fewer constraints.

My key innovation was to run a fully featured custom designed computer program at every pixel. Because I was operating on a general purpose CPU, I was able to design my shader language any way I wanted.

One feature that I put in was to have vectors and matrices as primitive data types, and operations between them as native operations. This was, after all, a programming language for graphics.

But another feature that I included was a Lisp-like semantics. I could define lightweight functions at any time, and then use them as a kind of shorthand.

So my shader language ended up being, like Lisp or APL, a sort of meta-language. As I added new operators, it got progressively easier to use the language to define and experiment with procedural lighting and textures.

This is not the way today’s GPU languages work. They tend to be very rigid in their structure and data typing, because they are trying to make it easier for the compiler to optimize the code you write.

But I suspect that as GPU compilers continue to evolve, that old wheel of reincarnation will continue to spin, and people will be able to program for the GPU with the same flexibility that I was enjoying over 40 years ago in the world’s very first shader language.

One foot in each world

This week I decided to reimplement some algorithms I had originally written many years ago at the beginning of my career. It was interesting to see what was the same and what was different.

The algorithms themselves were the same. But the experience of implementing them was surprisingly different.

Today programming languages are very different than they were when I was first starting out. For one thing, unlike when I first started programming, you now have the choice of implementing on the CPU or the GPU.

So I decided to implement the same algorithms for both CPU and the GPU, just to compare and contrast. It was fun to explore the complementary superpowers that you get within those two different programming worlds.

GPUs are all about raw power. For example, they make it super easy for you to manipulate vectors and matrices. In contrast, CPU programming is all about flexibility. For example, you can create and run a new function right in the middle of doing something else.

I suppose that one day those complementary superpowers will be gathered into a single programming environment, and then we will have it all. But until then it’s fun to keep one foot in each world.

Frozen in amber

I have fond memories of actors and actresses who were in TV shows when I was a child. And of course I have a natural tendency to ask “Whatever happened to…”

But I am starting to realize that somebody I fondly remembered from my childhood TV watching is probably not around anymore. On a rational level this is an obvious point, but on an emotional level it feels very strange.

My memory of these people is frozen in amber. I remember them as being exactly as they were when I was a kid. So there is something unnerving in the thought that the people I remember from that time are, at the very least, very changed — and in many cases are no longer with us.

I guess that is part of the magic and mystery of television. In real life people grow old and eventually pass on. But on TV, you remain young forever.

Superfan

I just this week discovered the Superfan version of The Office — the version where they include all of the improvised scenes that were originally edited out.

It is even more cringe-worthy. And yet it is so much better.

When all of the scenes of those characters at their most utterly embarrassing and unforgivable are included, the characters gain a level of unexpected humanity. It seems ironic, yet so it is.

I suspect there is some deep lesson here.

Suze Rotolo, part 5

So what can we learn from all this? For one thing, it seems that men have a need to remove women from origin stories.

Charles Fox worked very hard, unsuccessfully, to remove Lori Lieberman from a song they wrote together about her own lived experience. Which is particularly ironic, because the title phrase “killing me softly” was actually borrowed from the 1966 English edition of the novel Hopscotch by Julio Cortázar.

Meanwhile, Suze Rotolo was the inspiration for the song Bob Dylan wrote in 1962, closely based on a song recorded two years earlier by another artist. And both of those songs are musically quite similar to a 1973 Fox/Gimbel song that Charles Fox is suggesting Robbie Williams copied from him in 2024.

And in this year’s Dylan biopic, Suze Rotolo’s name has been changed to a pseudonym, because Dylan said that Rotolo had been a private person who would not have wanted her name to appear publicly. And yet Rotolo had taken the trouble to write an excellent and widely read memoir, which doesn’t seem like the act of a person who does not want to be publicly known.

So why do men keep trying to keep women like Lori Lieberman and Suze Rotolo from appearing in their own origin stories? After all, it just ends up making the men look bad, and everyone finds out the true story anyway.

Frankly, I have no idea why men keep trying to do this. But hey — don’t think twice, it’s all right.

Suze Rotolo, part 4

The reason that Suze Rotolo is on the cover of The Freewheelin’ Bob Dylan is that she was his significant other when he was writing those songs. In fact, the song Don’t Think Twice, It’s All Right is about her.

Rotolo went to Perugia Italy to study art, and Dylan was unhappy that she extended her stay there. That song was his way of expressing his annoyance. You can read the details in her wonderful aforementioned memoir A Freewheelin’ Time.

But the story of Don’t Think Twice, It’s All Right is even more interesting. It turns out that it’s not really an original song, but rather a brilliant adaptation.

It’s a riff on the traditional song Who’s Gonna Buy Your Chickens When I’m Gone, and Dylan learned it from fellow folksinger Paul Clayton. In fact, in 1960 Clayton had already recorded his own adaptation called Who’s Gonna Buy You Ribbons When I’m Gone?.

Dylan’s version, in addition to borrowing the music, also borrowed key lyrical phrases from Clayton’s song, including his opening line as well as that great lyric “I’m walkin’ down that long, lonesome road.”

So there’s that road imagery again, later used in I’ve Got a Name and then again in Forbidden Road. Musically, all of these songs are highly similar, and it’s not clear where the credit should go, since the author of the original inspiration — Who’s Gonna Buy Your Chickens When I’m Gone — is unknown.

But I think there are lessons to be drawn from all this. More tomorrow.

Suze Rotolo, part 3

As it happens, when I’ve Got a Name was released in 1973, it had already been a full decade since the release of a very similar song. Bob Dylan’s Don’t Think Twice, It’s All Right was written in 1962 and released in 1963.

It’s impossible to listen to the two songs without noticing their uncanny musical similarity. Also, like Forbidden Road, both the Bob Dylan song and the Fox/Gimbel song prominently feature the imagery of roads:

I walked along a forbidden road
I had to know where does it go
Like birds that fly into the sun
I had to run, I’m not the only one

— Forbidden Road (Williams 2024)

Like the pine trees lining the winding road
I got a name, I got a name
Like the singing bird and the croaking toad
I got a name, I got a name

— I’ve Got a Name (Fox/Gimbel 1973)

I’m walkin’ down that long, lonesome road, babe
Where I’m bound, I can’t tell
But goodbye’s too good a word, gal
So I’ll just say fare thee well

— Don’t Think Twice, It’s All Right (Dylan 1962)

The enormously influential album that the Dylan song appears on is called The Freewheeling Bob Dylan, and Suze Rotolo appears on the cover. There’s a good reason for that.

More tomorrow.

Suze Rotolo, part 2

The connection between Suze Rotolo and Forbidden Road may not be obvious, unless you are a pop music geek. Here’s a little back story.

Charles Fox, who is now 84, is a prolific composer of popular music. I first about him many years ago because he collaborated with Lori Lieberman and Norman Gimbel on Killing Me Softly with His Song, which was based on Lieberman’s experience in 1971 hearing Don McLean in concert sing his beautiful song Empty Chairs (one of my favorite songs).

Fox and Gimbel managed to deny Lieberman writing credit for the song (and therefore millions of dollars in royalties). Over the years they also tried, very unconvincingly, to deny her contribution.

Another Fox/Gimbel song was I’ve Got a Name, which became a posthumous hit in 1973 for Jim Croce. And that’s the reason the Robbie Williams song Forbidden Road was recently removed from the Oscars shortlist for Best Original Song.

Fox, who is currently a member of the board of governors of the Academy of Motion Picture Arts and Sciences, said that the Robbie Williams song was too similar to I’ve Got a Name. Which is quite arguably true, but which also leads us back to Suze Rotolo.

More tomorrow.

Suze Rotolo, part 1

I remember back when I read A Freewheelin’ Time: A Memoir of Greenwich Village in the Sixties, the artist Suze Rotolo’s memoir of the time when she and Bob Dylan were dating in Greenwich Village in the early 1960s. Her book made a huge impression on me, as a clear eyed and perceptive window into the Village folk scene.

I was delighted to later learn that while I was reading that book, she was teaching at the Parson’s School of Design, just across town from NYU. In the back of my mind, I imagined that I would one day run into her.

Alas, Suze passed away in 2011, and I never did get to meet her. But I did think about her yesterday morning, when I learned that she was represented as a character called “Sylvie Russo” in A Complete Unknown, the newly released docudrama about Dylan in the 1960s. Apparently Dylan had requested that the film not use her real name.

Coincidentally, yesterday evening I read that the Robbie Williams song Forbidden Road was just removed from the Oscars shortlist for Best Original Song, because it sounds too much like a certain other song. And that immediately made me think of Suze Rotolo.

More tomorrow.