Point-Free is a video series exploring advanced topics in the Swift programming language, hosted by industry experts, Brandon and Stephen.
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.
We close out our tour of the Sharing library by showing how easy it is to test code that uses the @Shared
property wrapper without worrying about values bleeding between tests and the simulator. And we’ll take the “in-memory” shared key for a spin by building one final feature.
@Shared
is far more than a glorified version of @AppStorage
: it can be customized with additional persistence strategies, including the file storage strategy that comes with the library, which persists far more complex data than user defaults. We will create a complex, new feature that is powered by the file system.
We show how the @Shared
property wrapper, unlike @AppStorage
, can be used anywhere, not just SwiftUI views. And we show how @Shared
has some extra bells and whistles that make it easier to write maintainable Xcode previews and avoid potential bugs around “string-ly” typed keys and default values.
We close out our tour of the Sharing library by showing how easy it is to test code that uses the @Shared
property wrapper without worrying about values bleeding between tests and the simulator. And we’ll take the “in-memory” shared key for a spin by building one final feature.
@Shared
is far more than a glorified version of @AppStorage
: it can be customized with additional persistence strategies, including the file storage strategy that comes with the library, which persists far more complex data than user defaults. We will create a complex, new feature that is powered by the file system.
We show how the @Shared
property wrapper, unlike @AppStorage
, can be used anywhere, not just SwiftUI views. And we show how @Shared
has some extra bells and whistles that make it easier to write maintainable Xcode previews and avoid potential bugs around “string-ly” typed keys and default values.
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.
The Swift language has grown over the years and become more and more powerful. It now boosts a comprehensive static type system (generics, existentials…), a suite of concurrency tools (actors, dynamic isolation…), and most recently even ownership capabilities (consuming, borrowing, non-copyable types…). In “Back to basics” we will focus on just one part of the language in order to uncover the deep theory behind that feature as well as provide concrete advice for writing real-world code.
Architecture is a tough problem and there’s no shortage of articles, videos and open source projects attempting to solve the problem once and for all. In this collection we systematically develop an architecture from first principles, with an eye on building something that is composable, modular, testable, and more.
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.
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?
There is a common pattern in the SwiftUI community of defining a logicless, inert view that just holds onto plain data. This makes it easy to preview how the UI looks, but because it does not exercise any of the behavior of the view it is merely a mirage. Learn why you might not want to adopt these “inert” views in your codebase.
I really love the dynamics of @pointfreeco. The dance of “this is super nice because…” “yes, BUT….”. they clearly show what’s good, what’s not so good and keep continuously improving.
Every episode has been amazing on Pointfree, yet somehow, you've managed to make these Parser combinator episodes even better!!! ⭐️⭐️⭐️⭐️⭐️
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.
So many concepts presented at #WWDC19 reminded me of @pointfreeco video series. 👏👏 So happy I watched it before coming to San Jose.
My new favourite morning routine is feeding 👶🏻 while watching @pointfreeco
Their content pushes the boundary of my knowledge, and it's fun to watch!
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 😅
We have this thing called WWTV at #PlanGrid where we mostly just listen to @mbrandonw and @stephencelis talk about functions.
Just became a subscriber! I'm binge watching episodes now! Great content! I'm learning so much from you guys. The repo for the site is the best go-to reference for a well done project and swift-web is something I am definitely going to use in my projects. Thanks for everything!
Our free plan includes 1 subscriber-only episode of your choice, access to 68 free episodes with transcripts and code samples, and weekly updates from our newsletter.