Software engineer (and more) on a mission to bring fun back to the web. Builds https://bobaboard.com/ and https://fujocoded.com/ plus a bunch of other random, chaotically-delightful stuff – Support our mission: https://www.patreon.com/fujocoded
Hello! I'm Ms Boba, and I'm a software dev + fandom person who really 💜s the web.
Check out some of the projects I founded in the links below 👇, and help us help niche online communities take back their internet by supporting us on Patreon!
The Whole Pie™: https://www.fujocoded.com (@fujocoded)
Community Software: https://www.bobaboard.com (@bobaboard)
…and if you're curious about coding, the web, or just want to hang out while I build random stuff, come say hi on Twitch Mondays and Thursdays at 3PM Pacific!
Folks, time for a so-called Request For Comments: I wrote a proposal to split badge declaration and badge appearance lexicons to better meet the needs and workflows of badge lovers everywhere!
Find the full post on the ATproto community forum or read below 👇
(I swear you don't need to know a lot about tech to comment)
As promised to @ngerakines.me, here’s a more formal proposal for “badge appearance”. This is not the complete proposal yet: I need to write
Why do this [the skippable technical part]
tl;dr: badges currently use their name for both identification (the name of the badge) and title (what's written on top). Because of how PDSes works, changing badge details creates a new version of its record, which means badge awards now refer to a old one whose content cannot be easily verified.
To change this, I propose we split and invert the relationship: instead of "embedding" appearance inside, badges definitions point to a separate appearance record, which can be more easily evolved and tweaked without invalidating the original definition.
With this, we can focus our true goal: letting people display cool-looking badges on their personal pages, and enable endless customization. 👀
👉 Defining "Badge Appearance" [The part where I want help]
In particular, I'd like to start with 2 types of badges: icon + title + color (like atmosphereconf.org's) and more classic image badges (like @fujowebdev's).
The idea is to let people keep it simple or go as wild as they want with their badge display: leave it at title, or add a color and an emoji, or harness the full expressive power of pixel badges and beyond—same experience as the old web, now with decentralized cryptographic signatures 😈 2026, baby!
The display rules are "simple":
If there's an image, use the image
If not, use title + color + icon (can be letters or emojis or an image to be shown alongside the rest)
if there's no appearance, just use name + description, like today.
Also, last but not least, a "url" field points to where to learn more about the badge itself/its context.
(SIDE NOTE: @fujowebdev's badge description says, "Some people would do anything for catboys, even learn version control". The screenshot doesn't let it be read in its full glory, but I won't let my beautiful work of art be hidden like that.)
...and that's it (for now)! I want to go way wilder, but this feels ok to start.
I have a few open questions 👇👀 open to all for input! Please do tear this apart, express both wishes and confusion, and let us know if you'd use and support this!
Comments here are welcome for the super-low-friction experience, but remember: the Discourse forum is open to all, and you can log in with your Atmosphere account, the same you use for Bluesky!
The last social account you'll ever need. One account for all your apps.
Thank you for your attention and input 💖
Extra points: boost the thread so others can see it and comment 🙏👇
Streaming more Guestbook work NOW! Today—a day in which, full disclosure, the coding Gods HAVE NOT been smiling upon me—we'll try something new: connecting the guestbook to happyview.dev to solve all our AppView woes once and forever.
After some grueling CI debugging + an intense week of "social posted through whole April 1st campaign, time to code 18hrs/day to recover", let's show off our updates to:
📈 remark-capitalize-titles ⇒ auto-capitalize your markdown titles
🌐 astro-atproto-loader ⇒ easily load ATproto records in Astro
🔓 authproto ⇒ easy ATproto authentication for Astro sites
...and most importantly....
🦡 atproto-badges ⇒ publish and verify badges on ATproto
The Updates
"@fujocoded/remark-capitalize-titles" solves Non-fiction Writers' #1 Woe: remembering how to capitalize titles. Luckily, this plugin (easy to add to most SSGs) capitalizes all markdown titles for you!
Featuring: fixes to a few @fujowebdev Issue 2 rewrite annoyances (news soon 👀)
"@fujocoded/astro-atproto-loader" loads collections from any ATproto PDS into BOTH static or live content collections, and lets you easily remix data like your streams, posts, or badges (wink wink) in your Astro sites!
New: aggregate from multiple PDSes, limit the pages it fetches, and better TypeScript typings (important)!
"@fujocoded/authproto" needs no intro: want to login (and let others login) to your Astro site? Ask people permission to update their ATproto data? Never been easier!
Now with fixes to post-auth redirects, better examples, a "shipping it" section, and more flexible local ports!
And last, the first step in FujoCoded's Badge Granting Online Takeover: "@fujocoded/atproto-badges" is the newest&shiniest TS library to create, grant and verify badges on ATproto!
✨ As seen on atmosphereconf.org ✨ developers can use this to Officially Certify™...literally anything.
Big thank you to ngerakines.me for examples & guidance!
"atproto-badges" is currently for developers (with an as-simple-as-I-could-write-it README), but we'll be making it easy to use...including with just-drop-it-in-your-site code! 👇
("are you also gonna do an Astro integr—" OF COURSE WE ARE)
...and this is all for now! Come chat about all this and more with @essential-randomness as she streams in... "just enough time to figure out what I actually want/have to get done".
See you on Twitch & Stream.place 💖
Thank you all for coming to the stream yesterday 💖 here's the (finally working!!) https://rpg.actor/ sprite embedded in an Astro site!
Check out (literally and figuratively 👀) the code 👇🖼️ and install the patched up (oops) library 👉 https://npmx.dev/package/@fujocoded/astro-atproto-loader/v/0.2.1
✨featuring https://bmann.ca/ 's spritesona✨
To see (and try) the full code, head to the example on GitHub!
After some grueling CI debugging + an intense week of "social posted through whole April 1st campaign, time to code 18hrs/day to recover", let's show off our updates to:
📈 remark-capitalize-titles ⇒ auto-capitalize your markdown titles
🌐 astro-atproto-loader ⇒ easily load ATproto records in Astro
🔓 authproto ⇒ easy ATproto authentication for Astro sites
...and most importantly....
🦡 atproto-badges ⇒ publish and verify badges on ATproto
The Updates
"@fujocoded/remark-capitalize-titles" solves Non-fiction Writers' #1 Woe: remembering how to capitalize titles. Luckily, this plugin (easy to add to most SSGs) capitalizes all markdown titles for you!
Featuring: fixes to a few @fujowebdev Issue 2 rewrite annoyances (news soon 👀)
"@fujocoded/astro-atproto-loader" loads collections from any ATproto PDS into BOTH static or live content collections, and lets you easily remix data like your streams, posts, or badges (wink wink) in your Astro sites!
New: aggregate from multiple PDSes, limit the pages it fetches, and better TypeScript typings (important)!
"@fujocoded/authproto" needs no intro: want to login (and let others login) to your Astro site? Ask people permission to update their ATproto data? Never been easier!
Now with fixes to post-auth redirects, better examples, a "shipping it" section, and more flexible local ports!
And last, the first step in FujoCoded's Badge Granting Online Takeover: "@fujocoded/atproto-badges" is the newest&shiniest TS library to create, grant and verify badges on ATproto!
✨ As seen on atmosphereconf.org ✨ developers can use this to Officially Certify™...literally anything.
Big thank you to ngerakines.me for examples & guidance!
"atproto-badges" is currently for developers (with an as-simple-as-I-could-write-it README), but we'll be making it easy to use...including with just-drop-it-in-your-site code! 👇
("are you also gonna do an Astro integr—" OF COURSE WE ARE)
...and this is all for now! Come chat about all this and more with @essential-randomness as she streams in... "just enough time to figure out what I actually want/have to get done".
See you on Twitch & Stream.place 💖
Fuck it, no idea what I'll do yet, but time to stream! Might work on integrating the new badge library 👆 with Astro because... why do ANYTHING ELSE when the perfect project is right there?
Have you ever spent 1 hours debugging a CI issue because you were like "oh this field surely cannot be case sensitive, I foresee no issue at all typing it all lowercase—"
Thank you folks for coming to the stream, despite the late time! I'll be trying to get back into the habit of doing them now things have gotten less hectic.
In the meantime, yesterday resulted in 2 PRs against the official bluesky-social/atproto repo! Thanks for your support during debugging 💪💖
Folks, with like 15 minutes to go, WE'VE OFFICIALLY UNLOCKED ALL STRETCH GOALS!
Thank you so much, from the bottom of our 💖 Fujo Heart 💖 for showing up to support us for yet another wild (but totally serious) April 1st fundraiser.
Now, we're supposed to close this off, but between all the chaos and last-minute up and downs, this ended up way too close to @essential-randomness's celebratory "I can't believe this is finally over" massage, which means she literally won't have time to close the store off. So sad!
Let's do this: get the notes to 50k and we'll keep the store open until after we get to do a proper send off tomorrow!!
Go here!! Get those notes up (and buy askfujo!)
Is this the proper way to run events like this? maybe not. But—in the very appropriate Tumblr spirit—please consider:
A super cool, old-school WEBSITE BADGE for your collection...or the one you'll soon start!
Want to prove you're a true Fujo of Culture™? Do it with an official badge, cryptographically certified by yours truly!
Enroll here 🎓
What's a "cryptographically certified" badge? Imagine that not only you have a badge on your site, but ANYONE ONLINE could go and verify that you—yes, YOU! 🫵—are the rightful owner?
No stealing someone else's badge!
Bonus: if you have an Atmosphere account* it'll be YOURS forever! On any site!
Get badge'd in! 🎓
*Never heard of Atmosphere accounts? Learn more here 👇
tl;dr: if you use bluesky, or leaflet, or blacksky, or pckt, or MANY MORE you already have one!
The last social account you'll ever need. One account for all your apps.
...and now it can feature an Official Fujo University Graduate™ badge!
But only if we get 5 more enrollees!!
Go go go 🎓 fujo badges are just a few clicks away!!! 🎓
Having access to the dev environment I can see the actual linear graph of the clicks and not the P95 one that's world-visible (or the launch spike would have made all other activity invisible)
Anyway, look at that spike 👀 and go help! 4 to go!!
Cheat code: the easiest way to enroll is by far scrolling down the site and clicking every post. Takes 1 minute!
And remember: if you want the badge but have no friends to drag in, just call @fujocoded's aid, we'll boost your call!! Fujos stand together!!
Click the posts here 👇
40 questions to put the "ship" in "friendship"! A card game about OTPs, blorbos, fanworks, and everything that makes fandom life worth livin
A super cool, old-school WEBSITE BADGE for your collection...or the one you'll soon start!
Want to prove you're a true Fujo of Culture™? Do it with an official badge, cryptographically certified by yours truly!
Enroll here 🎓
What's a "cryptographically certified" badge? Imagine that not only you have a badge on your site, but ANYONE ONLINE could go and verify that you—yes, YOU! 🫵—are the rightful owner?
No stealing someone else's badge!
Bonus: if you have an Atmosphere account* it'll be YOURS forever! On any site!
Get badge'd in! 🎓
*Never heard of Atmosphere accounts? Learn more here 👇
tl;dr: if you use bluesky, or leaflet, or blacksky, or pckt, or MANY MORE you already have one!
The last social account you'll ever need. One account for all your apps.
...and now it can feature an Official Fujo University Graduate™ badge!
But only if we get 5 more enrollees!!
Go go go 🎓 fujo badges are just a few clicks away!!! 🎓
24 hours officially left for #AskFujo preorders! 🎓
And with the final hours, comes our final stretch goal:
💦✨ an exclusive, preorder-only, one-of-a-kind holographic "pee your pants" card ✨💦
15 more boxes—just 5 full sets!—to make it real.
Sold? Buy AskFujo here 👈🛍️
Perplexed? Read down!👇👀🧵
Don't know what AskFujo is (or the cultural significance of "pee your pants")?
First, welcome to our ✨world✨!
You know that feeling when a question you're DYING to answer lights up your inbox? We put that in a real, physical (or digital) box—AskFujo, our card game!
It's a card-based party game for learning about your friends, their blorbos, and their fanworks. 40 cards in the base game. PLUS two expansion packs, each with 36 new questions:
🌐 Browserland: fanworks, ships & the web
💻 Localhost: blorbos IRL and your hottest takes
Hottest takes...a.k.a. the "anon hate" set!
DON'T TAKE THE BAIT, fujin! …or DO, we're among friends 😈
Anyway, nothing says "Tumblr anon hate" quite like a single, well-placed "pee your pants" ask. A testament to the...colorful culture of the platform.
So we made it holo. Because we CAN.
Bonus: every box sold funds the indie fandom web. Humor > hate, etc.
15 boxes. 24 hours. Let's end this with a squi—
…no. SOME dignity left.
Sike! Squirt away, fujin! Let's make ✨holo "pee your pants"✨ real! GO GO GO!!
40 questions to put the "ship" in "friendship"! A card game about OTPs, blorbos, fanworks, and everything that makes fandom life worth livin
24 hours officially left for #AskFujo preorders! 🎓
And with the final hours, comes our final stretch goal:
💦✨ an exclusive, preorder-only, one-of-a-kind holographic "pee your pants" card ✨💦
15 more boxes—just 5 full sets!—to make it real.
Sold? Buy AskFujo here 👈🛍️
Perplexed? Read down!👇👀🧵
Don't know what AskFujo is (or the cultural significance of "pee your pants")?
First, welcome to our ✨world✨!
You know that feeling when a question you're DYING to answer lights up your inbox? We put that in a real, physical (or digital) box—AskFujo, our card game!
It's a card-based party game for learning about your friends, their blorbos, and their fanworks. 40 cards in the base game. PLUS two expansion packs, each with 36 new questions:
🌐 Browserland: fanworks, ships & the web
💻 Localhost: blorbos IRL and your hottest takes
Hottest takes...a.k.a. the "anon hate" set!
DON'T TAKE THE BAIT, fujin! …or DO, we're among friends 😈
Anyway, nothing says "Tumblr anon hate" quite like a single, well-placed "pee your pants" ask. A testament to the...colorful culture of the platform.
So we made it holo. Because we CAN.
Bonus: every box sold funds the indie fandom web. Humor > hate, etc.
15 boxes. 24 hours. Let's end this with a squi—
…no. SOME dignity left.
Sike! Squirt away, fujin! Let's make ✨holo "pee your pants"✨ real! GO GO GO!!
40 questions to put the "ship" in "friendship"! A card game about OTPs, blorbos, fanworks, and everything that makes fandom life worth livin
24 hours officially left for #AskFujo preorders! 🎓
And with the final hours, comes our final stretch goal:
💦✨ an exclusive, preorder-only, one-of-a-kind holographic "pee your pants" card ✨💦
15 more boxes—just 5 full sets!—to make it real.
Sold? Buy AskFujo here 👈🛍️
Perplexed? Read down!👇👀🧵
Don't know what AskFujo is (or the cultural significance of "pee your pants")?
First, welcome to our ✨world✨!
You know that feeling when a question you're DYING to answer lights up your inbox? We put that in a real, physical (or digital) box—AskFujo, our card game!
It's a card-based party game for learning about your friends, their blorbos, and their fanworks. 40 cards in the base game. PLUS two expansion packs, each with 36 new questions:
🌐 Browserland: fanworks, ships & the web
💻 Localhost: blorbos IRL and your hottest takes
Hottest takes...a.k.a. the "anon hate" set!
DON'T TAKE THE BAIT, fujin! …or DO, we're among friends 😈
Anyway, nothing says "Tumblr anon hate" quite like a single, well-placed "pee your pants" ask. A testament to the...colorful culture of the platform.
So we made it holo. Because we CAN.
Bonus: every box sold funds the indie fandom web. Humor > hate, etc.
15 boxes. 24 hours. Let's end this with a squi—
…no. SOME dignity left.
Sike! Squirt away, fujin! Let's make ✨holo "pee your pants"✨ real! GO GO GO!!
40 questions to put the "ship" in "friendship"! A card game about OTPs, blorbos, fanworks, and everything that makes fandom life worth livin
Folks, we're almost there!! With 6 hours left, we need to sell JUST ONE ASKBOX to unlock the famed, the prized, the ONE AND ONLY "pee your pants" card ✨💦
Go make it (and all the expansions) yours 👀🛍️👏
Need a reminder of all we unlocked? Check out our graphic 👇 or the "everything together" section of our store!