Wednesday Dec 23, 2020
It’s the end of the year again, and we’re feeling nostalgic 😊. We’re really proud of everything we produced for 2020, so join us for a quick review of some of our favorite highlights.
We are also offering 25% off the first year for first-time subscribers. If you’ve been on the fence on whether or not to subscribe, now is the time!
At a high-level, this year we saw:
But these high-level stats don’t scratch the surface of what we covered in 2020:
In May we finally concluded the core series of episodes (17 hours of video!) that introduce a holistic approach to application architecture, known as The Composable Architecture. We highlighted 5 core problems any architecture must solve, and showed how to solve them: state management, composability, modularity, side effects, and testing.
To celebrate the end of the core series of episodes we open sourced a library for making it easy to adopt the ideas of the Composable Architecture in your application. In only 8 months the library has over 2,700 stars, merged more than 200 pull requests, and believe it or not, there’s still more to come in 2021 😀.
We tackled dependencies head on in a 5-part series where we precisely describe what dependencies are and why the make our code complex, and then show what to do about it. We build a moderately complex application from scratch, one that uses API requests, network connectivity APIs, and location manager APIs, and show how to wrangle those dependencies into something simple, flexible, and testable.
If you’ve ever reached for a protocol to control a dependency, then this is the series for you.
We picked up parsing again this year after having first covered it more than a year ago. This time we focused our attention on two main things. First, we generalized the parser library so that it can parse any kind of input into any kind of output. This allows to use the same code to parse many different things, including strings, binary data, URL requests and more. Then we turned our attention to performance. We showed that parser combinators can be extremely performant, nearly as performant as highly-tuned, hand-written, ad-hoc parsers.
And all of this culminated into the release of 0.1.0 of Parsing, a parsing library with a focus on composability, generality and performance.
Apple’s Combine framework is incredibly powerful, and there are lots of great resources out there for learning the core concepts behind the framework. However, a topic that doesn’t get a lot of attention is schedulers. We devoted an entire series of episodes to understanding schedulers in depth, and then open sourced a library for making better use of schedulers in Combine.
Continuing a long tradition of asking “if structs have it, then why don’t enums too?” we explore what it would mean if enums had something like key paths defined for them. We show that such a concept can be naturally defined for enums, but we called them case paths. They turn out to be the perfect tool for transforming the actions of reducers, and even SwiftUI bindings that hold onto enum-based state.
We ended the year by announcing a brand new project: isowords. It’s a game built in Swift (even the backend is Swift!), and it makes use of nearly every concept discussed on Point-Free, such as the Composable Architecture, dependencies, parsers, random number generators, algebraic data types, and more. We will be releasing the game early next year, and we’ll have a lot more to say about how it was built soon (we also have a few beta spots open, contact us if you’re interested!).
We’re thankful to all of our subscribers for supporting us and helping us create this content. To celebrate the end of the year we are also offering 25% off the first year for first-time subscribers. If you’ve been on the fence on whether or not to subscribe, now is the time!
See you in 2021!
👋 Hey there! If you got this far, then you must have enjoyed this post. You may want to also check out Point-Free, a video series on functional programming and Swift.