Revisiting, revisited

As I continue this process of digging up my own code and working with it, I am discovering some surprising things. For one thing, I don’t always agree with myself.

Back then I had a tendency to build things up a lot. Given a choice, I would generally go for the fancier and more comprehensive solution.

These days I am much more into minimalism. I am now willing to sacrifice one or two fancy features in order to make things simple for the user.

It’s as though I’ve become more Zen as a programmer. As Thoreau said, simplify.

This is leading to a somewhat odd situation: As I “collaborate” with my younger self, I find us disagreeing quite a lot.

Fortunately, it is a polite disagreement. The two of us are unlikely to resort to fisticuffs.

Convergent recursion

I’ve always thought that the best way to document some algorithms is to write a little program that animates the algorithm. Ideally the animation could be invoked right from the source code of the algorithm. Whenever anybody looks through the code, they have the option of running the accompanying animation, to show them how the algorithm works.

But it occurs to me, what about documentation for the program that creates the little animation? Shouldn’t that code be documented as well? After all, somebody might want to also know how that animation works.

If we follow this idea to its logical conclusion, we could get an infinite chain of recursion. An animated program that documents an algorithm needs its own documentation, and so on and so on. It could go on forever.

Fortunately, that’s not actually what happens. Programs that animate algorithms tend to be very similar, when you look at them as algorithms themselves. So the documentation of such programs tends to converge.

This looks like a case of convergent recursion. Which makes me happy, because it is going to save me a lot of time.

Chocolate

I love chocolate. I think it is one of the greatest things that has ever happened to humanity. I cannot imagine my life without the delicious taste of chocolate.

And yet, if chocolate never existed, would I realize that something so important and essential was missing? Would I realize there was a hole in the fabric of reality if I didn’t know that it was possible not to have that hole in the fabric of reality?

I would like to think that somehow I would be aware, if chocolate didn’t exist, that we were all missing something very very important. But maybe that is just the hopeless romantic in me.

Collaborating with yourself

After enough time has gone by, reading your own software takes on an interesting aspect. You are rediscovering things that you created years ago, but now you are looking with fresh eyes.

One odd thing about the process is that even though the person who wrote the code is yourself, there is a part of you that feels separate from them. After all, you are thinking about very different things now, whereas they are completely immersed in the thing they are creating.

So it can feel like a sort of collaboration with yourself. In essence you are doing a code review of somebody’s computer program, except the person whose code you are reviewing is you.

Finding old code

Every once in a while I find some really cool code that I had written years ago. It’s usually something that implements a capability in computer graphics or animation.

When that happens, I have a shiny new toy to play with. Because in all of the time since I had written the original code, I’ve had years to think about questions like “What would I do with something like that?”

So when the code shows up, I usually put it right to work solving problems that I hadn’t even thought of yet when the code was new. And that makes me very happy.

What Zoom is better at

When meetings can’t be face to face
We are stuck using Zoom in their place
    For things academic
    This awful pandemic
Can feel like an obstacle race

So while in our homes we are sittin’
There is a good rule (though unwritten)
    You can help break the ice
    And make things more nice
If you show your new puppy or kitten

Editing an email after sending it

Using most current email client software, I can easily send you an email. But I can’t change it once it has been sent.

Alternatively, I can choose to do things in a much more formal way, sending you a link to a Web page or a Google doc. In that case I can continue to modify my message after the fact.

To me it feels as though we are being forced to one of two extremes, when there really should be something in between. Email clients should provide an easy way of creating a casual modifiable document just for the purposes of our email communication.

You and I would both understand that I am sending you a message that contains evolving content. You can then choose to reply with your own message which contains evolving content.

But we would not need to go to the formal step of declaring “here is a document on the Web.” Instead, we would just understand that our respective messages continue to be editable — or perhaps contain designated sections that remain editable.

Is that asking too much?

Fonts with personality

People have distinct personalities. So do text fonts. I wonder whether we could combine together these two concepts.

When we look at certain text fonts, we usually agree that they look happy, or elegant, or frivolous, or foreboding,or any number of qualities that we usually associate with people. We could probably run a supervised machine learning algorithm that would train a font generator from labeled examples.

We could then, for any well described human personality, develop the perfectly descriptive font.

This might be a very useful thing to have. For example, in online text chats, we could immediately know what kind of person we are dealing with.

We could apply the same principle to written stories with narrative voices. As each person talks, the text font of their speech can be made to reflect deep aspects of their personality.

This was actually done a long time ago in the world of comic books. My uncle Abe Kanegson was a letterer for Will Eisner’s The Spirit series of comics back in the day. He would invent new fonts to match particular scenes, situations and personalities.

And now, all these years later, we can finally do that with computers!

first_name|title|default

Today I received an email from a company from which I had previously ordered stuff on-line. I got a kick out of the engaging subject line of the email, reproduced here verbatim:

Hey { first_name|title|default:’there’ }}, ready to reorder?

There is something vaguely sweet and clueless about this: A company tries, yet spectacularly fails, to provide a human touch.

They attempted to reach out to me in a personal way, but relied entirely on buggy software to do the deed. So I ended up getting this weird garbled message from an unambiguously non-human bot.

You can cut the irony with a knife.

And it makes me wonder. How many so called “human interactions” with vendors involve no human at all in the loop?

How far along are we toward a dystopian future that many of us fear: A world in which all too many of our so called “personal” interactions do not involve any other human being at all?