All blogs / Mobile / iOS / Android
Jesse Squires
Turing complete with a stack of 0xdeadbeef
Mobile / iOS / AndroidSoftware / engineering practiceDev tools / editors / IDEs
- Posts
- 311 from 9 Jun 2014 to 7 Nov 2025
- Posting
- now and then (1 in the last year)
- Kind
- personal blog
- Feed
- https://www.jessesquires.com/feed.xml
2025 8
- Mariposa: a lightweight Swift CLI to automate sharing blog posts to social media
- Workaround: how to silence individual deprecation warnings in Swift
- How to automate perfect screenshots for the Mac App Store
- How to remove unwanted Swift Package schemes in Xcode
- AI Code review is always wrong
- Xcode Tip: spell checking
- Reading Notes: From misery to boredom to anxiety
- Type erasure for Equatable and Hashable types in Swift: Lessons from ReactiveCollectionsKit
2024 18
- UIKit DiffableDataSource API inconsistencies with Swift Concurrency annotations explained
- Diffing in ReactiveCollectionsKit: Understanding Identity and Equality
- Introducing ReactiveCollectionsKit: A Swift replacement for IGListKit
- Kintsugi
- SwiftUI's Observable macro is not a drop-in replacement for ObservableObject
- UI testing improvements in Xcode 16
- Our App Store screenshot nightmare is (almost) over
- SwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors
- Swift concurrency hack for passing non-sendable closures: Uncheck yourself before you wreck yourself
- Workaround: Xcode deletes Package.resolved file and produces 'missing package product' errors
- The curious case of Apple's third-party SDK list for privacy manifests
- Workaround: Swift scripts importing Cocoa frameworks broken on macOS 14
- A simple fastlane setup for solo indie developers
- Mac menu bar apps for sale
- Swift protocol requirement quirks
- App Store screenshot requirements need to change
- Workaround: Xcode simctl status_bar is still broken for iOS 17 simulators
- Another frivolous and frustrating App Store rejection
2023 34
- A list of books I read in 2023
- Top posts of 2023
- How to fix Mac menu bar icons hidden by the MacBook notch
- Find me on Mastodon
- Going indie 4
- Xcode shell env
- M3 performance
- New m3 mbp
- Fix airpods reset
- Github tip filter involves
- Swift url absolutestring path
- Going indie 3
- Navigation link accessory view swiftui
- Stop prefixing userdefaults keys
- Creating dynamic colors in swiftui
- Where are xcode bookmarks stored
- Going indie 2
- Estimating rss subscribers
- Linebreakstrategy pushout
- New app taxatio
- Going indie
- Exploring a new ios codebase
- Hardcore and karma
- Improve multiplatform swiftui code
- Xcode tip filter modified files
- Icloud tabs bug
- Xcode tip filter console
- Terminal tip say
- Xcode tip sharing breakpoints
- Ios view controller loading
- Goodbye twitter
- Mac os x vs macos
- Upgrading to macos ventura
- Eventmachine failure on macos ventura
2022 33
- Rss to mastodon
- Powerful navigation api
- Simctrl status bar broken
- Mastodon
- Sharing code in swiftui apps
- Implementing a main thread watchdog on ios
- Automatically assign milestones with github actions
- Disconnected
- My website disappeared from bing and duckduckgo part 2
- May 16
- Nimble 10 released
- Docc on github pages
- Github suspending russian accounts
- Quick 5 released
- Duckduckgo removing other sites
- Fastlane version with xcconfig
- Comparing release branch strategies
- Gh action merge release to main
- My website disappeared from bing and duckduckgo
- Quickly displaying the swift version that ships with xcode
- Mac sigh of death
- Decimal vs double
- Icloud failures developer relations
- Core data optionals
- Thich nhat hanh
- Nfts and web3
- The best and the worst
- Screen time is drunk
- Users and privacy
- Imessage spam and reporting abuse
- Time machine error 35 monterey
- On third party apple watch apps
- Ios app library is drunk
2021 56
- Top posts of 2021
- Reading list 2021
- My first apple watch
- Apple watch thinks im dead
- Please dont copy my site
- My worst tech interview experience
- Yo wheres my juicero
- Reading notes abolition of work
- Fix lldb rpc server crash
- Reading notes the wage system
- Swiftui tips for organizing multiplatform projects
- Industrial sabotage
- Xcode 13 device orientation bug
- Using an appdelegate in swiftui
- First impressions of swiftui
- Deprecating presenterkit
- Swift package ios tests
- Xcode 13 framework test fail
- How to start a blog
- Dont let them loot
- Delete app during ui tests
- Git aliases to improve productivity
- Recently updated posts
- Github actions workflows for automatic rebasing and merging
- An ios shortcut to show proof of vaccine
- Useful label based github actions workflows
- Caching bundler on github actions
- Different ways to observe properties in swift
- Fixing a hard to find bug in dark mode
- Debugging diffabledatasource cellproviders
- Diffable data source behavior changes and reconfiguring cells in ios 15
- Is swiftui ready
- Apple docc great but useless for oss
- What is a rent strike
- Rss feeds jekyll and absolute versus relative urls
- To distribute in the mac app store or not
- Three months of big sur
- Ios 14 app library
- Resources for learning swiftui
- Time machine error 45 big sur
- Why swift closures are not equatable
- Migrating omnifocus to a new mac
- Apple cooperation with authoritarian governments
- A better approach to writing a userdefaults property wrapper
- Returning to normal part 3
- Xcode tips for everyone
- How to test your macos app or not
- Using pipes in swift scripts
- Returning to normal part 2
- Xcode ui testing reliability tips
- Returning to normal
- Deleting tweets and other social media content
- Fixing macos search bugs
- A web host worth using
- How to reboot touch bar without rebooting macbook
- Top posts of 2020
2020 48
- A list of books I read in 2020
- The different types of self in Swift
- Resources for learning about compilers and LLVM
- Obscure bridgeOS crash
- What type is self in a Swift self-executing anonymous closure used to initialize a stored property?
- Useful Danger rules for Bitrise
- The largest strike in history
- Running multiple instances of Danger
- How to fix Ruby/Bundler error 'No such file or directory' on NearlyFreeSpeech.net
- Radical readings for the Tech Worker
- Seasons Greetings from your CEO at TECH COMPANY
- Swift Unwrapped with Jordan Rose
- Swift deinit is (sometimes) not called for throwing or failable initializers
- Why is Apple acting like an Asshole?
- Don't forget the keyboards
- Unpropertied
- zsh could not find CocoaPods
- GitHub Tip: watching releases
- How to fix the incomprehensible tabs in Xcode 12
- Xcode 12 drops support for iOS 8 and how to fix deployment target warnings in CocoaPods
- Time Machine error 45
- Swift globals and static members are atomic and lazily computed
- The best Touch Bar configuration for people who hate the Touch Bar: Or, how I finally upgraded my 6-year-old MacBook
- Quickly switching between Xcodes
- Swift tip: marking unused required initializers as unavailable
- Who do they protect?
- On non-native apps: JavaScript doesn't suck but your app might
- Simple, private, and open source analytics with GoatCounter
- Approved for GitHub sponsors
- Updating permalinks and adding redirects for Jekyll sites
- Deprecating JSQDataSourcesKit
- Fully automating perfect status bar overrides for iOS simulators with Nine41
- Previously previously previously relocated items in macOS Catalina
- All we have is each other: Bay Area mutual aid resources for COVID-19
- Running Danger on GitHub Actions
- Open source libraries for building menu bar Mac apps
- Implementing Dark Mode and using CGColor
- Another issue with SwiftPM Xcode integration
- JetBrains Mono and disabling font ligatures
- My experience replacing CocoaPods with SwiftPM
- Mac app tests fail with hardened runtime enabled
- Setting up default community health files on GitHub and crafting a thorough Contributing Guide for any open-source project
- Xcode Tip: Using breakpoints as bookmarks
- AppleScript to export open Safari tabs to OmniFocus
- Time Machine failing on macOS Catalina
- Observing appearance changes on iOS and macOS
- Selecting an Xcode version on GitHub Actions CI
- A list of books I read in 2019
2019 19
- A script to automate overriding iOS simulator status bar values
- Reading Notes: The Fire Next Time
- Reading Notes: Bay Area Homelessness report
- Backing up your iCloud Drive files using rsync
- Overriding status bar display settings in the iOS simulator
- The ACA and your credit report
- Swift 5.1 with Doug Gregor
- New iMessage sticker pack: plurals and noun
- Introducing Red Eye
- The impossible
- Workaround for highlight bug in NSStatusItem
- An update to Lucifer
- Implementing right-click for NSButton
- Linked Out
- Reading Notes: Relationship Anarchy
- Summoning Lucifer: on making my first Mac app as an iOS developer
- Reading Notes: The Individual, Society, and the State
- Agile by degrees: How to estimate engineering project timelines
- A list of books I read in 2018
2018 20
- Executing AppleScript in a Mac app on macOS Mojave and dealing with AppleEvent sandboxing
- Debugging a subtle Swift bug that will make you facepalm
- Lars And The Basket Of Apples
- 15 years later: it was summer and we were free
- The Four Agreements
- Swift tip: Building arrays with compactMap
- Hold it! Or, how to blame homelessness on the homeless in San Francisco
- Swift's new calling convention
- Xcode Tip: Using behaviors to improve debugging
- The Tor Browser
- Choosing a VPN service
- Reading Adichie
- Swift Unwrapped at WWDC 2018
- Xcode Tip: Improving the assistant editor
- Thoughts on WWDC 2018
- Why optional closures in Swift are escaping
- Removing Google Analytics, too
- Upgrading to Bootstrap 4
- Replacing Google Search with DuckDuckGo
- How to run sysdiagnose on iOS
2017 22
- Ending the Swift Weekly Brief
- Floating-point Swift, ulp, and epsilon
- When your app is used in unexpected ways
- Measuring Swift compile times in Xcode 9
- Building a site with Jekyll on NearlyFreeSpeech
- Supporting JSON feed
- Data & Society: Media Manipulation and Disinformation online
- Customizing git-log
- A story about Swift source compatibility
- Officially deprecating JSQMessagesViewController
- Protocol composition in Swift and Objective-C
- Writing better singletons in Swift
- A Fair Hotel
- Thoughts on Swift access control
- Swift Unwrapped
- Adapting to change
- Refactoring singleton usage in Swift
- Sleazy recruiting
- Prioritization
- Pushing the limits of protocol-oriented programming
- Testing and mocking without OCMock
- Swift documentation, Part 2
2016 17
- 140 proposals in 30 minutes
- Contributing to Swift Weekly Brief
- Understanding Swift Evolution
- Shipping Swift 3.0
- Speaking at FrenchKit
- Enums as configuration: the anti-pattern
- Migrating to Swift 3
- Swift 3 sherlocked my library
- The A5 is dead (almost)
- Avoiding the overuse of @objc in Swift
- Open source everything
- Swift documentation
- Contributing to open source Swift
- Swifty view controller presenters
- Call for contributors
- The new weekly brief
- Open source Swift: weekly brief #4
2015 13
- Open source Swift: weekly brief #3
- Open source Swift: weekly brief #2
- Open source Swift: weekly brief
- Swift open source
- Building type-safe, composable data sources in Swift
- UIKit changes in iOS 9
- Swift enumerations and equatable
- Namespaced constants in Swift
- Using Core Data in Swift
- Failable initializers, revisited
- Functional notifications
- Better Core Data models in Swift
- Swift, Core Data, and unit testing
2014 10
Undated 13
- Recently updated
- https://www.jessesquires.com/blog/archive/2014/
- https://www.jessesquires.com/blog/archive/2015/
- https://www.jessesquires.com/blog/archive/2016/
- https://www.jessesquires.com/blog/archive/2017/
- https://www.jessesquires.com/blog/archive/2018/
- https://www.jessesquires.com/blog/archive/2019/
- https://www.jessesquires.com/blog/archive/2020/
- https://www.jessesquires.com/blog/archive/2021/
- https://www.jessesquires.com/blog/archive/2022/
- https://www.jessesquires.com/blog/archive/2023/
- https://www.jessesquires.com/blog/archive/2024/
- https://www.jessesquires.com/blog/archive/2025/