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, and most recently in web services. 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  (Summer 1998, and Summer 1999, about 8 weeks total). 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. 
  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.

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.