-
2025
-
Use 'git mv' to record filename case changes in Git
December 16, 2025
-
Tracking renamed files in Git
December 15, 2025
-
-
2024
-
Building with nightly Swift toolchains on macOS
March 5, 2024
-
How the Swift compiler knows that DispatchQueue.main implies @MainActor
February 29, 2024
-
-
2023
-
How the relative size modifier interacts with stack views
March 24, 2023
-
Working with percentages in SwiftUI layout
March 23, 2023
-
Keyboard shortcuts for Export Unmodified Original in Photos for Mac
March 21, 2023
-
Swift Evolution proposals in Alfred
March 9, 2023
-
Pattern matching on error codes
February 27, 2023
-
You should watch Double Fine Adventure
January 31, 2023
-
-
2022
-
Understanding SwiftUI view lifecycles
December 15, 2022
-
clipped() doesn’t affect hit testing
November 24, 2022
-
When .animation animates more (or less) than it’s supposed to
November 10, 2022
-
Xcode 14.0 generates wrong concurrency code for macOS targets
October 12, 2022
-
Where View.task gets its main-actor isolation from
October 11, 2022
-
Experimenting with Live Activities
August 3, 2022
-
How @MainActor works
May 5, 2022
-
AttributedString’s Codable format and what it has to do with Unicode
April 27, 2022
-
A heterogeneous dictionary with strong types in Swift
April 19, 2022
-
Advanced Swift, fifth edition
March 28, 2022
-
Synchronous functions can support cancellation too
February 1, 2022
-
Cancellation can come in many forms
January 31, 2022
-
-
2021
-
What is structured concurrency?
July 8, 2021
-
How Swift runs an async executable
June 30, 2021
-
Swift needs a better language reference
June 3, 2021
-
How OrderedSet works
April 30, 2021
-
-
2020
-
My favorite books 2020
December 31, 2020
-
Thinking in SwiftUI
December 19, 2020
-
Where is end-to-end encryption for iCloud?
December 10, 2020
-
as, as?, and as!
June 29, 2020
-
Sanitizing GPX files for public sharing
June 22, 2020
-
Linking to text fragments in web pages
June 21, 2020
-
Testing UIKit accessibility in unit tests
April 30, 2020
-
Testing Swift packages on Linux using Docker
February 2, 2020
-
Automatic test discovery in Swift on Linux
February 2, 2020
-
Sheets don’t inherit the environment
January 23, 2020
-
Enumerating elements in ForEach
January 17, 2020
-
TopLevelEncoder and TopLevelDecoder in Combine
January 8, 2020
-
URLSession.DataTaskPublisher’s failure type
January 7, 2020
-
-
2019
-
My favorite books 2019
December 30, 2019
-
Advanced Swift, fourth edition
May 31, 2019
-
Chris Lattner on the origins of Swift
February 18, 2019
-
-
2018
-
My favorite books 2018
December 27, 2018
-
Small Fry
November 30, 2018
-
Splitting a Swift Sequence into head and tail
November 29, 2018
-
Roy Fielding’s REST dissertation
October 31, 2018
-
PhotoKit’s data model
September 28, 2018
-
It’s wrappers all the way down
September 25, 2018
-
The 2018 Macbook Pro
September 7, 2018
-
Why you’re not supposed to call description
August 31, 2018
-
An iOS alert view with a text field and a “smart” OK button
August 13, 2018
-
Migrating an Objective-C class to Swift using subclassing
August 9, 2018
-
Migrating an Objective-C class to Swift: a piecemeal approach
July 31, 2018
-
Nullability warnings with libextobjc’s @keypath macro
July 27, 2018
-
Thoughts on @dynamicMemberLookup
June 22, 2018
-
Enumerating enum cases in Swift
June 9, 2018
-
Random numbers in Swift
June 7, 2018
-
Playground: What’s new in Swift 4.2
June 6, 2018
-
How I do analytics
May 25, 2018
-
App Architecture book
May 24, 2018
-
Swift 4.1
April 30, 2018
-
Making illegal states unrepresentable
March 26, 2018
-
How to make a copy of a Core Data SQLite database
March 23, 2018
-
A helper for working with temporary files in Swift
March 22, 2018
-
XCTKVOExpectation for native Swift key paths
February 28, 2018
-
A better NSManagedObjectContext.performAndWait
February 19, 2018
-
A script to save the last backup date in SuperDuper
January 31, 2018
-
Do you have to manually unregister block-based NotificationCenter observers?
January 5, 2018
-
-
2017
-
Swift imports fixed-size C arrays as tuples
December 29, 2017
-
A hack for fixed-size arrays in Swift
December 28, 2017
-
How to import a C library in Swift using the Swift Package Manager
December 18, 2017
-
Why Dictionary sometimes encodes itself as an array
December 5, 2017
-
Strings in Swift 4
November 27, 2017
-
Advanced Swift, third edition
November 23, 2017
-
Injecting side effects into chained Sequence operations
October 30, 2017
-
Mental models in API design
July 31, 2017
-
Customizing the file header comment and other text macros in Xcode 9
July 20, 2017
-
Chris Lattner on the Realm WWDC 2017 Swift panel
June 30, 2017
-
Optimizing Collections
June 12, 2017
-
Playground: What’s new in Swift 4
May 18, 2017
-
Swift Package Manager macOS deployment target override
April 7, 2017
-
How to test a Swift package on Linux using Docker
March 31, 2017
-
Keeping XCTest in sync on Linux
March 30, 2017
-
Swift releases have themes
March 20, 2017
-
Safeguarding Equatable implementations
March 8, 2017
-
Enums, Equatable, and exhaustiveness
March 6, 2017
-
A Sorted Array Implementation in Swift
February 8, 2017
-
Why String.CharacterView is not a MutableCollection
February 7, 2017
-
Being a Mutable Collection is not Sufficient to be a MutableCollection
February 6, 2017
-
Fun with String Interpolation
January 25, 2017
-
Working with Asynchronous Objective-C APIs in Swift
January 19, 2017
-
Accessing Dictionaries with Key Paths
January 9, 2017
-
-
2016
-
Protocols are more than Bags of Syntax
December 30, 2016
-
Emoji 4.0
December 19, 2016
-
Optionals and String Interpolation
December 7, 2016
-
The RawRepresentable Protocol in Swift
November 23, 2016
-
How to Read the Swift Standard Library Source
October 28, 2016
-
Passing an Array of Strings from Swift to C
October 27, 2016
-
Generic Range Algorithms
October 13, 2016
-
Optional Non-Escaping Closures
October 10, 2016
-
Advanced Swift, Second Edition
October 6, 2016
-
_playgroundPrintHook
September 30, 2016
-
Option Sets in Swift
September 28, 2016
-
What’s in a Collection?
September 22, 2016
-
Ranges in Swift 3
September 14, 2016
-
Strings in Swift 3
August 31, 2016
-
Measurements and Units with Phantom Types
August 22, 2016
-
Measurements and Units, Part 3
July 29, 2016
-
Putting the Physics Into Measurements and Units
July 29, 2016
-
Measurements and Units in Foundation
July 28, 2016
-
WWDC 2016 Retrospective
June 29, 2016
-
Swift 3
June 27, 2016
-
Swift Talk
June 21, 2016
-
Daniel Steinberg: A Time Lapse Look at Swift
June 7, 2016
-
Ellen Shapiro: Outside In – Using UI Tests to Start Improving Your App
June 6, 2016
-
Method Dispatch in Protocol Extensions
June 5, 2016
-
The UIKonf Bike Tour
May 29, 2016
-
Protocol-Oriented Logging, or: Default Arguments in Swift Protocols
May 1, 2016
-
Apple Watch, One Year In
April 29, 2016
-
Thoughts on the Apple TV After Six Months
April 26, 2016
-
Fake Ads as a Business Model
March 31, 2016
-
Camera.app Pauses Audio Playback
March 22, 2016
-
Advanced Swift
March 21, 2016
-
Collaborative Writing on GitHub
February 29, 2016
-
ICU Text Transforms in Foundation
January 31, 2016
-
-
2015
-
Lazy Properties in Structs
December 17, 2015
-
The Core Data Book
December 15, 2015
-
Deleting RSS Feed Items
November 30, 2015
-
You Can Rationalize Anything
October 10, 2015
-
More Pattern Matching Examples
September 30, 2015
-
Ranges and Intervals in Swift
September 24, 2015
-
Pattern Matching in Swift
September 18, 2015
-
How to Use updateConstraints
August 31, 2015
-
Swift Compiler Diagnostics
August 10, 2015
-
Is it Immoral to not Block Ads?
August 5, 2015
-
Swift’s Type System
July 21, 2015
-
UIKonf 2015
June 24, 2015
-
C Callbacks in Swift
June 22, 2015
-
Redesign
June 18, 2015
-
WWDC 2015
June 12, 2015
-
Accessibility at the Apple Design Awards
June 11, 2015
-
Swift Standard Library.playground
June 9, 2015
-
The Public Library and the Web
June 1, 2015
-
Thoughts on Google
May 29, 2015
-
Truncated Text in Mobile UIs
February 27, 2015
-
The Minus Sign
February 26, 2015
-
A Proposal for Better Browser Window Management
January 20, 2015
-
Code vs. Poetry
January 13, 2015
-
-
2014
-
iPhone 6 Plus Pixel Peeping Follow-Up
December 17, 2014
-
Dan Grossman’s Programming Languages Course
December 10, 2014
-
Out of Touch
December 9, 2014
-
iPhone 6 Plus Pixel Peeping
November 20, 2014
-
Lisa Melton: A Decade at the Fruit Company
November 1, 2014
-
Podcasts I Like
October 20, 2014
-
Backblaze Review
October 15, 2014
-
Work Habits at Apple
September 30, 2014
-
iPhone 6 Plus First Impressions
September 25, 2014
-
Replacing Launch Images With Storyboards
August 28, 2014
-
Value-Added Tax
July 29, 2014
-
Instance Methods are “Curried” Functions in Swift
July 28, 2014
-
Strings in Swift Updated
July 22, 2014
-
UIKonf 2014 Talks
July 21, 2014
-
Strings in Swift 1
July 3, 2014
-
Keep it Simple: The Early Design Years of Apple
June 29, 2014
-
One for the Unicode Nerds
June 27, 2014
-
Apple’s Take on App Architecture
June 20, 2014
-
The Power of iOS 8
June 12, 2014
-
Core Data Concurrency Debugging
June 11, 2014
-
Swift Support in CodeRunner
June 11, 2014
-
Apple on App Analytics and Privacy
June 3, 2014
-
Clarification on Beta App Review
June 3, 2014
-
Apple Has (Partly) Lifted the NDA for Beta Releases
June 3, 2014
-
How Dropbox Uses C++ for Cross-Platform iOS and Android Development
May 23, 2014
-
Scroll Views Inside Scroll Views
May 21, 2014
-
Inertia, Bouncing, and Rubber-Banding
May 8, 2014
-
Parallax Scrolling
May 2, 2014
-
Understanding UIScrollView
April 30, 2014
-
NSProgress
March 12, 2014
-
How I Learned to Stop Worrying and Love Cocoa Auto Layout
March 3, 2014
-
Handling Default Values With NSUserDefaults
February 25, 2014
-
How Do Alarm Clock Apps Work on iOS?
February 20, 2014
-
objc.io #9
February 10, 2014
-
A Geocoding Service for OS X
January 23, 2014
-
Sunlit Gives You Control Over Your Data
January 22, 2014
-
Storehouse
January 17, 2014
-
Copyrightable APIs Are Not a Good Thing
January 17, 2014
-
Preserving the Read Status of Your RSS Feed When Switching Publishing Systems
January 14, 2014
-
My Favorite Tech Blogs
January 1, 2014
-
-
2013
-
My Favorite Cocoa Programming Blogs
December 31, 2013
-
Apple's App Store Rules on Data Collection and Privacy
December 19, 2013
-
Apple's Inter-App Sharing Dilemma
December 18, 2013
-
Android's Storage Access Framework
November 20, 2013
-
My Experience With CrashPlan
November 10, 2013
-
Choosing a MacBook Pro
October 27, 2013
-
Mac & i: iOS 7 unter der Haube
October 20, 2013
-
Rob Rix on Postmodern Programming
October 15, 2013
-
UIKonf 2014
October 14, 2013
-
objc.io #3
August 8, 2013
-
Parallelize Your for Loops With GCD
July 17, 2013
-
NSArray Binary Search
July 10, 2013
-
On NSURLConnection API Design
July 8, 2013
-
Differences Between Xcode Project Templates for iOS Apps
May 31, 2013
-
Starting With Bluetooth Low Energy Development on iOS
April 29, 2013
-
Compiler Warnings for Objective-C Developers
April 25, 2013
-
Logitech Tablet Keyboard Review
April 11, 2013
-
10 Things You Need to Know About Cocoa Auto Layout
March 31, 2013
-
There is a Bug in the NSFetchedResultsControllerDelegate Documentation
February 27, 2013
-
Automating Strings Extraction From Storyboards for Localization
February 21, 2013
-
iOS Passbook Tutorial
February 19, 2013
-
Building a Blocks-Based Object System in (Objective-)C
February 11, 2013
-
iOS Apps: Disable the Sleep Timer for Long-Running Tasks
February 7, 2013
-
How to Obtain Undocumented API Diffs Between iOS Versions
February 5, 2013
-
New Undocumented APIs in iOS 6.1
February 5, 2013
-
Mac Sandboxing: Location Services Access Requires Outgoing Connections
January 17, 2013
-
-
2012
-
Accessing and Pretty-Printing the Elements of a CGPath
December 7, 2012
-
Prevent Layers From Snapping Back to Original Values When Using Explicit CAAnimations
November 28, 2012
-
Update on Remote View Controllers
October 8, 2012
-
More on Remote View Controllers
October 5, 2012
-
Remote View Controllers in iOS 6
October 1, 2012
-
The State of Sharing in iOS 6
September 27, 2012
-
Learnable Programming
September 27, 2012
-
NSHipster on UICollectionView
September 24, 2012
-
UICollectionView
September 20, 2012
-
UDID Replacement APIs in iOS 6
September 20, 2012
-
UTF-8
September 17, 2012
-
Do Not Track Plus
September 13, 2012
-
Book Review: iOS 5 Programming – Pushing the Limits
September 11, 2012
-
On Estimating
August 29, 2012
-
Please Don't Use URL Shorteners on Twitter
August 23, 2012
-
Book Review: Test-Driven iOS Development
August 20, 2012
-
Book Review: Insanely Simple
August 19, 2012
-
Book Review: iOS Hacker's Handbook
July 16, 2012
-
“Enlightened, Relevant, Context-Rich Push Notifications”
July 12, 2012
-
WWDC Videos 2004-2008
July 12, 2012
-
Pythonista
July 11, 2012
-
The Case for Selective Restore from iCloud Backups
July 9, 2012
-
Progress
June 18, 2012
-
OBSlider Now Available on CocoaPods
June 13, 2012
-
In Praise of Google Maps
June 10, 2012
-
Steve Jobs Confirmed Native iPhone Apps in 2007
June 8, 2012
-
Steve Jobs on Native Apps
June 7, 2012
-
Steve Jobs on the File System
June 5, 2012
-
Creating and Deleting Calendars in iOS
May 31, 2012
-
15-inch MacBook Pro (mid-2010) Crashing to Black Screen
May 30, 2012
-
Checking Code Signing and Sandboxing Status in Code
February 22, 2012
-
Passing Data Between View Controllers
February 21, 2012
-
What iOS Should Learn From Android and Windows 8
February 20, 2012
-
Share Sheets: Only Half Way There
February 17, 2012
-
Revisiting the App Launch Sequence on iOS
February 9, 2012
-
CGPath Hit Testing
February 3, 2012
-
Schulung iOS-Entwicklung für Einsteiger im März 2012
February 2, 2012
-
DocSets App for iOS
January 31, 2012
-
New Videos at developer.apple.com
January 27, 2012
-
Gesture Recognition on iOS With Attention to Detail
January 25, 2012
-
initWithNibName:bundle: Breaks Encapsulation
January 23, 2012
-
iOS and Mac Development Link Roundup: December 2011
January 1, 2012
-
-
2011
-
UIRequiredDeviceCapabilities Cannot Be Changed in App Updates
December 23, 2011
-
Diamond Dash for iOS
December 8, 2011
-
Tutorial: How to Sort and Group UITableView by Date
December 2, 2011
-
How to Restrict Your iOS App to Modern Hardware
December 1, 2011
-
iOS and Mac Development Link Roundup: November 2011
November 30, 2011
-
Date and Time Handling in Cocoa Cheat Sheet
November 23, 2011
-
Working with Date and Time in Cocoa (Part 2)
November 22, 2011
-
Working with Date and Time in Cocoa (Part 1)
November 17, 2011
-
iOS 5 Tech Talk: Michael Jurewitz on Performance Measurement
November 14, 2011
-
iOS 5 Tech Talk: Allan Schaffer on OpenGL ES with GLKit
November 9, 2011
-
iOS 5 Tech Talk: Michael Jurewitz on iCloud Storage
November 8, 2011
-
iOS 5 Tech Talk: Mark Kawano on iOS User Interface Design
November 7, 2011
-
CodeRunner
October 31, 2011
-
Accessing Image Properties Without Loading the Image Into Memory
September 30, 2011
-
How to Replace the UDID
September 28, 2011
-
iOS and Mac Development Link Roundup: August 2011
August 31, 2011
-
What's New for Developers in Mac OS X Lion (Part 3)
August 29, 2011
-
What's New for Developers in Mac OS X Lion (Part 2)
August 25, 2011
-
iOS and Mac Development Link Roundup: July 2011
August 1, 2011
-
What's New for Developers in Mac OS X Lion (Part 1)
July 20, 2011
-
“Just when you think things couldn't get any worse”
July 15, 2011
-
Apple Changed App Store Prices
July 14, 2011
-
Thoughts on Google+ vs. Twitter
July 7, 2011
-
Working for the Empire
July 6, 2011
-
iOS and Mac Development Link Roundup: June 2011
July 1, 2011
-
iPhone 4 im Ausland gekauft? Hol dir die Umsatzsteuer zurück
June 29, 2011
-
The App Launch Sequence on iOS
June 27, 2011
-
WWDC 2011 Sessions Videos Now Available
June 23, 2011
-
Creating Outlets and Actions Via Drag and Drop in Xcode 4
June 22, 2011
-
Code Signing Changes in Xcode 4
June 21, 2011
-
Book Review: Learn iPhone and iPad cocos2d Game Development
June 10, 2011
-
How Developers Should Handle All the Stuff Apple Introduced at WWDC
June 7, 2011
-
On Teaching iOS Programming
June 5, 2011
-
Thoughts on Lodsys, Patents and Apple
June 3, 2011
-
Best iOS and Mac Development-Related Links: May 2011
June 1, 2011
-
On Git Support in Xcode 4
May 18, 2011
-
Book Review: 97 Things Every Programmer Should Know
May 16, 2011
-
Faking Instance Variables in Objective-C Categories With Associative References
May 15, 2011
-
Using Cocoa to Convert Images From RGB to CMYK
May 12, 2011
-
Apple's System of Fixed Exchange Rates in the App Store, or: How a Customer From Japan Can Be Worth 75% More Than One From the UK
May 6, 2011
-
At What Time Is an App Released on the App Store When Set to a Specific Release Date?
May 6, 2011
-
Inspecting Core Data Attributes
May 4, 2011
-
Best iOS and Mac Development-Related Links: April 2011
May 1, 2011
-
Updated OBShapedButton
April 24, 2011
-
Where Apple Would Stand Without the iPhone and iPad
April 23, 2011
-
John Siracusa: A Dark Age of Objective-C
April 22, 2011
-
Schulung iOS-Entwicklung für Einsteiger im Mai 2011
April 21, 2011
-
Best iOS and Mac Development-Related Links: March 2011
April 1, 2011
-
Blue Planet 1.1 Now Available
March 30, 2011
-
What's New in iOS SDK 4.3
March 14, 2011
-
Best iOS and Mac Development-Related Links: February 2011
March 1, 2011
-
Announcing Blue Planet for Mac
February 28, 2011
-
New Site Design, Now Proudly Serving Static HTML
February 27, 2011
-
iOS Development Highlights: January 2011
January 31, 2011
-
iOS Hackathon Berlin
January 13, 2011
-
OBSlider, a UISlider Subclass With Variable Scrubbing Speed
January 3, 2011
-
The Importance of a Unified Buying Experience
January 2, 2011
-
-
2010
-
iOS Development Highlights: December 2010
December 31, 2010
-
“You Should Really Write an Alarm Clock App”
December 30, 2010
-
My Wish: Syntax Additions to Objective-C for Object Literals
December 22, 2010
-
Picture Effects 1.1 Now Available
December 21, 2010
-
Animating the Drawing of a CGPath With CAShapeLayer
December 18, 2010
-
Method Names in Objective-C
December 17, 2010
-
iOS Development Highlights: November 2010
November 30, 2010
-
What's New in iOS SDK 4.2
November 23, 2010
-
iOS Development Highlights: October 2010
October 31, 2010
-
iOS Development Highlights: September 2010
September 30, 2010
-
iOS Development Highlights: August 2010
August 31, 2010
-
iOS Development Highlights: July 2010
July 31, 2010
-
WWDC 2010 Videos Already Available. And Free!
June 18, 2010
-
App Store-Safe Page Curl Animations
June 17, 2010
-
UIWebView's Weird PDF Display Bug on the iPad
June 7, 2010
-
World Cup 2010 Tracker Spreadsheet
June 6, 2010
-
How to Debug an App That Was Launched by Push Notification or URL Handler
May 6, 2010
-
iPhone SDK Beta to Beta API Diffs
May 4, 2010
-
Set the Zoom Level of MKMapView
May 3, 2010
-
I'm Available for Contract Work
April 30, 2010
-
OBGradientView: A Simple UIView Wrapper for CAGradientLayer
April 20, 2010
-
Picture Effects Is Now $0.99
April 13, 2010
-
How to Specify Two Icons for a Universal iPhone/iPad App
April 12, 2010
-
New Opportunities for Developers in iPhone OS 4.0
April 9, 2010
-
Apple Bans Cross-Compilers for iPhone Development
April 9, 2010
-
Steve Jobs: “Think of the children”
April 9, 2010
-
Universal App != Universal Binary
April 7, 2010
-
What's New in Xcode 3.2.2
April 6, 2010
-
What's New in iPhone SDK 3.2
April 5, 2010
-
Video: Picture Effects for iPad
April 2, 2010
-
Announcing Picture Effects for iPad and iPhone
April 2, 2010
-
If You Want to Learn Cocoa...
March 7, 2010
-
Porting RRGlossCausticShader to the iPhone
February 28, 2010
-
Book Review: Coders at Work
February 23, 2010
-
Book Review: Cocoa Design Patterns
January 31, 2010
-
-
2009
-
CHDataStructures on the iPhone
December 11, 2009
-
Mutable Properties of Immutable Objects
November 30, 2009
-
OBShapedButton: Non-Rectangular Buttons on the iPhone
October 17, 2009
-
The Apple Symbols Font: A Great Repository for iPhone Button Icons
October 1, 2009
-
Updated iTunes Connect Financial Reports to HTML Script
September 23, 2009
-
Managing the Network Activity Indicator
September 10, 2009
-
Formatting iTunes Connect Financial Reports
September 9, 2009
-
Songtext Stopped Working
August 3, 2009
-
I Removed Songtext From the App Store
July 24, 2009
-
LyricWiki is Down, Songtext Showing Errors
July 19, 2009
-
Lyrics Apps for the iPhone: A Market Overview
July 14, 2009
-
The Music Player Framework in iPhone SDK 3.0
July 13, 2009
-
Announcing Songtext: Lyrics for the iPhone
July 10, 2009
-