Symbolicating crash reports in iOS

March 28, 2015 Mobile , ,

We have all been there, getting a crash report and the stack trace makes no sense because its not been symbolicated properly. I found this really handy tutorial that goes through every step to symbolicate manually instead of relying on the “magic” to happen. The blog post goes into a good level of depth on how it works and how to do it yourself.


Alcatraz – xcode package/plugin manager

January 11, 2015 Mobile , ,

I discovered a nice plugin manager for Xcode, its called Alcatraz, you can get it from here

You can download a range of items to enhance your experience with Xcode, from Themes to plugins. I found that although Xcode is an excellent IDE, after using Android Studio(essentially Inteli-J), there is some items lacking. Alcatraz has a range of plugins which address some of these issues.

I have currently installed:

AdjustFontSize – Simple plugin to zoom in and out with the CMD +/- keys

CocoaPodsUI – A CocoaPods UI, to save me having to navigate to the project directory and perform an update.

DBSmartPanels – Automatically hides the panel when not in use, I find that you lose alot of screen real estate when you have all the panels open, this plugin will auto hide it when you switch views from an interface file to a code file.

FuzzyAutocomplete – Why have Apple not done this already!? Simple plugin which applies fuzzy matching when showing autocomplete.

RTImageAssets – Since the release of the iphone 6+, most apps should have @3x images, this means additional time in photoshop having to produce the images in an additional resolution, this plugin makes life alot easier, I only have to make the image in the @3x resolution, then get the RTImageAssets to generate the other resolutions.

Chisel ios LLDB debugging tool

August 17, 2014 Mobile , , , ,

Wow and another great release from the Facebook engineering team, this little tool is an excellent addition to the lldb tool.

If you are like me, when you debug you usually put a breakpoint in and then print out objects in the lldb console, well now facebook engineering have released chisel, this tool adds extra commands to the lldb. Here a few to name:

Command Description
pviews Print the recursive view description for the key window.
pvc Print the recursive view controller description for the key window.
visualize Open a UIImage, CGImageRef, UIView, or CALayer in on your Mac.
fv Find a view in the hierarchy whose class name matches the provided regex.
fvc Find a view controller in the hierarchy whose class name matches the provided regex.
show/hide Show or hide the given view or layer. You don’t even have to continue the process to see the changes!
mask/unmask Overlay a view or layer with a transparent rectangle to visualize where it is.
border/unborder Add a border to a view or layer to visualize where it is.
caflush Flush the render server (equivalent to a “repaint” if no animations are in-flight).)
bmessage Set a symbolic breakpoint on the method of a class or the method of an instance without worrying which class in the hierarchy actually implements the method.
wivar Set a watchpoint on an instance variable of an object.
presponder Print the responder chain starting from the given object.

These tools are really handy, especially if you are battling with Autolayout problems, clearly somebody at Facebook was having problems and decided to make a tool to make life easier, well thanks, its a really good idea!


A pretty simple install, make sure you have homebrew installed, then its just a matter of:

brew update
brew install chisel

Then you just need to add a .lldbinit file to your home directory, essentially this is like you .bash_profile, but for xcode/lldb. So this is how i did it.

cd ~

touch .lldbinit

vi .lldbinit

Then once your in vi, just paste in:

command script import /usr/local/opt/chisel/libexec/

Then restart xcode and it should work straight out the box.


RadioTimes DiscoverTV

August 9, 2014 Mobile No comments , , ,

As a senior developer at Immediate Media, I managed a team of 3 developers and 2 QA’s whilst also mentoring a junior developer.

I was fully involved from start to finish with the RadioTimes DiscoverTV for iPad, successfully achieving a top 100 ranking in the Apple app store and winning several design awards.

DiscoverTV is an TV listings grid with media recommendations, essentially the application has two functions, one to allow the user to find out whats on tv now, and the other to give suggestions on what to watch.

You can download the app from the Apple app store here:


Facebook’s iOS Infrastructure

April 26, 2014 Mobile No comments , ,

Have a look at this excellent presentation, it shows the approaches and difficulties facebook have had while structuring the facebook app.

Facebook Link

What is interesting is how facebook made all of their major screens as separate libraries, these libraries invoke custom schema calls which then opens those screens. Quite an interesting view and approach to a large scale development application. By separating each major functionality into a library, you can then focus on the core functionality and not have any form of conflict.


Excellent Mobile Backend Services framework

April 26, 2014 Mobile No comments , ,

I have been working with many mobile services, from push notifications to in app purchases.What Helios provides is one single location for all of these services.

I thoroughly recommend trying it, I found the instructions are fairly simple and easy to deploy, In addition, there is further support for Cargo Bay, which provides one step receipt verification(a must have for any in app purchases). There is tonnes of features, from push notifications to core data synchronization, you can even produce web services from the core data models.

Installation Troubleshooting:

If you are getting the clang error that Xcode 5.1 produces

linking shared-object nokogiri/nokogiri.bundle
clang: error: unknown argument: ‘-multiply_definedsuppress’ [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [nokogiri.bundle] Error 1

then use this command

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install helios

This should get passed warnings treated as errors.

Once installed, when you try

helios new app

And you get An error occurred while installing pg (0.17.1), and Bundler cannot continue. Install the postgresql app, you can get it from here.

iOS View Controller Life Cycle

April 26, 2014 Mobile No comments , ,

Understanding the iOS view controller life cycle is important, I found this diagram which clearly describes what methods are invoked at what state.


RadioTimes iPad Launched

November 6, 2013 Mobile No comments , ,

I am pleased to announce that one of the projects I have been working on, RadioTimes iPad app has now been successfully launched and is now in the App Store. Please download and try it now.

Calabash Structure

October 23, 2013 Mobile No comments , , , , , ,

Here is a small presentation describing the calabash structure.

Calabash Structure

UI Mobile Automation Cross Platform

October 18, 2013 Mobile No comments , , , , , , , , , ,

I have recently been looking at UI Automation tools for some of the projects I have been working on, so i created a list plausible tools.

At first I decided to use Appium but I found that the support for ios 7 wasnt very good and also there is alot of bugs on the github repo. I even found a few bugs that were closed even when they were not fixed. So in the end I decided to try Calabash, recently they have been taken over by Xamarin and so I know that the support will be far better. After using the tool and really putting some hard test cases in, i can say that Calabash is the best tool for my projects.

Here is a power point presentation that I created that explains in detail the analysis.QA UI Automation Tools

%d bloggers like this: