Swift over Coffee

S1E13: Bizarre but legal

An episode of Swift over Coffee

By Paul Hudson and Sean Allen
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.
More places to listen

More places to listen

S1E22: Why does Sean hate SwiftUI so much?
In this episode: Sean's beard is staying in San Francisco, the NeXT era is ending, we discuss SwiftUI's forms system, and explore the many amazing new features from WWDC19. - The NeXT Era Ends, the Swift Era Begins: https://inessential.com/2019/06/07/the_next_era_ends_the_swift_era_begins - WWDC 2019 Session Notes: https://github.com/Blackjacx/WWDC - WWDC 2019 The Things You May Have Missed: https://patrickbalestra.com/blog/2019/06/07/wwdc-2019-the-things-you-may-have-missed.html - About SwiftUI: https://github.com/Juanpe/About-SwiftUI - Paul's pick: SwiftUI's forms – https://www.hackingwithswift.com/quick-start/swiftui/working-with-forms - Sean's pick: WWDC 2019 (Mind the Enthusiasm Gap) – https://nshipster.com/wwdc-2019/ - Open Ballot: Now that the dust has settled, what was your favorite new feature announced at WWDC19 that *isn't* SwiftUI? - Plus: your chance to win a massive pile of Swift books to enjoy over summer!
29:55
June 25, 2019
S1E21: Live from AltConf 2019
In this special episode we’re joined by our friends Kristina Fox, JP Simard, Gui Rambo, and Kaya Thomas as we discuss everything new from WWDC19. Strap yourselves in – this is a long one! - News: what *isn’t* news this week? We dive into dark mode, Xcode 11, ARKit, RealityKit, Vision OCR, and more. - Focus on Swift 5.1: how opaque return types, function builders, property wrappers, and module stability combine to make SwiftUI possible. - Project Catalyst: now that we can build our iOS apps for macOS, who is going to use it, what advantages and disadvantages does it have, and are we going to see mass adoption? - Open Ballot: What are your early reactions to SwiftUI? Our sponsor for this episode was MacStadium, provider of Apple Mac infrastructure-as-a-service. If you’re building apps for the Apple ecosystem, learn more about MacStadium’s infrastructure at macstadium.com. We’re also grateful to AltConf for letting us use their amazing space, to Breaker for recording and mixing the episode, and our wonderful guest hosts for giving up their time to take part. Thanks, everyone!
50:01
June 10, 2019
S1E20: Transcendental Swift
In this episode: the Apple Developer Academy is open for another year, iOS Dev Jobs launches, we reveal why "Spectre" has British spelling, and ponder what Apple might announce at WWDC19. - Swift over Coffee Live is happening at AltConf 2019! Tickets are free thanks to MacStadium and AltConf, but you need to register for one here: ti.to/altconf/SwiftoverCoffeeLive - Apple Developer Academy registration: https://9to5mac.com/2019/05/16/apple-developer-academy - GitHub sponsors: https://github.com/sponsors - iOS Dev Jobs: https://iosdevjobs.com - Paul's pick: system library targets (SE-0208) – https://github.com/apple/swift-evolution/blob/master/proposals/0208-package-manager-system-library-targets.md - Sean's pick: Spectre retrospective – https://blog.halide.cam/a-spectre-retrospective-part-1-build-a-feature-or-an-app-e9e421015432 - Open ballot: What developer changes would you like to see announced at WWDC?
26:40
May 27, 2019
S1E19: Rotato rotato
In this episode: Swift hits the front-end of the web, Marzipan creeps closer, Paul talks about the importance of data hiding in Swift 5.1, and we discuss what makes for great code review. - Swift over Coffee Live is happening at AltConf 2019! Tickets are free thanks to MacStadium and AltConf, but you need to register for one here: https://ti.to/altconf/SwiftoverCoffeeLive - Unwrap for iOS: https://www.hackingwithswift.com/unwrap - Swift on WebAssembly: https://swiftwasm.org - SE-0259 - Approximate Equality for Floating Point: https://github.com/apple/swift-evolution/blob/master/proposals/0259-approximately-equal.md - SE-0260 Library Evolution for Stable ABIs: https://github.com/apple/swift-evolution/blob/master/proposals/0260-library-evolution.md - What to Expect From Marzipan: https://blog.iconfactory.com/2019/05/what-to-expect-from-marzipan/ - Paul's pick: How to use opaque return types in Swift 5.1 – https://www.hackingwithswift.com/articles/187/how-to-use-opaque-return-types-in-swift-5-1 - Sean's pick: Rotato – https://rotato.xyz - Pull request checklists: https://kristina.io/pull-request-checklists
29:57
May 13, 2019
S1E18: Big boy pants
In this episode: Swift 5.1 gathers strength, Realm gets swallowed up by MongoDB, Sean discovers SwiftLint, and we discuss whether Apple Arcade will be good for the indie game development community. - SE-0255 Implicit returns from single-expression functions: https://github.com/apple/swift-evolution/blob/master/proposals/0255-omit-return.md - SE-0259 Approximate Equality for Floating Point: https://github.com/apple/swift-evolution/blob/master/proposals/0259-approximately-equal.md - Swift 5.1 snapshots available: https://swift.org/download/ - Realm acquired by MongoDB: https://realm.io/blog/mongodb-to-acquire-realm-the-future-is-bright/ - Docker Hub security breach: https://thehackernews.com/2019/04/docker-hub-data-breach.html - Paul's pick: Zephyr – https://github.com/ArtSabintsev/Zephyr - Sean's pick: SwiftLint – https://github.com/realm/SwiftLint - Open ballot: Do you think Apple Arcade will be good for the wider iOS game development community?
29:32
April 29, 2019
S1E17: Now he sounds French
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?
29:50
April 15, 2019
S1E16: Live from iOSCon 2019
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!
25:24
April 1, 2019
S1E15: Shiny new side project
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?
29:25
March 18, 2019
S1E14: Thank you for the paycheck
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?
29:37
March 4, 2019
S1E13: Bizarre but legal
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: https://swift.org/blog/abi-stability-and-apple/ - How many apps use Swift in 2019? https://blog.andrewmadsen.com/post/182862756395/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: https://appleinsider.com/articles/19/02/13/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?
29:12
February 18, 2019
S1E12: Really alarming breakpoints
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?
29:26
February 4, 2019
S1E11: Pandora's rabbit hole
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.)
29:58
January 21, 2019
S1E10: It's such a glorious week
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?
29:58
January 8, 2019
S1E9: Beard of Steel
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 – https://github.com/apple/swift-evolution/blob/master/proposals/0239-codable-range.md - 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?
29:59
December 24, 2018
S1E8: I'd call it Ten Code
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?
25:41
December 10, 2018
S1E7: I was in prison for that time
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
27:32
November 26, 2018
S1E6: What is getting Sherlocked?
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
24:18
November 14, 2018
S1E5: It Worked That One Time
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/
27:50
October 29, 2018
S1E4: Optional optionals
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?
26:06
October 15, 2018
S1E3: Very powerful... and sweet
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
29:58
October 1, 2018
S1E2: Always on brand
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/
29:21
September 17, 2018
S1E1: No magic bullets
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
26:17
September 1, 2018
Make your own podcast for free with Anchor!