Andrew Cowley
disc0inferno.bsky.social
Andrew Cowley
@disc0inferno.bsky.social
Interests :. Hobbyist Swift developer, investing, books/reading, cooking, cycling
and not forgetting the great Xcode Inspector Morse.
(played by John Thaw on UKTV. If you haven't seen it - it's a wonderful thing.)
November 10, 2025 at 12:07 AM
It may be of academic interest to peruse how I made it work on older OS's, because it required the use of DispatchGroup and a tiny unchecked Sendable class that I could have avoided if only Mutex was back ported.
If anyone can see a way to avoid that, I would love to hear about it.
November 10, 2025 at 12:02 AM
So I then made a thing, very much like ping, but it's an http ping, using http instead of icmp.
November 10, 2025 at 12:02 AM
I also wanted to make it work on Swift 6 with full checking and main actor isolation by default, and no pre concurrency cheating.
November 10, 2025 at 12:02 AM
So I thought there should be a way of making this work for all OS's. This made me learn a lot about "Approachable Concurrency". Thanks to Fatbobman and Mark Massicote for their posts on this subject.
November 10, 2025 at 12:02 AM
Stewarts solution is good, but it didn't follow re-directs, nor did it start with HEAD to save bandwidth (and switch to GET if HEAD request was refused).
Most importantly, it didn't work on all OS's.
Swift concurrency has made getting data from a url really nice, but only on modern OS.
November 10, 2025 at 12:02 AM
Your talk made non isolated(non sending) actually make sense in my head for the first time. Thankyou!
November 9, 2025 at 11:46 PM
Growing up, the mnemonic taught to me was

Good Boys Deserve Football - Always

I think burritos were not widely known or eaten in the UK at the time :)
October 16, 2025 at 1:14 PM
Would be great if you could post links to some of the great resources you found? In your earlier post, I only saw a recommendation for a book behind a paywall.
September 30, 2025 at 7:13 AM
Finessing here: In terms of reachability, I understand 403 and 405 http status codes also represent valid contact. As some sites do not support the Head method, it may be best to use Get, and set it to request 0 bytes instead?
September 29, 2025 at 4:09 PM
I like the idea of getting http headers to validate the site exists. (Trying to find/develop a ‘ping’ equivalent is a black hole I don’t want to revisit. )
September 28, 2025 at 10:41 AM
Thankyou! I’ll try that - don’t know why it didn’t occur to me.
September 13, 2025 at 12:24 PM
Is there a good Bluesky client for iPad and/or Mac ? I dislike peering at my phone, and find I’m wanting to browse the posts on a larger screen.
September 12, 2025 at 10:47 PM
I’m not sure if that helps with Localization, but let me know :)
September 10, 2025 at 11:03 AM
I believe you are right. I read it quickly as it triggered my angst with AttributedString in general. It likely has to be a non serializable class however due to the aforementioned bridging.
August 18, 2025 at 10:43 PM
Also, @krzyzanowskim.com has a Text Kit 1 library which he uses for Notepad.exe.
August 18, 2025 at 8:28 PM
@massicotte.org Chime library at github.com/ChimeHQ/Chime shows how complex this game gets.
GitHub - ChimeHQ/Chime: An editor for macOS
An editor for macOS. Contribute to ChimeHQ/Chime development by creating an account on GitHub.
github.com
August 18, 2025 at 8:27 PM
It’s interesting. If you try to use Text Kit (1 or 2), then you’ll end up having to use NSAttributedString, which is more complex. It seems the complexity arises because of the bridging needed between NextStep libraries and SwiftUI, and it makes Text Kit 2 horrible to use with SwiftUI.
August 18, 2025 at 8:25 PM
Any news on an app for iPad?
August 16, 2025 at 10:36 PM
Yes, stew would be an async function, but it’s all very much academic since we are getting a set of obtuse labels that will need to be looked up each time we need/come across them.
I do like that documentation exists though!
August 16, 2025 at 10:33 PM
Class S has a func, stew(), that is declared nonisolated, non sending.
Actor t of type Leaf is initialised with an instance, s, of type Stew
A function in t can call s.stew() without await to use the executor of t.
Or it should be able to call it with await and use the executor of the caller.
s.st
August 15, 2025 at 11:54 PM