Yeah, I think I’ll focus on “themes” to start with and then say, hey, you can actually use some theme parts individually and remix them; and, there’s also specific interfaces that don’t belong to a theme.
Where theme = web app style interface, can look like whatever (eg. win98 winamp vs spotify)
Posts by Steven Vandevelde
Welcome to the club 🙌 NixOS I assume? Looks good!
On device, for example, so you could more of a distributed consensus mechanism.
- 3rd point, also not true, UCAN delegation tokens are not bundled by default. They refer to each other using CIDs. That was the case in original prototype, but that was ages ago.
Interesting!
Couple notes:
- Not exactly improvements, more like tradeoffs.
- Revocation lists can be local too, in that case they do work offline (depends on what you’re modelling after though).
- 2nd point, not true, Bob needs to explicitly delegate to Carol. UCANs can be public info.
Depends on your app architecture and core audience I guess?
If your core audience is quite technical I’d say yes, we can defer the responsibility of recovery to the password manager.
If using capabilities, then it’s just a matter of who’s holding the set of caps.
Otherwise, what Blaine said.
Listing individual records also increases the “limited interactions” counter so I’m reading the entire repo using the CAR file, which is also hugely inefficient.
So basically the initial bi-directional sync is the issue.
Bluesky’s PDS has a limit on the amount of record interactions per hour. 1500-ish I’m guessing, in any case not enough to add 20K in one go; when importing data.
It’s mostly that. I got around it by stuffing as much data as possible into one record, but then I lose the ability to do partial updates
Maybe upload some data as a blob. Curious to know how, and if, you’re solving this.
Looking forward to this!
I’m struggling with my rudimentary local-first atproto sync. It works ok with a normal amount of data, but once I need to import 20k records it’s rate limit errors all over the place.
I wonder if we need permissioned data to land, a separate storage, or something else? 🤷
In case he doesn’t answer, he’s very familiar with the different capability models. He worked on ucan.xyz/specification/
Actually, could I just skip the API and publish a Rocksky scrobble record straight to my PDS? Does Rocksky pick that up?
Sorry for all the questions!
Anyhow! Thanks again so much 🙏 The search for a great main screen and user experience continues!
Couple other notes:
- Great call on the delete thing, it's a danger zone for sure. I like your idea of an "edit modules pages" or an advanced user section.
- The current hosted version is quite slow yea, I have over 50k redirect rules on Netlify which makes it slow to load pages (also an experiment)
Maybe we do something half-way yeah, with a sidebar.
This whole problem is on my to do list, how do we figure out the "gentle slope of user customization"
tbh, I'm still figuring out what this thing exactly is.
There's like so many possibilities with this, and it's hard to distill it.
Much like you can move around the Winamp player in Diffuse's Winamp theme.
I also thought of making themes the entry point, which is kind of like that preset thing you were talking about; but that felt like being dropped into a regular web app, and wouldn't showcase what is possible.
Another idea here is that I want us to escape the regular browser window box and also use tools such as tangled.org/burrito.spac...
The thinking there is that you would load separate interfaces each in their own little browser window (aka. web view) that you can move around.
I thought of doing exactly what you described, building your audio player. I do want to add that capability as well, but I'm not sure yet I want to make it the primary focus or not.
At the moment the main Diffuse screen is more like a marketplace I guess, you're browsing through available modules.
I don't know yet how to properly communicate this interfaces concept.
So technically, interfaces are just web pages that you open. Saving them (ie. turning on the toggle) is basically just bookmarking them, saving a reference.
It's quite confusing in combination with features yeah.
Good to know it's still too technical.
It's not so much that you're building one audio player, but rather that you have multiple "separate" interfaces that all work on top of your data and your enabled *features* (red)
I can totally see how the toggle doesn't make sense for the interfaces (blue) 🙈
Thanks so much! This is super valuable!
So I should probably emphasize that this is still in the experimental phase 😅 It's quite buggy yeah, I'm still making big architectural changes every day.
I made it public already so we can have chats like these ❤️
Thanks! It's working now 🙏
@rocksky.app Hi! Would love to implement Rocksky, but hitting some CORS errors. Does the API audioscrobbler.rocksky.app/2.0/ support CORS?
I’ve been trying to make atproto local-first as well with its current architecture but constantly bumping into rate limits on the pds because I’m trying to import 20000 records 😅
I guess it could be associated data, not published as records, but where do we put that? Wait for permissioned data?
@blaine.bsky.social Thank you sir for another great cheese talk 🙏 Love this framing!
@hilk.eu Thanks for your atmosphereconf presentation, great work 🙏
I did not know you were part of Amatorski! That's so cool, "Come Home" is such a lovely song.
I just saw the awesome Web Tiles talk from ATmosphereConf which demos a little audio player and I now wish I could adapt my thing.
Still not sure it's actually possible. I worry that it does too much sandboxing to integrate with various api/oauth flows, but maybe I'm thinking of this the wrong way.
Thanks! Yup, that’s right. You can even add/edit modules.
It’s a static web page, no backend, so either host it or embed it in a tauri/electron app.
There’s a hosted instance available, because some services it integrates with require oauth or api registration. But all that is totally optional.
If you use atproto you could have the loader load that particular custom syncing code I guess. Or maybe there’s some P2P solution…
Not sure what to do with this yet.
I’m still figuring out the edge cases with that though. One example is when you add your own syncing method.
If you then try to load your user-data from that custom storage option on a different device, it doesn’t know how to do that because the instructions aren’t there.