Advertisement · 728 × 90

Posts by Rob Cannon

Clearly I've not been paying attention, I thought attie was the cute new name for ATProto, a "skeet" for 2026... "Hey buddy, did you see my skeet on the attie?", and the like.

2 hours ago 1 0 1 0

Any criticism of the new F1 regs that uses Mario Kart as an argument is hard to take seriously when DRS has been around since 2011.

3 weeks ago 2 0 0 0

Someday I hope Ocon gets over what Gasly did in that game of Twilight Imperium 20 years ago. #F1

3 weeks ago 3 1 0 0

David Bearman is the second healthiest dad on the grid #f1

3 weeks ago 2 0 0 0

It's lap three and I think we've seen more overtakes on the lead then all of 2025 #f1

3 weeks ago 13 5 0 0
Screenshot of the F1 Bluesky feed at 2000 likes

Screenshot of the F1 Bluesky feed at 2000 likes

Amazing to see the F1 feed reach 2000 likes! I've really enjoyed seeing it grow. Thank you everyone who uses it and gives feedback.

3 weeks ago 7 0 1 1

If the api is down then the health endpoint itself would be a normal REST error. I use UptimeRobot to check it regularly and it emails me if there is an issue. Though based on passed experience and how @fly.io services work, my apis and processes are coded to restart themselves in most cases.

2 months ago 1 0 1 0

I forgot to add that I have a help endpoint that says how old the last post it looked at is and return an error after a certain gap (like five minutes). This error indicates that there is something wrong with with the processing of the posts from the firehose.

2 months ago 0 0 1 0

As bluesky has grown that is where performance has hurt the most. And then my biggest concern with a change is that I break the logic that puts posts into the right feeds. Hopefully that addresses your questions, I tried to catch all of them though I did not call out the numbers.

2 months ago 3 0 1 0
Advertisement

The thing the cache does provide is the security you mentioned. It prevents DDOS and such with the micro-cache. The real challenge is making a process that runs separately to read the firehose and update the feeds in redis based on the config. That was most of the testing I mentioned before.

2 months ago 1 0 1 0

Performance is negligible, even for a semi-popular feed like mine is less than 1 rps. The proxy is there to add a cache, but that is overkill with that rps since one of my feed reqs is to update within a second of something posted (for live skeeting on race day). The cache is 1s but it rarely hits.

2 months ago 1 0 1 0

Mine apis are really straight-forward since they just pull from a Redis ordered list that matches the cursor. TBH, I have not changed that code really or tested it in years. It's simple enough I haven't really done more than manual tests when I have changed.

2 months ago 1 0 1 0
Preview
Custom Feeds | Bluesky Custom feeds, or feed generators, are services that provide custom algorithms to users through the AT Protocol. This allows users to choose their own timelines, whether it's an algorithmic For You pag...

The custom feed interface was designed by Bluesky to be pretty simple. It is mostly just a list of items and a cursor/next-page value. All you need is a REST endpoint. docs.bsky.app/docs/starter...

2 months ago 1 0 1 0

And I either test that by creating a new "beta" feed which I have done in the past or in this case swapping the versions for a short period. In this case both feeds are running and I have a proxy in the middle that I can config to point to one or the other.

2 months ago 1 0 1 0

The reason I tested it in prod a few days ago is of course I have no control over the last mile. That is when my api turns into the feed that bluesky shows. I can test all the api stuff locally but there is always the potential something is not right with how it talks to bluesky.

2 months ago 1 0 1 0

For more specific things, like why does this post show/not-show in the feed. I also have a way of running the feed matching manually against any post and the output is specific information about what rule allowed it or rejected it.

2 months ago 1 0 1 0

I also can run the api and feed matching service locally and compare it to production. Using the firehose you can go back a whole day of posts, so locally I can just run through the last hour or more and see what that looks like.

2 months ago 1 0 1 0

Sure, I have a few ways that I test the feed. The first is that I have unit tests for the feed matching, ie mock configs and mock posts. This tests the config system works as expected to match posts.

2 months ago 1 0 1 0

Now that I am back at my computer for couple weeks, I am going to switch over to the new implementation permanently, but still running the old version in the background if needed. #F1 That being said over the last 5 days, the NodeJS feed had a 1h gap on 1/3 that the new one did not, so that's good.

2 months ago 2 0 1 0
Advertisement

Ended this test for now. Looking good and will switch over for longer next week when I have more time to monitor it.

2 months ago 1 0 0 0

I am hoping this will put me in a better place to start experimenting with different ways to automate updates to the feed logic as well. Including adding support for user feed back (more/less like this, etc) that you see in other feeds. The goal is to have these changes ready for the next F1 season.

2 months ago 3 0 1 0

In addition, I've added a automated scaling process that scales the worker process up and down in @fly.io when it gets behind the firehose. This helps keep the costs pretty low.

2 months ago 0 0 1 0

The feed occasionally sees performance issues and I've had to scale the app manually from time to time. This rewrite takes the same functionality from my original NodeJS app and ports it to golang. There I am better able to take advantage of multi-threading and a lower footprint.

2 months ago 1 0 1 1

I've been working on a complete rewrite to the F1 feed (and all my feeds), and will be testing it for a couple hours today. If you see any issues with any of my feeds please let me know.

2 months ago 4 0 1 0

This looks just like my Animal Crossing house (positive)

3 months ago 0 0 0 0

As we see a new wave of users, I am happy to see this still works.

3 months ago 1 0 0 0

What autocomplete soup is this?

3 months ago 0 0 0 0

Doctor Who fans are the Radiohead fans of those other breads no one fit

3 months ago 1 0 1 0

Apologies for the F1 Feed outage. I had some issues with my hosting site, and it should be catching up now.

3 months ago 6 0 0 0
Advertisement

Y'all telling me there is no team bias and then the next minute you're saying they are all about landoscar. Which is it? #f1

4 months ago 0 0 0 0