TheJoyOfHack

For people who like to make things

What Happens to your Passwords when you Die

This is a guest article I wrote for the newsletter of a friend of mine who’s an Estate Planner.

Almost every digital or monetary asset you own is protected by a password. Some service providers, like investment brokers require multiple pieces of information, like your social security number, account number, date of birth, etc. These are all things that a provider assumes only you know. Once these secrets are known to others your asset is compromised. So in order to keep these secrets safe, you need to do two things: prevent others from being able to view these secrets, and prevent others from being able to guess them.

more ...

Running External Commands in LLDB via Python

Many iOS apps today are clients of some sort. They request data from a remote server. Typically this data is served over HTTP (with SSL) and formatted as JSON. At FastModel Sports our iOS app is constantly requesting large amounts of JSON data. While debugging the app I inevitably have to compare what I’m displaying in my views to what the server sent me.

This meant saving the server response into an NSString, printing it out to the console with NSLog, copying that output, switching to Terminal, pasting that output into a file and then running jq on that file. That’s a lot of steps. In this post I’ll show you how to do all of that directly from the LLDB command prompt.

more ...

Rotation and Adaptive Layouts

Another in a series of posts documenting my process of updating an aging app.

For this rewrite of Qur’an Memorizer I’m using Auto Layout. This is the first time I’ve used Auto Layout for this app. You know when the Apple Engineers said Auto Layout makes things easy? They weren’t kidding. Even though Qur’an Memorizer has some unique behaviors for autorotation, I was able to implement this in a few hours with Auto Layout and about 25 lines of code. Read on to see what I did.

more ...

Code Coverage Without Pod Files

Another in a series of posts documenting my process of updating an aging app.

I noticed that the code coverage reports from XCode 8 recently started showing me coverage for .m files that were in the CocoaPods that I’m using. In this post I document how I fixed that.

more ...


Examining JSON Data With jq

Earlier tonight I spoke at NSCoder Chicago about how to use jq to examine JSON data. This post contains links and information that I would like to share with the attendees.

more ...


Epoch Zero

Mark Frimston found out something very interesting about the local time in the UK at UNIX epoch 0. Took me by surprise.


Michigan Avenue, Chicago

Michigan Avenue, Chicago

If you walk too fast, you might miss them. Two gardens flank the Art Institute of Chicago, on Michigan Avenue. Now, we all know Michigan Avenue as a busy, bustling street, but these gardens are great places to stop. And think. Or just clear your head before merging back into the fast pace of the sidewalk. This is the South Garden, looking back out towards Michigan Ave.

more ...

Letterpress Symmetry

Letterpress Symmetry

This is the first in a series of posts where I share the final screen of Letterpress games. When I was showing my daughter this game, she mentioned that she liked it when games ended in pleasing patterns. So then I started to try to win (or lose) games with a symmetric pattern, if possible.

Most of the patterns are symmetric about an axis (reflection). Some display rotational symmetry. Where possible, I will also include a link to the replay URL of the game. Here’s my first one.

more ...