You can find it on my substack if you subscribe! - join.jacobstechtavern.com
You can find it on my substack if you subscribe! - join.jacobstechtavern.com
Proof of Concept, yeah, I did an Android app powered by Swift and an iOS app powered by Colin.
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...
out to my paid subs by Tuesday 11.
Support my journey to independence by subscribing for free: join.jacobstechtavern.com
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
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
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
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.
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
Be among the first to read my exclusive in-depth comparison: blog.jacobstechtavern.com/p/swift-for-...
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.
See the full article: blog.jacobstechtavern.com/p/swiftui-sc...
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 π§.
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.
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.
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...
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.
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.
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.
Read The Meme that gave me Imposter Syndrome: A primer on type attributes in functions today! blog.jacobstechtavern.com/p/the-meme-t...
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
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
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
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?
You after reading Jacobβs Tech Tavern for 10 minutes (sorry for the slop π )
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
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
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.
First they came for the URL.appendingPathComponent(_:), but I was not a path component, so I said nothing...