RSS.Social

try Code

follow: @[email protected]

Posts

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