October 27, 2024 8:50 AM

Not a Birthday Reflection

a maple tree with flaming red leaves, against a clear blue sky, looking down a suburban street with cars and mailboxes
The colors of autumn

Today is my birthday. I won't tell you how old I am, and I promise not to pull a Gwyneth Paltrow. Trust me; no one wants that.

I do not have a birthday essay planned, or any deep reflections on the passing of time. Birthdays have never been times of deep reflection for me. As I grow older, they have not yet started to mean anything different to me, even as I realize that they will be fewer and fewer. I mostly think of them as a time to relax, think on the good things in my life, and get on with living it.

It's just as well that I have no birthday essay planned. My friend Daniel Steinberg wrote about his birthday a few weeks ago, and I cannot improve on what he said. Daniel turned 65 this year, a milestone in a culture that emphasizes youth. Daniel, though, is still learning and teaching us what he learns with his books and presentations. He notices now that the other attendees at the conferences where he speaks are much younger than he is:

I'm the same age or older than their parents.

I'm sure they see me as old.

For the most part, it is much worse in my head than in theirs.

I know this feeling. I work with college students every day. I'm older than all their parents now, and probably not that much younger than a few grandparents. I'm sure they seem me as old, but how much of that is in my own mind?

I have a few years before I reach sixty-five, but it's close enough that I've been told I should start thinking about retirement and investment accounts and a different kind of life. But I'm of the same mind as Daniel: "Retire to do what? Travel? Do things I'm interested in? I do all that now." The life of an academic, at least one fortunate enough to have found a steady, secure position, is good: we read, write, and teach the thing we love. As long as I can do these things well enough and enjoy them, I will.

2024 has been, in some ways, an eventful year. My dad died unexpectedly this summer. A couple of months later I learned that one of my college mentors died around the same time. Those were times of reflection for me. On a more uplifting note, my wife and I got to visit our daughters in Boston this spring and spend time with our favorite people in the world. Later we took a 48-hour break mid-summer to visit Minnesota and ride the full length of the Sakatah Singing Hills State Trail and back in one day. Riding 85 miles gives you plenty of time to enjoy the beauty of the world. (That's a blog post I've been meaning to write for three months...)

This is a milestone birthday for me, too, as counted by the rest of the world. However, a few years ago, I started enumerating my birthdays in hex (base 16), a shrewd move for a computer scientist. That means I am still comfortably in my 0x30s, young enough to keep doing the things I love to do.


Posted by Eugene Wallingford | Permalink | Categories: General, Personal

October 15, 2024 3:33 PM

People Love Things That Are Not Like the Internet

Andrej Karpathy loves his calculator, and I like his post about how he loves his calculator. I was planning to quote the beginning of one paragraph as a teaser, but I could not decide where to clip the passage. Each sentence is worth seeing. I hope he does not mind that I show you the entire paragraph with encouragement to read the entire post:

Let's put this in perspective to the technology we increasingly accept as normal. The calculator requires no internet connection to set up. It won't ask for bluetooth permissions. It doesn't want to know your precise location. You won't be prompted to create an account and you don't need to log in. It does not download updates every other week. You're not going to be asked over and over to create and upgrade your subscription to the Calculator+ version that also calculates sine and cosine. It won't try to awkwardly become a platform. It doesn't need your credit card on file. It doesn't ask to track your usage to improve the product. It doesn't interrupt you randomly asking you to review it or send feedback. It does not harvest your information, for it be sold later on sketchy data markets, or for it to be leaked on the dark web on the next data breach. It does not automatically subscribe you to the monthly newsletter. It does not notify you every time the Terms of Service change. It won't break when the servers go down. The computation you perform on this device is perfectly private, secure, constrained fully to the device, and no running record of it is maintained or logged anywhere. The calculator is a fully self-contained arithmetic plugin for your brain. It works today and it would work a thousand years ago. You paid for it and now it is yours. It has no other master. It just does the thing. It is perfect.

You paid for it, and now it's yours.

My favorite pieces of software and favorite creators of software embody this ideal, at least as much of it as they can given the constraints of the modern tech world. Audio Hijack from Rogue Amoeba comes to mind and Acorn from Flying Meat come to mind.

That said, I loved calculators long before the web existed at all. Young Eugene had many hours of pleasure noodling on a calculator, playing with numbers. I first learned about rounding errors and limits by typing in a number and repeatedly hitting the square root key until the display showed a 1. I computed batting averages and winning percentages for my favorite teams and players. Eventually I was computing chess ratings by hand, until I sensed what a computer program could do for me. That would become the first program I ever wrote out of passion.

Even after learning to program, I never really lost the joy of tinkering with an old handheld calculator. It just does its thing. It is perfect.


Posted by Eugene Wallingford | Permalink | Categories: Computing, Personal, Software Development

October 10, 2024 9:14 PM

TIL Two New HTML Tags

Today I learned that HTML's <strike> tag has been replaced by two tags, <del> and <s>.

I knew that <strike> had been deprecated but had never needed to learn its replacement, or that a replacement even existed. I used it occasionally back in the days when dinosaurs roamed the web, but only rarely since. When I used it, browsers always displayed the text as expected, so I took the easy route and kept on using it.

Two things have changed since the last time I used <strike>. I taught web development for the first time last fall and decided that I wanted to write modern, compliant HTML and CSS whenever possible, both as a good example for my students and as a way to up my web game to the 2020s. The second change was more abrupt: I used <strike> today and encountered a browser that no longer supports it.

At first, I figured I'd just write a little CSS to simulate the desire behavior with a class. That's the sort of thinking that knowing CSS makes possible. But I also know that HTML includes a remarkable set of elements and that we should prefer native HTML whenever possible. So I looked <strike> up in the MDN documentation. As they say, RTFM! The documentation enlightened me.

The two replacement elements have different semantics for the act of striking through text:

  • <del> is for information that has been deleted
  • <s> is for information that is no longer correct

Now I have to think about which of these I mean when I decide to strike text in a page. But I don't mind this at all. I'm a big fan of HTML's semantic elements. What we write should express our intent, and these elements help us encode meaning and structure directly into our documents.

Even better, browsers and screen readers can use the structure of a document to present it more accurately, which means that using semantic elements makes our web pages more accessible to visually-impaired readers.

Further, using semantic elements also makes our pages more ready for futures that don't exist yet. I love the story in this blog post about how pages written with semantic markup displayed properly on the Apple Watch, even though they had been written well before the product launched. (If you'd like to jump directly to that story in the post, search for "NEW TYPES OF DEVICES".)

To bring my story to a close: I decided to use a <del> tag in the page I was writing for my students. The text in question was a bad idea, so I marked it as deleted. Whenever I open up this page in the future, the markup will include a hint as to why the text has been stricken.


Posted by Eugene Wallingford | Permalink | Categories: General, Software Development, Teaching and Learning