Learning and sharing at Hacking with Swift. Creator of Kickstart, Unwrap, Ignite, and two small children.

Bath, UK
My new Mac app is out today! It's called Kickstart, and it has just one job: helping indie app developers make more money on the App Store. It is *packed* with features, many of which are completely free. Get it here: apps.apple.com/app/kickstart…
56
59
590
94,895
The next Hacking with Swift+ live stream is this Saturday at 5pm UK time / 9am Pacific! We're making our third app building on the new OS 27 APIs – this one someone *must* ship, because it's too good not to 👀 hackingwithswift.com/plus
1
12
5,073
⏰ Starts in one hour!
2
961
Petition to ban restaurants from using AI-generated imagery in their menus 🗳️ (This comes from @JustEatUK, surprising no one.)
6
2
79
7,227
The .drawOn symbol effect animates SF Symbols as if they're being drawn with a pen, with three speed options for controlling how layers animate. hackingwithswift.com/quick-s…
2
3
34
7,105
Just sent the first Kickstart newsletter – one tip for App Store success every time, plus the latest Kickstart news. If you subscribed and didn't get it, check your spam folder! You need to verify your email.
4
22
4,192
There's an open-source SwiftUI agent skill that catches the mistakes AI tools keep making: deprecated modifiers, accessibility gaps, performance pitfalls. One command to install, and your AI-generated SwiftUI gets a serious quality boost. hackingwithswift.com/article…
13
71
757
94,690
Sneak peek: There's a reason I went to an iPhone Duo workshop this week. Big skill update coming this week! 👀
2
1
38
6,864
"But Paul, couldn't you have updated your skill without first using an iPhone Duo?" Sure I could, but that's not how I work – I want to see exactly what agents get wrong with real code on a real device, not guess and risk causing problems with your projects.
30
3,892
📨 The Kickstart newsletter: every issue will have one tip for App Store success, and the latest news on my Kickstart app. It will be fairly irregular, and sent only when I have something to say. First issue goes out today! newsletter.kickstart.tools
2
8
3,899
Beautiful 👌 These kinds of interactions add up, folks – every time users notice them they love the app that bit more, so take the time to add some delight to your apps!
Cute animation in the Home app on Mac when you scroll back through the timeline of recorded video clips.
2
74
12,750
I see the App Store is having a moment. Clearly deserves a rejection under guideline 2.1(a), App Completeness 😉
33
20
643
46,371
Anthropic: Opus 5.5 has unlimited power at incredible speed. Oh, and we have Sonnet 5.5 for lower-cost work. OpenAI: We're halving how much you get for $200 a month, but here are some temporary credits. Since Sol 5.6 Codex pretty much didn't put a foot wrong – what happened?
38
5
236
32,393
If you're lining up to tell me how great Sol 6.1 and/or Sonnet 5.5 is, please also explain how you came to such a well-formed opinion in under 24 hours. Kthxbai.
2
1
13
2,754
For HWS+ subscribers: When JSON is messy or completely unstructured, Codable becomes more trouble than it's worth. A custom JSON type with @dynamicMemberLookup can let you dig through any structure using clean dot syntax. hackingwithswift.com/plus/wo…
7
4,009
I got to try ChatGPT’s new dots personal assistant ahead of time as part of their Dev Early Access Community testing. TL;DR: It saved my day today. Longer version: I had an early train to London today. I woke up to find it had been cancelled (yay, UK trains!), and I had to get a later train – I would end up being late for my event, and the later train would likely be swamped with people. There was an earlier train available, but it was in 20 minutes; there was no way I could get there in time. It turns out that my dot had spotted the problem, read the cancellation email to see my ticket was valid on earlier trains, then looked up the live tracking for the earlier train and found that it was running late – it hadn’t even left its starting station yet. It did this with zero input from me; not even an initial request, just fully autonomously. So, I was able to leave more or less as normal, head to the train station, and catch the earlier train just fine. Train: Caught. Day: Saved. Me: Impressed.
26
19
366
44,516
You can pass multiple configurations into a single ModelContainer, handy for keeping some data in permanent storage and others in memory only. Just remember: related models must always share the same store! hackingwithswift.com/quick-s…
2
1
14
5,329
Hello, hello.
7
1
206
9,345
Migrating a large project to Swift concurrency is a big ask all at once. @preconcurrency lets you annotate modules and individual APIs as "pre-concurrency" to suppress warnings incrementally, buying yourself time to migrate properly. hackingwithswift.com/swift/5…
4
3
40
6,425
Sunday Build with HWS+: Why not try a deceptively simple SwiftUI game: tap the one green circle in a grid of red ones before time runs out, with multiple difficulty variations to keep things interesting. #SundayBuild hackingwithswift.com/plus/li…
4
1
9
4,346
I don't think a single person has received today's promised Codex reset from OpenAI. Literally no one. Is this part of a @thsottiaux plan to make everyone burn through tokens then take the weekend off when they hit zero? 🙃
119
7
481
45,256