Will Lumley

@wlumley
34 Followers
24 Following
125 Posts

Mainly a senior iOS engineer, but love to dabble in web development and robotics/embedded-systems in my spare time.

Father to four amazing children, and husband to a beautiful wife.

Checkout my stuff:
lumley.io
github.com/will-lumley/

🌎 Websitehttps://lumley.io
💻 Githubhttp://github.com/will-lumley/
In many cultures, the collapse of civilization is considered a bad omen

My garage remote died a while back, so I rebuilt the opener using an ESP32, a relay module, and HomeSpan (an open-source HomeKit Accessory Protocol implementation).

No vendor cloud, no subscriptions, no locked-down “smart” hardware. Just a simple, local, secure garage controller that works perfectly with HomeKit.

Wrote up the full build + wiring + firmware details here:
https://lumley.io/blogs/smart-garage/

#HomeAutomation #ESP32 #HomeKit #DIY #HomeSpan #OpenSource

How I Turned My Broken Garage Remote Into a HomeKit Garage Door for Under $22

A few weeks ago, my garage remote died. Completely. No LED, no click, no signs of life even after replacing the battery. Normally, this would be annoying enough, but my house relies heavily on HomeKit. Lights, blinds, cameras, fans - everything responds to Siri… except the garage. And now, even the dumb remote wasn’t working. But instead of buying a $90 replacement remote or a $250 HomeKit-enabled garage opener, I had a different thought:

My Portfolio

Fatbobman’s Swift Weekly #0107 is out!
A Trip to the Apple Store for Repairs

🔥 Hot Reloading SwiftUI Apps
🔍 Mobile Testing Strategies
🤖 Automate with Swift Subprocess
🎢 AsyncCombine

and more...
https://weekly.fatbobman.com/p/fatbobmans-swift-weekly-0107

thank you to those who selflessly shared their wisdom with us: @danielchooper, Jinkai, @kharrison, Tjeerd in 't Veen, @JacobBartlett, Bruno Valente Pimentel, Alfonso Tarallo, @mattiem and @wlumley

Fatbobman's Swift Weekly #0107

A Trip to the Apple Store for Repairs

Fatbobman's Swift Weekly

🚀 New blog post!

AsyncCombine: Because Async Code Shouldn’t Be Ugly

I built AsyncCombine to bring back Combine’s expressive syntax - sink, assign, CombineLatest, and more - but powered by Swift Concurrency.

Why? Because observing an @Observable class’s properties from a SwiftUI view is easy - but doing the same from another ViewModel got way harder and messier once @Published disappeared.

Check out my article that goes over how I solved it.

🔗 https://lumley.io/blogs/async-combine/

AsyncCombine: Because Async Code Shouldn’t Be Ugly

When Swift first introduced Combine, I loved it. The syntax was expressive, pipelines were easy to follow, and @Published made state changes feel almost magical. But as Apple pushed us toward Swift Concurrency, I decided to bite the bullet and migrate one of my apps away from Combine. The migration worked; async/await is powerful, predictable, and in many ways simpler. But I quickly noticed something, parts of my code just weren’t as easy to read anymore. A neat Combine one-liner became a few clunky async calls. And to make things worse, I couldn’t rely on @Published to observe changes between view models anymore.

My Portfolio

Apple to Europe: „Your laws are bad for us, therefore we are withholding unrelated features from your citizens and do everything possible to lobby against your laws.“

Apple in the USA: „We only follow the laws and orders of our authoritarian government, there is nothing we can do against it.“

Paul Graham wondering why there is so much racism at the Nazi bar and why Elon isn’t doing anything to stop it is almost cute in its naivety

This is the whole of academia in a nutshell.

#academia #writing #history #TooMuchInformation #TMI

Slightly unhinged and very incorrect, but probably still useful

actor: lock
isolation: which specific lock
nonisolated: no lock
Sendable: thread safe
non-Sendable: not thread safe
async: I might wait
await: I'm waiting, maybe just for a lock
Task: thread
compiler: pedantic, paranoid code reviewer

Ahh better!