Sam's home page on this here internet thing
Welcome!
The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. -- George Bernard Shaw |
Crypto
My PGP key, for paranoid people who wish to contact me.
Creations
Art: pictures I have drawn, or otherwise computed.
Software: interesting/useful programs written by me. Includes Solar, my University project. Mostly moved to GitHub these days.
Is This Image Illegal?: Renders an arbitrary number as an image.
Dotfiles: my configuration files for Bash, Vim, etc. Includes a fancy coloured prompt!
I wrote a letter to NVIDIA, asking them to make the specifications of their graphics hardware so that free drivers could be created for them.
Guides
PasswordGeneration: generate passwords given alphabet and desired entropy
FreeIPA: my own notes on FreeIPA regarding stuff that I wish was in the manual
CertmongerSELinux: when SELinux prevents your post-save command from working...
WritingManpages: useful links to documentation
Moving a Windows installation to a new disk - without reinstalling
CreatingWindows10InstallerUSBFromLinux: when you need to install Windows 10 and you don't have another Windows system on which to run the Media Creation Tool...
Some notes on performing Continuous Integration builds of Debian packages
LinuxMultiGPUDeviceSelection: what exactly does the DRI_PRIME environment variable do?
... and on my pbuilder firewall setup
The use of wrapper scripts when verifying arguments with sudo
PodmanOnDebian: how to build the official Debian Podman packages on your own machine, while they are waiting in the NEW queue
Tightening up the default privileges granted to users of a PostgreSQL database cluster
Using udev rules to configure libinput to ignore an unwanted keyboard device
Filtering Emails from Facebook based on the X-Facebook-Notify header
FirewalldZones quick reference
Updating the firmware of the WD Blue SA510 SATA SSD from Linux
PKCS10CertificateSigningRequestGenerationWithOpenSSL generating private keys and CSRs the easy way
Debian cruft: cleaning up cruft on Debian systems
Debian Release file fields: the correct values to provide in your Release files
CUPS driver list: how CUPS decides which drivers are available
CUPS URL discovery: how CUPS discovers printers and resolves printer URLs
WindowsPrinterDiscovery: pointers to information about WS-Discovery and WS-Print
IPP over USB: the relentless march of technology results in layering weirdness
PythonVenvCreation: my take on the one true way to create Python virtual environments
ToshibaX30X40FirmwareUpdate: updating the firmware of the Toshiba/Dynabook X30/X40 without having to install Windows
Booting your own kernel on DigitalOcean (also changing the init system to systemd)
A short, graphical guide to using software RAID with the Debian-Installer.
EpiphanyCookieWhitelist: configure the Epiphany web browser to only accept cookies from certain web sites.
MailSystem: notes on configuring an email system with Exim, PostgreSQL, Dovecot IMAP, SpamAssassin, ClamAV and greylisting.
AlteringProcessName: how to alter the names of processes on Linux.
ApacheSecurity: various methods for configuring Apache to run virtual hosts as separate users.
SamsungQ45: my laptop, and notes on the problems I ran into installing and using Linux on it.
DVD quality reviews: reviews of the picture quality and DRM present on the DVDs I buy.
PortableFilenamesOnWindows: how Microsoft make it painful to write portable programs that deal with filenames, and what to do about it.
WindowsInstallFromUSB: throw out your DVD drive!
DisableCapsLockIndicator from the Widcomm Bluetooth stack
Other
Random stuff, too miscellaneous to index.