Posts in category “Review”

Swinsian

Swinsian[^1] is a native music jukebox app for the Mac. It displays songs in customizable columns with a browser just like iTunes did before it became a music store, video player, iOS app organizer, social network, and streaming service.

With Swinsian you can make smart playlists. You can edit tags on multiple tracks at once. You can shuffle songs. There is a 31 band Graphic Equalizer, and real-time search. Swinsian even syncs your music with classic iPods, and streams my music over AirPlay. In short Swinsian is everything you expect from "Classic iTunes" running on a modern Mac.

In addition to being a great iTunes replacement, Swinsian has some powerful features for managing a large music library.

Equalizer

FLAC

Unlike Apple Music/iTunes Swinsian plays FLAC. "Digital audio compressed by FLAC's algorithm can typically be reduced to between 50 and 70 percent of its original size and decompresses to an identical copy of the original audio data." FLAC is free software, with royalty-free licensing that is best used for making archival copies of your CD music collection. Swinsian supports FLAC metadata tagging, album art, and fast seeking. It even plays back FLAC albums ripped as a single file with an accompanying cue file.

Watched Folders

Watched Solders

Swinsian's Watched folders allow you to manage music stored outside of your Swinsian library. A Watched folder can be any directory on your computer, removable storage, or local network share. With Watched folders, you get to choose which songs get automatically copied to your Swinsian Library, and which songs play from their watched location.

With Watched folders:

  • Store your music collection on a local server and access the songs as if they were saved in your local Swinsian library.
  • Keep half your music on your computer and the other half on external USB storage and access it from the same Swinsian library.
  • Watch a Dropbox folder you share with your family, and Swinsian will copy/move new tracks into your library automatically as songs are added or modified.
  • Import new songs and playlists from Apple Music each time Swinsian is opened.

If your music collection is too large to fit on a single volume but you want to manage it all from one library, there is no better remedy than Swinsian's Watched Folders.

Metadata

One of the reasons I own all of my music and store it locally, is that I am very particular about the metadata I associate with it. I don't want Apple Music changing my music's metadata automatically without my consent.

Find & Replace

Swinsian makes managing your music's metadata easy with helpful tools like an always visible Tack Inspector, and multitrack Find and Replace with Regex support. Tags can be edited on music stored locally or in a remote Watched Folder. For albums ripped with cue sheets, Swinsian will attempt to update the cue file. Album art can be embedded or stored as an accompanying folder/cover image file.

Find Duplicates

Swinsian makes finding duplicates easy by giving you control on how closely to match a track's title, artist, album, duration, and file size. Finally your library statistics including your favorite artists, tracks, genres, and albums sorted my play count are all available from a glance using Swinsian.

Perfect?

Swinsian isn't perfect, and development has slowed in recent years. The latest Mac OS features like Dark Mode are not yet implemented. As of today Swinsian is an Intel app and requires Rosetta 2 to run on Apple Silicon Macs.

Despite its setbacks I still consider Swinsian a Mac-Assed Mac app due to a thoughtful feature set and adherence to Apple human interface guidelines. If like me you value your music collection and want a way to access it beyond the limited confines of your MacBook SSD, then Swinsian is for you. Please consider purchasing a copy today, if not for yourself, then as a way to support Swinsian's continued development and ensure I never have to launch Apple Music ever again.

[^1]: Swinsian Old English: To make a (pleasing) sound, make melody or music.

Mac Source Ports

Video games were a big part of my adolescence. And although my memories of playing these games as a child will never die, far too often the chance to replay these games is tied to obsolete hardware that is both hard to come by and difficult to preserve.

Not true for source ports!

Source ports are projects derived from a original game's source code, designed to extend the game's capabilities while providing compatibility with modern hardware like Apple Silicon.

For example, id Software released Quake III: Arena in 1999. In 2005, after the game and engine’s commercial life was over, they released the source code freely under an open source license. Shortly thereafter the ioquake3 project was born and has been maintained ever since.

In this case, Quake III: Arena is the game, and ioquake3 is the source port. Although the original executables for Quake III: Arena have long since stopped working on modern Macs, source ports like ioquake3 have seen constant maintenance so they allow you to continue to play on modern Macs.

Mac Source Ports is a new website by Tom Kidd, designed to make playing popular source ports on modern Macs easier. He does this by curating a growing list of popular source ports, optimizing them for Intel and Apple Silicon Macs, and signing/notarizing the code when necessary to provide a near seamless Macintosh gaming experience.

In some cases source port projects make their own builds and we link to those here as well, but oftentimes the projects don’t have the resources to do it themselves. Code signing is relatively new and sort of tedious, notarization requires a paid account which not everyone is interested in obtaining, and not everyone even has a Mac in the first place. Windows machines are everywhere and Linux can be installed on anything but you have to buy a Mac to have macOS. And every so often Apple changes things, like the recent shift to Apple Silicon, so even people who do have a Mac have to buy new stuff.

Right now the number of source ports is small, just a single page of first person shooters based on game engines developed by id Software and 3D Realms. But Tom hopes to expand the Mac Source Ports collection soon.

I’m getting to it, provided it has source code and an actively maintained source port. If the source port is already doing the work of making the signed and notarized builds, I'll link to them here, otherwise I'll see if I can figure out how to do it myself. If a game doesn’t have an actively maintained source port it might require more work. If it doesn’t have source code available I can’t do anything with it (so, for example Quake 4 never released source code so I can't do anything with it).

Tom takes the hard work out of source ports by maintaining, compiling, signing, and notarizing the available source code. But in order to play the game, source ports need data files like character models, maps, sounds, and background music. Because these data files are copyrighted they cannot be distributed as part of the game's original source code. Players must acquire these data files elsewhere; either from a physical copy of the game or by purchasing the game from an online retailer like GOG or Steam.

It is because of copyright laws that source ports cannot be distributed in the Mac App Store.

For example, I can’t put the full game of Quake on the Mac App Store because I don’t have the rights to do so. I could conceivably try to put a port of vkQuake on there without data files but anything you put on the App Store has to go through a vetting process and it’s not clear whether the staff has the ability to go through the process of acquiring the game data and running through the process themselves. And it’s unlikely I could call it vkQuake, so I’d have to name it something else and use a different icon which would confuse people.

Thankfully Mac Source Ports makes installing the data files easy, with installation instructions for every game in the collection. Tom is even working on way to extract the data files from a Windows installer without the use of a PC.

Quake, Doom, and Return to Castle Wolfenstein are some of my favorite video games of all time. I have been playing popular source ports like ioquake3, dhewm3, and iortcw since there inception. But compiling all of my favorite source ports for Apple Silicon is beyond my abilities. I am glad to see that Tom Kidd, who has a long history of porting id Software's back catalog to iOS, turn his expertise towards Macintosh gaming. Here's hoping the future of Mac Source Ports looks bright in 2022 and includes many more popular source ports like OpenRA, DevilutionX, and Super Mario 64 PC Port just to name a few. Everyone with a Apple Silicon Mac, who likes playing video games should buy Tom Kidd a coffee!

AirMessage

I made the switch from an iPhone 7 to Android last month. Not for a particular handset, but features like a headphone jack, expandable storage, USB Type-C, and a 128 GBs of storage Apple does not make available on a iPhone; let alone a phone that costs under $229.

I am not an iOS power user. I don’t use Apple services like iCloud, Photos, Apple Music, or Shortcuts. Many of the third-party services I do use, like Slack, Outlook, Nike+, Instapaper, Foobar2000, and Brave offer native Android apps that are just as good if not better than their iOS equivalents. While Twitter, Reddit, RSS feeds, podcasts, and weather are available on Android, I will always miss the polish of my favorite third-party iOS apps; Twitterrific, Apollo, Unread, Castro, and Dark Sky.

There is however one Apple service I thought I would have to leave behind after making the switch to Android. Like many of you, I have been using iMessage — Apple’s blue bubble messaging service — since it debuted in October, 2011. I feared my move to Android meant missing messages from friends and family during the pandemic. Luckily I found an alternative to Apple’s proprietary messaging app that works on Android.

AirMessage brings the blue bubble messages of Apple’s proprietary iMessage communication protocol to my Android phone. It does this with an easy to install Android app, and a service running on my always-on, Internet connected Mac mini. I have been using AirMessage alongside my iPhone 7 for over a month now, and I have not missed a single iMessage. The best part is friends and family who have become accustom to my blue bubble messages over the last eight years don’t know I am using an Android phone.

One downside of AirMessage is that the service requires an always-on Internet connected Mac. AirMessage can not send or receive new iMessages if my Mac mini is shut down or put to sleep. AirMessage requires access to the Internet and a port forwarded through my router’s firewall. Even though my Mac mini stores my entire iMessage archive, AirMessage’s conversation history is limited to correspondence sent through my Android phone..

Since all of your messages are first routed through your Mac computer, it may simply be best to think of AirMessage as of extension of this computer.

And because AirMessage is an extension of Messages for Mac, it does not include include all of the modern features of Messages for iOS; including somescreen  effects, stickers, Memoji and iMessage apps.

AirMessage is not a service I would recommend to long time Android user’s, but a crutch to allow long time iPhone users like myself  the chance to try out Android without missing out on the iMessages from the people who matter most.

OutRun

I first heard about OutRun from Bradley Chambers, writing for 9to5Mac.

OutRun is exactly what you’d want from a simple iPhone run tracker. It fits in nicely with a great iOS 13 design, is 100% private, and syncs with Apple Health. The syncing with Apple Health is optional as well. Settings wise, you can change your energy unit, weight unit, GPS accuracy settings, create data backups, and enable syncing. There is no friends list, ads to dismiss, or subscriptions to sign up for bonus features. It has one simple goal, and that is to track your runs.
I have run with a dedicated GPS watch in the past, but these days I only take my iPhone with me on most workouts. Apple offers a great running app for Apple Watch, but when it comes to iPhone-only runners like myself we are forced to download third-party apps that come with their own accounts, privacy policies, advertisements, and social networks. I don't want any of that stuff when I run, and I don't want to pay $199 for an Apple Watch and the privilege of keeping my workout data safe. All I want to do is run, and have my iPhone announce my progress while I am out on the road and track my miles after the race.

I have been using OutRun for five days and it does a good job of tracking my miles average speed, location, and time. I trust OutRun and Apple Health to keep my workout data safe, but in order for me to adopt OutRun as my full time running app, I need it to do more for me while I am running.

  • Spoken notifications for elapsed time, distance, and current pace every kilometer. The Nike Run Club app does this, and as a legally blind runner I rely on these regular audible notifications to keep my eyes on the road.
  • Split tracking so that after the race is finished I can see how I performed every kilometer along the way.
  • Auto pause for when I stop running, because obstacles and intersections shouldn't get in my way of my goal pace during workouts.
OutRun is still a 1.0, so there is plenty or time for improvement. I can't wait to contribute to this app again when the developer has added more of my desired features. Maybe we will see a version 2.0 in time for fall marathon season?

NoScript

I read this post on Daring Fireball last year and I wanted to comment on it: Charlie:

I simply hate people relying on brittle client-side javascript when there are other alternatives. In the same way as I wouldn’t rely on some unknown minicab firm as the sole way of getting me to the airport for a wedding flight, I don’t like relying on a non-guaranteed technology as the sole way of delivering a web app. For me it’s a matter of elegance and simplicity over unnecessary complexity.

Charlie proceeds to spend the rest of her rainy day reloading her favorite websites with JavaScript disabled and documenting their reduced functionality. For me this sort of activity does not occur once in a rainy day. For years I have filtered the JavaScript my browser receives by way of NoScript a JavaScript/Java/Flash blocker for Firefox and SeaMonkey. NoScript works by whitelisting domains I visit where JavaScript should be enabled. I can temporarily whitelist a domain to get things working on a website I visit temporarily, or permanently block domains like doubleclick.net I never want to receive JavaScript from. Today most websites not only fail to function without their own JavaScript enabled, but they fail to function without linked JavaScript libraries from third-party domains enabled. If your website needs resources from someone else's domain to work, you are doing the web wrong. With NoScript I often find myself temporarily whitelisting third-party domains at random to get the web to work. In summary my browsing experience goes something like this: - Visit website

  • Load JavaScript from the domain of the website I am visiting
  • Make temporary exceptions for third-party domains where essential JavaScript is hosted
  • Block everything else
  • NoScript saves my selections for me the next time I visit the site

NoScript has made my web browsing faster, safer, and more energy efficient, but at the cost of maintaining a large list of whitelisted domains I wish to receive JavaScript from. John Gruber: The web would be better off if browsers had never added support for scripting. Every site on the web would load in under a second.

That is my philosophy and why I use NoScript.