I sweat the details.

I am a freelance software engineer, specialising in iOS and Mac development.




Photos @ Flickr

Chris Miles - Most Interesting Photos - Flickriver

Introducing DynamicXray
DynamicXray + UIKit Pinball

Introducing DynamicXray, a UIKit Dynamics runtime visualisation and introspection library for iOS.

If you have done any work with UIKit Dynamics you may have found that it can be difficult to debug and fine tune the behaviour. UIKit Dynamics is driven by a rigid body physics engine (Box2D in fact) which gives the developer a lot of power, but the abstract nature of the framework can make it difficult to see under the hood of the physics simulation.

DynamicXray provides a live overlay of all dynamic behaviours and dynamic items at runtime, allowing you to visualise and introspect the underlying physics simulation as it is running. DynamicXray works on both devices and simulators.

DynamicXray is free and open source.

Download the DynamicXray framework and learn more at http://dynamicxray.net/.

Download the source code from https://github.com/chrismiles/DynamicXray.

Follow @DynamicXray on Twitter.


Skala Color: a modern OS X colour picker for designers and developers
Skala Color

Recently I worked with the awesomely smart team at Bjango to help them build a new Mac tool. Here it is, Skala Color.

Skala Color is a Mac OS X colour picker plugin. When installed, it sits right beside the built-in colour pickers that everyone is used to like the colour wheel and the crayon selector.

What stands Skala Color apart is its attention to detail. Skala Color was built for the modern Mac OS X environment, with Retina display crispness and carefully crafted animations for a smooth experience.


OpenGL ES for iOS Presentation Videos
Swipe Conference

At the last Swipe Conference I presented two talks on OpenGL ES for iOS developers. I have now published these presentation videos for anyone to watch. I hope they might be useful resources for the iOS community.


Building a native iOS graphing engine for Pocket Weather 4

One of my favourite iOS apps is Pocket Weather Australia by Shifty Jelly who are a friendly little development team based in Adelaide. So it was an honour when they approached me to lend them a hand with development of their new version, overhauled and optimised for iOS 7: Pocket Weather 4.

Specifically, my scope was to build a new, modern graphing engine for them, to replace the old legacy graphing code they had been using for years. There are a few iOS graphing libraries around that produce good results, both commercial and open source. However, third party library dependencies are always a trade off between convenience and managing extra baggage. Plus the ability and/or cost to customise them to meet requirements varies quite a bit. Based on the requirements, my preference was to hand-roll a graph rendering engine using native Core Graphics and Core Animation frameworks, rather than bring in a third party graphing library.



Announcing EasyRes, a Mac OS X fast screen resolution switcher with live animated previews.

EasyRes is my new Mac app, a little utility I developed for myself, before polishing it up and releasing it in the Mac App Store. I found that I was switching resolutions a lot more frequently on the Retina MacBook Pro, which has more usable resolutions due to the high pixel density. Not impressed with the quality of the existing apps out there, I wrote my own. Read more...

Download EasyRes on the Mac App Store

Reveal Public Beta

My friends at Itty Bitty Apps have released an awesome new tool for iOS developers. Reveal is a Mac OS X application for introspecting iOS apps at runtime.

I have been helping the Itty Bitty Apps team develop Reveal for the past 6 months or so. My focus has been on the 3D view hierarchy explosion visualisation, using Scene Kit & OpenGL.


Bluetooth LE with CoreBluetooth Presentation

At February's Melbourne Cocoaheads I gave a presentation about integrating Bluetooth LE peripherals with iOS devices using Apple's Core Bluetooth framework.


Introducing CMUnistrokeGestureRecognizer

Introducing CMUnistrokeGestureRecognizer, my port of the $1 Unistroke Recognizer to iOS as a UIGestureRecognizer. Read more...

OpenGL ES with iOS 5 Part 2: Rendering a masterpiece - Swipe Conference 2012

In September I presented two talks at Swipe Conference in Sydney. The second talk, "OpenGL ES with iOS 5 Part 2: Rendering a masterpiece", covered rendering effects in OpenGL using GLKit, looked at the OpenGL debugging and profiling tools that ship with Xcode, and demonstrated how OpenGL can be used for some fancy segue transitions..


OpenGL ES with iOS 5 Part 1: Learning to draw - Swipe Conference 2012

In September I presented two talks at Swipe Conference in Sydney. The first talk, "OpenGL ES with iOS 5 Part 1: Learning to draw", was an introduction to OpenGL ES and GLKit, aimed at iOS developers new to OpenGL programming.


CMTraerPhysics CocoaHeads Presentation

In March I gave a presentation at Melbourne CocoaHeads about my open source project CMTraerPhysics.


Announcing EZForm 1.0
Announcing EZForm 1.0, my open source form handling and validation library for iOS.

The primary goal of EZForm is to simplify form handling in iOS apps, while not enforcing any constraints on the layout and design of the form UI. Read more...

CMTraerPhysics - Spring physics engine for iOS
New blog post: Announcing CMTraerPhysics - my port of the Traer v3.0 spring physics engine to Objective-C/Cocoa. Source includes an app containing interesting physics demos.

Paper Baron
New blog post: Paper Baron - announcing an iPhone game I worked on for the Australian Airforce Defence Jobs. Read more...

Cocoaheads Talk: Augmented Reality with iOS
New blog post: My Cocoaheads talk on Augmented Reality with iOS - at November's Melbourne Cocoaheads meeting I gave a talk about Augmented Reality with iOS where I review and demonstrate the current set of AR libraries, both commercial and open source. Video embedded below.

Working With a Famous Blue Hedgehog
New blog post: Working With a Famous Blue Hedgehog - I describe a cool project I got to work on late last year, an augmented reality app incorporating a famous video game character.

Cocoaheads Talk: Developing an iPad in-store interactive product browser
New blog post: Cocoaheads Talk: Developing an iPad in-store interactive product browser - earlier in the year I gave a talk at Melbourne Cocoaheads detailing some of the technical challenges that went into making this in-store product browser iPad app. Video embedded below.

Core Data debugging with SQLite
New blog post: Core Data debugging with SQLite - describing how I access the Core Data SQLite store directly for debugging and testing during iOS development.

Organising Core Data for iOS
New blog post: Organising Core Data for iOS - I describe the pattern I have settled on for organising Core Data code in an iOS app. Complete with full source for a demo app showing how I use Core Data in a "real-world" iPhone app.

Locayta Notes 2.1
New blog post: Locayta Notes 2.1 - I describe some the enhancements to one of my client projects, an iPhone/iPad notes/text editor containing full text search & Dropbox sync. Available free in the App Store.

CMPopTipView - new animation option
New blog post: CMPopTipView - new animation option - an update to my custom iOS callout view class.

River Level 1.1
New blog post: River Level 1.1 - an update to one of my hobby iPhone projects, available in the App Store.

Swap It Don't Stop It iPhone app
New blog post: Swap It Don't Stop It iPhone app - one my latest client projects, available in the Australian App Store.

iOS Dev, Beta & Production builds installed side-by-side

New blog post: iOS Dev, Beta & Production builds installed side-by-side

git sharing with dropbox

New blog post: git sharing with dropbox.

Locayta Search Mobile for iOS beta5

New blog post: Locayta Search Mobile for iOS beta5. Explains a new feature in the latest beta of Locayta's full text search library for iPads & iPhones.

Locayta Notes 2.0 for iPad & iPhone
Locayta Notes 2.0 New blog post: Locayta Notes 2.0. Announcing the release of Locayta Notes 2.0, a project I've been working on for Locayta Limited, available free in the App Store.

git push dropbox
New tech blog post: git push dropbox.

CMPopTipView - a custom popup view for iOS
I posted about a custom iOS view I have released on github: CMPopTipView. Read the post about CMPopTipView.
CMPopTipView screen shot

iPad External Screen Mirroring
New tech blog post: iPad External Screen Mirroring.

New iPad/iPhone app release: Locayta Notes
Locayta Notes shows off iOS full text search I've been busy at Locayta lately preparing some Locayta Search Mobile demo apps. We have released the first of these, Locayta Notes, a free iPad/iPhone note taking app. Even better, we've released the source code too! I've written about the Locayta Notes release here and you can get Locayta Notes from the App Store.

© Chris Miles 2003-2014