Clash of the Optionals

…or, how to accidentally break Swift initialization rules.Today I’m going to talk about optionals. Swift optionals. And also another kind of optional. And how you might break the ironclad rules of Swift without realizing it until it’s too late.What is an “optional” anyway? It dep … | Continue reading


@atomicbird.com | 2 years ago

Core Data Using Only Code

If you know anything about Core Data, you’re probably aware of Xcode’s built-in model editor. If you’ve used Core Data, you’ve probably spent more time with it than you care to remember. It edits the data model, which then gets compiled to a binary form Core Data can use when you … | Continue reading


@atomicbird.com | 2 years ago

Stumping People for 1000* Years

* Base 2Last week at 360iDev I hosted the 8th edition of Stump 360. Stump is an evening event that, to my surprise as much as anyone else’s, has become a tradition at 360iDev.What is Stump 360? Stump started as an unofficial spin-off of “Stump the Experts” at Apple WWDC, which ra … | Continue reading


@atomicbird.com | 2 years ago

Core Data Backups, Redux

This is the second of two posts following up on my earlier post about backing up and restoring Core Data.My past post covered the difficulty of learning how to use mostly-undocumented framework methods, specifically about a Core Data method called replacePersistentStore(...). Arn … | Continue reading


@atomicbird.com | 3 years ago

Mostly Undocumented

Last year I wrote about backing up and restoring Core Data. Recently Arnaud Joubay messaged me to ask about it. I used a method called migratePersistentStore(...) to duplicate a persistent store. Arnaud asked why I had not used a similar method called replacePersistentStore(...) … | Continue reading


@atomicbird.com | 3 years ago

Backing up Core Data Stores

Today we’re going to travel back in time a little with Core Data. Or at least find out how your app can do so. What if you want to make a backup copy of your app’s data? What if you want to restore from that backup later on? This won’t be mainly about data safety, because your ap … | Continue reading


@atomicbird.com | 3 years ago

Adding thumbnails with PDFKit

Today I’m continuing with some ideas from my recent post about using PDFKit. In that post I was using a custom PDF view for an app that would work something like a basic slide presentation app.Part of that was adding a thumbnail view with PDFThumbnailView, which ended up looking … | Continue reading


@atomicbird.com | 4 years ago

JSON vs Property Lists, Revisited

In a previous post I wrote about How JSON compares to Apple property lists and the obstacles to converting data between them. That was a while ago but the post is still accurate, as far as it goes. But Swift changes the situation in some ways, so an update is in order.Recap: JSON … | Continue reading


@atomicbird.com | 4 years ago

Getting started with PDFKit

In my post about my custom presentation slide app I mentioned that because of time constraints, I decided against doing my own slide layout. Instead I’d do that in DeckSet, export my slides to PDF, and show the PDFs in my app.So, how do you do that then?Getting a PDF on the scree … | Continue reading


@atomicbird.com | 4 years ago

Interactive Presentation Slides at 360iDev

This is a story of how a trip to a karaoke bar led to me writing my own app to display presentation slides. Of how a user interface that allows live smartass comments led to me being completely nerd sniped until I was able to do something I’ve never seen in a conference session– … | Continue reading


@atomicbird.com | 4 years ago

Better logging with Emoji

Apple’s developer tools provide a rich variety of debugging aids. Sometimes though, it’s useful to do things the old fashioned way. With debugging, this often means just printing out data while your code runs, and then looking through the results to see what’s going on.Some scena … | Continue reading


@atomicbird.com | 4 years ago

Return to Independence

Aaaaand, I’m back. It’s been a long time since I posted anything here.Mainly this was because I worked full time for a while. I found it hard to work all day on someone else’s project, then come home and do even more blog-worthy code-related stuff. At the end of the work day I wa … | Continue reading


@atomicbird.com | 4 years ago

BombBomb in the Gazette

Continue reading


@atomicbird.com | 6 years ago

BombBomb in the Gazette

Continue reading


@atomicbird.com | 6 years ago

BombBomb in the Gazette

The Colorado Springs Gazette just did a nice feature article about BombBomb, the place where I write apps these days. | Continue reading


@atomicbird.com | 6 years ago

Data Detection in Swift

Continue reading


@atomicbird.com | 6 years ago

Data Detection in Swift

Continue reading


@atomicbird.com | 6 years ago

Data Detection in Swift

I have a love/hate relationship with regular expressions. I love them because they’re great for examining text to find useful information and, often, to change the text in some way. I hate them because once you get beyond basic matching, they descend into bizarre write-only code … | Continue reading


@atomicbird.com | 6 years ago

Migrating from Dropbox

Continue reading


@atomicbird.com | 7 years ago

Migrating from Dropbox

Continue reading


@atomicbird.com | 7 years ago

Migrating from Dropbox

Over the past year or so I’ve been trying out Resilio Sync (formerly BitTorrent Sync) as a possible alternative to Dropbox. It’s gradually improved to where I think I can rely on it. With my Dropbox subscription up for renewal in a couple of weeks, now’s the time. In this post I’ … | Continue reading


@atomicbird.com | 7 years ago

Date Math is Hard, Let's Do it Tomorrow

Continue reading


@atomicbird.com | 7 years ago

Date Math is Hard, Let's Do it Tomorrow

Continue reading


@atomicbird.com | 7 years ago

Date Math is Hard, Let's Do it Tomorrow

This post is based on a lightning talk I gave at CocoaConf San Jose a couple of days ago.It’s that time of year– the time when summer time, or “Daylight Saving Time” as we for some reason call it in the USA– is ending. That time when a developer’s thoughts turn to date math and w … | Continue reading


@atomicbird.com | 7 years ago

My other blog

Continue reading


@atomicbird.com | 7 years ago

My other blog

Continue reading


@atomicbird.com | 7 years ago

My other blog

I try to keep this blog on topic, sticking to technical posts of interest to iOS and macOS developers. So when I wanted to write about something else I set up a different blog unrelated to my business. | Continue reading


@atomicbird.com | 7 years ago

Stump 360 III: The Search for Stump

Continue reading


@atomicbird.com | 7 years ago

Stump 360 III: The Search for Stump

Continue reading


@atomicbird.com | 7 years ago

Stump 360 III: The Search for Stump

Later this month I’m hosting Stump 360 III: The Search for Stump, the third annual Stump 360. It’s part of 360iDev in Denver. It’s on August 23, 4:45pm - 6:00pm.In case you’re not familiar with Stump 360, here’s some possibly interesting information.Stump is sort of approximately … | Continue reading


@atomicbird.com | 7 years ago

Stump 360 Questions, 2015

Here’s the list of questions asked at Stump 360 in 2015. If you’re not familiar with Stump 360, see my other post that describes it more fullyIn general, Stump 360 questions can cover Anything iOS or Apple related Especially anything covered in a 360iDev talk. Keep in mind the a … | Continue reading


@atomicbird.com | 7 years ago

Using Stack Views in Table Cells

Continue reading


@atomicbird.com | 7 years ago

Using Stack Views in Table Cells

Continue reading


@atomicbird.com | 7 years ago

Using Stack Views in Table Cells

One of the cool things UIStackView can do for you is make it easy to dynamically update your app’s user interface while it’s running, with smooth animations and not a lot of code. My recent talk at iOSDevCamp DC covered some techniques. Natasha the Robot wrote a couple of great p … | Continue reading


@atomicbird.com | 7 years ago

Flexible UI Design with UIStackView

Continue reading


@atomicbird.com | 7 years ago

Flexible UI Design with UIStackView

Continue reading


@atomicbird.com | 7 years ago

Flexible UI Design with UIStackView

As I mentioned in my last post, last week I did a talk at iOSDevCamp DC where I talked about UIStackView, a relatively new UIKit class that’s my new favorite thing in iOS development. I’m going to cover some of the more useful things UIStackView can do in posts here, which will f … | Continue reading


@atomicbird.com | 7 years ago

UIStackView talk at iOSDevCamp DC

Continue reading


@atomicbird.com | 7 years ago

UIStackView talk at iOSDevCamp DC

Continue reading


@atomicbird.com | 7 years ago

UIStackView talk at iOSDevCamp DC

Last week I did a talk at iOSDevCamp DC, an annual event hosted by Luis de la Rosa. I talked about UIStackView, under the admittedly grandiose title of “Mastering UIStackView”. I’ve used stack views for a number of things recently, as I’ve come to realize they’re a lot more usefu … | Continue reading


@atomicbird.com | 7 years ago

Dates and Data Models

Just use NSDate, right? The obvious choice for handling dates in iOS and OS X apps is NSDate. It’s obvious, right? It’s got “date” right in its name, doesn’t it?And that’s the thing about NSDate. It’s mis-named. It almost says so right in the docs: NSDate objects encapsulate a si … | Continue reading


@atomicbird.com | 8 years ago

File Coordination Fixed!

Continue reading


@atomicbird.com | 9 years ago

File Coordination Fixed!

Continue reading


@atomicbird.com | 9 years ago

File Coordination Fixed!

I wrote a post a few months ago about sharing data between iOS apps and app extensions in which I recommended using NSFileCoordinator and NSFilePresenter. But I had to update the post to remove that portion when some helpful people pointed me to Apple Tech Note 2408 | Continue reading


@atomicbird.com | 9 years ago

Swift Generators and Sequences

I was going to write a blog post about how to create and use Swift generators and sequences. But while I was trying to understand them myself, I found this post over at iOSDeveloperZone | Continue reading


@atomicbird.com | 9 years ago

Using Core Data with Swift

Over the past month or so I’ve been diving into Swift, after many years of working with Objective-C on Macs and iOS. It’s been a change but, gradually, I’m learning the Swift way of doing things. On the way I’ve run into a few bumps in the road when dealing with Core Data, and I … | Continue reading


@atomicbird.com | 9 years ago

Sharing data between iOS apps and app extensions

Since iOS app extensions run as part of a host application rather than as part of their containing app (i.e. your app’s extensions run in somebody else’s app), data sharing isn’t automatic. Finding standard locations like the documents directory doesn’t work for shared data. In t … | Continue reading


@atomicbird.com | 9 years ago