Category Archives: General

macOS Server VPN Migration

I went to update my iMac to macOS Mojave, and I was reminded that a number of macOS Server services are no longer supported:

[…] in the fall of 2018, new installations and upgrades of macOS Server will require you to migrate most services to other software.

Apple has provided documentation for migrating from macOS Server to open source solutions, and the instructions for moving to vpnd are fairly straightforward:

  1. Turn off VPN in macOS Server (leaving your settings intact).

  2. Create the launchd file /Library/LaunchDaemons/vpn.ppp.l2tp.plist1:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>Disabled</key>
            <true/>
            <key>EnableTransactions</key>
            <true/>
            <key>Label</key>
            <string>vpn.ppp.l2tp</string>
            <key>KeepAlive</key>
            <true/>
            <key>Program</key>
            <string>/usr/sbin/vpnd</string>
            <key>ProgramArguments</key>
            <array>
            <string>vpnd</string>
            <string>-x</string>
            <string>-i</string>
            <string>com.apple.ppp.l2tp</string>
            </array>
            <key>EnableTransactions</key>
            <false/>
            <key>EnablePressuredExit</key>
            <false/>
        </dict>
    </plist>
    
  3. Set the file ownership to root:wheel2:

    sudo chown root:wheel /Library/LaunchDaemons/ vpn.ppp.l2tp.plist
    
  4. Load the launchd job:

    sudo launchctl load -w /Library/LaunchDaemons/ vpn.ppp.l2tp.plist
    
  5. Verify that the job is running:

    launchctl print system/vpn.ppp.l2tp
    

Once I had completed these steps, macOS Server showed the VPN as running, and my attempts to disable it via the switch would result in it turning right back on. Fortunately, this is the only service I’ve been relying on macOS Server for, since caching was moved into the OS, so my migration was this easy. Replacing some of the other macOS Server services appears to be quite a bit more complicated.


  1. It appears that version 1.2 of the migration instructions have some formatting issues; some of the quotes in the code example have been rendered as smart quotes. 

  2. The migration instructions also mistakenly try to use chmod to change the ownership. 

Hotel Vernon

I just stumbled on this series of videos Narragansett Beer compiled: an oral history of the Hotel Vernon, the Yacht Club, and the speakeasy in the cellar.

Skipping the iPhone XS

I’ve had an unopened iPhone XS on my desk since last Monday. I ordered it through the iPhone Upgrade Program, and I’m trying to decide if I’m going to keep it.

After owning the original iPhone for three years, and an iPhone 4 and iPhone5 for two years each, I switched to buying a new phone every year. I calculated that the depreciation on the iPhones 6, 6S and 7 was about $300 in the first year, and $200 in the second year1, so it was costing me an extra $100 (plus tax) in the odd years to buy a new phone instead of holding on. That worked out to less than an extra $50/year (plus tax) to own the newest phone every year, compared to holding on to a phone for two years.

$50 each year seemed like a great deal for the latest technology, but that value proposition has changed. The costs I’ll incur if I upgrade this year include:

  • Sales Tax: $84.25
  • AT&T Upgrade Fee (plus tax): $31.88
  • The last payment on my iPhone X (since it’s only been out 11 months): $49.91
  • The residual value of a two-year old iPhone X, if I were to keep it another year and own it outright. This is tough to estimate, but resellers are offering $225 - $350 for a two-year iPhone 7+ right now; let’s go with the low-end to make the medicine easier to swallow: $225.00

The total cost of $391.04 is the amount I’ll save if I wait and buy next year’s iPhone, instead of buying the iPhone XS and upgrading again next year. Spreading that premium out over two years is roughly $200/year (including tax); that’s a massive increase over the prior situation.

Part of that increase is that the iPhone Upgrade Program includes AppleCare+, which I’ve never purchased before. Part is that the iPhone X and XS are more fundamentally more expensive than previous generations. Part is the cost associated with just handing the phone back to Apple, instead of dealing with the hassle of a private sale. But I’m not sure if the cost is justified, for me, this year.

The improvements aren’t as numerous, either:

Maybe the strongest indication that I should pass on the iPhone XS is that I haven’t caved in to the temptation to open it yet.

I think I’ll be skipping this one.


  1. Assuming a private resale. 

  2. While this has been true in the past, it wasn’t true with the iPhone X. And while I’d like the flexibility, I’m not sure I’d make use of it during the next year. 

Radiohead

I caught Radiohead at TD Garden last night; they played a really great set:

  1. Daydreaming
  2. Desert Island Disk
  3. Ful Stop
  4. 2 + 2 = 5
  5. Myxomatosis
  6. All I Need
  7. Videotape
  8. No Surprises
  9. Everything in Its Right Place
  10. Bloom
  11. Separator
  12. Reckoner
  13. The National Anthem
  14. How to Disappear Completely
  15. You and Whose Army?
  16. There There
  17. Street Spirit (Fade Out)
  18. Optimistic
  19. Nude
  20. The Numbers
  21. Lotus Flower
  22. Fake Plastic Trees
  23. Idioteque
  24. Exit Music (for a Film)
  25. Karma Police

iOS FLAC Playback

With the release of the iPhone 8 and iPhone X, Apple added support for FLAC playback. Kirk McElhearn wrote:

But I looked at the iPhone 7 tech specs, and it also says that it supports FLAC, so maybe Apple just means that the files can be read by third-party apps. If FLAC were natively supported on last year’s phone, a lot of people would have heard about it. I think that this has something to do with iOS 11. Because I looked on an older version of the iPhone 7 tech specs page (via the Wayback Machine), and FLAC support is not mentioned.

I maintain an app that plays back local files, and as of the initial release of iOS 11, I couldn’t find an API for facilitating playback of FLAC files. I asked on Stack Overflow; the question received a fair amount of traffic, but no clues.

The other day, I realized that my app is able to playback FLAC files with no changes to my code. It appears that, as of iOS 11.2, the isPlayable property of AVAsset returns true when backed by a FLAC file.

It’s nice to see that Apple has made this functionality available to third-party apps with no extra complexity.

homebridge-camera-rpi

With the recently released homebridge-nest-cam plugin, my old Dropcam has new life in HomeKit. This, combined with Steve Troughton-Smith’s tweets about the Pi Zero W, has sparked a desire to setup additional HomeKit cameras.

I ordered a Pi Zero W Camera Pack, and set about following Wojtek Pietrusiewicz’s instructions for configuring it with homebridge-camera-rpi.

It was easy to get the Pi connected to the network, but I ran into trouble when I needed to install ffmpeg. I couldn’t get it working, and based on some comments, I think it may be fairly difficult to install. I’m speculating that something changed between the Rasbian Stretch image of November 2017 and the image of March 2018.

Instead, I used the pre-built image of homebridge-camera-rpi. After using Etcher to flash the image onto my microSD card, the only modifications I made were to the /wpa_supplicant/wpa_supplicant-wlan0.conf file to add my network SSID and passkey, and to tweak the settings of the plugin in /homebridge-camera-rpi.conf.json.

With that, I was able to see the Pi on the network (via Lanscan), and add it in the Home app.

Home App Screenshot