The Linux Page

Help other users realize that everything is possible, especially avoiding Windows for their own personal use.

Welcome to The Linux Page

Fox Trot by Bill Amend. Click to enlarge.
Click to enlarge

This site is a collection of my own work with Linux. Certain things are easy, others take time to decipher and if I ever need to repeat the work (which usually happens!), then I need to remember everything by memory or... have a site with all the steps taken and to take again.

The following are my most recent posts:

Virtual Mount of Rocks with a Beautiful Sunset in the Background


Today I made a mistake and create the file /etc/sudoers.d/timeout which was definitely not compatible with sudo. The file was JSON when sudo only accepts very basic var=value lines.


I could not use sudo anymore on that VM. I had to find a way to fix the file system without having to rebuild the entire disk because that would have taken way too long.

How to Mount a VDI File

Since your VDI (VirtualBox Disk Image) files are literally disk files, they should be mountable, right? Yes! They are. Actually, that's certainly exactly what the VirtualBox code does, but ...

A 1U server, what a servlet (called at Droplet at DigitalOcean) or VPS represents although you have many within a single computer now.


When I create a new DigitalOcean droplet I have to run a few commands that I don't otherwise use very much at all so I was thinking that adding them here would make it easier to remember.

Creating a New Key with ssh-keygen

I use the same key for each group of computers I manage there. Each time I create a new group, I create a new key with the ssh-keygen command as so:

% ssh-keygen -t rsa
Enter file in which to save the key (/home/alexis/.ssh/id_rsa): ...

WARNING: as we can see ssh-keygen asks you to write the resulting keys using the default ...

Stylish Motorbike Speedometer


I had some problems (and may still have some problems) with a computer which at times drops its transfer speed to 100Mb instead of running at full speed (1Gb).

I think that one possible problem is that the card detects a "weak" cable, probably because it's a very long one.

Today I was surprised that it ran at full speed, though. I really thought that the network card was dead for good, especially because I tested with a MS-Windows laptop which would get the 1Gb transfer rate as expected.


Discovering Connections

Under Linux, you first need to ...

A bunch of icicles with droplets at the bottom as they are slowly melting.

In an Excel Spreadsheet (Microsoft)

I have been wondering how to lock a few rows and/or columns at the top-left in Excel. I have seen that being done many times, but did not know how to do it myself...

In the Windows menu (Before Office 2007) and in the View menu (Since Office 2007) you will find an option named Freeze Panes. You have three selections:

  1. Freeze the selected top rows
  2. Freeze the selected left columns
  3. Freeze the selected top rows and left columns

If you just need one row and/or column, place your cursor in the A1 cell (the very first top-left cell).


A couple of seahorses mating

Problem Loading SeaMonkey

Today, I finally upgraded to SeaMonkey 2.49.3.

It was out on Nov 4, 2017 but I did not check for it any time sooner. Bad for me as there were some bugs in 2.48 that banks and such were warning about (oh and WordPress too...)

Anyway. I downloaded the new version. Extracted the files. Updated my icon with the new path. Click on the icon to open the browser. Nothing.

So I know that it is likely that it prints out some errors when nothing happens like that, so I went to my console and tried to start seamonkey in my command line window.

Indeed, errors were ...

Bluish smoke like design representing a modern library


The Qt library version can be retrieved in all sorts of ways, using your command line or C++ code. There are a few I use:

Test Whether Qt is Installed

Before testing the version, you probably want to verify that Qt is installed.

qmake is pretty much always installed whenever you install Qt. Debian and Ubuntu use the qt5-default package which directly depends on qtchooser which includes qmake. Other architectures are likely to use different package names, but you certainly get a similar effect. Many script depend on qmake being installed to check the Qt version which is ...

Various types of noodles sorted by category in a box with columns.


A QTableWidget uses QVariant as its value type. By default, though, it expects a string (in the construtor, you do not have support for QVariant).

Note that the QVariant uses the QTableWidthItem::setData() function and it keeps the variant as such.

This is great, only sometimes (always?!) you need a formatted number and that's not likely to work as expected because a formatted number requires you to use a string, not just a number and a format (which would be a better solution, i.e. a per column format such as defined by the QString::arg() functions.)

Setup a ...

Foggy train tracks that divides as threads in a process do.


Working on a project that creates many threads handling many messages using secure sockets for everything, I ran in an interesting error (I broke up the error on multiple lines so it's easier to read than a one liner with a scrollbar!):

# OpenSSL error
06/11/18 14:31:39:error: tcp_client_server.cpp/bio_log_errors(367):
       OpenSSL: [336236705/20|169|161]:[<no libname>]:[<no
       funcname>]:[<no reason>]:[ssl_lib.c]:[1963]:[(no details)]

# My library error
06/11/18 14:31:39:error: safe_thread.h/run(468): a standard
       exception occurred in ...

Find the Frog! (Many frogs sculptures on a mini-bench in various position such as kissing, taking a bath, dancing...)


Today, I got a rather weird C++ error. That is. My code is very simply doing a search using the std::find() function as follow:

    auto it(std::find(
        , headers.cend()
        , column_name));

Yet, it would not compile that simple line of  code.

Clearly, I use the begin() and end() of the same vector, and I use a value which is exactly what the vector is made of (we see that in the first line of error below: the std::vector<> T parameter is a basic string, which is what column_name is.)

Looking at the error, we see that it ...

Rows and columns of boxes with a name... similar to a database of domain names.


At some point in 2017, the WHOIS registry was split in two.

Before that, WHOIS was all in one place (at least from what I understand) and thus a query would return all the info you could get.

Once in a while, I would receive an email from GoDaddy (which is not my favorite registrar anymore, although they still have excellent service.) That email would say "You have to update your information with ICANN."

This email has stopped for a couple of years now and that's in link with the split. You now register with your registrar and not ICANN so the updates have to be ...

Unfreeze your Mouse when it Froze

Thank you for visiting my website.