Virtualmin + SFTP + chroot

This guide examines setting up chroot’ed SFTP-only user accounts under Virtualmin.

The Rationale:

SFTP is a secure alternative to FTP and FTPS that uses SSH. With this setup, no FTP server is needed, as the native sshd server is used instead, SSH does not require an SSL certificate (like FTPS), and is usually considered more . . . → Read More: Virtualmin + SFTP + chroot

Perl: Default to UTF-8 encoding

The UTF-8 (Unicode) character encoding system is a well supported alternative to the older ISO-8859-1 (Latin-1) system that can make it easier to work with special characters and multiple languages. Many developers can exercise sufficient control over their system to ensure that:

All Perl source code is encoded in UTF-8 All text input files and . . . → Read More: Perl: Default to UTF-8 encoding

Perl access to local install of the W3C CSS validator

The W3C CSS validator is an online service for checking a stylesheet for standards compliance. This service can be accessed in Perl via the WebService::Validator::CSS::W3C module, which is handy for automating validation. However, for checking a large number of stylesheets, it is better to run a local install of the validator so as not to . . . → Read More: Perl access to local install of the W3C CSS validator

jQuery Scrolling Anchors

This is a comprehensive jQuery solution to the Scrolling Anchors effect. Typical solutions replace the browser’s native “jump-to” behaviour for local anchors with a smooth scrolling effect, but fail to replace all other functionality related to local anchors. This solution:

Adds the link to the history like the browser does natively Respects event bubbling like . . . → Read More: jQuery Scrolling Anchors

Linux memory leak detection

Tracking down the source of a memory leak in Linux is not always straightforward…

Signs of a Memory Leak:

Typically, the first sign of a memory leak is the oom-killer. If programs start dying inexplicably, check the system log (usually /var/log/messages) for evidence of the oom-killer in action. This should be accompanied by low memory . . . → Read More: Linux memory leak detection

Compiling programs in Fedora

Say you want to install a program in Fedora…

Before Compiling:

Many programs are available easily in the Fedora repositories via yum.

If you don’t already have a graphical package management tool, then install PackageKit or yumex. If you prefer the command-line, then (as root / under sudo) use: >yum search <program> to see if . . . → Read More: Compiling programs in Fedora

Perl global error handler

This is in an Apache::ASP based system, but should theoretically work in any web environment.

I wanted to create a global default error handler ($SIG{__DIE__}) that displays the error text on the page.

Some notes:

It is generally recommended that run-time errors be trapped on a case-by-case basis using try/catch style eval statements. A global . . . → Read More: Perl global error handler

Dual-monitor + TV

In the current GNOME shell, Xinerama, the feature that supports more than 2 adjacent displays, is broken. With my nVidia card, the native Nouveau driver doesn’t even detect the 3rd output. The proprietary nVidia driver detects 3 outputs, but cannot enable all of them simultaneously, even without Xinerama (ie, as separate X displays). 🙁 So . . . → Read More: Dual-monitor + TV

Nautilus open-with / mime-type associations

Using the native GNOME file manager Nautilus, you can double-click on a file to open it with its default application. If you don’t like that, are not sure what the default application is, or want to modify it, then you can right-click on the file to see a list of mime-type associations. The first item . . . → Read More: Nautilus open-with / mime-type associations

Perl regular expressions – limit

Just ran into a limitation of Perl regular expressions. It’s mentioned (in brackets!) here:, but I didn’t see mention of it in the Perl manual, so this wasn’t easy to track down.

It’s stated as: “Perl currently has an internal limit of 32K repeats for parenthetical items”. The following code is sufficient to demonstrate . . . → Read More: Perl regular expressions – limit