Point-Free Videos artwork

Point-Free Videos

232 episodes - English - Latest episode: 18 days 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

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: 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: 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: 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...

Invertible Parsing: The Point

April 04, 2022 05:00 - 32 minutes - 45.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 conclude our series on invertible parsing by converting a more complex parser into a parser-printer, and even enhance its format. This will push us to think through a couple more fun parser-printer problems.

Invertible Parsing: Bizarro Printing

March 28, 2022 05:00 - 47 minutes - 139 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've had to really stretch our brains to consider what it means to reverse the effects of parsing, but let's looks at some parsers that take it to the next level. They will force us to reconsider a fundamental part of printing, and will make our printers even more powerful.

Invertible Parsing: Map

March 21, 2022 05:00 - 56 minutes - 17 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. --- Our parser-printer library is looking incredible, but there's a glaring problem that we have no yet addressed. We haven't been able to make one of our favorite operations, `map`, printer-friendly. The types simply do not line up. This week we will finally address this shortcoming.

Invertible Parsing: Generalization

March 14, 2022 05:00 - 35 minutes - 17 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. --- Our parser-printer library is looking pretty impressive, but there are a couple problems we need to address. We have made some simplifying assumptions that have greatly reduced the generality our library aspires to have. We will address them by abstracting what it means for an input to be parseable _a...

Invertible Parsing: The Solution, Part 2

March 07, 2022 06:00 - 40 minutes - 8.07 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 chip away at more and more parser printer conformances, some of which will truly stretch our brains, but we will finally turn our complex user CSV parser into a printer!

Invertible Parsing: The Solution, Part 1

February 28, 2022 06:00 - 38 minutes - 14.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. --- Now that we've framed the problem of printing, let's begin to tackle it. We will introduce a `Printer` protocol by "reverse-engineering" the `Parser` protocol, and we will conform more and more parsers to the printer protocol.

Invertible Parsing: The Problem

February 21, 2022 06:00 - 30 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. --- We've spent many episodes discussing parsing, which turns nebulous blobs of data into well-structured data, but sometimes we need the "inverse" process to turn well-structured data back into nebulous data. This is called "printing" and can be useful for serialization, URL routing and more. This week w...

Parser Errors: Context and Ergonomics

February 07, 2022 06:00 - 43 minutes - 10 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 make errors a pleasure to encounter! We will make them easy to read, add more context to make them easy to debug, and even see how error messages can influence existing APIs.

Parser Errors: from Nil to Throws

January 31, 2022 06:00 - 32 minutes - 14.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. --- Let's explore the topic of error handling. We will scrutinize how we model errors in our parsing library and the problems that have come out of it, and we will address these problems by changing the fundamental shape of the parser type.

Parser Builders: The Point

January 24, 2022 06:00 - 43 minutes - 44 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 is the point of parser builders anyway? We will leverage our new builder syntax by rewriting a couple more complex parsers: a marathon parser and a URL router. This will lead us to not only clean up noise and tell a more concise parsing story, but give us a chance to create brand new parsing t...

Parser Builders: The Solution

January 17, 2022 06:00 - 32 minutes - 72.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. --- Let's begin to layer result builder syntax on top of parsing. To get our feet wet, we will build a toy result builder from scratch. Then, we will dive much deeper to apply what we learn to parsers.

Parser Builders: The Problem

January 10, 2022 06:00 - 28 minutes - 44 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 revisit a favorite topic: parsing! After a short recap, we will theorize and motivate the addition of result builder syntax to our parsing library, which will help unlock a new level of ergonomics and API design.

Modularization: Part 2

December 20, 2021 06:00 - 32 minutes - 77.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 finish modularizing our application by extracting its deep linking logic across feature modules. We will then show the full power of modularization by building a "preview" application that can accomplish much more than an Xcode preview can.

🆓 Modularization: Part 1

December 13, 2021 06:00 - 43 minutes - 592 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've talked about modularity a lot in the past, but we've never devoted full episodes to show how we approach the subject. We will define and explore various kinds of modularity, and we’ll show how to modularize a complex application from scratch using modern build ...

UIKit Navigation: Part 2

December 06, 2021 06:00 - 49 minutes - 18.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 finish porting our SwiftUI application to UIKit by introducing a collection view. Along the way we will demonstrate how deep-linking works exactly as it did in SwiftUI, and we show the power of state driven navigation by seamlessly switching between the two view paradigms.

UIKit Navigation: Part 1

November 29, 2021 06:00 - 45 minutes - 60 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. --- What does all the work we've done with navigation in SwiftUI have to say about UIKit? Turns out a lot! Without making a single change to the view models we can rewrite the entire view layer in UIKit, and the application will work exactly as it did before, deep-linking and all!