Tailwind CSS from an iOS Developer's Perspective in The Indie Dev Diaries
The popular CSS framework came to my rescue when redesigning my site. Here's how it went.
Diffable Datasource with UITableView in Snips
Setup diffable datasource with UITableView.
Expose data from Spotlight search using the Core Spotlight framework.
Expose data from Spotlight search using NSUserActivity.
A New Home for Spend Stack in The Indie Dev Diaries
A chapter of my professional life comes to an end. Spend Stack has been acquired and will get the full team it deserves!
Happy When? in The Indie Dev Diaries
Indie development is about having a strong mental game as much as it is strong development skills.
Spend Stack: Year One in The Indie Dev Diaries
Spend Stack has been out one year! Today, I take a second to reflect on all that has happened since it released.
iOS 14: Notable UIKit Additions in UIKit
If you thought UIKit was getting pushed to the side with the rise of SwiftUI, you were wrong. There's a lot that's new, improved or revamped - let's take a look.
WWDC 2020: The Pregame Quiz in Trivia
And here we go - iOS 14, SwiftUI tweaks and Catalyst fixes are on the way. It's time for another WWDC Pregame Quiz!
The Big Update in The Indie Dev Diaries
Spend Stack just recently wrapped up its first big update. Turns out, they are critical to paid up front apps.
How a Feature Ships in The Indie Dev Diaries
Creating a feature is a process that should be as scrutinized as much as it is celebrated. Here's how I go about it in my own indie apps.
Exploring Futures over Closures in Tech Notes
Lately, I've been researching more about effective Combine techniques. Today, I start in on utilizing Futures.
It's Okay to Do Nothing in The Indie Dev Diaries
COVID-19 and your productivity. There are inexorably linked, so let's talk about it.
Keyboard and Combine in Tech Notes
Handling the keyboard on iOS is a rite of passage if not also a little tiresome. Fortunately, Combine makes it better.
Creating a Retail Demo for Apple in The Indie Dev Diaries
Spend Stack was selected by Apple to be included as a retail demo on iPhones & iPads across the globe. Here's what the process was like.
Dynamic Master Detail View Background Colors in Tech Notes
In my quest to pretty up some of the rougher edges of Spend Stack, today I turn my attention to styling my interface in Master-Detail Views. Easy to describe, harder to do.
CollectionDifference in Swift
Another core piece of functionality arrived in Swift 5.1 - built in diffing. Let's take a look.
Empty View With Diffable Datasource in Tech Notes
Empty views are a critical piece of user experience on iOS. Today in tech notes, I explore how this might be done with diffable datasource.
A Best In Class App: Spend Stack Checkup in The Indie Dev Diaries
I've often written about what it takes to be considered a best in class app on iOS. So, how am I doing personally according to my own definition?
Xcode Preview Snips in SwiftUI
Xcode Previews for SwiftUI has quite literally changed a decade old workflow. Here are the techniques I currently live by.
On Forming Habits in The Indie Dev Diaries
What indie dev isn't short on time, wants to ship a new app or write that book? It only happens with realistic goals which beget good habits - here's how I work to create, and foster, good ones.
Can You Learn Design? in The Indie Dev Diaries
There's a lot of discussion in our industry about whether or not designers should learn to code. But, what about the other direction?
SwiftUI: What Just Happened? in SwiftUI
The amount of power and engineering behind SwiftUI is extraordinary. Let's breakdown what's happening when one creates a new project using it.
Animating Images using ImageIO in Image IO
Animating images is a common medium for communication in today's society. In iOS 13, Apple quietly offered us up a way to serve up .gifs or APNG files using ImageIO.
On Launching Your Indie App in The Indie Dev Diaries
The art of launching is a mystical, debated art. Yet, in many ways it's the cornerstone of our initial success.
Introducing Spend Stack in The Indie Dev Diaries
If I write about indie development, I suppose it's time to reveal my indie project. Many years in the making, here's Spend Stack.
A LinkPresentation Introduction in LinkPresentation
Say hello to a new framework shipping in iOS 13 that you've likely used hundreds of times as an end user. Now, rich link previews are available to all of us.
iOS 13: Notable UIKit Additions in UIKit
Though UIKit wasn't the star of the show, its number of improvements certainly don't show it. Let's see what's new in iOS 13 for our favorite framework.
WWDC 2019: The Pregame Quiz in Trivia
iOS 13 is coming. Before Marzipan and Dark Mode show their respective faces, let's enjoy another annual pregame quiz!
NSSecureCoding in Foundation
Any application on iOS is a purveyor of data in some capacity. NSSecureCoding ensures that this data is what it says it is, and will do what it says it should do.
I Made Some Pancakes in The Indie Dev Diaries
What can fluffy butter cakes teach me about indie development? Apparently, just what I needed to learn.
Handling iCloud Assets in Photos
Rich media plays an important role in the mobile ecosystem. Working with them when they're located off-site requires some nuance.
A Best-in-Class iOS App in The Indie Dev Diaries
What is a best in class iOS app? How are they built, and can we quantify what makes them great?
NS_CLOSED_ENUM in Swift
Enumerations provide clarity and intent. Some change and yet others remain stagnant, and now we program effectively for either case.
The Chart That Lies in The Indie Dev Diaries
On being realistic about the things we make, and the relationship that time has with them.
Optimizing Images in Image IO
iOS is a visual medium teeming with beautiful images in virtually every app on your phone. Important though they are, it's trivial to mismanage them from a memory and performance standpoint.
Supporting External Displays in UIKit
With the iPad Pro's USB-C support, the opportunity to support external displays in a first class manner has never been more pertinent. Doing so doesn't require much work, and the potential value add is high.
UIGraphicsImageRenderer in UIKit
For years, we've used Core Graphics to draw. Let's turn the page to modern drawing on iOS.
iOS 12: Notable UIKit Additions in UIKit
Our favorite framework for user interface creations becomes faster and a bit more nimble with iOS 12.
WWDC 2018: The Pregame Quiz in Trivia
iOS 12 beckons, but before it does - let's quiz it up over iOS versions of yesterday.
NSPredicate in Foundation
Twist and turn your way through collections and data sets with ease.
UILayoutGuide in UIKit
Spacer views often make user interface creation more palatable, but with significant drawbacks. There's a more pragmatic way.
As developers, marketing often escapes the lot of us. Fortnuately, Apple has made a few quick wins available to create meanginful connections between your app and its web site.
NSMeasurement in Foundation
Measuring units can be a daunting task, especially with the global audience we often serve. Let's see how Foundation can lend a hand.
Copy on Write in Foundation
Yet again, Foundation dishes out free optimizations without us having to lift a finger. Let's see how collections became a bit smarter.
Device Check Overview in Device Check
There are legitimate uses for tagging devices, but the problem is, doing so can down shady roads. Now, we've got a non shady way to go about it.
Dealing with Home Indicator in UIKit
View Controllers are notorious for the amount of responsibilities they have, but get ready for one more. Here's how to handle the home indicator.
Random Wisdom: Part 1 in Series
In our first edition of random wisdom, let's poke around around some Objective-C. Inline blocks, how selectors work and more.
SFAuthenticationSession in Safari Services
Single sign on isn't gone, in fact - it's better. Enter a new way to deal with OAuth.
simctl in Misc
The iOS emulator is deceptively powerful. Learn about its C.L.I. to automate all sorts of things.
iOS 11: Notable UIKit Additions in UIKit
Once again, UIKit added more firepower. Beyond drag and drop APIs, there's much more to be excited about.
WWDC 2017: The Pregame Quiz in Trivia
Time to fire up the trivia machine, WWDC 17 is around the corner. What better time to test your wit against some Apple history?
Global Functions in UIKit
UIKit has everything to splash out eye candy. But it also houses several helpful utilities to help get you there.
Tail Call Elimination in Foundation
Foundation keeps caches hot and saves on precious stack memory via tail call elimination. Let's take a look at how this occurs.
Attributes in Swift in Swift
Attributes can keep code clean and conscise without much effort. Today, let's cover some common, and uncommon, use cases.
Swift Keywords in Swift
Swift has quite a few keywords. Let's look at every single one, what it does and provide a code sample.
UIStackView: A Field Guide in UIKit
Stack View has been pushed heavily by Apple, but sometimes its complexity overshadows its utility. A few simple tips can help ease that burden.
NS_SWIFT_NAME in Swift
Interop is required in the world we live in. Here's an attribute in Swift that can help make things easier.
noescape in Swift
It's an attribute you've seen hanging over closures. Let's dive into what it means, or more specifically - meant.
iOS True Confessions in Misc
There is no developer who knows it all, and in our industry imposter syndrome runs rampant. So, let's break those walls and celebrate all that we don't know.
Consuming and Transforming Arrays in Swift
The Swift Stand Library offers up several differeny ways to work with arrays. From sorting to sifting, almost every use case is covered efficiently.
Quick Actions are a staple component of a first class 3D Touch experience. Implementing them using Swift's enumerations makes for a pragmatic approach.
Initialization with Closures in Swift
More than just an anonymous function, Swift's closures are extremely versatile. One such use case for them is initialization.
On Learning iOS in Misc
iOS, once a newly minted discipline, is now a large world. It's intimidating to get started, so here's my simple take on how to get going quickly.
#keyPath in Swift
Selectors are a part of iOS development daily. They can also be a common source of frustrating bugs, but #keyPath is here to help.
WWDC 2016: The Pregame Quiz in Trivia
It's our favorite time of the year, dub dub. Let's kick it off with some Apple trivia.
Swift 3 Feature Highlight in Swift
Our favorite open source language is changing at a rapid pace. Here, we'll check out some of my favorite additions that landed in Swift 3.
Access Control in Swift
Abstraction is a tent pole component of modern programming. Swift's robust tooling for access control can help us enforce it.
A Swift Refactor in Swift
Swift offers us several novel ways to refactor our code. Follow along as we embark on such a task on some fictional code.
It's a term you've likely heard in the development community - being a good citizen. What does it mean, and how can we do just that?
iOS Architecture Patterns: Part 3 in Series
Our third and final discussion on common iOS archiecture patterns, and perhaps the most important. Let's chat MVC.
iOS Architecture Patterns: Part 2 in Series
Our second discussion on iOS architecture patterns. Here's how delegation is imprinted across Cocoa Touch.
iOS Architecture Patterns: Part 1 in Series
Our first discussion over iOS architecture patterns. Let's peer into the world of target-action.
ARC in Swift
Automatic reference counting debuted several years ago and ushered in a new era of memory management. But, how does it work with Swift?
Initialization in Swift
If you're coming from Objective-C or are new to Swift, the way its initialization works can be confusing. Diving into the particulars is a worthwhile effort.
Protocol Extensions in Swift
It's possible to enhance a wide family of objects with protocol extensions. Today we'll try and see how its possible.
Option Set in Swift
Option Sets solve a large swath of problems, but you may not think to use them at first. Looking at how they work and why their useful might change your mind.
Javascript in Swift
Javascript and...Swift? It works better than you might think, and for more than just parlor tricks.
Error Handling in Swift
Dealing with errors is usually a developer's favorite task to procrastinate against. But it shouldn't be, and even though Swift's inplementation is differnt - it's robust.
Guard in Swift
More than an _if_ statement, this simple construct makes code safer and readable. But when do you use one or the other?
Defer in Swift
More than an _if_ statement, this simple construct makes code safer and readable. But when do you use one or the other?
Quality of Service in Foundation
Threading, concurrency and parallelism can be a sticky subject. Thankfully, Foundation has an API to make everything safer.
Objective-C in 2015 in Misc
Apple has decreed that it's Swift's world and Objective-C is just living in it. Paradoxically, it's almost made it better than it's ever been.
Pattern Matching in Swift
Pattern matching with Swift yields concise code when it otherwise might be a bit more convoluted. Here's how it works.
Protocol Oriented Programming in Swift
The infamous WWDC session introduced us to 'Protocol Oriented Programming'. Really, though - what is it?
WWDC 2015: The Pregame Quiz in Trivia
Now that WWDC is here, let's start a new annual tradition. It's time for the very first WWDC Pregame Quiz.
Definitive Initialization in Swift
Swift goes to great lengths to ensure values are initialized before they are used. The reasons how vary from API design to the way LLVM works - let's chat about this process called definitive initialization.
Objective-C and Swift Together in Swift
We've now hit the inflection point where your Objective-C projects must mix with Swift, or vice-versa. Here's how my first experience with it went.
bool in Swift
The boolean variable, perhaps the most simple implementation in Computer Science - or is it? Swift's version can do more than just spit out 0 or 1.
set in Swift
The array is a beautiful cornerstone of data structures, but sometimes we call upon its close cousin - the set. Here's how Swift's version works.
int in Swift
Integers are used in almost every iOS app. With Swift, they've become even more useful.
Looping and Iteration in Swift
It's one of the first thing green programmers learn - looping and iteration. Swift has made it easy and versatile.
Casting in Swift
We'd all just as soon let the compiler do all the work, but sometimes casting is unavoidable. Here's how it can be used with Swift.
NSURLComponents in Foundation
Picking apart and composing URLs becomes a more common programming task by the day. Foundation has a class specifically built for such situations.
Tuples in Swift
Tuples can be a short stand in for tiny data constructs. When used properly, they can make your code a bit more opportunistic.