3926 NE Hassalo St.
Portland OR 97232

Relevant Skills

Areas of Expertise

Embedded Applications
Wrote applications and device drivers for embedded systems (the IxWorks variant of VxWorks and embedded Linux), and written RTOS libraries for embedded CPUs in C with assembly code where necessary.
A large amount of Linux applications programming. Wrote several Linux device drivers, including drivers for x86, StrongARM, and MIPS based systems. Taught Red Hat courseware for several years.
Wrote several large Java standalone applications, including GUI programs, web applications, and hardware simulators.
Web Programming
Wrote a JSP (Java Server Pages) web application that interfaced to an SQL database. Codeveloped and taught a class on using JSP to build web front ends for SQL databases.
Ported a network client application from desktop Java (J2SE) to J2ME/CLDC (Java Micro Edition/Connected Limited Device Configuration) for cell phone use. This included the work of redesigning the application as necessary to fit in the constraints of a cell phone.

Work History

2004, Self Employed. Brought "hobby" web application into profitability
For many years, as a hobby, I ran a server at http://kgs.kiseido.com/ where people could play the traditional Eastern game Go over the internet for free. In late 2003, this server became too busy and required too much time to remain as only a hobby, so I assembled and implemented a plan for adding additional content that would be accessible for a fee. In late October of 2004 I was ready to release the non-free contont. In the first month it gained enough subscribers to be profitable. In the future I intend to continue work on this project as a part-time job. This server system includes a C backend server, Java clients, with JSP-based web pages, and includes real time audio streams, over 1,000 players connected simultaneously, and all text translated into 15 different languages.

2003 (February through December), iMove Inc. Wrote video stream control code, camera control system, and maintained device drivers
Originally at iMove I was working on their spherical video surveillance project, writing the code for the server that would control the camera, assumble the images from the camera into video streams, and route the assembled video streams to the storage system. I also took over maintenance of the Linux drivers for their camera control cards. Later I worked as team leader on a similar system that was mounted in an autonomous vehicle and used the spherical camera to collect and store video data for later replay.

2002 (July through December), Xyron Semiconductor. Wrote Java-based simulator for CPU
Xyron was developing a custom ASIC that would include several custom embedded MIPS processors. We had a very tight schedule, had only a few months between tapeout and delivering a ready-to-use system complete with the software. I wrote a MIPS simulator in Java that included all modifications to the MIPS cpu that we made and included the devices that we planned to include on the ASIC. The Xyron software team used this simulator to develop software so that only debugging would be needed once the hardware arrived. The simulator was completed and was able to run at 4MHz. We booted Linux in full multiuser mode, were able to log in, compile programs in the simulator, and start up X Windows. I also provided assistance to the engineer porting Linux to this device.

2002 (January through July), Xyron Semiconductor. Wrote RTOS library for custom CPU
Xyron Semiconductor had a MIPS-like custom CPU with a hardware RTOS task scheduler. Working with one other engineer we put together an RTOS library to utilize this CPU and its hardware features. For this RTOS library, wrote device drivers to operate ethernet, flash programming, audio in/out, and IDE disk access. All these devices were on a single FPGA (with the CPU), with no outside IP used, so all were completely custom and all drivers were written from scratch.

2001, Contractor from Axian at Intel. Wrote embedded Linux PCI Driver
Intel had a system that ran Linux on a StrongARM-based network processor on a PCI card. At the time I started, communication between multiple cards (or between a card and a PC-based host) was through the network. The PCI bus was only used as a power supply. I wrote an ethernet-over-PCI emulation system that allowed the strongarms and the PC host to communicate with each other over the PCI bus, eliminating the need for a common subnet connecting them and reducing the amount of unnecessary network traffic generated.

2000, Contractor from Axian at Giganet. Worked on Solaris network driver
Giganet had mostly finished but buggy network clustering device intended to adhere to the SAN/VIA clustering standard proposed by Intel, Microsoft, and Compaq. They had drivers for Linux and Solaris. I helped to debug their driver and helped make changes to make the driver fit the standard, which had gone through several revisions.

1999-2002, Axian Inc.: Instructor and Courseware Developer for Axian/Red Hat Courseware
Taught the Red Hat classes (which were developed by Axian) for Linux application programming and Linux kernel programming. In addition, I developed the courseware for Linux GUI programming classes in GTK+ and Qt, and co-developed a course on using Java to web-enable a SQL database.

1999-present, self employed: Author and Operator of Kiseido Go Server
KGS is an internet server for the traditional Japanese strategy game, "go". It is the largest Western-based go server, with over 17000 registered users as of January 2003. It uses a server written in C, with Java clients, a SQL database to record server data, and a JSP-based web application to provide dynamic web pages related to the server. I also wrote a cell phone J2ME client for this server, allowing people to play by their cell phones. I wrote all code and perform the primary management duties, including managing the team of volunteer assistant administrators.

1991-1998: Software Engineer, Intel Corporation
Relevant Projects:

1998: Contractor working for Midway Home Entertainment
Project was to write a web-based chat server. The chat server consisted of a Java client in a web page which connected to a multithreaded C back end running on Irix.


B.S., Computer Engineering - Carnegie Mellon University, Pittsburgh, PA, 1991.
Related Coursework: Compiler Design, OS Programming, Parallel Programming

Last updated December, 2004