Paul Samuels's Avatar

Paul Samuels

@paulio87.bsky.social

31 Followers  |  146 Following  |  23 Posts  |  Joined: 14.12.2024  |  1.6454

Latest posts by paulio87.bsky.social on Bluesky

Hacking with Ktor ยท paul-samuels.com

I built a tiny Ktor reverse proxy that forwards Snowplow events and pushes real-time updates over WebSockets to a debug UI.
All the best side projects start with โ€œthis should be easyโ€ฆ right?โ€ ๐Ÿ˜…

paul-samuels.com/blog/2026/02...

#kotlin #ktor

03.02.2026 00:20 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Call Once ยท paul-samuels.com

Exploring a Call Once property wrapper in Swift using parameter packs.

paul-samuels.com/blog/2026/01...

#swift #propertyWrapper #parameterPacks

30.01.2026 02:18 โ€” ๐Ÿ‘ 3    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Make nice tools ยท paul-samuels.com

Finally wrote up the story of a local dev tool Iโ€™ve been poking at for ~4.5 years. Lots of lessons about DX, removing friction, support pain and why โ€œjust worksโ€ matters more than features.

paul-samuels.com/blog/2026/01...

#compose #kotlin #docker #swift #swiftui

16.01.2026 01:54 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
From Runtime Explosions to Compiler Checked Simplicity ยท paul-samuels.com

Sometimes solving a problem isn't about more code, it's about asking the right question.
Step back, reframe and you might find a simpler solution.

Here's a recent example exploring KSP generated Kotlin code and Kotlinx.Serialization: paul-samuels.com/blog/2025/12...

#kotlin #ksp

22.12.2025 00:59 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Kotlin Gotchas: Why Your ?.let Sometimes Fails to Compile ยท paul-samuels.com

๐Ÿ’ก Kotlin devs: ever had `?.let` mysteriously fail to compile?

I dug into a subtle Kotlin mistake I commonly see in pull requests, explain the issue and how best to fix it.

๐Ÿ“ New post: Kotlin Gotchas: Why Your ?.let Sometimes Fails to Compile

๐Ÿ”— paul-samuels.com/blog/2025/11...

#Kotlin

09.11.2025 00:04 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Generic Algorithms Without Constraints ยท paul-samuels.com

We often reach for interfaces or base classes when we see duplicated code.

But what if you canโ€™t change the types?

You can still make the algorithm generic - just teach it how to read and build data.

๐Ÿ“ Generic Algorithms Without Constraints

๐Ÿ”— paul-samuels.com/blog/2025/11...

#swift #kotlin

07.11.2025 02:21 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Do Ya Still Need It ยท paul-samuels.com

๐Ÿงน DYSNI โ€” Do Ya Still Need It?

We deleted >800 lines of old Objective-C by asking one simple question: Do Ya Still Need It?

Simpler code. Less confusion. More clarity.

๐Ÿ‘‰ paul-samuels.com/blog/2025/10...

#CleanCode #Refactoring #DYSNI #Swift #ObjC

29.10.2025 23:23 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Git Rebase Tips and Tricks ยท paul-samuels.com

New post: Git Rebase Tips and Tricks

Habits and commands that make rebasing smoother - from keeping merge bubbles to verifying results and fixing mistakes.

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

#git #rebase #devtools #programming

29.10.2025 01:26 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Sometimes a Great DX Is Just a Horrible Pop Up ยท paul-samuels.com

Great DX isnโ€™t always a slick UI - sometimes itโ€™s a horrible popup that saves you hours.

I built a pop up that yells when local OAuth tokens expire and I love it.

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

#DevExperience #Kotlin

28.10.2025 00:57 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Chill Out with the Defaults ยท paul-samuels.com

Default arguments in Swift and Kotlin can make code cleaner - but at what cost? I explore how overusing them can weaken compiler checks, obscure intent, and blur boundaries between layers. Sometimes, being explicit is better.

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

#Swift #Kotlin

26.10.2025 02:00 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Self-hosting a Vapor app on a Raspberry Pi ยท paul-samuels.com

Might be more server side adjacent but I wrote this paul-samuels.com/blog/2025/08...

30.09.2025 12:45 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Explaining Regex Locally with Xcode ยท paul-samuels.com

The only Xcode refactoring tool I actually use? Explaining regex - no sketchy web tools required.

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

28.09.2025 17:16 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

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

21.09.2025 07:18 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Turning CI Logs into Actions ยท paul-samuels.com

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

07.09.2025 22:51 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Self-hosting a Vapor app on a Raspberry Pi ยท paul-samuels.com

I wrote a post on self hosting a Vapor app on a Raspberry Pi

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

#swift #vapor

19.08.2025 22:38 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Subtle retain cycle is subtle ยท paul-samuels.com

I wrote a post on a crafty little retain cycle in Swift, finding it and breaking it

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

#swift

19.06.2025 22:18 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
KSP and Me ยท paul-samuels.com

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

16.06.2025 22:56 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

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

28.04.2025 06:44 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

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

09.04.2025 20:05 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
CustomTestStringConvertible ยท paul-samuels.com

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

25.03.2025 00:52 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Building Complex Things ยท paul-samuels.com

I wrote a post on "Building Complex Things" talking about virtualising macOS machines for iOS CI paul-samuels.com/blog/2025/03...
#iOS #macOS

03.03.2025 01:40 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

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

26.02.2025 19:39 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

โ€œ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.

26.02.2025 01:40 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

@paulio87 is following 20 prominent accounts