This is a personal piece.
Recently, I’ve noticed a rise in people using Bluesky. For me, it’s been active enough to warrant checking in more than a few times a month — to discover interesting conversations and explore what’s happening.
One thing I miss from Twitter is the variety of bot accounts I used to follow. Many of them reposted feeds or curated content, making it much easier to stay informed (especially since I’m notoriously bad at keeping up with RSS feeds). Long story short, Bluesky has an API, and they explicitly encourage bot accounts. So, I figured — why not hack something together?
The idea was simple: build a bot that finds GitHub projects written in a specific language and posts about them. There used to be bots like this on “the other site,” but none exist on Bluesky yet. So, I built one.
You can find the source code on my personal Github repository: golangoss-bluesky.
In a nutshell, the bot connects to both Bluesky and GitHub, searching for repositories. It uses a small cache (backed by our own S3 storage — which I’ve been raving about lately) to avoid reposting the same projects repeatedly. For crawling GitHub, I leveraged another open-source project — the original bot’s source code from Twitter: larry.
An evening later, the bot was live: @golangoss.bsky.social.
The process of hacking something together is always fun (well, almost always). While I code daily, sometimes there’s an itch to scratch — an urge to explore a new platform or idea. If you know, you know. That’s been my experience for as long as I can remember, and it’s one of the reasons I’m so invested in building Runway.
I wanted a platform where I could deploy ideas quickly and easily. No YAML files. No Kubernetes. No Docker tinkering or Ansible scripts. Just simplicity. Runway is that platform.
To deploy the bot, I created an app and disabled routing (since the bot doesn’t expose an HTTP server):
runway app create -a golangoss-bluesky
runway app route off
Usually, Runway enforces that your app listens on a port, but for this bot, that wasn’t necessary.
Next, I set my environment variables using:
runway app config set GITHUB_TOKEN=xxx \
AWS_ENDPOINT=abc \
AWS_ACCESS_KEY_ID=zzz ...
The only additional step was adding a custom Dockerfile
. Why? Because the Bluesky client library relies on an Ethereum crypto library (LOL), which isn’t supported by our current buildpacks yet. You can check out the Dockerfile
in the repository — it’s straightforward.
Finally, I ran:
runway app deploy
And just like that, the bot is now running — no longer tethered to my laptop. 🚀🎉
If you’re looking for a platform to turn your ideas into reality (without the hassle), give Runway a try! And follow us on Bluesky?!