Second Annual iOS Music Player Competition

2019 was an exciting year for iOS music apps. Not long after I published my article “Quest for the Best iOS Music Player” early last year, new music players flooded the App Store at breakneck speed. While this was a pleasant suprise, it was certainly unusual; at the end of 2018, the category was more or less stagnant; new music players were exceedingly rare and some of the old guard were wasting away from developer indifference. Not so in 2019! No less than half a dozen brand new apps entered the fray, three of which within the same month of each other1.

With such a breadth of exciting change happening in the iOS music player category, it’s clear a revisit to last year’s article is in order. My personal list of requirements haven’t drastically changed since, but to reiterate, these are the characteristics I value in music players:

  • Lyrics support
  • Light & dark themes that match iOS 13’s style guides and global theme setting (this is a change from last year’s requirements, reflecting iOS 13’s official dark mode support)
  • iPad support
  • Discovery options that help stimulate music exploration. Examples include but are not limited to views like “Recently Added”, “Added this day X years ago”, etc.
  • A beautiful or visually engaging “Now Playing” view
  • Album-focused design, which includes but is not limited to:
    • The one, true album sorting method (alphabetically by artist then chronologically by release year. Any other sorting method for albums is wrong).
    • A grid view for improved visual browsing

My “deal-breaker” requirements mostly remained the same as well:

  • Support for newer iPhone displays (iPhone X & newer). Apps that have not yet been updated to support these display sizes will be immediately disqualified.
  • Active maintenance (“active” defined as having received a meaningful update within the past year)
  • A native or native-like app. That means no web apps, lazy Android ports, or apps with badly designed custom components. Apps that are performant and well designed enough to fool me are fair game.
  • Local-primary focus, so no stream-focused or stream-exclusive players. Apps that support both local and cloud functionality but work just as well in “local-only” mode are fair game.
  • Large album art in the “Now Playing” view

With the score sheet established, let’s dive in.

Continue Reading...

Wireguard Server on macOS

Update: March 11, 2020

This is a revision of the first guide originally published back in August 30, 2019.

This revision contains a myriad of improvements suggested by lifepillar and would not exist without their help. Lifepillar has my heartfelt thanks for their tremendous contribution to this site and the Wireguard community.

The original guide remains available here. Please note that the original guide is no longer the recommended approach and remains available for historical preservation purposes only.

Notice: May 12, 2020

Please be aware that at present the guide's traffic routing instructions route through IPv4 traffic only. That means IPv6-exclusive hosts will be inaccessible to connected peers configured with this guide. An update's in progress to include more comprehensive traffic routing instructions to properly route both IPv4 and IPv6 traffic.

Many thanks to Jeremy Quinn for detecting this oversight.

After months of false starts and dead ends, I’m happy to report my Wireguard VPN server is successfully running on macOS.

Wireguard is a relatively new VPN protocol, entering the scene just three short years ago in 2016. Compared to the ancient VPN alternatives like IPSec and OpenVPN, Wireguard’s simplicity and speed quickly earned it the attention and praise of various tech communities like Hacker News and Everywhere you look are Wireguard threads filled with enthusiastic comments urging others to give Wireguard a try.

The best part is, they’re right! Compared to the existing lineup of VPN protocols, Wireguard’s small codebase, blazingly fast speed, and relatively simple setup put Wireguard in a league of its own as the first truly modern VPN protocol. There’s just one tiny niggle: the protocol is so young there might be no documentation or guides for your platform of choice.

Unfortunately, that’s the situation I found myself in with macOS when attempting to set up my Wireguard server. Despite extensively reading what’s currently the finest Wireguard documentation available and following its relevant example to a tee, Wireguard would simply not function as expected on macOS. The best I could do was establish a direct connection to the server with Wireguard, but all attempts to access the LAN or surf the web timed out and failed.

Despite numerous attempts over the months, my Google-fu yielded no results, either. While there were plenty of help articles from others setting up Wireguard on macOS, every single one of them was for setting up a Wireguard peer on macOS. This peer was always intended to only connect to a Wireguard server on more common platforms like Ubuntu or CentOS, never the other way around.

However, from my on-and-off research over these past few months I’ve finally cobbled together a solution that’s working. Thus, I intend to fill this hole in the community’s growing collection of documentation and setup guides: here’s what you need to do to get a Wireguard server running on macOS with full traffic routing and LAN access.

Continue Reading...