Jacob Bartlett 🍺's Avatar

Jacob Bartlett 🍺

@jacobstechtavern.com

Writing the #1 iOS newsletter on Substack. Turbocharge your Swift career with in-depth weekly articles πŸš€ Sign up free today! join.jacobstechtavern.com

450
Followers
1,108
Following
2,927
Posts
30.08.2023
Joined
Posts Following

Latest posts by Jacob Bartlett 🍺 @jacobstechtavern.com

Preview
Jacob's Tech Tavern Sign up free

You can find it on my substack if you subscribe! - join.jacobstechtavern.com

11.11.2025 09:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Proof of Concept, yeah, I did an Android app powered by Swift and an iOS app powered by Colin.

11.11.2025 09:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image Post image

My life was a lie. It turns out the shiny new Mutex was just syntax sugar on `os_unfair_lock` all along πŸ‘»

Read my full article to see how performance of this Mutex in the Synchronisation framework compares against Swift actors: blog.jacobstechtavern.com/p/the-synchr...

04.11.2025 08:00 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Jacob's Tech Tavern Sign up free

out to my paid subs by Tuesday 11.

Support my journey to independence by subscribing for free: join.jacobstechtavern.com

03.11.2025 21:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

concurrency course as a new pillar in why someone should become a paid subscriber. Think like a game where each level is an increasingly difficult puzzle that you have to solve with a different tool, or combination of tools, in Swift Concurrency. With my full focus this week, I'm aiming to get it

03.11.2025 21:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

crazy. I think my potential positive avenues vis-a-vis sponsorship has reduced the intensity with which I'm going to try and muck around with LeetCode. Depends on my runway though.

Spent the last part of the day planning out my β€œSwift Concurrency Kata” which is going to join in with my

03.11.2025 21:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Thanks a ton to to Alex Bush and Pierluigi Cifani πŸ™

I have an interview with a very legendary figure in the iOS community tomorrow, so I spent the rest of the day prepping the various questions I want to ask.

With the rest of the day, I actually managed to get a gym session in which is

03.11.2025 21:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

vs Swift for Android post. Fortunately/unfortunately, they team had just merged in a way to interop Async/Await with swift-java. This dramatically improves the ergonomics, but I had to re-write my whole f*cking project.

Got it out in time. Managed to get some people to proofread my stuff.

03.11.2025 21:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

Indie creator log day 13/100 (before my wife makes me get a real job)

ARR growth: +$636. I can proudly announce I have achieved minimum wage πŸŽ‰ If I can release a banger like this every week we might be getting somewhere.

Spent the day rushing to finish my Kotlin Multiplatform

03.11.2025 21:25 πŸ‘ 2 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Preview
Swift for Android vs. Kotlin Multiplatform The "Xbox vs. Playstation" of the multiplatform era

Be among the first to read my exclusive in-depth comparison: blog.jacobstechtavern.com/p/swift-for-...

03.11.2025 17:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

It's the "Xbox vs. Playstation" of the multiplatform era. Swift for Android has arisen to challenge the dominance of Kotlin Multiplatform.

The prize? The hearts and souls of native mobile engineers everywhere.

03.11.2025 17:01 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
SwiftUI Scroll Performance: The 120FPS Challenge Squeezing high performance from the magic



See the full article: blog.jacobstechtavern.com/p/swiftui-sc...

03.11.2025 08:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0


SwiftUI can run into very painful performance problems when dealing with infinite scrolling feeds. Today, we will investigate these performance problems, understand why they happen, and explore techniques to mitigate them, making your SwiftUI performance buttery smooth 🧈.

03.11.2025 08:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0


To achieve the maximum 120Hz refresh rate, the main thread has to execute all layout computation and rendering in 8.3ms to avoid a frame drop: the dreaded hitch. With system overhead, you’re lucky to get 5ms for this work.

03.11.2025 08:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

SwiftUI is like magic. But, like all well-designed magic systems, it comes with a cost.

What, you thought that beautiful declarative syntax and automatic data bindings come free? Think again.

03.11.2025 08:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
SwiftUI Scroll Performance: The 120FPS Challenge Squeezing high performance from the magic

Here’s the trace showing these dropped frames and micro-hangs. Overall, though, it wasn’t terrible considering the unfair example I used (with random cell heights).

See the full article here: blog.jacobstechtavern.com/p/swiftui-sc...

02.11.2025 17:02 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

If you programmatically scroll to a specific cell way off-screen, SwiftUI suddenly has to run all this layout computation, causing a big performance hit.

With dynamically-sized cells, we see a visible degradation in performance, with several dropped frames.

02.11.2025 17:02 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

LazyVStack dynamically estimates geometry based on the number of views.

What does this mean practically? Let’s imagine your views are all dynamically sized, or your layout contains cells with varying heights.

02.11.2025 17:02 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image Post image Post image

The 120FPS SwiftUI challenge: Pushing LazyVStack with dynamic sizing

Let’s take a look at dynamically-sized cells. Because LazyVStack sizing and layout computations are performed on-demand, we are trading off some accuracy to get this performance.

02.11.2025 17:02 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
The Meme that gave me Imposter Syndrome A primer on type attributes in functions

Read The Meme that gave me Imposter Syndrome: A primer on type attributes in functions today! blog.jacobstechtavern.com/p/the-meme-t...

02.11.2025 11:00 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Advanced Swift tips: Argument Attributes

It's not every day a meme gives you imposter syndrome, but this showed me I knew nothing about argument attributes.

To fix this knowledge gap, I built an app implementing a function using @escaping @Sendable @MainActor @autoclosure

02.11.2025 11:00 πŸ‘ 5 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Post image
01.11.2025 21:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

My favourite Swift feature is switching over self on enum computed properties and it’s not close

What’s your favourite?

Master Swift for 10 mins a week @ join.jacobstechtavern.com

01.11.2025 17:00 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Jacob’s Tech Tavern is hiring!! πŸš€

I need to pay someone Β£10 a pop to hit me over the head with a bat whenever I touch my Facebook ads

Pls apply in the comments below

01.11.2025 11:29 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image Post image

I need to find a way to integrate these kinds of stats into Jacob's Tech Tavern.

I reckon I'm sleeping on some great viral shareability.

What stats would people like to see?

01.11.2025 11:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

You after reading Jacob’s Tech Tavern for 10 minutes (sorry for the slop πŸ˜…)

31.10.2025 20:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Jacob's Tech Tavern Sign up free

to stop touching the ads but dreams of paid acquisition consume my every waking moment.

Support me pls my family is starving: join.jacobstechtavern.com

31.10.2025 19:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I spent all day writing "Swift for Android vs Kotlin Multiplatform". Coming Monday.

Also fixed some boring tracking stuff with my ads. Annoyingly, after a great first day, the Meta algo ate 98% of my ad spend on the Apple Notes ad with zero extra results. Turned the f*cker off. I really need

31.10.2025 19:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image Post image

Indie creator log day 10/100 (before my wife makes me get a real job)

ARR growth: +$455 πŸš€ this is the first day since I started where the ARR growth is actually on-plan, so I’m gonna have a beer to celebrate.

Uuhh I was super busy writing so forgot to do this as I went along.

31.10.2025 19:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

First they came for the URL.appendingPathComponent(_:), but I was not a path component, so I said nothing...

31.10.2025 14:00 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0