Sign in

johanna

@jola.dev
1.7K followers 247 following 399 posts

Software engineer, speaker, tinkerer. I write at jola.dev and I work on larm.dev. she/her Elixir is pretty cool If you like my work, consider supporting me at github.com/sponsors/joladev or ko-fi.com/joladev

PostsRepliesMedia
johanna @jola.dev · 12h
I’ve been using omlx on the same MacBook. Qwen 3.8 27B is incredibly slow but output is decent, can’t fit much more than a 128K context window though. 3.6 35b a3b 4bit is noticeably less capable but soooo fast
030
johanna @jola.dev · 20h
The many many sins
040
Reposted by johanna
Lewis @oyster.cafe · 20h
teamwork makes the dreamwork
test: introduce test jail to hide lewis' sins
845eee12
jola.dev
4 days ago
3716
johanna @jola.dev · 28/09/2026
Oh, and think about what you're trying to accomplish. Is the goal just to churn out code and features, or is the goal to build a community of people that discuss and collaborate? The two are in direct conflict.
120
johanna @jola.dev · 28/09/2026
PR descriptions that explain _why_ you're doing something opens the door for a much more interesting conversations than ones that just say _what_ or that are empty. For the same reason, never let LLMs write the description.
110
johanna @jola.dev · 27/09/2026
I guess we could tag `:main` or something as a moving tag for the latest version, but it's not impossible that that can be broken at any given time as stuff gets merged. Even then, there's nothing that gets your app to restart and pull latest, you'd still have to do that yourself
110
johanna @jola.dev · 27/09/2026
oooh, I don't think container registries generally support that use case, they're primarily designed around you asking for a specific version. You could set up a workflow to fetch latest tranquil git commit sha on man and then try pulling the image for it
110
johanna @jola.dev · 27/09/2026
When submitting interesting blog posts to shelf.cafe you can now click the little button to fetch the title for you, cause who has time for typing anyway
010
johanna @jola.dev · 27/09/2026
Tranquil PDS now pushes builds to container registry on merge to main, in case you want to grab a recent ref and live dangerously tangled.org/tranquil.far...
181
johanna @jola.dev · 27/09/2026
Is the video game Lylat Wars based on the movie Independence Day?
000
Reposted by johanna
shelf.cafe @shelf.cafe · 26/09/2026
shelf.cafe now renders your profile picture if available, piggy-backing on Bluesky's CDN. Long-term it would be nice to have a self-hosted image blob CDN. Note that we do not depend on Bluesky for fetching the profile and all a Bluesky outage can cause is for the fallback image to be displayed!
031
Reposted by johanna
fig (aka:[phil]) @bad-example.com · 23/09/2026
PART TWO: All the other reasons i don't like CARs for atproto repo exports! In this one: ambiguities and inefficiencies. (the biggest problem is already hopefully getting fixed in the IETF draft though, yay!)
data-service-diaries.pckt.blog
War on CARs: the rest of it
Part 2: streaming struggles, bad blocks, worthless weight, and superfluous structure in Content Addressable aRchives
6538
johanna @jola.dev · 22/09/2026
I work for incident.io if you're looking for alternatives, happy to chat!
360
johanna @jola.dev · 22/09/2026
In that case the source code might be better yeah haha
010
johanna @jola.dev · 22/09/2026
Reading the source code instead of reading the docs often means the model suggests solutions and answers questions based on internal details that are subject to change, instead of the implicit public API of what the author chose to document and "guide" you towards
120
johanna @jola.dev · 22/09/2026
I assume it depends on harness/model, but I think they're trying to avoid it because more and more websites block their traffic, so training the model to read the code instead is lower friction
110
johanna @jola.dev · 22/09/2026
I’ve been thinking a lot about what are almost like dark patterns in LLMs that make them much harder to use for learning about coding than they need to be. They’re designed around taking action, and it can be hard to get them to just support in you in learning jola.dev/posts/ai-ant...
jola.dev
AI is antithetical to learning
LLM agents can write a lot of code for you very fast, but they also take away opportunities to learn and grow.
1335
johanna @jola.dev · 21/09/2026
Okay, one more! Kite now supports zstd compression. It fetches the latest dictionary on startup, seamlessly handles dictionary updates, and it works without any new dependencies, instead relying on the OTP 28 `:zstd` module tangled.org/jola.dev/kite
tangled.org
jola.dev/kite
An Elixir atproto Jetstream V2 subscriber library
0110
johanna @jola.dev · 21/09/2026
When I migrated to tranquil I noticed that two blobs were missing from my `listBlobs`. After going down a deep rabbit hole and making two big PRs, after upgrading to latest tranquil I now have my two blobs back!
0170
johanna @jola.dev · 21/09/2026
Aggressive application of mutes, blocks, and labelers, and it’s not bad
010
Reposted by johanna
SDK.blue @sdk.blue · 20/09/2026
Added project: kite by @jola.dev (Elixir 🧪, tags: firehose)
tangled.org
jola.dev/kite
An Elixir atproto Jetstream V2 subscriber library
042
Reposted by johanna
Tranquil PDS @tranquil.farm · 20/09/2026
The even more interesting (for us) part is that with this update we are also expanding the maintainer team to officially include @jola.dev !! We are very excited to have her on board for the shenanigans! Lastly we've seen an upshot in community contributions and we are very thankful for that! :3
0412
Reposted by johanna
Tranquil PDS @tranquil.farm · 20/09/2026
So we don't usually make version update posts but this is a bit of a special one. We just released v0.6.7 which in and of itself isn't immensely interesting, it's a very bug fix heavy release just like v0.6.6. A lot of those bug fixes should fix compatibility with some apps namely Colibri. But ...
10527
johanna @jola.dev · 20/09/2026
You can now define multiple endpoints to subscribe to. If it fails to connect it fails over to the next one. Since Kite uses timestamp cursors, with the rewind failover "just works".
000
johanna @jola.dev · 20/09/2026
It's not easy to blaze trails, really appreciate the things you contribute to the community!
111
johanna @jola.dev · 20/09/2026
The recent jetstream v2 east downtime encouraged me to implement failover for my Elixir subscriber library. On @calabro.io's recommendation I switched to timestamps for live subscriptions, and I added a little rewind when switching between instances to handle clock skew tangled.org/jola.dev/kite
tangled.org
jola.dev/kite
An Elixir atproto Jetstream V2 subscriber library
2140
johanna @jola.dev · 20/09/2026
Also you're doing archive replay after the 10s rewind, you can just pass the rewound timestamp and go from there. And it looks like if you don't configure an API key it will just fail to rewind and skip to live?
110
johanna @jola.dev · 20/09/2026
Thank you for the library link, I did look at it when I implemented failover for Kite. I think you can simplify it a bit. Timestamps are valid cursors, you don't need to translate them to seq to failover normal live subscriptions
120
johanna @jola.dev · 20/09/2026
I understand the reasons for wanting a lot of work to be client side and relying heavily on the PDS, but it's not a great user experience when your website downloads 25MB of data just to render some shitposts. The atproto community could do with caring more about performance and bandwidth
030
johanna @jola.dev · 20/09/2026
You standing up for what you believe is appreciated. It means so much to so many people.
090
johanna @jola.dev · 20/09/2026
Yeah, I’m thinking of kind of steady state subscribing to live or near live data, not during a backfill. My assumption was that the sequential cursor was the default mechanism and timestamp more of a fallback. Timestamp being recommended makes failover easier!
121
johanna @jola.dev · 20/09/2026
Do you mean use timestamp based cursors over seq in general, or just for the cutover?
120
Reposted by johanna
danielroe @danielroe.dev · 19/09/2026
don't be nice.
roe.dev
Don't be nice
Sometimes, it's more important to be good than it is to be nice.
41734246
johanna @jola.dev · 19/09/2026
Yes please!
000
johanna @jola.dev · 19/09/2026
You can pry the “I think” from my cold dead hands. I think.
030
johanna @jola.dev · 18/09/2026
Screenshot from the move the Matrix where Cyrus tells Neo about not seeing the code anymore
1152
johanna @jola.dev · 18/09/2026
hmm, that shows it as up? I haven't received a single event from it since 10pm BST last night, and any attempts to connect to it now returns 503
110
johanna @jola.dev · 18/09/2026
I guess the next feature I add is automatically falling back to the other jetstream...
120
johanna @jola.dev · 18/09/2026
If you've got Elixir on your machine, you can try staring straight into the sun with this script that prints the unfiltered jetstream straight into your terminal, using tangled.org/jola.dev/kite tangled.org/strings/did:...
tangled.org
stare_into_the_jetstream.ex · by jola.dev
A quick demo script that subscribes to the jetstream and prints all events live
3161
johanna @jola.dev · 18/09/2026
ironically `jetstream.us-east.bsky.network.` is returning 503 for me right now
110
johanna @jola.dev · 18/09/2026
I've extracted an Elixir Jetstream V2 library from @shelf.cafe. Define multiple subscribers, filter on collections and dids, keep track of cursors. All the good stuff! Makes it trivial to connect to the live data stream for atproto in #ElixirLang. Check it out! tangled.org/jola.dev/kite/
tangled.org
jola.dev/kite
An Elixir atproto Jetstream V2 subscriber library
1293
johanna @jola.dev · 18/09/2026
Sounds like it doesn’t need a lot of resources but a generous bandwidth allowance would be nice? I haven’t run anything in OVH yet, most of my stuff is on Hetzner. How’s the experience/reliability etc?
110
johanna @jola.dev · 18/09/2026
Have you decided what you’re moving to?
120
johanna @jola.dev · 17/09/2026
Hopefully the session going stale shouldn't happen anymore. Let me know if you see it again!
110
johanna @jola.dev · 17/09/2026
Your latest RSS feed entry has a category that's just an empty string, which my parser wasn't handling. Fix is rolling out now tangled.org/jola.dev/ann...
tangled.org
Handle RSS feeds with empty categories · jola.dev/annot.at@d1a1c03
annot.at is a service for syncing static websites, such as blogs, to atproto and standard.site
120
johanna @jola.dev · 17/09/2026
Oh I spoke too soon, I found the issue! Fix incoming
200
johanna @jola.dev · 17/09/2026
Hmm, I just tried a publish and it worked. Could you try logging out and in again, just in case it's related to the session. I've seen issues in the past and I thought I fixed them, but worth a try
100
johanna @jola.dev · 17/09/2026
Agreed! Standardization is really hard and even where it works it might not have the result you’re actually looking for. Lots of lexicons is more fun
050
Reposted by johanna
Macro Mayhem @macromayhem.fm · 17/09/2026
🎙️ Just published a new episode of Macro Mayhem: 005 - OTP Security Releases, ElixirConf US, and Goatmire Badges. Have a listen:
share.transistor.fm
005 - OTP Security Releases, ElixirConf US, and Goatmire Badges
We recap ElixirConf US in Chicago, unveil this year's AtomVM-powered...
095
johanna @jola.dev · 16/09/2026
010