Show newer

Me: Hmm, I’m struggling to align this unread indicator, let’s see how Apple does it in Mail

Apple Mail:

@tclementdev yes not obvious from the docs, unless you click through to the underlying type (or if it has a Discussion saying so). I agree with you it should be way clearer (at least in See Also?!)

@tclementdev this is a problem with a lot of the environment values, they're just not obvious (tho tbf I think if you tap ScenePhase there's an example, but still)

@Alticus it’ll be back with a vengeance soon. Keep your eyes peeled here.

@HOsy No CloudKit, have rolled own API with Vapor. Shared models/controllers between client is 👌

This concludes this morning's stream of consciousness.

Tune in tomorrow!

Show thread

Writing these packages has also been a fun exercise in how to design APIs now that we have concurrency.

For example, subscribing to IMAP idles (pushed events), I borrowed the 'updates' pattern used in the new StoreKit 2 API. It's an AsyncStream that just runs forever, and gets iterated over when new events occur.

Show thread

@alpennec @matt1corey @b3ll omg 100% this! Sick of resorting to this silly little pattern if I want a button + alert in a menu or swipe.

@alpennec @groue or heaven forbid Apple contributes! 😅

Plus why wait? A great alternative to Core Data already exists!

Big Mail 2, nay, ALL my apps, wouldn't be possible if it weren't for the generous contributions of others in the OS community.

I can't wait to give back, so that's why I plan to open source all of Big Mail's core packages: SwiftIMAP, SwiftSMTP, and SwiftEmail.

They're all super Swifty, modern, and hopefully instantly familiar to anyone who's used Foundation.

Show thread

There's also a sister package, GRDBQuery, which gives you a @Query property wrapper for SwiftUI (similar to @FetchRequest in Core Data)

You're then able to write views that automatically update when anything in the database changes.

Here's all the code needed for the account picker in Big Mail. So clean.

github.com/groue/GRDBQuery

Show thread

Related: I binned off Core Data for Big Mail 2, and instead have been using the phenomenal GRDB by @groue

Not only is my app now faster and less buggy, but it’s so much easier to reason with. No weird managed contexts and elaborate dances to pass stuff between threads. Just simple, safe, Swift structs.

(Also, the documentation is INSANE) github.com/groue/GRDB.swift

Show thread

@stroughtonsmith what blew my mind is that they aren’t digital…they’re analog! 💿

@manuel my new daily ritual will be squinting at the screen to perfectly align it

Show older
The Not So Big Company

The home of The Not So Big Company on Mastodon.