Introducing Tacks

There’s an app that I’ve been working on in my spare time, which I’ve actually been using personally for several months, but which I’ve not managed to pat together into an App store release.

It’s a simple app based on something I needed each time I found myself in a new city when I was travelling: when you arrive, you constantly see lots of places you’d like to return to, and it would be super handy if you could just drop a pin there, add a short title and thus remember it for later. After a while, you’ll see a map studded with interesting places that you yourself have added, and it’s simple to find your way back later on. When you go to the next city, you start a new map, etc.

Inspired by Sam Soffes talking passionately about developing Cheddar on the Founders Talk podcast, I’m going to open-source this app and blog about its development too.

Without further ado,


‘Exposing NSMutableArray’ : Worth a Read

“let’s note that every Obj-C method is actually a C function with two additional parameters. The first one is self which is a pointer to the object being receiver of the method call. The second one is _cmd which represents the current selector.”

Even as a fairly experienced Obj-c developer I did not realise this, (though had often wondered where _cmd came from in a method’s scope – I assumed magic). This was a good read, and something a bit different, too (though I didn’t understand much when it dipped down into assembly).

Bartosz Ciechanowski: Exposing NSMutableArray


Ruby IMDB Script Will Order & Rate a List of Films

I should paste this short script that I’ve written for converting an unordered list of films into a list ordered by the IMDB score (and also tagged with the genres). It worked great for tidying up the 350+ list of “you must see this” films that people have recommended to me through the years..

It will take an unordered list (with optional bracketted year to improve matching accuracy), e.g.:

The East (2013)
Shutter island
Stephen Fry: The Secret Life of the Manic Depressive
The Departed
Alan Partridge: Alpha Papa
Only God Forgives
You've got mail
Withnail & I
The Draughtsman's Contract
The Deal
Winter's Bone
A World Apart (1988)
We need to talk about Kevin

and will return:

<<<< RESULTS >>>> 
The Departed:  8.5  #Crime #Drama #Thriller
Stephen Fry: The Secret Life of the Manic Depressive:  8.2  #Documentary
Shutter Island:  8.1  #Drama #Mystery #Thriller
We Need to Talk About Kevin:  7.5  #Drama #Thriller
The Draughtsman's Contract:  7.3  #Comedy #Drama #Mystery
Winter's Bone:  7.2  #Drama
A World Apart:  7.1  #Drama
Alan Partridge: Alpha Papa:  7.1  #Comedy
The East:  6.9  #Crime #Drama #Thriller
You've Got Mail:  6.5  #Comedy #Drama #Romance
Only God Forgives:  5.8  #Crime #Drama #Thriller
The Deal:  5.7  #Comedy #Romance

=== Not Found... ===
Withnail & I

You can then paste this list into something like Workflowy or TaskPaper and navigate via the hashtags to filter by genre.

It’s available as a Gist. To install, clone the gist, run bundle install, add your films to the provided film_list file, and run ruby IMDB.rb.

Comments Fix for Fastmail SMTP in Mavericks

I’ve been having intermittent issues with Fastmail’s SMTP service in Mavericks, where will sometimes repeatedly reject the correct password (and thus refuse to send mail).

The fix is to force it to use port 587 for SMTP (it claims it’ll try 25, 465 and 587 by default, but this doesn’t seem to be reliable):

Preferences –> Accounts –> Fastmail –> Account Information –> Outgoing Mail Server –> Edit SMTP Server List –> Advanced –> Use custom port: 587


iOS 7 Custom Transitions - Basic Example

There’s really not much sample code knocking around for iOS 7 custom transitions yet (or else Google is broken..): I guess that NDA is still only freshly lifted.

I’ve put together a simple example of how to present a new UIModalPresentationCustom-style Modal UIViewController with a UIViewControllerTransitioningDelegate managing the show. Have a play with this, it’s simple enough to be self explanatory and useful for experimenting with – I hope it helps.

View the source on GitHub

Useful resources:

keywords: UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning, UIModalPresentationCustom, transitioningDelegate


Careful Using the Motion-layout Gem

(for now, at least)

Although the motion-layout gem is what turned me onto the magic of Cocoa’s AutoLayout system in the first place (and it is magic – I eventually built Songdrop almost entirely using this new way of placing views), I discovered that trying to learn it using this Gem (which claims to simplify) was causing me more harm than good due to a number of inherent problems.

Read on →

Happy 40th Birthday, Dark Side of the Moon

"The best album by my favourite band ever"


Saharan Desert Rock. Black Keys Meet Manu Chao.

Bombino – Nomad

Fans of Manu Chao will love this new release from Tuareg guitarist Omara “Bombino” Moctar. It’s really fantastic.

That the lyrics are political in theme is not surprising, given the following (taken from Wikipedia):

Later in 2007, tensions grew again in Niger and ultimately erupted into another Tuareg Rebellion. The government, hoping to thwart the rebellion in all its forms, banned guitars for the Tuareg, as the instrument was seen as a symbol of rebellion. Additionally, two of Bombino’s fellow musicians were executed, thus forcing him into exile.



Vietnam Alleyway


Unable to Find a Specification for …

If anyone else is getting:

Unable to find a specification for … (libPusher in my case)

or the following:

Could not find cocoapods-0.19.1 in any of the sources

or even:

Pod::DSLError – Invalid Facebook-iOS-SDK.podspec file: undefined method `prepare_command=‘ for #<Pod::Specification name=“Facebook-iOS-SDK”>

definitely try adding:

gem "cocoapods", '~> 0.23.0'

to your Gemfile, and then running:

pod setup
bundle update
bundle install

I guess there was a recent CocoaPods update that broke something with RubyMotion and motion-cocoapods.. or something.