polfr, X, fediverse
fediverse
<p>Daily <a href="/tags/macron/" rel="tag">#macron</a> 🇫🇷 😅 Have a nice <a href="/tags/saturday/" rel="tag">#saturday</a> <a href="/tags/caturday/" rel="tag">#caturday</a> <a href="/tags/france/" rel="tag">#france</a> <a href="/tags/iran/" rel="tag">#iran</a> <a href="/tags/hd/" rel="tag">#HD</a> <a href="/tags/humour/" rel="tag">#humour</a> <a href="/tags/introduction/" rel="tag">#introduction</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <span class="h-card"><a href="https://ec.social-network.europa.eu/@EUCommission" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>EUCommission</span></a></span> <span class="h-card"><a href="https://mediapart.social/@mediapart" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>mediapart</span></a></span><br><a href="https://open.spotify.com/album/275s9E34CZvrrBrUWM3sLX" rel="nofollow" class="ellipsis" title="open.spotify.com/album/275s9E34CZvrrBrUWM3sLX"><span class="invisible">https://</span><span class="ellipsis">open.spotify.com/album/275s9E3</span><span class="invisible">4CZvrrBrUWM3sLX</span></a></p>
Edited 160d ago
<p>Part 2/3. See Parts 1 & 3.</p><p>LEADING THE WAY?? ;) XOXO 💋 UGH!</p><p>🇦🇺 <a href="/tags/australia/" rel="tag">#Australia</a> to <a href="/tags/ban/" rel="tag">#BAN</a> UNDER 16 from <a href="/tags/social_media/" rel="tag">#SOCIAL_MEDIA</a> after passing <a href="/tags/landmark_law/" rel="tag">#LANDMARK_LAW</a> 👨⚖️ 👩⚖️ </p><p>Australia will banned 👶 children under 16 from using <a href="/tags/social_media/" rel="tag">#social_media</a> after its <a href="/tags/senate_approved/" rel="tag">#senate_approved</a> what will become a world-first <a href="/tags/law/" rel="tag">#law</a>.</p><p>WE THE PEOPLE HAVE DETERMINED THAT your so -called centralized BIG TECH including <a href="/tags/app_stores/" rel="tag">#APP_STORES</a> are NOTHING MORE than Surveillance Privacy and <a href="/tags/ip_theft/" rel="tag">#IP_Theft</a> Hubs <a href="/tags/stealing/" rel="tag">#stealing</a> your ideas and inventions for the last 3 decades. 🌐 🛰️ 📡 </p><p>BELOW cannot be trusted. <a href="/tags/fintech/" rel="tag">#FINTECH</a> SURVEILLANCE <a href="/tags/hubs/" rel="tag">#HUBS</a></p><p>🥊 <a href="/tags/boycott/" rel="tag">#BOYCOTT</a> THE <a href="/tags/irs/" rel="tag">#IRS</a> - Licensed accountants are in fact OFFICERS of IRS (employees).. they are not your friend they are the 🐀 <a href="/tags/rats/" rel="tag">#rats</a>..</p><p>🥊 <a href="/tags/boycott/" rel="tag">#BOYCOTT</a> 🏦 <a href="/tags/centralized_banks/" rel="tag">#CENTRALIZED_BANKS</a>: if Government suspects tax evasion they can and will simply withdraw your money from you bank account without warning or notice. This happened twice to us and it was not our fault.</p><p>🥊 <a href="/tags/boycott/" rel="tag">#BOYCOTT</a>: 🇫🇷 <a href="/tags/swift/" rel="tag">#SWIFT</a> BANK WIRE TRANSFERS ( <a href="/tags/france/" rel="tag">#France</a> ). ALL FEES PAID to FRANCE andas well as <a href="/tags/usd/" rel="tag">#USD</a> CURRENCY <a href="/tags/paper_trails/" rel="tag">#PAPER_TRAILS</a> FOR SALE to Highest Bidder W/0 <a href="/tags/consent/" rel="tag">#Consent</a> of Tax Payers;)</p><p>🇱🇷 💿 📀 🔮 📦 REMEMBER AMERICA ONLINE? Where you all were kept in a BOX (Mouse Trap really 🐀 ).. until many realized they are not even on the 🌐 Internet?? </p><p>They were being trapped in a <a href="/tags/dedicated_advertising_box/" rel="tag">#dedicated_advertising_box</a>!? see image.</p><p>📦 WHILE American Online was making a fortune in advertising from you; you thought you were on the internet--but in fact you never left their SHITTY APP (APP STORES HELLO??) to EXCLUSIVELY sell you JEW TERRORIST products and services for the last 2 decades!.</p><p>📦 WELCOME TO: Chatgpt, openAI and now WhaleSeek. (ALL Bogus AI -- A LIE = <a href="/tags/ip_theft/" rel="tag">#IP_THEFT</a>) </p><p>📦 AMERICA ONLINE <a href="/tags/re/" rel="tag">#RE</a>-BRANDED 30 YEAR OLD TECH AND STRATEGY!? and you all FELL for it Just like we did back in the 90's:(</p><p>📦 Yes you desperately need REAL AI. But it doesn't exist. TastingTraffic LLC invented REAL AI called <a href="/tags/programmatic/" rel="tag">#PROGRAMMATIC</a> AT BEST since 1999;) </p><p>📦 Same game plan here with these useless applications. YOU LEARN NOTHING (THE <a href="/tags/mean/" rel="tag">#MEAN</a> 📏 at Most with <a href="/tags/llm/" rel="tag">#LLM</a> SCRAPED data) BUT WILL <a href="/tags/cost/" rel="tag">#COST</a> YOU EVERYTHING. 🚑 </p><p>~ You are hindering the advancement of your own 🧠 intelligence and knowledge. Real Intelligence is not COPIED; real intelligence its earned through the USE of the brain.</p><p>Currently you are all working for Bigtech and YOU DON'T EVEN KNOW IT. you are the PRODUCT when you should be making the <a href="/tags/lions_share/" rel="tag">#LIONS_SHARE</a> CALLED A <a href="/tags/profit/" rel="tag">#PROFIT</a>! 🤑 </p><p>Why do you continue to drive traffic to 3rd party CENTRALIZED WEB SITES called Social Networks making them a fortune while you get paid pie crumbs when you should be driving traffic to your own sites and/or Video Podcast SELLING your own PRODUCTS and SERVICES for your OWN HUGE profit and making the 🦁 LIONS SHARE for YOU, YOUR COMPANY and YOUR <a href="/tags/own/" rel="tag">#OWN</a> FAMILY?? </p><p>Not some 3rd party CENTRALIZED UN-TRUSTED COPYCAT Surveillance APPLICATION or worse dishit useless <a href="/tags/social_media/" rel="tag">#Social_Media</a> Platforms.</p><p>Aka someone else s family..</p><p>What do all the centralized services do? They scour the Internet with 🤖 🤖 🤖 <a href="/tags/bots/" rel="tag">#BOTS</a> AS DUMB AS YOUR CELLPHONE AND <a href="/tags/copy/" rel="tag">#COPY</a> ALL YOUR <a href="/tags/pages/" rel="tag">#PAGES</a>, <a href="/tags/images/" rel="tag">#IMAGES</a> and <a href="/tags/code/" rel="tag">#code</a> (CODE ONLY IF AN APP in unsecured app stores >> </p><p><a href="/tags/html/" rel="tag">#HTML</a> ONLY ON WWW BUT CANNOT COPY <a href="/tags/code/" rel="tag">#CODE</a>;) from any SITE ON THE www NET if using the correct software stack?? </p><p><a href="/tags/ai/" rel="tag">#AI</a> huh UNDER ANOTHER NAME?? Its <a href="/tags/copyright_infringement/" rel="tag">#copyright_Infringement</a>! = MASSIVE <a href="/tags/ip_theft/" rel="tag">#IP_THEFT</a>.</p><p>NEWS FLASH THE DUMB PHONES were DUMBED DOWN FIRST. Now you are being dumbed down even further by worthless COPYCAT applications. </p><p>When you should be building out your own YouTube Streaming and Podcast platforms called <a href="/tags/silos/" rel="tag">#Silos</a> Decentralized = <a href="/tags/fediverse/" rel="tag">#Fediverse</a> = <a href="/tags/mastodon/" rel="tag">#Mastodon</a> etc; to BUILD <a href="/tags/traffic/" rel="tag">#Traffic</a> 🛣️ 🛣️ 🛣️ --aka customers directly to your own podcasts, PRODUCTS or services YOU are selling..</p><p>Part 2/3. See Parts 1 & 3.</p>
<p>Falls ihr mit euren Bands noch nicht im Fediverse seid, sondern nur auf den üblichen threads/Twitter, Insta, youtube usw:</p><p>Kommt auch mit euren Bands ins Fediverse, wir haben den Ersatz für </p><p>- Instagram (Pixelfed, unsere Instanz: <a href="https://punk.photos" rel="nofollow"><span class="invisible">https://</span>punk.photos</a> )<br>- Threads/Twitter/X (Mastodon, unsere Instanz: <a href="https://punkstodon.de" rel="nofollow"><span class="invisible">https://</span>punkstodon.de</a> )<br>- Youtube (Peertube, unsere Instanz: <a href="https://punktube.net" rel="nofollow"><span class="invisible">https://</span>punktube.net</a> )</p><p>Und generell haben wir paar Infos und links auf <a href="https://punx.social" rel="nofollow"><span class="invisible">https://</span>punx.social</a></p><p><a href="/tags/punk/" rel="tag">#punk</a> <a href="/tags/punkdotphotos/" rel="tag">#PUNKdotPHOTOS</a> <a href="/tags/punkstodon/" rel="tag">#punkstodon</a> <a href="/tags/punktube/" rel="tag">#punktube</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/mastodon/" rel="tag">#mastodon</a> <a href="/tags/peertube/" rel="tag">#peertube</a> <a href="/tags/pixelfed/" rel="tag">#pixelfed</a></p>
Edited 93d ago
<p>你希望 <a href="/tags/fediverse/" rel="tag">#Fediverse</a> 在中文用户中拥有更大的知名度吗?<span class="h-card"><a href="https://ovo.st/club/board" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>board</span></a></span> <span class="h-card"><a href="https://ovo.st/club/worldboard" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>worldboard</span></a></span></p>
Options: (choose one)
<p>RE: <a href="https://mastodon.online/@mastodonmigration/116312883173526888" rel="nofollow" class="ellipsis" title="mastodon.online/@mastodonmigration/116312883173526888"><span class="invisible">https://</span><span class="ellipsis">mastodon.online/@mastodonmigra</span><span class="invisible">tion/116312883173526888</span></a></p><p>There we go!</p><p>I feel like i keep reposting this every week or so..</p><p>Bit by bit <a href="/tags/bsky/" rel="tag">#Bsky</a> is sliding towards just another clone of <a href="/tags/twitter/" rel="tag">#Twitter</a> and <a href="/tags/facebook/" rel="tag">#Facebook</a> </p><p>Actions speak louder then words</p><p>The <a href="/tags/fediverse/" rel="tag">#Fediverse</a> remains the only true open source, self-hosted world wide community driven by the people</p><p>Going <a href="/tags/ai/" rel="tag">#AI</a> (<a href="/tags/llm/" rel="tag">#LLM</a>) is a CHOICE, they again chose wrong</p>
<p>I think <a href="/tags/smolfedi/" rel="tag">#SmolFedi</a> will be my preferred <a href="/tags/fediverse/" rel="tag">#Fediverse</a> client on my smartphone and my old tablet. Very lightweight, fast, useful. I wonder why I should use something else.</p><p>Let me know which missing feature would be a must have.</p><p>(if it had poll editor, I’d propose some :-D )</p><p>Source/download : <a href="https://codeberg.org/adele/smolfedi" rel="nofollow"><span class="invisible">https://</span>codeberg.org/adele/smolfedi</a></p><p>Demo instance : <a href="https://smolfedi.pollux.casa" rel="nofollow"><span class="invisible">https://</span>smolfedi.pollux.casa</a></p>
<p>Quiet, watchful, and a little mysterious 🖤 Moody Wildlife - Heron: <a href="https://1-lisas-baker.pixels.com/featured/moody-wildlife-heron-lisa-s-baker.html" rel="nofollow" class="ellipsis" title="1-lisas-baker.pixels.com/featured/moody-wildlife-heron-lisa-s-baker.html"><span class="invisible">https://</span><span class="ellipsis">1-lisas-baker.pixels.com/featu</span><span class="invisible">red/moody-wildlife-heron-lisa-s-baker.html</span></a></p><p><a href="/tags/heron/" rel="tag">#Heron</a> <a href="/tags/wildlifeart/" rel="tag">#WildlifeArt</a> <a href="/tags/moodyart/" rel="tag">#MoodyArt</a> <a href="/tags/natureart/" rel="tag">#NatureArt</a> <a href="/tags/birdart/" rel="tag">#BirdArt</a> <a href="/tags/atmosphericart/" rel="tag">#AtmosphericArt</a> <a href="/tags/wallart/" rel="tag">#WallArt</a> <a href="/tags/homedecor/" rel="tag">#HomeDecor</a> <a href="/tags/naturelovers/" rel="tag">#NatureLovers</a> <a href="/tags/buyintoart/" rel="tag">#BuyIntoArt</a> <a href="/tags/mastoart/" rel="tag">#mastoart</a> <a href="/tags/fediart/" rel="tag">#fediart</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/creativetoots/" rel="tag">#creativeToots</a></p>
<p>Simple. Efficace. Un chat.</p><p><a href="/tags/caturday/" rel="tag">#caturday</a> <a href="/tags/cat/" rel="tag">#cat</a> <a href="/tags/cats/" rel="tag">#cats</a> <a href="/tags/catsoffedi/" rel="tag">#catsoffedi</a> <a href="/tags/meow/" rel="tag">#meow</a> <a href="/tags/kitty/" rel="tag">#kitty</a> <a href="/tags/kitten/" rel="tag">#kitten</a> <a href="/tags/furry/" rel="tag">#furry</a> <a href="/tags/pets/" rel="tag">#pets</a> <a href="/tags/fedi/" rel="tag">#fedi</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/samedichat/" rel="tag">#SamediChat</a> <a href="/tags/chat/" rel="tag">#chat</a> <a href="/tags/chats/" rel="tag">#chats</a> <a href="/tags/miaou/" rel="tag">#miaou</a> <a href="/tags/minou/" rel="tag">#minou</a> <a href="/tags/chaton/" rel="tag">#chaton</a> <a href="/tags/animaux/" rel="tag">#animaux</a></p>
<p>📺📅 It's the weekly <a href="/tags/mastodon/" rel="tag">#Mastodon</a>/ <a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/watchpartycalendar/" rel="tag">#WatchPartyCalendar</a> screencap </p><p>3/26 - 4/2 (Thu-Thu)</p><p>Special Event <a href="/tags/thedeltaforce/" rel="tag">#TheDeltaForce</a> 3/26 <a href="/tags/ripchucknorris/" rel="tag">#RIPChuckNorris</a></p><p>📅Details &🔗s ➡️ <a href="http://bit.ly/MastodonWatchParties" rel="nofollow"><span class="invisible">http://</span>bit.ly/MastodonWatchParties</a><br>⏰️All times US Eastern</p><p><a href="/tags/westerns/" rel="tag">#Westerns</a> <a href="/tags/music/" rel="tag">#Music</a> <a href="/tags/mysteries/" rel="tag">#Mysteries</a> <a href="/tags/action/" rel="tag">#Action</a> <a href="/tags/comedy/" rel="tag">#Comedy</a> <a href="/tags/anime/" rel="tag">#anime</a> <a href="/tags/movies/" rel="tag">#Movies</a> <a href="/tags/filmmastodon/" rel="tag">#FilmMastodon</a> <a href="/tags/cinemastodon/" rel="tag">#CineMastodon</a> <a href="/tags/watchpartyalert/" rel="tag">#WatchPartyAlert</a></p><p>Thanks hosts! <span class="h-card"><a href="https://mastodon.social/@MatthewTitus88" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>MatthewTitus88</span></a></span> <span class="h-card"><a href="https://universeodon.com/@MirrorAyako" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>MirrorAyako</span></a></span> <span class="h-card"><a href="https://timeloop.cafe/@Taweret" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Taweret</span></a></span> <span class="h-card"><a href="https://mastodon.social/@analgesicsleep" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>analgesicsleep</span></a></span> <span class="h-card"><a href="https://mastodon.social/@rsmon77" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>rsmon77</span></a></span> <span class="h-card"><a href="https://lazybear.social/@hyde" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>hyde</span></a></span> <span class="h-card"><a href="https://mastodon.social/@greenpepper22" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>greenpepper22</span></a></span> <span class="h-card"><a href="https://dmv.community/@kamikat" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>kamikat</span></a></span> <span class="h-card"><a href="https://mastodon.social/@LisaMarieBowman" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>LisaMarieBowman</span></a></span></p>
<p>The biggest win the Open Social Web can ever experience is to get Naver and/or Kakao to integrate ActivityPub and ATProto.These two are masters of cross-platform interconnectedness and social media, where Google and Microsoft epicly failed to do.<a href="/tags/socialweb/" rel="tag">#SocialWeb</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/atmosphere/" rel="tag">#ATmosphere</a></p>
FediMeteo, timezones, and the art of not breaking what already works<br><br>I have already written about how FediMeteo was born (<a href="https://it-notes.dragas.net/2025/02/26/fedimeteo-how-a-tiny-freebsd-vps-became-a-global-weather-service-for-thousands/" rel="nofollow" class="ellipsis" title="it-notes.dragas.net/2025/02/26/fedimeteo-how-a-tiny-freebsd-vps-became-a-global-weather-service-for-thousands/"><span class="invisible">https://</span><span class="ellipsis">it-notes.dragas.net/2025/02/26</span><span class="invisible">/fedimeteo-how-a-tiny-freebsd-vps-became-a-global-weather-service-for-thousands/</span></a>), and about how HAProxy helps reduce the number of requests that reach snac (<a href="https://it-notes.dragas.net/2026/05/18/fedimeteo-haproxy-and-the-art-of-not-wasting-snac-threads/" rel="nofollow" class="ellipsis" title="it-notes.dragas.net/2026/05/18/fedimeteo-haproxy-and-the-art-of-not-wasting-snac-threads/"><span class="invisible">https://</span><span class="ellipsis">it-notes.dragas.net/2026/05/18</span><span class="invisible">/fedimeteo-haproxy-and-the-art-of-not-wasting-snac-threads/</span></a>).<br><br>Seen from the outside, FediMeteo almost seems still. There is a static homepage, regenerated every hour. There are the city pages, with their forecasts. There are RSS feeds waiting to be fetched, JSON objects waiting to be requested, Fediverse instances refreshing data, subscribing, unsubscribing, retrieving profiles, and reading notes.<br><br>That is the visible part.<br><br>Behind it, however, FediMeteo (<a href="https://fedimeteo.com" rel="nofollow"><span class="invisible">https://</span>fedimeteo.com</a>) is much more than a homepage, a few ActivityPub accounts, and a well-behaved reverse proxy. It is a chain of small pieces, in proper Unix style, each trying to do one thing and do it as well as possible.<br><br>That chain, although almost invisible from the outside, was not born already tidy. It changed, was rewritten, adapted to new countries, timezones, ambiguous city names, external service limits, and also to my own mistakes.<br><br>Some mistakes were small. Others were much less so.<br><br>Because FediMeteo is a human project and, as such, imperfect. Imperfect in the way humans are imperfect, which today almost seems unfashionable. I like that.<br><br>The first version of the bot was almost embarrassingly simple, and I was proud of that.<br><br>It took a city name as input, asked Nominatim (<a href="https://nominatim.org" rel="nofollow"><span class="invisible">https://</span>nominatim.org</a>) for the coordinates through geopy, called the Open-Meteo (<a href="https://open-meteo.com" rel="nofollow"><span class="invisible">https://</span>open-meteo.com</a>) API for the current weather and the next several days, and printed a markdown block with current conditions, the forecast for today, the next twelve hours, and the coming days. The text was in Italian. The cities were Italian. The timezone was Europe/Rome. There was nothing to calculate.<br><br>Around the script, a small sh wrapper read a list of cities and, for each one, ran the Python program and piped its output into snac note_unlisted. A cron job ran the wrapper every six hours. The output was loose markdown, which snac happily renders, and the integration was: standard output goes into standard input. Nothing fancier than that.<br><br>I like this kind of design. It is the part of the Unix philosophy that survives even when fashions change.<br><br>When I started adding other European countries, I did not need to change much. I separated the operational logic from the localized strings, moved the strings into one JSON file per country, and spread the cron entries so that not every country posted in the same minute. Each country had its own snac instance, in its own FreeBSD jail, with its own dataset. The bot, internally, was almost the same script as before.<br><br>This worked because Europe is, in essence, two or three timezones across most of the countries I cared about.<br><br>Then I added Germany, and Germany taught me my first lesson about names.<br><br>There are several places called Neustadt in Germany. There is a Frankfurt am Main, and a Frankfurt an der Oder, and they are not the same city. There is a Halle in Saxony-Anhalt and a Halle in North Rhine-Westphalia. Asking Nominatim for "Frankfurt, Germany" produced one of the two, consistently, but not always the one I wanted. Some German users wrote to me, politely, to point out that the forecast for "their" Frankfurt was, in fact, for the other one.<br><br>I started thinking about disambiguation, but only enough to fix the immediate cases. The bot still took a single city name. The ambiguous ones I worked around by editing the cities file and hoping for the best.<br><br>In hindsight, this was the seed of what would happen later.<br><br>The United States broke every assumption the bot had grown up with.<br><br>The first problem was the number of cities. I wanted reasonable coverage at state level, which meant identifying the main cities for each of the fifty states. The list ended up at more than 1200 entries. That alone is more cities than every other country in the project combined.<br><br>The second problem was timezones. The contiguous United States covers four of them, and Alaska and Hawaii bring the total to six. A "current weather at 12:00" line generated at the same instant for New York and for Los Angeles is technically the same instant, but the two cities are living different parts of the day, and the forecast for "today" is not even quite the same window. A bot that pretended every city was on the same clock would be wrong, sometimes embarrassingly so, every single day.<br><br>The third problem was the name thing again, only larger. There are dozens of Springfields. There is a Portland in Oregon and a Portland in Maine. The Germany workaround - editing the cities file by hand and hoping Nominatim picked the right city - was clearly not going to scale to a country where the same name is also a state.<br><br>I sat with this for a couple of days before admitting what I already knew.<br><br>The bot needed to be rewritten.<br><br>What made this hard was not the rewriting itself. It was the requirement to do it without breaking everything else.<br><br>By the time I decided to add the United States, the infrastructure around the bot had grown into something I trusted. Jails, snapshots, backup jobs, cron schedules, snac instances on production paths, the HAProxy layer, the homepage cron that aggregated follower counts, and a long list of cities being processed in series every six hours. None of that knew or cared about the bot's internal shape. All of it cared, very much, about the bot's external behavior: a city name and a country code go in, valid markdown comes out, and that markdown ends up in a timeline.<br><br>So the contract was clear, even if I had never written it down anywhere. The command-line interface, the output format, the exit codes, the way the wrapper script invoked it, the structure of the JSON country configs - all of it had to keep working. Italian had to keep working. German had to keep working. The cron job that ran every six hours had to keep producing the same shape of output, just with new countries added.<br><br>What I changed was almost everything below the surface.<br><br>The city argument grew an optional __state suffix, with a double underscore as separator:<br><br><p>python3 main.py springfield__illinois us<br>python3 main.py springfield__massachusetts us<br>python3 main.py new_york__new_york us<br></p>A city without the suffix continued to work exactly as before, which is what every European country needed. The country config gained a timezone field that could be a fixed string or the literal "auto"; when it was "auto", the bot used timezonefinder against the resolved coordinates to determine the right zone for that specific city. Internally I separated the weather provider behind an interface, so Open-Meteo could remain the primary while MET Norway and wttr.in sat behind as alternatives, with automatic fallback when the primary failed. Units became configurable per country: temperature, wind speed, precipitation. The United States needed Fahrenheit, miles per hour, and inches. Most of Europe wanted Celsius, kilometers per hour, and millimeters. The bot now does either, on a per-country basis, without caring which is which.<br><br>I am skipping a lot of small detail here, but the principle was always the same: every new degree of freedom had to be expressible as an optional field in the config or as an optional CLI flag. If a country did not set the new field, the old behavior continued, identical to before.<br><br>I tested this by running the new bot against the old country configs and comparing the output line by line. Where it differed, it was a bug in the new bot. Not in the test.<br><br>The first cycle after deploying the rewrite was, for every country except the United States, indistinguishable from the cycle before. That was the point.<br><br>This is the part of the story I dislike telling, which is precisely why I should tell it.<br><br>At some point during the development, while debugging an Open-Meteo response that did not look right, I added a print statement to the error path that dumped the full request URL whenever something went wrong. The full URL of the Open-Meteo customer endpoint includes the apikey query parameter. The print was meant for development. I forgot to remove it.<br><br>I deployed.<br><br>The next time Open-Meteo had an outage - and small ones happen, sometimes for several minutes at a time - the bot dutifully printed the failing request URL into the post body. For every city. For every cycle that ran during the outage. The wrapper script piped the output into snac note_unlisted without complaint. The posts went out, federated across the Fediverse, with my API key sitting in the text for anyone who cared to read.<br><br>Some users were kind enough to write me and tell me. Others were less kind, and made fun of me. Both groups were correct. This should not have happened.<br><br>I reported the incident to the Open-Meteo team, who were extremely understanding. They rotated the key immediately and gave me a fresh one. I removed the debug print, and then I did the slightly more useful thing, which was to add redaction at multiple layers - in the bot's output, in the daemon's logging, and in the debug helpers themselves. URL query parameters that look like API keys are masked. Environment variables and config keys named apikey or OPEN_METEO_APIKEY are redacted before any string reaches stdout or a log file. Even JSON-like fields that include open_meteo_apikey are scrubbed if they ever appear in something the program prints.<br><br>The lesson is not "be more careful." The lesson is that debug paths leak, sooner or later, so the secrets have to be unreachable from the debug paths in the first place. Now they are.<br><br>That afternoon, when I realised what was happening, I closed everything for a minute and looked out of the window. Then I started fixing.<br><br>Nominatim is a public service, and it is generous, but it is not infinite. Every city in the project needs coordinates, and at the start of the project every cycle would re-ask Nominatim for every city. Most of the time this worked. Sometimes it did not.<br><br>There was one cycle, before I added caching, when Nominatim simply did not respond for one of my queries. The geopy call timed out. The bot raised an exception. The wrapper script gave up on that city and moved on to the next one. A few users noticed that a particular city had not received its forecast that day, and asked what had happened.<br><br>I added a coordinate cache, and I am still grateful that I did.<br><br>The cache is intentionally boring. The first time the bot resolves a city, it writes the latitude and longitude into a small file under /tmp, named after the city, and the state when present. Every subsequent run reads the file. If the file exists, no Nominatim call is made. If the file is missing, the bot calls Nominatim and writes the file. After the first successful lookup, the cache becomes the source of truth for the coordinates of that city.<br><br>This is lighter on Nominatim, faster for every cycle, and much more resilient against transient failures. It is also nice for a reason I did not anticipate.<br><br>Nominatim is a geocoder, and like every geocoder it has opinions.<br><br>I live in Ferrara, so when I added Italy I made sure Ferrara was in the list, and I checked the first cycle to make sure everything looked right. The forecast came out fine. The temperature was reasonable. The icon matched the sky outside my window. I closed the laptop and forgot about it.<br><br>Then, one evening months later, I looked more carefully at the coordinates Nominatim had returned for "Ferrara, Italy", and I realised they did not point to the city. They pointed to a location closer to the centroid of the province, which is a much larger area and mostly countryside. The forecast had been, on average, for a field somewhere outside town, not for the city center.<br><br>I am not entirely sure why I had not noticed earlier. Probably because the weather in Ferrara and the weather in the fields outside Ferrara is, on most days, indistinguishable to anyone who is not paying attention. But this is the kind of detail I do not want to leave wrong, especially for my own city.<br><br>There are other places where geocoding lands slightly off. Sometimes it is a few kilometers, sometimes a different neighborhood, sometimes genuinely the wrong place.<br><br>Because the cache is just a file per city, the fix is also just a file per city. I open the cache file, replace the latitude and longitude with the correct values, save. The next cycle uses the corrected coordinates. No code change, no redeploy, no special tooling. I keep a small list of patched cities in a separate text file, so that if I ever rebuild the cache, I do not lose the manual corrections.<br><br>This is the kind of operational simplicity I like. A cache made of plain files costs almost nothing and quietly pays back every time a small problem appears.<br><br>For every report it generates, the bot also writes a simplified English text snapshot to /tmp/.txt, or /tmp/__.txt when there is a state.<br><br>This is intentional, and it is not a debug artifact. I am not ready to say what I am doing with it yet, but it is part of a future direction for the project. Text is a useful intermediate format, and having a clean, language-neutral representation of every forecast sitting on disk costs almost nothing and might be worth a great deal later.<br><br>I prefer to let ideas mature in private before I commit to them in public. So I will leave it at this for the moment.<br><br>A full cycle for the United States takes hours.<br><br>It is not because the work is heavy. It is because I deliberately inserted a small sleep between cities, to give snac time to dispatch the previous post before the next one is generated. With more than 1200 cities in series, even a short pause adds up. I am not in a hurry. Forecasts that arrive a few minutes apart from each other are not a problem, and the bot was already a polite citizen elsewhere. A polite cycle is fine.<br><br>The problem with a slow cycle is not the duration. The problem is what happens to it.<br><br>In the original design, the cycle was launched by cron. Every six hours, cron called the wrapper script, the wrapper iterated through the cities file, and for each city it ran the bot and piped the output into snac. There was no scheduler in the project at all. Cron was the scheduler. The wrapper was just a loop.<br><br>Restarting snac was harmless. The wrapper would call snac note_unlisted per city, and if snac happened to be unavailable for a moment, that single call might fail, but the loop kept moving and snac was usually back within seconds. Snac itself was not what held the cycle together.<br><br>What held the cycle together was the wrapper process. And the wrapper process lived inside the jail.<br><br>If the FreeBSD jail was restarted while the wrapper was running, the loop stopped wherever it happened to be. The cron schedule did not care. Six hours later, the next cron tick started a new cycle from the first city, and the cities that had been about to be processed at the moment of the restart were simply skipped for that window. For the United States, this could mean several hundred cities going without an update.<br><br>There was a worse case, and it took me longer than it should have to recognise it. If the host was rebooting exactly in the minute when cron should have fired, cron simply did not fire. There was no daemon waiting to pick up the missed tick. The cycle never even started. Six hours of forecasts would be lost, in silence, with nothing in any log to suggest anything had gone wrong.<br><br>I lived with this for a long time. Reboots were rare, the impact was limited, and adding state was the kind of thing I always meant to do "next week."<br><br>What finally changed it was not a dramatic incident. It was the slow accumulation of small ones. A scheduled VPS reboot. A jail restart after an upgrade. Each one on its own was nothing. Together, they were a steady drip of missed cycles.<br><br>So I wrote a daemon.<br><br>The crontab entries for the bot went away. There is now a long-running process inside the jail, started at boot, and it does the scheduling itself. The schedule is a list of hours and a minute, read from a JSON config. The daemon wakes up once a minute, checks whether it is time to start a cycle, and either starts one or waits.<br><br>The interesting part is the state file.<br><br>As the daemon walks through the cities file, it writes its position to a small JSON file: which cities file it is processing, and the index of the next city to handle. The write happens at the boundary between one city and the next, because that is the only place where resuming makes sense. If the daemon is interrupted mid-city, that city is retried on resume; no half-finished post escapes.<br><br>When the daemon starts, it reads the state file. If it finds one matching the current cities file, it resumes from the saved index. If the cities file has changed since the state was written, the daemon starts fresh. The check is deliberately conservative: a renamed or modified cities file is treated as a different cycle, because the indices would otherwise be meaningless.<br><br>The result is the behavior I should have had from the start. If the host reboots while the United States cycle is running, the daemon comes back up with the jail, reads the state, and continues from where it left off. Every city still gets its update, just with a small gap corresponding to the reboot itself. The cycle finishes. The state file is reset. Life goes on.<br><br>And the worst case from the cron days is gone. The daemon does not need anyone to fire it. As long as the jail is running, the daemon is running, and the next scheduled cycle will happen when its hour comes, regardless of what was happening at any specific minute.<br><br>Of all the changes I have made to the project, this is the one I like most. It is not exciting work. It is the kind of thing that earns no applause because, when it works, it produces no visible event. But it removes a whole class of small daily annoyances, and it makes a slow process robust against the boring kind of failure: the kind nobody plans for, but that always eventually happens.<br><br>The current bot does considerably more than the original Italian script. It handles per-city timezones, three weather providers with automatic fallback, unit conversion for temperature, wind, and precipitation, optional air quality, pressure trend indicators when the provider supplies pressure data, a simplified English text snapshot for future use, a coordinate cache that can be patched by hand, secret redaction at multiple layers, a heartbeat that adapts to whichever HTTP client is installed on the host, and a scheduler-and-resume daemon that survives reboots.<br><br>But from the outside, almost nothing has changed.<br><br>The European country configs work the same way they always did. The wrapper scripts are unchanged. The snac integration is the same one-line pipe. The HAProxy layer in front does not know or care that the bot was rewritten. The homepage cron that counts followers and regenerates the static page works exactly as before.<br><br>The original Italian script does not exist as a file anymore, but it survives as a default. A country config with timezone set to Europe/Rome and no special options behaves, today, exactly as the first version of the bot would have. Everything else is opt-in.<br><br>I like this kind of work.<br><br><a href="https://it-notes.dragas.net/2026/05/25/fedimeteo-timezones-and-the-art-of-not-breaking-what-already-works/" rel="nofollow" class="ellipsis" title="it-notes.dragas.net/2026/05/25/fedimeteo-timezones-and-the-art-of-not-breaking-what-already-works/"><span class="invisible">https://</span><span class="ellipsis">it-notes.dragas.net/2026/05/25</span><span class="invisible">/fedimeteo-timezones-and-the-art-of-not-breaking-what-already-works/</span></a><br><br><a href="/tags/itnotes/" rel="tag">#ITNotes</a> <a href="/tags/notehub/" rel="tag">#NoteHUB</a> <a href="/tags/fedimeteo/" rel="tag">#fedimeteo</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/jail/" rel="tag">#jail</a> <a href="/tags/networking/" rel="tag">#networking</a> <a href="/tags/ownyourdata/" rel="tag">#ownyourdata</a> <a href="/tags/server/" rel="tag">#server</a> <a href="/tags/snac/" rel="tag">#snac</a> <a href="/tags/snac2/" rel="tag">#snac2</a> <a href="/tags/social/" rel="tag">#social</a> <a href="/tags/web/" rel="tag">#web</a><br>
<p>For how long have you been on the <a href="/tags/fediverse/" rel="tag">#Fediverse</a>? Feel free to boost and quote and use the result after the poll has closed!</p>
Options: (choose one)
<p>Been messing with <a href="/tags/surf/" rel="tag">#surf</a> all weekend. I think the <span class="h-card"><a href="https://flipboard.com/@theverge" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>theverge</span></a></span> did a great job of describing what it’s all about / how it fits into the wider social web product space on the <a href="/tags/vergecast/" rel="tag">#Vergecast</a> . </p><p>My biggest issue is knowing where a post has come from. I don’t know if I’m “liking” a Bluesky item, or a Mastodon one, and so on. </p><p>Maybe I shouldn’t care? </p><p><a href="/tags/surfsocial/" rel="tag">#surfsocial</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a></p>
<p>Have you checked out <a href="/tags/surffeeds/" rel="tag">#SurfFeeds</a> by <span class="h-card"><a href="https://flipboard.social/@Flipboard" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Flipboard</span></a></span> yet? I took the opportunity to pull together doors, glorious doors from across the <a href="/tags/fediverse/" rel="tag">#Fediverse</a>. If you love door photography from around the world, this is the place ⬇️</p><p><a href="https://doors.surf.social" rel="nofollow"><span class="invisible">https://</span>doors.surf.social</a> </p><p><a href="/tags/doors/" rel="tag">#Doors</a> <a href="/tags/door/" rel="tag">#Door</a> <a href="/tags/architecture/" rel="tag">#Architecture</a> <a href="/tags/nocontextdoors/" rel="tag">#NoContextDoors</a> <a href="/tags/dailydoor/" rel="tag">#DailyDoor</a> <a href="/tags/adoorable/" rel="tag">#Adoorable</a> <a href="/tags/doorsday/" rel="tag">#DoorsDay</a> <a href="/tags/photography/" rel="tag">#Photography</a> <a href="/tags/travel/" rel="tag">#Travel</a> <a href="/tags/doorsgloriousdoors/" rel="tag">#DoorsGloriousDoors</a></p>
Edited 145d ago
<p>🌊 🌊 🌊<br>Today, we’re launching social websites, a new kind of online destination. These blend posts from Bluesky, Threads, Mastodon and more, plus YouTube, podcasts and your favorite publications to create community sites based around the things that matter to you.</p><p><a href="https://about.surf.social/surf-launches-surf-social-websites/" rel="nofollow" class="ellipsis" title="about.surf.social/surf-launches-surf-social-websites/"><span class="invisible">https://</span><span class="ellipsis">about.surf.social/surf-launche</span><span class="invisible">s-surf-social-websites/</span></a></p><p><a href="/tags/surfsocial/" rel="tag">#SurfSocial</a> <a href="/tags/opensocial/" rel="tag">#OpenSocial</a> <a href="/tags/technology/" rel="tag">#Technology</a> <a href="/tags/tech/" rel="tag">#Tech</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a></p>
As part of the work on Fediverse sustainability announced earlier this year, the Social Web Foundation is running our first Fediverse Sustainability Survey . We're seeking operators, moderators and administrators of Fediverse sites, from the smallest to the largest, to fill out the anonymous survey and share information about how their instances work. If you help run an instance, please take the 10-15 minutes needed to fill out the survey. We need a lot of responses (hundreds!) to get […]
I always enjoy seeing these public discussions about what the fediverse can and should be.<br><br>Sure there’s a lot to improve, but the social problem of “how should humans behave in a group” is a permanent one.<br><br>Voice is a sign of a healthy community and loyalty. I’ll be worried when i stop reading people argue passionately for what the fediverse should be, because it’s a sign that its members have lost faith in it and would rather exit.<br><br>We’re here voluntarily, with different goals, needs, and expectations. There’s going to be wildly different ideas about what this should look like, and it’ll continue to churn at its edges as long as it exists.<br><br>Defederation is such a powerful tool: we are free to choose who we don’t want to interact with. Us. Not a for profit, not a government, us the members of each server or league of servers. That’s the shape of community.<br><br>The ban, filter and mute are important but individual. Defederation is collective, and I find that much more interesting.<br><br><a href="/tags/fediverse/" rel="tag">#fediverse</a><br>
<p>Tootie Tutu Bunny - Wonderfully charming bunny art available - here: <a href="https://1-lisas-baker.pixels.com/featured/tootie-tutu-bunny-lisa-s-baker.html" rel="nofollow" class="ellipsis" title="1-lisas-baker.pixels.com/featured/tootie-tutu-bunny-lisa-s-baker.html"><span class="invisible">https://</span><span class="ellipsis">1-lisas-baker.pixels.com/featu</span><span class="invisible">red/tootie-tutu-bunny-lisa-s-baker.html</span></a></p><p><a href="/tags/bunny/" rel="tag">#bunny</a> <a href="/tags/rabbit/" rel="tag">#rabbit</a> <a href="/tags/hare/" rel="tag">#hare</a> <a href="/tags/tutu/" rel="tag">#tutu</a> <a href="/tags/ballerina/" rel="tag">#ballerina</a> <a href="/tags/easterbunny/" rel="tag">#easterbunny</a> <a href="/tags/easter/" rel="tag">#easter</a> <a href="/tags/pastel/" rel="tag">#pastel</a> <a href="/tags/art/" rel="tag">#art</a> <a href="/tags/arte/" rel="tag">#arte</a> <a href="/tags/artwork/" rel="tag">#artwork</a> <a href="/tags/wallart/" rel="tag">#wallart</a> <a href="/tags/homedecor/" rel="tag">#homedecor</a> <a href="/tags/artforhome/" rel="tag">#artforhome</a> <a href="/tags/artforsale/" rel="tag">#artforsale</a> <a href="/tags/buyintoart/" rel="tag">#buyintoart</a> <a href="/tags/artprints/" rel="tag">#artprints</a> <a href="/tags/canvasprints/" rel="tag">#canvasprints</a> <a href="/tags/mastoart/" rel="tag">#mastoart</a> <a href="/tags/fediart/" rel="tag">#fediart</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/creativetoots/" rel="tag">#creativeToots</a> <a href="/tags/spring/" rel="tag">#spring</a> <a href="/tags/cute/" rel="tag">#cute</a> <a href="/tags/cuteanimals/" rel="tag">#cuteanimals</a> <a href="/tags/soft/" rel="tag">#soft</a> <a href="/tags/kidsroomdecor/" rel="tag">#kidsroomdecor</a> <a href="/tags/nurserydecor/" rel="tag">#nurserydecor</a> <a href="/tags/bunnyart/" rel="tag">#bunnyart</a> <a href="/tags/rabbitart/" rel="tag">#rabbitart</a></p>
<p>也搭建了一个relay:<a href="https://relay.feddit.social" rel="nofollow"><span class="invisible">https://</span>relay.feddit.social</a> ,使用的是relay.infosec.exchange和relay.portal.gb0.dev同款的asonix/relay(或者说AodeRelay):<a href="https://git.asonix.dog/asonix/relay" rel="nofollow"><span class="invisible">https://</span>git.asonix.dog/asonix/relay</a></p><p>但是有点问题:比如两个实例没有图片www,还有我的主实例总显示" 等待中继站的确认",但是实际上已经加入了,fedishark.org是秒accept、moe.pub也是刷新就accept了((</p><p>还有其他的几个维护比较活跃的relay,接下来可以试试:</p><p><a href="https://github.com/amjiddader/activityPub-relay" rel="nofollow" class="ellipsis" title="github.com/amjiddader/activityPub-relay"><span class="invisible">https://</span><span class="ellipsis">github.com/amjiddader/activity</span><span class="invisible">Pub-relay</span></a><br><a href="https://github.com/yukimochi/Activity-Relay" rel="nofollow" class="ellipsis" title="github.com/yukimochi/Activity-Relay"><span class="invisible">https://</span><span class="ellipsis">github.com/yukimochi/Activity-</span><span class="invisible">Relay</span></a><br><a href="https://git.pleroma.social/pleroma/relay" rel="nofollow" class="ellipsis" title="git.pleroma.social/pleroma/relay"><span class="invisible">https://</span><span class="ellipsis">git.pleroma.social/pleroma/rel</span><span class="invisible">ay</span></a><br><a href="https://github.com/astro/buzzrelay" rel="nofollow"><span class="invisible">https://</span>github.com/astro/buzzrelay</a></p><p><a href="/tags/relay/" rel="tag">#Relay</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/mastodon/" rel="tag">#Mastodon</a> <a href="/tags/selfhosted/" rel="tag">#Selfhosted</a></p>
<p>RE: <a href="https://nham.co.uk/2026/04/151176-2-2-2-2/" rel="nofollow" class="ellipsis" title="nham.co.uk/2026/04/151176-2-2-2-2/"><span class="invisible">https://</span><span class="ellipsis">nham.co.uk/2026/04/151176-2-2-</span><span class="invisible">2-2/</span></a></p><p>Thank you guys, and thank you to the <a href="/tags/fediverse/" rel="tag">#fediverse</a> for having such an amazing community 🖤</p>
<p>The concentration of power in Silicon Valley happened partly because we let it. We accepted a few platforms as inevitable. We built our communities there because that’s where everyone was. It wasn’t because their technology is better. It was a choice—made again and again by the people on those platforms, by investors, and by policymakers.</p><p>A different choice is possible, but it requires that those of us building alternatives actually believe what we say about cooperation. It means assuming good faith from people building different projects. It means investing in infrastructure that doesn’t benefit us alone.</p><p>We, the builders of the open social web, are the only ones who can make that choice.</p><p>It starts with deciding that our mission matters more than winning alone.</p><p><a href="https://blog.joinmastodon.org/2026/06/why-the-social-web-must-work-together/" rel="nofollow" class="ellipsis" title="blog.joinmastodon.org/2026/06/why-the-social-web-must-work-together/"><span class="invisible">https://</span><span class="ellipsis">blog.joinmastodon.org/2026/06/</span><span class="invisible">why-the-social-web-must-work-together/</span></a></p><p><a href="/tags/socialweb/" rel="tag">#SocialWeb</a> <a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/mastodon/" rel="tag">#Mastodon</a></p>
<p>New version of <a href="/tags/smolfedi/" rel="tag">#SmolFedi</a>, a lightweight, no-JavaScript Fediverse client written in PHP. It respects <a href="/tags/smolweb/" rel="tag">#smolweb</a> specs.</p><p>It works fine with all basic browser such as <a href="/tags/netsurf/" rel="tag">#netsurf</a> So you can access Fediverse on <a href="/tags/retro/" rel="tag">#retro</a> computer have a basic browser (need cookies feature).</p><p>You can install it on a simple web server with php8.x / pdo_sqlite / php_curl</p><p><a href="https://codeberg.org/adele/smolfedi" rel="nofollow"><span class="invisible">https://</span>codeberg.org/adele/smolfedi</a></p><p>Test it on <a href="https://smolfedi.pollux.casa/" rel="nofollow"><span class="invisible">https://</span>smolfedi.pollux.casa/</a> and log to all your fediverse instances (tested on <a href="/tags/gotosocial/" rel="tag">#gotosocial</a> and <a href="/tags/mastodon/" rel="tag">#mastodon</a>). You can connect to multiple account and switch between them easily.</p><p><a href="/tags/smallweb/" rel="tag">#smallweb</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a></p>
<p>This chamber has an echo</p><p>It's the echo of the social contract<br>The echo of consent<br>The echo of consideration<br>The echo of collaboration<br>The echo of a safe space<br>The echo of a silly space<br>The echo of our space<br>...</p><p><a href="/tags/mastodon/" rel="tag">#mastodon</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/poem/" rel="tag">#poem</a></p>
<p>Are you running a server on the Fediverse, either Mastodon or some other type?</p><p>Would you like it to be listed on the human-curated server directory at <a href="https://fedi.garden/fedi-gardens-full-server-list" rel="nofollow" class="ellipsis" title="fedi.garden/fedi-gardens-full-server-list"><span class="invisible">https://</span><span class="ellipsis">fedi.garden/fedi-gardens-full-</span><span class="invisible">server-list</span></a> ?</p><p>Is it compatible with all seven points at <a href="https://fedi.garden/about-this-site" rel="nofollow"><span class="invisible">https://</span>fedi.garden/about-this-site</a> ?</p><p>If the answer to all these is yes, please message my other account at:</p><p>➡️ <span class="h-card"><a href="https://social.growyourown.services/@FediGarden" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>FediGarden</span></a></span> </p><p>Let me know a little bit about your server in your message, or send a link to your About page 🙂 </p><p><a href="/tags/fediverse/" rel="tag">#Fediverse</a> <a href="/tags/fediadmin/" rel="tag">#FediAdmin</a> <a href="/tags/mastoadmin/" rel="tag">#MastoAdmin</a></p>
🚫 allfuckers.com 




