Point-Free is a video series exploring advanced topics in the Swift programming language, hosted by industry experts, Brandon and Stephen.
We finish a sneak peek of our upcoming Structured Queries library by showing how queries built with the library can be reused and composed together, and how we can replace all of the raw queries in our application with simpler, safer query builders.
Last week we released SharingGRDB, an alternative to SwiftData powered by SQLite, but there are a few improvements we could make. Let’s take a look at some problems with the current tools before giving a sneak peek at the solution: a powerful new query building library that leverages many advanced Swift features that we will soon build from scratch.
We celebrate 7 years with a live stream! We discuss some recent updates around our popular Sharing library; open source SharingGRDB live, which is a new lightweight alternative to SwiftData that is powered by Sharing and GRDB; and we give a sneak peek of an upcoming series and library.
How does our SQL-based solution for persistence compare with modern SwiftData? We put things to the test by rebuilding our complex @FetchAll
query using @Model
and the @Query
macro!
We begin building the “reminders” part of Apple’s Reminders app, including listing, creating, updating, and deleting them. We will also add persistent filters and sorts, per list, all powered by a complex, dynamic query.
We flesh out the reminders lists feature using advanced queries that aggregate reminders counts and bundle results up into a custom type via the @Selection
macro. And we show how “drafts”—a unique feature of StructuredQueries—allow us to create and update values using the same view, all without sacrificing the preciseness of our domain model.
We dissect some of the most important and interesting topics in Swift programming frequently, and deliver them straight to your inbox.
We cover both abstract ideas and practical concepts you can start using in your code base immediately.
Download a fully-functioning Swift playground from the episode so you can experiment with the concepts discussed.
We transcribe each video by hand so you can search and reference easily. Click on a timestamp to jump directly to that point in the video.
SwiftUI may be all the rage these days, but that doesn’t mean you won’t occassionally need to dip your toes into the UIKit waters. Whether it be to access some functionality not yet available in SwiftUI, or for performance reasons (UICollectionView
😍), you will eventually find yourself subclassing UIViewController
, and then the question becomes: what is the most modern way to do this?
SwiftUI is Apple’s declarative successor to UIKit and AppKit, and provides a wonderful set of tools for building applications quickly and effectively. It also provides a wonderful opportunity to explore problems around architecture and composition.
Swift 5.9 brings a powerful new feature to the language: macros. They allow you to implement new functionality into the language as if it was built directly in the language itself. However, they can be tricky to get right, and as such one needs to write an extensive test suite to make sure you have covered all of the subtle and nuanced edge cases that are possible.
If you have ever created a binding using the get:set:
initializer, you may want to reconsider. Doing so can hurt SwiftUI’s ability to animate your view. Luckily there is a better way. You can leverage @dynamicMemberLookup
and subscripts to derive new bindings in a way that allows SwiftUI to propertly track where the binding came from.
SwiftData is not capable of sorting by boolean properties in models. And if you try to trick SwiftData to allow it, you will encounter runtime crashes.
You may have heard that “mocks are bad” and that they cause you to test the mock rather than your application’s actual feature. That doesn’t have to be the case. It is totally fine to mock a dependency to a system that you do not control, such as the file system. You do not need to test that saving and loading with that dependency works, but you should test how your application behaves when it tries to load or save data. For example, if loading data throws an error, do you show an alert to the user?
Through videos you constantly introduce ideas and patterns only to later reformulate them into more general ideas. This is awesome and helped me understand a lot of programming concepts. Well done!
We have this thing called WWTV at #PlanGrid where we mostly just listen to @mbrandonw and @stephencelis talk about functions.
Watching the key path @pointfreeco episodes, and I am like 🤯🤯🤯. Super cool
After diving into @pointfreeco series reading Real World Haskell doesn’t seem all that intimidating after all. Major takeaway: the lesser is word “monad” is mentioned the better 😅
Honestly, I'm an Android developer, I write applications in Kotlin. My colleague iOS developer told me about your course. And I liked it so I decided to buy a subscription.
So many concepts presented at #WWDC19 reminded me of @pointfreeco video series. 👏👏 So happy I watched it before coming to San Jose.
Just finished the mini-series on enum properties by @pointfreeco! They pointed out what’s missing from enums in Swift and used SwiftSyntax to generate code to add the missing parts. Thanks for your work @stephencelis and @mbrandonw! #pointfree
I bought the annual subscription and after I watched all videos and played with the sample code and libraries I can say it was the best money I spent in the last 12 months.
Thanks @mbrandonw @stephencelis for the very pedagogical series with @pointfreeco Excited and looking forward to learn from the series
Our free plan includes 1 subscriber-only episode of your choice, access to 71 free episodes with transcripts and code samples, and weekly updates from our newsletter.