Knowledge: Tech Blog

Where we share our thoughts on technology and design.

iOS

Colin Eberhardt

A Journey Through Sound Synthesis with AudioKit

For the past four years I’ve been an author on Ray Wenderlich’s website which provides tutorials for iOS developers. I don’t do much native iOS development these days, However, I do like to keep my skills up to date. As part of this team I sometimes find myself being assigned...

Colin Eberhardt

Binding with Bond

Swift Bond is a binding framework that removes the mundane task of wiring up your UI. In this tutorial, which was originally published on Ray Wenderlich's website, I introduce the concepts of Bond and demonstrate how to use it to rapidly build an iOS app.

Colin Eberhardt

MVVM With ReactiveCocoa 3.0

This is my final article on ReactiveCocoa 3.0 (RAC3), where I demonstrate some more complex RAC3 usages within the context of an application built using the Model-View-ViewModel (MVVM) pattern.

Colin Eberhardt

ReactiveCocoa 3.0 - Signal Producers and API clarity

My previous blog post took a first look at ReactiveCocoa 3.0 (RC3), where I described the new Signal interface, and the pipe forward operator. In this blog post I continue my exploration of the RC3 APIs and turn my attention to signal producers. I also discuss a few points around the overall clarity of the new ReactiveCocoa APIs.

Colin Eberhardt

A First Look at ReactiveCocoa 3.0

This blog post takes a look at the new ReactiveCocoa 3.0 swift interface, which introduces generics, a pipe-forward operator and an interesting use of curried functions.

Colin Eberhardt

Introducing React Native

A few months ago Facebook announced React Native, a framework that lets you build native iOS applications with JavaScript. I've been spending the past couple of months building am app with this framework, which I have finally been able to share!

Colin Eberhardt

Retrospective on Developing an application with React Native

I've been building a React Native app for the past few months, which was published as a tutorial yesterday. A number of people have asked about my thoughts and opinions about React Native - which I am sharing in this blog post.

Sam Davies

Swift JSON Shoot-Out

For some reason, everybody and their dog has written about how to parse JSON in Swift. Not wishing to be left out, I thought I'd throw my hat into the ring.

Colin Eberhardt

Implementing React.js in Swift

This blog post explores the novel approach taken by the React.js team, where the UI is expressed as a function of the current application state, and re-implements it with Swift.

Colin Eberhardt

Exploring KVO alternatives with Swift

Swift has access to all of the Objective-C APIs, which means that anything you could do with Objective-C you can now do with Swift. However, there are times when it is worth exploring a better, pure-Swift, alternative. This post explores the pros and cons of KVO versus a couple of Swift alternatives.

Colin Eberhardt

Implementing Events in Swift

Swift does not have a built in eventing mechanism. This post explores a few different ways events can be implemented in Swift and how to avoid problems of retain cycles and closure reference equality.

Colin Eberhardt

Exception Handling in Swift

Swift doesn’t support throwing exceptions, nor does it support catching them. This wouldn’t be a problem if you could develop iOS apps in pure Swift, but unfortunately at the moment you cannot. When developing an app most of the APIs you’ll be working with are Objective-C APIs that have been...

Colin Eberhardt

Tearing Down Swift's Optional Pyramid of Doom

This blog post looks at a few techniques that can be used to remove the deeply nested if-let statements that are a common sight in Swift code.

Colin Eberhardt

Swift Initialization and the Pain of Optionals

Swift's strict initialisation process results in a number of practical issues, leaving developers scratching their heads. This post explores a few solutions including two-phase initialisation, the use of optionals and lazy properties.

Chris Grant

Video Stitching with AVFoundation

Explaining the very basics of AVFoundation while building a Mac Application that stitches 3 .mov files together.

Colin Eberhardt

Binding mutable arrays with ReactiveCocoa

This post describes a binding helper that allows you to bind arrays directly to table views with ReactiveCocoa. In this update to my previous post, the helper is extended to support mutable arrays.

Colin Eberhardt

Mandelbrot Generation With Concurrent Functional Swift

This post show how the simple task of computing a Mandelbrot set can be split up across multiple threads (and processors) using functional techniques.

Colin Eberhardt

Swift and the curious case of AnyObject

Swift, as I am sure you are aware, is quite a strict, safe and strongly-typed language. However, because the language needs to maintain Objective-C compatibility it has some rather curious features, and the behaviour of `AnyObject` is one of them!

Colin Eberhardt

Functional Swift and Memoization

This post is a continuation of my previous which looked at implementing Conway’s Game of Life using functional techniques. Here I look at how memoization can be used to cache the return value of a function in order to improve performance.

Colin Eberhardt

Swift By Tutorials is Published

Apple released the first public beta of the Swift programming language just over three months ago. Within days of the release myself and Matt Galloway started working on our book Swift by Tutorials, which as of yesterday is finally finished and shipping!

Colin Eberhardt

The Game of Life with Functional Swift

This blog post shows an implementation of Conway’s Game of Life using functional techniques in Swift. This results in code which is a clear and concise representation of the game’s logic. I also take a closer look at ranges, intervals, the pattern match operator, ~= and how local functions help...

Colin Eberhardt

Swift Adoption Statistics

It was just two months ago that Apple took us by surprise in releasing the Swift programming language. This blog post reflects on the first few months of Swift adoption.

Colin Eberhardt

MVVM, Swift and ReactiveCocoa - It's all good!

This blog post looks out how Swift makes the combination of ReactiveCocoa and MVVM even better ...

Colin Eberhardt

A Statistical Comparison of the iOS and Android Stores

A few months ago I published a blog post which showed the results of analysing the meta-data of 75,000 apps from the iTunes App Store. This blog post continues the analysis by adding 60,000 Android apps into the mix.

Colin Eberhardt

MVVM with ReactiveCocoa

I've recently had a two-part tutorial published on Ray Wenderlich's website that details how ReactiveCocoa can be used to implement the MVVM pattern within iOS applications.

Colin Eberhardt

Swift Sequences and Lazy Evaluation

In this blog post I want to take a quick look at the Swift Sequence protocol, which forms the basis for the for-in loop, and see how this allows you to write code that performs sequence operations that are only evaluated on-demand.

Colin Eberhardt

Binding to a UITableView from a ReactiveCocoa ViewModel

This blog post presents a simple utility class for binding ReactiveCocoa ViewModels to UITableViews without the need for the usual datasource / delegate boiler-plate.

Colin Eberhardt

A Colour Analysis of the Apple App Store

This blog post presents the result of analysing 250,000 screenshots from the Apple App Store, looking at hue, lightness and saturation histograms for each category.

Colin Eberhardt

A Statistical Analysis of the Apple App Store

The App Store continues its rapid growth, with approximately 300,000 apps added each year. I decided it would be fun to download as much app metadata as possible in order to see what patterns and trends I could find. This blog post describes the results.

Colin Eberhardt

Simulating Accelerometer and Location data for iOS

This blog post looks at how to simulate accelerometer and location data so that you can test iOS apps without the need for a physical device. The simulated data is provided by an interactive UI which allows you to rotate the phone and mark paths on a map which can then be replayed.

Colin Eberhardt

ReactiveCocoa - The Definitive Guide

It feels like everyone in the iOS community is talking about ReactiveCocoa at the moment. In this blog post I talk briefly about what ReactiveCocoa is and the 'Definitive Guide' which I wrote for raywenderlich.com

Colin Eberhardt

iOS 7 By Tutorials In Print

The book, iOS 7 By Tutorials, which I contributed four chapters to, is now in print.

Colin Eberhardt

iOS 7 by Tutorials - the first iOS 7 book - is published

For the past four months I have been hard at work writing four chapters for a book, iOS 7 by tutorials. Just yesterday, as the iOS 7 NDA was lifted, the book went on sale.

Colin Eberhardt

New iOS Article - How To Make a Custom Control

My latest iOS development article has been published on Ray Wenderlich's site, this time I look into how to develop custom iOS controls. The article describes the creation of a 'range' slider control, and covers topics such as API design and using Core Graphics for rendering. Interestingly, iOS developers have...

Colin Eberhardt

Linq to Objective-C

In the past few months I have been immersing myself into the world of iOS development. Whilst the Objective-C language takes a little getting used to, with its odd syntax and memory management rules, it is certainly a fun platform to develop for. I do miss a few C# language...

Mark Rhodes

Improving Raphael performance on iOS with CSS transitions

In this post I'll run through the development of DOM-Raphael, a basic CSS3 based JavaScript library which acts as a replacement for Raphael and can be used to improve performance when running on iOS. The source code for the JavaScript for this post is available on GitHub. The driver behind...

Colin Eberhardt

A Multicast Delegate Pattern for iOS Controls

This blog post introduces a simple pattern for adding multicasting capabilities to existing iOS controls. Adding multicasting allows for improved clarity and code re-use. Colin Eberhardt is CIO at ShinobiControls, suppliers of highly interactive and fun charts, grid and UI controls for iOS developers. Most iOS controls have a concept...

Colin Eberhardt

Ray Wenderlich and My Adventures in iOS

The technologies that we use to write applications for our end users are changing at a frightening pace! Over the past few years the title of my blog has changed from "Adventures in WPF" to "Adventures in .NET", and more recently to the very generic "Adventures in Technology". The latest...

Colin Eberhardt

Book Review: iOS Programming for .NET Developers

A couple of weeks ago Josh Smith published his latest book, "iOS Programming for .NET Developers", which seeks to ease the transition from .NET to iOS developers. As someone who has many years of .NET experience, and more recently a desire to develop for 'the other side', I thought this...

Colin Eberhardt

An Introduction and Thoughts on Developing iOS Applications with MonoTouch

This blog post describes the creation of a simple twitter search application for iOS, based on a similar application I wrote for Windows Phone a few months back. In this blog post I'll used the MonoTouch platform, which allows you to write iOS applications using C#. This blog posts describes...

Chris Grant

Comparison of the Available iOS Charting Libraries

In this post, I explore four of the available iOS charting libraries and investigate the features, API, and pros and cons of each. In order to conduct a fair investigation, I have developed a comparison framework which loads historic stock market data from the Yahoo Finance API. My findings were...