try Code
Unxippity - fast Xcode unxipping, is open source
Marin's Side Projects 2023
Easy app walkthroughs with MarkWalkthrough
Injecting code in result builders
DocC: Project documentation structure
Automate debugging SwiftUI and UIKit with dataFude
dataFude for Simulator launches today! 🚀
Automation tooling using MarkCodable for reports
Custom SwiftUI view modifier for paid app features
dataFude for Simulator - public beta on TestFlight now!
My favorite 12 side projects in 2022
Introducing: Got Jobs?
Introducing MarkCodable
Introducing timeui
Optimization in Swift, part 4
Optimization in Swift, part 3
Optimization in Swift, part 2
Optimization in Swift, part 1
TaskGroup as a workflow design tool
The issue with task groups or how I discovered a solved problem
Swift Light IDE update, Jan 31st
Yielding accessors in Swift
Swift Async Sequence extensions (part 2)
Swift Async Sequence extensions (part 1)
Extending Xcode with power-ups
Announcing: “Modern Concurrency in Swift”
Actors, the cooperative pool and concurrency
Performance: Actor vs queue vs lock
The difference between Thread.sleep() and Task.sleep()
Bridge from Combine to AsyncSequence - the code (p. 2)
Bridge from Combine to AsyncSequence - the plan (p. 1)
Swift Actors: A practical example, part 2
Swift Actors: A practical example, part 1
Using self, weak, and unowned in Combine
Owning AnyCancellable with Cancellor
5 Stranger Things you can do with Timelane at NSSpain
How to create a custom instrument on top of Timelane!
Timelane - the first two weeks!
Announcing: Timelane
Property Wrappers with Combine
subscribe(on:) vs receive(on:)
Binding a list with multiple sections and different cells
Binding a simple list to a UITableView
An assert operator: assertMaxSubscriptions()
Debug logging with CombinePrintout
Building a custom `sample` operator
Simple custom Combine operators