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:
- 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.
- 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).
- 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.