Let’s install Ubuntu 25.04 on Apple Silicon (M1) in a virtual machine using UTM. We must first download an Ubuntu ISO for ARM. Go to https://ubuntu.com/download/desktop and search for “ARM 64-bit architecture”; if not available for the specific version you want to install, then you’ll have to install the Ubuntu Server and then install the “ubuntu-desktop” […]
On some computers, like the new Dell Pro Max Tower T2 and the old XPS 13, the SATA operation mode for the SSD is set to RAID by default. Linux will not be able to see the SSD in RAID mode: you need to change it to AHCI. If you just change it to AHCI […]
If you’re a KDE user who wants to keep your desktop configuration under version control, you’ve probably discovered that KDE’s configuration files can be quite challenging to manage with traditional dotfile tools. KDE stores settings in complex INI files that frequently change, contain system-specific data, and include sections you may not want to track. This […]
Let’s see what Eclipse looks like in Wayland in 2025. I report some screenshots of a few Wayland Window Managers and Desktop Environments. Sway Eclipse looks good in Sway: Hyprland The same can be said for Hyprland, especially now that the infamous bug has been solved: GNOME No problems on GNOME either; I’d expect that […]
Unison, a powerful file synchronizer, has long been one of my favorite tools. However, installing Unison on macOS used to be a manual and sometimes cumbersome process, as detailed in my earlier guide. The great news is that Unison is now available as a Homebrew cask! This means you can install it with a single […]
I bought this laptop in late 2016. It’s still a good laptop (8 GB RAM, 128 GB SSD) and very light. However, I cannot use it with macOS anymore. I previously blogged on installing Ubuntu on my old MacBook Air. Everything mainly went smoothly, except for the WiFi, which was not working during and after the […]
Zram, https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html, is a Linux kernel module that creates a compressed block device in RAM. This device can be used as swap space or a general-purpose RAM disk. By compressing data in memory, zram allows your system to store more data in RAM, reducing the need to swap to slower disk storage and improving overall […]
I like Nerd Fonts a lot, and blogged about those in the past. If you spend a lot of time in the terminal, you’ve probably heard of them: they patch popular programming fonts with a huge set of icons, making your terminal and development environment look great and more informative. Here’s how you can easily […]
If you use Lazygit as your terminal Git UI, you know how convenient it is for staging, committing, and managing branches. I use it in Neovim (LazyVim already configures it). Integrating a custom pager (Lazygit Custom Pagers Documentation) can dramatically improve how diffs are displayed. In this blog post, I’ll document how to use delta: […]
When working with Maven projects, the Surefire plugin is commonly used to execute tests, but it lacks a built-in feature to display the total execution time across all test suites. This can be particularly important when monitoring performance trends in larger projects with many test classes. Maven’s Surefire plugin reports execution time for individual test […]
I’m going to show you how to use Neovim on Gitpod. This can be useful for checking and testing your Neovim configuration. The example can be found here: https://github.com/LorenzoBettini/neovim-gitpod-example. I’m using a LazyVim distribution as a demonstration. The Gitpod custom Dockerfile, “.gitpod.Dockerfile”, must be tweaked to install Neovim and its requirements (especially for using Lazyvim):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# You can find the new timestamped tags here: https://hub.docker.com/r/gitpod/workspace-full/tags
FROM gitpod/workspace-full:2025年04月16日-08-49-20
# Install packages that are not in the Ubuntu repos
# the version in Ubuntu repos is too old for lazy.vim
# shellcheck is not available at all in Ubuntu repos
RUN brew update
RUN brew install \
neovim \
shellcheck
# install-packages is a wrapper for `apt` that helps skip a few commands in the docker env.
# additional packages needed in neovim with this configuration
# (tree is just to inspect folders, not needed by neovim)
RUN sudo install-packages \
fzf \
ripgrep \
stow \
npm \
tree
[…]
Using “pip” is the supported installation method for Ansible and Molecule. Let’s install Python libraries and applications (in this case, Ansible and Molecule) in a Python virtual environment. (This post is similar to the one about Ubuntu.) First, install the required packages, including the Python virtual environment package:
sudo pacman-Spython-pip python-virtualenv
Create a virtual environment somewhere (in […]
I experimented with Copilot “Agent mode”: I told it to create a Maven plugin. (Let me stress that I already have some experience implementing and testing Maven plugins.) I’ll report my experience, which has been positive in some respects but disappointing in others. I use “Claude 3.5 Sonnet” model because that’s the one used in […]
The “remote” feature of flash.nvim is handy: it acts in “operator pending mode” to perform operations and then return to the original position. It took me some time to understand what it was doing, so I’m writing about it. I’m using it in the LazyVim distribution, which enables “flash” by default (and also “which-key”, which […]
Using “pip” is the supported installation method for Ansible and Molecule. In Ubuntu, just using “pip” will lead to the error “externally-managed-environment” because of the Python environment that is "externally managed" by the package manager (this prevents direct use of pip for system-wide installations to avoid conflicts or issues). (This post is similar to the one […]
This is the first part of a few tutorials on using the LaTeX typesetting system with Neovim using the LazyVim setup. I highly recommend LazyVim because it has many cool plugins configured with nice defaults. Moreover, as we see in this tutorial, it lets you quickly have VimTeX and the TexLab LSP up and running […]
Similar to what I had already shown in a previous post, in this post, I show how you can install (and keep up-to-date) the “tpm” (Tmux Plugin Manager) with Chezmoi, which I highly recommend! Typically, you manually install “tpm” by cloning its GitHub repository into the proper directory:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Let’s do that automatically with Chezmoi instead. Chezmoi […]
I bought this laptop in late 2016. It’s still a good laptop (8 GB RAM, 128 GB SSD) and very light. However, I cannot use it with macOS anymore. Let’s put Ubuntu Linux on the laptop! I’ll write the installation instructions and the configurations for a fully functional Ubuntu on this MacBook Air, which runs […]
I like the tracker service in Gnome, which indexes files so that you can easily search for them from the Activity view or the file manager. However, I don’t like tracker-extract, which also indexes the file contents: I use Recoll for such a service, and tracker-extract uses too much CPU (it indexes new or modified […]
Updated on 26 March 2025 with more screenshots about the new font. GNOME 48 has just been released on Arch Linux! (And thus, also on EndeavourOS). Unfortunately, many extensions have been turned off because they are not yet compatible (that’s quite usual with new versions of GNOME): The most critical one is the first one […]