The Curious Engineer

All blogs / Mobile / iOS / Android

Ole Begemann

oleb.net/blog

Mobile / iOS / AndroidDev tools / editors / IDEsConcurrencyEngineering blogs

Posts
361 from 10 Jul 2009 to 16 Dec 2025
Posting
now and then (2 in the last year)
Kind
personal blog
Feed
https://oleb.net/blog/atom.xml

2025 2

  1. Use 'git mv' to record filename case changes in Git
  2. Tracking renamed files in Git

2024 2

  1. Building with nightly Swift toolchains on macOS
  2. How the Swift compiler knows that DispatchQueue.main implies @MainActor

2023 6

  1. How the relative size modifier interacts with stack views
  2. Working with percentages in SwiftUI layout
  3. Keyboard shortcuts for Export Unmodified Original in Photos for Mac
  4. Swift Evolution proposals in Alfred
  5. Pattern matching on error codes
  6. You should watch Double Fine Adventure

2022 12

  1. Understanding SwiftUI view lifecycles
  2. clipped() doesn’t affect hit testing
  3. When .animation animates more (or less) than it’s supposed to
  4. Xcode 14.0 generates wrong concurrency code for macOS targets
  5. Where View.task gets its main-actor isolation from
  6. Experimenting with Live Activities
  7. How @MainActor works
  8. AttributedString’s Codable format and what it has to do with Unicode
  9. A heterogeneous dictionary with strong types in Swift
  10. Advanced Swift, fifth edition
  11. Synchronous functions can support cancellation too
  12. Cancellation can come in many forms

2021 4

  1. What is structured concurrency?
  2. How Swift runs an async executable
  3. Swift needs a better language reference
  4. How OrderedSet works

2020 13

  1. My favorite books 2020
  2. Thinking in SwiftUI
  3. Where is end-to-end encryption for iCloud?
  4. as, as?, and as!
  5. Sanitizing GPX files for public sharing
  6. Linking to text fragments in web pages
  7. Testing UIKit accessibility in unit tests
  8. Automatic test discovery in Swift on Linux
  9. Testing Swift packages on Linux using Docker
  10. Sheets don’t inherit the environment
  11. Enumerating elements in ForEach
  12. TopLevelEncoder and TopLevelDecoder in Combine
  13. URLSession.DataTaskPublisher’s failure type

2019 3

  1. My favorite books 2019
  2. Advanced Swift, fourth edition
  3. Chris Lattner on the origins of Swift

2018 26

  1. My favorite books 2018
  2. Small Fry
  3. Splitting a Swift Sequence into head and tail
  4. Roy Fielding’s REST dissertation
  5. PhotoKit’s data model
  6. It’s wrappers all the way down
  7. The 2018 Macbook Pro
  8. Why you’re not supposed to call description
  9. An iOS alert view with a text field and a “smart” OK button
  10. Migrating an Objective-C class to Swift using subclassing
  11. Migrating an Objective-C class to Swift: a piecemeal approach
  12. Nullability warnings with libextobjc’s @keypath macro
  13. Thoughts on @dynamicMemberLookup
  14. Enumerating enum cases in Swift
  15. Random numbers in Swift
  16. Playground: What’s new in Swift 4.2
  17. How I do analytics
  18. App Architecture book
  19. Swift 4.1
  20. Making illegal states unrepresentable
  21. How to make a copy of a Core Data SQLite database
  22. A helper for working with temporary files in Swift
  23. XCTKVOExpectation for native Swift key paths
  24. A better NSManagedObjectContext​.performAndWait
  25. A script to save the last backup date in SuperDuper
  26. Do you have to manually unregister block-based NotificationCenter observers?

2017 24

  1. Swift imports fixed-size C arrays as tuples
  2. A hack for fixed-size arrays in Swift
  3. How to import a C library in Swift using the Swift Package Manager
  4. Why Dictionary sometimes encodes itself as an array
  5. Strings in Swift 4
  6. Advanced Swift, third edition
  7. Injecting side effects into chained Sequence operations
  8. Mental models in API design
  9. Customizing the file header comment and other text macros in Xcode 9
  10. Chris Lattner on the Realm WWDC 2017 Swift panel
  11. Optimizing Collections
  12. Playground: What’s new in Swift 4
  13. Swift Package Manager macOS deployment target override
  14. How to test a Swift package on Linux using Docker
  15. Keeping XCTest in sync on Linux
  16. Swift releases have themes
  17. Safeguarding Equatable implementations
  18. Enums, Equatable, and exhaustiveness
  19. A Sorted Array Implementation in Swift
  20. Why String.CharacterView is not a MutableCollection
  21. Being a Mutable Collection is not Sufficient to be a MutableCollection
  22. Fun with String Interpolation
  23. Working with Asynchronous Objective-C APIs in Swift
  24. Accessing Dictionaries with Key Paths

2016 33

  1. Protocols are more than Bags of Syntax
  2. Emoji 4.0
  3. Optionals and String Interpolation
  4. The RawRepresentable Protocol in Swift
  5. How to Read the Swift Standard Library Source
  6. Passing an Array of Strings from Swift to C
  7. Generic Range Algorithms
  8. Optional Non-Escaping Closures
  9. Advanced Swift, Second Edition
  10. _playgroundPrintHook
  11. Option Sets in Swift
  12. What’s in a Collection?
  13. Ranges in Swift 3
  14. Strings in Swift 3
  15. Measurements and Units with Phantom Types
  16. Putting the Physics Into Measurements and Units
  17. Measurements and Units, Part 3
  18. Measurements and Units in Foundation
  19. WWDC 2016 Retrospective
  20. Swift 3
  21. Swift Talk
  22. Daniel Steinberg: A Time Lapse Look at Swift
  23. Ellen Shapiro: Outside In – Using UI Tests to Start Improving Your App
  24. Method Dispatch in Protocol Extensions
  25. The UIKonf Bike Tour
  26. Protocol-Oriented Logging, or: Default Arguments in Swift Protocols
  27. Apple Watch, One Year In
  28. Thoughts on the Apple TV After Six Months
  29. Fake Ads as a Business Model
  30. Camera.app Pauses Audio Playback
  31. Advanced Swift
  32. Collaborative Writing on GitHub
  33. ICU Text Transforms in Foundation

2015 23

  1. Lazy Properties in Structs
  2. The Core Data Book
  3. Deleting RSS Feed Items
  4. You Can Rationalize Anything
  5. More Pattern Matching Examples
  6. Ranges and Intervals in Swift
  7. Pattern Matching in Swift
  8. How to Use updateConstraints
  9. Swift Compiler Diagnostics
  10. Is it Immoral to not Block Ads?
  11. Swift’s Type System
  12. UIKonf 2015
  13. C Callbacks in Swift
  14. Redesign
  15. WWDC 2015
  16. Accessibility at the Apple Design Awards
  17. Swift Standard Library.playground
  18. The Public Library and the Web
  19. Thoughts on Google
  20. Truncated Text in Mobile UIs
  21. The Minus Sign
  22. A Proposal for Better Browser Window Management
  23. Code vs. Poetry

2014 40

  1. iPhone 6 Plus Pixel Peeping Follow-Up
  2. Dan Grossman’s Programming Languages Course
  3. Out of Touch
  4. iPhone 6 Plus Pixel Peeping
  5. Lisa Melton: A Decade at the Fruit Company
  6. Podcasts I Like
  7. Backblaze Review
  8. Work Habits at Apple
  9. iPhone 6 Plus First Impressions
  10. Replacing Launch Images With Storyboards
  11. Value-Added Tax
  12. Instance Methods are “Curried” Functions in Swift
  13. Strings in Swift Updated
  14. UIKonf 2014 Talks
  15. Strings in Swift 1
  16. Keep it Simple: The Early Design Years of Apple
  17. One for the Unicode Nerds
  18. Apple’s Take on App Architecture
  19. The Power of iOS 8
  20. Swift Support in CodeRunner
  21. Core Data Concurrency Debugging
  22. Apple Has (Partly) Lifted the NDA for Beta Releases
  23. Clarification on Beta App Review
  24. Apple on App Analytics and Privacy
  25. How Dropbox Uses C++ for Cross-Platform iOS and Android Development
  26. Scroll Views Inside Scroll Views
  27. Inertia, Bouncing, and Rubber-Banding
  28. Parallax Scrolling
  29. Understanding UIScrollView
  30. NSProgress
  31. How I Learned to Stop Worrying and Love Cocoa Auto Layout
  32. Handling Default Values With NSUserDefaults
  33. How Do Alarm Clock Apps Work on iOS?
  34. objc.io #9
  35. A Geocoding Service for OS X
  36. Sunlit Gives You Control Over Your Data
  37. Copyrightable APIs Are Not a Good Thing
  38. Storehouse
  39. Preserving the Read Status of Your RSS Feed When Switching Publishing Systems
  40. My Favorite Tech Blogs

2013 26

  1. My Favorite Cocoa Programming Blogs
  2. Apple's App Store Rules on Data Collection and Privacy
  3. Apple's Inter-App Sharing Dilemma
  4. Android's Storage Access Framework
  5. My Experience With CrashPlan
  6. Choosing a MacBook Pro
  7. Mac & i: iOS 7 unter der Haube
  8. Rob Rix on Postmodern Programming
  9. UIKonf 2014
  10. objc.io #3
  11. Parallelize Your for Loops With GCD
  12. NSArray Binary Search
  13. On NSURLConnection API Design
  14. Differences Between Xcode Project Templates for iOS Apps
  15. Starting With Bluetooth Low Energy Development on iOS
  16. Compiler Warnings for Objective-C Developers
  17. Logitech Tablet Keyboard Review
  18. 10 Things You Need to Know About Cocoa Auto Layout
  19. There is a Bug in the NSFetchedResultsControllerDelegate Documentation
  20. Automating Strings Extraction From Storyboards for Localization
  21. iOS Passbook Tutorial
  22. Building a Blocks-Based Object System in (Objective-)C
  23. iOS Apps: Disable the Sleep Timer for Long-Running Tasks
  24. New Undocumented APIs in iOS 6.1
  25. How to Obtain Undocumented API Diffs Between iOS Versions
  26. Mac Sandboxing: Location Services Access Requires Outgoing Connections

2012 42

  1. Accessing and Pretty-Printing the Elements of a CGPath
  2. Prevent Layers From Snapping Back to Original Values When Using Explicit CAAnimations
  3. Update on Remote View Controllers
  4. More on Remote View Controllers
  5. Remote View Controllers in iOS 6
  6. Learnable Programming
  7. The State of Sharing in iOS 6
  8. NSHipster on UICollectionView
  9. UDID Replacement APIs in iOS 6
  10. UICollectionView
  11. Utf 8
  12. Do Not Track Plus
  13. Book Review: iOS 5 Programming – Pushing the Limits
  14. On Estimating
  15. Please Don't Use URL Shorteners on Twitter
  16. Book Review: Test-Driven iOS Development
  17. Book Review: Insanely Simple
  18. Book Review: iOS Hacker's Handbook
  19. WWDC Videos 2004-2008
  20. “Enlightened, Relevant, Context-Rich Push Notifications”
  21. Pythonista
  22. The Case for Selective Restore from iCloud Backups
  23. Progress
  24. OBSlider Now Available on CocoaPods
  25. In Praise of Google Maps
  26. Steve Jobs Confirmed Native iPhone Apps in 2007
  27. Steve Jobs on Native Apps
  28. Steve Jobs on the File System
  29. Creating and Deleting Calendars in iOS
  30. 15-inch MacBook Pro (mid-2010) Crashing to Black Screen
  31. Checking Code Signing and Sandboxing Status in Code
  32. Passing Data Between View Controllers
  33. What iOS Should Learn From Android and Windows 8
  34. Share Sheets: Only Half Way There
  35. Revisiting the App Launch Sequence on iOS
  36. CGPath Hit Testing
  37. Schulung iOS-Entwicklung für Einsteiger im März 2012
  38. DocSets App for iOS
  39. New Videos at developer.apple.com
  40. Gesture Recognition on iOS With Attention to Detail
  41. initWithNibName:bundle: Breaks Encapsulation
  42. iOS and Mac Development Link Roundup: December 2011

2011 57

  1. UIRequiredDeviceCapabilities Cannot Be Changed in App Updates
  2. Diamond Dash for iOS
  3. Tutorial: How to Sort and Group UITableView by Date
  4. How to Restrict Your iOS App to Modern Hardware
  5. iOS and Mac Development Link Roundup: November 2011
  6. Date and Time Handling in Cocoa Cheat Sheet
  7. Working with Date and Time in Cocoa (Part 2)
  8. Working with Date and Time in Cocoa (Part 1)
  9. iOS 5 Tech Talk: Michael Jurewitz on Performance Measurement
  10. iOS 5 Tech Talk: Allan Schaffer on OpenGL ES with GLKit
  11. iOS 5 Tech Talk: Michael Jurewitz on iCloud Storage
  12. iOS 5 Tech Talk: Mark Kawano on iOS User Interface Design
  13. CodeRunner
  14. Accessing Image Properties Without Loading the Image Into Memory
  15. How to Replace the UDID
  16. iOS and Mac Development Link Roundup: August 2011
  17. What's New for Developers in Mac OS X Lion (Part 3)
  18. What's New for Developers in Mac OS X Lion (Part 2)
  19. iOS and Mac Development Link Roundup: July 2011
  20. What's New for Developers in Mac OS X Lion (Part 1)
  21. “Just when you think things couldn't get any worse”
  22. Apple Changed App Store Prices
  23. Thoughts on Google+ vs. Twitter
  24. Working for the Empire
  25. iOS and Mac Development Link Roundup: June 2011
  26. iPhone 4 im Ausland gekauft? Hol dir die Umsatzsteuer zurück
  27. The App Launch Sequence on iOS
  28. WWDC 2011 Sessions Videos Now Available
  29. Creating Outlets and Actions Via Drag and Drop in Xcode 4
  30. Code Signing Changes in Xcode 4
  31. Book Review: Learn iPhone and iPad cocos2d Game Development
  32. How Developers Should Handle All the Stuff Apple Introduced at WWDC
  33. On Teaching iOS Programming
  34. Thoughts on Lodsys, Patents and Apple
  35. Best iOS and Mac Development-Related Links: May 2011
  36. On Git Support in Xcode 4
  37. Book Review: 97 Things Every Programmer Should Know
  38. Faking Instance Variables in Objective-C Categories With Associative References
  39. Using Cocoa to Convert Images From RGB to CMYK
  40. At What Time Is an App Released on the App Store When Set to a Specific Release Date?
  41. 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
  42. Inspecting Core Data Attributes
  43. Best iOS and Mac Development-Related Links: April 2011
  44. Updated OBShapedButton
  45. Where Apple Would Stand Without the iPhone and iPad
  46. John Siracusa: A Dark Age of Objective-C
  47. Schulung iOS-Entwicklung für Einsteiger im Mai 2011
  48. Best iOS and Mac Development-Related Links: March 2011
  49. Blue Planet 1.1 Now Available
  50. What's New in iOS SDK 4.3
  51. Best iOS and Mac Development-Related Links: February 2011
  52. Announcing Blue Planet for Mac
  53. New Site Design, Now Proudly Serving Static HTML
  54. iOS Development Highlights: January 2011
  55. iOS Hackathon Berlin
  56. OBSlider, a UISlider Subclass With Variable Scrubbing Speed
  57. The Importance of a Unified Buying Experience

2010 35

  1. iOS Development Highlights: December 2010
  2. “You Should Really Write an Alarm Clock App”
  3. My Wish: Syntax Additions to Objective-C for Object Literals
  4. Picture Effects 1.1 Now Available
  5. Animating the Drawing of a CGPath With CAShapeLayer
  6. Method Names in Objective-C
  7. iOS Development Highlights: November 2010
  8. What's New in iOS SDK 4.2
  9. iOS Development Highlights: October 2010
  10. iOS Development Highlights: September 2010
  11. iOS Development Highlights: August 2010
  12. iOS Development Highlights: July 2010
  13. WWDC 2010 Videos Already Available. And Free!
  14. App Store-Safe Page Curl Animations
  15. UIWebView's Weird PDF Display Bug on the iPad
  16. World Cup 2010 Tracker Spreadsheet
  17. How to Debug an App That Was Launched by Push Notification or URL Handler
  18. iPhone SDK Beta to Beta API Diffs
  19. Set the Zoom Level of MKMapView
  20. I'm Available for Contract Work
  21. OBGradientView: A Simple UIView Wrapper for CAGradientLayer
  22. Picture Effects Is Now $0.99
  23. How to Specify Two Icons for a Universal iPhone/iPad App
  24. Steve Jobs: “Think of the children”
  25. Apple Bans Cross-Compilers for iPhone Development
  26. New Opportunities for Developers in iPhone OS 4.0
  27. Universal App != Universal Binary
  28. What's New in Xcode 3.2.2
  29. What's New in iPhone SDK 3.2
  30. Announcing Picture Effects for iPad and iPhone
  31. Video: Picture Effects for iPad
  32. If You Want to Learn Cocoa...
  33. Porting RRGlossCausticShader to the iPhone
  34. Book Review: Coders at Work
  35. Book Review: Cocoa Design Patterns

2009 13

  1. CHDataStructures on the iPhone
  2. Mutable Properties of Immutable Objects
  3. OBShapedButton: Non-Rectangular Buttons on the iPhone
  4. The Apple Symbols Font: A Great Repository for iPhone Button Icons
  5. Updated iTunes Connect Financial Reports to HTML Script
  6. Managing the Network Activity Indicator
  7. Formatting iTunes Connect Financial Reports
  8. Songtext Stopped Working
  9. I Removed Songtext From the App Store
  10. LyricWiki is Down, Songtext Showing Errors
  11. Lyrics Apps for the iPhone: A Market Overview
  12. The Music Player Framework in iPhone SDK 3.0
  13. Announcing Songtext: Lyrics for the iPhone