Various Projects from Patrick Wagstrom
Introduction
Over the last decade or so that I've had a web page, I've had a lot of different projects that I've worked on in various scopes. This page is an attempt to catalog most of those projects together into one singular location. At the highest level, these are broken into two categories, academia and other. As the name might suggest academia are projects that I've done for academic reasons and other are things that I've done for no particular reason.
Academic Projects
Some of these projects will eventually find their homes when I put my reserach page back up. For right now, they'll sit here as I put them back.
Scarlet
Scarlet is a framework for context aware and pervasive computing that I did for my Masters thesis at Illinois Institute of Technology. It's licensed under the GPL because I want anyone to be able to hack it. It's based on SOAP for the communication method and is written in python. For more information make sure to read my thesis.
OpenGL
I took a class on OpenGL programming. It wasn't nearly as in depth as I would have liked, but I hacked out a few little things for OpenGL. You can find them on my cs411 page.
MIPS R2000 Processor
I created a scaled down version of a MIPS R2000 processor my sophomore year. It's done in VHDL, lovingly preserved the same way it was when I made it in 1999.
Project IITER
It's odd that IIT still does this same project in CS350. It's a group project that is an 8 bit CPU done in schematics for MaxPlus ][. You can find more on my Project IITER page. Sure to be a big hit with the kids around the end of the semester.
Other Projects
WRT54G Stuff
I've got a Linksys WRT54G router that connects my computers to my DSL line. This is nice because it runs Linux and is hackable. Unfortunately, it's not so nice because the DynDNS client is broken and doesn't work for customDNS. I could upgrade the firmware, but then I loose the hackability of the box through the Ping.asp hole. So instead, I'm updating my DNS from anotherbox. Which creates problems because it doesn't know what the IP address is. Well, no more! I've modified a standard shell based client to look at the WRT54G first and get the IP address of the external interface and cache it. This means no more superfluous updates. Just run it from a cron and you're set. Download wrt54gdynDNS-0.1 today!
Pyblosxom Plugins
I've created a variety of plugins for Pyblosxom, which is the software that I've started to use for weblogging.
- xmlcalendar.py - output an XML based calendar that can be mangledwith your choice of XSLT scripts.
- xsltrenderer.py [package]- plugin renderer that takes text/xml and runs it through an XSLT engine.
- xmlcategories.py - a modification of the original categories plugin to pyblosxom to spit out the data as XML. It's much tastier now.
- fixfiletime.py - because pyblosxom orders entries based on mtime entries may have a chance of wandering around. This little guy fixes all of that by allowing you to embed tags to define a file date. You can read more in the corresponding weblog entry.
PimpBot IRC Bot
When the unix server that everyone in the IRC channel uses was upgraded it broke, at least temporarily, the TCL-SQL libraries that B|shop, the channel eggdrop bot, needed to access the database. Seizing on the opportunity and knowing nothing about how the actual IRC protocol works I started to write PimpBot, a replacement for EggDrop that doesn't suck. He's written in Python using Twisted and is a pretty good little bugger. Unfortunately, he's not done yet. Once I have support for user lists I'll probably post him here.
I can give a little info about his implementation. It's entirely plug-in based. The actual bot does nothing. So far there are a variety of plugins for things such as an explain database, url database, and tinyurl stuff.
PennAve
PennAve is a dynamic python based photo gallery application that I've been writing in my spare time (yeah, right). It supports lots of nifty stuff like resizing images on the fly, FOAF, and it chock full of XML and XSLT goodness. For more information, you can visit the homepage of the project at http://pennave.sourceforge.net/.
Mono.ReadLine
A simple library to provide ReadLine support for Mono. Basically hacked out of Martin's work on the Mono Debugger. Current version is 0.0.1. Released on September 29, 2004. Download mono-readline 0.0.1.
xmlsnipe
xmlsnipe is a little program that can dynamically change the contents of nodes in an XML document. It is written in straight C code and uses libxml for the XML parsing. It compiles under both unix and cygwin. You can find more information at the sourceforge page for xmlsnipe.
PyWifiApplet
This is a little GNOME applet that allows you to monitor and configure your wireless network. It is written in Python and uses DBUS to operate in a client server mode with a process that handles all the actual activation of devices. In any case, it's very cool and very helpful, especially as Ubuntu does not ship with NetworkManager yet. This is my first attempt at using AutoConf and friends to package up a python script. I've recently released version 0.1. Test it out and break it. That sort of stuff.
Other Random Stuff
This is a collection of other stuff that doesn't fit anywhere else.
- cmuvpn.sh - a simple script to get on the VPN at Carnegie Mellon from Linux. Make sure you read my weblog entry for more information on how to use it.
- graphviz.py - an interface for creating graphs using the Graphviz tools from AT&T. Just shells out to the actual programs right now, but still allows for easy creation of graphs in python. Horribly undocumented but it comes with a small demo.
- AnsiColoredConsoleAppender.cs - I was jealous because the default colored console appender for Log4Net required the Win32 APIs. This one just spits out standard ANSI escape codes so it will work just fine under other operating systems.