Lazurite

I have been spending most of my lot of time on . The store-front work is such a pain but it makes sense. I've installed a lot of really awful apps over the years.

Working with to make atproto more accessible in the dart/flutter world, as atprotodart is largely unmaintained has been pretty cool. All of the new stuff is under the name poptart.

I'm in charge of handling bluesky's text & moderation client (codename blueberry & strawberry).

I've been chasing tons of auth bugs since publishing the first alpha. I'm working on a PDS for myself but might also use selfhosted.social to test auth from non-Mushroom PDSes. A lot of what I've dealt with recently has been malformed request bodies and race conditions. There's quite a bit happening in the background that is meant to keep the experience fluid but I didn't do a good job out of the gate with it.

Beacon

I hopped back into beacon (my insane python project), because I left it in a spot that was just...entirely unmaintainable.

Writing

Bookmarks and Annotations

I started working on a webview based browser app in flutter to do what hypothes.is + margin.at + semble.so do. It uses EasyList syntax (ublock style) for ad blocking because boy howdy was it annoying to deal with ads. It uses EasyList syntax (ublock style) for ad blocking because boy howdy was it annoying to deal with ads.

I made what started out as a little CLI to group highlights and build a markdown file with Rust that collects all notes. It builds toml frontmatter based on the page's metadata, then between horizontal rules, takes the note's metadata and puts the highlight in a quote block.

+++
title = "E.W. Dijkstra Archive: On the cruelty of really teaching computing science (EWD 1036)"
source = "https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html"
updated = "2026-05-09T17:13:45Z"
+++

- uri: at://did:plc:xg2vq45muivyy3xwatcehspu/at.margin.note/3mlgkjvsrry2x
- cid: bafyreieuy6du2lzx44i4csgfnsibdpjjrrnq7tkdwbobiuv2mvbtgmq6ce
- created: 2026-05-09T15:25:28Z

> The usual way in which we plan today for tomorrow is in yesterday's vocabulary.

My Blog

I Updated my personal website to explicitly handle leaflet documents from the desertthunder.leaflet.pub publication.

I'm still thinking through how I want to handle updates to this blog (i.e. new posts) and deploying them to desertthunder.dev on cloudflare automatically. I'm leaning towards a cron job or something. I had some annoying issues with the update to rolldown-vite (v8) not being able to parse the og-image and decided to pin the dependency versions. It's shocking that this hadn't come up before for me.

My Garden

I added a garden page about golden tests if you're interested! Not much to say about it other than...check it out! There are a few new pages on flutter and dart too.

Experiments

Gremlin

I started a project called gremlin, which is inspired by two things

  1. 1.

    This amazing post by , I basically start thorough research into a topic with gippity-5.

  2. 2.

    wrote this kind post about me

So I decided to make a little agent that:

  • takes a topic and makes requests to html.duckduckgo.com/html

  • opens links and reads them

  • produces succinct notes (200-ish LoC tops, 80ch width, GFM footnote citations)

Next up on the agenda for this is to publish a static site with the notes it generates. It'll do this just by putting the markdown in a notes directory and committing and pushing to an autodeployed (via GH actions) SvelteKit project.

It's a bit of a disparate set of subsystems right now between a little chat UI and json IPC between the backend for the chat and the agent itself (stores context in jsonl logs and embeddings in sqlite). I'm not sure if I want to orchestrate the systems in any efficient way or just leave them as is on my mac mini.

Constellation

When I can, I've been thinking through my self-hosted mirror of constellation codenamed protonflux that'll run on a Fedora 44 machine (my NUC). My biggest hesitation is that I've never self-hosted anything that has been public so this has been nerve-wracking and fun at the same time.


Thanks for reading!