Retrogaming and retro-disking in Rome

I went down a little bit of a rabbit hole this weekend, thanks to an online index of Open Source Game Clones—basically, freely available re-implementations of old paid games. The first game I looked up was Caesar III, which was one of a few games (along with Marathon and Myst) that I played a lot on nights that Lisa was attending grad school classes, in our apartment in McLean, Virginia. It’s a city building game that allowed you to experiment with, as my college friend attorney Tim Fox would say, zoning. Namely — if you make streets too long, if you fail to build adequate agriculture or mercantile or entertainment options, your city fails to thrive and stand up against invasion.

Lo and behold, Caesar III has a few open source clone projects, of which one, Augustus, is an active project with a Mac port. So I went to check it out. Like Devilution, Augustus emulates the engine of the game — the actual Mac application that runs the game, takes input, handles saves, etc. It does not attempt to recreate the original game assets (art, storylines, music); instead, it requires you to provide them.

I actually still have my original Caesar III CD-ROM, but found that I couldn’t get it to read with my Mac’s SuperDrive. That, it turns out, is because modern Macs can no longer read HFS file systems, which many CD-ROMs meant to be read by Macs in the 1990s used. HFS was replaced by HFS Plus in 1998, which is still supported today, but if you have old media (floppies or CDs) formatted with HFS, you can’t read them with modern drives—at least, not without the help of additional software.

I explored a couple options to get access to the disk (as well as a few other disks that were in the same binder). All options required using the Mac Disk Utility to create a disk image (.DMG) file from the CD-ROM. Once done, you can then find software to read the image. One option that seemed promising was a set of command line utilities called hfsutils, which can be installed via Homebrew and which promised access to mount and access HFS-formatted disk images. But you need to be very precise with the commands to copy these files and I couldn’t figure out a way to work with them other than one at a time. (There is, of course, a way, using the -f flag and the wildcard, but I didn’t find that until later.)

Enter a most useful utility, Kevin Brewster’s HFS. It is very simple: drag an HFS formatted disk image onto the app window and tell it where to save the files. And it works! … Except… it copied the Mac installer out, which Augustus can’t use, and I couldn’t get the installer to run from within my Classic Mac emulation environment.

So I went to plan B. It turns out that you can buy the Windows version of Caesar III on GOG for about $6, and Augustus can use those game files. So now I’m up and running again, and re-learning all the frustrating bits of Roman zoning law.

But the exploration of HFS utilities wasn’t wasted time. I think the HFS utility will turn out to be a great way to get content off old floppies… and that’ll be the next project.

Apple Music library cleanup time

I’ve been working in the background on a long-overdue project: cleaning up my Apple Music library on my Mac. As longtime readers know, I have a lot of digital music, having not only ripped my original 1000+ CD collection but also quite a few records, and have been a major purchaser of downloadable music as well. That means a lot of tracks—over 70,000, to be precise. And more than will typically fit on the internal drive on a Mac, so I’ve been hosting them on an external drive for years. And that works well … except when it doesn’t.

Problem number 1: Let’s there is a power outage and the Mac unexpectedly shuts down. When the power comes back up, there’s a race condition where the Mac is back up and running before the external drive is fully mounted. That wouldn’t be a problem, except that Music (and iTunes before it) automatically reopens after a crash, so it thinks the volume where all the music is has disappeared. And that wouldn’t be a problem, except that if you then go on to work in Music instead of shutting it down and reopening it, it gets confused about where the music is and somehow ends up creating duplicate entries of some songs in the library—one entry for the local file when the drive comes back on line, one entry for the entry in the remote library.

It gets worse. It’s possible to do this multiple times. I have had to clean up cases where there were three copies of each song on a given album.

And the cleanup is manual. I typically have had to go album by album in the Songs view; sort by Cloud Status (“Matched”/“Uploaded”/“Duplicate”/“Removed”/“Waiting”), remove the songs I didn’t want to keep, and then do cleanup on the rest. How that happened depends on what the situation was:

  • Lossless rip marked as “Removed” or “Duplicate,” low-res copy marked as “Matched” or “Uploaded.” This happens a lot. The answer turns out to be pretty simple: select all the low-res versions, right click and choose Remove Download, then select all the lossless copies, right click and choose Add to Library. And wait. Sometimes, depending on the fates, the tracks stay in “Waiting” status indefinitely. Fortunately you can choose “File” > “Library” > “Update Cloud Library” and force it to re-evaluate its life choices.
  • Low-res copy marked as “Removed” or “Duplicate.” This is an easier fix. Just delete the low-res copies.

Of course, you have to repeat this album by album. Did I mention I have over 7,500 albums? Breaking it up by genre helped my sanity.

The very worst is when the library itself gets hosed. I got in a situation a few weeks ago where I was seeing tracks marked as Duplicate but there was no duplicate in the library. I finally realized that somehow, the last time I had reconnected the Cloud Library to my computer, it had not completely downloaded all the available tracks. I crossed my fingers, turned off Cloud Library, rebooted, and turned it back on, and all the missing tracks appeared.

This last opportunity turns out to be an excellent restorative, for both the library and your heart, and I don’t recommend it if you’re out of shape. But I finally am at a point where all the tracks are de-duplicated and only a few (which are probably legitimately corrupted) show up as in an error state.

Progress! Now, I have to fix the duplicated playlists…

Historian’s tools: PDF to PNGs

One of the fun things about being the historian of a musical group in the 21st century is that there is so much of the group’s history that’s already digital. But that sometimes presents a challenge, too.

Take PDFs. The ubiquitous Portable Document Format is great for providing computer readable versions of concert programs and newsletters, but not so great for displaying on the Web for research. And recently I realized that I had a bunch of PDFs that I had never added to the Virginia Glee Club Wiki, the repository where the history of the Glee Club lives. What to do?

Enter Automator. This tool, which I use far too rarely, is a great way to take repetitive tasks and make them easy. I used it to build a workflow for turning PDFs into a series of individual PNGs for web display. The workflow, which is dead simple, is above. Basically: take a PDF, render PDF pages as images (a built in action), and copy to a destination folder. I think that the final step is no longer needed since copying the additional pages already adds a numeric suffix.

Saving the workflow as a Quick Action puts PDF to PNGs on the context (right-click) menu in the Finder for PDFs. So it ends up looking like this:

And that means I can take a folder full of PDFs and turn them into web pages like this.

Apple Music annoyances, again

Another round of bugs with Apple Music in MacOS Catalina. These were more subtle issues that cropped up in the months after I first took the plunge and updated my library. Well, actually, just one issue, but it’s a big one:

Playcounts get forgotten: This one is driving me nuts. Apple Music does a great job of tracking play counts like it’s supposed to… until you quit and restart it. Then play counts go back to zero. Someone on the Apple Discussions thinks it’s restricted to tracks that came from a source other than the Apple Music service, which is pretty much every track in my library thanks to Bandcamp, HDTracks, and my CD and vinyl ripping projects.

Some of the other bugs have been straightened out as I’ve cleaned up my library and Apple has released new updates. I hope this one gets cleaned up because it’s maddening.

The Untitled Goose Game is the game we need right now

It’s a sign of how incredibly high our boredom levels are that we bought a Nintendo Switch this past week. It arrived yesterday and we hooked it up. Of course the games we ordered won’t come until later this week, but we checked out the online store and there it was.

“What’s the ‘Untitled Goose Game’?” Lisa asked.

I explained about how the mission of the goose is to be as obnoxious as possible to the people of the village.

“Get it,” she said.

After playing it for a while — and having The Boy play it — I ended up buying a copy for our Mac too. There’s something about being a butthead goose that is amazingly satisfying.

Apple Music follow up – iPhone tips

Following last week’s post about plunging into Apple Music, I have to temper my initial mild exuberance with some reality checks about things that didn’t work so well, and how I got past them. The issues are almost all related to my iPhone, but there was also some playlist weirdness that I had to work through.

Learning number 1: You can’t copy music to your iPhone via sync when you choose to sync your whole library via iCloud. This seems kind of obvious when you write it out that way, but this was a major problem because lots of playlists were just not showing up for me when I flipped my phone to do a library sync with iCloud. These included my smart playlists that I listen to almost all the time (and which I’ll have to write up sometime soon).

Learning number 2: The new Finder-based iPhone sync doesn’t pick up newly created playlists until the Mac Music app is quit. I thought I was losing my mind, because in an effort to fix the missing playlists problem, I created new copies of the playlists with the same rules but different names. And none of them were showing up in the Finder iPhone Sync window. After I quit Music, the new playlists appeared, as did other changes that I made.

This reminds me of something I remembered about third party apps that read the iTunes library file a long time ago — certain changes had to wait for the app to quit because it would keep the file locked until then. Or maybe it was that there was an XML shadow copy of the library that was only updated on Quit? Anyway, I now could at least see the playlist.

Learning number 3: Sometimes you just have to burn it to the ground and start over. Even after I saw the playlist in the Finder, clicked the checkbox, and synced my iPhone, I still didn’t see the playlist when I opened the Music app in the iPhone. This morning I just decided to hell with it, turned off all music syncing, then turned it back on and copied the playlist over. Which worked.

I’m kind of glad I did this, because it gave me some evidence for some benefits in syncing in Catalina. I copied over about half my playlists — tens of GB of data — in less than 30 minutes. This gives me confidence that the underlying synchronization should be at least as fast, if not faster, than the iTunes based sync in Mojave and before.

Other observations:

Syncing your library sometimes duplicates playlists. I’m not sure where the issue was here, but I had something like two or three copies of some of my common playlists after turning on library syncing on my iPhone, iPad and work computer. I deleted the extras, crossing my fingers that I wasn’t causing any problems, but am not sure that this didn’t contribute to the issues I saw on my iPhone.

The way playlists show up in the Finder is a mess. The list of playlists is a garbage fire. Possibly related to the observation above, I saw not only playlists but folders duplicated in the Finder list—and the duplicate folders sometimes had different contents. Not only that, but the playlists in a folder weren’t in alphabetical order. This means that finding a playlist to include in a sync is a total mess.

Now that I’ve gotten through all the above, I am starting to wonder if all my initial problems were caused by a goofed-up iPhone Music library, and if turning on library syncing again might result in a fully working setup. I’m inclined to try the experiment, since syncing did solve one persistent problem for me by making regular-resolution copies of songs that were too high-resolution for the iPhone to handle available for mobile play. But I think I’ll wait until after the weekend.

Deeper into Apple Music

If you’ve read this blog for a while, learning that I’m sometimes a late adopter might come as a surprise. (Or not, given that the blog, and I, am now more than nineteen years older than when we started.) But I’ve held off on joining Apple’s various music-in-the-cloud offerings for a long time. Like almost ten years.

In June 2011, Apple introduced iTunes Match, a feature that would match tracks with your library to tracks already in its cloud based services and upload the tracks that had no match, allowing you to take your music library anywhere. Theoretically. In practice, the rumors abounded of mismatched songs, and even accidental data deletion. And then there was the pesky 25,000 song limit. So I basically forgot about it.

For about nine years.

Somewhere along the way, they raised the limit to 100,000 songs. But I had figured out how to live without the feature. Somewhere along the way, we also became Apple Music subscribers, but I really only used it to look up the occasional release and listen to radio stations.

Then The Girl started asking me questions about different kinds of music, and I really wanted to be able to share some South African music from the days of the battle against Apartheid. And I couldn’t. Home sharing no longer works on iPads, and there was no way to get her music on the Chromebook.

So finally, I took a deep breath and turned on iCloud Music Library. And you know, it actually worked. Want proof? Here’s a playlist I made in 1994, which just shows up in the browser when you check a box:

So once that was turned on, I took the other plunge and upgraded to Catalina, and said farewell to iTunes, in favor of the new Music app. It was surprisingly painless, once I realized that the app was very slow in copying album art. I also had to fix the AppleScripts that I use with iTunes, by copying them from ~/Library/iTunes/Scripts to ~/Library/Music/Scripts. And for some reason, though it found all my music on my external drive, it still wanted my library (“media files”) location to be on my hard drive. That was an easy fix (though it’ll probably take all day to update the library with the new relative file locations).

And now I wonder why I took so long! Having access to all the music, being able to share playlists easily… all good things.

Reharmonizing

After many years of service, our trusty Harmony One remote bit the dust a few weeks ago. It turns out that the remote, while rugged, does not like being dropped on a hardwood floor—the touchscreen, while still intact and functional, no longer illuminated correctly. Sigh.

We had owned the Harmony One for quite a few years. I never blogged about it, meaning we acquired it sometime in 2008-2009 when my first blog slowdown hit. It replaced a Sony RM-AV3000 Universal Remote which was powerful but in every way impractical and unwieldy. The Harmony One was, by comparison, luxuriously easy to use. Harmony remotes differentiate between devices – directly driving components of your system by emulating their remote commands – and activities, like “watch TV” or “play games.” With activities, the remote sends a sequence of commands to the components required to do an activity, like “turn on TV,” “turn on Marantz receiver,” “turn on FIOS box,” “set TV to HDMI-1,” “set Marantz receiver to Cable,” and then the hard buttons on the remote are set to handle the most common tasks for the activity—for instance, the volume controls might go to your AV receiver while the channel commands go to your cable box.

The Harmony One was light years ahead of the Sony in usability, but it still had problems. One was programming it—you connected the remote to a Mac (or PC) with a USB A to B cable and then ran a Java application (!) on the device to assign devices and change settings on the remote or activity. Another issue, a daily challenge, was the remote technology. It’s an infrared (IR) remote, like most of the ones you’ve used, meaning it requires a “line of sight” to the device being controlled for the commands to work. Often that meant that one of the kids (or other family members) would inadvertently wave the remote away from the TV or receiver, resulting in cries that the TV wasn’t working and requiring my intervention.

I did some research and learned that the state of the art has moved along pretty far from the Harmony One. After comparing options, we bought a Harmony Companion. It’s light years ahead, though not without its challenges.

The Companion is really two devices, a universal remote without a display screen and a remote hub that sits near your devices. The universal remote communicates with the hub over radio frequency (RF) rather than IR, so you no longer have to have line of sight—you can pretty much aim the remote anywhere you like. The hub sends IR signals to your components, and it even comes with an attachable “IR Blaster” that you can position near components that are outside your cabinet (like your TV) to repeat the signal.

But that’s not the cool part. The best part of the setup is that the remote is fully programmable via an iOS (or Android…) app—and the app also serves as a remote that’s in some ways even more powerful than the physical remote, since it also allows direct access to the device remote commands in addition to the activities you set up. The app is pretty cool; when you set it up, it scans your local network for a hub, and if it finds it and the hub is already configured, it downloads the configuration to your device and you’re ready to go. Lisa getting full access to the remote 30 seconds after I told her which app to download was pretty magical.

So far the only pain point has been setup. I created an activity for watching Apple TV but, probably due to the way I used the wizard, it set the physical remote buttons to control our 55″ TV instead. I had to go through and reassign every button on the activity this morning, but it’s working now.

I’m also slightly irked that the Harmony Hub isn’t a HomeKit device. I suspect this is because Logitech views itself as a HomeKit competitor for controlling the entire home. There’s a workaround using an open source kit called Homebridge that I might check out.

Home theater technology has come a long way. But it’s noteworthy that most of the advances in controlling physical devices are due to investments in mobile computing rather than physical devices.

Retro gaming emulation: SheepShaver

I’ve written about SheepShaver a few times on the blog, but generally in passing. Today seems like a good day to acknowledge this software for the miracle it is.

Computers are simultaneously the most advanced and the most fragile thing humanity has invented. There’s no guarantee that a piece of software more than a few years old will actually still work (well, there’s no guarantee that any software will actually work, but there we are). And yet, a German programmer has created an emulation environment that actually works and runs classic Mac OS software.

The latest version has a weird crash on my late-2016 MacBook Pro, but setting the memory allocation to 512MB seems to fix that. So far, I’ve successfully played Lode Runner, Abuse, the Ambrosia shareware apps, Indiana Jones and His Desktop Adventures, and various CD-ROM titles (the latter on my older MacBook Pro at home, which still has an optical drive). Oh, and Reagan’s Watching (above), which I dimly remembered being called SimReagan and which turns out to be slightly less funny, but still topical, all these years later.

The Spectre of a Meltdown

Webkit.org: What Spectre and Meltdown Mean for Webkit. Detailed technical explanation of how the Spectre attack reads system memory it’s not allowed to, and the changes Webkit is making to address the problem. This is important given the foundational position Webkit holds on the web—it impacts Safari on iPhone and iPad, Safari, the Apple Watch, and the built in browsers on thousands of iOS applications.

iTunes (finally) does better classical metadata

If, like me, you have a lot of classical music in your iTunes library, and, like me, you’ve despaired of organizing your music because of the limited support for classical-relevant digital audio file tags (conductor, anyone?), there’s a mild note of surprise in the latest round of iTunes updates.

One of the big challenges for me has been tagging and naming tracks that represent movements of a classical work. Do I use the rudimentary “Grouping” tag? Do I just put the work name and movement name in the Name tag (and lose the ability to view the name of the movement on my car display because the tag is too long)?

Well, as of iTunes 12.5, you can select the tracks that belong to the work, Get Info, and you’ll see a new checkbox at the top of the list: Use work and movement. Check that and you can enter the work and movement information and it will be neatly displayed when you’re browsing in iTunes or playing the tracks back on your iPhone or iPad.

It’s not perfect; Kirk McElhearn of MacWorld details some usability challenges with the feature (hint: copy the movement names down before you make the switch). But after many years with no new features in support of classical listeners, even a flawed metadata feature is like a breath of fresh air.

iOS 11: high-bitrate audio is finally here

I updated my iPhone to iOS 11 over the weekend, having first replaced or exported data from two old apps that haven’t been updated for 64 bit (I’ll miss you, Cocktails app!). And then I synced music from my Mac and noticed that I didn’t get the customary message about tracks that couldn’t be synced.

I checked and found that a whole bunch of Boston Symphony tracks purchased from their store, which I converted from FLAC to Apple Lossless but were apparently still at a too-high bitrate for iOS to handle, appear finally to be supported and were synced to my phone for the first time ever. This appears to be a feature, and may be related to the ability to play back FLAC through some apps (like iCloud Drive).

Looking forward to finally carrying all my music with me!

CarPlay

I’m traveling in Seattle this week for the first time in a while (like, over ten years). Also for the first time in a while, I have a rental car rather than relying on ridesharing to get around. So when I stepped into the rental Chevy that Avis provided, I was expecting another ho-hum vehicular experience.

The car is, indeed, ho-hum, from the perspective of moving me from one place to another—though pushbutton start is something I didn’t expect to find in an American midsize car. What was seriously surprising was what happened when I found the USB jack and plugged my phone in to charge. My phone prompted me to install an app from the App Store, which is behavior I’ve seen before; I declined. And then it started CarPlay.

Apple’s CarPlay is, as promised, a simplified OS for your car’s entertainment display that rapidly did the following for me as I got ready to drive:

  1. Brought up my Apple Maps destination on the big screen, saving me the problem of driving while consulting a non-mounted phone. Safer and more convenient.
  2. Offered to read me (not show me) my text messages when new ones came in. Safer.
  3. Let the radio (which I had tuned to KEXP) play, but also offered touchscreen access to my iTunes library and to Overcast, the app I use for podcast listening. Cool, especially when the afternoon KEXP DJ threw on a set I didn’t want to listen to.

Because I didn’t install the car’s app, a few things were slightly jarring, like switching audio between FM radio and my phone’s audio. But everything else just worked. And I didn’t even play with in-car Siri yet.

Looks like CarPlay is currently supported on almost every model of car that I’d consider for my next purchase. Looking forward to it. I didn’t realize how poor the in-dash experience of my 2012 VW GTI was until I tried this.