Speaking at 360iDev Colorado

1 minute read

After taking a break from speaking and running conferences in 2018 and 2019 as I settled into life as yet another Australian in the Bay Area, and then, well, 2020, I’m super excited to be speaking again :)

More info and tickets here: 360idev.com

360 iDev has been a long time supporter of the iOS community, including CocoaHeads, and they’ve done a great job to pull together a huge collection of exciting speakers for this year’s combined in-person and virtual conference.

I’m particularly excited to get together (hopefully in person) with new and old friends - the speaker’s list is amazing: 360idev.com/speakers/.

See if you can spot the theme in my talk :)

State containment grids, and don’t cross the streams

Outside our apps the world is a messy place. Servers return errors, bluetooth devices come in and out of range. Even iOS conspires against us, unceremoniously dumping us into the background or foreground when we least expect it.

This mess mutates state in unwelcome places like a big Twinkie – from the bottom of the stack even up into our view controllers if we aren’t careful.

But being constantly careful and writing fault tolerant code is exhausting and error-prone.

We need a systematic way to encapsulate this state, a high voltage laser containment system if you will, to keep mutating state in one place where errors can be handled, ambiguities can be resolved, and everything can be thoroughly unit tested.

And we want patterns to make sure that the rest of our code stays as stateless as possible.

In this talk I will show how to use the Actor model and Finite State Machines to encapsulate state in a performant thread-safe way.

We will then join these models with Combine and the Swift Type System to help keep our code as stateless as possible.