With the World Baseball Classic coming up, I pulled every baseball player in the Lahman Database whose name perfectly matches a country. Here are some simple statistics among the country representatives with a batting record.
Country Name
Total Hits
Total Homers
Total AB
Batting Average
AB/HR
Jordan
5669
450
21717
.261
48.26
Chad
3854
384
15903
.242
41.41
Germany
2569
56
10346
.248
184.75
France
662
74
2514
.263
33.97
India
482
63
1905
.253
30.24
Chile
142
0
627
.226
NA
Holland
127
3
618
.206
206.00
Jersey
111
2
727
.153
363.50
Portugal
89
2
450
.198
225.00
Poland
39
0
211
.185
NA
Israel
33
6
132
.250
22.00
Monaco
2
0
13
.154
NA
Ireland
1
0
7
.143
NA
Ceylon
0
0
18
.000
NA
Total
13780
1040
55188
.250
53.07
Here’s a fun bit of trivia about these Jordan folks: Until 1999, every player matching Jordan had it as their last name. Since 1999, all but two have the first name Jordan.
What a delight. Musical instruments exist at an intersection of craftsmanship and engineering, and this competition gives an outlet to people who want to travel to the far reaches of those axes. It asks wonderfully inventive wackos to build fun and genuinely new instruments that they also need to be able to play. As a percussionist who has always been delighted by ratchets and vibraslaps, and was enthralled by a theramin in high school, the finals for this competition will now be on my radar as a ridiculous excuse for a quick trip to Atlanta.
I enjoy hosting trivia, and have now done so twice over Zoom for a core group of friends back in San Francisco. I thought I had shared the first batch on here back in 2024, but evidently not. So, here are both rounds, obviously geared towards my interests and inside jokes among these friends. They are provided as slideshows without the answers, so test yourself and have fun.
Core to my effort to improve this blog and my writing more generally is a better revision process. I now use tools to catch mechanical errors or to point out when I’ve slipped into passive voice accidentally, but that doesn’t address the flow of prose, the feel of the words washing over the reader. Reading out loud is a superb way to improve, but I’m not always in a position to do that.
So, last year, I built an Apple Shortcut that takes a Markdown file and converts it to an MP3 read by a premium Apple text-to-speech voice. This was fine, but clunky. I couldn’t easily adjust the reading speed, and finding the start of some paragraph to revisit meant scrubbing through an audio file. In short, I rarely used it.
After determining no simple app exists that had my basic criteria—Markdown editing and preview, ability to use built-in voice models, variable reading speed, and the ability to select a paragraph to read—I blindly threw the problem at Claude.
It did a fine job on the first try, generating an HTML file with an embedded script that, in total, was only around 15 kB. The only issue was that it couldn’t find the premium “Zoe” voice I knew was available when I opened the file in Safari—Claude’s recommendation. When I instead opened the file in Firefox, my browser of choice, everything clicked.
Then, we had ten minutes of quick iteration. I requested:
A way to start progress at a (somewhat) arbitrary point in the text file. Its solution was to allow each paragraph to be clicked, and the voice would begin reading that selected paragraph.
Simple menus to select the typeface and font size for the editor and preview windows.
A dark/light theme toggle.
A setting to adjust the paragraph highlight color in the preview window. It had defaulted to a rather aggressive yellow.
Here’s the final result.
Claude capably handled everything, and given my lack of large-scale programming knowledge, I was shocked it managed to build this using only the chat interface. I began this project assuming it would be my first opportunity to use Claude Code. I guess I’ll need to imagine something more ambitious.
You can access the Markdown Reader HTML file here, and follow instructions for getting the Zoe premium voice on macOS here.
We were lucky to see Lisbon during a “coastal event”, as our weather apps described the inclement system to us. Serpentine cobblestone streets glistened in the aftermath of an afternoon shower, the sun that much more appreciated for the damp and cold that threatened our plans. Wicked gusts whipped through the narrow, curving streets and pinch points like someone testing for leaks in the plumbing, a few catching us head-on as we headed uphill. All of this added to the character of our visit and further reminded us of San Francisco, a familiar city with its own set of hills and odd streets, cable cars and coffee shops and eccentricities. San Francisco also has a cool tower, though Lisbon has a thousand-year-old castle. Parallels abound, except for Lisbon’s lack of parallel streets.
I won’t further debase Lisbon by comparing it to a city so far its junior.
I last edited this draft back in 2020. I vaguely recall wanting to write more here and probably revisit the diagrams, which were made entirely using Asymptote. But it’s a good post and worth publishing.
I made my first Möbius strip during my sophomore year of high school in math class. Since then, I have been fascinated by their construction and mere existence. I share them with every person I can, basing my own presentation on a mix of my math teacher’s introduction, provided so many years ago, and a wonderful talk given by Matt Parker at the Royal Society.
I’ve added a Food page to the sidebar to document what I make this year, or to admit when a week has slipped by with minimal kitchen time. It’s a mixture of accountability and a desire to track how this Year of the Kitchen goes.
I officially left Art of Problem Solving on January 1. After over 7 years of full-time employment, and over 8 years total when I include contract work and my summer internship, I have my second post-college employer: Inflection Point Learning. The upshot is that AoPS partially own IPL, and nearly every person in our small Institutional Sales department moved with me. My job title is the same, my immediate boss and one direct report haven’t changed, but the new context gives some sparkle and flavor to this second phase in my career that I’m beginning just shy of thirty years old.