
Category: schwegler
personal posts
- 1
-
🐰
AI might tear the fabric of our society apart. But look at this bunny wearing a little hat! Read more →
AI might tear the fabric of our society apart. But look at this bunny wearing a little hat!
- 2

uncmaxxing: becoming playground equipment with dignity
being the fun uncle is mostly controlled irresponsibility, available attention, and discovering that your lower back has become deeply conservative. Read more →
there is a particular moment in adulthood when you realize you have become furniture.
not metaphorically. i mean a small child has looked at your back, performed several calculations involving leverage and the complete absence of fear, and decided you are now part of the climbing wall.
#uncmaxxing: apparently the final form of having a nephew is becoming playground equipment. children do not recognize personal space as a legal concept
my nephew Sam hanging off my back in the kitchen is not an unusual event so much as the natural outcome of being within grabbing distance. children do not ask whether you are prepared to become a ride. they simply begin boarding.
this is one of the stranger pleasures of being an uncle. parents have to maintain civilization. they are responsible for meals, bedtimes, school forms, shoes that have somehow vanished while still being inside the house, and the ongoing investigation into why everything is sticky. an uncle can arrive, make the situation louder, get climbed like a moderately stable tree, and then leave before anyone has to locate a matching pair of socks.
it is an excellent system, especially for the uncle.

Family play does not need an objective beyond everyone agreeing to the same small, temporary world. Photo by Bill Branson for the National Cancer Institute, via Wikimedia Commons. Public domain. the fun uncle is mostly controlled irresponsibility
people talk about being the “fun uncle” like it requires gifts, elaborate outings, or a convertible purchased during a manageable midlife crisis. mostly, it seems to require being willing to participate in whatever bit a child has started without immediately asking where the bit is going.
the answer is usually nowhere. this is the beauty of it.
adults are forever trying to make activities produce something. the walk should count as exercise. the hobby should become a side hustle. the photograph should be optimized for a platform. even relaxing has developed performance metrics. did you hydrate? did you practice mindfulness? did you extract the maximum restorative value from sitting completely still?
a kid will spend twenty minutes repeatedly falling off the same cushion because the fall made a funny noise once. this is a far more honest relationship with leisure.

Sometimes “being available” is simply treating a child’s current project like the important briefing it clearly is. Photo by Nenad Stojkovic, licensed CC BY 2.0. being remembered as available
i do not remember every toy I had as a child, and I definitely do not remember which adults bought most of them. I remember who was willing to get on the floor. I remember the adults who listened to an explanation that made no sense and responded as though I had presented a complicated but potentially viable infrastructure proposal.
that is probably the actual job. not performing childhood enthusiasm perfectly, but making room for it. being the adult who can be interrupted by a very urgent report about a bug, a cartoon, or an object found under the couch. being someone whose attention does not always have to be earned by doing something impressive.
it is easy to forget how much power adults have over the atmosphere in a room. we decide whether something is annoying, embarrassing, too loud, too weird, or worth joining. sometimes the kindest possible response is to accept that you have been assigned the role of mountain and crouch down a little so the smaller person can get a better grip.
uncmaxxing has terrible ergonomics
none of this means my spine has endorsed the arrangement.
being an uncle in your late thirties introduces a widening gap between your emotional willingness to roughhouse and your lower back’s deeply conservative interpretation of the same proposal. the child sees a beloved relative. the lumbar region sees an OSHA violation.
still, there are worse ways to discover that you are no longer young than having someone assume you are strong, safe, and probably willing to make a ridiculous noise when they climb aboard.
I can work with that.
originally inspired by a moment posted on Bluesky. The embedded photograph includes alt text on the source post.
- 2

god forbid a bitch own a weird little website
A personal site can still be a garden, junk drawer, clubhouse, and tiny act of resistance against the feed. Read more →
“god forbid a bitch name his blog whimsically”
i posted that as a joke, but it is also the entire operating theory behind tacobout.online
a personal website should have a name you have to explain. it should contain at least three subjects a growth consultant would beg you to split into separate brands. it should occasionally look like somebody opened a junk drawer and installed an rss feed in it
the vertical is a lie
platforms want a clean answer to “what do you post about?” because clean answers are easier to package. tech account. politics account. reality tv account. music account. gay little pop-culture account. choose a lane, feed the recommendation engine, become legible to the machine
but a person is not a vertical. a person is twenty-seven browser tabs, one of them playing audio from somewhere, three of them technically research, and at least one open because the headline made you mad six hours ago
in the space of two days this site went from Big Brother strategy pathology to an ATProto moderation tool, Geese marketing discourse, krishnacore, and an Avengers multiverse collision. that is not editorial confusion. that is what a brain looks like when nobody has forced it into a content calendar

The camera roll and the personal blog share a basic instinct: save the small, specific thing before the feed swallows it. the camera roll and the blog are cousins
this flower has been sitting in my IMG library for years. it does not have a discourse attached to it. it does not need a hot take, an affiliate link, or a call to action. i liked it enough to save it
that is still one of the best reasons to put anything on the internet
the camera roll says: this happened in front of me and i wanted another look. the personal blog says: this passed through my head and i wanted somewhere it would not immediately disappear. both are ways of refusing the feed’s insistence that whatever is newest is whatever matters
ownership is not the same thing as audience
Bluesky and Mastodon are better than most platforms at letting posts point outward. rss is still sitting there, unbothered and useful, waiting for everybody to remember it never asked an algorithm for permission. open protocols make it possible to build small, nosy tools when a social platform is missing exactly one fact you want to know
that is how i ended up building a client-side ATProto tool for checking which of your mutuals already block an account. sometimes a post explains a thought. sometimes a post has buttons and performs set intersection
Small tools are personal posts with inputs: a hyperfixation made clickable. none of that makes the domain a fortress. owning a site does not mean pretending the social web is beneath you; it means having a home to return to after visiting everybody else’s apartments
the feeds are where the conversation happens. the site is where the conversation gets furniture
the weird name is the point
there is no conversion funnel here. no promise that every post will reinforce a niche. the same person can care about open protocols, reality-show social strategy, queer pop culture, old songs, labor, games, movies, and whether the kitchen happens to be clean at the same time the pantry is full
that mess is not a failure to brand the self. it is the self
so yes, the blog is named tacobout.online. god forbid a bitch own a weird little corner of the internet and put a whimsical sign over the door
- 2
the art of the block: building an atproto tool for gut-checking your next block
A lightweight, client-side ATProto browser tool for Bluesky that lets you gut-check target accounts against your mutual followers and explore a moot… Read more →
There is a very specific gut-check that happens when you come across a chaotic account or bad-faith actor on your timeline. Before hitting the block button, you almost instinctively wonder: is it just me, or have my mutuals already blocked this person?
Naturally, as someone who spends entirely too much time thinking about social graph mechanics and relational data structures, I wanted a clean, reliable way to answer that question. I wanted to see which of my mutual followers (“moots”) are blocking a specific target account—and discover the broader moderation consensus across my network. To make that happen, I built a small tool.
Enter bsky-mutual-blocks: a lightweight, client-side browser app built on Bluesky and ATProto that lets you gut-check target accounts against your mutual follower network and explore a live moot block leaderboard.
bsky-mutual-blocks visualizes which mutual followers block a target account and ranks which moots have the most blocks from other moots. the beauty of open protocols (and why this works)
On traditional siloed platforms, analyzing moderation consensus across your social circle is essentially impossible. Data is locked behind proprietary servers, rate limits are punitive, and moderation actions are treated like state secrets.
Bluesky and the AT Protocol completely change the paradigm. Because user repositories on ATProto are publicly discoverable collections of structured, signed data—including
app.bsky.graph.blockand follow records—you don’t need privileged backend access to inspect public network topology.When you want to gut-check a target account, the client identifies your mutual followers (bidirectional follows) and crawls their public block records. If multiple people in your trusted circle have already created signed block records pointing at that target’s DID, that overlap is revealed through transparent, client-side set intersection.
Public signed records in ATProto repositories allow client-side set intersection to reveal which mutuals block a given account. how it’s built & what it actually does
I designed the app to be fast, privacy-preserving, zero-maintenance, and centered around two primary workflows:
1. target gut-check
Search any Bluesky handle or DID to see which of your mutual followers are currently blocking that account. It provides instant context before you block, follow, or reply, allowing you to leverage the collective moderation wisdom of your trusted network.
2. moot block leaderboard
Beyond individual lookups, the client can analyze your entire mutual graph to calculate which accounts hold the highest block counts across your moots, ranking network-wide block consensus in real-time.
pure browser OAuth (
@atproto/oauth-client-browser)Nobody should have to hand over app passwords or account credentials to third-party tools. Using ATProto’s official browser OAuth flow with public client metadata, authentication happens directly against your own PDS (Personal Data Server). The session token lives solely in your browser memory and is discarded when you disconnect.
Vite + Cloudflare Pages architecture
The entire project is built with TypeScript and bundled with Vite, deployed as a static application on Cloudflare Pages (
wrangler.jsonc). There is no backend server, no intermediary proxy, and no central database storing your social connections.Client-side architecture of bsky-mutual-blocks illustrating pure browser OAuth, batched block crawling, and the dual analysis pipeline. key technical takeaways
PDS Federation & DID Resolution: Translating user handles into persistent DIDs (via
plc.directoryor HTTPS DNS) and querying decentralized repositories requires robust fallback handling for custom domains, federated PDS hosts, and deleted accounts.Concurrent Batching & Rate Limits: Traversing block records across dozens or hundreds of mutual followers sequentially in the browser would quickly trigger AppView rate limits. Chunking requests into controlled concurrent batches keeps traversal fast while avoiding 429 throttling.
Client-Side Privacy by Default: Because all graph traversal and set comparisons execute locally in the user’s browser, there is zero risk of logging, tracking, or leaking who you search or who your mutuals block.
wrap-up
Building on ATProto highlights what makes open social protocols exciting: open schemas, verifiable user data, and the ability to build lightweight, single-purpose tools that empower users to understand their network dynamics on their own terms.
Check out the live tool at bsky-mutual-blocks.pages.dev, or inspect the open-source codebase on GitHub: schwegler/bsky-mutual-blocks.
- 2
wait, meth?
i will never not be taken aback from the meth part in ‘semi-charmed life’ Read more →
i will never not be taken aback from the meth part in ‘semi-charmed life’
-
caffiendish
more coffee in the afternoon, so i can have trouble sleeping, so i need more coffee tomorrow afternoon, so that i can… Read more →
more coffee in the afternoon, so i can have trouble sleeping, so i need more coffee tomorrow afternoon, so that i can have trouble sleeping
