Sign in

NON-TOXICNo ads · No shady algorithms

iiinova is part of the Atmosphere — an open, public network where you own your identity.

Kshitij

@haroldadmin.com
76 followers 139 following 41 posts

Software Engineer | @atproto-browser.dev | @attrails.app blog.haroldadmin.com

PostsRepliesMedia
Kshitij @haroldadmin.com · 4h
This looks very cool! Glad to see a lot of ATProto users want projects like this :)
000 0
Kshitij @haroldadmin.com · 4h
More like AllTrails, less like Strava. Not planning to add workout tracking features, but never say never!
100 1
Kshitij @haroldadmin.com · 4h
Thanks for flagging the Brave issue, investigating...
000 0
Kshitij @haroldadmin.com · 25/10/2026
Fun fact: this site runs _entirely_ on my humble homelab! Who says ATProto appviews have to be resource intensive?
040 4
Kshitij @haroldadmin.com · 25/10/2026
Fun project I've been working on the side for a couple of months now. I quite like cycling, but I hate that I need to sign up for Strava/Komoot just to be able to share routes. In the spirit of rewilding the internet with ATProto, I figured why not build an open alternative? www.attrails.app
attrails.app
ATTrails
Discover and share cycling, running, and hiking routes on the open social web.
3417 41
Kshitij @haroldadmin.com · 23/10/2026
(am aware of the atproto docs on the topic, More interested in your experience running the moderation stack)
001 1
Kshitij @haroldadmin.com · 23/10/2026
For those who build and maintain ATProto apps, how are you doing moderation?
110 1
Reposted by Kshitij
ATProto London • Bluesky social events in London, UK @atproto.london · 13/10/2026
Our autumn event will be on Monday, 9 November at Newspeak House in Shoreditch. So far we have @aendra.com talking about her @moji.blue project; if you'd like to do a 10-15 minute talk at our event, please get in touch! luma.com/f86ebld5
luma.com
ATProto London November · Luma
Curious about how Bluesky is different from other social network websites? Interested in building cool stuff using atproto, the underlying technology powering…
0136 13
Kshitij @haroldadmin.com · 12/10/2026
Turns out the native Github stacked PRs only track up to 10 PRs in the web UI. Any other PR in the stack is only viewable in the CLI
000 0
Kshitij @haroldadmin.com · 06/09/2026
It makes so much sense now
screenshot of a text editor with a suggestion to replace "ATProto" with "Taproot"
000 0
Kshitij @haroldadmin.com · 31/08/2026
Finally found some time this weekend to add some long overdue features: oauth, better record UX, and the ability to delete records. Next on the list: ability to create and update existing records. No ETA on support for ATProto spaces yet, but it's on my mind :)
000 0
Kshitij @haroldadmin.com · 04/08/2026
Another win for protocols over platforms
000 0
Kshitij @haroldadmin.com · 04/08/2026
I thought it was a freemium app at this point - if you don’t pay, the experience is unusable. Sounds like paying doesn’t change things either!
000 0
Kshitij @haroldadmin.com · 04/08/2026
Can confirm that it works well now, i can see my PDS contains site.standard.document records for each post. Thanks for fixing this so quickly!
110 1
Kshitij @haroldadmin.com · 03/08/2026
interestingly enough, no site.standard.document records yet, i'll look into it tonight.
200 2
Kshitij @haroldadmin.com · 03/08/2026
@annot.at is a delightful project ✨
annot.at
annot.at
annot.at watches your RSS feed and publishes every new post to atproto using the standard.site lexicon, so readers across Leaflet, pckt.blog, Offprint, and any other ATmosphere reader can find it.
020 2
Kshitij @haroldadmin.com · 03/08/2026
Very sensible, thank you for the help. Everything seems to be published now.
100 1
Kshitij @haroldadmin.com · 02/08/2026
@jola.dev i can't seem to publish from my site on annot.at "publish" is disabled, and "publish all" seems to not do anything. Anything I could be doing wrong? Thanks!
130 3
Reposted by Kshitij
ATProto London • Bluesky social events in London, UK @atproto.london · 13/07/2026
We'll be back at Newspeak House's beautiful covered terrace on 30 July for our second annual summer drinks social. No talks or presentations, just lovely drinks and chats with people in the community. RSVP here! luma.com/42emvbsy
luma.com
atproto.london summer drinks · Luma
Curious about how Bluesky is different from other social network websites? Interested in building cool stuff using atproto, the underlying technology powering…
12311 23
Kshitij @haroldadmin.com · 05/03/2026
Note that this feed includes the full article contents, not just links or previews
An RSS feed reader application showing posts from my blog
000 0
Kshitij @haroldadmin.com · 05/03/2026
I got nostalgic for RSS feeds, and then I realised I don't have one on my blog. Glaring omission, I know, but I've just fixed it. You can now consume the stuff I write through a /rss.xml feed (/atom.xml works too!) blog.haroldadmin.com/rss.xml
blog.haroldadmin.com
Blog | Kshitij Chauhan
A blog about programming and technology.
110 1
Kshitij @haroldadmin.com · 03/03/2026
Wrote down the lessons I've learned after working at Let's Do This for the last three and a half years. Hope it is useful to everyone! blog.haroldadmin.com/posts/lesson...
blog.haroldadmin.com
Lessons from Let's Do This
After three and a half years at Let's Do This, it is time to introspect and record my learnings before I move on to a different role.
000 0
Kshitij @haroldadmin.com · 16/11/2025
This looks awesome! Do you know if a recording of the talk will be available to watch online?
100 1
Kshitij @haroldadmin.com · 15/11/2025
TIL you can inspect and modify the AST of code highlighted with Shiki!
000 0
Kshitij @haroldadmin.com · 10/11/2025
Ever wondered why your ATProto public key looks the way it does? Here's an explainer! blog.haroldadmin.com/posts/intros... #atproto
blog.haroldadmin.com
Introspecting Public Keys in ATProto | haroldadmin
A closer look at the self-describing structure of public keys in ATProto.
091 9
Reposted by Kshitij
ATProto Browser @atproto-browser.dev · 05/11/2025
Just shipped: ability to list blobs in a repository! When inspecting a data repository in ATProto Browser, you can now also see a list of blobs in that repo.
A list of blobs in an ATProto data repository
031 3
Kshitij @haroldadmin.com · 26/05/2025
Definitely Nextra, as I’m already deep into the Next.js ecosystem. Site looks great, has built in search with Pagefind, great internationalisation support too.
010 1
Kshitij @haroldadmin.com · 24/05/2025
Turning up the sampling to 100% makes this so fun to use
050 5
Reposted by Kshitij
ATProto Browser @atproto-browser.dev · 22/05/2025
Just shipped: Syntax highlighting for records! We've integrated Shiki for server-side syntax highlighting on the records page. When looking at the raw JSON data for a record, you should now get beautiful, semantically highlighted text.
Screenshot of atproto-browser.dev profile in the app
021 2
Kshitij @haroldadmin.com · 20/04/2025
I also wrote a plugin to help you run remote MCP servers over a Fastify app! github.com/haroldadmin/...
github.com
GitHub - haroldadmin/fastify-mcp: Run Model Context Protocol servers using Fastify
Run Model Context Protocol servers using Fastify. Contribute to haroldadmin/fastify-mcp development by creating an account on GitHub.
010 1
Kshitij @haroldadmin.com · 20/04/2025
Been meaning to write this one for a while now. blog.haroldadmin.com/posts/brief-...
blog.haroldadmin.com
A Brief Introduction to the Model Context Protocol
A high level overview of the Model Context Protocol
100 1
Kshitij @haroldadmin.com · 12/12/2024
Wrote something about handling backpressure in Web Sockets using the Streams API. blog.haroldadmin.com/posts/backpr...
blog.haroldadmin.com
Backpressure in WebSockets using Web Streams
The WebSocket API does not support backpressure. The Web Streams API does. Wouldn't it be great if we could use them together?
011 1
Kshitij @haroldadmin.com · 10/12/2024
Interesting idea! The feed is built on top of Jetstream which does not support filtering on regexes. However, it shouldn’t be too hard to support this client side. I’ll see what I can do 😊
110 1
Reposted by Kshitij
ATProto Browser @atproto-browser.dev · 09/12/2024
Just shipped: Ability to view DID documents alongside a user's collections. This was a sorely missing feature from ATProto Browser so far. You can now see a nicely formatted DID document for the user in that app, as well as the raw JSON version. www.atproto-browser.dev
DID document support in ATProto Browser
021 2
Kshitij @haroldadmin.com · 07/12/2024
The idea of the project is based on this, yep!
010 1
Kshitij @haroldadmin.com · 07/12/2024
I've setup @atproto-browser.dev to post updates on development -- which is also the new domain for the app ✨ www.atproto-browser.dev
atproto-browser.dev
ATProto Browser
Experimental browser for the Atmosphere
130 3
Kshitij @haroldadmin.com · 05/12/2024
I might add support for specifying a custom sampling rate in the future, as well as increasing the number of posts buffered in memory. In the meantime, feel free to look around the code on Github github.com/haroldadmin/...
github.com
GitHub - haroldadmin/atproto-browser: Browser for files stored on the ATProto network
Browser for files stored on the ATProto network. Contribute to haroldadmin/atproto-browser development by creating an account on GitHub.
020 2
Kshitij @haroldadmin.com · 05/12/2024
At the end of the pipeline is a Writable Stream, which is just fake wrapper around something that a React component can subscribe to. The Feed component takes care of buffering the latest posts in memory, and discards the rest. GC is great, isn't it?
100 1
Kshitij @haroldadmin.com · 05/12/2024
The pipeline roughly looks like this: Web Socket -> Readable Stream -> Transforms -> Writable Stream. This lets me use the built-in backpressure support in web streams, but I also sample incoming updates to keep things running smoothly.
110 1
Kshitij @haroldadmin.com · 05/12/2024
Jetstream's Web Socket API emits hundreds of updates every second -- enough to overwhelm the browser if not managed carefully. Unfortunately, there is no standard way to solve backpressure in Web Sockets on the browser. The feed solves this by using a Web Streams layer.
100 1
Kshitij @haroldadmin.com · 05/12/2024
While this might look similar to Firesky.tv, the technical implementation is very different. ATProto Browser uses a fully client-side feed built on top of Bluesky's Jetstream project - no polling required! More details in 🧵
firesky.tv
Firesky
Watch every Bluesky post in real-time – filter the firehose
100 1
Kshitij @haroldadmin.com · 05/12/2024
If you like a live scrolling list of Bluesky posts from around the world, here is something for you. I've just shipped an update to my open source ATProto Browser that shows a live feed of Bluesky posts from the firehose. Try it and let me know what you think! atproto-browser.haroldadmin.com
351 5
Kshitij @haroldadmin.com · 02/12/2024
That is weird. Will investigate.
110 1
Kshitij @haroldadmin.com · 01/12/2024
Also shout out to pdsls.dev!
pdsls.dev
PDSls
Browse AtProto repositories
020 2
Kshitij @haroldadmin.com · 01/12/2024
I know, i know, this is yet another atproto browser. I built it as a way to learn more about the protocol itself, and it was quite a fun exercise. The source code for OG atproto browser was very useful when I couldn't figure something out on my own.
110 1
Kshitij @haroldadmin.com · 01/12/2024
ATProto is fascinating, and I built a tool to explore the data stored on it. Give it a go and let me know what you think! atproto-browser.haroldadmin.com
atproto-browser.haroldadmin.com
ATProto Browser
Experimental browser for the Atmosphere
240 4