Chad
banner
chadtmiller.com
Chad
@chadtmiller.com
software engineer, atproto hacking

Building @grain.social and @slices.network

grain profile: https://grain.social/profile/chadtmiller.com
we should just commit our prompts, that’s the real code these days
January 10, 2026 at 3:29 AM
hear me out, a PDS proxy/mirror that copies my data to all the different PDS implementations and allows me log in with all the available auth patterns
January 9, 2026 at 7:10 PM
what if i put a pds on pdsjs.dev so if you mistype pdsls.dev you get a pds.js pds.
pdsjs.dev
January 9, 2026 at 1:16 AM
added this lil scopes table and better scopes support to pds.js

we're at 5,324 lines
and ~27.5 KB gzipped deployed
January 8, 2026 at 11:53 PM
a cool feature of the comment model in @grain.social is being able to comment on a particular photo in a gallery, something a lot of other social apps don’t have @goose.art 📸
January 8, 2026 at 7:08 PM
If anyone wants to try the next version of @grain.social, kind of just letting it simmer on next.grain.social for a bit. it's basically peak quickslice, all views are hydrated via graphql (favs, comments, follows, etc). no complicated lexicon view defs. notifications, create moderation reports, etc
January 8, 2026 at 5:23 PM
pds.js oauth coming in hot

bringing back the single .js

zero deps besides cloudflare worker stuff

still ironing out stuff (and very basic scopes support) but it works on @pdsls.dev
January 8, 2026 at 2:48 AM
pretty awesome, pds.js already getting used for hacking on new patterns
s/o @chadtmiller.com for being a mad lad w pds.js which i forked and extended w xrpc endpoints to impl an inbox (maybe this is reasonable? not sure)

then deployed 2 of these modded PDSes as cf workers:
pds-message-demo.nate-8fe.workers.dev
pds-message-demo-2.nate-8fe.workers.dev
January 7, 2026 at 7:23 PM
things you say when working on a PDS
gah I think it's the CID
January 7, 2026 at 2:17 AM
anyone working on a custom PDS have trouble with the bsky cdn loading blobs? @mk.gg are you able to create a bsky post with images yet with your custom pds and see them load correctly?
January 7, 2026 at 1:03 AM
i think i waited too long to give cloudflare workers/R2 a try, the tooling anyways is really nice to work with, and easy to mock locally
January 7, 2026 at 12:11 AM
serious question: is anyone hiring? open to connecting. 10+ years of full stack experience plus 1 year of unhinged ai/atproto hacking
January 6, 2026 at 9:52 PM
it would be cool to do a gallery show with all the different PDS homepages. #atmosphereconf idea
January 6, 2026 at 8:08 PM
what have i done
lol you can literally just edit your PDS in a single file
January 6, 2026 at 6:26 PM
inspired by cirrus, had this idea the other day that maybe you could do a plain js PDS with zero dependencies (i don't want all the hono, third party atproto lib stuff). a few thousand lines of js later and here were are! bsky.app/profile/chad...
January 6, 2026 at 5:24 PM
pushed a change to quickslice-client-js this morning and now you can be logged into multiple apps on the same domain ie my tools.slices.network setup all scoped to their respective oauth scopes. pretty rad. build your own atproto app universe with quickslice(s).
Tools
tools.slices.network
December 20, 2025 at 9:13 PM
was listening to KXLU FM on radio.garden today and really wanted to scrobble some tracks to @teal.fm so I made this new tooooool

tools.slices.network/teal-scrobble
December 20, 2025 at 12:23 AM
really enjoying tools.slices.network experiments. write directly to an html file, no build tools, deploy to CDN. it's great for lexicon exploration because you don't have to commit to a domain, just use your subdomain. in a few hours i made a fully functional AT bug app!

tangled.org/slices.netwo...
December 19, 2025 at 6:13 PM
there's already been some exploration in this space with constellation backed components, but playing around with the same idea for quickslice based web-components. as long as you have an instance deployed with the correct domain authority/namespace and lexicon set, anyone can host their own.
December 19, 2025 at 4:29 PM
wow this worked?? quickslice is in the atmosphere now I guess
@atcr.io
December 18, 2025 at 10:30 PM
really need a jsDelivr for @tangled.org
December 18, 2025 at 9:45 PM
@baileytownsend.dev found an interesting problem! I was noticing that your profile doesn't sync in quickslice based on the current app.bsky.actor.profile lexicon description constraints. popped your record into tools.slices.network/lexicon-validator and sure enough it fails! lol
December 18, 2025 at 7:47 PM
made this while I was drinking coffee this morning

tools.slices.network/tangled-repos

originally made this a while back with some earlier versions of slices but moving it's proper home in the tools library
December 18, 2025 at 5:44 PM
exactly
Observation: AppView Diversity.

@chadtmiller.com argues the "internet handle scandal" is a symptom of AppView scarcity.

We need more apps. AppViews are complex, but tools like Slices (@slices.network) are lowering the barrier.

https://bsky.app/profile/chadtmiller.com/post/3mabksqilsk25
December 18, 2025 at 5:27 PM
I pushed out a fix for this and it seems to be working so far. If you’re running a quickslice instance just redeploy or set your version to 0.17.4. Check the bug tracker for the latest updates 🐛 tools.slices.network/bugs. You can now leave comments/attachments as well.
quickslicers! tracking this issue where you get an error if you try to create a mutation after being logged in for a while. hopefully have a fix ready soon

tools.slices.network/bugs?ns=netw...
🐛 Bug Tracker
tools.slices.network
December 18, 2025 at 4:40 PM