Open to new opportunities! If you know of any senior eng / fullstack roles (remote or PNW based), especially in the open source / decentralized tech space, shoot me a DM!
10+ years fullstack, currently building on #atproto, check out @grain.social
Posts by Nick The Sick
What is an Atmosphere account? An Atmosphere account is your personal identity on the Atmosphere. Think of it as a digital passport that you truly own, not locked to any single app or company. Use it across multiple apps Your Atmosphere account works with the Bluesky Social App and any other social apps built on the same network. Just like you can use the same email address to sign into different websites, your Atmosphere account lets you sign into different social apps while keeping the same identity, connections, and content. When you see options to log in with an Atmosphere account or "internet handle" on other apps, you can use your existing account nickthesick.com instead of creating a new one. What makes it special The key difference: your data isn't trapped in any one app. Unlike traditional social media accounts, where your data belongs to the platform, with an Atmosphere account you genuinely own your identity and data: You own your identity: Your username (handle) and permanent ID belong to you Your data is portable: Posts, follows, and content live in your personal data storage, not locked in an app's database You can move freely: Switch hosting providers without losing your followers, posts, or connections. This also lets you choose a provider in your country if it matters where your data is stored. Multiple apps, one identity: Use the same account across different apps built on the same network This website: your account control center The website you're on right now is your account management hub. Here you can: Update your email address and password Manage your personal data and security settings View and manage active sessions across devices (browsers where you're signed in) This place is where you control the fundamental aspects of your Atmosphere identity, independently of any app-specific details like the profile you have on the Bluesky social app. Your Atmosphere account is currently hosted by bluesky.nickthe…
Oh, it gets better!
Screenshot of the account admin interface of the official PDS distributed by Bluesky
Bluesky has spoken!
It's official "Atmosphere account", now we can stop bike-shedding
Actually a really simple way to know that you’ve actually translated everything
A screenshot of a "customized" PDS environment, where the only thing different from the default sign in screen is that the word "sign in", and the sign in button are yellow now
Thanks for showing me!
But, I'm sorry, but this is not nearly enough to make a cohesive experience:
I'll see about making some PRs to make this better, but as far as I see it, this is pretty hard coded at this point because of how tailwind works
How would I go about retheming this? I don’t see anything in the repo: github.com/bluesky-soci...
I guess I could just reverse proxy the css file instead.
Yea I’m okay with the different domain, the jarring part is mostly the theme and it feeling like it’s part of the app.
Reason being that I find the experience of creating an account with OAuth prompt create to be jarring for user experience. It doesn’t look like my app. Is made on a different domain.
It makes it feel sketchy whereas if I could, I would hide it all behind bookhive.buzz instead of bookhive.social
I ran into this with @bookhive.buzz and bookhive.social. I want for the experience to be purely created through bookhive. But to get an OAuth token I have to redirect the user.
I have the feeling that I’d have to make bookhive.social into a custom PDS that can give people this normal password exp.
vibekanban.com/blog/shutdown
Vibe Kanban was really nice. I do wish that I could have everything under a single tool. Kanban is such a nice format
I wonder whether @horusiath.bsky.social has any ideas on whether this is a useful abstraction to have in Yrs, or somehow around the library?
Yea, to specify this in a way which is concurrently editable is not so easy, it'd have to be more like an inode in a filesystem.
So, more like Map<docId, state vector> and something separately manages the directory layout
I can speak from the @bookhive.buzz side, Popfeed is able to read bookhive records. But if you interact with them, it’s stored as Popfeed records.
Here is a Popfeed record for example: pds.ls/at://did:plc...
Yep this is where they are posted from my understanding.
Seems like we had a similar idea for syncing Yjs over a PDS: bsky.app/profile/nick...
Yours seems more about multiple devices of the same user
Oh but then in this case the documents aren’t stored as YDocs are they? It’d just be the raw content so they’d be overwrites no?
I’ve not had to do a whole folder of documents. But I imagine it to be not that different from an individual document. Each document would have a state vector (Map<number, number>) so a folder of documents could just be sending a Map<path, state vector>. And then from there you could do sync-step-2
I normally organize all of the screws in exact layout I found them. But, as soon as I realize I’m not going to be able to put it back together I stop even organizing and make sure that I can never put it back together.
I don’t want the hope
I even type with proper capitalization and full sentences. I probably waste so much time, but it’s the only way I write.
I text like this too. Always full sentences…. I always feel weird talking to someone who texts like they are using a T9 and I’m here writing an English essay.
The hero we all need
Cool, sounds interesting. I see you’ve got Yjs in there. I built @teleportal.tools and it is a sync server based on Y.js. If you run into anything, feel free to reach out
Oh man, I have 2 E-inks and you are making me want another one...
Sounds cool. What are you working on?
Cool, never looked into how those work to know!
What a neat idea! AST grep looks super powerful.
I wonder if there could be a registry of these codemods
I love when claude confidently declares that it has the full picture, it always reminds me that he absolutely does not have the full picture
For reference, I just turned on cloudflare caching on the site March 27 (in hope of caching images) and apparently I was getting 10k requests a day.
Now, almost all requests are under 1s (P95+) and most are under 175ms (P75+)!
It's crazy what some optimization work can do, worth it!
Love to see my interests converging like that!
Thanks for the details!
I've been thinking of a very similar sort of structure, things just get complicated once you start adding requirements like "an alert's title cannot have bold, but can be italic" and "an alert body can have any block, except images". But, maybe that is a future problem
One question as someone who works on a very similar thing, blocknotejs.org
Do you handle a block with nested rich content. Like let’s say an alert that has both a title and a body which are both themselves rich text? Your spec doesn’t seem to mention this case and assumes things are flat
If we run into issues again, the next step is to migrate away from the in-memory SQLite (~1gb right now!) to Postgres, which should offload the processing of requests out of the JS main thread. I really didn't want to have to do this, because I believe SQLite can scale way more, but I may have to