Swift over Coffee is a podcast that helps you keep your Swift skills up to date the easy way, hosted by Paul Hudson and Sean Allen. Each episode has news, our picks of the week, plus an open ballot where you can share your views on important topics.
Follow us on Twitter at @swiftovercoffee.
Note: all the discussion from Sean and Paul is licensed under CC BY-SA 3.0. Our regular intro/outro music is also licensed under CC BY-SA 3.0, and is called "Dropping out of School" by Brad Sucks.
In this episode: lots of new Swift Evolution proposals are in review, we discuss *that* TechCrunch article, dive into server-side Swift, and try to figure out how to pronounce “Herbert”.
- Swift 5 Officially Released: https://swift.org/blog/swift-5-released/
- SE-0246 Generic Math Functions: https://github.com/apple/swift-evolution/blob/master/proposals/0246-mathable.md
- SE-0249 KeyPath Expressions as Functions: https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md
- SE-0252 Key Path Member Lookup: https://github.com/apple/swift-evolution/blob/master/proposals/0252-keypath-dynamic-member-lookup.md
- SE-0248 String Gaps and Missing APIs: https://github.com/apple/swift-evolution/blob/master/proposals/0248-string-gaps-missing-apis.md
- SE-0257 Eliding commas from multiline expression lists: https://github.com/apple/swift-evolution/blob/master/proposals/0257-elide-comma.md
- SE-0255 Implicit returns from single-expression functions: https://github.com/apple/swift-evolution/blob/master/proposals/0255-omit-return.md
- Paul’s pick: Whither app developers? – https://techcrunch.com/2019/04/14/whither-native-app-developers/
- Sean’s pick: Pacing Ourselves in the Marzipan Marathon – https://blog.curtisherbert.com/pacing-ourselves-in-the-marzipan-marathon/
- Open Ballot: Have you experimented with server-side Swift? If so, what are your thoughts, and if not what's holding you back?
In this episode: the Swift style guide marches on to formal review, we pick out our favorite events at iOSCon, and discuss whether it's important for iOS developers to be skilled in more than one platform.
- WWDC ticket winners – who got lucky? (Spoiler: it was Paul.) (And not Sean.)
- SE-0250: Swift Code Style Guidelines and Formatter – https://github.com/apple/swift-evolution/blob/master/proposals/0250-swift-style-guide-and-formatter.md
- SE-0249: Key Path Expressions as Functions – https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md
- Paul’s first pick: Gwendolyn Weston's talk "The Business Case For Your Code" – https://skillsmatter.com/skillscasts/11749-keynote-the-business-case-for-your-code
- Gwen's book, Intentional Friendships: https://gumroad.com/l/friendsyay
- Paul’s second pick: Being able to do some coding with Connie, a young coder, at iOSCon.
- Sean’s first pick: Niamh Power's talk "Better Together" – https://skillsmatter.com/skillscasts/13385-better-together
- Sean's second pick: Getting to attend his first major conference and meeting lots of other Swift developers.
- Open ballot: Should mobile developers be skilled in more than one platform, e.g. Android or React as well as iOS?
Thanks to Skillsmatter in London for hosting our first live podcast episode!
In this episode: WWDC is announced at last, memberwise initializers get better in Swift 5.1, we vent about getting lost in side projects, and discuss Marzipan.
- WWDC dates announced: https://developer.apple.com/wwdc19
- SE-0242: Synthesize default values for the memberwise initializer – https://github.com/apple/swift-evolution/blob/master/proposals/0242-default-values-memberwise.md
- SE-0246: Generic Math Functions – https://github.com/apple/swift-evolution/blob/master/proposals/0246-mathable.md
- Paul’s first pick: providesAppNotificationSettings – https://developer.apple.com/documentation/usernotifications/unnotificationsettings/2990404-providesappnotificationsettings
- Paul’s second pick: count(where:) was removed from Swift 5.0 – https://twitter.com/AirspeedSwift/status/1102654876394246146?s=20
- Sean’s pick: Getting Too Absorbed in Side Projects – https://www.bennettnotes.com/post/getting-too-absorbed-into-your-side-projects/
- Open ballot: Make something for macOS now, wait for Marzipan, or ignore it entirely?
In this episode: the first sighting of Swift 5.1, a Swift style guide is on the cards, we talk about toast (the user interface kind!), and look for where there’s still money to be made on the App Store.
- Swift 5.1 Release Process: https://swift.org/blog/5-1-release-process/
- Pitch for Official Swift Style Guide: https://forums.swift.org/t/pitch-an-official-style-guide-and-formatter-for-swift/21025
- Apple allowing developers to offer subscription discounts: https://developer.apple.com/news/?id=02222019a
- Paul’s pick – Loaf: https://github.com/schmidyy/Loaf
- Sean's pick – A Best in Class iOS App by Jordan Morgan: https://www.swiftjectivec.com/a-best-in-class-app/
- Open Ballot: Is there still money to be made on the App Store? If so, how?
In this episode: Swift 5 nears ABI stability, Swift adoption in apps is skyrocketing, we make all our unit tests pass, and discuss how we'd change Swift.
- Swift 5 ABI Stability and Evolving Swift on Apple Platforms:
- How many apps use Swift in 2019?
- Esoteric Swift repo by Jesse Squires: https://github.com/jessesquires/esoteric-swift
- Apple to require two-factor authentication for developer accounts:
- Paul’s pick - LOLzwagon: https://github.com/DerekSelander/LOLzwagon
- Sean's pick - Speeding up development: a collection of tips – https://www.avanderlee.com/optimization/speeding-up-development-a-collection-of-tips/
- Open Ballot: If you could change one thing about Swift, what would it be?
In this episode: Xcode ships with a Swift 5 beta, Apple smacks down Facebook and Google, we discuss the value of design, and talk about important knowledge for iOS developers.
- Xcode 10.2 includes an early Swift 5 version: https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_beta_release_notes
- Apple revokes certificates from Google and Facebook: https://www.theverge.com/2019/1/31/18205795/apple-google-blocked-internal-ios-apps-developer-certificate
- UIKonf's all-female speaker line up: http://www.uikonf.com/blog/
- Paul’s pick - KeyValuePairs: https://www.hackingwithswift.com/example-code/language/what-are-keyvaluepairs
- Sean's pick - Designing for iOS Success by Jakub Turek: https://blog.elpassion.com/designing-for-ios-success-e897062f3ebc
- Open Ballot: Apart from Swift and framework knowledge, what are key skills for iOS developers?
In this episode: we examine the need for manager objects, look at Swift Package Manager’s rise in popularity, discuss the usefulness of ARKit, and - brace yourself - talk extensively about strings.
- The trouble with manager objects: https://sandofsky.com/blog/manager-classes.html
- It’s time to use Swift Package Manager: http://artsy.github.io/blog/2019/01/05/its-time-to-use-spm
- Advent of Code in Swift: https://medium.com/@ianpartridge/advent-of-code-in-swift-8f631eea63ec
- Paul’s pick - Replace Booleans with
Two-cased Enumerations: http://narf.pl/posts/2cased
- Sean's pick - Dive deep into Swift String: https://flawlessapp.io/blog/dive-deep-into-swift-string
- Open Ballot: ARKit - what is it really good for? (Making Sean sing, apparently.)
In this episode: Swift 5 string interpolation gets its first real project, iOS 12 adoption flies ahead, we delve into the (apparently) ancient history of iOS development, and talk about Christmas. Er, WWDC.
- Menu bars on iOS: https://codea.io/blog/the-ios-menu/
- Templates using string interpolation: https://github.com/ilyapuchka/Interplate
- iOS 12 adoption now at 75%: https://9to5mac.com/2019/01/02/ios-12-adoption/
- Paul's pick: Storyboards vs programmatic UI – https://twitter.com/twostraws/status/1081181216970366977?s=20
- Sean's pick: How iOS Development Has Evolved - http://www.thomashanning.com/how-ios-development-has-evolved-over-the-past-8-years/
- Open Ballot: Are you tired of Apple's simultaneous annual releases of all their operating systems, or do you like getting everything bumped all at once?
In this episode: Codable conformance for Range types, string interpolation in Swift 5.0, Paul and Sean discuss their work over 2018 and plans for 2019, and we ask: what would you change about Xcode?
- SE-0235: Add Result to the Standard Library – https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md - SE-0239: Add Codable conformance to Range types
- Is gifting in-app purchases coming soon? https://www.macrumors.com/2018/12/19/app-store-in-app-purchase-gifting/
- String interpolation changes in Swift 5.0: https://ericasadun.com/2018/12/16/swift-5-interpolation-part-3-dates-and-number-formatters/ and http://alisoftware.github.io/swift/2018/12/15/swift5-stringinterpolation-part1/
- Because this is the end-of-year episode, our picks this time were replaced with looking back on 2018, and looking forward to 2019.
- Open ballot: What would you change about Xcode?
In this episode: Result comes to the standard library, the App Store is going down for Christmas, Paul replaces Reachability at last, and we discuss how best to contribute to the community.
- Sean's book, It's Only Crazy Until You Do It: https://gumroad.com/l/sean-allen-origin
- SE-0235, Add Result to the Standard Library: https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md
- How to game the App Store: http://davidbarnard.com/post/180568817995/how-to-game-the-app-store
- App Store Connect shutdown schedule: https://developer.apple.com/news/?id=11272018
- Contributing to the Swift Benchmark Suite: https://patrickbalestra.com/blog/2018/11/12/contributing-to-the-swift-benchmark-suite.html
- Pointfree’s new snapshot library: https://github.com/pointfreeco/swift-snapshot-testing
- Paul's pick: NWPathMonitor – https://developer.apple.com/documentation/network/nwpathmonitor
- Sean's pick: Programming Sucks – https://www.stilldrinking.org/programming-sucks
- Open Ballot: what's the best way to contribute to the Swift community?
In this episode: community news galore, more great features from Swift 5.0, coding tips from the 80s, plus our open ballot: what’s your favorite part of writing iOS apps with Swift?
- Swift 5.0 has been branched: https://swift.org/blog/5-0-release-process/
- SE-0231, optional iteration, has been rejected: https://github.com/apple/swift-evolution/blob/master/proposals/0231-optional-iteration.md
- WeTransfer's URLProtocol mock: https://github.com/WeTransfer/Mocker
- Black Friday sales on Swift books: https://www.hackingwithswift.com/articles/133/black-friday-2018-save-money-on-swift-books
- Swift Community Awards 2018: https://www.hackingwithswift.com/awards
- Paul's pick: SE-0216, @dynamicCallable – https://github.com/apple/swift-evolution/blob/master/proposals/0216-dynamic-callable.md
- Sean's pick: Coding, burnout, and mental health – https://medium.com/@PaulDJohnston/coding-burnout-and-mental-health-32715fb5727e
- Coding tips written 30 years ago: https://twitter.com/spine_cone/status/1054210656876953603?s=20
- Lumina: https://github.com/dokun1/Lumina
In this episode: Swift's strings are now stored as UTF-8, Sherlock lets you poke around in iOS layouts, Paul talks about mocking networking more easily, and we talk about whether surprise and delight in user interfaces is important.
- Testing Swift: https://www.hackingwithswift.com/store/testing-swift
- String's ABI and UTF-8: https://forums.swift.org/t/string-s-abi-and-utf-8/17676
- Apple's October event: https://www.apple.com/apple-events/october-2018/
- Sherlock: https://sherlock.inspiredcode.io/
- App Store Connect API: https://developer.apple.com/app-store-connect/api/
- Paul's Pick: the protocolClasses property of URLSessionConfiguration: https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411050-protocolclasses
- Sean's Pick: Embracing the deadline: How engineers benefit from delivery dates: https://www.intercom.com/blog/embracing-the-deadline-how-engineers-benefit-from-delivery-dates/
- Open Ballot: Should UIs surprise and delight users, or is it better to be functional?
- Apple's old Passbook deletion animation: https://www.youtube.com/watch?v=3CgfaxJogEY
In this episode: flattening nested optionals is accepted as optional iteration is being reviewed, Apple works on a project to support the language server protocol, Sean talks about Airbnb's Lottie framework, and we discuss the importance of good testing.
- SE-0230: Flatten nested optionals resulting from 'try?' – https://github.com/apple/swift-evolution/blob/master/proposals/0230-flatten-optional-try.md
- SE-0231: Optional Iteration – https://github.com/apple/swift-evolution/blob/master/proposals/0231-optional-iteration.md
- New LSP language service supporting Swift and C-family languages for any editor and platform – https://forums.swift.org/t/new-lsp-language-service-supporting-swift-and-c-family-languages-for-any-editor-and-platform/17024
- App Bundles Now Support Mac Apps and Free Apps with Subscriptions – https://developer.apple.com/news/?id=10162018
- Paul's Pick: "Boy, Have I Been Misusing SCNetworkReachability" – http://blog.jaredsinclair.com/post/179083065595/til-boy-have-i-been-misusing
- Sean's Pick: Lottie, from Airbnb – https://airbnb.design/lottie/
- Open Ballot: What’s the best way to make sure your code is thoroughly tested?
- The iOS testing pyramid: http://cleanswifter.com/proposed-ios-testing-pyramid/
In this episode: iOS 12.0 is picking up speed while 12.1 is already on the way, we dive into DispatchGroup and font metrics, and talk about the many challenges of learning and implementing the latest Swift features.
- Add your nominations to the Swift Community Awards: https://www.hackingwithswift.com/awards
- iOS 12 adoption is already past 50%: https://www.macrumors.com/2018/10/11/ios-12-installed-on-53-percent-of-devices/
- More than 70 new emoji in iOS 12.1: https://www.apple.com/newsroom/2018/10/apple-brings-more-than-70-new-emoji-to-iphone-with-ios-12-1/
- SE-0230: Flatten nested optionals resulting from 'try?' – https://github.com/apple/swift-evolution/blob/master/proposals/0230-flatten-optional-try.md
- We can now delete old apps from App Store Connect: https://itunespartner.apple.com/en/apps/news/100002355
- Paul's pick of the week: DispatchGroup – https://developer.apple.com/documentation/dispatch/dispatchgroup
- Sean's pick of the week: UIFontMetrics – https://developer.apple.com/documentation/uikit/uifontmetrics
- Open Ballot: How do you keep up with the evolution of Swift?
In this episode: Swift 4.2 lands as Swift 5.0 starts to inch closer, Apple gives TestFlight links to the world, we watch Phil Schiller's infamous Jump video for the hundredth time, and Sean admires the sheer mathematical beauty of Bézier curves.
- Swift 4.2 is out!
- Swift 5.0 release plan: https://swift.org/blog/5-0-release-process/
- Public Test Flight links: https://developer.apple.com/news/?id=09262018a
- NSFW Detector: https://github.com/lovoo/NSFWDetector
- Apple's use of Swift in iOS 12: https://blog.timac.org/2018/0924-state-of-swift-ios12/
- Phil Schiller jumps off a ledge: https://www.youtube.com/watch?v=1MR4R5LdrJw
- An Oral History of Infinite Loop: https://www.wired.com/story/apple-infinite-loop-oral-history
- Sean's animation: https://twitter.com/seanallen_dev/status/1044287956469473280
- Bézier Curves Under the Hood: https://vimeo.com/106757336
- Ben Scheirman's Bézier curves talk: https://www.youtube.com/watch?v=7e13FierAF8
In this episode: it's iOS conference season, new devices from Apple, the first tips for Swift 5, and we look at what makes a great job interview for Swift developers.
- iOSDevUK (https://www.iosdevuk.com), Swift & Fika (http://www.swiftandfika.com), and NSSpain (https://2018.nsspain.com).
- Optional binding for self: https://github.com/apple/swift-evolution/blob/master/proposals/0079-upgrade-self-from-weak-to-strong.md
- Building Apps for iPhone XS: https://developer.apple.com/videos/play/tech-talks/207/
- Paul's Pick: compactMapValues() is coming in Swift 5 – https://github.com/apple/swift-evolution/blob/master/proposals/0218-introduce-compact-map-values.md
- Sean's Pick: Surfacing Shortcuts by Joe Cieplinski – https://joecieplinski.com/blog/2018/09/11/surfacing-shortcuts/
In this episode: raw strings are back in review, Dynamic Type is more popular than you realize, and we look at ways to fix massive view controllers.
- Raw strings: https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md
- xkcd backslashes: https://xkcd.com/1638
- 40% of users use Dynamic Type: https://twitter.com/browgrammer/status/1031630345551065089
- The Swift team are working on Docker support: https://forums.swift.org/t/kickstarting-new-official-docker-support-for-swift/15487
- Paul's pick: SE-0225 shows that Swift Evolution is working well.
- Sean's pick: SpriteKit is awesome!
- Dave DeLong's talk at App Builders: https://youtu.be/YWVzCd5FYbs
- Soroush Khanlou, The Coordinator: http://khanlou.com/2015/01/the-coordinator
- How to use the coordinator pattern in iOS apps: https://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps