Cam Hunt
banner
cam.is
Cam Hunt
@cam.is
Making iOS apps since it was called iPhone OS
Ooooo what’s the enum trick?
March 29, 2025 at 11:13 PM
Bluesky’s implementation of a federated protocol is a lot more complex than Mastodon/ActivityPub. I’d check out Mastodon’s API if you’re interested in a simpler federated API because it doesn’t employ some of the more complex concepts of atproto
March 15, 2025 at 6:50 PM
I’ve found the Bluesky documentation to be much more approachable than the documentation on atproto.com. This page (and the page before) are pretty good overviews of the concepts: docs.bsky.app/docs/advance...
Federation Architecture | Bluesky
The AT Protocol is made up of a bunch of pieces that stack together. Federation means that anyone can run the parts that make up the AT Protocol themselves, such as their own server.
docs.bsky.app
March 15, 2025 at 6:50 PM
Yup aside from complex OAuth, the API is just really complex because it’s a decentralized protocol. But it’s also polymorphic so consuming it with a statically-typed language like Kotlin is gonna be pretty advanced
March 15, 2025 at 6:02 PM
Showing a new draft on launch (with the ability to go back to the draft list) is much different than, for example, making an entirely separate UX where the compose screen is the root and the list of drafts is shown on top of that. That I will not do. Because I do not want to make two apps.
March 15, 2025 at 4:49 AM
I'll almost certainly add the ability to open my app to the compose screen. But unlike a lot of the apps you mentioned, I'm just one developer with limited resources.
March 15, 2025 at 4:49 AM
I'm not saying allowing people to choose preferences is bad. But all software is opinionated and behaves the way the developer decides. Even your example of Obsidian doesn't have a way to create a new note on launch. (Although it does have a LOT of options)
March 15, 2025 at 4:49 AM
I think if people want the inverted flow of Compose>Drafts then good news: every draft app or feature already works like that. I'm making an alternative that centers drafting.

I honestly can't think of an app that provides a feature set and allows a user to configure the flow.
March 15, 2025 at 3:34 AM
I see the feature set and the UX as intrinsically linked. Either drafts are important enough to be the main screen of your app or … well, it's not really a drafting app, is it? Croissant is a composing app with a cache, it's not a drafting app IMO
March 15, 2025 at 2:27 AM
Many note taking apps have the option to display a compose screen on open. But if they do, there's a back button to see the list of notes. Have you used Croissant? Draft list opens in a modal, no search, ordering, etc. Nothing that would allow you to navigate or organize more than a couple drafts
March 15, 2025 at 1:50 AM
Imagine if your Notes app opened to an empty note and to see a list of your notes you had to tap a button. Would you call that a subtle difference?
March 15, 2025 at 1:23 AM
Thank you for figuring it out! I think I can get OAuth working … now I'm just weighing my options for how to structure multiple persistant accounts. I was hoping to have one Bluesky client that applies auth via a parameter for any given request, but now I'm not so sure
March 15, 2025 at 1:15 AM
Croissant is a well-made app, but I fundamentally dislike the inverted hierarchy of Compose > List of drafts. It should be List of drafts > Compose. Ever since Twitter implemented drafts this way, every platform copied that inverted UX for their drafting features and I extremely dislike it.
March 15, 2025 at 1:09 AM
Drafting app with cross-posting app to Mastodon and Bluesky
March 15, 2025 at 12:54 AM
Oh, I have no doubt it works! I'm still working on the architecture for my app. It supports any number of accounts, so OAuthenticator basically being a replacement URLSession is different than what I was originally going for
March 15, 2025 at 12:43 AM
Yup! I've seen most of those (well, the Swift ones). Most are either pretty early in development or not exactly what I'm looking for. I will probably end up taking some ideas from OAuthenticator to roll my own
March 15, 2025 at 12:12 AM