As a programmer I feel it's my duty to work on projects outside of work to keep up my skills and make life more fun. This is a collection of items I've worked on, outside of work, over the years.
- sstorie.com server
- The sstorie.com domain grew out of my need to have a place on the web. This server is a Pentium-III 1U box running Debian Sarge and provides email (qmail), DNS (djbdns), web sites (Apache), SPAM prevention (Spamassassin), and shell accounts to several sites and users. It is co-located in Honeycomb Internet Services, and has been a project of mine for several years now.
- outlook2qconfirm
- This is a small ruby script to convert the exported address book from Outlook Express into the collection of files needed to whitelist the addresses within qconfirm.
- NPR RealAudio Podcast Converter
- I love NPR, but so many of their shows are broadcast in the dreadful RealAudio format. To get around this problem I wrote a Ruby application to check for new shows, download them in RealAudio format, and then convert them to mp3 automatically. This is a pretty small application, but it's an example of designing objects to properly abstract functionality. For example, by creating a RealAudioPodcast abstract class I can simplify each implementation and make the multi-threaded consuming code very simple. Requires mplayer and lame to work.
- PowerShell Cmdlet for Google Desktop Search
- This is a simple cmdlet that will let you leverage Google's desktop search from within PowerShell. Check out my blog entry for more information and links to download the source.
- Bloom Filter Implementation(s)
- I was inspired by the CodeKata site some time ago and started doing some of the exercises. The first one I tried was implementing a bloom filter in a variety of languages. I opted for a ruby implementation because of its elegance and I was curious to learn more.
- Ruby on Rails version of sstorie.com
- With all the buzz around Ruby on Rails (ROR) it was my duty to at least check it out. I wrote a version of this site with the rails framework, and even got some nice AJAX features added. For example, if you were logged in, you could click on a blog post's text and it would turn into a text box for you to edit automatically. However, ROR is fairly new, and heavily based on using convention over configuration, so the base utilities I wanted (photo gallery mostly) just didn't exist. I liked the framework, but didn't want to take on quite so much customization at the time.
- .NET Command Wrapper
- This was a simple utility I wrote to allow a user to kick off a process, and display a simple form to provide any messages from stdout. My main use for this was to add a shell extension for .sln files (Visual Studio Solution) so that I could build them without firing up Visual Studio. By monitoring the output I could easily see if the solution built correctly or not, and reduces the time spent for quickly editing files and building solutions.
- NICAN
- NICAN is a C++ library I developed in grad school to facilitate the dynamic adaptation of applications, both distributed and non-distributed. It features a modular, object-oriented design and an XML scheme used for resource specification. I developed several general purpose modules, but my main goal was to create a module that uses packet probing to dynamically adapt an application using the pARMS library.
- UDP Packet Probing
- As part of my graduate work I implemented a small client-server program to send streams of packets and measure the round trip time. This was also a chance to use the excellent libowfat library developed by Felix von Leitner.
- Base Converter in C
- This was a simple app I developed for the CS 2521 course I was a teaching assistant for. It allows you to convert a number from any base to any other base.
- MNVibe.com
- This is a hobby site I created (jan 2001) and co-administered for the MN electronic music scene. MNVibe has grown larger than I could have ever imagined and has had over 2 million visitors since its creation. The site uses a combination of PHP and MySQL to provide a system that let users add and edit their own events, music mixes, and forum posts. I am really proud of MNVibe and think it's a prime example of what's possible when you dedicate yourself to something. I sold the site code and the mnvibe.com domain to Vital Vinyl Dance Records in the fall of 2004 for a little $$. To my knowledge the site is still running on the 3rd-iteration code base I created back in 2003.
