Sam's home page on this here internet thing
It was never the object of patent laws to grant a monopoly for every trifling device, every shadow of a shade of an idea, which would naturally and spontaneously occur to any skilled mechanic or operator in the ordinary progress of manufactures. Such an indiscriminate creation of exclusive privileges tends rather to obstruct than to stimulate invention. It creates a class of speculative schemers who make it their business to watch the advancing wave of improvement, and gather its foam in the form of patented monopolies, which enable them to lay a heavy tax on the industry of the country, without contributing anything to the real advancement of the arts. It embarrasses the honest pursuit of business with fears and apprehensions of unknown liability lawsuits and vexatious accounting for profits made in good faith. -- U.S. Supreme Court, Atlantic Works vs. Brady, 1882
My PGP key, for paranoid people who wish to contact me.
Art: pictures I have drawn, or otherwise computed.
Is This Image Illegal?: Renders an arbitrary number as an image.
Dotfiles: my configuration files for Bash, Vim, etc. Includes a fancy coloured prompt!
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
Some notes on performing Continuous Integration builds of Debian packages
... and on my pbuilder firewall setup
Filtering Emails from Facebook based on the X-Facebook-Notify header
FirewalldZones quick reference
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
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.
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