Category: schwegler

personal posts

  • 1

    september, finally

    Read more →

    a hand holding Starbucks brand Pumpkin Spice Creamer
    a hand holding Starbucks brand Pumpkin Spice Creamer
  • 🐰

    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

    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.

    : 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.

    Two adults and two children sit around a coffee table playing a board game together.
    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.

    An adult and child sit together at a table while the child draws with colored pencils.
    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

    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”

    god forbid a bitch name his blog whimsically

    schweg, (@schwegler.lol) 2026-08-29T21:00:42.603Z

    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

    Close photograph of a pale pink hibiscus bloom and unopened bud against green leaves and a brick wall.
    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

    Modern flat vector illustration showing bsky-mutual-blocks: gut-checking target accounts against mutual followers and ranking the most-blocked mutuals among your moots on ATProto.
    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

    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.

    Modern flat vector illustration showing bsky-mutual-blocks: gut-checking target accounts against mutual followers and ranking the most-blocked mutuals among your moots on ATProto.
    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.block and 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.

    Flat vector graphic showing ATProto public repository traversal for checking which mutual followers block a target account versus legacy platform data silos.
    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.

    Architecture diagram showing browser OAuth flow, batched ATProto graph traversal, target gut-checking, and moot block leaderboard calculation.
    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.directory or 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.

  • shit

    forgot to go to bed 2 hours ago 🙁 Read more →

    forgot to go to bed 2 hours ago 🙁

  • 2
    my month in hell

    my month in hell

    note: this was written and published on my old blog, originally on 7/7/2023 I never have and never will be big on… Read more →

    note: this was written and published on my old blog, originally on 7/7/2023

    I never have and never will be big on social media. I don’t really have that look, that joke hit rate, or that charisma. But I finally found a comfy little section to live in. Until it was burned down. For the second time.

    On January 25th, I thought I had met the man of my dreams–on Tumblr of all places. From that day until May 31st, we talked each and every day. We said we didn’t have time for an LTR thing right now, but I just ignored it and let some feelings develop. We had a romantic weekend in March and I thought it went well. Two months later, I was basically ghosted.

    So, feeling like an unfuckable monster, I moped around the net for a bit. Then, I get hit up by a former coworker and all around great guy, James, to see if I’d like a Blue Sky invite. I knew the service, sure. Any coworker of mine over the years knows I have an illogical love for Pyra Labs. From Blogger to Odeo, on down. So, I snatched it up.

    June 1st, I hit the BlueSky app.

    I started hearing from parts of the app about “What’s Hot Classic” and something called a “Hellthread.” I was intrigued.

    Neat!

    So, I dip into the Hellthread feed for a couple days. Liking some skeets (posts, for future reference) here and there. Then I see a Legal Aid post chain, where you show some skin to try and boost asks for people in need. This particular section of the chain was a cuddly edition. And I actually had a pic I didn’t hate that looked cuddly I had sent to a Tumblr boy a few months earlier.

    I copy and paste the info, attach the photo and… That was my entry into Hellthread. Instantly, my notifications broke. The app that barely functions on Android, became nigh unusable.

    The smidge of positive feedback I got went a long way and encouraged me to stick around. I interacted a bit and then moved the thread. But it kept drawing me back. A chaotic energy. But one that was almost all an unabashed hype machine.

    A few people kept getting into spats. But that’s just kinda group dynamics for you.

    What solidified things for me was when a person in the thread posted a lewd photo of themselves and a creepy dude just would not let up. A user named Kana swoops in and starts going on about this creepy guy’s shittable beard. And then more users join in. Until the creep fucking retreats. Like magic.

    Listen. I’m the kind of person who sobs at genuine acts of kindness. I’m a movie if someone is just really fucking nice? I’m sobbing. Read into that what you want.

    But, in this moment of utter chaos with people telling this man how shittable his beard was, I choked up in the same way.

    Personalities start to arise around the thread the more I get used to people and their little avatars. Any distinct personality type you could make fun of a millennial for having is there. And in the best way possible.

    There are some awesome people who stand out to me. A couple of globetrotters. A UK contingent that’s close to my heart. One of the coolest counselors I’ve ever met. A badass stoner on a stoop. A bee, a blossom, a Jay. And a guy who I think is so cool it’s hard to envision why he’s always my most interacted-with account.

    Jokes were made. Fights were had. But mostly, we vibed and boosted each other up while doing dumb spur-of-the-moment photo challenges and creating deep lore-based inside jokes.

    The first fight I witnessed was when someone commented too thirstily on an ace person’s post. Fair.

    The second fight, ended with the author of the original post Hellthread all lived under rage-deleting it in a hope it would kill the thread after her friend came out of nowhere to defend an app dev from someone asking him to post dick in a half-joking manner. In reality, it was just extending an existing beef from a week prior. But with the added visibility, more people dog piled and ignored that first part. Ending with the great deletion–when the author of the first post in Hellthread deleted it.

    The great deletion did shit-all, by the way. Ends up there is only one surefire way to kill the thread: unless it. Though, I have a feeling in hindsight the lead dev, Paul, really wanted this to actually kill it.

    Further spats happened, and depending who you are you view them as big or small. People have spats, I grew up in a large southern family–I could take it. I respect those who left or blocked and their reasoning. But, I had the most drama-prone mother on the planet. 

    Paul, the lead dev on BlueSky, started his latest heel turn around this time. He’s truly a shithead too flippant to be the public face of anything. Banning suicidal ideation posts. Possibly preventing people from getting the help they’re shouting for. (I was once one of those people, too).

    But, each time there was a spat or infiltration by a shittable beard, the thread took a hard swing back toward light, positivity, and titties. I remember waking up after a shittable beard incredibly motivated to get some peep’s mutual aid goals met. Sometimes, the best way to fight adversity in your life is to say “fuck it!” and do something positive.

    July 5th – Un-dependence Day

    I woke up around 7AM on July 5th. I drink some water, and start to get ready for the–nope.

    Nope, about one pill in I go “Oh no” in the way Maya Rudolph did in Bridesmaids. I head downstairs. My housemate/former step-dad is in the bathroom showering for work.

    Oh God. Oh no. Oh God.

    The longest 10 minutes of my life passed. 

    And then the flood gates open. And they would not close until roughly 7pm when I managed to keep down a phenergan. In my fevered-state,  I would check in on Hellthread between bouts in the bathroom.

    Not too much going on. I did miss a few thirst traps that I would have loved to boost in real time but instead had to creepily comment something like “Ugh, so hot…” 2 hours late while my head is resting on my toilet seat. 

    Once the anti-nausea meds hit, I’m out for 13 hours.

    8AM, July 6th

    I open my phone. After checking my email and messages, I opened Bluesky to find that all my notifications stopped 10 hours prior.

    The next thing I see is Paul joking about nuking the Hellthread. Comparing it to a global leader saying, “I thought that compound was military but it was civilian,” or some shit. Again, play with the kids or lead. Don’t try both, you fucking asshole.

    A lot of people are ragging on Paul a bit. But, with the suicide stuff, I kinda just listened to him when he told me who he was the first time. Tech bros will always tech bro eventually.

    The best feature of the app (OK, maybe right under portable ID) was tossed out with little warning. And the thread is still there; it’s just laggy, delayed, and in a spot on the Android app that never works well*. For all intents and purposes, Hellthread 2 is dead.

    (Oh, yeah, this wasn’t even the first Hellthread death.)

    I go to the Hellthread feed on Bluesky. Even though it is a little dead. Most of us haven’t figured out how to get there yet. We were used to using our notifications as a glorified chat room. Not the intended use of the app, but I would like to point this out: it was blessed.

    The Hellthread was given a special exemption. And as such, we had the expectation that this exemption would remain until at least some debate and warning happened. 

    Once again, play with the kids too much and we’ll actually believe the lie that you care about our opinions. 

    The way it was “killed” was by simply unblessing it and letting the default limit of 6 replies set in and have people only get those from directly downstream and not all-over. 

    — — — 

    I had a lot of followers on Tumblr back in the day and even found out a good chunk of people at UGA knew of me from my giant parties and would follow me there. But the interaction was minimal.

    I didn’t really get much from it except for the time a follower made me the ringtone snippet of “Fuck the Pain Away” as used on 30 Rock. Although, I will admit, that was amazing. 

    With Hellthread (Bluesky, yeah, but mainly Hellthread) I was on a social platform and didn’t really care about follower count. It was all about building something, vibing, and having some community time.

    Oddly, that actually translated to the fastest gain in followers I’ve ever experienced on a platform. I guess authenticity sells or something, IDK. That and I would periodically post some leads for the Brazilian Supercluster (Eu amo todos vocês!).

    I’m sure you’re all doing wanking motions in the air now at my emotional waxing about a thread full of jokes, Mutual Aid, boobs, and–occasionally–an avalanche of dicks. But, it was an important experience for me.

    So, some personal stuff about me. I’ve been through some shit. Not as bad as some, don’t get me wrong. But I ended up in a place where I kinda hate myself? Not just physically. I mean, like, all of me? It’s not all the time. But it’s also led to me basically not having any trust in anyone. Each time I think I’m building back, like with the Tumblr guy, I get stuck back down.

    Don’t pity me; I don’t. It’s just an ongoing work. At least my Cognitive Behavioral Therapy from back in the day gave me the tools to not go off the deep end nearly as much. And I’m grateful for that.

    I just kinda forgot what friends–even the semi-parasocial acquaintance type–could feel like. And it felt kinda good. If I were me from 2011, I’d be trying to organize a massive feast of some sort to commemorate things. And I survived Hellthread 2.0 bonfire. 

    I’ll post a thing and people seem to at least cursorily care and interact. Little hits of dopamine in a world obsessed with violence. 

    And I’m just on the outskirts, by the way. I’m not in whatever central grouping there is. I’m not in whatever clique you might think from the outside or even after reading this article. I’ve spoken one-on-one outside of HT with exactly two people from HT. I was just a parasocial acquaintance and I could still feel the love and the vibes.

    I even got my own couple of reply guys during a few dick avalanches (to toot my own horn). And my pics aren’t even that creative. The dick is just pretty. Not big, just pretty. 

    And that’s another thing: sharing yourself. The intimate bits you hate? I do that here on Tumblr, but somehow it hits differently when the popular Twitter Gay who ignored you on that platform for YEARS likes a dick pic?

    Honestly, though? The thirst is nothing.

    When I was a teen, I was in the audience for the one-act competition. The school was having the world’s longest blackout, and I leaned forward and whispered to my castmates, “I love this play; it’s called Black Beauty.” What a dumb fucking joke. But everyone cracked up. That was the craic. And that’s the energy you get in Hellthread. We WILL laugh at your dumb joke for FAR TOO LONG.

    Rest in Peace, Hellthread 2.0

    *Swiping feeds on Android will open the post under your finger from the previous page about 5/10 times. And then the app is so laggy in general it takes forever to catch up.

  • 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
  • 1

    socialists? right in front of MY salad?

    I know they don’t like their own words being thrown back at them, but establishment liberals need to chill. The time to… Read more →

    I know they don’t like their own words being thrown back at them, but establishment liberals need to chill.

    The time to fight the dsa-backed candidates was literally the primaries they won and whining about it at length mostly just hurts us for the general.

    We have our candidats, now we need to win, tho.