Malcolm Hall
3.2K posts

Malcolm Hall
@malhal
iOS developer, traveller, guitarist, home brewer, academic researcher with a Ph.D. in Computer Science from the University of Glasgow. https://t.co/N461woy0JA
Scotland Katılım Ekim 2012
1.1K Takip Edilen498 Takipçiler

@malhal What?! It exists for macOS but no other platforms?! 🤦🏻♂️
I will update my feedback! Thanks for sharing.
English

@alpennec "If people have unsaved changes in the sheet when they begin swiping to dismiss it, use an action sheet to let them confirm their action." double sheets???
English

Apple updated its Human Interface Guidelines for Sheets on March 24, 2026 to add guidance for button placement in the toolbar.
"In iOS & iPadOS, the Cancel button belongs on the leading edge of the top toolbar."
Time to update my apps 🙂
Documentation: #Platform-considerations" target="_blank" rel="nofollow noopener">developer.apple.com/design/human-i…

English

@bazzaclem @virginmedia If you use their whatsapp chat bot and choose cancel it’ll offer a new customer contract pricing probably a bit lower than £26.99 but contacts are now 2 years (They say to save you having to use the chat bot every year but I don’t find it that much of a hassle!)
English

Hey @virginmedia, how is it that my broadband contract is up and you advertise prices at £26.99 but my renewal is £44? When I contact you to query, you say that the cheaper price is only for new customers? #ripoff
English

@twannl @NilCoalescing A few mistakes there. @.State should not init objects its like a heap memory leak. async func should not be in class, if called twice it will corrupt any of the class's properties. Async funcs should return a result that is set on the @.State instead.
English

What if you could update your app’s data while it’s in the background, preparing for when the user comes back? You can follow @nilcoalescing’s technique using background tasks in SwiftUI.
Curated in this week's #swiftleeweekly nilcoalescing.com/blog/Schedulin…
English

@ScotRail prize for most annoying thing ever is this pointless Wi-Fi survey no body is going to fill in accurately since it's asked every station every day:

English

@alpennec @ekurutepe I haven't tried it yet either because installing random AI github projects seems risky these days given how big a target they are.
English

@malhal @ekurutepe Someone recommended this too. I’ll check but I’m not sure how performant a local modal can be on my M2 Pro actually…
English

@ekurutepe Thanks for sharing. I played a bit with another app using Apple Translation but the translations were off because we can't provide any context to the API unfortunately. I wish we could use Apple Intelligence locally to translate, maybe with Foundation Models.
English

@jacobtechtavern No and it's a common mistake by those used to combine. Async/await is kinda like opposite design or you could say inside out.
English

@malhal That's a good point, actually. You probably don't need that much concurrency, do you?
English

People say AsyncSequence was the Combine killer, which is bullsh*t because I love Combine. Using Combine is a great way to signal to your team that you're smarter than them.
Both libraries deal with streams of values over time. Many of the algorithms in the AsyncAlgorithms package therefore serve as drop-in replacements for corresponding Combine operations.
If you can't beat 'em, join 'em. It’s pretty easy to seamlessly convert Combine publishers into Swift-Concurrency-friendly AsyncSequences using the values modifier.
See my full migration attempt here in "Migrating Combine to AsyncAlgorithms"
blog.jacobstechtavern.com/p/migrating-co…

English

I’ve used the refreshable modifier in SwiftUI plenty of times, but I wasn’t aware of the risk @AntonGubarenko explained.
Curated in this week's #swiftleeweekly antongubarenko.substack.com/p/swiftui-refr…
English

@LidlGB hi the new orange can version of Simply Baked Beans have a strange smell. It's like a watery metallic smell which is worrying enough on the senses to think perhaps safer not to eat them. Also the beans are small and liquid very watery compared to the previous blue can.


English

@MatManferdini Your issue might be you are trying to pass the whole Recipe into a View but in SwiftUI you should only pass in bindings to the properties you need. And you shouldn't name a View using a model name eg RecipeView
English

@malhal A binding requires dependency injection, which violates the principles I mentioned.
English

Injecting view models into a SwiftUI view from its parent view creates coupling between views.
It also violates the Single Responsibility and Don't Repeat Yourself (DRY) principles, especially when the view is accessible via multiple navigation paths.
We can avoid these problems by injecting the dependencies into the view model from a coordinator.
Read more here: matteomanferdini.com/mvvm-coordinat…

English








