Home Resume Links
This page contains descriptions and sources of various programming projects I've worked on over the years. It's not complete, but most of the interesting stuff is here. The controls at the right allow you to sort and filter the projects displayed.
Order by
Filter by Language
21 matches found.   Break Pages
Dates:11/01/1997 - 03/15/1999
Size:3,798 lines
Language(s):Pascal - Delphi, Turbo Pascal (100.0%)

EasyCRT and EasyGDI are libraries that work in Borland's early releases of Turbo Pascal for Windows (circa 1992). I wrote them when I was a junior in my high school, where Turbo Pascal was the main programming language used in computer classes. EasyGDI is a procedural graphics library that wraps around the Windows GDI (graphics device interface), providing a simplified interface and adding new features like bitmap load and save routines. EasyCRT lets users to write graphical windows programs without dealing with complexities like callback functions, event loops, or class libraries. It is based on Borland's Wincrt library, and it was used by students in my class and a few classes thereafter to write games. Both libraries come with documentation and sample programs. They have a homepage here and some documentation viewable here.

Dates:12/18/1997 - 01/23/1998
Size:1,928 lines
Language(s):Pascal - Delphi, Turbo Pascal (100.0%)

Fighter game written in Turbo Pascal for Windows as an assignment for a high school "Computer Math" class. This project was sort of a milestone for me, as my first foray into object-oriented and GUI programming. A good portion of the month I spent developing it went into puzzling over concepts like encapsulation and inheritance, and reading and re-reading the Turbo Pascal programmers' guides to figure out how to make things happen with its windowing library. At the end of that period came a frantic programming effort to get menus and high scores screens working, implement game saving and loading, and tweak the gameplay and graphical intro screen into perfection before the assignment was due. It was pretty fun, and as the project went way beyond anything they were teaching in the class, I got a perfect grade too.

Name:Twofish Javascript
Dates:02/25/2000 - 03/06/2000
Size:1,319 lines
Language(s):Javascript (100.0%)
Description:In Spring 2000, I ported C implementations of Twofish and SHA-1 over to Javascript as a way of password-protecting the contents of static web pages (this was before I had done any server-side web programming). I never did implement the general password mechanism I was initially planning on, but I did get the encryption code working, and wrote a flexible test interface that can encrypt and decrypt messages, posted here.
Name:Web Based Course Evaluation System (WCES)
Dates:11/12/2000 - 06/01/2003
Size:24,616 lines
Language(s):PHP (78.4%), Procedural SQL - Postgres plpgsql (13.8%), Pascal - Delphi, Turbo Pascal (3.1%), C++ (3.1%), Javascript (1.5%)

WCES is a project of the Columbia University School of Engineering. It's a web site that lets administrators and professors create customized online surveys about courses and see reports showing survey results. The site originally started as a project for a software engineering class by a group of students I didn't know. But it was picked up and used by the engineering school, which hired me in Fall 2000 to work on it part-time. Over time, I added many new features and reimplemented most of the preexisting functionality to make the system more flexible. At this point almost all of the code is my own, though I can't take credit for most of the graphics and text on the site, and I also had a lot of help dealing with unix administration / server maintenance issues that came up during development.

The site is mostly implemented in PHP, but there's also a big chunk of core logic written in procedural SQL. And there are a number of smaller components written in other languages, including 2 C++ Postgres extensions, a mini web-crawler written in Delphi, and a COM authentication component written in Visual C++ with ATL.

Since this is one of the biggest projects I've worked on, I've put up a demonstration copy of the site at https://wces.russ.yanofsky.org/.

Name:Ginyuu Calendar
Dates:03/25/2001 - 04/13/2001
Size:1,661 lines
Language(s):CFML - Coldfusion (63.3%), Procedural SQL - Microsoft T-SQL (28.8%), Javascript (7.8%)
Description:This was a fun little project for a software engineering class. I was in a team with four other people and our job was to make a web-based calendar / scheduling component to integrate into a larger online education web site. We were required to implement it using ColdFusion 4 and Microsoft SQL Server. Coldfusion was frustrating to work with because it lacked a lot of basic language features like the ability to define functions. Another annoyance was lack of support for database cursors, meaning the only way to access a database result set was to use a looping construct built into the language, which restricted how you could process data. But our language requirements were really not that great, and in the end our web component had a polished, full-featured interface with a pretty clean implementation. There is no CVS repository but there is a copy of the project page here. If free ColdFusion/MS-SQL hosting were to fall out of the sky, I would put up a demo too.
Dates:07/22/2001 - ?
Size:2,500 lines
Language(s):Python (100.0%)

ViewVC (formerly ViewCVS) is an open source-project located here.

At the moment, I'm one of two active developers. The other one is C. Michael Pilato and ViewVC's original author is Greg Stein. The features I originally contributed were support for Windows and support for Mod_Python. Since then I've done a lot of bug fixing and code reorganization. The 2,500 line count is a WAG (wild ass guess). The ViewVC sources are around 10,000 lines and I figure I've had my grubby hands on about a quarter of them.

Dates:07/29/2001 - 06/16/2003
Size:1,658 lines
Language(s):PHP (100.0%)
Description:Command line utility to generate CVS repositories (complete with log messages, tags, and branches) from directory snapshots.
Dates:10/05/2001 - 10/06/2001
Size:335 lines
Language(s):PHP (100.0%)
Description:Command line utility to alter commit times in a CVS repository based on last-modified timestamps in a CVS sandbox.
Name:Lost Cities Player
Dates:11/12/2001 - 11/16/2001
Size:1,582 lines
Language(s):C++ (100.0%)

Written as a project for an AI class. It plays a card game called "Lost Cities" with 3 other players. I did very little testing on it, so I'm not sure how good it actually is, but I do like the design and strategies used.

The source is very well documented. It was written in Metrowerks Codewarrior for Windows. It also compiles with GCC and runs on Linux and Solaris (makefiles included).

Dates:11/28/2001 - 12/03/2001
Size:2,049 lines
Language(s):C++ (75.4%), C (24.6%)

Quickman was an assignment for a robotics class that I worked on with 2 other people. The program drives a Pioneer mobile robot from a starting point to an ending point in a room filled with obstacles, trying to avoid collisions. The obstacle shapes and positions are given as input, and then the program plans an optimal path and follows it. Quickman is written in C++ and makes extensive use of the STL.

Quickman uses a commercial but freely available library called Saphira that comes with a graphical robot simulator. There are makefiles for GCC under Linux and Solaris and a Metrowerks Codewarrior project file for windows. It uses features of C++ not supported by MS Visual C++ 6.

Name:My Old Home Page
Dates:02/04/2002 - 07/05/2003
Size:211 lines
Language(s):C# (100.0%)
Description:The original version of this website, a set of ASP.NET pages backed by a small Postgres database. The current version of the site is stored in a new repository and is written in Python.
Name:Tiger Compiler
Dates:02/12/2002 - 05/07/2002
Size:2,148 lines
Language(s):Java (100.0%)
Description:Project for a compilers class to write an interpreter and MIPS compiler for a simple procedural language called "tiger" using Java and the ANTLR parser generator. Worked on with 2 other people and we all contributed about evenly (this was one of the few school projects I worked on with competent teammates). The code isn't pretty or even fully functional, but it is the kind of hairy, mind-bending type of programming I truly enjoy working on.
Dates:03/17/2002 - 07/30/2002
Size:1,096 lines
Language(s):C++ (100.0%)
Description:Toy project containing a flexible implementation of the DHIES asymmetric encryption algorithm for the Crypto++ library, plus a bunch of unfinished template metaprogramming code that was supposed to become a cool policy-based smart-pointer library.
Name:Doctor Database
Dates:03/29/2002 - 04/02/2002
Size:2,315 lines
Language(s):Java (100.0%)
Description:Project for a database class to make a simple web application using Postgres and Java Servlets. Worked on with one other person. Demo and source code are available on a tomcat server I've got running at https://doc.russ.yanofsky.org/.
Name:Buffer Manager
Dates:04/09/2002 - 04/30/2002
Size:1,339 lines
Language(s):C++ (73.9%), Python (26.1%)
Description:Project for a database class to develop a disk caching algorithm and measure how well it worked by simulating database operations like lookups and joins on it with various sizes of data and adding up simulated hard disk access times. Code is some of the cleanest and best documented that I've written, but not useful outside of the context of the assignment. Worked on with one other person, though it was mostly a matter of me coding and him working on the paper.
Name:C++ Active Library for Device Driver Development
Dates:11/26/2002 - 01/03/2003
Size:542 lines
Language(s):C++ (100.0%)
Description:C++ template metaprogramming library that can take a description of a hardware device's registers (through C++ typedef declarations) and provide a high-level interface for controlling the device. Supposed to make device driver development easier and less error-prone. Repository includes source code and a 6-page paper describing the project.
Dates:12/09/2003 - ?
Size:1,173 lines
Language(s):C++ (100.0%)
Description:Toy project containing a C++ implementation of some of Freenet's cryptography and some ideas for a C++ asynchronous i/o framework.
Name:Rvalue references for G++
Dates:05/26/2005 - ?
Size:690 lines
Language(s):C (53.2%), C++ (26.5%), Python (20.3%)
Description:Implementation of a proposed C++ language feature for G++ 4.x. More information is available at the project homepage. (Line counts produced by counting "+" lines in the GCC patch with sloc's generic_count).
Name:Iraq Net
Dates:07/06/2005 - 10/03/2005
Size:2,728 lines
Language(s):Python (91.5%), C (8.5%)
Description:Various scripts and configuration files used to manage a satellite internet gateway on a linux box I set up while deployed in Iraq. There are scripts that control iptables and tc to perform traffic control and nat, block unauthorized computers from accessing the internet, and redirect new computers attempting to access the internet to a web interface where they can register and instantly enable access. The web interface is implemented in Mod_Python and along with registration pages also includes utilities to check the status of the satellite connection and monitor bandwidth usage. Other interesting things in the repository include a small DNS proxy server written in Python and some scripts to deal with configuration files stored in Subversion repositories.
Name:My Home Page
Dates:11/10/2005 - ?
Size:996 lines
Language(s):Python (100.0%)
Description:This web site, implemented in Python, backed by a Postgres database, and able to run either as a set of CGI scripts or in a Mod_Python environment. Uses the EZT template engine (from ViewVC), and an HTML widget framework I wrote based on the ones from my WCES (PHP) and Doctor Database (Java) web apps.
Dates:01/26/2006 - 03/05/2006
Size:315 lines
Language(s):Python (100.0%)
Description:Command line utility to generate rcs files using history from flat files. Pretty well documented and organized. Also has the ability to import whole directory trees and read project metadata from XML.
Line counts generated using 'SLOCCount' by David A. Wheeler.