Point-Free Videos artwork

Point-Free Videos

248 episodes - English - Latest episode: about 15 hours ago - ★★★★★ - 2 ratings

Point-Free is a video series that explores advanced topics in the Swift programming language. Each episode covers a topic that may seem complex and academic at first, but turns out to be quite simple. At the end of each episode we’ll ask “what’s the point?!”, so that we can bring the concepts back down to earth and show how these ideas can improve the quality of your code today.

Technology Education programming development mobile ios functional swift apple developer software engineering server
Homepage Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed

Episodes

Modern UIKit: Stack Navigation, Part 1

July 15, 2024 00:00 - 28 minutes - 52.8 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We have now implemented tree-based navigation in UIKit, driven by the Observation framework, but there is another form of navigation to think about: stack-based navigation, where you drive your navigation from a flat collection of states rather than a heavily-nested type. Let's leverage Observation to...

Modern UIKit: Tree-based Navigation

July 08, 2024 00:00 - 31 minutes - 21.4 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- While SwiftUI bindings were almost the perfect tool for UIKit navigation, they unfortunately hide some crucial information that we need to build out our tools. But never fear, we can rebuild them from scratch! Let's build `@Binding` and `@Bindable` from scratch to see how they work, and we will use th...

Modern UIKit: Unified Navigation

July 01, 2024 00:00 - 35 minutes - 23.7 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We have built the foundation of powerful new UIKit navigation tools, but they're not quite finished. Let's improve these APIs to handle dismissal by leveraging another SwiftUI tool: bindings. We will see how SwiftUI bindings are (almost) the perfect tool for UIKit navigation, and we will see where the...

Modern UIKit: Basics of Navigation

June 24, 2024 00:00 - 37 minutes - 44.7 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Now that we have a tool that brings the power of the Observation framework to UIKit, let's put it through the paces. We will use it to build state-driven navigation tools that can drive alerts, sheets, popovers, drill-downs, and more, and they will look a lot like SwiftUI's navigation tools.

🆓 Modern UIKit: Sneak Peek, Part 2

June 03, 2024 00:00 - 31 minutes - 504 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- We finish building a modern UIKit application with brand new state-driven tools, including a complex collection view that can navigate to two child features. And we will see that, thanks to our back-port of Swift's observation tools, we will be able to deploy our app...

🆓 Modern UIKit: Sneak Peek, Part 1

May 27, 2024 00:00 - 39 minutes - 504 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- As we approach WWDC24 and 5 years of SwiftUI, let's talk about… UIKit! 😜 We love SwiftUI, but there will still be times you must drop down to UIKit, and so we want to show what modern UIKit development can look like if you put in a little bit of effort to build tools...

🆓 Shared State in Practice: isowords, Part 2

May 20, 2024 00:00 - 33 minutes - 287 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- We conclude the series by stretching our use of the `@Shared` property wrapper in isowords to two more features: saved games and user defaults. In the process we'll eliminate hundreds of lines of boilerplate and some truly gnarly code.

Shared State in Practice: isowords, Part 2

May 20, 2024 00:00 - 33 minutes - 28.6 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We conclude the series by stretching our use of the `@Shared` property wrapper in isowords to two more features: saved games and user defaults. In the process we'll eliminate hundreds of lines of boilerplate and some truly gnarly code.

Shared State in Practice: isowords, Part 1

May 13, 2024 00:00 - 25 minutes - 82.8 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Let's apply the Composable Architecture's new state sharing tools to something even more real world: our open source word game, isowords. It currently models its user settings as a cumbersome dependency that requires a lot of code to keep features in sync when settings change. We should be able to gre...

🆓 Shared State in Practice: isowords, Part 1

May 13, 2024 00:00 - 25 minutes - 539 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- Let's apply the Composable Architecture's new state sharing tools to something even more real world: our open source word game, isowords. It currently models its user settings as a cumbersome dependency that requires a lot of code to keep features in sync when settin...

🆓 Shared State in Practice: SyncUps: Part 2

May 06, 2024 00:00 - 35 minutes - 41.4 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- We finish refactoring the SyncUps application to use the Composable Architecture's all new state sharing tools. We will see that we can delete hundreds of lines of boilerplate of coordination between parent and child features, _and_ we won't have to sacrifice any tes...

Shared State in Practice: SyncUps: Part 2

May 06, 2024 00:00 - 35 minutes - 44.6 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We finish refactoring the SyncUps application to use the Composable Architecture's all new state sharing tools. We will see that we can delete hundreds of lines of boilerplate of coordination between parent and child features, _and_ we won't have to sacrifice any testability, including the _exhaustive...

🆓 Shared State in Practice: SyncUps, Part 1

April 29, 2024 00:00 - 44 minutes - 394 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- In our last series we developed a wonderful way to share state between features in the Composable Architecture, and even persist it, all without sacrificing testability, but we also didn't get to show the (just now released) tools being used in real world application...

Shared State in Practice: SyncUps, Part 1

April 29, 2024 00:00 - 44 minutes - 82.5 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- In our last series we developed a wonderful way to share state between features in the Composable Architecture, and even persist it, all without sacrificing testability, but we also didn't get to show the (just now released) tools being used in real world applications, so let's do just that, starting ...

Shared State: File Storage, Part 2

April 22, 2024 00:00 - 34 minutes - 33.7 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- It's incredible how easy `@Shared` makes it to persist complex data types to the file system, but currently it completely ruins our ability to test features that use it. Let's fix that, and we will also explore what it means to derive a small piece of shared state from a bigger piece of shared state.

Shared State: File Storage, Part 1

April 15, 2024 00:00 - 30 minutes - 58.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- While user defaults is convenient for persisting simple bits of state, more complex data types should be saved to the file system. This can be tricky to get right, and so we take the time to properly handle all of the edge cases.

Shared State: User Defaults, Part 2

April 08, 2024 00:00 - 26 minutes - 29.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We can now persist simple bits of state to user defaults using the `@Shared` property wrapper, but there is more work to be done. We need to observe changes to user defaults in order to play those changes back to `@Shared`, and we need to put in a bit of extra work to make everything testable.

Shared State: User Defaults, Part 1

April 01, 2024 00:00 - 41 minutes - 79.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Let's enhance the `@Shared` property wrapper with the concept of persistence. We will begin with user defaults, which is the simplest form of persistence on Apple's platforms, and that will set the stage for more complex forms of persistence in the future.

Shared State: Ubiquity & Persistence

April 01, 2024 00:00 - 41 minutes - 79.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We have solved a lot of limitations of reference types with the `@Shared` property wrapper, and we could stop here with an incredibly useful tool. But let's take things one step further. Sometimes we want shared state to be local and explicit, but there are other times we want shared state to be ubiqu...

Shared State: Testing, Part 2

March 25, 2024 00:00 - 32 minutes - 27.6 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We will employ `@Shared`'s new testing capabilities in a complex scenario: a sign up flow. We will see how a deeply nested integration of features all sharing the same state can be tested simply, and we will see how we can leverage the same tricks employed by the test store to add debug tools to reduc...

Shared State: Testing, Part 1

March 18, 2024 00:00 - 31 minutes - 41.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- The `@Shared` property wrapper can effortlessly share state among features to build complex flows quickly, but because it is powered by a reference type, it is not compatible with the Composable Architecture's value-oriented testing tools. Let's address these shortcomings and recover all of the librar...

Shared State: The Solution, Part 2

March 11, 2024 00:00 - 41 minutes - 22.6 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We finish building a complex, flow-based case study that leverages the new `@Shared` property wrapper. Along the way we will flex recently added superpowers of the library, and we will experience firsthand how simple this new model of shared state can be.

Shared State: The Solution, Part 1

March 04, 2024 00:00 - 39 minutes - 79.1 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- The various approaches of sharing state in the Composable Architecture are mixed bag of trade offs and problems. Is there a better way? We’ll take a controversial approach: we will introduce a reference type into our state, typically a value type, and see what happens, and take it for a spin in an all...

Shared State: The Problem

February 26, 2024 00:00 - 48 minutes - 99 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We tackle one of the biggest problems when it comes to "single source of truth" applications, and that is: how do you share state? Let's begin by analyzing the problem, and truly understanding what vague mantras like "single source of truth" even mean, and then we will be in a good position to provide...

Point-Free Live: Observation in Practice

February 19, 2024 00:00 - 1 hour - 65.5 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- To celebrate our 6th anniversary we had another livestream! We updated an app from the most recent Composable Architecture tour to the latest observation tools, showed how these tools can improve UIKit-based apps, showed off some recent enhancements to the `@Reducer` macro, gave a sneak peek of a _hig...

Observable Architecture: The Point

January 29, 2024 00:00 - 27 minutes - 37 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- So what's the point of observation in the Composable Architecture? While we have seemingly simplified nearly every inch of the library as it interfaces with SwiftUI, let's zoom out a bit, explore how some integration tests that benchmark certain aspects of the library have changed, and migrate the Tod...

🆓 Testing & Debugging Macros: Part 2

September 25, 2023 00:00 - 43 minutes - 351 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- Let's take our MacroTesting library for a spin with some more advanced macros, including those that Apple has gathered since the feature's introduction, as well as a well-tested library in the community: Ian Keen's MacroKit.

🆓 Testing & Debugging Macros: Part 1

September 18, 2023 00:00 - 46 minutes - 411 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- Macros are here! To celebrate, we are releasing a brand new tool to aid in writing tests for them. First, let's explore testing macros using the tools that Apple provides, evaluate their shortcomings, and see how we can address them.

Tour of the Composable Architecture: Persistence

September 11, 2023 00:00 - 51 minutes - 17.5 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We conclude the series by adding the final bit of functionality to our application: persistence. We'll see how adding a dependency on persistence can wreak havoc on previews and tests, and all the benefits of controlling it.

Tour of the Composable Architecture: Dependencies

September 04, 2023 00:00 - 51 minutes - 51.1 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We introduce a complex dependency to the record meeting screen: speech recognition. We will begin to integrate this dependency into our app's logic, and show how to control it for Xcode previews and tests

Reducer Protocol: Dependencies, Part 1

September 19, 2022 05:00 - 36 minutes - 79.3 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We begin to flesh out a new story for dependencies in the Composable Architecture, taking inspiration from SwiftUI. We will examine SwiftUI's environment and build a faithful reproduction that provides many of the same great benefits.

Reducer Protocol: Composition, Part 2

September 12, 2022 05:00 - 32 minutes - 56.6 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- The new reducer protocol has improved many things, but we’re now in an awkward place when it comes to defining them: some are conformances and some are not. We’ll fix that with inspiration from SwiftUI and the help of a new protocol feature.

Reducer Protocol: Composition, Part 1

September 05, 2022 05:00 - 30 minutes - 29.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We are already seeing huge benefits from the reducer protocol, but one aspect is still not ideal, and that is how we compose reducers. We will look to result builders to solve the problem, and a new feature of them introduced in Swift 5.7.

Reducer Protocol: The Solution

August 29, 2022 05:00 - 52 minutes - 43 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Let's begin to solve a number of the problems with the Composable Architecture by introducing a reducer protocol. We will write some common conformances and operators in the new style, and even refactor a complex demo application.

🆓 Async Composable Architecture in Practice

August 08, 2022 05:00 - 1 hour - 571 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- This week we are releasing the biggest update to the Composable Architecture since its first release over 2 years ago, bringing more of Swift's modern concurrency tools to the library. To celebrate we will demonstrate how these tools can massively simplify a few real...

Async Composable Architecture: Effect Lifetimes

August 01, 2022 05:00 - 38 minutes - 65.3 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We explore ways to tie the lifetime of an effect to the lifetime of a view, making it possible to automatically cancel and tear down work when a view goes away. This unexpectedly helps us write even stronger tests for our features.

Async Composable Architecture: Streams

July 25, 2022 05:00 - 41 minutes - 39.8 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We introduce another helper to the `Effect` type that can use an asynchronous context to send multiple actions back into the system. By leveraging Swift's structured concurrency we can create complex effects in a natural way, all without sacrificing testability.

Async Composable Architecture: Schedulers

July 18, 2022 05:00 - 30 minutes - 74.5 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- We can now run async work directly in a reducer's effects, but time-based asynchrony, like `Task.sleep`, will wreak havoc in our tests. Let's explore the problem in a new feature, and see how to recover the nice syntax of modern timing tools using a protocol from the past: Combine schedulers.

Async Composable Architecture: Tasks

July 11, 2022 05:00 - 52 minutes - 55.7 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- This week we start fixing the problems we outlined last week. We build the tools necessary to start using concurrency tasks directly in reducers, and along the way we open Pandora's box of existential types to solve some mind-bending type issues.

🆓 Async Composable Architecture: The Problem

July 04, 2022 05:00 - 40 minutes - 381 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- The Composable Architecture's fundamental unit of effect is modeled on Combine publishers because it was the simplest and most modern asynchrony tool available at the time. Now Swift has native concurrency tools, and so we want to make use of those tools in the libra...

Concurrency's Future: Structured and Unstructured

June 27, 2022 05:00 - 1 hour - 177 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- There are amazing features of Swift concurrency that don't quite fit into our narrative of examining it through the lens of past concurrency tools. Instead, we'll examine them through the lens of a past programming paradigm, structured programming, and see what is has to say about structured concurrency.

Concurrency's Future: Sendable and Actors

June 20, 2022 05:00 - 48 minutes - 42.9 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- When working with concurrent code, you must contend with data synchronization and data races. While the tools of the past made it difficult to reason about these issues, Swift's new tools make it a breeze, including the `Sendable` protocol, `@Sendable` closures, and actors.

Concurrency's Future: Tasks and Cooperation

June 13, 2022 05:00 - 45 minutes - 56.2 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Let’s look at what the future of concurrency looks like in Swift. A recent release of Swift came with a variety of tools with concurrency. Let's examine its fundamental unit in depth, and explore how they "cooperate" in your applications.

Concurrency's Present: Queues and Combine

May 30, 2022 05:00 - 1 hour - 125 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- Before developing Swift's modern concurrency tools, Apple improved upon threads with several other abstractions, including operation queues, Grand Central Dispatch, and Combine. Let's see what these newer tools brought to the table.

Concurrency's Past: Threads

May 23, 2022 05:00 - 52 minutes - 125 MB Video

Subscriber-Only: Today's episode is available only to subscribers. If you are a Point-Free subscriber you can access your private podcast feed by visiting https://www.pointfree.co/account. --- To better understand Swift's concurrency tools, let's first look to the past, starting with threads. Threads are a tool most developers don't reach for these days, but are important to understand, and the way they solve problems reverberate even in today's tools.

🆓 Tour of Parser-Printers: API Clients for Free

May 09, 2022 05:00 - 33 minutes - 286 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- We conclude our tour of swift-parsing with a look at how URL routers defined as parser-printers can be automatically transformed into fully-fledged API clients, which we will drop into an iOS application and immediately use.

🆓 Tour of Parser-Printers: Vapor Routing

May 02, 2022 05:00 - 37 minutes - 286 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- Now that we're familiar with swift-parsing's URL router, let's take a look at Swift's most popular web framework, Vapor. We will rebuild our site router using Vapor's built-in router, and then we'll use our own companion library to power our Vapor application with a ...

🆓 Tour of Parser-Printers: URL Routing

April 25, 2022 05:00 - 48 minutes - 427 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- URL routing is a large problem that has been solved in various ways over the years...but what does that have to do with swift-parsing!? A lot! swift-parsing comes with a URL routing library built on top of parser-printers, and it solves a lot of problems that still e...

🆓 Tour of Parser-Printers: vs. Swift's Regex DSL

April 18, 2022 05:00 - 36 minutes - 362 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- We continue our tour by comparing swift-parsing to Apple's forthcoming Regex DSL. After taking a look at the proposal, we'll translate an example over to be a parser-printer to compare and contrast each approach.

🆓 Tour of Parser-Printers: Introduction

April 11, 2022 05:00 - 40 minutes - 330 MB Video

Every once in awhile we release a new episode free for all to see, and today is that day! Please enjoy this episode, and if you find this interesting you may want to consider a subscription https://www.pointfree.co/pricing. --- Today we celebrate a huge release of [swift-parsing](https://github.com/pointfreeco/swift-parsing), which includes the ability to build invertible parser-printers with ease. We'll demonstrate by using the library to build three different parser-printers, starting wit...