Mastodon

You all know what happened to twitter, so no need for further rehashing.

Personally I have been quite repulsed by the development, and stopped interacting a while ago. Sadly I did not have time to set up a Mastodon account... until a couple days ago!

masto.host instance

Rather than sign up to one of the multiple public Mastodon servers that have spun up since we all got disgusted en masse, I signed up for an account at masto.host.

You can find me at @supersole@5013.es 👈

I chose to go this way because I'm stubborn/curious like that. But mostly, because I like being able to claim my space 'here' (where 'here' = the Internet).

As Simon Williamson put it, it is just the second hardest route to join the "mastodonverse", with the hardest running your own server. But even though it is not super immediate, it is immediate enough that you get a nice feeling of achievement. And it feels really refreshing to not be assaulted by ads and random rubbish every other post.

I think I'm going to echo everyone else that has joined Mastodon, but it just feels like "twitter, when it was cool". Of course, when/if it gets traction and "brands" start joining up and trying to "go viral" with mass concocted "content" then maybe we will start seeing random rubbish in our feeds. We'll see how the federated system works in this case.

mod_rewrite and header('...') enter a bar

But let's go back to the present and recent past and to the set up: I mostly just followed Simon's example, as he very nicely described what he did in his blog, except... that the web server running his canonical domain is running Django, and mine uses Apache and PHP instead.

We care about which server is responding to the canonical domain even if the Mastodon server is running in a separate domain (fedi.5013.es) because of pure and sheer VANITY: I wanted to take advantage of my short domain (5013.es) to have cool Mastodon addresses like 5013.es/@supersole rather than fedi.5013.es/@supersole. So for that, you need to intercept some requests to the webserver at the canonical domain and re-route them to the mastodon server.

And I haven't written Django in years... which meant that of course I wondered if it was possible to do the same thing in PHP, which I also have barely written in several years too 🤪

The solution ended up involving some Apache mod_rewrite rules to intercept the URLs I cared about and send them to my simple PHP scripts. I was very pleased that my regular expressions and .htaccess knowledge quickly came back to me, after years of writing routes in things like express.js and similar configurations!

Admittedly, it wasn't that hard and complex, but it did feel like I had opened the door of an almost forgotten, dusty room in my brain and found some tools and machinery that I used in the past, and somehow the muscle memory just kicked in, and I could use them perfectly fine, even if they looked old. An odd, but pleasant feeling!

For future reference, or just in case you are vain and use PHP in your server, I put the code in a GitHub project: https://github.com/sole/fedi-redi

hello? hello? can you see me? I am on another Mastodon server, can you see me? I can see you...

I tried finding people I was already following on twitter, and following them from my shiny new account.

Some people haven't got a Mastodon account, or haven't announced it in their twitter profile, so I could not find them. Nothing I can do about it.

Some people do have a Mastodon account somewhere which I could access via visiting their web profile, but for some reason I got either:

  • 503 Remote data could not be fetched toast errors (for mastodont.cat profiles, sorry Madieta)
  • the search returned no results when entering their user name in my instance to search (I tried all sorts of combinations: the full URL, the @username@instance etc). This happened for example with mozilla.social accounts.

... obviously the end result in those cases is that I could not follow the people my server can't see!

I looked at my web server's error logs just in case I had messed something up with my "clever" redirection code, but I have not been able to find anything useful. Likewise I tried looking at the Network request/response in the browser devtools when doing a search request for those users, and I could not find anything that gave me a pointer towards the right direction.

If you think I should follow you, try following me and I'll try to follow you back.

This all sounds quite brittle but it is also quite amusing and exciting at the same time. And also think: even if some servers aren't talking to each other (for whichever reason), the individual nodes are still up and running. This is way more resilient than when big networks have outages or implement changes because 'somebody' wanted to!

See you around!