My speaking schedule for 2014

So I’m gonna be speaking at few conferences in 2014, so if you want to meet up – here’s where I’m gonna be.

In March I am presenting and running a number of workshops in Lisbon for a private event – including my first Keynote! Still I’m gonna be in Lisbon 25th to 30th, so anyone wants to meet up I’ll be in Portugal.

CodeBits, April 2014 (real soon!)

I’m gonna speak at CodeBits in Lisbon. To be honest I haven’t heard about it before few months ago, but looking at the videos from previous years, photos and so forth – it looks like tons of fun. It’s in a big arena at the ocean side, they serve cooked food throughout the conference, and last but not least they let you sleep in your sleeping bag inside the venue!

I’ll be presenting “Overcome your fear of implementing offline mode in your apps“.

CodeBits happens 10th to 12th of April in Lisbon.

More info:

Multi-Mania, May 2014

I’m presenting at Multi-Mania in Kortrijk, Belgium. Another conference, which looks like fun. It’s more of a media and platform conference and that’s gonna be a nice change for me to talk in non-programmer audience.

I’ll be presenting “Creating apps that run on your watch and talk to your cloud“.

Multi-Mania happens 19th/20th of May in Kortrijk, Belgium. It’s a free event – come over!

More info:

Dutch Mobile Conference, June 2014

I’m speaking at the Dutch Mobile Conference in Amsterdam. I didn’t make it to mdevcon in March in Amsterdam, but hey the Dutch Mobile Conference are happy to have me so I’ll still get chance to speak in Amsterdam.

I’ll be presenting “Overcome your fear of implementing offline mode in your apps” and “Creating apps that run on your watch and talk to your cloud“. I’m speaking two days in a row, so any day you join the conference you can find me and meet me there.

The Dutch Mobile Conference happens on June 27th and 28th in Amsterdam.

More info:

Autumn 2014

Last year I had awesome time in Milan, Italy speaking at the #pragma mark conference there. I already met the guys from #pragma mark in Amsterdam at mdevcon, I guess that if all our schedules fit together I probably would be speaking in Milan again, but still nothing is certain.

That’s all for now, If you are going to any of those conferences be sure to say hi. And you can also follow me on lanyrd:

Depending on how often you gather UDIDs from adhoc testers you might be unpleasantly surprised with iOS7.

How gathering UDIDs worked up to iOS7 was by running a simple free app on the user’s phone which would then send you via email all the details like device model, UDID, version of iOS etc.

However with iOS7 3rd party apps are denied access to the device UDID. Or to be precise the API will provide a garbage UDID.

What used to look like in IOS6 like :


will on iOS7 be reported as:


Almost correct, but the first 8 characters are replaced with “F” therefore rendering the UDID unusable.

You can still get the device UDID by simply plugging in the device to your computer’s USB and checking the UDID in iTunes, but for remote adhoc testers this is quite difficult if not impossible.

What I found to be a relief was the site: It’s pretty easy, the first time a user would open it it installs an intermediate certificate which gives it access to the device’s UDID and then the user can easily send you their UDID. Easy peasy.

Step 1: Open on your iPhone (you can also send the link to your adhoc testers by email and they can scan a QR code on the web site)

photo 4


Step 2: Tap Tap to find UDID, which will ask you to install the intermediate certificate to gain access to the device UDID

photo 3


Step 3: Tap Install to install the certificate, which will install it and take you back to the website. You can see more information like device model and OS installed when you scroll a bit down

photo 2


Step 4: Finally tap on Send UDID via E-mail to open mail with pre-written email message, which the adhoc tester can send then to you easily

photo 1


And that’s all :) Thanks to the team for the great tool. Problem solved


Even the best things break, and we’re just talking about CocoaPods here – a repo that thousands of people have write access to, rofl

All in all the next time you go in the terminal and decide to update the managed libraries in your xcode project you will probably see something like this:

M uriparser/0.7.7/uriparser.podspec

A wpxmlrpc/0.4/wpxmlrpc.podspec

A ym/1.2.6/ym.podspec

A zipzap/6.0/zipzap.podspec
Pull is not possible because you have unmerged files.

Please, fix them up in the work tree, and then use ‘git add/rm <file>’

as appropriate to mark resolution, or use ‘git commit -a’.

More about why the CocoaPods repo you can read in their blog here: “Repairing Our Broken Specs Repo“.

However right now you are probably more interested in how to fix your CocoaPods installation so you can keep working.

Just enter these two commands in the Terminal to delete and then re-install (clone from github) your local Specs repo:

pod repo remove master
pod setup

That’s all. Off you go …

This just took me a good few hours so chiming in to share it online.

I have a bunch of code which creates a copy of CLLocationManager, gets the location once, stores this location for further use, and destroys the location manager. It almost drove me crazy that during testing it sometimes would work perfectly and sometimes CLLocationManager just won’t call any of its delegate methods.

It turns out that CLLocationManager must be created on the main thread, otherwise it just doesn’t call any of its delegate methods. I am not sure what the reasoning behind this is (maybe it’s related to getting location-access permission from the user when one is not granted yet?) but if your code might end up on another thread than the main thread you need to switch to the main one.

Here’s the code that did the trick for me:

    //switch to main thread
    if (![NSThread isMainThread]) {
        [self performSelectorOnMainThread:@selector(hostConnectivityChanged) withObject:nil waitUntilDone:NO];
    //create location manager instance
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
    self.locationManager.delegate = self;
    [self.locationManager startUpdatingLocation];

In the case above hostConnectivityChanged gets called by the Reachability class and the method (annoyingly) always falls on a background thread.

A simple check for [NSThread isMainThread] tells you whether you are okay to create a CLLocationManager and if that’s not the case it’s a simple as using performSelectorOnMainThread:withObject:waitUntilDone: (don’t forget to return after that, otherwise you’ll get into an endless loop).

That’s all for today, enjoy

iOS7 and Doodle Booth 3 – UI experimentation and more

For a number of reasons I didn’t get to update Doodle Booth for the launch of iOS7. Actually the main reason was that I worked on 2 books at the same time during the summer that had to launch on iOS7 launch day so … However after all the fuss was over I got together [...]

How to install docs for the CocoaPods you use often

I guess many of you use CocoaPods in your Objective-C projects. If you don’t here’s a short summary what they’re all about. CocoaPods is a library manager for iOS and OSX, it integrates smoothly with Xcode and helps you download and install source code to your Xcode projects from a central repository (this usually being [...]

Last chance to catch the pre-release discount on our new books!

EDIT: Ray has extended the bundle discount for another two days, don’t miss the chance to check it out! It’s two hours before iOS7 is released into the wild. As soon as we hear from Apple we are releasing our new books for as well “iOS7 by Tutorials” and “iOS games by Tutorials“. These two [...]

iOS Games by Tutorials – video teaser 1

I haven’t posted for more than a month because I’ve been hard at work on our two new books. Speaking of new books – this is what this post is actually all about. While the last days pass before the official launch of iOS 7 we’re releasing several teasers for “iOS Games by Tutorials“, if [...]