Engineering challenges I faced when developing an AI-powered solution on niche social media
Making of: The Cloud Pirate
Background
Back in 2023 I was chatting with Daniel about his Cloud Pirate project. I decided to take an initiative and expand the project onto mastodon and bluesky. This blog entry summarizes the challenges I faced.
WHat is The Cloud Pirate?
Basically, Cloud Pirate is a community AI-driven content aggregator of personal tech blogs. We parse RSS feeds of 100+ members of the cloud community and use AI to generate posts on multiple social media handles - including at the time of writing this:
Be sure to follow us there!
Mastodon integration
- Governance: instance challenges
- Logic Apps: simple manual request
Governance
For Mastodon the key issue was: instance governance. Mastodon is decentralized, there are many servers to choose from - and each can have their own rules! Complex, huh? Here are the key challenges I faced there while developing the bot:
- discovery: are tech folks on the instance? or it it easily discoverable to tech folks?
- instance limitations for bots: are there extra limita on the instance? posts limit? discovery limits?
- admin contact: is it easy to contact the admin and negotiate? or am I stuck with the defaults (of autoreply)?
For all of those hachyderm turned out to be a good fit. I already hosted a bot there and while there are limits - the contact with admins has been excellent and limits can be expanded. Shout-out to https://hachyderm.io/@quintessence the instance admin!
Important notice. Be aware that the botsinspace instance limits visibility of posts - if you choose this instance.
Logic Apps
For making the API request itself - I chose Logic Apps, because it required less work than writing the code. The process of making the API request is quite straightforward - and well-described on Jani Karhunen blog!
Memorial
To honor Kris Nova, the founder of Hashyderm - I encourage to donate to: https://translifeline.org/donate
Bluesky integration
- JavaScript: native ecosystem support
- Azure programming model -> solved by downgrading to v1
- Gotcha: Links not autoexpanded
Choosing the tooling
For Bluesky, I decided to go with writing the code. The platform is targeted at developers - and the request process is too complicated to do by hand on Logic Apps. I also chose JavaScript as the programming language, because it had native platform support.
Azure programming model
Unfortunately, it turned out the newest Azure Programming Model was buggy - and the issue wasn’t resolved to this day. To work around it, I chose v1 programming model
See those threads:
- https://www.reddit.com/r/AZURE/comments/16uqe6n/azure_function_no_job_functions_found_try_making/
- https://github.com/Azure/azure-functions-python-worker/issues/1262
Links not autoexpanded
One surprising platform gotcha I came across was: the delibarate platform design decision to not expand the links automatically and check them like on Twitter/X. Thus, I worked it around by adding the appropriate code.
Opensourcing the code
Finally: the code was published on github: https://github.com/thamerla/thecloudpirate-bluesky
More info
For a full description of the project, see here: https://the.cloudpirate.net/creating-the-cloud-pirate
Community event
This blog was an entry for the community event AzureSpringClean. Thanks to Joe Carlyle and Thomas Thornton for organizing the event!