- Some useful observations about GNU makefiles.
- A perl program to convert .csv to .sql in a reasonable way. You can view
additional details via cgit.
- A portable program to show the
connection between /dev/sda, /dev/sdb ... drive letter and hardware
host/bus/target numbers. It also shows the device manufacturer and
serial number.
This applies to SCSI disks attached using either
ATA or USB. This is useful when dealing with disk errors.
- The serial number is important for RAID arrays, where you have
many disks that look alike.
- The ata number is important because some messages in
/var/log/syslog give only the ata host/bus/target number, without
explicitly saying what you need to know, such as the /dev/sd? drive
letter and/or the hardware serial number.
- A tutorial on how to set up
your system to handle email with a modicum of security, including how
to install qmail and how to integrate it with spamassassin.
- A discussion of how
to distribute PGP keys and fingerprints, using QR codes
and/or web documents.
- A Countdown Timer / Alarm /
Stopwatch / Split Timer. Free, libre, open-source, public domain,
cross-platform javascript. Try it online, then download it for
offline use.
- A discussion of the strengths
and weaknesses of the Roomba robot vacuum cleaner. It's not fast,
it's not smart, and it needs your help ... but it does clean the
carpets.
- A paper on Image Segmentation and
Recognition. This provides some useful insights as to how to normalize probabilities correction
and why learning from examples should be
considered a search through the space of all possible probability
measures.
- A discussion about various schemes for
encoding fancy characters
in documents (especially HTML documents) and
the cross-browser compatibility issues that raises.
Also a discussion of the difference between a
font and an encoding or a codepage.
- A discussion of color management and other digital imaging issues.
- A collection of papers on Virtual Private
Networks, IPsec, and other computer network security issues.
- How to do useful things with
IPv6. This includes an introductory section on how to get started with IPv6 on Linux
plus a discussion of how to form experimental, temporary, and/or private IPv6 addresses. Most
importantly, there is a screed about the
many problems with NAT (aka NAPT) and how to solve them using IPv6
encapsulation and IPV6 addressing. Last but not least, there are
some scripts to help with the fussy details.
- A discussion of some of the weird things you might see on a 802.11 WiFi network. Also
included are patches for certain wireless-card drivers, to make
promiscuous mode work without causing duplication of packets -- which
are sometimes a big problem for applications. The patches apply to
the current drivers for Lucent WaveLAN and Proxim ORiNOCO (Atheros)
cards.
- Instructions for cloning or
mirroring a disk, i.e. making a bit-for-bit copy.
- Hard Disk Pinout for Laptops and
Desktops (ATA or IDE)
- Some introductory-level notes on
how to debug things like kernel panic,
kernel oops, soft lockup, and hard lockup.
- A script to configure your DNS server to block traffic to ``advertising servers''
and the associated data file.
- An explanation of why you might get the message
unable to open display "....:10.0"
when using X11 forwarding features of ssh.
- A higher-order symplectic integrator, suitable for integrating
equations of motion efficiently with high accuracy. Written by Ernst
Hairer et al, and ported to C++ and slightly extended by me.
- "dq" -- A handy calculator for
arithmetic on dotted quads ... useful for
IP addresses (IPv4 only), subnet masks, et cetera.
- "ddc" -- My very own general-purpose desk
calculator. My first exercise in using lex and yacc
(aka flex and bison).
- Some Suggestions for Writing Good
Software. This includes a discussion of various types of documentation, good versus
bad comments, and other elements of programming style.
- Some discussion of modern
programming languages including some of the ways in which C++ is different from plain C,
including object-oriented
programming in general and the Standard Template Library (STL) in particular.
- How to Clone a Record in a
Database, Using Only SQL, Even When There Is a Unique Key.
- An explanation of why you might get the error messages:
glxinfo
name of display: :0.0
Error: couldn't find RGB GLX visual or fbconfig
glxgears
couldn't get an RGB, double-buffered visual
and how you might make the problem go away.
- An explanation of why you might get the mythtv error messages:
ERROR: Master backend tried to connect back to itself!
and how you might make the problem go away.
- Instructions for how to create a bootable USB stick or SDcard that actually works, using
only standard Linux command-line tools.
- Instructions for how to reinstall grub onto your master boot record and other ways to backup and restore your MBR
(including sector 0 and other
low-numbered sectors). This works even if you cannot boot the system in
the normal way.
This also includes instructions for how to reconstruct the grub.cfg file if it
has been damaged. Again, this works even if you cannot boot the
system in the normal way.
- Instructions for how to transfer files between linux
and an android phone via USB and otherwise.
- A general discussion of Security Recomendations for Any Device that Depends on
Randomly-Generated Numbers.
- A discussion of how to improve
the security of systems booted from a ``Live CD'' or other read-only
media; specifically, to fix up the initial seed for the
pseudo-random number generator. This includes some software tools
to make the job much easier.
- Some notes on how to set up maintain consistency of DNS and rDNS records (especially for
multi-homed hosts). This includes examples of working zone files,
and even a script to check for consistency.
- Some ancient notes on the block diagram for a sound card.
- Some notes on what is a display
manager, a session manager, and a window manager along with some
notes on what to do when things go wrong, e.g. when compiz is
broken.
This includes some notes on how to set up a text-mode
login, with no display manager at all in selected runlevels.