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!
Today was an important meeting of the "ATmospheric Groups/Communities Working Group" about Moderation and I had some (...a lot...) of thoughts about what the question actually means and how to answer it which were hard to express coherently in the moment.
tl;dr: STREAM TIME AGAIN (finally 🎉)!! 👇
https://twitch.tv/essentialrandom
https://stream.place/essentialrandom.bsky.social
Fair warning: when I went to write down my thoughts trying to make them more "linear" and "sensible" (and "understandable", I ended up with an even longer/more complex picture than discussed initially 😂 I think it's fair though, because... well, it is. But no spoilers!
Starting in 10m or so...as soon as I feel I understand what I'm gonna say and how we're going to discuss it together!!
Today was an important meeting of the "ATmospheric Groups/Communities Working Group" about Moderation and I had some (...a lot...) of thoughts about what the question actually means and how to answer it which were hard to express coherently in the moment.
tl;dr: STREAM TIME AGAIN (finally 🎉)!! 👇
https://twitch.tv/essentialrandom
https://stream.place/essentialrandom.bsky.social
Fair warning: when I went to write down my thoughts trying to make them more "linear" and "sensible" (and "understandable", I ended up with an even longer/more complex picture than discussed initially 😂 I think it's fair though, because... well, it is. But no spoilers!
Starting in 10m or so...as soon as I feel I understand what I'm gonna say and how we're going to discuss it together!!
You may have noticed I didn't do my "write on socials daily to fight comms burnout" post yesterday. I do have many things to write cause many are being done, I just cannot muster the executive function to do that instead doing ""the work"". "failed step (day) 2", as they say
Ironically, this ends up with me procrastinating on both just out of not wanting to do the posting.
"Just don't do the posting then" ok but
a) I have a company to run which has people who'd like to know that the company is doing things (it is)
b) I also need to put my work out there, so...
Literally, girls will be like "[thing we're doing] may be a lot of work, but it's a great and legible match for our mission, and we really must start making our impact visible" and then not talk about [thing we're doing] so she can keep absorbing infinite work without ""cashing it in""
Sorry, complaints only today, but I figured "go and complain" would count as a post so... 😌 take that, procrastination! I win!
...Right?
(also, there is a solution at the horizon, which is "we'll be soon hiring someone to do ongoing company social comms in my place," just gotta get there)
ok, fine, obligatory meme:
(clears throat) you've heard of "building in public", now get ready for..."complaining in public" 🔥🐶✨🔥
I've been in a bit (lot) of a funk with touching socials at all, so I've postponed releasing new @fujocoded plugins "until I have the strength to post about the release"... and postponed....
tl;dr: the list keeps growing and it keeps getting worse 😭 (but I will I swear) (eventually)
"average developer releases 10000 plugins a year, factoid actualy just statistical error. average developer releases 1 plugins per year. Ms Boba, who lives in cave—" etc. etc.
jokes aside, I burned out pretty severely on social posting after this latest April 1st campaign, but I'm slowly trying to come out of it/set things up so I don't have to write 1000 social comms again... it just takes time.
But exciting news soon! (written by someone else 🎉) (yay)
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:
Ms. Boba @essential-randomness - Tumblr Blog | Tumgag