At one time I had the idea of being a card counter, and setup a blackjack game on my website.
At one time, people used Microsoft's H.323 client, called NetMeeting. Heck, maybe they still do. As usual, Microsoft had to work a bunch of proprietary features into their product, and we still seem to lack any kind of standardization on video conferencing software. Skype, gotomeeting, NetMeeting... none of them work together, right? That's what H.323 was supposed to fix...
The idea here is to take advantage of the Linux dynamic loader's ability to insert code between the C library and the kernel. Whenever the C library makes a system call, it goes first to a preload library, and this can be done in user space with no special permissions. I was trying to use it to implement features similar to Hurd translators, but was hampered by the lack of standardization in how the C library make system calls and exports (or doesn't export) symbols that can be overridden.
For a while in the late 1990s, I maintained the SPARC/Linux kernel code. There were three basic ISDN chipsets in use at the time. Siemens made one, and it was adopted for use in the Intel kernel code. AMD made a nice simple chip with one major design flaw (no buffering on the B channels) that Sun built into their early Sparcstations before switching to Lucent's DBRI chipset that was complicated enough to come loaded with bugs - you could never quite rely on the chip to behave according to its specification. I soldered four wires to an AMD chip and used it until I fried its transmitter by neglecting to include any protection circuitry. Somebody gifted me a DBRI-based system and I worked on it until I decided that I was done maintaining drivers for an obsolete technology on obscure hardware. But I think you can still see error messages from my code when you boot a Sparcstation 1!
I had a tablet computer in the early 2000s (before they were real popular) and was running an X11 server that didn't support screen rotation, so I wrote some code to fix that. Parts of this (like the Perl VNC implementation) might still be useful to somebody.
xmon is a graphical protocol decoder for X11. I did a Tk-based control interface. I've still got the code (somewhere). This might be something to work into wireshark.
A TCP Multipoint Control Unit lets multiple clients connect to a single telnet server and share the session among themselves. Sort of like remote desktop, but only for terminal sessions, so lighter on the network bandwidth. Of limited utility due to its lack of security.
Isearch is an obsolete full text search engine. My contribution at the time was developing a binary search algorithm that behaved correctly in the face of deleted data, documented in Isearch Internals.
This is a collection of Perl scripts that place hyperlinks to a Spanish-English dictionary on all of the words on a web page. In principle, it should work on any web page, but web pages are varied and complex. At least it works on the Bible, and I recommend reading and listening to a chapter each day.
At 15,000 lines of C++, Hoffman is the largest, most complex piece of software that I've written. It's designed to exhaustively analyze endgames in chess, even handling cases where the analysis can't fit in the computer's memory, and has to be staged effectively via disk.
KNJN seems to be losing out to Arduino, but they still make some nice little controller boards.
If you have a rooted Android cell phone, then this is a real nice app to have installed. You get a Linux environment that acts a lot like a virtual machine (it's actually a chroot environment). I use it for software development (gcc, make), writing (emacs and LaTeX), file conversion (lame), and anything else I'd want Linux for.
2013 - Canonical, Ltd. recently announced plans to run Ubuntu on a cell phone. We've already got that with linuxonandroid. Admittedly, you're running in a chroot environment, so there's some kludgy stuff that happens, but all you need is a rooted Android phone, which is currently a lot more obtainable than an Ubuntu phone. Even if people eventually ditch Android for Ubuntu, linuxonandroid provides a nice transition environment. Porting GUI apps to a mobile environment is a major hurdle that can be cleared with linuxonandroid, and probably needs to be cleared before Ubuntu becomes viable on a cell phone.
Open projects:
Our current options are androidVNC, a few other VNC clients, and a Java X Server. None of these are adequate for playing video, for example, but Android uses the Linux kernel framebuffer, which is supported by the standard xorg X server, so porting the xorg server to Android seems doable.