Projects

ohloh profile for Christopher Lenz Some of the spare-time projects I'm working on currently, or have been involved with in the past. You can also find some self-hosted projects over on code.cmlenz.net.

jQuery Iframe Transport (2011)

This jQuery plugin implements an <iframe> transport so that $.ajax() calls support the uploading of files using standard HTML file input fields.

A simple jQuery plugin I wrote for a project at work. Basically I'm using it wherever I've been using (the much more heavyweight) jquery.form.js in the past: for handling traditional file uploads in Ajax-based interfaces. Also includes a simple demo using a server-side component implemented with node.js, which I'm been playing with quite a bit lately.

Apache CouchDB (2007–2010)

“Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API.”

Damien Katz‘ document-based database system written in Erlang. My main contribution so far is the AJAX web administration interface, but I also worked on the Spidermonkey C wrapper, moved the code to the MochiWeb library, and built the new web site.

CouchDB-Python (2007–2010)

“Python library for working with CouchDB.”

This is a Python client library for working with CouchDB servers. It provides a low-level client API, as well as a higher-level API for mapping between JSON documents and Python objects. It also comes with a “view server” that let's you write CouchDB view functions in Python.

Babel (2007–2009)

“A collection of tools for internationalizing Python applications.”

Babel is a Python library for internationalization and localization of Python applications, supporting both gettext message catalogs and locale data from the Common Locale Data Repository (CLDR).

Genshi (2006–2010)

“A toolkit for stream-based generation of output for the web.”

Genshi is an XML-based template engine written in Python. It was heavily inspired by Kid, but addresses some of the problems with Kid by choosing a completely different design under the hood. In addition to the XML template language, it also comes with a basic language for plain text templating, sharing the same underlying engine.

Bitten (2005–2008)

Bitten is a Python-based framework for collecting various software metrics via continuous integration.

The goal of this project is to design and implement a distributed system for automated builds and continuous integration that enables the central collection and storage of software metrics generated during the build. The information collected this way needs to be structured and available in a machine-readable format, so that it can be analyzed, aggregated/correlated and presented after the build itself has completed.

This is my project for Googles' Summer of Code program, mentored by Greg Wilson and Trent Mick for the PSF. The project site is a deployment of Trac, and a significant part of the project is implemented as an add-on to Trac.

Trac (2004–2008)

Trac is an enhanced wiki and issue tracking system for software development projects. Trac uses a minimalistic approach to web-based software project management. Our mission; to help developers write great software while staying out of the way.

Inspired by CVSTrac, Trac provides integrated wiki, issue tracking and version control. It's a Collabnet mini, in a way. Trac is written in Python and provides a modern, web-standards compliant interface.

My involvement with the Trac project started in mid 2004. My current pet task is a conversion to a more flexible, plug-in based architecture.

CSS Editor Plug-in for Eclipse (2003–2004)

A plug-in that adds CSS editor infrastructure to Eclipse. Work on this project stopped when my own use of Eclipse declined after having switched to Mac OS X (no, Eclipse isn't nearly as good on OS X as on Windows.)

Before this project died, there was an attempt to integrate it with other plug-ins such as SolarEclipse and JSEditor. That attempt pretty much failed, unfortunately. Anyway, the Eclipse foundation has since started the Web Tools project.

Jakarta Cactus (2002–2004)

Cactus is a simple test framework for unit testing server-side java code (Servlets, EJBs, Tag Libs, Filters, …).

The intent of Cactus is to lower the cost of writing tests for server-side code. It uses JUnit and extends it.

Cactus implements an in-container strategy, meaning that tests are executed inside the container.

Cactus is the brainchild of Vincent Massol. While the “in-container” approach is not unproblematic, Cactus does provide some nice features that make testing of Java web applications and frameworks easier.

The major features I worked on for this project were probably the Ant tasks and a helper class for testing JSP tag libraries. Some of the ideas and code of the Ant tasks now continue their life in the Cargo project (which I'm not involved with).

Jakarta Slide (2001–2003)

Slide is a content repository which can serve as a basis for a content management system/framework and other purposes.

Or in other words, Slide is something of a WebDAV repository kernel.

While I was involved with the Slide project, I became familiar with many of the low-level details of the WebDAV protocol. My involvement started due to an uni project about WebDAV, actually. I also wrote a JSP tag library for Slide (now discontinued as far as I know.)

MeV (2000–2001)

Media Sequencer for BeOS. Based on a MIDI Sequencer developed by Talin, MeV is currently being updated to run on BeOS R5. The long term goal is to completely separate the sequencer framework & engine from the handling of specific media types.

So yes, I was once a BeOS developer. The MeV project was the last project I worked on for that platform.

VST Media AddOn (2000)

This was the first and last spare-time project that I didn't release as open-source. It was a bridge between the BeOS Media Kit and Steinbergs' VST audio plug-in technology. Interesting stuff, learned a lot in the process.

Cortex Media Toolbox (1999–2000)

Precise answer: Cortex provides a user-interface (UI) to the Media Roster.

Say you have a bunch of audio nodes lying fallow in your /boot/home/config/add-ons/media folder. Some of them make noise, other ones filter it. While nodes will often be provided as parts of full-fledged applications, the BeOS Media Kit is designed to let you mix and match them to your heart's content: there are no competing 'plug-in' formats to worry about.

For this project I mostly did user interface work, which was also pretty damn interesting. Not user interface work as in drawing icons (although I did that, too), but as in design and implementation of the user interface, which did involve lots of C++ code on BeOS.