Tomasz Hamerla

Tomasz Hamerla

at the intersection of software & data engineering

Tomasz Hamerla

3-Minute Read

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!

https://janik6n.net/posts/cross-posting-new-articles-to-linkedin-mastodon-and-twitter-with-azure-logic-apps/

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:

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!

Recent Posts

Categories