Malcolm Hall

3.2K posts

Malcolm Hall

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
The Way of Jerz
The Way of Jerz@TheJerzWay·
Dubai is not the flex people think it is. No alcohol culture. Brutal summers. Everything is a mall. Real estate overpriced. You're surrounded by other people escaping something. It works for some. But it's not for everyone. Stop pretending it is.
English
112
11
360
70.4K
Malcolm Hall
Malcolm Hall@malhal·
@alpennec Kinda, think it's only dismiss window on macOS not sheet
English
1
0
0
58
Axel Le Pennec
Axel Le Pennec@alpennec·
@malhal What?! It exists for macOS but no other platforms?! 🤦🏻‍♂️ I will update my feedback! Thanks for sharing.
English
1
0
0
197
Axel Le Pennec
Axel Le Pennec@alpennec·
Is there a way in SwiftUI to detect when a sheet is being dismissed by a user to present a confirmationDialog in case of unsaved changes, as recommended by Apple HIG about Sheets? In UIKit, we can use the presentationControllerDidAttemptToDismiss method. Feebdack: FB22777840
Axel Le Pennec tweet mediaAxel Le Pennec tweet media
English
7
0
17
5K
Malcolm Hall
Malcolm Hall@malhal·
@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
0
0
2
35
Axel Le Pennec
Axel Le Pennec@alpennec·
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…
Axel Le Pennec tweet media
English
13
14
148
26.1K
Robbie
Robbie@Robbieiscoolio·
Hey @LidlGB please can you update the app so that the users unread receipts are marked? It makes doing my budget easier if I can see what I've already logged. Thanks!
English
4
0
0
1.4K
Malcolm Hall
Malcolm Hall@malhal·
@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
1
0
2
65
Barry Cleminson
Barry Cleminson@bazzaclem·
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
11
0
2
3.2K
Spy Before You Buy
Spy Before You Buy@Spybef0rey0ubuy·
My high school nephew wants to put his whole paycheck into $AMD at ATHs. What would you tell him?
Spy Before You Buy tweet media
English
162
3
117
34K
Malcolm Hall
Malcolm Hall@malhal·
@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
0
0
0
67
Carlos Valentin
Carlos Valentin@CarlosBBuild·
What’s your best SwiftUI advice?
English
24
0
15
10.2K
Malcolm Hall
Malcolm Hall@malhal·
@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:
Malcolm Hall tweet media
English
0
0
0
39
Malcolm Hall
Malcolm Hall@malhal·
@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
0
0
0
32
Axel Le Pennec
Axel Le Pennec@alpennec·
@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
1
0
0
34
Axel Le Pennec
Axel Le Pennec@alpennec·
Is there a local LLM I can run on my Mac to translate my app’s string catalogs?
Axel Le Pennec tweet media
English
3
0
3
1.7K
Axel Le Pennec
Axel Le Pennec@alpennec·
@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
2
0
1
156
Malcolm Hall
Malcolm Hall@malhal·
@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
0
0
0
20
Jacob Bartlett
Jacob Bartlett@jacobtechtavern·
@malhal That's a good point, actually. You probably don't need that much concurrency, do you?
English
1
0
0
40
Jacob Bartlett
Jacob Bartlett@jacobtechtavern·
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…
Jacob Bartlett tweet media
English
2
2
32
2.9K
@LidlGB
@LidlGB@LidlGB·
@malhal So sorry about this, Malcolm! Please DM us with your email address, barcode number, expiry date, lot/batch number, store purchased from and receipt. - Farrah
English
1
0
0
88
Malcolm Hall
Malcolm Hall@malhal·
@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.
Malcolm Hall tweet mediaMalcolm Hall tweet media
English
1
0
0
88
Malcolm Hall
Malcolm Hall@malhal·
@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
0
0
0
27
Matteo | Swift, iOS, Best Practices
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…
Matteo | Swift, iOS, Best Practices tweet media
English
3
3
45
4.6K