ADVERTISEMENT

Bluesky Social, another Twitter killer

Published Apr 17, 2023 08:36 am
Before the free-speech-absolutist who blocks and bans journalists who criticize him bought Twitter, Twitter announced a project to create a decentralized social network. Starting with the AT Protocol (ATP) specifications (see [https://atproto.com/](https://atproto.com/)), the project, now a company, developed the reference implementation, IMHO, which is Bluesky Social (see [https://bsky.app/](https://bsky.app/)). Bluesky recently released its free iOS app (download at [https://apps.apple.com/us/app/bluesky-social/id6444370199](https://apps.apple.com/us/app/bluesky-social/id6444370199)). Whilst readily available, the service is still not open to the public, i.e., you will need an invitation to be able to create an account. Luckily I was able to secure one through a friend I met on Micro.blog (hi [https://maique.omg.lol](https://maique.omg.lol/)!). So what's it like to be under Bluesky? Creating an account starts with a screen that shows you Bluesky as one of the servers (it defaults to this as I don't know of any other instance running ATP at the moment), then it asks the invite code before you can proceed with your email and your bsky.social handle. Once you are in, the interface is similar to the Twitter of old. Your timeline shows as default (Following) and then there's the popular timeline (What's Hot). There are four icons at the bottom: home, search, notifications and your profile. Pretty basic, yes. Mind you, it is not yet open to the public.

Bluesky has several priorities in the pipeline (see 
[https://blueskyweb.xyz/blog](https://blueskyweb.xyz/blog) to know what they're working on), so do not expect it to be at par with Twitter yet, not that it is planning to be exactly like Twitter! Heck, it is not yet at par even with Mastodon, Misskey, Calckey or Pleroma, considering it is barely a few months old. That being said, it is already functional as a social network! Based on the AT Protocol, Bluesky is intentionally designed to be decentralized. Yes, decentralization is the future - enough with centralized services like Twitter, Facebook, Instagram, Tiktok, and others. If anything, decentralization and federation have been proven to work by the ActivityPub-based federated universe, aka fediverse. Don't believe naysayers saying that the fediverse user-base is shrinking (it is not), but look at how much engagement has grown instead! Anyway, at the moment, Bluesky is in its own decentralized universe running on ATP, and hopefully someone is working on bridging both ATP and ActivityPub in the future. So Bluesky is on its own (again, I have said that I have not see any implementation of ATP yet - I am sure there are developers working on this already) at the moment. One thing that I noticed, content moderation and algorithmic timeline are high on their priority list. Out of the bat, the app already has MUTE capability, and with the recent app update, users can choose which type of content to filter out. As for the algorithmic timeline, their plan, at least as I have understood it, is to have users select which type of algorithms to use and add it on their timeline, along with Following and What's Hot. Pretty interesting, IMHO, but pretty complex, too. Can't wait to see it in action. Another thing that I like is that there is subscription needed to get your account verified as yours. Similar to how it is done on Mastodon, where you link your account with your website, Bluesky, albeit requiring more technical-jitsu, does this by allowing you to link your handle from the default @ .bsky.social to your own domain, e.g., me.null.dev. The assumption, like on Mastodon, you have full control of your own domain's DNS. Neat, huh? If you were on Twitter during the early days, then you'd find Bluesky to be familiar - where everyone is friendly. If you are sick of the current Twitter (I am!), then go secure an invite by joining the waitlist at[https://bsky.app/](https://bsky.app/). Hurry! Personally, I alternate between Bluesky and Mastodon, and yes, I find both to be far better than Twitter! 
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.