I enjoy working on practial issues and problems with industrial colleagues.

I have quite bit of industrial experience, primarily in software engineering, and more specifically in software maintenance and evolution, program understanding, and software quality  (testing and analysis).  I spent nearly 20 years in industry, beginning at Perkin-Elmer, and then at AT&T Bell Labs and its various offshoots. I have experience in system tools, databases, software development tools, telephony, web services, and quality control methods. Most recently I have been doing a lot of work in mining software repositories examining histories of projects to understand the factors that influence quality and productivity. For about 5 years I was in product development, and then I moved into an applied research lab. While at research, I enjoyed frequent interactions with development teams, helping them develop better tools and processes to improve software quality, cost, and schedules. I had particular success with GENOA, a tool that was used to aid program understanding and maintenance; this tool was widely used by development teams within AT&T and Lucent. AT&T has also sought (and obtained) patent protection on several of the ideas I developed while I was there.

Since coming to UC Davis, I have been involved in both short and long-term consulting projects with various industrial colleagues. I've listed some of the longer ones below:
  1. Microsoft, Redmond, WA  (1998-2008). Consulting on new approaches to improving the quality of kernel-mode device drivers. Developed programming models and analysis techniques in collaboration with Microsoft researchers (Ted Biggerstaff and others) and developers. Also consulted on approaches to improve quality and evaluate issues that affect software quality 
  2. Hewlett-Packard, Palo Alto, CA. (Summer 1999, 2 weeks total) Consulting on security for a new systems management and administration infra-structure for distributed e-commerce applications. (Worked with Martin Griss and Pankaj Garg at HP Labs). 
  3. Financial Services Company, USA (Winter 2000, Spring 2001, 2 weeks total). Consulting on software evolution, maintenance and quality control of a large distributed financial application, specificallly to identify and patch security vulnerabilities. This well-known organization has multi-billion dollar annual revenues, but  must remain unnamed due to an NDA.
  4. Expert Witness Work I've done projects for attorneys in legal disputes relating to software quality, and intellectual property issues (working out infringement scenarios, and evaluating patent claims & novelty).

I have also provided training in several areas. This training overlaps with and cross-pollinates my own academic (undergraduate and graduate teaching), and provides opportunities for interaction with industry colleagues.  I have given intensive training classes (between 2 days and a week) in several areas, including design patterns, client-server and container-based computing (EJB, CORBA, .NET), and software engineering for security. As an academic, with a  longer-term view,  I can offer a more nuanced historical rationale for the design of modern infra-structures such as EJB; I believe this helps learning and retention. I have conducted training in various countries: in the US, Italy, China, India, Thailand, and Mexico. A good way to travel and meet people. In fact, in some cases, I am happy to do it for a low or nominal fee, since I enjoy interacting with colleagues from other backgrounds and cultures. Specially so for spanish-speaking countries, since I have two young kids who are fluent in the language.

 I find that industrial partnerships enrich my own research, and teaching. The  issues confronted by industrial colleagues are often the ideal source of new research  problems and directions.