The following are projects I have implemented for clients:

MusicID SDK for iPhone and Android

Gracenote : Emeryville, CA

The MusicID SDK project involved implementing a developer friendly interface for both Android (Java) and iPhone (Objective-C). The goal was to provide easy access to Gracenote's MusicID media recognition technology on mobile devices. To make life easy for developers creating both iPhone and Android apps, great care was taken to ensure that the APIs were identical across the two implementations. My role in this project was to interface with team members to design and evaluate the APIs, then implement the Android and iPhone SDKs and test to ensure that the code was production quality. This contract required 8 months of implementation effort.

iPhone App Gracenote MusicID Servers Android App
iPhone App -> MusicID Servers <- Android App

Data Center Monitor

Undisclosed Client : San Jose, CA

The dcmonitor project consists of a Linux server running a LAMP stack along side an Arch Rock server and an array of hundreds of temperature and humidity sensors. The dcmonitor system is implemented in PHP and makes use of a REST interface to pull live node data and store it in a MySQL database. This database can then be queried via a series of administrative interfaces. For example, one interface displays the temperature of each sensor in the data center using color coded dots on top of a floor plan image. My role in this project was implementing the monitoring server and administrative interfaces. This contract required 2 months of implementation effort. This system is currently live and in continuous use.

Data Center Arch Rock Monitoring System Monitor Server
Data Center -> Data Center -> server

Label Server

Signature Wines : Hayward, CA

The label automation print server processes print jobs from a web-based label customization tool implemented in Flash. The label server is implemented entirely in Python and makes use of COM to automate Adobe Illustrator. The label server generates a PDF from a predefined label template and prints the label on a high-end printer. The label is then affixed to a bottle of wine and is shipped to the customer. My role in this project focused on implementation of the server and preparation of Illustrator label templates for automation. This contract required 12 months of implementation effort. The label automation server went live in 2004 and is in continuous use.

Wine Bottle Label Label Server Labeled Wine
wine bottle +   rose -> User Customized Text -> server -> High - End Printer -> wine bottle + label

Tcl to Java Compiler

Advanced Micro Devices : Austin, TX
One Moon Scientific : Newark, NJ

TJC is a Tcl to Java compiler for Jacl that converts source code written in the Tcl scripting language into Java source code. TJC makes use of the Janino embedded Java compiler to convert generated Java source code into Java bytecode. TJC compiled Tcl code will execute from 10 to 30 times faster than interpreted Tcl code. My role in this project was to design and implement the compiler, design and implement a regression test suite, and provide documentation. This contract required 4 months of implementation effort.

Tcl Source -> TJC Compiler -> Java Source -> Janino Compiler -> Java Bytecode

Quercus Application Validation

Caucho Technology : La Jolla, CA

Quercus is a 100% Java implementation of the PHP scripting language. Quercus supports an interpreted PHP execution mode and also includes support for execution of PHP scripts that have been compiled to Java bytecode. Quercus is available under the GPL license and is supported by Caucho Technology. An end user would install Quercus along with a web/application server like Resin, in order to run a PHP application like MediaWiki in a 100% Java environment. My role in this project was to validate existing PHP applications to ensure that they execute correctly when running under Quercus. Each PHP API used by an application would need to be verified and throughly regression tested. Any defects uncovered during the validation process would then be addressed in the Quercus implementation. This contract was 6 months in duration.

Call Center Monitor

Spanlink Communications : Minneapolis, MN

The call center monitor is a client / server application that displays live call center information and statistics. The client is a Win32 GUI application that displays information on a manager's desktop. The server is a C program that interfaces with a Lucent PBX (Private Branch Exchange) and an Oracle database. A PBX is a piece of computer telephony hardware that connects to multiple agent phones and routes incoming calls to the next available agent. My role in this project was to implement the client / server programs and the Oracle DB persistence module. This contract required 8 months of implementation effort.

Call Center

Webcall Computer Telephony / Web Integration

Spanlink Communications : Minneapolis, MN

Webcall is a Computer Telephony platform that can be integrated with an existing web site. Webcall was initially developed in 1995 while the web was still in its infancy, and was quite novel. Webcall provides a means to implement a web enabled call center that can link a live agent to a customer via the existing phone network. Webcall could also automatically process credit card numbers over the phone, instead of sending them over the unsecured network. My role in this project was to implement the C code that interfaced a web server (CERN) with computer telephony hardware. This project required 6 months of implementation effort.

Tcl Blend Threading

Scriptics / Ajuba Solutions : Mountainview, CA

This client needed Tcl Blend to be rewritten to take full advantage of native threads and avoid lock contention. Because the original Tcl Blend 1.0 release lacked the ability to make full use of native threads, every Tcl Blend call into the JVM had to grab a global monitor, so code executed slowly. My role in this project was to implement a new locking approach and then test and validate the new code. This contract required 2 months of implementation effort. The results were made available in the Tcl Blend 1.3 release

Itcl port for Jacl

Advanced Micro Devices : Austin, TX

Itcl is a widely used Tcl extension that implements object oriented functionality for the Tcl scripting language. Jacl is a Tcl interpreter implemented entirely in Java. This client needed to be able to execute Itcl code in Jacl which was not possible because Itcl is a C Tcl extension. My role in this project was to port an existing library of 15K lines of C code to Java. Itcl's regression testing framework was also ported to Java. This contract required 1 month of implementation effort.

Namespaces port for Jacl

HMS Software : Boston, MA

The original Jacl 1.0 release lacked support for Tcl namespaces, which provide a handy way to avoid procedure and variable name clashes. The client needed to run code that depended on namespaces in Jacl. My role in this project was to port all namespace features from the C version of Tcl 8 to Jacl. This contract required 1 month of implementation effort, the results were made available in the Jacl 1.2 release.


Native Seeds/S.E.A.R.C.H : Tucson, AZ

Native Seeds is a conservation organization that saves agricultural seeds for American Southwestern and Northwest Mexico crops. The Native Seeds website supports a shopping cart and a small database back-end. My role in this project was to add support for internationalization to the PHP modules and dynamic web pages. This contract required 1 month of implementation effort.