objc.io
banner
objc.io
objc.io
@objc.io
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...
January 9, 2026 at 5:07 PM
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...
December 19, 2025 at 9:07 PM
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...
December 12, 2025 at 5:18 PM
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...
December 5, 2025 at 5:17 PM
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...
November 28, 2025 at 3:35 PM
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...
November 21, 2025 at 5:14 PM
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...
November 14, 2025 at 5:00 PM
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...
November 7, 2025 at 4:46 PM
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...
October 31, 2025 at 6:10 PM
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...
October 24, 2025 at 4:14 PM
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...
October 17, 2025 at 6:30 PM
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...
October 3, 2025 at 3:28 PM
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...
September 26, 2025 at 3:04 PM
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...
September 19, 2025 at 2:36 PM
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...
July 25, 2025 at 3:08 PM
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...
July 18, 2025 at 5:23 PM
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...
July 11, 2025 at 2:30 PM
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...
July 4, 2025 at 3:00 PM
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...
June 27, 2025 at 7:35 PM
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...
June 20, 2025 at 3:23 PM
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...
June 13, 2025 at 6:24 PM
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...
June 6, 2025 at 3:07 PM
Swift Talk 452
Building a Token Field (Part 5)

We finish our drag-and-drop implementation, displaying an insertion point for dragging and using Transferable for the drop.

talk.objc.io/episodes/S01...
May 9, 2025 at 5:34 PM
Swift Talk 451
Building a Token Field (Part 4)

We use SwiftUI's drag-and-drop APIs to support token reordering. While dragging is almost free, we need a delegate to track the dropping position.

talk.objc.io/episodes/S01...
May 9, 2025 at 5:31 PM
Swift Talk 450
Building a Token Field (Part 3)

We add more selection and backspace behaviors. Token fields on macOS feel natural, but they're actually quite complicated!

talk.objc.io/episodes/S01...
April 25, 2025 at 4:40 PM