Career Overview

I have been a software engineer for over 25 years (nearly 10 of those as an independent consultant), with extensive experience in the telecom, financial, and defense industries. I have worked on a diverse set of projects ranging from "bare metal" embedded and systems work (hardware interfacing, device drivers), to real-time systems, to high-level SQL databases and end-user applications (financial risk management systems and trading support tools). I pride myself on being able to see the big picture on large complex projects, while also being able to zoom in to the lowest levels of technical detail as needed.

Whether you are starting a new development effort from scratch, enhancing an existing system or product, or tracking down stubborn bugs in legacy code, the breadth and depth of my experience can be a valuable asset to your project.

My resume (including contact information) is available in Adobe PDF format, here.

Additional Information

The following sections provide some additional detail regarding some of the projects I've worked on over the years. This information is intended to complement the information given in the resume linked above.

Gentex Visionix

For the past few years I have been developing head-mounted video displays. While my official job title is Software Engineer, my role has expanded to encompass other related areas. I joined the company in mid-2005, shortly after the formation of the Gentex Visionix group. As an early member of the team, I have had a significant role in getting the R&D effort off the ground.

In addition to developing embedded real-time code (using C and OpenGL) to run on VxWorks and Linux, I developed portability libraries which allowed much of the embedded code to be prototyped and tested on desktop workstations. I was also responsible for the initial set-up of much of the infrastructure on which the software development group relies – source code management system, in-house engineering Wiki server, OpenSSH gateway, etc. – and still play an active role in maintaining and enhancing our computing and network infrastructure. I have been closely involved in all aspects of the software engineering process, from initial requirements, all the way through to personally supporting successful demonstrations and test flights of our systems at military bases around the US.

I have been involved in the hardware effort as well. When the need has arisen I have traded my keyboard for an oscilloscope probe, and worked on testing/debugging custom hardware. This has included identifying and solving a number of LVDS (high speed serial) signal integrity issues, among other things.

Quantitative Analytics

As a consultant at Quantitative Analytics, I ported a large legacy database from Pervasive SQL to Microsoft SQL Server, and worked on various custom databases and analysis tools used in the financial industry.

Tellabs

As a consultant at Tellabs, I worked on the network management system for a commercial cable telephony platform. This involved working with a Microsoft SQL Server back end, and a Windows GUI based front end. One of the projects I tackled while there was a major rewrite of the "network discovery" subsystem, which automatically maps out the topology of the network to be managed.

Westell

As a consultant at Westell, I developed a number of firmware modules for DSL modems and DSLAMs (Digital Subscriber Line Access Multiplexer). This included network bridging functionality, support for in-the-field firmware upgrades, and SNMP network management interfaces. I was also involved in initial bringup and debugging of new hardware. Most of the development was done in C, for VxWorks and AMX embedded OSes.

Fermilab

As a Computing Professional at Fermilab (a national laboratory operated by the US Department of Energy), I worked extensively on their ACPMAPS system, which was a groundbreaking (for its day) custom parallel processing supercomputer containing over 600 CPUs. I assumed responsibility for all of the hosting software (which ran on a UNIX-based front-end system), developed most of the hardware-level system diagnostics, maintained the library (Canopy) which supported the parallel algorithms being used by the physicists, assisted with hardware testing and debugging, and optimized the high-speed communication routines which were used for inter-node communications in the processor array. Development was done in a mix of C and i860 (an early RISC processor) assembly language.

I also served as a liaison between the R&D group which built the system, and the primary users of the system in the Theoretical Physics group.

David Bruce and Company

As the lead software developer at David Bruce, I was involved in all aspects of systems development, from initial requirements analysis through development, testing, and end-user support. I was also responsible for technical management of the entire software development team.

David Bruce's primary product was a portfolio risk analysis system, which allowed the user to perform "what if" analyses on mixed portfolios of equities, futures, and options. The system maintained historical databases of market data, augmented with option implied volatility, beta, and correlation data which was recalculated nightly; a real-time data feed was also available. The analysis part of the system allowed the user to vary any two independent variables (e.g. market volatility and interest rates), and view a "map" of how this affected various characteristics of the portfolio. A hedge optimization module was later added to the system as well.

David Bruce was also involved in a number of other projects, including custom real-time database servers, touch screen market workstations, and data feeds.

Odds and Ends

I'm always looking for ways to expand my knowledge and skills, and new avenues to pursue in the ever-evolving world of computer technology. The only way for an engineer to stay sharp is to stay on top of things! Here are a few examples of the areas I am exploring:

Linux and Open Source

Over the past few years, I have been using Open Source software to an increasing extent. Both of my primary desktop workstations (work and home) now run Ubuntu Linux. I also help manage several Linux-based servers – the production file server and several of the development systems where I currently work run Linux; and the page you're viewing is being served by a home-built Ubuntu Linux server running on my home DSL line. We're also using Linux as an embedded platform, and have conducted successful test flights of Linux-based embedded systems with the Air National Guard. As I've gotten deeper into Linux (and Open Source software in general), I have been pleasantly surprised at almost every turn.

In many cases, Open Source software represents a viable alternative to proprietary platforms and applications. For desktop users it can result in significant cost savings, prevents vendor lock-in, and provides greater immunity from typical malware infections (as well as eliminating the significant performance penalty imposed by traditional malware protection products). For developers, it also represents significant potential cost savings – not just for the operating system itself, but for infrastructure and development tools as well. The Open Source philosophy also guarantees that any component of the system can be tailored to the application at hand, since the source code is available. As Open Source (and Linux) has matured, it has even become an option for mission critical server and embedded applications.

I am currently working on a new web site which will provide practical "How To" guides for using Linux and Open Source. I intend to eventually cover the gamut from introductory topics and basic desktop use, to business infrastructure, to software development (server, desktop, and embedded). My plan is to launch the site (with an initial focus on the most common desktop and business usage scenarios) by the end of 2009, with additional topics to follow.

Virtualization

Virtualization is an increasingly important technology these days. The concept was originally pioneered by VMware, but there are now several players in this field, including the Open Source virtualization platforms Xen and VirtualBox. Virtualization has proven to be invaluable both as an infrastructure management tool, and a development/testing tool. I have been a VirtualBox user for a while now, both at work and home. I am also considering becoming an active VirtualBox developer.

The Ubuntu Linux system which served you this page runs in a VirtualBox virtual machine, hosted on a server in the basement of my home!

Python, Pylons, and the Web

I use Python quite a bit at my current day job. Over the past few years I've become convinced that it is a superior language for a wide range of software development tasks. I also believe that it will continue to improve at a rapid pace now that it has serious corporate backing from Google (the inventor of Python works there now, and Google uses Python for a lot of their own infrastructure). A current active area of study for me is Pylons, a Python-based alternative to the popular Ruby on Rails web middleware platform; I believe it has a lot of promise.

To complement my studies of the Pylons web framework, I am also brushing up on other web-related technologies like CSS, Javascript, and so-called "Web 2.0" technologies like Ajax.

The Tech Report and "The Beast"

I occasionally post on my Bits and Bytes blog at the PC hardware review site The Tech Report. I also designed and built their custom power supply load box, which is used for their PC power supply reviews.