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.

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.

MacBook Pro shenanigans: FaceTime, the Keychain, and TouchID

Work bought me a new MacBook Pro at the beginning of the year. Because I’ve grown to value portability over the years, I asked for a 13″ model. Because I have a reputation as a geek, they got me the new model with the Touch Bar.

It’s been mostly great, but starting mid-summer there have been a series of odd things that have been extremely frustrating. At this point I’ve resolved all but one of them, so I thought I’d write it up.

Crashing while asleep: This one isn’t Apple’s fault. We use a corporate endpoint protection system that … has challenges keeping up with new OS versions, and sometimes causes things to really misbehave. For instance, it’s been causing our MacBooks to crash when attempting to wake from sleep. And that went on for about a year. They finally issued a compatibility patch that fixed the issue, but the (sometimes daily) crashes appear to have taken a toll on the system. For instance…

FaceTime and Messages problems: After every crash, I’d have to sign back into iCloud and re-log in to my Google profile on Chrome. A hassle, but doable. But after one crash and re-login, I noticed I couldn’t log into Messages: it gave me the message “An error occurred during authentication.” FaceTime had the same problem. I ended up calling Apple support, and their Tier 2 advised that it was likely a corrupt keychain. He suggested that I delete the login keychain and then recreate it. I decided that before I did that, I’d move all my local passwords to the iCloud keychain for safety. Which took a while, because I had to enter my password for every password entry it moved.

Then I took the plunge and deleted the keychain. The OS, thankfully, tried to recreate the keychain… and failed. Now I had a primary login account with no keychain, which is not a happy state. Logging into iCloud just gave me error messages when it tried to save things to the nonexistent keychain. Fortunately, after logging back in, I could recreate the keychain, log into iCloud, and finally get logged into FaceTime and Messages.

Touch ID. After these shenanigans, my fingerprints started to be unrecognized for login. So I deleted the fingerprint records in System Preferences and re-created them. But login was still failing. This one was easy to fix; I just logged out and logged back in, and my fingerprints started being recognized again.

iCloud Keychain. That brings us to the part that still isn’t working. All those passwords that I moved to my iCloud Keychain are there, because I can see them on other devices—but even after I’ve turned it off and back on, they aren’t syncing back to my Mac. Nor are any of the other passwords or secure notes I’ve stored there. Apparently one fix path is to turn off iCloud Keychain syncing on all my Macs and then turn it back on, the prospect of which fills me with a certain amount of dread. But we’ll give it a go, after I figure out how to back up the passwords, and we’ll see what happens. Look for an update soon.

Apple TV 4th Generation – Impressions

I was eager, when Apple announced the fourth generation Apple TV, to get it and check it out. I was especially excited by the concept of a real app store for the TV and by the ability to game on the device.

Then reality hit. For years, I had been using an Apple TV in our family room, and it’s been invaluable for entertainment. Mostly kids’ entertainment—movie rentals through the iTunes Store, complete seasons of “Scooby-Doo”—but I’ve used it to play music and watch movies too. But the hookup I was using to connect it to the rest of my gear was no longer supported. In particular, Apple used to have an optical out on the back of the older generation Apple TV devices in addition to HDMI. That allowed me to connect the device to my faithful Onkyo TX-DS494 so that I could put the sound out through my Bowers & Wilkins DM 602s.

But the new generation has no optical out! And the Onkyo, alas, has no HDMI inputs. So I had a choice. I could get the Apple TV and run the sound through the comparatively unsatisfactory speakers on our television. Or I could wait until I could afford to replace the Onkyo.

That time has come. I have a Marantz SR6010 (last year’s model new in box at a substantial discount from list!) on its way, and I hooked up the Apple TV last weekend so we could get used to the new interface.

First impressions: the new UI is considerably easier to navigate. And I really love the App Store. I was able to find something like 29 applications—a mix of video apps like the PBS Kids app, YouTube, and others, plus some games—that I had already purchased for the family phones that were available to download to the TV. Score! There were even a few fun games for free, like the Lego Batman game. I’d love to see more games in the store, though, especially games that support the controllers. And more retro games. Why can’t I play Lode Runner on the Apple TV? I can on my iPhone.

Gaming is probably the biggest let down right now. The controller I bought, the SteelSeries Nimbus, is a little too big for my six year old’s hands so he’ll have to use the Siri remote. That works pretty well for him, though he got tired of driving his race car off the track in the first game we played pretty quickly.

But the simple handoff of text input from the onscreen remote to the iPhone is brilliant, and makes up for some of the other disappointments with the device. I can’t wait to hook up the new receiver when it gets here and really take the thing through its paces.

New Mac time

I got upgraded at work from a late-2011 MacBook Pro to a late-2016 MacBook Pro—the kind with Touch Bar. I’m learning and relearning a lot of things that I had figured out how to do on the old machine as I set things up. Observations:

  1. The thing is fast. (Probably mostly because of the SSD drive, though the 3.3GHz vs. 2.4GHz processor may have something to do with it.)
  2. And so much more reliable. I was kernel panicking all over the place in the old machine.
  3. I hadn’t tweaked the old machine as much as I was afraid I had. After moving my home directory over, there were only a handful of apps I had to reinstall from scratch. I had also been smart enough to do most of my custom fonts in my user/Library/Fonts directory rather than in System, which made migration much easier.
  4. Speaking of migration, Thunderbolt really did the trick. I think moving all 300+ GB of stuff took about six hours, much faster than I remember when I used Firewire or Ethernet in the past.
  5. The keyboard is a non-issue. Feels great. Maybe a little loud but very easy to type on.

There are some things I’m still getting used to:

  • I hit the Siri key by accident a fair amount.
  • I really should have registered my index finger rather than my thumb on the fingerprint sensor.
  • The touch bar is pretty cool, but not much uses it yet. I spend most of my day in Chrome and it’s got nothing there.

And the big thing I’m waiting for: better USB-C (Thunderbolt 3) docks. While I’d love something like the OWC Thunderbolt 3 dock, which has pretty much every port you’d ever need, they don’t ship until sometime in March, presumably thanks to the TI chipset issue. In the meantime, the only thing I’m really missing is an Ethernet adapter, and that’s just because it’s back-ordered.

(Also, it’d be great if I could get SheepShaver working, but that’s not required for work, obviously.)