Blog

We offer the articles below in the hope that they will be useful, but we cannot accept liability for any problems caused by the instructions that they contain. If you have a problem, question or feedback relating to one of our articles, please post a comment so that other readers can benefit. We regularly review comments and reply or update the articles, to ensure their continued usefulness. All articles are provided free, without any advertising or tracking, for the benefit of the technical community.

If you require paid commercial support, please contact us for assistance.

Fixing XFCE lock screen bug in Ubuntu 23.04 Lunar Lobster

There’s a bug in the latest version of Ubuntu, whereby the XFCE4 lock screen repeatedly crashes. It’s already been fixed upstream in version 4.18.0, but as yet a fix has yet to be backported to Ubuntu. The fix is fairly simple, so I applied it to the current Ubuntu package and rebuilt it. Below are notes on how to do that.

First, edit your apt sources list to enable source download. Make sure that /etc/apt/sources.list includes the following line, uncommented (leave the other lines unchanged):

Limit maximum battery charge in LG Gram with Linux

For laptops that are usually plugged into mains power, it’s a good idea to either remove the battery (if it’s removable), or limit the maximum charge. This extends the battery life, as keeping a battery fully charged all the time is not good for it. Many Windows laptops come with power saving tools to configure this, but the means of doing so are not very standardised and I haven’t seen any graphical Linux tools to manage it.

Disable Intel Turbo Boost in Linux automatically on boot

I recently switched to using an LG Gram laptop. Current Linux kernels have a bug with this series of laptops, which cause the CPU load to spike when a USB-C device is attached, which includes the power supply. The CPU load spike in turn overheats the CPU, maxes out the fan, and reduces battery life. Apparently a fix is expected from the mainline kernel soon, but in the meantime, I needed a way of mitigating it.

How to fix Cygwin terminal not opening

At the moment I'm working on a project where I need to use Windows, but don't have access to the Windows subsystem for Linux. In order to get access to Linux command line tools, I've installed Cygwin. For some reason Cygwin frequently breaks after a system reboot. Clicking on the Cygwin terminal launcher from the start menu, or from within Windows Explorer, briefly flickers as the Cygwin terminal starts and then immediately closes. There are lots of posts about similar issues on online forums, which generally involve some complex reinstallation of Cygwin, or updating the launch shortcuts.

UK government doesn't recognise .uk top level domain

When domain registrations for the .uk TLD* were introduced in 2014, many in the technical community dismissed it as a cynical cash grab by Nominet. Since then, they seem to have been proven right, as evidenced in media coverage by The Register among others. However, several years ago I registered a .uk domain to use for personal emails, as much for the novelty as anything.

Fix missing Droid monospace fonts in VSCode, VSCodium and Sublime on Ubuntu and Debian

Today I noticed that my usual code editors had stopped displaying code in monospace. Here is a quick fix to get that working again.

Monospace fonts are a huge help when editing code, as they make it much simpler to follow the vertical alignment of code at a glance. This is useful for whitespace-agnostic languages such as JavaScript, PHP, C++ etc, and essential for whitespace-dependent languages such as Python.

How to view user-defined stored procedures in PostgreSQL

Recently I’ve frequently been finding myself needing to look up details of custom stored procedures in PostgreSQL databases. Here are a few helpful queries for that.

First, a simple list of the queries:

SELECT n.nspname AS schema, p.proname AS procedure FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') AND p.prokind = 'p';

Second, the owner of the procedures:

SELECT proname, proowner::regrole FROM pg_proc WHERE pronamespace::regnamespace::text = 'public';