How to improve your Mastodon experience

This is the second part of my journey into the fediverse. The first post was How to get started on Mastodon. This series is not a complete guide in any way, but hopefully it can help explain the differences between Twitter and Mastodon, and help you get to know the platform and make the best of it, perhaps by unlearning some twitterisms.

Search and Explore

It is a little bit more demanding to find content in the fediverse since there is no global free text search. You can search for #hashtags, since these are propagated – and that will help you find streams of content related to that specific tag.

On your current instance, # Explore gives you several tools. Explore Posts will show you the most starred / boosted posts on the instance. I wrote about this in the first post too, but here is a recap:

Hashtags will show hashtags that are gaining traction among people on this and other servers of the decentralized network right now.

News appear to show the most frequently starred or boosted posts that link to external content.

For you appear to suggest users – but I am not sure what the criteria for appearing on the lists are, or if there is an ordering to that list, or if it simply is the most followed users recently? I need to find out, I guess.

Exploring other servers

Sometimes, you may not know which tag is the right one to use, and then it may help to browse the instance server list to find servers you believe may have content that interests you. Go to the URL server.instance/explore (f.x. or to see the ongoing posts on a specific node without actually logging in on the node.

If you find users or hashtags that interest you, follow them from your own instance. This is not as smooth an operation as following on Twitter, because you need to manually search up users on other instances from your own instance, and then follow the user.

In other words:

  • Explore the instance
  • Find the user or tag
  • Copy the full user URL or @name@instance or tag
  • Go on your own instance and search for the user or tag
  • Follow

More on tags

If you are “life blogging”, you might not need to put tags in every post, but if you are posting about a skill, an interest, a hobby, something workrelated, or a specific topic shared by many – you should definitively take time to put in a tag. Some people overdo it, IMO, but your milage may vary, so who am I to judge. It makes your posts on the topic of those tags discoverable.

Viral posts

I enjoy good posts. Viral posts will propagate due to boosts, and people boost for various reasons. They may agree with the content and want more people to read it, or they thought the content was interesting and/or funny.

Some posts defintively deserve to go viral – but I honestly don’t miss the viral factory accounts from Twitter. Those that seek out weird or funny content and post a steady stream of “hits”, but never any personal content. I am sure they will appear eventually as some people are just online for entertainment.

But – if you are on Mastodon simply for marketing reasons, you will find it to be very different from Twitter. Personally, I like actual interaction, not just following a marketing drone account. Unless you actually contribute to the community and interact, it is less likely that your posts will gain viral traction.

Boost / Comment vs Quote tweets

Dialog vs Soapbox. Some people are calling for a “quote toot” as a parallel to quote tweets. Basically, a soap box post that refers to a different post, where you can opine the heck out of it, without necessarily exposing your opinion to the original poster – unless they bother to visit your quote post.

This is not the original nature of the fediverse. You are encouraged to share your opinion on the original thread – and if you enjoy the discussion – boost the original post.

My personal opinion? Dialogs are better than Soapboxes.

If you do need to soapbox it, copy the URL to the post you want to quote and paste it into a new post. It has the same effect as a quote and you can opine away. It might not work if the original poster has reduced the visibility of the their post. See “globe” under “Control your posts”.

Also – please don’t screenshot someone’s post and share the screenshot – that is sooo Twitterish. Again, dialog, dialog, dialog.

Control your posts

Use the visibility controls on the post to decide who can read or comment on the post.

There are several settings that can help other users to decide what to do with your post.

The three bars enable you to add poll entries. You decide how many entries up to a max of 4, and how many days the poll should run.

The globe gives you control over the visibility of the post.

  • Public – Visible for all
  • Unlisted – Visible for all, but opted out of discovery features
  • Followers only – Only the people that follow you will see it. If you combine this with having to approve people that follow you, you have full control over visibility
  • Mentioned people only – like DMs but potentionally with multiple people included

CW – Content Warning – This is almost like a topic classification. Let’s say that you use it as a topic, you can add CW’s “Personal”, “Political”, “Programming”, “Dad Jokes”, “My Cats” and other users may then click on a “Show less” button for each of these topics to allow them to reduce the number of posts they see from you on that topic. Unfortunately, you need to manually type in the content warning every time.

Finally, the “EN” indicates that your post will be in English. Please change this to the actual language of the post.

Control what you see

I’ve already mentioned that you can follow #hashtags, but what if the tags span too wide? Also, when looking at the Local and Federated posts streams, or the Lists streams, what if you want to filter out certain content?

Under Filters in your preferences, you can add specific filters that will prevent posts matching the filter from appearing in your streams.

This allows you to add or edit filters that can trigger on CW texts, tags, keywords, etc.

Naturally, you can modify or delete filters over time.

More settings

There are several tidbits under the Cogwheel preferences / settings page which you should familarize yourself with.

  • Automatic post deletion if you intend your posts to me of a more ephemeral nature
  • Filter languages to filter away languages you can see in public timelines

and there are other tools to help you manage your account.

Explore away!

Get started writing Linux apps with Delphi 10.3 and 10.4

Firstly, you need an Ubuntu installation. If you don’t have a physical machine with Ubuntu, you may chose a suitable Virtual Machine, such as VMWare, VirtualBox or Hyper-Visor.

I chose Hyper-V since it is included with Windows 10.

To enable Hyper-V on your Windows installation, Open the “Windows Features” tool and check Hyper-V. If you alse use Visual Studio, you may want to add Windows Hypervisor Platform as well.

A word of advice with regards to storage: Place your VMs on an SSD disk.

Reboot your Windows installation if so instructed.

When ready, Start Hyper-V Manager, and chose Actions | Quick Create… | Ubuntu 18.04.3 LTS 

A 1.6Gb download will pursue, so the time depends on your bandwidth.

Before firing up the VM, tweak the new VM config to f.x. 4 CPUs and 8192Mb RAM to give the VM some juice, then power up and go through the base installation.

To manually add the build tools for Ubuntu, open a terminal, and run

sudo apt update
sudo apt install build-essential

The first ensures your VM pull all relevant updates, and the second installs gcc and the suite of build tools for Linux.

Next, download the appropriate PAServer for Rio:
or Sydney:

Note that you can install PAServers for both Rio and Sydney. Just remember to edit the paserver.config and change the default port number for one of them.

Install it to a folder of your liking, as per the instructions in the link and start ./paserver and enter the (optional) password you want the PAServer to use.

To find the IP address of your local Ubuntu VM, open a terminal and run

ip addr show

The IP address we are looking for is in address 2 – in this case:

When you first try to compile a Linux app, start with something simple like a console application.

program LinuxTest;


{$R *.res}


      Writeln('Hello whirled');
      on E: Exception do
        Writeln(E.ClassName, ': ', E.Message);
    Write('Press Enter: ');

On the first ever compile, the IDE will prompt you for a connection profile.

Since we didn’t change the configuration, all we need is to fill in the IP address for the host name.
If you entered a password when starting the PAServer, that password is needed here. Remember to click on Test Connection to verify that the PAServer is reachable.

On the first connection, the IDE will download the SDK through the PAServer. This takes a little while and the progress is presented on a desktop-always-on-top progress dialog which is somewhat annoying if you want to do something else while waiting.

After it is complete, you will have a collection of files that allows the linker to find the right link targets for your Ubuntu host.

At this point, your simple console app should be ready to run. It will compile, link, and then upload it to the Ubuntu VM and start it through the PAServer.

By default, it seems that we won’t get to see the actual console where the app runs when run through PAServer, so if you want to run it manually – locate the uploaded file on your installation.
It will typically reside under a long path that reflects the name of your connection and your Windows username. The PAServer folder will be in the same folder where you installed the PAServer-20.0 (if you are using 10.3.3).

Under scratch-dir, you find the folders for your winuser-connection combos.

Under there again, you will find a folder that matches your Delphi project name, and in that folder your executable which you can start with “./exename”.

At this point, you should be able to do the same.

The next step is to download FMX for Linux via GetIt.
Then you can get started on something beautiful like this 😎
File | New | Multi-device application – change target to Linux 64-bit and run!

Please note that there may be pitfalls with FMX for Linux.

Lars Fosdal, August 26th, 2020

I have also done this on VirtualBox, but when comparing Hyper-V and VirtualBox it is clear that Hyper-V is much better at managing HW resources – preventing the constant buzz of the CPU cooling fan which was quite annoying when using VirtualBox.