Code
My current languages of choice are Java and Python. I'm starting to play with C# a little bit despite my conscience. I should also mention that one of my least favorite languages is C/C++ but that's partly because of the ugly code people write with it.
UPDATE: I'm actually getting to the point where I don't completely hate C++ ... in part because of visual assist. C++ is still pretty nasty though.
Below are a couple
of very small code snippets that I've worked on in the past. See my
portfolio page for a description of some of the real projects I've worked on.
A TV Interface
Try out a little TV interface I designed for a user interface class in grad school. The interface was required to run at a resolution of 640x480 and could only use a 5 button remote. You can get
the source code if you're interested. The source code requires the latest version of Jazz available from
HCIL. This was a team project with 2 other students under the usual limited time constraints.
A Zoomable Graph Editor
Try out a zoomable graph editor I designed under Ben Bederson as a simple demonstration of some Jazz features.
This is not meant as a serious application - it's meant to show some jazz features. The source for this application comes with the Jazz distribution. You can get the Jazz source code from
HCIL.
Here are some of the Open Source projects I've used or experimented with recently:
- Eclipse - You too should be using this for your Java programming. I've been converted from Emacs. SWT is kind of neat too but I'm stuck on Java2D for graphics at the moment.
- Ant - Many old school "make" users just don't get this project. I'm not one of those. Goes great with Eclipse, too.
- JUnit - Another complement to Eclipse. Of course, I don't test as much as I should.
- Lucene - A great open source search engine/text indexing tool. This seems to make its way into every project.
- Nutch - A Java Web crawler that is extremely flexible and extensible. I'm starting to really appreciate this code.
- POI - A Java API to Microsoft files. For those times when you can't avoid those pesky MS formats.
- Log4j - A Java logging tool. Java's got builtin logging now, but this is still pretty popular.
- PDFBox - A nice Java API for accessing the contents of PDF files.
- ProGuard - A free Java obfuscator and class file shrinker. I haven't compared this to anything else but it seems pretty good and you can't argue with the price.
- JSmooth - Turn a Java jar file into a Windows executable. This is a little bit buggy but a neat idea.
- Prefuse - A graph visualization toolkit. Lots of cool features including some support for force simulations.
- Informa - Some blog reading utilities for Java. In case you hadn't heard, blogs are trendy.
- JFontChooser - I don't know why Sun made a color chooser but not a font chooser. These things have been reimplemented thousands of times in different projects. This particular one isn't beautiful, but it is mostly functional.
- Protege - A nice MS Access-like ontology editor built in Java. Has a nice architecture for building plugins and the source code is available under the Mozilla license. Of course, AI folks will quibble over the features of Protege ontologies, but that's just what AI folks do.
- Python for Windows Extensions - Nice support for Python programming on Windows. Especially Windows services and COM.
- Java-like Properties for Python - Python's ConfigParser doesn't do anything to make sure it can decode your key's and values, so you can get all kinds of unpredictable results. Also, different versions of ConfigParser have different behaviors. This code solved the problem for my project.
- PIL - This adds support for a bunch of image types to Python.
- B+ Tree - A B+ Tree for Java, Python, and C#. Supports the same format across the different languages.
- NullSoft Scriptable Install System - An InstallShield alternative for Windows. There are also a couple nice editors for these installs like HM NIS Edit.