marcosg

just a minimal blogging experiment

This is maybe because I've always had a slow internet connection, or probably it's just something related to my cronic lazyness, but I've never been a fan of self-hosted cloud. I have nothing on any kind of cloud, and I don't use remote calendars, agendas, file storage – not even mentioning cloud services from big corporations such as Google Drive, One Drive, or MEGA (which was seized by the New Zealand's government in the past) – but I don't feel like I'm missing anything in my work and study day.

I, instead, use a simple tool to effectively synchronize some crucial folders between my machines, only when I need it, through LAN or internet: the tool in question is syncthing.

Syncthing is a program which allows you to create and manage nodes (each machine is a node) that can connect, interact and synchronize files organized in folders. When I said this is simple, I meant that only the following steps are required to have a completely working node of your network:

  1. install if from your repository or download the Windows executable;

  2. launch it (on Linux it is as simple as running the command syncthing)

And that's it! You now have a perfectly working node of your network.

Just create a different node in another machine of yours and run it – which can be accomplished in the same way – and then connect them with the help of the graphical interface. A local browser webpage should automatically open allowing customization (address should be 127.0.0.1 on port 8384) This is simple, too: copy your machine's syncthing ID (a long alphanumeric code) and paste it to the other machine. A request to create a connection between nodes should arrive.

Connection done, we can now add folders to the mix. After adding some folders, syncthing will quickly analyze them. You now can sync them with any other node in the network, by ticking a single box in the menus. Suddenly, a sync request appears. Accepting it, synchronization happens and every file in the folder will be securely transferred into the other node's folder and kept synchronized as long as syncthing is running on both machines. This works both on LAN and across the internet for remote devices.

You can shut it down when you're done. When you need it, just launch it on the nodes you wish to sync, and it will automatically start sending/receiving new files.

This is everything you need to get syncthing work. I really like it for its simplicity, it just runs and syncs files correctly, and allows me to safely share my working folders between my computers. I have no particular setup or configuration to show you – because it's so simple it just works with no further customization and I keep it almost default on my Linux and Android machines.


Post 12 of a 100 series, namely #100DaystoOffload challenge.

This one is my Mastodon's profile.

Three days ago I was watching some YouTube videos, when suddenly a vivid realization manifested in my mind: every single human being on Earth is living a life as intense as mine, as complex as mine, and as strange as mine. We live a life so fast and intricated we barely have enough time to realize we aren't alone in our travel – but surrounded by hundreds, thousands, millions, billions of people who can act, see, smell, touch, do things just like us. Other people will reach their goals like us, will fail like us, act silly like us, love like us, and experience all the range of emotions we feel, getting bored included. This was a bit mindblowing to me: such a simple though was so fundamental and 'obvious', I had never explored it in its totality.

This powerful sensation is called sonder!

A quick research on the internet revealed I'm not the only one who had such an epiphany: according to Urban Dictionary, the word sonder means

Briefly, “the realization that each random passerby is living a life as vivid and complex as your own.” Originally from the Dictionary of Obscure Sorrows, which has a lot more beautiful neologism definitions like this you might enjoy.

and many people experienced it around the world.

Sonder is the uttermost and complete realization we are not alone, a thing we often forget believing we are the main, unique characters of our own life. Remembering this feeling can help us approaching other people and treating them well – because they're just like us.

I know sometimes things aren't easy, neither we live in an ideal world where everyone doesn't hurt others. Yet sometimes, before approaching someone, just remember he's a human like you are, who has his own complex passions, his own goals and desires, and he's vividly experiencing many failures and flops. Just try to be kind to him/her.

And when arguing with another person, maybe something is wrong with him, and he lacks something important in his life. Just remember you could have been in his or her place.


This post was the eleventh of a hundred, for the #100DaystoOffload (it's a challenge where you write about cool stuff for 100 days).

I've a Mastodon account here. Write me there if you want to reach me.

My family problems aren't solved, and those deep troubles caused me to inevitably fail the exam I was planning to pass. The situation itself has been happening for months and is causing me anxiety disorders, mild depression and mental fatigue, while suffering by periodic nervous breakdowns, which summed up they costed me the remaining energy. I can barely stand this, with the help of my sweet girlfriend (I wholeheartedly say I could have never met a better person).

I won't reveal much details here in public, I can only say I have some family issues that prevented me studying and doing my stuff full-time and with my mind focussed on work.


Now, I'm here again. I am deeply sorry I complained here, probably not many of you wanted to read this kind of thoughts and confessions on a blog, but I felt the need to just speak about this.

Starting from tomorrow, I will keep on posting stuff here and write about things I love – at least I'm doing something I like really much.

Since I couldn't pass the exam, I will also post some of its topics and things I found curious about what I am currently studying.


This was #10 of #100DaystoOffload challenge, a challenge where you write at least a hundred posts in a year.

My Mastodon's profile if you want to contact me.

Approaching Day 10 of #100DaystoOffload, I am forced to pause a bit my writing activity. I am currently focusing on an important exam, which involves analysis and design of complex Digital and Analog Circuits. Along with the exam, many family issues and complications arose today. For at least the subsequent 10 to 15 days I will not post anything.

I will resume my activity after I will have taken the exam and solved my familiar problems.


Writing is both a relaxing and funny activity – it lets you to freely express yourself, your ideas, and forces you to put yourself at a stake. It encourages you to share your ideas with the world, to improve your expressive skills, to push yourself to new boundaries and discover new ideas by getting in touch with other people. But don't blog for other people – do it for yourself first; only then, and after you're really happy and fulfilled with what you're doing, plan to write for people.

Writing is a fantastic activity, and I wouldn't want to stop it. But after all, my blog is merely a hobby, and it comes after the real challenges life presents you with.


“And once the storm is over, you won’t remember how you made it through, how you managed to survive. You won’t even be sure, whether the storm is really over. But one thing is certain. When you come out of the storm, you won’t be the same person who walked in. That’s what this storm’s all about.”Haruki Murakami, Kafka on the Shore

In my previous post I've spoken about my note-taking system, which strives to be minimalistic, simple, funny and (hopefully) functional.

To write on it, I use Neovim. Neovim is a reborn Vim editor which is fully compatible with its parent. This means all the guides for Neovim and Vim will be almost certainly compatible, as well as the hotkeys.

This post will not cover Neovim basic hotkeys, nor will talk about how to build your own .vimrc. Instead, I will focus on the plugins I use for my notes system.

Vimwiki

I use vimwiki/vimwiki (github page) to transform my plain-text/markdown note into a powerful Wiki system. It will automatically do the syntaxing for those lines where the cursor is not present, and enable many useful things such as “diaries” for your notes, perform search, follow links, and many many other stuff. If you write in markdown, links are made this way, [Note description](/CUSTOM/PATH/another-note-to-link.md). To open it, put your cursor on the link and press Enter. Another tab with the note you clicked on will be opened. You can put there web URLs as well, they will be opened with your default browser by pressing Enter. This is the same as pressing gg to follow a path with Vim, and gx to open that path with an eXternal resource (such as a browser to open an URL).

I use kind of 2% of Vimwiki features, because that's all I need, and I don't want my system to be too complex or too feature-rich. That said, I often look for new, unexpected features. Vimwiki is a powerful Vim plugin, and I'm discovering new things each time I read the manual page at :help vimwiki.

Ctrlp

I really like what ctrlpvim/ctrlp.vim does. By pressing CTRL+P you open a fuzzy-finder that lets you open another file by searching its name on the list, then pressing Enter. That's it, it's all it does, with the exception of a few commands to improve your search experience. I use it to quickly find notes inside a neovim buffer.

Vim-figlet

Never heard of figlet? It's a command-line tool to create ASCII-text from text.

For example, with figlet "I Love Notes" you will get the following output

 ___   _                     _   _       _            
|_ _| | |    _____   _____  | \ | | ___ | |_ ___  ___ 
 | |  | |   / _ \ \ / / _ \ |  \| |/ _ \| __/ _ \/ __|
 | |  | |__| (_) \ V /  __/ | |\  | (_) | ||  __/\__ \
|___| |_____\___/ \_/ \___| |_| \_|\___/ \__\___||___/
                                                      

How is this related to notes?

Well, I use it to beautify a little my notes with cool titles on top of them.

After installing figlet as a requirement, I installed the fadein/vim-figlet plugin. To get an awesome title, this is what I do.

On the top of a note, I write

    ```
Awesome Title
    ```

and hover my cursor above the title. Then I simply run :FIGlet and the text over my cursor will be transformed in a big ASCII title!

The three accents ` which toggle code-snippets mode are necessary, otherwise your big ASCII title will see syntax highlighting applied on itself, which is not what we truly want.

If you don't like the ASCII font in use, you can try different flavours with :FIGlet -f <font_name>, I extensively use :FIGlet -f small because I find it elegant and not too space consuming.

The result will be like

    ```
   _                                 _____ _ _   _     
  /_\__ __ _____ ___ ___ _ __  ___  |_   _(_) |_| |___ 
 / _ \ V  V / -_|_-</ _ \ '  \/ -_)   | | | |  _| / -_)
/_/ \_\_/\_/\___/__/\___/_|_|_\___|   |_| |_|\__|_\___|
    ```

# Insert small title
Let's write the note now!
[...]

Vim-Airline

If the previous plugin wasn't really necessary, neither is this one. vim-airline/vim-airline and vim-airline/vim-airline-themes will just make your Vim/Neovim cooler, showing a cooler status-bar and a cooler tab-bar. What I really like of this plugin (apart from the appearance) is that it clearly shows open tabs and open buffers. I also add set noshowmode (Airline will handle it by itself) and a bunch of configurations:

        let g:airline_powerline_fonts = 1
        let g:airline#extensions#tabline#enabled = 1
        let g:airline#extensions#tabline#show_tabs = 1
        let g:airline#extensions#tabline#show_tab_count = 1

The first one, of course, will be supported only if you have powerline fonts installed.

A last (but optional) configuration is to select your default Airline theme, if it can't match the theme you're using.

Future improvements

I'm testing fzf for Vim, which is junegunn/fzf.vim. This plugin will quite surely improve my workflow and let me waste less time jumping from file to file.

I'm also testing Goyo+Limelight, from the same author as well. Those plugins aim to make your experience even more minimalistic and distractionless by hiding everything but text!

I'll make further articles about these plugins and other stuff I use to take notes.


This is post #8 of #100DaystoOffload challenge. My mastodon profile: @marcosg@fosstodon.org

This is post #7 of #100DaystoOffload challenge.

I'm an always-curious person, who can hardly focus on one thing at a time. When something does not inspire me or seems too tedious, I will struggle to work on it. This is why my personal note-taking system I ended up with has those simple requirements:

  • has to be easy to implement;
  • must require a little amount of time for organization of things, folders, and whatsoever – it has to be minimalistic and simple;
  • has to be method-agnostic, should be ultimately flexible;
  • and definitely has to be funny and stimulating.

My basic “ingredients” for this are just:

  • a computer, because on a today's computer you can create how many notes you want without consuming physical space. I use Linux;
  • a text-editor to edit notes in a language that allows you to create links between notes and follow them. I use neovim with vimwiki/vimwiki plugin and markdown for the quick syntax. Together they allow to create and follow a link just by pressing Enter;
  • a tool to quickly find filenames and note titles on your system. I use fzf;
  • a tool to search for file contents of your notes. I use ripgrep.

When you've chosen your tools that allow to perform these simple tasks when needed, you're ready to go.

My notes system works like this: each time you need a new note for a new subject or topic you create a different file (I use markdown, so for Operational Amplifiers topic I would go for something like operational-amplifiers.md) and write about that subject inside it with the text editor you've chosen. Plain simple. When you write about a topic, you probably will need to talk about other related topics. Those are handled just like a Wiki, you link them when required directly in the text, pointing to the other note files you wish.

For example, in your operational-amplifier.md file you need to know about BJTs; so you create another file bipolar-junction-transistors.md and write about them. You will then create a link somewhere in operational-amplifiers.md which requires knowledge of BJTs (in markdown this is [BJT](/CUSTOM/PATH/bipolar-junction-transistors.md). Of course, not only BJTs exist in electronics, therefore many other links pointing to other pages of knowledge will exists. Recursively, each of them may require further knowledge, to accomplish through linking other notes. This will end when you're satisfied with the result. The method can scale pretty well, and I used it to efficiently pass my previous exam about UML and C++.

I also found very useful to create my own “homepage”. I called it index.md because it's a kind of an index for my notes. There I throw all the links to my major topics, for example music.md, linux.md, university.md, programming.md, sysadmin.md, books.md, movies.md and the list goes on. These ones are very vast topics so they became pages as well, pointing to actual notes.

When I want to find notes I use one of these 3 methods: 1. I know where they are inside my system, so I just open index.md and follow the links; 2. I know their title, so I just use fzf to find and open them in neovim; 3. I use ripgrep and run rg <search_string> <folder> to find content inside notes, and figure out which one I should open.

All these methods take seconds at most, and this is the reason why I prefer this system: I don't have to spend a significant amount of time organizing notes into folders and multiple sub-folders if I can almost immediately find them with those tools, no matter where they are.

Linking to media files such as PDFs or websites is optional, and markdown+vimwiki supports it with the same syntax you use to link between notes.

Notice that this system is entirely flexible: if you don't want to organize things in small notes linking each other, you can always go for long texts inside a single note and link less pieces of information, or just implement different styles for different subjects. It's your choice to stick with a single method or use different styles.

Inside the single note you can use whatever style you prefer. For example, you can implement a Cornell Notes style or simply build your notes in a linear way, outlining your content.

/CUSTOM/PATH/ of your notes is up to you. I ended up with the most simple of choices: all notes inside a single folder. I can still easily reach them with fzf or ripgrep. If you feel uncomfortable with throwing all of your notes into a single folder, you can put them in folders and sub-folders, this is your choice. The most important thing is to find your balance, not wasting too much time into planning and organizing, and spending most of your time doing actual stuff.

In my next articles I will talk about my setup for this and some small goodies for this system.

Post #6 of #100DaystoOffload challenge

Today I wanted to try out this platform, wordsmith.social, and move here from bearblog.dev

Wordsmith is a micro-blogging platform which supports the ActivityPub protocol. This means this is an instance of the fediverse that can directly interact with Mastodon and the other fediverse platforms.

Bearblog was cool, and honestly I only wanted to try out this other one. Compared to Bearblog, it offers an even more minimal approach, it directly invites you to create a post, and start writing. It doesn't offer pages, nor distractions. Home page by default is simply your content in order of publication date. You can focus on pure writing.

I also want to stop with the Italian translation of all articles. I'm sorry, Italian readers (if any of you ever existed in the first place), but I realized it's not worthy to spend twice as much time translating the same piece of information in Italian.

For this reason, I may probably start a different blog in Italian, with different content, and for a different audience. This platform allows me to open other blogs with the same account, and this is a very nice feature.

So, for now I will keep on posting here.

Original date: 9/2/2021

If there's a single article category I cannot stand, it's that of “the 10 things to do after installing [INSERT DISTRO HERE]“. They're blatantly naive articles, that give the unexperienced user a lot of terrible suggestions. The user in question follows religiously those points, and then the distro is broken, often irreparably.

For example, many Fedora guides suggest Fedy as a third-party installation manager. What could go possibly wrong with that, right? The problem with Fedy is that all the repositories it adds are terrible. They will bring a lot of issues, and broken dependencies due to their unproper maintainance. In place of Fedy, it's really better to just pick up your common sense left, and get all your software from official sources, or well-maintained repositories. The risk to break Fedora is real, despite it being a rock-solid OS with a wonderful QA and recent software.

So, I'll try to remedy to the lack of a good Fedora starting point. Let's try to offer something really valid for new users, the 10 things to do after installing Fedora Workstation. For real.

Little disclaimer: this guide talks about Fedora Workstation, the GNOME desktop edition, which at the date of the article is on version 33. If you use one of the spins, this guide will work as long as you modify something (jump the parts related to GNOME Software for example, or using KDE software store (Discover)).

1. Update Fedora

A new version of Fedora is released every 6 months. Tipically, new versions are released at the end of April and October. This guarantees an optimal stability: kernel and other critical packages are rolling-release, while other fundamental packages see only security patches or occasional upgrades. Fedora Workstation (the defaul edition) runs the GNOME desktop environment. It is updated every six months together with the new Fedora version. Therefore, you will expect changes in GNOME funcionalities only when you upgrade to a new major version.

After installed, you need to update Fedora. Since the system can be months old, we must use a different command:

sudo dnf upgrade --best --refresh --allowerasing 
sudo dnf distro-sync

These commands may be used only after installation, and it's not strictly necessary to run them often. They force the system to upgrade to the latest version, refreshing metadata, choosing the best package versions, and removing/downgrading eventually uneeded packages. This last part is reserved to the distro-sync command.

After doing that, it's important to restart the system to apply the just installed updates. Not restarting now is not advised.

There are two ways to regularly update a Fedora system.

The first method is to check and install updates with the GNOME Software store. It's a graphical-based method, very intuitive and comfortable.

If you want more feedback, or if you prefer the terminal, you just run

sudo dnf upgrade

In every case, update Fedora regularly. You're welcomed to update it at least once a week, and restart to apply the just installed updates. Fedora will keep the latest three kernel versions installed, in case you needed to fallback to a previous one. This can be done in GRUB, during boot. This is NOT intended as a permanent solution, since older kernels suffer from grave vulnerabilities.

2. Install RPMFusion

Fedora is a Linux distribution that ships free software only (except needed firmware; that said, it will never be run on the CPU). For licensing reasons, programs infringing licenses cannot be shipped, nor with non-free licenses. Despite thousands of packages being in Fedora, this limitation is probably restrictive to many users (me included), that would like to use open source programs with licensing problems or other reasons (for example VLC and MPV, which include non-exactly-free codecs). I sometimes hear that Fedora cannot read mp3, this was true years ago, but now it is bullshit. However, this kind of issues are completely solved by RPMFusion. RPMFusion is an external repository, I would say it is THE external repository you would ever need on Fedora. It is divided into two repositories, the free one that contains free software with licensing issues, and the nonfree one which contains, for example, proprietary Nvidia drivers for your video card. The official website is this one. This repository, differently from many PPAs or AUR packages, its strictly maintained by Fedora maintainers and tested to work properly with the main system. It's some kind of a “semi-official extension” of Fedora.

I kindly suggest to install the free RPMFusion repository with the command

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

The nonfree repo instead, it's destined to users that need to install Nvidia proprietary drivers. You can install it with:

https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

If you enabled nonfree repo and you want to install Nvidia drivers, install the following package

sudo dnf install akmod-nvidia

and then restart to see the driver working.

What you should NOT do, is going to Nvidia website and download their drivers. Those are broken and completely unsuited for the fast upgrading pace of Fedora. Doing so, you will almost certainly break your Fedora.

Once enabled, you can simply install all the software they contain with the same dnf commands as explained in the next section.

3. Install some software with dnf

Fedora distributes thousands of packages. In its repository you can find all the main software you will need. The main method is with the package manager dnf. It is a powerful tool, despite being a bit slow, especially for people that come from Debian-based distros or from Arch Linux. The second method is through the GNOME Software. Just search for your software and click on “install”. This is the GUI method. I personally find it rather good and comfortable, but I still prefer the terminal. You will not be disappointed.

We have already seen that the ugprade is made with dnf upgrade. To install software you must use dnf install <package_name> To find package names you can use dnf search <search_string>. That way, package name will be searched inside the repositories.

For example, searching mpv with dnf search mpv, you get the output:

================================== Corrispondenza esatta per Name: mpv ===================================

mpv.x86_64 : Movie player playing most video formats and DVDs
================================ Name & Summary delle corrispondenze: mpv ================================
gnome-mpv.x86_64 : A simple GTK+ frontend for mpv
mpv-libs.x86_64 : Dynamic library for Mpv frontends
mpv-libs-devel.x86_64 : Development package for libmpv
mpv-mpris.x86_64 : MPRIS plugin for mpv
perl-Devel-Dumpvar.noarch : Pure-OO reimplementation of dumpvar.pl
vdr-mpv.x86_64 : A mpv player plugin for VDR
xt7-player-mpv.noarch : Qt/Gambas gui to mpv media player
===================================== Name delle corrispondenze: mpv =====================================
bumpversion.noarch : Version-bump your software with a single command
perl-Dumpvalue.noarch : Screen dump of Perl data
=================================== Summary delle corrispondenze: mpv ====================================
celluloid.x86_64 : A simple GTK+ frontend for mpv
deepin-movie.x86_64 : Deepin movie based on mpv
smplayer.x86_64 : A graphical frontend for mplayer and mpv

You can then install the powerful media-player with sudo dnf install mpv. Alternatively, you can install celluloid, a media-player based on mpv with a nicer GUI.

A list of programs I kindly suggest is the following:

  • ffmpeg: adds codec support to various softwares;
  • gimp: photo editing sofware. If you search gimp with dnf search it's possible to find all the optional plugins;
  • kdenlive: video editing software;
  • audacity-freeworld: version of Audacity with all the codecs from RPMFusion;
  • chromium-freeworld: Chromium version with all the codecs from RPMFusion;
  • blender: 3D modeling and video editing software;
  • git: VCS done right;
  • keepassxc: wonderful local password manager;
  • transmission: a torrent client;
  • telegram-desktop: Fedora's telegram version;
  • evolution-spamassassin: a complete e-mail manager, with spamassassin filter;
  • darktable: nice RAW editor for photos;
  • calibre: e-book reader;
  • tilix and tilix-nautilux: a terminal that can split horizontally or vertically;

and so on.

Uninstalling packages happens with the command dnf remove <package_name>. To get a list of all installed packages, just run dnf list --installed. Replacing the flag --installed with --all will print the complete list of available packages.

4. Enable flatpaks for proprietary programs you eventually need

Flatpak is an innovative open-source packaging technology, or a platform to create and distribute Linux applications. To make it short, it allows to install programs in a separate manner from the underlying operating system, inside a sandbox, that is able to isolate those programs from the OS.

At the momeny it's still an experimental technology, it suffers from many issues, some security issues (application update policy entirely depend by the package owner, and not by the maintainers from the distribution, libraries out of date with unfixed vulnerabilities), some other usability issues (it uses more disk space, doesn't properly support command-line, programs inside the sandbox can have less funcionalities, and so on). dnf and the main repository are virtually always preferred as the install method. However, flatpaks are great for proprietary software such as Microsoft Teams, Skype, Spotify, Discord and so on. They will be installed separately from the OS. You can also configure the sandbox with this in a second moment.

Flatpak “store” is the official website flathub.org. Following the instructions on the website, you enable the repository with the command

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

which will install flathub's repository for all the system's users. If you wish to install it for your user exclusively, it's sufficient to postpone the --user flag, namely

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo --user

If you're not sure about what to do, I advice you to use the flag --user, because this will never require sudo privileges to run. If you installed the repository with the flag, you should remember to put it everytime you run the command flatpak, or to choose the corresponding method to install a flatpak in the GNOME Software store (choose “user”, not “system”), in the top-right button.

To install flatpak software you can also go on flathub.org, find your software, and click “install”. It will download a file. Double-click on it, and install it with the GNOME store.

The classic way is with the console. Run flatpak install <flatpak_name> and eventually add --user flag. For example, if you wish to install Spotify you can run

flatpak install org.spotify.Client

it will install Spotify as a flatpak with all necessary flatpak dependencies. There are two ways to get the package name: * using flatpak search <search_string>; * going to flathub.org, searching your favourite program, and looking for the last part of the link.

Both methods are valid.

A program I kindly advice to install via flatpak is Steam (com.valvesoftware.Steam). Steam needs ancient libraries which are not properly provided by the recent versions of Fedora. Steam will benefit from the flatpak older libraries.

To update flatpaks in your system (do it at least once a week), you can use GNOME Software or flatpak update, eventually adding --user flag. Removal of packages is done by flatpak remove <flatpak_name>.

5. Some other goodies

Some applications using Qt framework, for example telegram-desktop, will suffer from clipboard issues and other things when running GNOME. To solve this, add the following line in /etc/environment,

QT_QPA_PLATFORM=xcb

and restart the system.

If you wish, you can install pulseeffects to enable audio quality improvements on the startup. To do so, just follow this part of the wonderful install script from Tobias Wolfshappen, an expert Fedora user.

It's sufficient to add to ~/.config/autostart/pulseeffects-service.desktop the following content:

Name=PulseEffects
Comment=PulseEffects Service
Exec=pulseeffects --gapplication-service
Icon=pulseeffects
StartupNotify=false
Terminal=false
Type=Application

This will enable pulseeffects service at startup.

To get a superior audio quality, in the same way let's create the file ~/.config/pulse/daemon.conf and put inside it the following:

default-sample-format = float32ne
default-sample-rate = 48000
alternate-sample-rate = 44100
resample-method = speex-float-10
high-priority = yes
nice-level = -18
realtime-scheduling = no
realtime-priority = 9
rlimit-rtprio = 9
avoid-resampling = yes

This way, you will get a better audio quality at the next reboot.

Another improvement is the antialiasing quality of system fonts. Execute gsettings set org.gnome.settings-daemon.plugins.xsettings antialiasing 'rgba' to set it from greyscale to rgba. This will work on GNOME only.

6. Get in touch with Fedora community

Fedora offers the chance to get in touch with the community (or simply, ask questions and require assistance) through many channels. I will briefly remind some of them:

Community is warm and welcoming. There are many channels dedicated to off-topic, such as Blue Hat. There are many other initiatives, and I invite you to check them out.

7. There's no other point

The things to do after installing Fedora shouldn't necessary be 10.

Additional tips

  • Here you can find out how to upgrade Fedora version.
  • Podman is a valid docker alternative. Here some interesting articles, and here the Arch Wiki page. Fedora natively supports only Podman, and docker is not fully supported on it. Podman can be used to fully replace docker with the same commands.
  • Despite snap exising on repositories, it's not completely supported on Fedora and has many issues. It's always better to prefer flatpak instead of snap.
  • If we want to declare a hierarchy when choosing a source to install a program from, it's the following order: official repository –> RPMFusion –> Flatpak –> COPR (they are very similar to Ubuntu PPAs) –> anything else.
  • It's possible to add a dock on GNOME installing gnome-tweaks and gnome-shell-extension-dash-to-dock, rebooting the system, launching Tweaks and enabling the extension. It's possible to configure it too, on Tweaks.

This was the end of the “list”, hope you found it useful. The rest is up to you, your curiosity and your tastes. I wish you good work and have fun on Fedora!

Original date: 7/2/2021

Today I decided to get out of my comfort zone, and I replaced Fedora with Arch Linux on my desktop machine. My old machine (i5 4670, 8GB RAM, iGPU) supported the GNOME desktop environment very well on both OSs. I am not switching for a better performance (for that, I could have simply installed a different Fedora spin[1]).

1. Fedora spins

Installation was buttery-smooth. I've made simple choices for now: I've chosen ext4 as filesystem, GRUB as bootloader, GNOME desktop as the Desktop Environment (installed the gnome group) and I installed all the programs I need. In the future I will probably switch to a Window Manager (I am willing to try both Sway and dwm).

I've chosen Arch Linux because gives me the tools and encourages me to experiment with different Desktop Environments, Window Managers, different software, bootloader, maybe I will even install it again and switch to another filesystem (at the moment, I don't need extra features provided by newer filesystems such as BTRFS). Also the AUR is a big plus for some exotic software.

I will experiment on Arch a lot on my desktop.

I still use Fedora on my laptop and I will continue to do so. Fedora on the laptop works extraordinarily well, and it's a rock solid OS and never gave my a single issue.

Original date: 6/2/2021

After I've completely removed all my social media accounts on centralized networks as Twitter, Reddit and Facebook, I've been digging into the indieweb[1] blog sphere. This not only allowed me to improve the quality of my time, focusing only on blogs and content that matters to me, but it also let me discover totally new points of view that I actually didn't like at first, but made me reevaluate my ideas on politics, computer programming, system administration, and so on. This constant flow of ideas and cool stuff was barely possible on websites or aggregators like Reddit, where roughly 1 post out of 50 was worth my time and many of them (especially controversial ones) were silently hidden by their attention-keeping algorithm.

1. The Indie Web

There are many possible ways to keep in touch with your favourite blogs, but the simplest and most flexible technology are the old, fashioned RSS feeds. RSS feeds can be read by hundreds of different applications, they are widely supported, and almost any website with articles or news makes available an RSS feed for their content (even Twitter and YouTube have RSS feeds for channels and pages). You just look for the RSS icon and click it, or find the RSS feed with[2] other[3] methods[4].

2. Find a RSS feed

3. YouTube RSS feeds

4. Generic methods to find RSS feeds.

There are many advantages of RSS feeds over the mainstream social media platform, just to name a few:

  • contents are not filtered by an algorithm that decides what you are allowed to see: RSS feed readers just show you everything from the website you added. No filter bubble[5], you own the information you want to read;
  • they aren't constantly fighting for your attention. Social media use different techniques to manipulate and to tempt you to browse on their platform – constantly. RSS readers don't do that;
  • RSS readers are flexible. This is really important: when Facebook or Reddit fuck up, you have no alternatives. You're forced to use them to read their contents, even when they start going against your interests. When an RSS reader application doesn't fit you anymore, you simply switch to another one. That's it;
  • RSS readers that are free and open source[6] (on Android, install F-Droid and use Flym or Feeder) don't track their users. This is important: your interests and reads will not be randomly collected by whatsoever social media advertizing platform you're signed in.

5. What is the filter bubble

6. Free and open source RSS readers

How RSS readers work

Despite being very different, they work all the same way: you add the RSS feed URL the website gave you (for example, if you want to follow Drew Devault's fantastic blog (https://drewdevault.com/) you simply add to your RSS reader the link he provides on his website, ( e.g. https://drewdevault.com/blog/index.xml ). After that, your RSS reader should start fetching content and visualizing articles from the resources you added.

What about newsboat?

Newsboat is a RSS/Atom (Atom is another technology similar to RSS) feed reader for the terminal. It provides you a clean, elegant, and minimal interface to comfortably read your favourite blogs inside your terminal of choice. I use it because it is very simple (in the sense of essential), configuration is inside dotfiles, and allows me to set up Vim-like hotkeys, read links directly into the console with my custom theming, and when it's not enough it lets me open any article or link in my browser.

Whatever, let's see how I use it.

Regardless of the Linux distribution, newsboat should be available in the main repository without adding external sources. Find it and install it.

After installation, your feed reader will be empty. To add links, create a folder with name .newsboat in your $HOME folder. Inside that folder we will put the configuration file (named config), and the file containing all the URLs we want it to fetch (named urls).

The configuration file in ~/.newsboat/config doesn't exist or is empty, and we are going to set up ours. I will post my simple configuration and comment it:

auto-reload yes
reload-time 120
reload-threads 100

download-retries 5
download-timeout 60

bind-key j down
bind-key k up
bind-key j next articlelist
bind-key k prev articlelist
bind-key J next-feed articlelist
bind-key K prev-feed articlelist
bind-key G end
bind-key g home
bind-key d pagedown
bind-key u pageup
bind-key l open
bind-key h quit
bind-key a toggle-article-read
bind-key n next-unread
bind-key N prev-unread
bind-key D pb-download
bind-key U show-urls
bind-key x pb-delete

browser "firefox %u"

macro y set browser "mpv %u" ; open-in-browser ; set browser "firefox %u"
macro , set browser "firefox %u"; open-in-browser

The line auto-reload yes makes sure that the reader will fetch content automatically, and not only when started. The delay between auto-reloadings is declared (in minutes) with reload-time and you can also set up the number of threads involved with reload-threads, to speed up the process if you are subscribed to many different sources. download-retries and download-timeout (in seconds) are useful if you're fetching your feeds over TOR or behind a slow network. The first is the number of times it will retry the connection if the reader cannot fetch the content, and the second one defines the timeout for declaring a content unreachable.

The next part of the list is dedicated to key bindings. They are set up to closely resemble Vim-hotkeys, but if you don't need them you can stick with the default ones (to view them, press ? when running newsboat).

browser "firefox %u allows me to set the default browser. Any other browsers, such as Chromium, Brave or Vivaldi, follow the same syntax.

The next two commands define two macros. Macros are available when pressing , (the comma). The first macro is called when pressing y after , . I use it when I want to watch a YouTube video from the feeds. It sets the browser to mpv (the most powerful media player available), open the URL in the browser (the media player) that starts to fetch and comfortably display the video. After that, it sets the browser to the default choice. The second one simply opens the URL in firefox, and it is called by pressing twice , .

The config files allows to setup your own colorscheme, but since this is optional we will go through it later.

Most of the supplemental infos on configuration file can be found in the documentation[7].

7. Documentation

After the configuration setup, we can start adding URLs. RSS feeds may be simply added into ~/.newsboat/urls, one per line, for example:

https://drewdevault.com/blog/index.xml
https://www.schneier.com/feed/atom/
https://robertheaton.com/feed
http://www.hackerfactor.com/blog/index.php?/feeds/index.rss2
https://www.unixsheikh.com/feed.rss
https://ar.al/index.xml
https://kevq.uk/feed.xml
https://mikestone.me/feed.xml
https://rusingh.com/feed.xml

When launching newsboat, they will be shown in the same order we put them here.

I added a little bit of customization, adding text-only lines to divide my feeds into categories. I did this by putting " at the beginning of such lines:

" =============================================================================
" ===> BLOGS <=================================================================
" =============================================================================
" ------> Programming and Security <-------------------------------------------
https://drewdevault.com/blog/index.xml
https://www.schneier.com/feed/atom/
https://robertheaton.com/feed
http://www.hackerfactor.com/blog/index.php?/feeds/index.rss2
https://www.unixsheikh.com/feed.rss
https://ar.al/index.xml
https://kevq.uk/feed.xml
https://mikestone.me/feed.xml
https://rusingh.com/feed.xml
" "
" ------> Linux <--------------------------------------------------------------
https://fedoramagazine.org/feed/
https://newsboat.org/news.atom
https://www.phoronix.com/rss.php
" "
" =============================================================================
" ===> YOUTUBE CHANNELS <======================================================
" =============================================================================
https://www.youtube.com/feeds/videos.xml?channel_id=UCYFgn8_JgaQL1E-N2tg1xcQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCIPsK5xspHC3-ZFNPTx2X_w

and so on. Of course, designing this part is up to you, and it depends on your tastes and needs.

After running newsboat, you may notice that a file, cache.db has been created into the .newsboat folder. This file allows the program to keep track of the already seen articles, and may be worthwhile to sync it across devices if you're running newsboat on multiple machines.

Custom colorschemes

This part is completely optional. I personally love the gruvbox colorscheme[8], and I use it on almost everything. The documentation[9] offers a nice section on how to customize newsboat colors.

8. gruvbox color palette

9. Newsboat official documentation on colorscheme customization.

This is what I added in my config file:

# colors
color background          black      default
color listnormal          color8     default
color listnormal_unread   green      default bold
color listfocus           white     blue bold
color listfocus_unread    yellow     blue bold
color info                cyan      color235 bold standout
color article             white      default

# highlights
highlight article "^(Feed|Link):.*$" yellow default bold
highlight article "^(Title|Date|Author):.*$" yellow default bold
highlight article "https?://[^ ]+" blue default underline
highlight article "\\[[0-9]+\\]" yellow default bold
highlight article "\\[image\\ [0-9]+\\]" yellow default bold
highlight feedlist "^─.*$" yellow color235 bold

and it's quite suited for terminal gruvbox colorscheme. As you can see, it doesn't only allow to declare colors, but it also allows to configure highlights with regex.

Colorscheme setup depends on your terminal colorscheme, and it is a trial-and-error process to find the perfect one for you.

Other informations can be found, of course, in the official documentation[10], in the manpage[11] or in the Arch Wiki[12].

10. Official documentation

11. manpage

12. Arch Wiki page for newsboat.