@mattiem@mastodon.social
@mattiem@mastodon.social avatar

mattiem

@mattiem@mastodon.social

macOS/iOS ⌨️, outdoors 🏔, justice ⚖️, games 👾

Pretty into open source. Previously: Crashlytics, Apple

This profile is from a federated server and may be incomplete. Browse more on the original instance.

mattiem, to random
@mattiem@mastodon.social avatar

I somehow forgot about Timelines by @luksape . It’s wonderfully simple and functional. Really enjoying it so far!

https://timelines.app

mattiem, to random
@mattiem@mastodon.social avatar

Got a great question about keeping some code compatible with complete checking both off and on. It is hitting a very tricky case involving a compiler bug with default values. Here's a little explaination along with a possible solution.

A nonisolated init is one of those things that just keeps coming up as a useful trick.

mattiem, to random
@mattiem@mastodon.social avatar

Wrapped up my first official day at Apple again*, working on the forthcoming Swift concurrency migration guide. Gotta admit, so many parts of this I did not see this coming.

  • as a contractor this time, relax
mattiem, to random
@mattiem@mastodon.social avatar

Making progress in Transistor.

Kid keeps asking me to finish Jump Jump Jump in Mario Wonder and I want to throw the controller at the TV every time. But I’ve only tried maybe 10000 times so far.

Playing anything?

mattiem, to random
@mattiem@mastodon.social avatar

It's very common to have trouble with SwiftUI's EnvironmentKey/PreferenceKey protocols and strict concurrency.

I've updated the protocol section here to include a few techniques that work well for any static let in a non-isolated protocol.

https://github.com/mattmassicotte/ConcurrencyRecipes/blob/main/Recipes/Protocols.md#static-variables

mattiem, to random
@mattiem@mastodon.social avatar

Brain stopped making smart. Added caffeine but no more smart come out. Added even more. Still no smart! How make more smart?

mattiem, to random
@mattiem@mastodon.social avatar

Concurrency in Swift 6

SE-0421: Generalize effect polymorphism for AsyncSequence and AsyncIteratorProtocol

AsyncSequence is getting some long-awaited improvements. I'm excited for this one, and I also think it's cool because isolated parameters are involved.

https://www.massicotte.org/concurrency-swift-6-se-0421

mattiem, to random
@mattiem@mastodon.social avatar

Inspired by @Migueldeicaza , I was thinking, again, about what would be required to support a full IDE experience on an iPad. And the propects are grim.

LSP is just fundamentally incompatible with iOS. And even with spec changes (which I have roughly outlined) that could be hard justify, it would still require enormous work from each server implementation to support.

mattiem, to random
@mattiem@mastodon.social avatar

Part 4 of concurrency in Swift 6

SE-0420: Inheritance of actor isolation

There are three proposals that will, in my opinion, have a profound effect on how Swift concurrency is used. This is the first, though it may not affect you directly. "Fans" of SE-0338 take note!

https://www.massicotte.org/concurrency-swift-6-se-0420

mattiem, to random
@mattiem@mastodon.social avatar

Judging by the “share-socials” channel @DeepDishSwift, mastodon is easily the dominant platform for Apple developers. I was not expecting this!

mattiem, to random
@mattiem@mastodon.social avatar

Ah Saturday. A time to relax, recharge, and frantically invent a presentation you for some reason agreed to do in 36 hours.

mattiem, to random
@mattiem@mastodon.social avatar

Next up for concurrency in Swift 6

SE-0418: Inferring Sendable for methods and key path literals

Once you see this proposal, it kinda becomes surprising things weren’t already working this way. Pretty straightforward stuff, and probably won't affect you.

https://www.massicotte.org/concurrency-swift-6-se-0418

mattiem, to random
@mattiem@mastodon.social avatar

Someone: “I would argue …”
Me, being maybe too pedantic but serious: ok, please begin making your arguments because just saying the words “I would argue” is not compelling.

mattiem, to random
@mattiem@mastodon.social avatar

The CAP theorem comes up a lot in backend development. But I think many iOS developers that do any sync/CloudKit work would benefit tremendously understanding it.

It is possible you have a mental model of what “sync” is that has been proven impossible to build.

https://en.m.wikipedia.org/wiki/CAP_theorem

mattiem, to random
@mattiem@mastodon.social avatar

I have a lead on a Swift (macOS/iOS) development position.

Company is working on voice interaction + AI integration. Based in San Francisco.

https://jobs.lever.co/WisprAI/527372b4-b433-4896-8207-e71ec5ff112f

mattiem, to random
@mattiem@mastodon.social avatar

@ctietze hello! Have you ever used/made/ thought about a Swift wrapper package for JavaScriptCore?

mattiem, to random
@mattiem@mastodon.social avatar

I’m expecting with Matrix. I don’t 100% get it, but just in case: https://matrix.to/#/%23chimehq%3Amatrix.org

mattiem, to random
@mattiem@mastodon.social avatar

Firewatch complete. Had no idea what this was about going in. Pretty tense at times, definitely for adults! Fantastic voice acting. Found controls quite awkward on the Switch.

Next: Transistor

mattiem, to random
@mattiem@mastodon.social avatar

ThemePark is a very structured approach to handling editor theming.

  • built-in support for TextMate and Xcode themes
  • mapping tree-sitter highlight captures
  • style resolution using the SwiftUI environment

I've wanted to work on this idea for a long time now. Not totally done, but pretty far along!

https://github.com/ChimeHQ/ThemePark

mattiem, to random
@mattiem@mastodon.social avatar

Thanks to both some inspiration and contributions from @iain , here's little package that makes working with AsyncSequence and Data more efficient.

Particularly helpful with FileHandle and URLSession.

https://github.com/mattmassicotte/Packet

mattiem, to random
@mattiem@mastodon.social avatar

Today I saw an LLM-generated suggested fix for an iOS crash report. It was jaw-dropping. It was so, so wrong about so much. It ended with a haiku.

Hours later, I'm honestly still reeling.

mattiem, to random
@mattiem@mastodon.social avatar

Following up with a colder take: is dynamic isolation bad?

(No, it is not. But, it's definitely worth thinking about why you using it.)

https://www.massicotte.org/dynamic-isolation

mattiem, to random
@mattiem@mastodon.social avatar

If SwiftUI doesn’t add a macro for defining environment values I will be very disappointed.

mattiem, to random
@mattiem@mastodon.social avatar

MainActor.run is almost never the right solution. You want to define your isolation statically on the type, via a global actor annotation.

Dynamic isolation is an escape hatch, and it should set off alarm bells every time.

mattiem, to random
@mattiem@mastodon.social avatar

The thing I find so compelling about watchOS development is the extreme constraints. It’s the polar opposite of macOS.

Playing around with TabView and it’s cool.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • cisconetworking
  • DreamBathrooms
  • InstantRegret
  • ethstaker
  • magazineikmin
  • Youngstown
  • thenastyranch
  • mdbf
  • slotface
  • rosin
  • modclub
  • kavyap
  • GTA5RPClips
  • provamag3
  • osvaldo12
  • khanakhh
  • cubers
  • Durango
  • everett
  • ngwrru68w68
  • tester
  • normalnudes
  • tacticalgear
  • anitta
  • megavids
  • Leos
  • lostlight
  • All magazines