Paul Samuels
@paulio87.bsky.social
26 followers 150 following 13 posts
Posts Media Videos Starter Packs
paulio87.bsky.social
The only Xcode refactoring tool I actually use? Explaining regex - no sketchy web tools required.

paul-samuels.com/blog/2025/09...
Explaining Regex Locally with Xcode · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
I had a similar issue years ago - if I used AirPods Max when developing the audio bitrate was as if it was a cheap Bluetooth headset for phone calls. Got no help when reached out to Apple (disappointing as it was a brand new M1 and their flagship headphones). Solution was just use phone for music
paulio87.bsky.social
I wrote a post on turning CI logs into actions

The general idea is to wrap your existing build scripts with a tool that can parse the logs for specific JSON payloads and then perform actions like comment on GitHub PRs, ping slack channels etc.

paul-samuels.com/blog/2025/09...

#swift
Turning CI Logs into Actions · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
I wrote a post on a crafty little retain cycle in Swift, finding it and breaking it

paul-samuels.com/blog/2025/06...

#swift
Subtle retain cycle is subtle · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
I wrote a post on my experience of using Kotlin Symbol Processing in various ways over multiple years.
I cover how I like to structure my code and give example use cases for how we utilise KSP in our projects.

paul-samuels.com/blog/2025/06...

#kotlin #ksp
KSP and Me · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
This is the current sweet spot we use it for. We have several bits of sharing like backend code generated for JVM and JS so we can run in webviews on the clients and native JVM in the backend. We also share types/serialisation between backend, Android and iOS to create a compile time contract
paulio87.bsky.social
It’s situational but I work on a team ~10 iOS ~10 Android and we all work on our core platform and backends so tooling keep things consistent and avoiding pointless discussions on PRs or people causing churn reformatting stuff constantly is worth not having my own personal style
paulio87.bsky.social
Here's a post on making sure your SwiftTesting parameterised tests show up in the test navigator with nice names using `CustomTestStringConvertible`

paul-samuels.com/blog/2025/03...

#swifttesting #swift
CustomTestStringConvertible · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
I wrote a post on "Building Complex Things" talking about virtualising macOS machines for iOS CI paul-samuels.com/blog/2025/03...
#iOS #macOS
Building Complex Things · paul-samuels.com
paul-samuels.com
paulio87.bsky.social
It generates library files with ObjC interfaces that you can import into Swift. They are currently working towards native swift interop I believe. There are also libraries that help bridge things like coroutines to async/await and flows to AsyncSequences etc
paulio87.bsky.social
“Best” is very situational in what you need and how your team is structured. We have had really good success with Kotlin Multiplatform - all our Android devs obviously know Kotlin and Swift/Kotlin are syntactically pretty similar and have fairly equal language features.