Zicklag

@zicklag
105 Followers
45 Following
295 Posts

Software engineer and problem solver with a passion for producing high quality solutions to real-world problems. I strive to make great things that people can use and enjoy, all to the glory of God.

Mostly on Bluesky nowadays: https://bsky.app/profile/zicklag.dev

Bloghttps://zicklag.katharos.group
GitHubhttps://github.com/zicklag
Weirdhttps://zicklag.dev

Even if you didn't login to Roomy directly with solid / ActivityPub, we could still have a backup service that replicates to a Solid pod.

Or even just an app you run on your computer that backs up your data.

@strypey @FenTiger @benpate @erlend

Yeah, it looks like it's possible that ATProto might get private data this year, which we could use for private backups, but until then they'll have to stay public.

It's also quite easy to make small tools / services that replicate a Roomy space to any other kind of backup target.

I made a proof-of-concept that could replicate our wiki pages to markdown files in a git repo.

@strypey @FenTiger @benpate @erlend

The RDF / JSON-LD approach of Solid could possibly be bypassed reasonably by just storing blobs with some metadata, but I'm not very familiar with Solid.

For backups we'd mostly be storing bundled archives of events anyway, so it isn't super important that thhose archives be semantically indexed as long as we can just store our serialized archive blobs.

@FenTiger @strypey @benpate @activitypods @erlend

Yeah, we don't have backups yet, but probably will have them soon.

Those will be optional though. It's just to give the user more data security, while many ATProto users will trust their PDS more than our server.

There actually is pretty good chances we could do a similar integration with Solid pods, but we've only got so much we can take on as a small team and I'm not sure what we'll be able to get to when.

@FenTiger @strypey @benpate @activitypods @erlend

> So "channels" and "servers" (as Discord uses these terms) would be tied to the originating server, like MUC in XMPP?

Yes.

If I understand XMPP right, we have an advantage also in that we can have chat spaces use domains like handles for discovery, but it's possible to change the handle and the hosting server without everybody having to re-join.

@strypey @benpate @klu9

Roomy does have a client and a server. The server has it's own protcol that isn't Roomy specific.

If we let you login with Mastodon it would just be for login still keep all of the data hosted on our server and wouldn't need to implement any Mastodon / AP APIs.

We do use the PDS for some storage / integrations, but once we get a tiny new feature in our server those can all be optional, and all the we need can be hosted on our server.

@strypey @benpate @klu9

We figure we don't need to replicate the chats to different servers, we just need to forward requests to the servers hosting the chat spaces that you've joined.

There's more technical details in this blog post and I'm always open to questions!

https://blog.muni.town/leaf-0-3-the-server-behind-roomy/

@benpate @klu9 @strypey

Leaf 0.3 - The Server Behind Roomy

For the last couple months we've been iterating on Roomy with its brand-new architecture, and we're finally ready to talk in more detail about the not-so-secret sauce that will power Roomy moving forward.

Muni Blog

@benpate @klu9 @strypey ATProto is used only for authentication, optional integrations, and optional backups.

We have our own somewhat generic event streaming server that we use for chat spaces, where each chat space could be migrated to another server without the permission of the current host.

It's "federated" in that each chat space will be able to be hosted on a different server and the client will still be able to join them all from the same app.

@jesseditson I just ran into your blog post about Rust singletons in WASM and wanted to share a crate that I've used in WASM gamedev that might be useful to you:

https://docs.rs/send_wrapper

It makes a type implement Send, but panics if you access it on another thread ( which will never happen in WASM ), and doesn't require any unsafe.

I didn't fully analyze if it'd fix all your issues, but still thought it'd be useful to know about if you haven't seen it already.

https://jesseditson.com/post/rust-singletons-in-a-service-worker

send_wrapper - Rust

This Rust library implements a wrapper type called `SendWrapper` which allows you to move around non-`Send` types between threads, as long as you access the contained value only from within the original thread. You also have to make sure that the wrapper is dropped from within the original thread. If any of these constraints is violated, a panic occurs. `SendWrapper<T>` implements `Send` and `Sync` for any type `T`.

@gray17 Awesome, thanks!!

One more question. Do you know if you can launch the game fine offline?

The device I want to put it on usually doesn't have internet access, and I've not used Steam for anything else yet, so not exactly sure if I'll be able to make it work or not.