Pretty Printing: Annotations
We add the ability to pass annotations, like syntax highlighting information, through the pretty printer.
Episode 396 · Mar 08
From time to time, we explore experimental ideas. Some of these might turn out to be really useful, while others might stay in the realm of interesting exercises that teach us to better understand Swift.
40 Episodes · 15h47min
We add the ability to pass annotations, like syntax highlighting information, through the pretty printer.
Episode 396 · Mar 08
We continue to work on our pretty printers to indent a Swift parameter list in various ways.
Episode 395 · Mar 01
We add a choice operator to our pretty printing library to generate the best output for a given column width.
Episode 394 · Feb 23
We begin implementing a pretty printing library based on an old Haskell paper.
Episode 393 · Feb 16
We show some more use cases for structural programming, like generating random values.
Episode 384 · Dec 08 2023
We adapt our existing macros to support the new separation between types and values.
Episode 383 · Dec 01 2023
We restructure our library to separate the structure of types from their values.
Episode 382 · Nov 24 2023
We add support for enums to our structural programming library.
Episode 381 · Nov 17 2023
We use our structural programming library to generate SwiftUI forms for arbitrary structs.
Episode 380 · Nov 10 2023
We use Swift macros to generate the structural representation of structs.
Episode 379 · Nov 03 2023
We introduce a concept called structural programming and take the first steps toward an implementation.
Episode 378 · Oct 27 2023
In the last episode of this series, we implement the writing of trees and commits.
Episode 361 · Jun 30 2023
After having parsed blobs, trees, and commits, we now implement writing data, starting with blobs.
Episode 360 · Jun 23 2023
We parse Git commits, including the commit message and multiline metadata.
Episode 359 · Jun 16 2023
We add parsing of trees to our Swift Git implementation.
Episode 358 · Jun 02 2023
We implement Git's data structure in Swift, starting with blobs.
Episode 357 · May 26 2023
We conform our CRDT sequence to multiple collection protocols and use it for syncing a simple to-do app.
Episode 301 · Apr 22 2022
We add the ability to delete elements from our CRDT sequence and test the behavior for correctness.
Episode 300 · Apr 15 2022
We change the backing storage of our CRDT sequence from a tree to an array for efficiency.
Episode 299 · Apr 08 2022
We implement and test the merge algorithm for our tree-backed sequence data type.
Episode 298 · Apr 01 2022
We start building a replicated sequence data type, modeling the sequence as a tree.
Episode 297 · Mar 25 2022
After adding more testing to our CRDTs, we integrate them into a small app.
Episode 296 · Mar 18 2022
We implement our second CRDT, a grow-only counter type, and test its behavior.
Episode 295 · Mar 11 2022
We begin to investigate Conflict-Free Replicated Data Types as a way to sync data across devices.
Episode 294 · Mar 04 2022
We implement a property wrapper to access values from our environment.
Episode 277 · Oct 22 2021
We add support for loops to our rule builder, and we implement a basic template infrastructure.
Episode 276 · Oct 15 2021
We implement a result builder that enables us to compose rules similar to SwiftUI views.
Episode 275 · Oct 08 2021
We mimic SwiftUI's environment design to pass values down the site rule hierarchy.
Episode 274 · Oct 01 2021
We show how we replaced our outdated Ruby website with a SwiftUI-inspired static site generator.
Episode 273 · Sep 24 2021
We switch to a bottom-up approach to render trees in a compact but symmetric fashion.
Episode 224 · Oct 09 2020
We experiment with different tree-drawing algorithms to produce readable and compact binary trees.
Episode 223 · Oct 02 2020
We combine the logic for parsing 64-byte chunks from the last episode to process entire files.
Episode 172 · Oct 04 2019
We experiment with porting the low-level approach of a super-fast JSON parsing library to Swift.
Episode 171 · Sep 27 2019
In our 100th episode we take questions from our viewers!
Episode 100 · May 12 2018
We continue to expand our experimental view binding mechanism to implement dark mode in our app.
Episode 74 · Nov 03 2017
We experiment with reactive view bindings that don't rely on runtime programming.
Episode 73 · Oct 27 2017
We build a reactive array type on top of the reactive list from episode #67 and implement a filter method.
Episode 69 · Sep 29 2017
We build a reactive linked list on top of reactive programming primitives. We implement a reduce method on this type, which does the minimum amount of work when the underlying data changes.
Episode 67 · Sep 15 2017
We refine the observation capabilities of our new data type.
Episode 63 · Aug 18 2017
We recap the tradeoffs between classes and structs and start implementation of our new type, leveraging Swift 4's keypaths.
Episode 61 · Aug 04 2017