dice.camp is one of the many independent Mastodon servers you can use to participate in the fediverse.
A Mastodon server for RPG folks to hang out and talk. Not owned by a billionaire.

Administered by:

Server stats:

1.8K
active users

#enigmatick

0 posts0 participants0 posts today
Justin Thomas<p><a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a>'s timeline retrieval performance was getting a little slow, so I spent some time optimizing my PostgreSQL queries yesterday. I was able to take the <code>EXPLAIN ANALYZE</code> loop from 17 seconds (an exaggeration of the actual experience in production of a delay of about 2 seconds) to 53ms. It was mostly down to a <code>JOIN</code> that employs a <code>JSONB_AGG</code> to pull in <code>Actor</code> records associated with an <code>Activity</code> to avoid having to make additional calls. The way I was matching against the <code>attributed_to</code> JSONB column was apparently slowing things down.</p><p>I also have some <a href="https://enigmatick.social/tags/Wasm" rel="nofollow noopener noreferrer" target="_blank">#Wasm</a> calls that proactively transform <a href="https://enigmatick.social/tags/E2EE" rel="nofollow noopener noreferrer" target="_blank">#E2EE</a> asymmetrically encrypted messages to symmetrically encrypted vault items. Those run on each load of the timeline, but I was able to use <code>spawn_local</code> to move the processing to a background task for timeline views that don't display encrypted content.</p>
Justin Thomas<p>Integrating the shared <code>jdt_activity_pub</code> <a href="https://enigmatick.social/tags/RustLang" rel="nofollow noopener noreferrer" target="_blank">#RustLang</a> crate used by the backend <a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a> server into the frontend <a href="https://enigmatick.social/tags/Wasm" rel="nofollow noopener noreferrer" target="_blank">#Wasm</a> component. Necessarily broke a couple of Vodozemac functions, but those will be replaced by <a href="https://enigmatick.social/tags/OpenMLS" rel="nofollow noopener noreferrer" target="_blank">#OpenMLS</a> shortly.</p>
Justin Thomas<p>I've become increasingly weary of the task of keeping my backend and <a href="https://enigmatick.social/tags/WASM" rel="nofollow noopener noreferrer" target="_blank">#WASM</a> structs aligned. So I decided to break <a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a>'s <a href="https://enigmatick.social/tags/ActivityPub" rel="nofollow noopener noreferrer" target="_blank">#ActivityPub</a> structs out into their own crate that I can use in both places. I have the <code>Inbox</code> and <code>Outbox</code> traits moved over into my core crate and just need to complete the removal of any dependencies on the data model structs.</p><p>Maybe this AP-focused crate can help other <a href="https://enigmatick.social/tags/Rust" rel="nofollow noopener noreferrer" target="_blank">#Rust</a> <a href="https://enigmatick.social/tags/Fediverse" rel="nofollow noopener noreferrer" target="_blank">#Fediverse</a> devs eventually.</p>
Justin Thomas<p>A beautiful thing about the <a href="https://enigmatick.social/tags/Fediverse" rel="nofollow noopener noreferrer" target="_blank">#Fediverse</a> is that you can interact with it however you want. If you want a dark interface with flashes of red, goldenrod, and blue - no one is going to stop you. And you want to do it all with <a href="https://enigmatick.social/tags/WASM" rel="nofollow noopener noreferrer" target="_blank">#WASM</a> in your browser? That's fine. And you want <a href="https://enigmatick.social/tags/E2EE" rel="nofollow noopener noreferrer" target="_blank">#E2EE</a>? Go for it. You want to do it with <a href="https://enigmatick.social/tags/SvelteKit" rel="nofollow noopener noreferrer" target="_blank">#SvelteKit</a> and <a href="https://enigmatick.social/tags/RustLang" rel="nofollow noopener noreferrer" target="_blank">#RustLang</a>? Fine. Whatever.</p><p>None of it is a trivial undertaking, of course. Although if you just want to interact with <a href="https://enigmatick.social/tags/ActivityPub" rel="nofollow noopener noreferrer" target="_blank">#ActivityPub</a> from a database (or <code>JSON</code> files) and <code>curl</code>, you could build something over a weekend (see my older <a href="https://enigmatick.social/tags/SofaPub" rel="nofollow noopener noreferrer" target="_blank">#SofaPub</a> code for an example).</p> <p>Threads and Bluesky really hold no interest for me. I exist on Threads solely so that I can be there in there event they actually do something interesting with ActivityPub integration (they're pretty damn slow about it, though). Until I can tell my non-technical friends on Threads to follow me here on <a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a> and they don't have to jump through a bunch of hoops, I'm skeptical. Bluesky… meh. </p>
Justin Thomas<p>I'm growing more confident in being able to use <a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a> on a day-to-day basis, so expect to see more <code>Follow</code> requests from my user account here.</p><p>I'll keep my <span class="h-card"><a href="https://ser.endipito.us/@justin" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@justin</a></span> account because it's always useful to have a Mastodon instance for testing. I won't be migrating as much as just duplicating. Hopefully that's okay with y'all.</p> <p>I do plan to figure out account migrations at some point because it doesn't look all that difficult. It's just not a priority for me right now.</p> <p>Re-establishing <code>sqlite</code> functionality is more in my sights. It looks like <code>JSONB</code> support has improved considerably since I did anything with it, so it may be easier than it was. The challenge I had before was managing two types of structs: one using <code>serde_json::Value</code> fields for Postgresql <code>JSONB</code> columns, and one using <code>String</code> fields for Sqlite <code>TEXT</code> columns. That's a real hassle; hopefully I can improve things.</p>
wakest ⁂<p>hey <span class="h-card" translate="no"><a href="https://enigmatick.social/@jdt" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>jdt</span></a></span>, I was just looking at an <a href="https://social.wake.st/tags/Enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Enigmatick</span></a> post that is federated onto mastodon.social, but when I try to search for posts by their enigmatick.social url nothing comes up on either on mastodon.social or my server. Have you not implemented WebFinger-able posts yet?</p>
Justin Thomas<p>Here I am, having another conversation with myself. This time, <a href="https://enigmatick.social/tags/E2EE" rel="nofollow noopener noreferrer" target="_blank">#E2EE</a>, invisibly to the participants (except that my <code>Compose</code> window still displays the content received from the server in the Reply To snippet).</p><p>A lot of little details around the management of Olm Account and Session data and mutations therein came together this evening. I expect there may be more to iron out (e.g., managing multiple one-sided messages in a conversation, etc.)</p> <p>I'm excited about the progress.</p> <p><a href="https://enigmatick.social/tags/Enigmatick" rel="nofollow noopener noreferrer" target="_blank">#Enigmatick</a> <a href="https://enigmatick.social/tags/ActivityPub" rel="nofollow noopener noreferrer" target="_blank">#ActivityPub</a> <a href="https://enigmatick.social/tags/RustLang" rel="nofollow noopener noreferrer" target="_blank">#RustLang</a> <a href="https://enigmatick.social/tags/Privacy" rel="nofollow noopener noreferrer" target="_blank">#Privacy</a> </p>
Justin Thomas 🛡<p><a href="https://ser.endipito.us/tags/Enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Enigmatick</span></a> <a href="https://ser.endipito.us/tags/E2EE" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>E2EE</span></a> posts in the UI and one of them in the database. I can't really tell which without digging in to the IDs because I can't decipher the content in the database!</p><p>The session initiation works for the sender and the receiver, and both sides successfully move the content into their respective (re-encrypted) vault items once decrypted using the Olm ratchet.</p><p>Next is to use the generated sessions directly to send messages bidirectionally.</p>
Justin Thomas 🛡<p>Installing an <a href="https://ser.endipito.us/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> server in about a minute.</p><p>Disclaimer: it's nowhere near feature complete. But it handles a lot of activities and can function as a basic communication platform right now. You'll see me often repost things from my Enigmatick account (<span class="h-card" translate="no"><a href="https://enigmatick.social/@jdt" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>jdt</span></a></span>). Mastodon is more capable, but I'm slowly transitioning as I build things out.</p><p><a href="https://ser.endipito.us/tags/Enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Enigmatick</span></a> <a href="https://ser.endipito.us/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a> <a href="https://ser.endipito.us/tags/Svelte" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Svelte</span></a></p>
Justin Thomas 🛡<p>Published <a href="https://ser.endipito.us/tags/SofaPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SofaPub</span></a> v0.1.8 with signature verification on inbox posts enabled.</p><p>One might argue that that is more than "minimally functional." But this CISO would tell them, "Donny, you're out of your element!"</p><p>The current function is crude: an Actor object is retrieved every time a post is submitted. I'll write something to cache those responses later.</p><p>The verify (and signing) routines are ported from <a href="https://ser.endipito.us/tags/Enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Enigmatick</span></a> and upgraded for v0.9.2 of the rsa crate.</p><p><a href="https://gitlab.com/justindthomas/sofapub/-/commit/5e1e19e73ae2ab46e2a96867a648535f4821f148" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitlab.com/justindthomas/sofap</span><span class="invisible">ub/-/commit/5e1e19e73ae2ab46e2a96867a648535f4821f148</span></a></p><p><a href="https://ser.endipito.us/tags/activitypub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>activitypub</span></a></p>
Justin Thomas 🛡<p>Thinking about how much functionality is captured and controlled in this neat little match section makes me unreasonably happy.</p><p><a href="https://ser.endipito.us/tags/rust" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rust</span></a> <a href="https://ser.endipito.us/tags/enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>enigmatick</span></a> <a href="https://ser.endipito.us/tags/activitypub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>activitypub</span></a></p>
Justin Thomas 🛡<p>Working on profiles and pulling in remote posts and followers in <a href="https://ser.endipito.us/tags/Enigmatick" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Enigmatick</span></a>. It's coming along nicely.</p><p><a href="https://gitlab.com/enigmatick" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">gitlab.com/enigmatick</span><span class="invisible"></span></a></p><p>I'll start moving over to my profile at enigmatick.social soon, now that I have image uploads, reposts, likes, etc. built out.</p><p>Very close to having usable Helm packages built. If you'd like to test those out, drop me a line. I'm also working on instructions for building a dev instance.</p><p><a href="https://ser.endipito.us/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a> <a href="https://ser.endipito.us/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://ser.endipito.us/tags/ActivityPubDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPubDev</span></a> <a href="https://ser.endipito.us/tags/MastoDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>MastoDev</span></a></p>