Blog

Sparkle Auto-Updates and the Art of Shipping

There is a particular kind of satisfaction in running fastlane

From Swift to the Browser: Building a Web Client for a Native Streaming Server

ShowShark has native clients for iOS, tvOS, macOS, and visionOS.

Client-Side Tailscale: SOCKS5 Proxy Routing and Platform Abstraction - Part 3 of 3

Part 3 of 3: Private Networking for a Personal Media

Server-Side Tailscale: ShowShark Remote and the Tailnet Bridge - Part 2 of 3

Part 2 of 3: Private Networking for a Personal Media

Remote Access Without a VPN: Tailscale, Headscale, and the Cloudflare Problem - Part 1 of 3

Part 1 of 3: Private Networking for a Personal Media

The Full Teardown Pattern: Simplifying Pause, Seek, Resume, and End-of-Stream - Part 6 of 6

Part 6 of 6: Audio/Video Streaming with Swift and

Adaptive Bitrate in a 1x-Paced System - Part 5 of 6

Part 5 of 6: Audio/Video Streaming with Swift and

Synchronizing Audio and Video Across PTS Domains - Part 4 of 6

Part 4 of 6: Audio/Video Streaming with Swift and

Audio in Streaming: Downmixing, DC Offset, Gain Compensation, and Codec Pitfalls - Part 3 of 6

Part 3 of 6: Audio/Video Streaming with Swift and

Pull-Based Streaming: Software Pacing, Startup Buffering, and the State-Struct Pattern - Part 2 of 6

Part 2 of 6: Audio/Video Streaming with Swift and

Building a Real-Time Transcoding Pipeline with GStreamer and Swift - Part 1 of 6

Part 1 of 6: Audio/Video Streaming with Swift and

Working Around Apple's Device Name Entitlement with mDNS

Learn more about ShowShark here. Starting in iOS 16, Apple