Sign in

redsolver

@redsolver.dev
14K followers 430 following 1.4K posts

Developer, building @skyfeed.eu and other fun open-source stuff, for example content-addressed storage systems in Rust 🦀 Matrix: @red:y4y.me Email: red@skyfeed.dev

PostsRepliesMedia
redsolver @redsolver.dev · 10/08/2025
Plushtodon for reference:
Mastodon Plush being held up by a person in front of a street sign reading "Federation Street"

Image Source: https://shop.joinmastodon.org/products/mastodon-plushie
040
redsolver @redsolver.dev · 23/07/2025
fixed image, forgot the tracking protection image thingy in my browser. tbh why does the bsky app even resize/re-encode if the image is so small. smh

let postsQb = feedService
  .selectPostQb()
  .innerJoin('follow', 'follow.subjectDid', 'post.creator')
  .innerJoin('post_agg', 'post_agg.uri', 'post.uri')
  .where('post_agg.likeCount', '>=', 5)
  .where('follow.creator', '=', viewer)
  .where('post.sortAt', '>', getFeedDateThreshold(sortFrom))
140
redsolver @redsolver.dev · 23/07/2025
well I just just found an implementation of an early version in the bsky-social/atproto repo I cloned in Dec 2023 😅 pretty sure the algo got updated since then, can no longer find it in the current repo
screenshot of the following syntax highlighted typescript code:
let postsQb = feedService
  .selectPostQb()
  .innerJoin('follow', 'follow.subjectDid', 'post.creator')
  .innerJoin('post_agg', 'post_agg.uri', 'post.uri')
  .where('post_agg.likeCount', '>=', 5)
  .where('follow.creator', '=', viewer)
  .where('post.sortAt', '>', getFeedDateThreshold(sortFrom))
121
redsolver @redsolver.dev · 24/06/2025
and ofc my image is broken due to ff tracking protection, so let's try again...
080
redsolver @redsolver.dev · 24/06/2025
uhhm my notifications now include reactions to your post lol
screenshot of zeppelin social web app notification view, showing reactions to the parent post of the post this image is attached to
470
redsolver @redsolver.dev · 18/03/2024
SkyFeed does not collect any personal data, only anonymized request counts grouped by their limit parameter: stats.skyfeed.me But as it turns out, different Bluesky clients use a wide variety of limits, so this minimal data is sufficient to identify some trends in third-party app usage:
Screenshot of the following syntax-highlighted text (in monospace):

# HTTP Feed Request Counts (@skyfeed.app) by limit parameter, from 2024-02-18 to 2024-03-18

> [scroll] Users scrolling down in a feed. Clients with lower limits (see parentheses) usually send more requests to show the same amount of posts!
9 285 352  bsky.app, Klearsky* [/30/c]
  115 009  TOKIMEKI, langit.pages.dev, sunrise.li, skychat.social [/20/c]
   80 903  deck.blue [/100/c]
   28 671  Default (Graysky, ucho-ten.net, useouranos.app, rainsky.app, Hagoromo, …) [/50/c]
   23 144  SkyFeed.app [/16/c]
      101  redocean.forza7.org [/25/c]

* Only a very small subset of these queries are likely from Klearsky.
  Also includes flat.sabigara.com, skeetdeck.pages.dev and ZonePane

> [load] Users loading a feed
14 704 518  bsky.app, Klearsky* [/30]
12 394 744  Default (Graysky, ucho-ten.net, useouranos.app, rainsky.app, Hagoromo, …) [/50]
    54 316  SkyFeed.app [/16]

> [other] bsky.app background fetch, aggregates posts from custom feeds in the main timeline
20 813 084  bsky.app "Show Posts from My Feeds" feature [/10]
   541 566  bsky.app "Show Posts from My Feeds" feature [/10/c]

> [refresh] Automatic feed requests sent by clients to check for new posts in the background
34 654 846  TOKIMEKI (configurable), sunrise.li (every 10s), skychat.social (every 5s) [/20]
31 581 286  deck.blue (every 30s by default, configurable from 15s to 15min) [/100]
19 859 086  bsky.app (every 60s), langit.pages.dev (every 30s), skeetdeck.pages.dev [/1]
 7 600 004  SkyFeed.app (every 10s) [/4]
     2 807  redocean.forza7.org [/25]
     1 268  flat.sabigara.com (every 15s) [/5]
04922
redsolver @redsolver.dev · 07/03/2024
Happy "Compliance time!" to those who celebrate 🎉 digital-markets-act.ec.europa.eu/index_en
Screenshot of the linked website
Title: The Digital Markets Act
Shows a card with the text "Compliance time!" and a countdown ticking down every second. It shows 3 hours and 54 minutes remaining until the DMA is enforced :)
070
redsolver @redsolver.dev · 19/02/2024
We just reached 40 000 custom feeds on Bluesky! 🎉 If you're interested in self-hosting a SkyFeed-compatible feed engine (it's open-source), send me a message and we'll get it set up! It would be great to diversify the ecosystem :) These are the 16 most-used feed generators currently on the network:
40021 total (2024-02-19)

34208 did:web:skyfeed.me
1789 did:web:www.bluefeed.app
1738 did:web:track.goodfeeds.co
978 did:web:blueskyfeeds.com
141 did:web:blueskyfeedcreator.com
74 did:web:feed.conmoot.com
68 did:plc:bckeed2imet3yus3vz77i7ah
43 did:web:feedgen.shigepon.net
29 did:web:bsky.one
26 did:web:feedsky.jazco.io
24 did:web:feedgen-dev.shigepon.net
23 did:web:feed.furryli.st
23 did:web:feeds.bluesky.day
23 did:web:www.bluesky-feeds.com
18 did:web:discover.bsky.social
17 did:web:flicknow.xyz
1728978
redsolver @redsolver.dev · 07/02/2024
Here are some graphs for people who like them 🗠 (as you can see, SkyFeed went unstable at about 5:00 UTC)
A screenshot of the fly.io metrics page, showing two graphs (http response count and response times). At 5:00 UTC both graphs went wild (response times timing out and count going down, with more errors). The last hour shows healthy usage again, with low response times and a ton of requests
1282
redsolver @redsolver.dev · 07/02/2024
The SkyFeed infrastructure is a bit overloaded, I am currently working on setting up a new query engine server and redirecting some of the traffic there. So everything should be back to normal in about 1 to 2 hours, thanks for your patience!
htop showing 100% usage on all CPU cores
1633284
redsolver @redsolver.dev · 14/01/2024
It works! 🎉 Secure E2EE group (and private) chats powered by the MLS (Messaging Layer Security) protocol and routed over the decentralized S5 network. The app is written in Flutter+Rust, so should run on any operating system (mobile and desktop). But Rust-WASM (Web) seems to still have issues :(
screenshot of the chat app, title is "Vup Chat - Decentralized E2EE group chats with MLS and the S5 Network", left side shows some group chats and buttons to join/create groups, one group is selected, the main chat windows shows two users sending some test messages
1256
redsolver @redsolver.dev · 14/12/2023
I switched to MiMalloc for the SkyFeed Query Engine (Rust) and looks like all memory leaks are gone! Left is before and right is after switching
graph showing memory usage in GiB over time of the SkyFeed Query Engine, going from 13 GiB to 21 GiB in two hoursgraph showing memory usage in GiB over time of the SkyFeed Query Engine after switching to MiMalloc, no increase in memory usage visible after 2 hours
0130
redsolver @redsolver.dev · 05/11/2023
SkyFeed List Architect, first experimental version launching tomorrow! Works for both curation and mute lists 👀
screenshot of the skyfeed list architect, basically works like the feed builder for lists, and searches profiles instead of posts. can mass-update your list
54311
redsolver @redsolver.dev · 27/10/2023
The query engine for the List Builder is working 🎉 It powers a new tool in the SkyFeed app which will make it possible to easily build giant curation (or mute) lists based on text search, combine existing lists and more!
Screenshot of JSON code
{
    "name": "Budgies",
    "purpose": "curatelist",
    "blocks": [
        {
            "id": "a",
            "type": "input",
            "inputType": "network"
        },
        {
            "id": "b",
            "type": "regex",
            "value": "\\bbudgies?\\b",
            "target": "name|handle|description"
        },
        {
            "id": "c",
            "type": "limit",
            "count": 1000
        }
    ]
}
2203
redsolver @redsolver.dev · 26/10/2023
Just added RegEx match highlighting to the SkyFeed Builder preview, that should make it easier to understand how your RegEx works and debug any issues you might have. This feature will be available in SkyFeed v0.9.0, launching later today!
screenshot of the skyfeed feed builder preview, with "skyfeed" matches highlighted in text
1193
redsolver @redsolver.dev · 22/10/2023
8 different custom feeds for every single hashtag on Bluesky, coming soon to the SkyFeed app! Powered by the SkyFeed Builder query engine. Unfortunately, publishing all of these (8000+) custom feeds would be pretty spammy, so they only exist virtually and client apps need to add explicit support.
screenshot of the SkyFeed app, showing a hashtag feed (#Tatort), with different sorting options (New, Hot, Rising, Top, Random)
1203
redsolver @redsolver.dev · 22/10/2023
Trending hashtags (last 10mins, 1h or more) coming soon to the SkyFeed app!
list of trending hashtags on the Bluesky network in the last hour, first one is #Tatort, then #art and #F1
1216
redsolver @redsolver.dev · 21/10/2023
Workspaces are coming soon to the SkyFeed app! Easily create as many workspaces/decks as you like and quickly switch between them. They persist between different accounts on the same device and can even be shared with other SkyFeed users :)
SkyFeed app screenshot, shows new workspace switcher in the top left
1212
redsolver @redsolver.dev · 21/10/2023
I think I found a nice new UI for replies in SkyFeed!
skyfeed app screenshot, two posts from @retr0.id, first one is a reply and shows a new context inside of the card (parent post author name and one line preview of post text)
2111
redsolver @redsolver.dev · 18/10/2023
Graphs! 🗠🗠🗠 stats.skyfeed.me
request count graph for the OnlyPosts feed, line graph, split by loaded, refreshed and scrolled
1184
redsolver @redsolver.dev · 17/10/2023
with different themes of course
screenshot of mobile SkyFeed app, showing a post thread with some collapsed tree branches, LIGHT MODE
030
redsolver @redsolver.dev · 17/10/2023
New mobile-optimized SkyFeed UI coming soon 👀
screenshot of SkyFeed app in a mobile phone form factor, with a new collapsed sidebar and improved navigation. The main view shows the following feed
4425
redsolver @redsolver.dev · 10/10/2023
New Gallery View, coming soon to the SkyFeed app! Works with all columns (feeds, timeline, profiles, ...)
screenshot of the skyfeed web app, showing the Birds! custom feed with the gallery (image-only) view
1265
redsolver @redsolver.dev · 02/10/2023
Just added a quick account switcher to skyfeed.app :) and some other fun new features
screenshot of account switcher in the skyfeed web app, redsolver is currently logged in and some more accounts are available to switch. there's also an "Add Account" button to add even more accounts!
2264
redsolver @redsolver.dev · 10/08/2023
wow nice
screenshot of game of life running in mpv, with the code from parent post
190
redsolver @redsolver.dev · 29/07/2023
If you're using fly.io, do NOT use their Redis by Upstash integration if you don't need the multi-region replication features! It's slower and significantly more expensive than just hosting an instance of Dragonfly DB on a Hetzner VPS and connecting to that instead.
HTTP Response times graph for skyfeed.me (the feed generator), about 10ms when using redis by upstash, down to only 4ms after switching to an external Hetzner VPS
041
redsolver @redsolver.dev · 20/07/2023
bridge proxy progress: it's now possible to view the official Bluesky Twitter account in the Bluesky app :D
screenshot of the bluesky web app, running in the sandbox, showing the profile page of the bluesky twitter account
1303
redsolver @redsolver.dev · 18/07/2023
I'm working on a lightweight bluesky API proxy which adds bridge support for other social networks. It already supports browsing timelines, profiles and threads on Mastodon and Hacker News using any Bluesky client!
sceenshot of the skyfeed app with bridged content
left: profile page of delta chat on mastodon
middle: hacker news best stories
right: hacker news thread for Llama 2 announcement
55416
redsolver @redsolver.dev · 16/07/2023
so uhh I just pushed an update to make this a bit simpler :D
skyfeed builder screenshot
111
redsolver @redsolver.dev · 15/07/2023
custom themes will be pretty flexible!
screenshot of the skyfeed app with a minecraft-inspired theme
1161
redsolver @redsolver.dev · 15/07/2023
Still WIP, but working on custom theme support for the SkyFeed app!
screenshot of the skyfeed app with a light theme (Nord Snow Storm)
2100
redsolver @redsolver.dev · 15/07/2023
skyfeed renders it like this lol
250
redsolver @redsolver.dev · 15/07/2023
Automatic language detection and translation using local ML models on Android! works pretty ok
screenshot of skyfeed running on android native, with some translated posts
1164
redsolver @redsolver.dev · 08/07/2023
Testing image posts in SkyFeed...
image of a budgie sitting on a tree, with the head changed to a tigerscreenshot of the new skyfeed post creator with image support, the previous image is selected
260
redsolver @redsolver.dev · 05/07/2023
Coming soon to the SkyFeed app: A new and very efficient way to follow the discussion in deep threads. And yeah, I'm also working on notifications and image posts 🙃
screenshot of a dev version of the skyfeed app, showing a new thread view with collapsable sub-threads and new posts being inserted in real-time (non-collapsed). the collapsed view still shows all posts, but only with profile pic, username, handle and time
3183
redsolver @redsolver.dev · 04/07/2023
Here's the source code for the old one :D
Dart Code:
if (lowerText.contains('dart') || lowerText.contains('flutter')) {
  if (!lowerText.contains('darth')) {
    addPost('dart-flutter');
  }
}
130
redsolver @redsolver.dev · 17/06/2023
yep, build a #hashtag feed in 3 easy steps!
2216
redsolver @redsolver.dev · 17/06/2023
Mixing some feeds... SkyFeed Builder will be released sometime next week!
SkyFeed Builder UI, 7 input blocks with different custom feeds, sorted by random. right area shows a preview of the feed with a post from the science feed and a post from the cat feed
2141
redsolver @redsolver.dev · 16/06/2023
yep!
210
redsolver @redsolver.dev · 15/06/2023
Coming soon: Build powerful custom feeds directly in the SkyFeed app 🛠️ These feeds can be published on your personal account and used by anyone, even in the official app!
Screenshot of the new SkyFeed Builder, running in debug mode
1818368
redsolver @redsolver.dev · 28/05/2023
This is the SurrealQL query for my new "Discover" feed. Still needs some optimization, but already works well!
Long Database Query
280
redsolver @redsolver.dev · 17/05/2023
alf feed looking great in my client! Can't wait for custom feed support in the official one.
140
redsolver @redsolver.dev · 16/05/2023
It shows all posts with #cats made in the last 2 days. Your post just showed up too :)
210
redsolver @redsolver.dev · 16/05/2023
I created custom feeds for all hashtags! They include all posts that mention that specific hashtag and are generated from the firehose in real-time. I also added a trending section to my bluesky client which already has experimental support for custom feeds :)
3286
redsolver @redsolver.dev · 16/05/2023
I'm working on a third-party client which supports them :)
110
redsolver @redsolver.dev · 13/05/2023
there we go :)
010
redsolver @redsolver.dev · 13/05/2023
Just created a new custom feed for Eurovision-related posts on Bluesky: did:web:feed-generator.skyfeed.app/eurovision You can add it to any client which supports custom feeds, for example skyfeed.app
050
redsolver @redsolver.dev · 12/05/2023
SkyFeed supports custom feeds now! It reaches out the feed generator APIs directly, so only works if they have CORS enabled. Try it here: skyfeed.app
186
redsolver @redsolver.dev · 10/05/2023
I'm working on a new client which shows images in their original aspect ratio :) unfortunately the API does not return the aspect ratios of images, so the layout jumps around a bit when loading the thumbnails. would be a great if that info would be added to the thumbnail API.
010
redsolver @redsolver.dev · 09/05/2023
Today I built an experimental new protocol that delivers atproto commit metadata to users as efficiently as possible. It will make everything in the new client I'm building truly real-time.
010