Swift Talk 482
Interpolating Matched Geometry Effect
We build a custom matched geometry effect, control its interpolation with a progress value, and drive it with keyframes.
talk.objc.io/episodes/S01...
Swift Talk 482
Interpolating Matched Geometry Effect
We build a custom matched geometry effect, control its interpolation with a progress value, and drive it with keyframes.
talk.objc.io/episodes/S01...
Swift Talk 481
Matched Geometry Effect for Positioning Badges
We try a new technique for badge positioning, first building it by hand, then seeing if a LLM can come up with the same solution.
This episode is public, enjoy! ๐
talk.objc.io/episodes/S01...
Swift Talk 480
Building a Coding Agent (Part 2)
We give our little agent read, write and bash tools. Now it can write a simple Swift program, and execute it.
talk.objc.io/episodes/S01...
Swift Talk 479
Building a Coding Agent (Part 1)
We learn how agents are implemented by building one, with an outer loop for user input, and an inner loop for tool use.
This episode is public, enjoy! ๐
talk.objc.io/episodes/S01...
Swift Talk 478
Solving the View Model Problem (Part 3)
We clean up our property wrapper, and create a macro to save us from some boilerplate code.
talk.objc.io/episodes/S01...
Swift Talk 477
Solving the View Model Problem (Part 2)
We create a view model protocol and property wrapper that regenerates view models when new values are passed to a viewโs initializer.
talk.objc.io/episodes/S01...
Swift Talk 476
Solving the View Model Problem (Part 1)
We investigate, and outline a potential solution to, creating and updating view models in SwiftUI.
This episode is free to watch, enjoy! ๐
talk.objc.io/episodes/S01...
Swift Talk 475
Settings Form Layout (Part 2)
We use SwiftUIโs Grid as a simpler way of laying out our settings form.
talk.objc.io/episodes/S01...
Swift Talk 474
Settings Form Layout (Part 1)
We build the layout for a typical macOS settings form in SwiftUI, using sections for structure and a custom form style to lay out the elements correctly.
This episode is free to watch, enjoy! ๐
talk.objc.io/episodes/S01...
Swift Talk 473
ThumbHash (Part 6)
We transform the RGB image into LPQ color space, and compress chroma more than luminance to produce a good-looking thumbnail using less data.
talk.objc.io/episodes/S01...
Swift Talk 472
ThumbHash (Part 5)
We apply our transforms to an RGB image, separating the data into three channels before transforming each individually.
talk.objc.io/episodes/S01...
Swift Talk 471
ThumbHash (Part 4)
We apply our discrete cosine transform to an image, using Core Graphics to process the data, and see it working for the first time.
talk.objc.io/episodes/S01...
Swift Talk 470
ThumbHash (Part 3)
We extend our discrete cosine transform to work in two dimensions, so we can apply it to image data. Sorry about the audio this week! ๐ฌ
talk.objc.io/episodes/S01...
Swift Talk 469
ThumbHash (Part 2)
We finish our basic version of a discrete cosine transform, and use it for some compression experiments.
talk.objc.io/episodes/S01...
Swift Talk 468
ThumbHash (Part 1)
In a new series, we reimplement the ThumbHash algorithm, starting with a simple discrete cosine transform.
This episode is free to watch, enjoy! ๐
talk.objc.io/episodes/S01...
Swift Talk 467
Visual Node Editor (Part 9)
We add share support, which exports diagrams as different content types, including text, JSON, image, and PDF.
talk.objc.io/episodes/S01...
Swift Talk 466
Visual Node Editor (Part 8)
We clean up the code and transform the project to a document-based app.
talk.objc.io/episodes/S01...
Swift Talk 465
Visual Node Editor (Part 7)
We add snapping to node resizing, with shared state managed in the model rather than in preferences or the environment.
talk.objc.io/episodes/S01...
Swift Talk 464
Visual Node Editor (Part 6)
We refactor our view state, moving properties and logic into a compound struct. This makes gestures more testable.
talk.objc.io/episodes/S01...
Swift Talk 463
Visual Node Editor (Part 5)
We address some issues with multi-selection, moving node state to the graph view, which we plan to simplify later.
talk.objc.io/episodes/S01...
Swift Talk 462
Visual Node Editor (Part 4)
We add multi-select for nodes, but that means rethinking our focus architecture.
talk.objc.io/episodes/S01...
Swift Talk 461
Visual Node Editor (Part 3)
We wire-up the draggable resize handles, and deal with some tricky edge case logic.
talk.objc.io/episodes/S01...
Swift Talk 460
Visual Node Editor (Part 2)
We add focus behavior to the nodes and edges, with custom drawing and resize handles.
talk.objc.io/episodes/S01...
Swift Talk 459
Visual Node Editor (Part 1)
In a new series, we build a node editor to explore focus, selection, gestures, and accessibility.
This episode is free to watch, enjoy! ๐โจ
talk.objc.io/episodes/S01...
Swift Talk 458
SwiftUI as Static Site Generator (Part 6)
We finish the series by adding Hummingbird as a web server, using WebSockets to reload live when something changes.
talk.objc.io/episodes/S01...
Swift Talk 457
SwiftUI as Static Site Generator (Part 5)
We generate share images from SwiftUI views, and use hashing to reload them correctly when content changes.
talk.objc.io/episodes/S01...
Swift Talk 456
SwiftUI as Static Site Generator (Part 4)
We add a templating system using the environment, and integrate Swim for HTML generation.
talk.objc.io/episodes/S01...
Swift Talk 455
SwiftUI as Static Site Generator (Part 3)
We add directory observation, which lets us use SwiftUI's preferences to generate the site.
talk.objc.io/episodes/S01...
Swift Talk 454
SwiftUI as Static Site Generator (Part 2)
We add file observation using GCDโs Dispatch Source APIs, which handle both standard write events and atomic delete-plus-write sequences.
talk.objc.io/episodes/S01...
Swift Talk 453
SwiftUI as Static Site Generator (Part 1)
We build a very unconventional static site generator on top of SwiftUI.
This episode is free to watch, enjoy! ๐
talk.objc.io/episodes/S01...