Roscoe Rubin-Rottenberg
@knotbin.com
2.5K followers 1.8K following 2.8K posts
engineer, 15, brooklyn macrodata refinement @sprk.so, prev. lsd.so
Posts Media Videos Starter Packs
Pinned
knotbin.com
So happy to finally introduce a super cool tool I made for @sprk.so:
Airport ✈️
It makes AT Protocol migrations between PDS servers available to anyone with a simple web interface.

Check it out at atpairport.com
Star it on Github at github.com/knotbin/airport
Airport
Airport is an AT Protocol PDS Migration Tool that allows you to seamlessly migrate your account from one PDS to another.
atpairport.com
knotbin.com
but the fact that THIS is the complaint that i have and it has ~no effect on ux speaks to how polished tangled already is. yall are amazing.
knotbin.com
@tangled.org it would be nice if the sh.tangled.repo records have the rkey of the name of the repo that way its much easier to connect the tangled url to the at uri, and it ensures each person can only have one repo of a certain name
knotbin.com
Yes you’re right ES Standard APIs are included in web standards but not the other way around so I should have said web standards
knotbin.com
Ryan Dahl has litterally said js code should run on all runtimes, and that you shouldn’t write for Deno you should just write JS.
knotbin.com
This is literally why Deno exists. Their whole thing is using JS standard apis instead of node-specific or Deno-specific ones. If you actually try it you might find it’s working towards exactly what you’re describing.
knotbin.com
JSR attempts to address this by being a fully open source registry. They allow packages published to it to have npm dependencies.
knotbin.com
It’s all npm. They all use npm. That’s the registry. The npm cli built into node is not what I’m talking about. That’s open source.
knotbin.com
Worth noting that npm is fully closed source and owned by Microsoft. Tbh that’s a much bigger problem than MIT licensed code being VC backed.
knotbin.com
Node is objectively showing its age. Not using Deno or bun is turning down free speed & efficiency. Deno also provides security and otel built in.
Both are VC backed. If you’d like to fork Deno and form a non-profit around maintaining it, you’re free to do so. It’s fully MIT licensed :)
knotbin.com
from the deno perspective, its a win-win. as atproto spreads, use of deno will spread as well. what you see as a downside could actually be seen as our rising tide lifting another great boat. and tbf, there is MUCH bigger atproto friction than having to run an install script.
knotbin.com
yeah as you said there's a lot of overlap. im finding even a sizable amount of the deno community is very familiar with atproto. while i completely understand your point about it adding friction by mixing two small technologies, thats seeing it from the atproto perspective only.
knotbin.com
i'll definitely be changing this for jsr.io/@atp/lex-cli before i give it a non-alpha release.
knotbin.com
no i get it. its doesn't fit with the rest of the imports in a file
knotbin.com
i think that's where lpm comes in. it lets you do exactly that.
knotbin.com
yeah i tried to do that at least in the imports but it was more of a once-over of what sucked and was relatively easy to fix than a restructuring.
knotbin.com
These are great! Idk if you could remove zod from the equation but i'll definitely think about these. Ive never really thought about that as being ugly but i definitely see it
knotbin.com
i'm not sure ive reached a conclusion but the main necessities are
- a source of truth of lexicon that allows it to be imported everywhere without duplicate regeneration
- to be able to change the lexicon inside projects that import it
- a way to push lexicon changes and a synchronization system
knotbin.com
@tom.sherman.is's amazing lpm and your typelex definitely got me thinking about a fundamental shift in how lexicon-writing and lex-gen works.
knotbin.com
my lexgen already fully passes the default deno lint (stricter than eslint) and i removed all but one of the "@ts-ignore"s so its all real. in each lexicon type things like blobrefs are only imported if theyre used. but these are all incremental improvements.
knotbin.com
the biggest change from the bluesky @atproto libs is that xrpc-server uses hono instead of express.
that was a change made out of incompatibility/necessity. many of the rest were out of principle/best practices.
also a lot of the deps on the atproto libs were like seven versions behind lol
knotbin.com
um...inconvenient time but im working on this lol
suite of web standards-based atproto libraries based on the original @atproto packages.
jsr.io/@atp

I chose JSR because the publishing experience is just so much better. And deno is great
knotbin.com
why not just use deno? you only need to directly interact with deno in the installation if you just add an alias with --name and you can still use it for node projects. idk what the issue is.