Here We Go

First dev log of the year! The consistency with which I was working on these has fallen off quite a bit. I don't want to shake these up too much as I don't get a ton of feedback on them but what I would like to do is talk a little bit about how I use tooling on my development machines. I've largely avoided talking about AI powered tools for a while because I've felt that I don't have consistent workflows with them but recently I've started to solidify and iterate on how I use what I've got. A lot of this is inspired by Mitchell Hashimoto's article on how he iterates and works with AI.

Vibing a Non-Trivial Ghostty Feature

I recently shipped a non-trivial Ghostty feature (unobtrusive macOS automatic updates) that was largely developed with AI.

The crux of what I've done so far this year (weird to say only four days in), is working on my three atproto projects. I'm surprised it took me this long. I've got a lot of love for the community I'm finding on BlueSky and if it wasn't obvious, I think Leaflet is pretty awesome. The initial responses and feedback that my friends have given be about Malfestio have been really nice, and yesterday I was inspired to pick flutter back up to build a BlueSky client for Android. Cool thing about cross platform tools like that is that I can make an iOS app too.

Malfestio

This project has been trucking along! The last bit of work I've done on this has been article/lecture import, combining five filters' site rules /heuristics with a port of Readability in Rust. There are crates that do reimplement Readability but I like the specificity and cleanup of using specific selectors. Currently the feature creates a markdown note from article text (I'm considering a reader view instead of going straight to notes).

I've also been working on supporting document import. It uses pdf related crates to extract text and also build a note. Docx support is in progress.

When I originally thought through this project, I'd thought of it as a an atproto language learning app (as an less unhinged Duolingo). The only things remaining so far is a crazy owl and flashcards. Following v0.1 I'll reassess curation of notes and learning.

One of the most shocking things about working on this has been how fun Solidjs is to work with because I really thought it would be just like React but with signals. It's really not. Reactivity is intuitive and I find that its easier to organize my code in a way that's manageable. Svelte remains my #1 but Solid is cool. Plus the Show and For components are great!

If you have any feature requests, open an issue or reach out on bluesky @desertthunder.dev !

issues

learn and share notes on atproto (wip) 🦉

Lazurite

I've got two places to start when discussing this project:

First that it was inspired by this post:

Personally the BlueSky app works fine on my Pixel BUT, I think there are a lot of really awesome web clients with extra features that would work super well on mobile. For me the big one is being able to download videos.

Second is that mobile development is extremely challenging for me. I've worked on a few flutter apps, remaining largely unfinished. The big one is a mobile app for Volkara.

Volkara

Comprehensive productivity application with task management, time tracking, and decision-making tools.

I always hit a roadblock that consists of frustrating test failures and layout rules that I can't seem to wrestle with. I hit a bit of a snag earlier today when working on rendering feeds and managing authentication state. The solution I found was pretty interesting. Basically the application creates a loopback server to handle the callback from logging in with OAuth through bluesky. It was pretty fun to work through. Now I'm trying to wrangle with persisting and maintaining authentication state. LLM assistants are largely useless (which is quite refreshing), so I've been debugging the old fashioned way. Not much else to say yet. I've only just started this!

Feature requests and contributions welcome!!

desertthunder.dev/lazurite

mobile bluesky app made with flutter