I wonder why timelines aren't implemented as a hybrid gather-scatter choosing strategy depending on account popularity (a combination of fan-out to followers and a lazy fetch of popular followed accounts when follower's timeline is served).<p>When you have a celebrity account, instead of fanning out every message to millions of followers' timelines, it would be cheaper to do nothing when the celebrity posts, and later when serving each follower's timeline, fetch the celebrity's posts and merge them into the timeline. When millions of followers do that, it will be cheap read-only fetch from a hot cache.
This is probably what we'll end up with in the long-run. Things have been fast enough without it (aside from this issue) but there's a lot of low-hanging fruit for Timelines architecture updates. We're spread pretty thin from a engineering-hours standpoint atm so there's a lot of intense prioritization going on.
Just to be clear, you are a Bluesky engineer, right?<p>off-topic: how has been dealing with the influx of new users after X political/legals problems aftermath? Did you see an increase in toxicity around the network? And how has you (Bluesky moderation) dealing with it.
[flagged]
There's nothing wrong with being partisan if you're partisan against fascists who want to destroy democracy and the rule of law.
I understand why some people vote for some parties and why they’re “voting on inflation” or “right to abortion” but I guess, for me, keeping checks and balances and democracy is the one value above ALL for me.<p>In the span of human history, not a lot of countries and civilizations have lasted long, marked by constant instability and uncertainty for the future. We have a boring and imperfect political system created by our founding fathers but at least it’s been stable for nearly 250 years. A lot of people have tried standing up their own political system… most fail and everyone suffers. Even the founding fathers completely failed once first.<p>I know times are tough now but, in the context of history, they can be much worse and I rather not lose what good we currently do have.
> we got 250 years so far without imploding<p>We may have arguably recovered from it, but we rather famously did not get 250 years without the union violently fragmenting. (Our best record on that is right around 160, currently.)
While it’s true we came close during Civil War, we still decided to keep the same system of government. In the end, while the Civil War did result in some constitutional crises, the root of the problem was more that one half of the country completely disagreed with the other half… I don’t think any political system can really work with that level of division and yet we kept the same one. Obviously the Civil War did very much bring into the question of states’ rights but, for better or worse, the founders were a little vague on that so we can still keep most of the same system and quabble over the details for the rest of eternity…
Trump refusing to accept the 2020 election results should've been the line for many voters, but sadly it wasn't. And the potential crimes he and some of his allies may have committed while trying to overturn it will now never be prosecuted.
2024:
> More than 155 million people cast ballots in the 2024 presidential election. It's second only in U.S. history to the 2020 election. Turnout in 2024 represented 63.9% of eligible voters, the second-highest percentage in the last 100 years, according to the University of Florida Election Lab. The only year that beat it – again – was 2020 when universal mail-in voting was more widely available.<p>2020:
> More than 158 million votes were cast in the election<p>So 3 millions of Democrats suddenly decided to not go out to vote "to save democracy" against "fascism"?
> The only year that beat it – again – was 2020 when universal mail-in voting was more widely available.<p>You answered your own question. Voting was made more difficult in 2024, so fewer votes were cast.
The simpler and much more likely answer, my friend, is that people didn’t vote from a combination of disillusionment, assuming Kamala would win, and likewise factors.<p>I saw many people close to me not bother voting because they didn’t enjoy Biden’s presidency, despite voting for him in 2020.<p>So, I find that FAR more likely as a reason than supposed election fraud.
Yup. This is a well-tread philosophical problem: the Paradox of Tolerance. Greater minds have concluded "to protect tolerance, one has to be intolerant of intolerance."<p>And, as always, bsky is a place of business - it is not a public venue. They can decide not to admit individuals who would threaten their business.
Oh fully agreed. But there's a large contingent of folks that are well represented here who think that it's inherently more intelligent to act like/be a centrist, that "both sides have something to offer," which isn't strictly untrue, but in practice especially with American politics just results in mealy-mouthed acceptance of pretty brutal status quos.<p>Like even left and right in terms of the mainstream here is nonsense. We don't have a left party at all, we have a conservative party, and we have an authoritarian fascist party. As a lefty none of my values are represented at all, I just get to vote each election for the conservative party that doesn't want my friends dead.
Funny how you call trump administration fascist. (theoretically its anti fascist but its still bad ,<p>Taking from the description of the video since this was what immediately ringed when you said trump===fascism<p>The liberal theory of the rise of Trumpism and its supposed fascistic features is inadequate in both effectively analysing and offering solutions to the present situation. Liberals often personalise or individualise people like Donald Trump and Elon Musk, casting them as deviations, as opposed to manifestations of class society. Class analysis suggests that fascism was a unique response to growing anti-capitalist organisations, socialist and/or anarchist, gaining prominence and posing threats to the economic base. The owning class required a mass movement which enveloped otherwise disillusioned people into a political project which had the collectivist, anti-free market appeal that socialist and anarchist organisations had, but nonetheless committed to solidifying and strengthening the economic base and profit motive. In modern America, no such anti-capitalist threat exists. Neoliberalism has created significant disillusionment with mainstream social and political institutions and systems, but this disillusionment hasn’t been captured by anti-capitalist forces, but rather by the populist right. As such, the populist right doesn’t need to give up the economic game, i.e. free markets, deregulation, privatisation, austerity, etc (with the exception of tariffs), but can purely rely on minorities as scapegoats in a constructed culture war, such as immigrants, ‘wokeness’, transgender people, etc. Therefore, capital doesn’t need to be subordinated to the nation-state, like pursued by contemporary fascist governments. Rather, in this ‘inverted’ fascism, capital takes over and exploits the state in a rather oligarchic manner.<p><a href="https://www.youtube.com/watch?v=pqdLwkyfLdM" rel="nofollow">https://www.youtube.com/watch?v=pqdLwkyfLdM</a><p>This video is really great , I spent 10 minutes looking for this.<p>I am not a trump supporter , The title might be a little clickbaity (basically the opposite of what it really is) You might find it really great.<p>It is one of the best videos I have ever watched on politics.
I find communist analysis tiresome, especially when in this case the populist right under Trump seems to be motivated in part by anti-free market ideas. The communist kneejerk reaction to every single situation is "this can be explained by class analysis". It's them trying to shoehorn their pet theory into everything.
You're not less partisan if you prefer a slimmer range of political leanings.
Maybe this would be helpful:<a href="http://daslab.seas.harvard.edu/datacalculator/" rel="nofollow">http://daslab.seas.harvard.edu/datacalculator/</a>
That's insightful. Keep up the good work!
> and later when serving each follower's timeline, fetch the celebrity's posts and merge them into the timeline<p>I think then you still have the 'weird user who follows hundreds of thousands of people' problem, just at read time instead of write time. It's unclear that this is _better_, though, yeah, caching might help. But if you follow every celeb on Bluesky (and I guarantee you this user exists) you'd be looking at fetching and merging _thousands_ of timelines (again, I suppose you could just throw up your hands and say "not doing that", and just skip most or all of the celebs for problem users).<p>Given the nature of the service, making read predictably cheap and writes potentially expensive (which seems to be the way they've gone) seems like a defensible practice.
> I suppose you could just throw up your hands and say "not doing that", and just skip most or all of the celebs for problem users<p>Random sampling? It's not as though the user needs thousands of posts returned for a single fetch. Scrolling down and seeing some stuff that's not in chronological order seems like an acceptable tradeoff.
You might mix the approaches based on some cut off point
This problem is discussed in the beginning of the Designing Data-Intensive Applications book. It's worth a read!
Do you know the name of the problem or strategy used for solving the problem? I'd be interested in looking it up!<p>I own DDIA but after a few chapters of how database work behind the scenes, I begin to fall asleep. I have trouble understanding how to apply the knowledge to my work but this seems like a useful thing with a more clear application.
Why do they "insert" even non-celebrity posts into each follower's timeline? That is not intuitive to me.
To serve a user timeline in single-digit milliseconds, it is not practical for a data store to load each item in a different place. Even with an index, the index itself can be contiguous in disk, but the payload is scattered all over the place if you keep it in a single large table.<p>Instead, you can drastically speed up performance if you are able to store data for each timeline somewhat contiguously on disk.
Think of it as pre-rendering. Of pre-rendering and JIT collecting, pre-rendering means more work but it's async, and it means the timeline is ready whenever a user requests it, to give a fast user experience.<p>(Although I don't understand the "non-celebrity" part of your comment -- the timeline contains (pointers to) posts from whoever someone follows, and doesn't care who those people are.)
Perhaps I misunderstanding, I thought the actual <i>content</i> of each tweet was being duplicated to every single timeline who followed the author, which sounded extremely wasteful, especially in the case of someone who has 200 million followers.
From the linked article: "Additionally, a reference to your post is 'fanned out' to your followers so they can see it in their Timelines."<p>So not the content, just a sort of link to it.
At some point they'll end up just doing the Bieber rack [1]. It's when a shard becomes so hot that it just has to be its own thing entirely.<p>[1] - <a href="https://www.themarysue.com/twitter-justin-bieber-servers/" rel="nofollow">https://www.themarysue.com/twitter-justin-bieber-servers/</a><p>@bluesky devs, don't feel ashamed for doing this. It's exactly how to scale these kinds of extreme cases.
I've stood up machines for this before I did not know they had a name, and I worked at the mouse company and my parking spot was two over from a J. Beibe'rs spot.<p>So now we have Slashdot effect, HN hug, and its not Clarkson its... Stephen Fry effect? Maybe can be Cross-Discipline - there's a term for when lots of UK turns their kettles on at the same time.<p>I should make a blog post to record all the ones I can remember.
Given that BlueSky is funded by Twitter, I'm assuming they know a lot more than us on how Twitter architects systems.
We never actually had a literal “Bieber Box”, but the joke took off.<p>Hot shards were definitely an issue, though.
Its so crazy.<p>Thanks a lot for sharing this link.
As a systems enthusiast I enjoy articles like this. It is really easy to get into the mindset of "this must be perfect".<p>In the Blekko search engine back end we built an index that was 'eventually consistent' which allowed updates to the index to be propagated to the user facing index more quickly, at the expense that two users doing the exact same query would get slightly different results. If they kept doing those same queries they would eventually get the exact same results.<p>Systems like this bring in a lot of control systems theory because they have the potential to oscillate if there is positive feedback (and in search engines that positive feedback comes from the ranker which is looking at which link you clicked and giving it a higher weight) and it is important that they not go crazy. Some of the most interesting, and most subtle, algorithm work was done keeping that system "critically damped" so that it would converge quickly.<p>Reading this description of how user's timelines are sharded and the same sorts of feedback loops (in this case 'likes' or 'reposts') sounds like a pretty interesting problem space to explore.
I guess I hadn’t considered that search engines could be reranking pages on the fly as I click them. I’ve been seeing my DuckDuckGo results shuffle around for a while now thinking it’s an awful bug.<p>Like I click one page, don’t find what I want, and go back thinking “no, I want that other result that was below” and it’s an entirely different page with shuffled results, missing the one that I think might have been good.
That's connected with a basic usability complaint about current web interfaces, that ads and recommended content aren't stable. You very well might want to engage with an ad after you are done engaging what you wanted to engage with but you might never see it again. Similarly, you might see two or three videos that you want to click on on the side of a YouTube video you're watching but you can only click on one (though if you are thinking ahead you can open these in another tab.)<p>On top of that immediate frustration, the YouTube style interface here<p><a href="https://marvelpresentssalo.com/wp-content/uploads/2015/09/idiocracy-ow-my-balls.jpg" rel="nofollow">https://marvelpresentssalo.com/wp-content/uploads/2015/09/id...</a><p>collects terrible data for recommendations because, even though it gives them information that you liked the thumbnail for a video, they can't come to any conclusion about whether or not you liked any of the other videos. TikTok, by focusing on one video at a time, collects much better information.
I don't use DDG, but in my (very limited, just now) testing it doesn't seem to shuffle results unless you reload the page in some way. Is it possible you're browser is reloading the page when you go back? If so, setting DDG to open links in new tabs might fix this problem.
This behavior started happening for me in the last few months. If I click on a result, then go back, I have different search results.<p>I've found a workaround, though – click back into the DDG search box at the top of the page and hit enter. This then returns the original search results.
Hi - I work on search at DuckDuckGo. Do you mind sharing a bit more detail about this issue? What steps would allow us to reproduce what you're seeing?
> Some of the most interesting, and most subtle, algorithm work was done keeping that system "critically damped" so that it would converge quickly.<p>Looking back at my early work with microservices I'm wondering how much time I would have saved by just manually setting a tongue weight.
Similar to how Google images loads lower quality blurred thumbnails towards the bottom of the window at first so that the user thinks they loaded faster
This is less a question of perfection and one of trade off's. Laws of physics put a limit on how efficiently you can keep data in NYC and London in perfect sync, so you choose CAP-style trade-offs. There are also $/SLO trade-offs. Each 9 costs more money.<p>I like your example it is very interesting. If I get to work on (or even hear someone in my team is working on) such interesting problems and I can hear about it, I get happy.<p>Interesting problems are rare because like a house you might talk about brick vs. Timber frame once, but you'll talk about cleaning the house every week!
Would you be willing to share more about how you guys did click ranking at Blekko? It's an interesting problem.
What became of Blekko?
PID techniques useful?
I'm a bit confused.<p>The lossy timeline solution basically means you skip updating the feed for some people who are above the number of reasonable followers. I get that<p>Seeing them get 96% improvements is insane, does that mean they have a ton of users following an unreasonable number of people or do they just have a very low number for reasonable followers. I doubt it's the latter since that would mean a lot of people would be missing updates.<p>How is it possible to get such massive improvements when you're only skipping a presumably small % of people per new post?<p>EDIT: nvm, I rethought about it, the issue is that a single user with millions of follows will constantly be written to which will slow down the fanout service when a celebrity makes a post since you're going through many db pages.
When a system gets "overloaded", typically it enters exponential degradation of performance state, i.e. performs self ddos.<p>> Seeing them get 96% improvements is insane<p>TFA is talking about P99 tail latencies. It does not sound too insane to reduce tail latencies by extraordinary margins. Remember, it's just reshaping of latency distribution. In this case pathological cases get dropped.
> does that mean they have a ton of users following an unreasonable number of people<p>Look at the accounts of OnlyFans models, crypto influencers, etc. They follow thousands or even tens of thousands of accounts in the hope that we will follow them in return.
I don't see that accommodating this behavior is prosocial or technically desirable.<p>Can you think of a use case?<p>All sorts of bots want this sort of access, but whether there are legitimate reasons to grant it to them on a non-sharded basis is another question since a lot of these queries do not scale resources with O(n) even on a centralized server architecture.
Given enough time, you'll end up with a lot of legitimate users who follow a huge number of accounts but rarely interact with more than a handful, similar to how many long-time YouTubers have a very high subscriber:viewer ratio (that is, they have way more subscribers than you would expect given their average view count), and there's nothing inherently suspicious about it. People lose access to their accounts, make new accounts, die, get bored, or otherwise stop watching the content but never bother unsubscribing because the algorithm recognized this and stopped recommending the channel's uploads to them.<p>Bluesky doesn't have this problem yet because it's so young, so the outsized follow counts are mostly going to be from doomscrollers and outright malicious users, but even if it was exclusively malicious users, there is no perfect algorithm to identify them, much less do so before they start causing performance problems. Under those constraints, it makes sense to limit the potential blast radius and keep the site more usable for everyone.
From TFA:<p>> Generally, this can be dealt with via policy and moderation to prevent abusive users from causing outsized load on systems, but these processes take time and can be imperfect.<p>So it’s a case of the engineers accepting that, however hard they try to moderate, these sorts of cases will crop up and they may as well design their infrastructure to handle them.
> does that mean they have a ton of users following an unreasonable number of people<p>They do, there are groups of users on bluesky who follow inordinate numbers of other accounts to try and get follows back.
They were specifically looking at worst-case performance. P99 means 99th percentile, so they saw 96% improvement on the longest 1% of jobs.
Ok I'm curious: since this strategy sacrifices consistency, has anyone thoughts about something that is not full fan-out on reads or on writes ?<p>Let's imagine something like this: instead of writing to every user's timeline, it is written once for each shard containing at least one follower. This caps the fan-out at write time to hundreds of shards. At read time, getting the content for a given users reads that hot slice and filters actual followers. It definitely has more load but<p>- the read is still colocated inside the shard, so latency remains low<p>- for mega-followers the page will not see older entries anyway<p>There are of course other considerations, but I'm curious about what the load for something like that would look like (and I don't have the data nor infrastructure to test it)
Hmm. Twitter/X appears to do this at quite a low number, as the "Following" tab is incredibly lossy (some users are permanently missing) at only 1,200 followed people.<p>It's <i>insanely</i> frustrating.<p>Hopefully you're adjusting the lossy-ness weighting and cut-off by whether a user is active at any particular time? Because, otherwise, applying this rule, if the cap is set too low, is a very bad UX in my experience x_x
> It's _insanely_ frustrating.<p>> at only 1,200 followed people.<p>I follow like, 50 people on bluesky. Who is following 1,200 people? What kind of value do you even get out of your feed?
1200 people is really nothing, specially if you have a job tangentially related to social media (for example journalists). It's really simple, you are not the same type of user. You have 50 "acquaintances", they have 1200 "sources".<p>The article is talking about people who have following/follower counts in the millions. Those are dozens of writes per second in one feed and a fannout of potentially millions. Someone with 1200 followers, if everyone actually posts once a day (most people do not) gets... a rate of 0.138 writes per second.<p>They should be background noise, irrelevant to the discussion. That level of work is within reasonable expectation. What they're pointing out is that Twitter is aggressively anti-perfectionist for no good technical reason - so there must be a business reason for it.
I can come up with 100 people I'd want to follow on Twitter, and I don't even have an account. Don't dismiss other people's use-cases if you don't have or understand them.
> Additionally, beyond this point, it is reasonable for us to not necessarily have a perfect chronology of everything posted by the many thousands of users they follow, but provide enough content that the Timeline always has something new.<p>While I'm fine with the solution, the wording of this sentence led me to believe that the solution was going to be imperfect chronology, not dropped posts in your feed.
So, let's say I follow 4k people in the example and have a 50% drop rate. It seems a bit weird that if all (4k - 1) accounts I follow end up posting nothing in a day, that I STILL have a 50% chance that I won't see the 1 account that posts in a day. It seems to me that the algorithm should consider my feed's age (or the post freshness of my followers). Am I overthinking?
This feels like an edge case.<p>The "reasonable limit" is likely set based on experimentation, and thus on how much people post on average and the load it generates (so the real number is unlikely to be exactly "2000", IMHO).<p>If you follow a lot of people, how likely it is that their posting pattern is so different from the average? The more people you follow, the less likely that is.<p>So while you can end up in such situation in theory, it would need to be a very unusual (and rare) case.
I think the 'law of large numbers' says that it's very unlikely for you to follow 4k and have _none_ of them posting. You could artificially construct a counter-example by finding 4k open but silent accounts, but that's silly.<p>The other workaround is: follow <i>everyone</i>. Write some code to get what you want out of the jetstream event feed. <a href="https://docs.bsky.app/blog/jetstream" rel="nofollow">https://docs.bsky.app/blog/jetstream</a>
Yeah, this seems concerning to me. Maybe now as the platform is new this isn't much of an issue. But as accounts go inactive people will naturally collect "dead" accounts that they are still following. On Facebook it isn't uncommon of to have old accounts of sociable people naturally collect thousands of friends.<p>It seems that what they are trying to measure is "busy timelines" and it seems bag they could probably measure that more directly. For example what is the number of posts in the timeline over theast 24h? It seems that it should be fairly easy to use this as the metric for calculating drop rate.
Love reading these sorts of "technical problem + solution" pieces. The world does not need more content, in general, but it does need more of this kind of quality information sharing.
Anyone following hundreds of thousands of users is obviously a bot account scraping content. I'd ban them and call it a day.<p>However, I do love reading about the technical challenge. I think Twitter has a special architecture for celebrities with millions of followers. Given Bluesky is a quasi-clone, I wonder why they did not follow in these footsteps.
You don't need to follow anyone (or even have an account) to scrape content… Someone following a huge amount of accounts usually wants to get a lot of followers quickly this way through follow-backs.
> Given Bluesky is a quasi-clone, I wonder why they did not follow in these footsteps.<p>There are only six users with over a million followers, and none with two million yet.<p>I'm sure they'll get there.
Maybe not hundreds of thousands but I'd follow anybody that looks remotely interesting and then primarily use customized feeds. E.g. if I wanna hear about union news, my personal irl network, etc I check that feed
if you want to scrape all the content, that's what the firehose is for, and it's allowed.<p>the only reason to mass-follow is for spam purposes.
This does assume that scrapers are smart, and often they're really not. They have infrastructure for scraping HTML from webpages at scale and that is the hammer they use for all nails. (e.g. Wikipedia has to fight off scraper traffic despite full archives being available as torrents, etc.)<p>In this case I agree though, they're all spammers and/or "clout farmers", or trying to make an account seem more authentic for future scams. They want to generate follow notifications in the hope that some will follow them back (and if they don't, they unfollow again after some interval).
100%. I ran a job board where we provided a nice machine readable XML feed of all of our jobs, but we had bots that insisted on using the standard search box. Searching by city using an alphabetized list.<p>Geographic search to was the most expensive thing they could have done and no matter what we did we couldn’t get them to use the XML feed.<p>I even tried returning a link to the feed when we detected a bot. No dice. They just kept working around the bot detection.
BlueSky has starter packs that allow you to mass follow in the click of a button. You join 10 starter packs in one day, you are following over 1000 people. Sometimes following others is the only way to get people to engage with your content.
Or just enforce a maximum number of followed accounts.
No matter how high you set a maximum limit for interactions on social media (followers, friends, posts, etc), <i>someone</i> will reach the limit and complain about it. I can see why Bluesky would prefer a "soft limit", where going above the limit will degrade the experience. It gives more flexibility to adjust things later, and prevents obnoxious complaints from power users with outsized influence.
I’m skeptical that the people who would complain about that wouldn’t find something else to complain about if you resolved the first complaint. I’d recommend implementing product features that you think are reasonable and accepting the fact that you will get complaints from people who disagree.
Potential solutions:<p>- Make it easy to systematically unfollow people (or degrade them to a different tier, see below, or sort them automatically into a different feed; maybe even allow automatic following of certain people, like your cities mayor or local ice cream parlors). Like based on recent activity, last engagement with a post, type of content (pictures, videos, links ...), on a schedule (e.g. follow for 3 yeard, follow until 2028), special status (family, friends, member of congress, member of city council, mayor...), number/ratio of common followers, regex expressions, recommendations by certain accounts, letter-to-word ratio, season, planetary alignment, weather, age, train departure time, side-chaing based on other accounts, force accounts to play russian unfollow roulette, urgency to pee, healthcare CEO life expectancy derivative, ... or any combination of these.<p>- Allow different tiers of following someone. Like friends (never unfollow, always fetch updates), family (never unfollow, rate limit high-energy uncles), news (filter based on urgency or current topics of interest), politicians (highlight as untrustworthy, attach link to donation and board membership disclosure, attach term-limit and next election countdown), local businesses (hard rate limit, attach opening hours), bookmark (never unfollow, no updates), ... maybe multiple tiers in each category and allow those being followed to either temporarily boost their tier (or tiers of certain posts) or e.g. once per year.<p>- Allow people from exempting some of their posts from not being shown to some of their followers. E.g. two per week and an additional 5 per month.<p>- Allow people to choose which followers should be given a higher priority when writing posts to their feeds.
AWS has a cool general approach to this problem (one badly behaving user effecting others on their shard)<p><a href="https://aws.amazon.com/builders-library/workload-isolation-using-shuffle-sharding/" rel="nofollow">https://aws.amazon.com/builders-library/workload-isolation-u...</a><p>The basic idea is to assign each user to multiple shards, decreasing the changes of another user sharing <i>all</i> their shards with the badly behaving user.<p>Fixing this issue as described in the article makes sense, but if they did shuffle sharding in the first place it would cover any new issues without effecting many other users.
Nice problem to have, though. Over on Nostr they're finding it a real struggle to get to the point where you're confident you won't miss replies to your own notes, let alone replies from other people in threads you haven't interacted with.<p>The current solution is for everyone to use the same few relays, which is basically a polite nod to Bluesky's architecture. The long-term solution is—well it involves a lot of relay hint dropping and a reliance on Japanese levels of acuity when it comes to picking up on hints (among clinets). But (a) it's proving extreme slow going and (b) it only aims to mitigate the "global as relates to me" problem.
When I go directly to a user's profile and see all their posts, sometimes one of their posts isn't in my timeline where it should be. I follow less than 100 users on Bluesky, but I guess this explains why I occasionally don't see a user's post in my timeline.<p>Lossy indeed.
If another user you follow reposted or replied to a post, it can affect its order in your following feed. You shouldn't be seeing any loss as described in the article from following only 100 users.
I've experienced it with "first-party" posts, not replies. A post wouldn't show in my timeline but would on the user's profile. This is the official android app, but there has been an update or two so I'll have to double check again
Are you using an app, website, or combination?<p>Various clients (I’m writing one) interpret the timeline differently, as a feed that shows literally everything includes could things that most people would find undesirable or irrelevant. (replies to strangers, replies to replies to replies, etc)
I am a bit perplexed though as to why they have implemented fan-out in a way that each "page" is blocking fetching further pages, they would not have been affected by the high tail latencies if they had not done this,<p>"In the case of timelines, each “page” of followers is 10,000 users large and each “page” must be fanned out before we fetch the next page. This means that our slowest writes will hold up the fetching and Fanout of the next page."<p>Basically means that they block on each page, process all the items on the page, and then move on to the next page. Why wouldn't you rather decouple page fetcher and the processing of the pages?<p>A page fetching activity should be able to continuously keep fetching further set of followers one after another and should not wait for each of the items in the page to be updated to continue.<p>Something that comes to mind would be to have a fetcher component that fetches pages, stores each page in S3 and publishes the metadata (content) and the S3 location to a queue (SQS) that can be consumed by timeline publishers which can scale independently based on load. You can control the concurrency in this system much better, and you could also partition based on the shards with another system like Kafka by utilizing the shards as keys in the queue to even "slow down" the work without having to effectively drop tweets from timelines (timelines are eventually consistent regardless).<p>I feel like I'm missing something and there's a valid reason to do it this way.
I interpreted this as a batch write, e.g. "write these 10k entries and then come back". The benefit of that is way less overhead versus 10k concurrent background routines each writing individual rows to the DB. The downside is, as you've noted, that you can't "stream" new writes in as older ones finish.<p>There's a tradeoff here between batch size and concurrency, but perhaps they've already benchmarked it and "single-threaded" batches of 10k writes performed best.
I found it odd to base the loss-factor on the number of people you follow, rather than a truer indication of timeline-update-frequency. What if I follow 4k accounts, but each of those accounts only posts once a decade? My timeline would be become unnecessarily lossy.
The funny thing is that all of the centralization in Bluesky is defended as being necessary to provide things like global search and all replies in a thread, things that Mastodon simply punts on in the name of decentralization. But then ultimately, Bluesky has to relax those goals after all.
This design makes sense if you didn’t previously have any limit on the number of people an account could follow. But why not have a limit?
Interesting! I wonder what value they chose for the `reasonable_limit`.
It's 4k: <a href="https://bsky.app/profile/jaz.bsky.social/post/3likncbqutk2y" rel="nofollow">https://bsky.app/profile/jaz.bsky.social/post/3likncbqutk2y</a>
ought to be possible to reverse-engineer it by following a large number of active accounts and seeing what percentage of their posts actually hit your feed
An interesting solution to a challenging problem. Thank you for sharing it.<p>I must admit, I had some trouble following the author's transition from "celebrity" with many followers to "bot" with many follows. While I assume the work done for a celebrity to scatter a bunch of posts would be symmetric to the work done for a commensurate bot to gather a bunch of posts, I had the impression that the author was introducing an entirely different concept in "Lossy Timelines."
That’s quite interesting and a challenge I have not thought of. I understand the need for a solution and I believe this works reasonably well, but I am wondering what is happening to users that follow a lot of accounts with below-average activity. This may naturally happen on new social media platforms with people trying out the service and possibly abandoning it.<p>The „reasonable limit“ is likely set to account for such an effect, but I am wondering if a per-user limit based on the activity of the accounts one follows will be an improvement on this approach.
To help avoid the hot shard problem, I wonder how capping followers per "timeline" would perform. Especially each user would have a separate timeline per 1000 followers and the client would merge them. You could still do the lossy part, if necessary, by only loading a percent of the actual timelines. That wouldn't help the celebrity problem but it was already acknowledged earlier that the solution to that is to not fan out celebrity accounts.
In the fanout design, why not dynamically move on to the next 10,000-user page as soon as all tasks for the current page are either queued or processing? Would that approach improve throughput, or could it introduce issues like resource contention?
On a related note, I am pretty confident that one of the main reasons the WWW succeeded where previous attempts failed was that it very specifically allowed 404s.
A simpler option is to put a limit on the number of accounts one’s can follow. Who needs to follow more than 4k followers if not bots?
The solution to this problem is known and implemented already: the social web should be distributed between thousands of pods which should contain at the maximum a few thousands users.
Diaspora is already working like this for 15 years. It is technically harder to build initially but it then divide all the problems (maintenance, moderation, load, censorship, trust of the owner...) Which makes the network much more resilient.
Bluesky knows that and they are allowing other people to host their software but they are really not pushing for it and it highly doubt that the experience of a user on a small external pod is the same than on bluesky.com.
This particular problem will still exist for a fediverse server. You follow 10k people? Nice, now you're getting ddos'd by their activities. Though, most fediverse servers being monolithic applications definitely helps.
> some of them will do abnormal things like… well… following hundreds of thousands of other users.<p>Sounds like Bluesky Pro.
I think something like this was a FB engineering interview (several years ago), just for instagram feeds.
the use of fan-out to followers and a lazy fetch of popular followed accounts when follower's timeline is served a good implementations in hot reload scenarios
Are users informed that they follow too many creators and now they will not see every post on their timelines?
The typical problem of a centralized infrastructure.<p>Indeed:<p>> This means each user gets their own Timeline partition, randomly distributed among shards of our horizontally scalable database (ScyllaDB), replicated across multiple shards for high availability
"Lossy timelines" have already been implemented in ActivityPub and Mastodon by design. Will Bluesky ever catch up? It remains to be seen.
Principle: Progress over perfection.
Note that all of this reflects design decisions on Bluesky's closed-source "AppView" server—any federated servers interacting with Bluesky would need to construct their own timelines, and do not get the benefit of the work described here.
As others have noted, the appview is open source. The dataplane has two implementations, one in postgres and another in scylla. The scylla dataplane is closed, the postgres one is open.<p>The interesting next stage for the postgres implementation is to create a sync engine for partial syncs of the network, so that an appview can run affordably. We ran some benches on the current state of the postgres implementation and found we could index 300k users on a $100/mo vps. I think with a couple of weeks of optimization that could reach 1mm users.
This is not true. Third party PDSes are fully supported by our app view, and our app view generates timelines for all the users on those PDSes.
What reason does Bluesky give for not opening up their AppView code?<p>Another notable component that is closed source is the discovery feed generator, where at least there is <i>some</i> reason.
I asked this and got<p>> We did a backend rewrite from postgres to scylla and it has a bunch of deployment specific stuff, but is functionally identical to the open source postgres version. Its not really a "v2" in terms of new features, we just made it make use of our hardware really well[1]<p>[1]: <a href="https://bsky.app/profile/iame.li/post/3l7e3jfqit22s" rel="nofollow">https://bsky.app/profile/iame.li/post/3l7e3jfqit22s</a>
Thanks, so are both the Postgres and Scylla versions maintained in terms of new features?<p>I wasn't aware that AppView v1 was open source, and the most recent info I'm aware of on the topic is <a href="https://alice.bsky.sh/post/3laega7icmi2q" rel="nofollow">https://alice.bsky.sh/post/3laega7icmi2q</a>, <a href="https://github.com/bluesky-social/atproto/discussions/2961">https://github.com/bluesky-social/atproto/discussions/2961</a> and <a href="https://docs.bsky.app/docs/advanced-guides/federation-architecture" rel="nofollow">https://docs.bsky.app/docs/advanced-guides/federation-archit...</a>, and everything I've heard about Bluesky was that open source appview is "still coming".
It's not coming, it never went away… As I understand it, the "business layer" with all the logic is above the data later, shared by the Postgres and Scylla versions, and the data layer just makes queries to the database. I think they are using the Postgres version locally for development.
The App View frontend is open source: <a href="https://github.com/bluesky-social/social-app">https://github.com/bluesky-social/social-app</a><p>Much of the backend is open source as well: <a href="https://github.com/bluesky-social/atproto/tree/main/packages">https://github.com/bluesky-social/atproto/tree/main/packages</a><p>What is not are the extra services they run to provide a better and faster UX. Even if it was open source, it likely costs 10s of thousands to run per month (they have moved largely to "onprem" hardware instead of the cloud aiui)
That's the frontend code, it doesn't include the backend API services, which are closed source.
the backend (the AppView) can be found here:<p><a href="https://github.com/bluesky-social/atproto/tree/main/packages/bsky">https://github.com/bluesky-social/atproto/tree/main/packages...</a><p>there are various supporting services written in Go as well<p><a href="https://github.com/bluesky-social/indigo">https://github.com/bluesky-social/indigo</a>
Which is what I said in the second sentence
AppView is a specific term of art within the Bluesky federation architecture: <a href="https://atproto.com/guides/glossary#app-view" rel="nofollow">https://atproto.com/guides/glossary#app-view</a>, you were incorrect in identifying the public frontend repo as the AppView.
The glossary specifically calls out the UI as part of an app view. Can you explain why it is not according to you?
A frontend is (can be) part of an App View. It is quite literally the app you view the network through. There can also be headless app views and app views which have no backend
that's not the appview, that's the client
App View is a bit fuzzy of a term. To me it seems like a combination of frontend, backend, custom lexicon, and supporting services. There isn't really another place in the spec or design where clients or browsers fit in, which do in fact provide a view of the network via an app.
when I read the spec it seemed like the operator of an AppView & Relay would be most in need of compensation for their hosting costs due to the amount of demand on those components so I believe the spec allows an operator to implement their own AppView & monetize it as that operator sees fit, so that they can afford to operate the service and maybe even make money off of it so that they can make it their full time jobs.
what else? profit by means of doing work that benefits first and foremost the private proprietors of the closed source<p>if they gave it away (which used to be unfeasible until the digital era) they feel they’re loosing their valuable effort which they’re wont on concentrating, not diluting.
My thinking has evolved on this topic significantly as of late. My current thinking is we should create a secure gossip network on top of the Bluesky API, and forgot about all the DAG-CBOR stuff that gets stripped from the Jetstream. Hash the posts on the gossip layer and if posts change then diff them. This is all prep for when X billionaire buys out Bluesky then we just pop some signing key crypto on top of this gossip layer and wow! It's distributed!
So the system design puts the burden on what seems to be synchronous, not queued, writes to get easy reads. I usually prefer simpler cheaper writes at the cost of more complicated reads as the reads scale and parallelize better.
I understand that it's a different point, but how can someone write a whole essay called "When imperfect systems are good" without once mentioning Gabriel or <a href="https://en.wikipedia.org/wiki/Worse_is_better" rel="nofollow">https://en.wikipedia.org/wiki/Worse_is_better</a>?
Anecdotally, I ran into a similar solution "by chance".<p>Long ago, I worked for a dating site. Our CTO at the time was a "guest of honor" who was brought in by a family friend who was working in the marketing at the time. The CTO was a university professor who took on a job as a courtesy (he didn't need the money nor fame, he had enough of both, and actually liked teaching).<p>But he instituted a lot of experimental practices in the company. S.a. switching roles every now and then (anyone in the company could apply for a different role except administration and try themselves wearing a different hat), or having company-wide discussions of problems where employees would have to prepare a presentation on their current work (that was very unusual at the time, but the practice became more institutional in larger companies afterwards).<p>Once he announced a contest for the problem he was trying to solve. Since we were building a dating site, the obvious problem was matching. The problem was that the more properties there were to match on, the longer it would take (beside other problems that is). So, the program was punishing site users who took time to fill out the questionnaires as well as they could and favored the "slackers".<p>I didn't have any bright ideas on how to optimize the matching / search for matches. So, ironically, I asked "what if we just threw away properties beyond certain threshold randomly?" I was surprised that my idea received any traction at all. And the answer was along the lines of "that would definitely work, but I wouldn't know how to explain this behavior to the users". Which, at the time, I took to be yet another eccentricity of the old man... but hey, the idea stuck with me for a long time!
> This process involves looking up all of your followers, then inserting a new row into each of their Timeline tables in reverse chronological order with a reference to your post.<p>Seriously? Isn't this the nut of your problem right here?
What alternative design did you have in mind, given that a Twitter-like data model of individual follows is likely a strict product requirement?<p>There are obviously other ways of doing it (doing the timeline propagation in a batch job, fanning out the reads rather than the writes), but they've got their own problems. Probably worse ones.
An airline reservation system has to be perfect (no slack in today's skies), a hotel reservation can be 98% perfect so long as there is some slack and you don't mind putting somebody up in a better room than they paid for from time to time.<p>A social media system doesn't need to be perfect at all. It was clear to me from the beginning that Bluesky's feeds aren't very fast, not like they are crazy slow, but if it saves money or effort it's no problem if notifications are delayed 30s.
It's funny because from my experience airline systems are very imperfect (timing wise).<p>I (unwisely) tried to purchase an Icelandair ticket via the Chase travel portal. I would get a reservation number, go buy seats on Icelandair's website, and a few days later the entire reservation would vanish into the ether. Rinse and repeat 3x.<p>I can't remember the exact verbiage, but basically tickets can be "reserved" and "booked". One means the ticket is allocated, and one means the ticket is actually paid for. I eventually sat on the phone with an executive support person as they booked the ticket and got it all the way through. It turns out Chase reserves a ticket on an airline but as an SLA of ~3 days to actually pay for the ticket. Icelandair's requires a ticket to be paid with in 24 hours, so it was timing out.
(Replying to both you and the parent poster)<p>Airlines are far from perfect. They overbook flights and sometimes have to ask people leave and pay them for the inconvenience. My wife and I once got $1000 a piece and a hotel and food voucher to volunteer to take a flight the next day on a layover in Atlanta.<p>As far as your particular situation, the number one rule of using a third party portal to book flights or hotels is - don’t.<p>I understand that Iceland Air is not a transfer partner of Chase. But even in that case, I would just wait to use my points until I could use a transfer partner.<p>On the earning side if paying cash, the difference between 2x/3x points when booking directly and 5x when going through the portal just isn’t worth the risk.
Overbooking is not a mistake, though. People miss flights for many reasons, and the airlines predict this with impressive accuracy, to the point that they can afford to pay tremendous sums for being wrong and yet still come out ahead.
Especially for a free service!<p>Think about other ad-supported sites. If you're an engineer working on an ad-supported product, the perfect consistency you strive for in your code is not the product. The product is the sum of all of the content the user sees. And the costs of the tradeoffs you make are paid for by ads.<p>Am I willing to see 10x more ads for perfect consistency? Definitely not.
Does the fact that an airline booking system must be perfect explain why so many flights are overbooked or cancelled?
No, overbooking is a business decision justified by the fact that, statistically, not all passengers will actually show up for their flight, and lower load factors cost money.
> airline reservation system has to be perfect (no slack in today's skies)<p>The slack just gets moved. Airlines oversell by about 8 percent. All
systems need <i>some</i> slack in them. Isn't that kinda Bob's Law or
something?
Miscommunication leads to bad outcomes. One missed message out of order could easily lead to a fight, a lawsuit, a flash mob, threats of violence - that then need to be taken seriously, swatting, DOXxing, etc...<p>Msg 1: I hate ___insert_controversal_person_category_here___<p>Msg 2: Is the kind of statement that really sets me off<p>Msg 1 has a very different meaning if you don't see Msg 2.
It’s really impressive how well Bluesky is performing. It really feels like a throwback to older social media platforms with its simplicity and lack of dark-patterns. I’m concerned that all the great work on the platform, protocol, etc won’t shine in the long term as they eventually need to find a revenue source.
I love Mastodon but I have to admit that BlueSky has clearly out-engineered them. Of course they started with much more expertise and resources. I hope ActivityPub compatibility soon to unite the two
They've done an incredible job running with an extremely low headcount and crazy efficient use of hardware. It would be easy to 10x their expenses if they were blindly following the standard cloud deployment playbook. Hopefully this level of efficiency mean they don't have to work as hard and can stay pre-revenue, a pure play, for a very long time.
Absolutely. The profit motive is the root of most evil. It is a shame that so many are trained to believe it is the only motive available.
I completely agree with this... but without profit, people can't get paid, and they'll stop building. I do hate this incredibly need for growth, of course, but financial growth is necessary to pay people and give them raises and allow them to have upward mobility at the company.<p>I hope Bluesky is able to find a model that works for them AND for consumers. (I do know it's an open protocol, so it'll live on without Bluesky itself! However, as this post shows, it's a lot of work to build on the prototype... so if not them, who? And if someone else, how will they become sustainable?)
It's semantics but I like to separate money from profits. You need money to pay people and to survive but you don't need to be raking in endlessly growing piles of it. This is something that was really demoralizing about working for a big company, they could be making like 50000000000 a year in just profits but still be ruthless in getting more. Like I just want to make a product I'm proud of and I'm happy living a simple life, I am happier now making less money but not feeling like I'm endlessly milking customers.
That is not semantics. It is fundamental economics.
Once you take on investors, that’s not an option. VCs expect rapid growth and an exit - statistically through acquisition, but occasionally an IPO.<p>Once you go public, then you have investor pressure and can be subject to activist investors unless the founder has controlling interests like in the case of Meta and Google.
At the same time I feel like a lot of companies grow much larger than they need to be simply because of bigger is better mentality. How many of Uber's 30,000ish employees are involved with making sure the app and backend database are working properly? Are they really doing 600 times more work than Craigslist at connecting sellers with buyers?
I'm an Uber hater, but... yes.<p>Like, sure, they don't need every single one of those 30,000... but they have to have ground teams in every city in the world. Connections with every airport. Connections with almost every restaurant in the world. Customer support and safety (okay I know they don't nail this, but still). They need to pay out drivers in each country. The app needs to work in hundreds of countries, all with different laws, currencies, languages and more. Some places let you pick up anywhere, others require specific locations. And that's not even including marketing, partnerships, HR, finance, etc.<p>I don't think the employees are the problem with Uber, it's the shareholders. They need to make X back, so that delta is where drivers get squeezed.
You cannot compare uber to Craigslist.<p>Uber takes on so much more responsibility of the transaction. Setting price, handling disputes, real time coordination, etc.
Aren't you actually arguing in <i>favor</i> of profit-driven behavior? You're not disagreeing with profit as a motivator, you're questioning if the 30,000 employees is the maximal way to achieve profit.
> <i>but without profit, people can't get paid, and they'll stop building</i><p>I wholeheartledly disagree. People build things all the time for things other than profit. In fact, most of the greatest things ever built were a loss for those who built them.<p>Dignity is the best motivator. Profit only supercedes dignity when dignity is not on offer.
Yes, but there is a path, and it's simplicity.<p>Lichess, is it bad? It basically solves the whole problem. If well-designed distributed social media site could be something like that. Donations are enough to support one guy at least.
I totally get/relate to your perspective, but to be the annoying leftie in your ear:<p>A) Sustainable revenue is a requirement for any company, yes, but the unlimited (above-inflation) growth demanded by most large corporations is absolutely not. Lots and lots of companies operate for a long time without expecting massive growth, raises n' all. MBAs pejoratively call such companies "lifestyle businesses"--as in "just pays for people to live"--but I'd call them "normal, healthy companies".<p>B) More fundamentally: the idea that a social media network can only be built by a single corporation owned by investors is an omnipresent, yet extremely toxic, assumption. Mastodon represents another extreme end of the capital<->labor spectrum where anyone can contribute to the network at any time with their own instance, but I think Bluesky is a hint of a less-pure--and therefor more feasible--future.<p>To use the language of my favorite dream, Chomskian Anarcho-Syndicalism: imagine a social media network organized by a democratic non-profit entity akin to the Python or Linux Foundations, that then contracts out work to a hierarchy of smaller, purpose-built teams ("syndicates"), each of which may in turn contract w/ other teams. Each team would have to attract talent and negotiate enough income to pay them sufficiently still, of course, but there would be no team leader to make a surplus profit from the system -- any "surplus" would stay at the non-profit level, and thus necessarily be reinvested back into the product.<p>In the current system, the reason Bluesky didn't do this off the bat is obvious: no one would loan them startup funds, as ownership investment is the de facto universal way to start up an unproven venture. But we can dream bigger and better, IMHO; both on a smaller scale by building upon already-proven open protocols like AT Proto, and on a larger scale by structuring the state & economy to support this kind of model equally, if not primarily.
All of the big tech companies today are the result of 100s of smaller, well intentioned tech companies that got acquired into these behemoths.<p>I always look at how WhatsApp played out as the company. They were the good guys, and didn't want to get acquired. Zuckerberg, almost bankrupt FB at the time giving into all of the ridiculous demands WhatsApp made. No one at WhatsApp thought it was going to happen, until it did and did result in a once-in-a-lifetime transfer of wealth to several hundred employees.
On the other hand, running something like BlueSky is not terribly expensive. A foundation with a reasonable endowment can do that indefinitely.<p>Initially, it can be funded by selling tools that do analytics or by donations (like Wikipedia).
If Bluesky ever gets close to becoming a serious threat to Meta's walled garden, the effort to fight back against them will take a lot of capital. Just the legal battles alone will cost a fortune.<p>Wikipedia isn't a threat to anyone, they just have to generate enough capital to exist.
Yes! If the venture capitalists that are already involved stick to their stated principles and don't demand eternal growth (which... fingers crossed?), I think bsky has an extremely feasible, promising future.<p>They've intentionally kept a low footprint to keep expenses down, and while income via donation is out of the picture (unless AT Proto grows into a full ecosystem, I suppose?), cosmetics are a tried-and-true model for supporting something that most users use for free, but that some power users spend all day on and want shiny stuff for. They'll probably end up exploring Discord-esque paywalled features for power users as well, which isn't necessarily <i>ideal</i> but is leagues better than getting on the currently-dying vicious cycle of Display Ads, IMO.
This is hardly the first instance of "if only venture capitalists light their money on fire, we can have nice things."<p>Spoiler: Venture capitalists don't light their money on fire, and we can't have nice things.
There's no reason Bluesky has emulate what FB Newsfeed and Twitter/X did to solve engagement by promoting certain items over others.<p>At the very least, they do have hindsight to learn from.
Bluesky is a private for-profit company that has taken $37M in venture capital.<p><a href="https://www.piratewires.com/p/interview-with-jack-dorsey-mike-solana" rel="nofollow">https://www.piratewires.com/p/interview-with-jack-dorsey-mik...</a><p>> That was the second moment I thought, uh, nope. This is literally repeating all the mistakes we made as a company. This is not a protocol that’s truly decentralized. It’s another app. It’s another app that’s just kind of following in Twitter’s footsteps, but for a different part of the population.<p>> Everything we wanted around decentralization, everything we wanted in terms of an open source protocol, suddenly became a company with VCs and a board. That’s not what I wanted, that’s not what I intended to help create.
"Hot Shards in Your Area" - 10/10 heading
[stub for offtopicness]
I don’t understand the infatuation with blue sky. The minute they need money it’ll go the way of the Reddit and twitter.
If everything good is assumed to eventually become bad, why not use things while they are good and then immediately move on when it becomes bad?
Your actions' consequences are not limited to benefiting from the thing like it would for a product - with social media, you improve the networking effect for the soon-to-be bad. (Nothing against bluesky, I don't know or think it will do so)
Not everything good becomes bad. That premise is wrong.<p>Bluesky accepted VC money. For a social platform that means its death certificate has already been signed.<p>What you're ignoring with that framing is that we can use social media that operates outside the VC startup pipeline and doesn't have enshittification baked in from the start.
People want the old Twitter, and Bluesky is close to that. It also cosplays being decentralized to people who don’t look too closely.
People seem to lark on and on about how it has better "default moderation" than Mastodon.
It's not that it is "better" but that the choice is individual, not up to the mastodon server. In Mastodon, you trade Elon for some other group of individuals, so what happens if they make decision on moderation or content you do not agree with?<p>ATProto is designed around accounts that are independent of data host, application, and moderation, all in the name of giving users individual control over these things. It's like if every Mastodon user ran their own server, but without the overhead
Are you suggesting the "big few" can't largely censor a given account?<p>I don't see how ATProto is doing noticeably better than the scenario where a large ActivityPub instance blocks your external account.
Generally, yes. Currently, because Bluesky requires the use of their labeler if you use their app, this could happen.<p>Two points of note<p>1. You can participate in Bluesky without the Bluesky app, so you can remove this requirement by using an alternative app<p>2. The most blocked account is blocked by around 0.25% of the full network (<a href="https://clearsky.app/" rel="nofollow">https://clearsky.app/</a>)<p>This second point does not account for users banned from Bluesky by Bluesky for breaking the ToS or PDS abuse.
>It's like if every Mastodon user ran their own server<p>No, it's like every Mastodon user used the same server, and all the coordination is done by one server that nobody can replicate.
You have the opportunity to demonstrate this. I am banned from Bluesky. (They didn't tell me why - just a generic "you violated community guidelines")<p>Tell me, concretely, how people can choose to continue following me, even though I am banned.<p>Profile: immibis.bsky.social
Create an account you own instead of having someone else run it. Maybe you can get your data, maybe you can ask Bluesky for a review (there were bugs and scaling issues against bot networks that cause false positives)<p>I'm not seeing that handle resolve in the normal places. Do you have the DID? You should use a custom domain so that you can control the the reference and lookup.<p>You can run your own PDS and manage complete account lifecycle
So after you're banned from Bluesky you create another account on a different server and hope the admins of your original server, which still hosts all the people you want to follow, don't block your new account from interacting with their server?<p>You said it was different from Mastodon, but how is this different from Mastodon?
I have my own domain already attached, I can point it at any server and my identity on the network remains the same.<p>When you use a *.bsky.social handle, you have not made yourself independent and resilient to arbitrary decision by the org that manages that service
Follow the instructions under "Self-hosting PDS" here: <a href="https://github.com/bluesky-social/pds">https://github.com/bluesky-social/pds</a>
Twitter was always... not great (there's a reason it was affectionately known as the Hellsite), but it had 16 years of being _tolerable_ for most people (the real exodus only really started with Musk's changes, though there had been a couple of smaller ones previously, mostly over Twitter messing with the API).<p>Frankly, if I get 16 years out of Bluesky before having to move onto the next one, I can live with that. Social networks _die_; it has always been so. USENET, livejournal, Tumblr, twitter... nothing lasts forever.
My bluesky feed is somehow even more abhorrent than my twitter one, except that instead of right wing hate it's Facebook memes about "reading banned books"
Bluesky's 'Discover' feed (the default algo feed that you get when you create your account) is based on _likes_, not follows, so if you never like anything you'll get random nonsense.<p>You can try using other algo feeds from here: <a href="https://bsky.app/feeds" rel="nofollow">https://bsky.app/feeds</a> and remove the discover feed, or of course you could just use the chronological one.
[flagged]
This is such a lazy, uninformed take that people just love to repeat. 1) the left on Bluesky is full of in-fighting because neolib left are convinced that Harris lost because of racism/sexism and the progressive left spend a lot of their time trying to educate (and dunk on) them for their braindead takes, and 2) any social media platform will become an echo chamber if you only choose to follow people that echo your sentiments. As long as Bluesky isn't actively censoring and suspending journalists and other public figures, there is <i>no</i> equivalence to Truthsocial or X and only a clown/shill/psyop would suggest as much.<p>It's really not that hard to find enriching content from all walks of life on Bluesky -- if somebody can't find it, they just suck at the internet.<p>To be clear, I <i>do</i> have grievances with Bluesky, and I do not have high hopes for its future -- but that's because I personally believe that social media in general is both fatally flawed from the start and detrimental to society, and will never <i>not</i> devolve into ad-riddled or otherwise enshittified services. I am not a Bluesky shill, I'm just here to call out the silly false equivalence with Truthsocial, etc.
> the left on Bluesky is full of in-fighting<p>yes, the right is full of infighting too as shown by the recent H1B debate, that doesn't contradict my point.<p>> any social media platform will become an echo chamber if you only choose to follow people that echo your sentiments<p>bluesky is almost 100% political and almost 100% left-wing. There is literally no one else to follow, at least for now. X still has non-political content, I mainly follow AI, technology and cryptocurrency, and I couldn't find similar content on bluesky.
I use Bluesky and literally only see Gamedev content. Unlike X or whatever, I control what I see.
> bluesky is almost 100% political and almost 100% left-wing. There is literally no one else to follow, at least for now. X still has non-political content, I mainly follow AI, technology and cryptocurrency, and I couldn't find similar content on bluesky.<p>Not op, but chiming in. There's a lot of content regarding aquatics and home automation (separate topics). I avoid the politics stuff entirely, and much of the crypto stuff on X tends to be promoting scams and rug-pulls.
> bluesky is almost 100% political and almost 100% left-wing.<p>A big contributor to this feeling is their default "Discover" feed being very mediocre. "Less of this" and "more of this" do not seem to impact what it gives you, neither do what you like, respond to, follow, or who you block. Some days it's entirely cat pictures, other days it's entirely politics (my suggested accounts to follow are 100% of the time in this category). Finding the good content is very difficult, and the handful of accounts I follow are largely accounts I had to manually search for or was given a direct link to somewhere else, which would never have come up naturally. And to try to fix it, I took the advice to use the block feature, er, liberally, and I think it made the problem worse.<p>I even wouldn't mind the politics being in the feed if it didn't show me the exact same things repeated again and again. I get that determining if two posts are too similar is difficult, but it could at least not show me the same image again and again and again...<p>I've found <a href="https://bsky.app/profile/skyfeed.xyz/feed/discover" rel="nofollow">https://bsky.app/profile/skyfeed.xyz/feed/discover</a> to be a slightly better version of the Discover feed, but it's a lot less dynamic.
Say what you will about Bluesky, but at least Jay isn't paling around with honest to god neo-nazis.
Wow that doesn't sound like a hyperbole at all.
You can add X to the truthsocial/gab group.
I would be so much more interested in Bluesky if it were technically impossible for a random super rich guy to buy and bend it to his whims.
Centrally-controlled social media platforms are not a good thing, period. Neither Twitter/X, nor BlueSky. Let's not fete them.
I honestly am annoyed to use websites and services like this. Annoys the crap out of me and everyone else, but since it's petty much forced down their throats, the "eventually" is "eventually everyone stops complaining".
Bluesky is the Conservative Dad Beer of "left" short form social media.<p>I implore everyone to use something better like Mastodon or maybe minds
"Hot Shards in Your Area"... I died
I don’t see much call for blusky anymore….