iOS Family Sharing users cannot mix authentication schemes

Apple supports two styles of two-factor authentication, that they call (and distinguish as) “two-step” vs “two-factor”.  “Two-step” is their older method, though functionally they’re basically equivalent. If you have multiple accounts on a Family Sharing arrangement, and some use “two-factor” while others use “two-step”, you’re in for a bag of hurt. For example, any time you change … Read more

Rotated Windows

I’d forgotten about this until I stumbled across a reference to it again recently. This was a little hack I worked on back in 2004, with Mac OS X Tiger (10.4).  Yes, kids, macOS was called Mac OS X back in ye Olden Times. Wow, Slashdot looked even uglier than I remember, back then.  Though … Read more

Undocumented Swift conditional compilation macros

swift/lib/Basic/LangOptions.cpp has most of the conditional compilation macros (called “Language Options” in the compiler internally).  Notably the swift() version macro is absent, and doesn’t seem to be defined anywhere… At time of writing the two undocumented additions, to the os(), arch(), and swift() set, are _endian() and _runtime(). I have no idea if they’re useful … Read more

#if DEBUG in Swift

Sigh. The Swift team give an impeccable impression of a group of people who’ve never actually tried to use Swift. An incredibly basic compiler task is to provide code a way to distinguish between debug & release builds, in order that it can behave accordingly (e.g. change the default logging verbosity, change asserts from fatal to … Read more

Swift’s String.write(toFile:…) can’t handle tildes

let path = “~/Desktop/sigh.txt” try “WTF?”.write(toFile: path, atomically: true, encoding: .utf8) Result?  Explode: Error Domain=NSCocoaErrorDomain Code=4 “The folder “sigh.txt” doesn’t exist.” UserInfo={NSFilePath=~/Desktop/sigh.txt, NSUserStringVariant=Folder, NSUnderlyingError=0x1018110b0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}} And since there’s no documentation on that write() method, and this is obviously a perfectly reasonable request that can’t sanely yield that bizarre … Read more

Building John The Ripper Jumbo for macOS Sierra

It’s quickly apparent that John The Ripper Jumbo doesn’t build out of the box on macOS, and probably hasn’t for a long time, due to its complaint about missing OpenSSL headers. This guide was almost helpful, except it’s out of date – e.g. the patch it provides no longer applies cleanly – and simply doesn’t … Read more