blob POST
What I’m learning is n----s don’t like Blacksky and I’m fine with it, I’ll push the line with it
What I’m learning is niggas don’t like Blacksky and I’m fine with it, I’ll push the line with it
— Rudy. (@rudyfraser.com) Jun 20, 2024 at 12:44 AM
Since my last blog post, I've been married, arrested for protesting, gave a talk at the Brooklyn Public Library, attended a workshop on decentralized social media, celebrated 1yr of Blacksky, was accepted to DigitalOcean's Hatch program, was awarded a micro grant from Bluesky, which got me into AWS for Startups, protested my friends' arrests, did a few interviews, got some cool (and uncool) mentions, and now ... we're here.
Throughout it all, I spent a lot of time building and a lot of time thinking about what it is exactly that I'm building towards.
My Black Job: Community Builder
👷🏾♂️: What actually is Blacksky?
Identity
Blacksky exists in a very curious place now. To some people, it is successful enough to write hatemail essays about. To external parties, it is promising but just not there yet (whatever 'there' is). Although it's a software project, because of the community aspect it is compared on the basis of community engagement and not on the features and possibilities the software allows for. (My therapist was surprised to learn that I don't see myself as a community builder.)
When you combine this, you get the following. Within 24 hours, two different people can say they aren't fans of Blacksky because it is too much like Black Twitter (not software) and also too different.
Two negatives make a positive. I believe if these people crossed paths and tried to nail down exactly what Blacksky is, they would come to the right conclusion eventually. And they'd understand Blacksky isn't like anything people compare it to. Just like AT Protocol is something new (unnecessarily new if you let ActivityPub devs tell it), Blacksky is also something new. Let me break it down (again)..
Cockroach 🪳 vs. Unicorn 🦄
At 5.6M users, Bluesky doesn't even know what Bluesky is (core team included, no offense). I regularly see posts referring to "everyone on this app" when they usually just mean their corner of the app + whatever they see on Discover. Meanwhile, the Japanese side of the app is furthest along in proving out AT Protocol's vision of big-world decentralized social. People are already building voice only and long form blogging apps. ATproto is bridging to the Fediverse! The ecosystem is quickly expanding beyond the myopia of your self-selected imprisonment to One Algorithm To Rule Them All.
What does this mean for Blacksky? It means the sky's the limit (no pun intended) on business models and opportunities for Blacksky that can be accomplished without compromising on my personal values. I've given up on reminding people but I built Blacksky for myself and was pleasantly surprised that other's have found value in it.
That means it didn't start with a pitch deck or investment. It started with a git push origin main
. And since that first deployment I've fielded comparisons to venture backed startups probably well on their way to the grave. Let's take the Tea App who's vision actually is Black Twitter in app form. Here's a word from their investors:
Founders have to be honest with themselves. Some of them aren't really venture-scale or venture-type investments. We're looking for the next big thing, the next category leader.
-Marlon Nichols of MaC Venture Capital, speaking to Business Insider about investing in social media startups
Let's be clear that I'm not anti-investment. Quite the opposite. If your mission requires making money, then money must be made for the benefit of your mission. But I am anti-compromise! And becoming a 'category leader' absolutely requires compromise.
Technochauvinism is what led to the thousands of abandoned apps and defunct websites and failed platforms that litter our collective digital history. Technochauvinist optimism led to companies spending millions of dollars on technology and platforms that marketers promised would "revolutionize" and digitize everything from rug-buying to interstellar travel. Rarely have those promises come to pass, and often the digital reality is not much better than the original. In many cases, it is worse.
-Meredith Broussard (More Than a Glitch, 2023, p. 3)
A lot of people on the internet blame "techbros" for the state of the internet. Personally, I blame the pursuit of 'category leadership', 'unicorn' status, and trying to become a billionaire.
While I think it's fine for projects to die (that's the default state of the world) for now, I'd like Blacksky to live. And that means being a cockroach 🪳. That means gaining 10M+ views from 100K+ users, with $0 spent on marketing. Never paid for any press mention, never even reached out to a journalist. Haven't even had to pay for servers between credits and community donations. Haven't had to pay for labor because the code is open source and contributions are welcome.
All I do is write code, make quippy posts, and watch Blacksky organically grow.
Claim: Bluesky needs Twitter to fail.
Falsehoods spread on the internet like wildfire. There's no doubt that Bluesky and likely many other ecosystems briefly benefit when an incumbent like Twitter makes a misstep. But like a game of telephone, this has somehow evolved into Bluesky is only active when Twitter is messing up and Bluesky's success depends on Twitter failing. I can only speak for my part of the network (something others should start acknowledging too) but Blacksky depends on big cultural moments in order to succeed. When Elon as the richest person in the world, a constant cameo in Black culture, and owner of a previously loved platform makes mistakes – that is also a big cultural moment. Something to laugh at especially.
Importantly, it is not the only one, nor is it the biggest.
Blacksky is the most active when there are big cultural events in America. We saw this with the stabbing of Derek Chauvin (a personal fave), Super Bowl LVIII @ halftime, and more recently with things like Trump's conviction and the presidential debate. While Twitter hiding likes brought in as many views and posts as Kendrick Lamar's Juneteenth show, the Trump conviction and the first debate of this election cycle overshadowed both. At the time of this writing, people are still talking about whether Biden should pass the baton or not.
To me this is promising, because it means a few things:
- During lulls in newsworthy events, the feed(s) can feel less-than-cohesive. This is a solvable problem as other platforms switch from chronological to more algorithmic in those moments. I'm not opposed to manufacturing prompts and I think silly conversations are important too! That's what the bots are for. More on that later.
- During nights like the debate when Trump says something xenophobic and racist like "migrants are taking Black jobs", there's no substitute for the Blacksky feed(s) for getting the best live reactions. You simply aren't going to get that from the LEGO collector feed or whatever.
Partnership
I'm talking a bit spicy in this post because I'm tired of comparisons but I meant it when I said previously that I'm not building to compete. Maybe with other atproto devs since I like being the first to do things, but no one else.
I really respect the efforts of folks like Newsmast Foundation and the BridgyFed project who are not only building on open protocols, but seeking to connect them.
Any VCs funding closed source, proprietary network social media startups in 2024 should be sued or something for wasting their LPs' investments. It's a waste of human potential to start a network from scratch when there are 3 growing protocols they could be building on between atproto, activitypub, and nostr.
I am particularly interested right now in finding ways to onboard smaller apps (like Spill or Seam Social or Diem or etc.) if there would be a good fit. Would love to connect with orgs like that.
My Black Job: Developer
👨🏾💻: Nerd Flex Zone, you know the drill.
I built some new things. Besides being lazy, I titled this blob POST
because after implementing the merkle search tree, figuring out how to stream blobs (images, gifs, etc.) from my PDS to a S3 bucket and store them properly was one of the trickier (and thus more fun) parts of the implementation. More on that later.
Starter Pack
This didn't require writing any code outside of running a SQL query for most followed, but it is a new thing I put together:
In Bluesky's own words starter packs are, "personalized invites that allow you to bring friends directly into your slice of Bluesky!" So far the Blacksky pack has been used for following but it can also be used to onboard new users. If someone signs up using your starter pack you'll get a notification and it'll help them get started with some recommended follows.
Be sure to share the starter pack link with friends looking to join Bluesky and jump into the Blacksky feeds: https://go.bsky.app/2FtgiTK
Building a Personal Data Server (PDS) from scratch
Building a PDS implementation from the ground up has given me a deeper understanding of AT Protocol, Typescript, Rust, and generally made me a better programmer overall. Like most things, I have no good reason for working on this other than I felt compelled to.
It has taken longer than I wanted to but I partly blame the NYPD for eating up my weekends (can't code in a cell, courtroom or outside a precinct). It's required reading thousands of lines of TS code from the actively developed, canonical repo and translating that over to Rust while making some noteable changes.
I've now migrated Blacksky from Heroku, to Render, to Google Cloud, and now to DigitalOcean. Being cloud native, easy to migrate, and low friction is a requirement for me. Most of the following differences are based on that:
- Using Postgres instead of Sqlite
- Storing blobs in S3-compatible storage instead of on-disk
- Mailgun for emailing (password reset, etc.)
- Using PDS-wide rotation and signing keys
- No gateway PDS logic (will cross that bridge if I get there)
Besides that I'm trying to stay true to the canonical code. The last big pieces outside of housekeeping and documentation are com.atproto.sync.subscribeRepos and the pipethrough + readAfterWrite logic on app.bsky endpoints. A couple bugs but you can create an account, gated by invite code, confirm your email, make a post with an image, etc. today. I'm hoping to have everything wrapped up before the honeymoon. 🏰
I'd like to keep hacking on the cryptography side in the long run, learn more about DIDs, make updates to my own did-doc, play around with oauth when that's released, etc.
Bots/Mirrors
Big cultural moments don't happen everyday. In lieu of manufactured prompt posts, I felt like a good way to inject levity into the feed and interrupt any doomscrolling caused by the decline of everything as we know it was to bring over some casual hiphop blogs. I started by mirroring DailyRapFacts and SayCheeseTV but at request also brought on Complex (which has honestly been my favorite of the 3).
API access to X is prohibitively expensive but it seemed like a good use of the Bluesky microgrant funds as the bots each garner engagement and spark conversation.
The script behind the bots is small and general purpose. Feel free to adapt to your own needs.
Moderation Scripts
Every now and then someone will ask me why their posts aren't showing up on the feed. Although Blacksky was never as simple as just a list, a positive sign that the feed and community is growing is that there is even more noise to filter out.
I felt like it was worth noting that there is a scheduled worker that runs a set of "moderation" scripts for automatically removing content on the feed. For example, some of you love to share your Wordle posts daily – that doesn't need amplification:
DELETE FROM post WHERE (post."text" like '%🟩%' and lower(post."text") like '%wordle%') AND AGE(CURRENT_TIMESTAMP, "indexedAt"::timestamp) <= '1 days';
The logic for this is always evolving and will always stay private.
A Labeler
Even after the various community moderation hiccups, I too will toss my hat into the fray eventually. I act in this capacity in various ways already but will make it official and very limited in scope. Will likely use Ozone out-of-the-box and keep the scope very limited with clear expectations around resolutions. This isn't something I'm rushing to do however.
That's all folks. Thank you for using, sharing, supporting, and donating to Blacksky. Thank you for speaking about it in rooms I am not in. Thanks for getting me into rooms I would not have otherwise been invited to.
Thanks for everything.