Archive for the ‘Misc’ Category

Weekend Posts

I just bought a subscription to Cloak VPN

It’s that time of year. All my services subscriptions are either ready to renew or it’s about time I review what I’m paying for year-round. I currently have three especially problematic services:

  • VPN (hard to connect to, iffy  service, interference with Google),
  • Offsite backup (Java engine that completely destroys my Mac and creates a wind tunnel — I’ll probably be switching to Backblaze soon), and
  • An Internet provider whose service degrades if more than three people look at my site at once (I’ve heard good things about Digital Ocean, if you have alternate recs I’d love to hear them).

I’ve been with all three current providers for years and years. As of today, I’ve now managed to ditch at least one of them. Today, I threw my credit card at Cloak VPN. I’ve been testing the service for the last week and I’m hooked.

It’s a very Apple-aware iOS-designed provider. (I haven’t used the OS X component because my daughter, as you might have read here, has appropriated my laptop so I’m currently laptopless.) Most importantly, the service just works. When I connect to an untrusted WiFi network, the VPN service automatically switches on. When I’m home to my recognized WiFi, it switches off. Cell service is automatically trusted as a default setting.

In my daily life, I’m surrounded by attwifi and xfinitywifi hotspots. Now, my iPad knows that it can automatically connect to these and switch on my VPN cloak. Yesterday, as I was sitting at the car shop, I suddenly noticed that my iPhone was getting unusually good response speeds. Turns out that it had connected to a recognized big-name hotspot provider and sure enough, cloak was already there and protecting me.

This morning, Cloak got my money.

Service plans start from $2.99/month for 5GB bandwidth but if you consume a lot of data, for example with a laptop or at home, there’s an unlimited plan at $9.99/month or $99.99/year. The plans extend to an unlimited number of devices but they are one-person each. The company politely requests you don’t buy a single plan for an entire family, company, or dorm.

Screencasting AppleTV with

Today, it occurred to me that I could use a web tool like to share the contents of my headless Apple TV unit by broadcasting the QuickTime window I use. The free version of offers reception for up to 10 people in an ad-hoc meeting, so I sent out a call for help and got a few people to pop in and offer feedback.

You join the meeting using a link supplied by the website. It took most testers a minute or two to hop in.

According to those testers, the results were fairly low quality and occasionally choppy. “It was clear at all times other than the choppiness,” one tester told me. Another said he got about 4fps at best. Artifacts were particularly noticeable during animation sequences:

Screen Shot 2015-11-09 at 6.44.55 PM

But during quieter moments, the screens were pretty readable:

Screen Shot 2015-11-09 at 6.46.00 PM

All in all? Not ideal, but promising.

Broadcasting a QuickTime screen this way isn’t limited to AppleTV, of course. QuickTime can render any iOS device screen for most modern lightning-based devices. So if you have an iPad app or iPhone utility you want to demonstrate in real circumstances using realworld interact, this is an interesting way to do so.

If you do give this approach a try, drop me a note and let me know how it goes for you. I suspect this will work best for screens that do little animation and are primarily text-based.

Thanks ajfoul, Lyle, Jonathan, David, August

Converting the Swift Programming Language to PDF

An updated approach.

  1. Go to ~/Library/Containers/
  2. Once there, locate the 881256329 epub folder. You must use a non-beta version of the book. Beta versions are DRM’ed. If your version appears to be DRM’ed (a holdover from the beta period), delete it in iBooks and re-download.
  3. Copy this epub folder to your desktop. Remove the epub extension, zip it, rename to epub. Apple uses a non-standard epub format, and these steps transform the book back to something Calibre can import and convert.
  4. Drag this epub into Calibre.
  5. Click Convert books, choose PDF.
  6. In Page Setup, select default output profile, set margins to 72 on each side
  7. In PDF Output, add printable TOC.
  8. Click OK and let the conversion start


Screen Shot 2015-10-28 at 4.34.56 PM

It’s Friday in #swift-lang land

Question: Hi! How can I print the name of a closure. for example. I have var super = { (item: int) -> () in print(notSureWhat)} and I want print to print “super”

So Mike Ash gives an appropriate answer: “That’s the name of a variable that happens to store a reference to that closure, not the name of the closure. The closure has no idea what variables hold references to it. In short, you can’t”

Me (because it’s Friday): I bet you could use an associated object to name a closure.

And that leads to this:

Screen Shot 2015-10-23 at 12.30.58 PM

Basically, it works like this. Using @convention(block) creates an object-based block that can be cast to NSObject. Associated objects adds a custom nameTag property that’s accessible from any NSObject instance.

It is bad and I should feel bad. I know.

Update: Improved version

Why tech writers can’t do fiction

Especially romance.

“She looked longingly at him. Starting with the upper-left corner of his face, her eyes tracked down and to the right, making sure to scan all emotional features while paying careful attention to possible outlying data points.”

“He carefully rested his hand upon hers with a minimum of pressure to avoid damage to her extremities.”

“‘Darling,’ he said. ‘It appears you are in good health, with adequate teeth and other markers of youth and vitality. Would you like to move east approximately 25 feet into the bedroom, and assume a supine position upon the provided rest area?'”

“‘Oh yes,” she replied, intending to fully comply with the technical specifications he had established. ‘Let us run unit tests without full coverage!'”

Why Apple TV

Was having a discussion today about what apps are suitable for Apple TV and I thought I’d share some thoughts.

  • Expect lower discoverability. I can’t imagine people will have as much tolerance for browsing on TV as they will on a desktop or phone/tablet.
  • Think living room. Focus on entertainment and information. I don’t think there’s going to be a huge demand for, for example, live earthquake listings or budget calculators versus games and traffic reports.
  • Consider motion. The remote has some accelerometer functionality built in. Think how your apps can engage customers in motion, the way that Wii was designed to get users up off the couch.
  • Design for the limits of the remote but don’t be boring. Frogger apps and sidescrollers take you only so far. Trivia challenges will work a lot better than pictionary ones with these limited input devices.
  • Supplement what people are already doing on Apple TV, which is primarily entertainment delivery. How about an app that makes rental suggestions?
  • Target kids. Being able to engage the family while parents read or prepare dinner is a really big opportunity for this new market.
  • Don’t try to out-siri Siri. Apple’s already building in features to answer questions, perform personal assistant tasks. This is not an area that’s going to be easy to compete in. Ditto for any kind of experiential screensaver stuff. Don’t take Apple on head first. You won’t win.
  • Simplify UIs. If you are going to build for the non-game market, limit the heck out of your interfaces. Avoid text and focus on a few well-chosen buttons.

Would you buy this book if it existed?


Trying to determine if there would be a big enough demand for this to make it worth breaking out to its own mini-book. Say $4.99, lots of illustrations, examples, and best practices building off this post.

[yop_poll id=”1″]

If not, what other topic would you be willing to invest in along the same lines as the playground book: lots of updates, self-published? I need a popular enough general topic to make it worth investing time into.

Thanks for the feedback!