Every now and again I offer to give a talk on a subject that interests me - not because I'm overly capable in that area, but because it acts as forced motivation to investigate a certain technology. Below is a summary of each talk and links to slides and video if available. Hopefully it's useful to someone.
I've previously given a number of talks on mobile architecture, mostly from a strategy and agility point of view, and one from a technical point of view at Swipe. Here is a slide deck for a version of the same talk I gave but for a developer audience, with a few more code samples.
At Agile Australia in June 2013, I presented on a recent project I'd been involved with Cam Barrie from Bilue and James Brett from Mi9. We talked about approaches to mobile architectures, mainly around building iOS apps, backend APIs and how this had evolved over the lifetime of the product. Since the audience was an Agile software conference, there was an emphasis on building your mobile apps in a way that allows you to respond to change, to evolve and grow the product and that elements of hybrid web/native apps can help you achieve this.
In May 2013, Thoughtworks ran an event called Thoughtworks Live on the theme of the shattered future - the idea that future software systems will involve many backend systems generating and providing data, and many front end clients consuming these services. Jonny LeRoy from the San Francisco office joined me in Melbourne and Sydney for a talk on Evolving for Multiple Screens, looking at strategies for approaching mobile development now that will continue to allow you to evolve in the future. Many thanks to Natalie Drucker for organising the event.
In August 2012, my colleague from Thoughtworks, Jonny Schneider, and I gave a series of talks around Australia as part of the Thoughtworks Quarterly Technology Briefing. The topic is Mobile: more than just an app. The talk covers a broad range of topics from trends in mobile usage, mobile in the developing world, mobile strategy and some approaches for mobile app development. There is a video of the talk on the Thoughtworks QTB page, and I've linked the slides below.
In May 2012, I presented with Rich Durnall at the Agile Australia conference in Melbourne, on the topic Building a mobile team and getting a product to market. We presented our experience building apps with REA Group (who run the popular realestate.com.au website). The main focus was on how agile software development fits with mobile, with an emphasis on small, lean teams that iterate and learn quickly. The slides don't have a lot of detail, but I've linked them below.
I presented a summary of unit testing for iOS apps at the Melbourne Cocoaheads meetup in November, 2011. It was part rambling introduction to test driven development, part example of certain types of unit tests for iOS. Unfortunately, I had to follow up an talk from Chris Miles about augmented reality, so talking about the dry topic of unit testing wasn't easy. I've posted the slides and a video of the talk below. The slides went a bit funny in the conversion because I used a custom font.
Presented at the Swipe Conference in Melbourne under the topic of Agile iOS but really just my ramblings about iOS development in large teams. The talk was recorded, and both the slides and video are below. I talked about what I think are the pitfalls of iOS development in large teams, how you might go about organising these projects, how you might approach automated testing suites and emphasised the importance of design being integrated for mobile development teams.
Frank is an open source UI testing tool for native iOS applications. I gave a talk on using Frank for iOS testing at various tech groups in Australia, including the Melbourne Cocoaheads group. The presentation included the reasoning behind why we need tests, a summary of existing UI testing tools for iOS and why I think Frank is a good solution. It was recorded, so both the slides and the video are linked below.
Many iOS applications just put all their code in UIViewController's, including any domain models and view logic. The coordinator pattern was designed as a way of breaking these controllers up into smaller pieces, still using the MVC pattern. New versions of the iOS SDK are also taking steps to address this issue, but until they are released I think these coordinators are a good approach for having smaller controllers with a single responsibility and clear dependencies. This presentation was given at the Melbourne design patterns group.
A fellow Melbourne iOS developer, Jesse Collis, and I gave a talk at Melbourne Cocoaheads on keyboard shortcuts in Xcode 4, which is a pretty dry topic but turned out to be quite a fun presentation. It was prepared at the last minute at a time when our iOS team was moving from Xcode version 3 to 4, and noticing that many of the shortcuts had changed.
Jesse Collis and I teamed up to do a couple of guest lectures at RMIT in their iOS programming course. We focused on a case study building a real world iOS application from scratch - well, a cut down and simplified version at least. The application was a simple custom table view driving through to a detail screen, and fetching data from a remote JSON API.
The source code of the application is up on my github account under the project property-search-sample. The source code for the backend server was written in Ruby using Sinatra, and is also on my github page under the property-search-server project. The slides are on my slideshare account and linked below.
Objective C is heavily influenced by Smalltalk. I figure whenever you read about anything new in the software community, the Smalltalk guys were doing it 20 years ago or more. In this talk, I decided to look a little bit at the history of Objective C, the language and the runtime, and a few common design patterns in the iOS frameworks.
This is a talk I gave after I had been doing iPhone development for about 6 weeks. It was a reflection on the things I had learnt and the basics of the language, but not much more.