CV (Résumé)

Thomas Howard Uphill

< thomas at narrabilis dot com >

Currently available for remote consulting.

RHEL5 RedHat/Fedora Linux Using netgroups with LDAP (nss_ldap)

There is an excellent tutorial on using LDAP for netgroup enumeration. Most of the changes are obvious, but one thing may trip you up.

Atheros AR5212 not working after suspend with pm-utils (gnome-power-manager)

My ath0 device wasn't working after resuming from a suspend on Fedora 8. modprobe -r ath_pci followed by modprobe ath_pci fixed the problem. I decided to automate that, so I read a bit of the pm-utils scripts and wrote the following simple script in /etc/pm/sleep.d/wireless

Using div and css to position a textbox on an html page that can be opened and closed

I use this to position a bibTeX entry on a page so users can copy and paste the bibtex code into their bibliographies. I also use this in this blog to display struct definitions for calling arguments to a function. First, we setup the javascript that will hide and show the textbox:

Stateful access control using LSM

Talk (11 December 2007) pdf | odp
Paper (14 December 2007) pdf | TeX

VMware Linux Virtual Machine Hard Disk not found

In one sentence "Use LSI Logic as the SCSI controller in the virtual machine settings" When installing RedHat Linux 5 as a guest OS in VMware server, I kept getting a "no drives found" error in anaconda. Someone suggested I use the LSI logic driver, I mistakenly thought that meant a driver disk (dd.img), but that was not the case. The driver for the hard drive is specified when you are defining the virtual machine. Select Custom on the first page of the New Virtual Machine Wizard. Then Linux as the Guest Operating System.

Signing RPMs with your own key.

When creating your own custom yum repository, it is a good idea to create your own gpg signature and sign all the rpms in that repository. That way, should someone manage to place an rpm in there, none of your systems will install that rpm.

Generating and reading patch files

We are working on a short piece of code, called count.c. I first copy count.c to a backup, count.c.orig and begin correcting count.c