From time to time I get involved with various technical projects.
Usually these are software related. Sometimes what gets written
is code, sometimes it is a document, and sometimes it is both.
IEEE 1394 and the Linux Kernel This is a paper written by Brian Pietsch and me for our
final project in CSC 550 (A graduate course in Operating
Systems Design and Implementation). It covers the basic
design of the Firewire Protocols as well as the first
implementation that was done in the experimental 2.3 kernel
GnomeAPM GnomeAPM was my senior project at Cal Poly (my adviser was
Dr. Elmo Keller). It was my first exercise in GUI programming
using the GNOME toolkits.
The GNOME libraries hadn't been available for very long, so they
were both buggy and poorly documented. It was like working with
an alpha version of the MFC classes, only less friendly since
it was all in C.
Source code for the final version of this project is
available for your perusal
or you could just download the
Linux Kernel Bonding As a result of some of the projects I was working on at HP,
I ended up as the lead maintainer of the Linux Kernel
Bonding Project. A "bond" (Sun calls it a "trunk", Cisco's
term is Fast-EtherChannel) is a logical aggregation of
multiple ethernet devices. The reasons one might aggregate
devices would be for load-balancing (using a switch that
supports the FEC standard, one can achieve almost N times
the throughput of one card by bonding N cards together) or
for High Availability (Active-standby) purposes. Both cases
have the extremely useful feature that TCP connections are
maintained as cards in the bond die; that is, if TCP
connections are coming in through eth0 and the hub that eth0
is connected to loses power, eth1 can become the primary
interface and TCP connections that were being routed to eth0
are now transparently routed to eth1.