Featured Books


The Curious Case of the Async Cafe

Swift's solution to asynchronous and concurrent code is now part of the language itself. The new syntax is easier to read and follow the logical flow of what in the past was complicated, fragmented, or deeply nested. With async/await you'll focus on tasks instead of threads or even queues.

"The Curious Case of the Async Cafe" is a quirky fast-paced tour of the components of modern concurrency in Swift including async, await, Tasks, using continuations to replace and wrap delegates and closure-based APIs, AsyncSequences and AsyncStreams, structured concurrency using async let and Task Groups, and, of course, actors.

A Bread Baking Kickstart

The only thing better than the smell of fresh baked bread is the taste! Whether you're an accomplished baker or just getting started, A Bread Baking Kickstart will put you in control of your dough by giving you formulas and techniques with the context you need to make them your own.

The book begins with pancakes and other quick breads before moving on to simple fool-proof recipes and techniques for yeasted breads as well as foccaccia, pizza, pita, and bagels. You'll learn to add more complexity to your breads by using time and pre-ferments such as biga, poolish, and - only if you want - sourdough that you grow from scratch. The book finishes with a foundational recipe that you will learn to adapt to make a wide variety of breads depending on your mood and what you have on hand.

From a simple pancake to a rustic whole wheat sourdough this book is more than just a journey through recipes and techniques. It's a collection of stories and breads I've made for friends and family in various home kitchens over more than four decades.

Featured Videos


Link to Combine to Async part 1

Reconsidering @Published

Replacing communication between an ObservableObject and a SwiftUI View.

Link to Syntax Color talk

Syntax Color

An exploration on why I color the code the way I do in books and videos.

Link to free  talk on valuing the time you have

Valuing the time you have

As you look at all the things you could be doing, how do you make sure you're making the biggest move on the board.

Originally presented at NSNorth 2019.

The latest from...


The Newsletter

Newsletter 193 - Starting again

Life lessons from starting and feeding sourdough. Also, the opposite of déjà vu, another dress controversy, Duke library leaves basecamp, mowers and blowers, Maggie's link to a frog rescue operation, and Ben and Sebastian announce Kino.

The Blog

London

I'm teaching three classes in London in November. Join me for one or all!

Book Updates


Functional Programming Kickstart

Check out A Functional Programming Kickstart, our new friendly and practical book that introduces you to FP quickly and painlessly.

This book highlights the built in support for functional programming in the Swift Standard Library and shows you how to adopt FP in a way that makes sense to you.

Code along with us as we emphasize the important habits and techniques that originate in functional programming but benefit all styles.

Updated for Xcode 12 and tested on Apple Silicon. Includes support for dark mode, epub, pdf, and mobi.

A SwiftUI Kickstart

A SwiftUI Kickstart has been completely updated and revised for the very latest additions to SwiftUI, iOS, and Xcode.

SwiftUI is the future of iOS, Mac, AppleWatch and AppleTV development and A SwiftUI Kickstart introduces experienced Swift programmers to this new User Interface framework.

A SwiftUI Kickstart introduces you to the light-weight, value-typed, declarative world of SwiftUI.

A Swift Kickstart

A Swift Kickstart is the perfect book for the experienced developer who wants to get serious about learning the Swift programming language.

As the language matures and improves, this book changes to reflect the latest best practices and coding style. This second edition to the best-selling Swift introduction has been updated to the very latest public Swift 5.3 release.

Code along with - A Swift Kickstart on the iPad or Mac using the latest Swift Playgrounds or Xcode Playgrounds.