This blog has moved, Update your bookmarks.

Stefan Rusek » Software Portfolio

This page provides details and examples of some of the projects that I have worked on over the years. Items are listed in chronological order with the newest stuff listed first. (All downloadable material on this page should be considered to be released under the BSD license.)

Silverlight Planet Defender

http://www.rusek.org/stefan/Defender

When I first read about Silverlight I was pretty stoked, and after I started playing around with it I was even more excited. Instead of your run of the mill Hello World program. I decided to write a Williams’ Defender like game. It requires Silverlight 1.1.

 

AtLePaGe - An SLR Parser Generator

http://code.google.com/p/atlepage/

I have been interested in compilers for a long time, and I have generally preferred recursive decent parsers, because I really dislike the typical syntax of parser generators. Recently, I was looking into a parser generator written in python and I really enjoyed the way it defined grammars. I was so inspired that I started working a parser generator that used a grammar definition approach that I enjoyed.

An ASP.NET Content Management System

This was a personal project I worked on over the summer of 2005. It is an extremely flexible content management system that has some pretty cool features. Everything besides the base content of a page is manipulated through modules. These modules can be one of the built-in modules or a custom module. The layout is based on a flexible CSS-based HTML generator. (And of course, this page was originally created using it.)

An Object-Oriented Data Access System

The System.Data data access model provided in .NET is really great in lots of ways, but sometimes it is a pain to use. The basic problem is that databases are row and table oriented, and so most data access providers are heavily oriented toward rows and tables. This makes interoperating with object-oriented code a paradigm shift problem. So I decided that I needed to write my own data system for future projects. The idea is that a lot of time is spent writing OO classes to abstract the low-level API provided by System.Data. In order to use the system. You create an XML file that describes the classes/tables you want to store in the database. This XML file is used to generate a create script for the database, and to generate the set of OO classes used to access the database. The CMS system above uses this system for data access.

Meijer Remodeling Site

http://meijer.cprdev.com/remodelling/

When I showed this site to my contact at Meijer, he was very pleased when I asked him to view the source and he saw that the entire layout was done in CSS. This site was created for the Meijer grocery store chain. It allows the user to select the store in the user’s area that is being remodeled. The store’s page provides access to promotions, a map of how the store will look once the remodeling is over. Also, the store manager can keep customers up-to-date on the progress of the remodeling with a store blog. From a technical perspective, I am most proud of the beautiful layout. The Meijer designers sent me images of how they thought the site should look, and I was able to deliver a site that look just how they imagined using CSS layout.

Red/Black Tree Visualizer

Download

I wrote this program for the Advanced Data Structures class at MTSU. The assignment was to write a program that reads in a set of numbers and puts them into a red/black tree and traverses the tree to print out a sorted list. How boring is that? The assignment doesn’t even provide a way to see from the execution if the thing even uses a red/black tree. I took it upon myself to write a little GUI that traverses the tree and show the tree visually on the screen.

Modes of an Ideal Drum

View Modes

For the final for Theoretical Physics II, we had to derive the equations describing the modes of an ideal circular drum. The teacher requested that we sketch the graphs of these equations, but highly encouraged those that could to create some form of animation of the images. (A previous student even turned in a flip book for this problem.) After I did my derivation, I fired up one of my favorite programs, Microsoft Excel, and started working. The hardest part was to write my Bessel functions in VBA. The animations are really cool, even if you have no idea what a Bessel function is.

USB Flight Simulator

http://www.cloud9simulations.com/

Cloud 9 Simulations buys old Wagner Microflight simulators, and replaces the internals with a USB controller. I wrote a USB device driver for them that enables all of the functionality of the USB Microflight simulators to be used from Microsoft Flight Simulator. This was a very time consuming project. I learned a great deal from this project. Kernel mode programming has lots of headaches such as IRPs and DIRQs, but it is also very cool.

English Test Editor

Download

While I was in Poland, I had to write English tests for my students. Test writing can be a long process, and formatting a Word document for a test will only add more time to the process. I wrote this program that allows me to edit tests (stored in XML) and then use an XSLT file to generate a properly formatted exam and key in HTML.

Simple Web Server

Also while in Poland, I only had Windows XP Home installed on my computer, and I wanted to do some web development. I looked around and Cassini, the best of the then free ASP.NET web servers, was ok, but not as flexible as I would like. So I wrote one for myself. It worked pretty well and was much more extendible than Cassini. I would provide it for download, but it only works in .NET 1.0, and because of GACing it is a pain to install.

Reverso

Download

This is your basic Reversi game. It supports two players and looks pretty nice. The coolest thing about this program is that I wrote it entirely in less than 100 minutes. I was with a group of people driving from Atlanta to Chattanooga. I made a bet that I could write a fully functional game in C# before we got back to Chattanooga, and I won with a little bit of time to spare. (Too bad, I didn’t bet any money.)

Calqueuleuxe Newton Fractal Generator

Download

This is the third Newton fractal generator, I have written.

In Calculus II, my teacher discussed Newton fractals one day, and as soon as class got out, I ran back to my dorm room and wrote a simple program to generate Newton fractals for arbitrary polynomials. When I told my Calculus teacher about it he asked me to give a presentation on Newton Fractals for Math Club. I gave the presentation and it was a smash!

Later during the first beta of .NET, I wrote a class library that could parse expressions then evaluate them or print their derivatives. This library was called Calqueuleuxe.

Some time later, the same Calculus teacher asked me to give another talk on Newton fractals. I decided to add two new features to Calqueuleuxe so I could write a Newton fractal generator that took arbitrary expressions and was not limited to polynomials. I added support for complex numbers; this was not a trivial change, since the derivatives learned in the average Calculus class don’t work at all for complex variables. The second feature was the ability of the system to compile the parsed expression into a .NET assembly, in order to boost the speed of fractal generation.

Simple Database Management System

Download

For a database class we had to write a simple database system that took relational algebra commands and did operations on relations (tables). I wrote mine in .NET. I was probably the only person to include meta-tables. This allowed for all kinds of extensions and eased implementation. I love meta-data. This version contains a table that is all of the words that appear in the RSV translation of the bible.