Sign in

Jacob Bartlett 🍺

@jacobstechtavern.com
471 followers 1.1K following 2.9K posts

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

PostsRepliesMedia
Jacob Bartlett 🍺 @jacobstechtavern.com · 04/11/2025
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...
040
Jacob Bartlett 🍺 @jacobstechtavern.com · 03/11/2025
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
220
Jacob Bartlett 🍺 @jacobstechtavern.com · 03/11/2025
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.
120
Jacob Bartlett 🍺 @jacobstechtavern.com · 03/11/2025
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.
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 02/11/2025
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.
140
Jacob Bartlett 🍺 @jacobstechtavern.com · 02/11/2025
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
250
Jacob Bartlett 🍺 @jacobstechtavern.com · 01/11/2025
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 01/11/2025
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
040
Jacob Bartlett 🍺 @jacobstechtavern.com · 01/11/2025
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
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 01/11/2025
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?
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
You after reading Jacob’s Tech Tavern for 10 minutes (sorry for the slop 😅)
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
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.
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
First they came for the URL.appendingPathComponent(_:), but I was not a path component, so I said nothing...
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
Indie creator log day 9/100 (before my wife makes me get a real job) ARR growth: +$142, despite getting 4 new paid subs in the last 24 hours. Make it make sense! I spent quite a lot of my day smashing my head against Kotlin Multiplatform and Swift for Android. This is the sort of suffering
220
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
Swift 6 and iOS 18 introduce the Synchronization framework, containing two new low-level concurrency primitives — Mutex and Atomics.  These features could only be introduced with Swift 6 because they are implemented using the brand-new generic ownership mechanics. I tested them out and
110
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
Indie creator log day 9/100 (before my wife makes me get a real job) ARR growth: +$142, despite getting 4 new paid subs in the last 24 hours. Make it make sense! I spent quite a lot of my day smashing my head against Kotlin Multiplatform and Swift for Android. This is the sort of suffering I
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
Just tried to sign in with 2FA mid-mouthful-of-coffee and oh man is it hard to do without reading out loud
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 31/10/2025
Strictly speaking not tech related but here’s a video of Cody booping my son’s face 🥹
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
The 3 horsemen of Substack
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
Indie creator log day 9/100 (before my wife makes me get a real job) ARR growth: +$142, despite getting 4 new paid subs in the last 24 hours. Make it make sense! I spent quite a lot of my day smashing my head against Kotlin Multiplatform and Swift for Android. This is the sort of suffering I
110
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
Indie creator log day 9/100 (before my wife makes me get a real job) ARR growth: +$142, despite getting 4 new paid subs in the last 24 hours. Make it make sense! I spent quite a lot of my day smashing my head against Kotlin Multiplatform and Swift for Android. This is the sort of suffering I
110
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
LazyVStack got a serious under-the-hood performance upgrade in iOS 18 🦹‍♀️ My vsync and memory profiling massively exceeded my expectations. I’ve read before that LazyVStack is only lazy one-way; with cells sticking around in memory indefinitely after appearing.
220
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
The backend-driven SwiftUI spec we designed is flexible enough to use stack layouts and nested navigation links. Using it, we can create a Netflix-style layout with a list of videos alongside a player. (screenshot 1) We achieve this by adding containers and navigation.
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 30/10/2025
Had the stupidest bug ever with SF symbols this week. Image(systemName: "microphone") worked fine, but broke for my iOS 17 test device. The image simply wasn't there. The culprit? The symbol was called "mic" prior to iOS 18. 🤦
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
The website you spent too much time on in the 2010s → the tech company you work for 4chan → X (formerly Tumblr) MySpace → Meta Wasn't allowed on the internet → Amazon Club Penguin → Microsoft Formspring → TikTok Habbo Hotel → Airbnb StumbleUpon → YouTube Newgrounds → Google
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
My 4-year-old daughter just ended my career again Me: “Why do you keep going into mummy’s office and interrupting her, but you never do it to me? 4 y.o.: “Because you never work” 💀
020
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
Indie creator log day 8/100 (before my wife makes me get a real job) ARR growth: +$319, finally, an uptick. I’m up 1% for the week overall. Still not enough though. Spent a bit of time grinding LeetCode in the morning. I realised that it's probably a good idea to stream it because then everyone
120
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
My advice to juniors who are worried about the clanker coming for their jobs.
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
Gonna start live streaming my sweary LeetCode grind.
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
I've replaced the annoying chores of brushing my teeth and showering with the annoying chore of doing a LeetCode medium every morning. Will keep you updated on how it goes down with my wife.
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
Should I drop everything and do a Swift Android SDK article?
140
Jacob Bartlett 🍺 @jacobstechtavern.com · 29/10/2025
Why I’m still long Apple (and would invest if I had money)
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
Put quite a lot of effort into this Reddit comment, so I thought I should share it here too. Source: the actual school of hard knocks → blog.jacobstechtavern.com/p/the-side-h...
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
Indie creator log day 6/100 & 7/100 (before my wife makes me get a real job) ARR growth: flat. For now. No update yesterday; my baby was sick so did a tiny bit of stuff 1-handed before playing Metroid Dread with him asleep on me.
110
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
Nothing like some writing and self-loathing to close out the day
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
I’m religious when it suits me. More specifically, I worship gods. Those 10x engineers who can do stuff with technology I can only dream of being capable of. Today, I’m praying to MxIris, who can look inside Apple’s private frameworks and extract all the internal Swift code like it’s nothing.
121
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
Throwback to the time I beat my CEO at PacMan
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 28/10/2025
What software project has the most users per line of code? Can’t be Facebook or Google with billions of lines and users. Linux might be up there. I’m guessing something like cURL?
210
Jacob Bartlett 🍺 @jacobstechtavern.com · 27/10/2025
Free article unlocked 🔓 "The Terrible Technical Architecture of my First Startup" I tell the story of the systems I created at Carbn, my first startup, and the decisions I made as the tech cofounder to carry an app business, from scratch. We’ll look at:
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 27/10/2025
Facebook ads are funny as an indie because they unlock sustainable, profitable, scaling growth, but you have to be willing to light £1000 of your own money on fire to get there
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 27/10/2025
“Interprocess communication on the main thread can cause non-deterministic delays.” Anyone seen this error before? What does it mean?
220
Jacob Bartlett 🍺 @jacobstechtavern.com · 27/10/2025
autoreleasepool in practice: reducing peak memory footprint With an autoreleasepool block, each UIImage and file data in our loop are released upon leaving the scope of the pool. Therefore the loop iterations don’t add up, and peak memory use stays nice and level.
100
Jacob Bartlett 🍺 @jacobstechtavern.com · 26/10/2025
I have this amazing guru teaching me a hip new polyphasic sleep routine: 10pm-1am, 2am-3:30am, and 4am-6am Sorry did I say guru I meant infant son
030
Jacob Bartlett 🍺 @jacobstechtavern.com · 26/10/2025
Indie creator log day 6/100 (before my wife makes me get a real job) ARR pretty much flat for the week. Truly, life is the agony we endure between banger articles Going to start work on concurrency practical Kata to supplement my course, which will likely help my paid value prop.
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 26/10/2025
How to achieve ultimate Swift power: - 100 protocol extensions - 100 if case lets - 100 Combine operator chains - and 10km of Swift 6 concurrency warnings Every single day.
020
Jacob Bartlett 🍺 @jacobstechtavern.com · 26/10/2025
- [ ] The pain of setting up a new MacBook
010
Jacob Bartlett 🍺 @jacobstechtavern.com · 25/10/2025
Accidentally sent a memoji to someone kill me now
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 25/10/2025
I’m basically Hannibal Lecter excerpt without the eating people
000
Jacob Bartlett 🍺 @jacobstechtavern.com · 25/10/2025
Indie creator log day 5/100 (before my wife makes me get a real job) ARR growth: +$124 💸 I still kinda need to 4x this or I’m getting nowhere. I tell myself I’m focusing on the top-of-funnel free subs this month. Not much work today because kids. Writing this intermittently as I get baby to sleep.
110
Jacob Bartlett 🍺 @jacobstechtavern.com · 25/10/2025
How to achieve ultimate Swift power: - 100 protocol extensions - 100 if case lets - 100 Combine operator chains - and 10km of Swift 6 concurrency warnings Every single day.
010