Software Engineer or Senior Software Engineer or Software Develo
Software Engineer or Senior Software Engineer or Software Develo
Software Engineer or Senior Software Engineer or Software Develo
Accomplishments:
* Lead developer for the world's first commercial nano-manipulation software. N
anoMan (Application software and GUI. Inventor on patents: US 6,862,921, US 7,0
40,147, US 7,334,460) The product led to >$15 Million in additional annual sales
.
* Lead developer for the world's first atomic-force profilometer. (Application s
oftware and control GUI.) The product led to >$50 Million in additional annual s
ales.
* Proposed and secured a $6M investment for software architecture improvements a
nd commonality across mutiple business units in Veeco Instruments.
* Completed a GUI prototype to win Veeco a $10 Million order from IBM. (Two mont
hs, Visual Basic)
* MacWorld Best-of-Show award for MasterWriter. (Consultant from concept to rel
ease.)
Special interests:
* Refactoring and adding unit tests in difficult code bases, to increases clarit
y, remove duplication, solidify, etc.
* Physical computing (or embedded) systems using software and hardware to sense
and respond to the analog world. (Data acqusition & control software and hardwar
e for environmental, scientific, medical, etc.)
* Open-source software and hardware, including Linux and Embedded Linux. (Linux
skills)
* Enabling business representatives and domain experts to steer rapid developmen
t via tests, high-level languages, models, or prototypes, use cases, etc..
* Executable requirements. (e.g. Functional tests using FIT)
* Dynamically-extendable architectures. (e.g. deep plug-in architectures like Ec
lipse).
* Iterative architectural migration strategies.
* Software product lines sharing common code, requirements, tests, etc.
* The interplay between design principles, design patterns, and refactoring.
* Test frameworks: system, component, and unit.
* Agile perspective and practices of Extreme Programming, Scrum, etc..
* Environmental issues, cleantech, greentech, green energy, sustainability, Perm
aculture.
WORK EXPERIENCE
2004 - present
Principal Software Engineer (and Owner), SourceCell - Custom software developmen
t, delivered in weekly increments of growing functionality. Special services fo
r helping teams add more unit tests and refactor difficult sections of code. See
Client projects & comments... Sample projects include:
* Ported design-pattern lessons from java on Windows to C++ on Windows and Linu
x, for use in Refactoring to Patterns courses offered on-line and at major comp
anies. (e.g. Google, HP, etc) For Joshua Kerievsky of Industrial Logic,
* Enabled a C++ application to interact with a SOAP web service to get special
automotive-service information. Additional features have been added as requested
. Client: Bosch Diagnostics (subcontracted through Cold Spring Engineering)
* Consulted for MasterWriter software since 1995. (ownership interest) MasterW
riter software won a Best-of-Show award at MacWorld 2003. Worked on the FitNess
e open-source project for system testing. Wrote an early C++ addition to allow t
esting of C++ programs using the Framework of Integrated Test. (FIT).)
* Quick evaluation of iPhone versus Android-based mobile phones for use in a mo
nitoring-and-control application. Client: Bosch Diagnostics (subcontracted throu
gh Cold Spring Engineering)
* Added error-status information to user-space drivers in embedded Linux monito
ring systems for a commercial solary-energy (photovolaics) company. (SunEdison)
* Built simple web sites. (e.g. www.spiritmtnart.com and the www.focusedgigs.co
m family of sites: www.aspengigs.com www.afmgigs.com www.agilegigs.com www.cl
eantechgigs.com, etc.), and www.domaincells.com etcPlus, working on a number of
software product ideas.
Software tools/technologies: C++ (+ STL, Boost, templates), Java, Python, C#,
Linux, Bash shell, gcc/g++, gdb, make, cmake, ctest, chroot, XML-RPC, HTML, Ecli
pse, MS Visual Studio, Windows NT/2000/XP/VISTA/Windows 7, Mac OS X, Android, i
Phone, Subversion, SOAP, gSOAP, soapUI, COM, XML, Ruby, Poco, D-Bus (dbus), etc.
See also Client projects & comments...
2003 - 2008
Senior Software Engineer IV, Veeco Instruments, Santa Barbara, California. (Acq
uired Digital Instruments (DI)) Veeco is the world's leading manufacturer of at
omic-force microscopes (AFMs). (AFMs are the world's most powerful type of micro
scope. They can "see" atoms. AFMs are used in many nanotechnology areas includin
g the development of solar cells, hybrid cars, biomedical innovations, high-brig
htness LEDs, MP3 players, flash memory, etc.). My roles: Created and initially m
anaged a $6 M architectural-migration project. This evolved into a longer term
Common Assets Software Group, We hired a manager for that group, and I moved in
to an architectural development role. Responsibilities: Developed a common-data
analysis package for use by multiple business units. Development on a large arc
hitectural-migration project, development of common: code, tools, and practices,
for use by three different business units and product lines. (Product-line arch
itecture group). Service-Oriented Architecture (SOA) for precision equipment co
ntrol, data acquisition, and data analysis. Work included: architectural design
, development, planning, budgeting, requirements analysis, use cases, component
design, implementation, unit & system test frameworks, etc. Moderated a design
patterns study group with 7-9 participants. (based on Joshua Kerievsky's model
for patterns study groups.) Defined and develope an "Open Architecture" product
that enables customers to customize our main application via scripting and plug
ins. Removed 143,000 lines of no-longer-wanted-but-still-running legacy Zinc GU
I support from a flagship MFC application. Software tools/technologies used: C+
+ (+ STL, Boost, templates), MFC, COM, Python, Java, CppUnit and unittest.py fo
r unit-testing, Boost libraries, Eclipse, a custom data-driven system testing us
ing FIT-like approach (parsing Excel files and driving GUI tests via Silktest an
d API tests via MS COM), PHPwiki for collaboration and knowledge base, CruiseCon
trol continuous build system, Perforce source control, Serena Team Track for iss
ues tracking, Enterprise Architect for modeling. Windows 2000/XP.
2002 - 2003
Director of Software Engineering for Research Products, Veeco Instruments, Santa
Barbara, California. (see above Now called NanoBio) Responsibilities: Planned
and coordinated development of software for scientific instruments (AFMs). Manag
ed a $2 M department budget with 14 people. Created proposals, plans, and presen
tations. Requirements analysis on multiple levels, including use cases. Technic
al work: Numerous architectural projects. Developed initial version of the world
's first commercial software package for nanomanipulation and nanolithography Na
noMan Integrated the CppUnit unit-test framework into our main application. Inte
grated a C++ version of the FIT framework for acceptance tests. (http://fit.c2.c
om) Added a COM interface to main application for control from client programs.
Programmed demo COM clients in LabVIEW, Matlab, Python, and Ruby. Plus lots of g
eneral programming needed on the company's main million-line application. Invest
igated Agile development methodologies such as Extreme Programming (XP), Feature
-Driven Development (FDD), Scrum, and the Rational Unified Process (RUP) as ways
to provide rapid innovation, solid methodical development, and on-going feedbac
k to management. Impressed with development using short-cycles, close customer i
nvolvement, and unit-testing. Established a library of books for the software
department. Software tools/technologies: C++ (+ STL), C, MFC, CppUnit, MS Visua
l Studio, Python, LabVIEW, TLIB, Windows NT/2000.
1999 - 2002
Manager of Software Engineering , Research Products Group, Veeco Instruments (Se
e above) Manged six people. Accomplishments: Managed a major clean-up of the mai
n shipping legacy product. (6 months) Prepared plans to accommodate a major reor
ganization of the business into two businesses, and two software departments. Te
chnical work: Participated in the development of numerous new products. Software
tools/technologies: OOA, OOD, design patterns, C++ (+ STL), C, MFC, MS Visual
Studio, Zinc, TLIB.
1997 - 1999
Software Engineer, Digital Instruments. DI's software controls a very complicate
d real-time data-acquisition and analysis system. ( (Atomic Force Microscopes)
Accomplishments: Worked in the Software R&D group helping develop the next-gener
ation architecture and user interface. (OOA, OOD, C++, MFC, ActiveX) Completed a
two-month GUI prototype to win the company a $10 Million order. (Visual Basic)
Lead developer of software to control the world's first atomic-force profilome
ter, combining motion control, SPM data acquisition, display, and analysis. It r
equired lots of requirements analysis, design, rapid prototyping, and user-inter
face design. It also involved the integration of contributions from diverse pers
onalities and the associated practice in cooperation, communication, imagination
, patience, etc. Other projects include: analysis & verification of legacy algor
ithms, designing test procedures, and random general programming that a complica
ted system often requires. Software tools: C++ (+ STL), C, MFC, Galil, Zotech,
Zinc, MS Visual Studio, Windows NT
1993 - 1997
Assistant to the President, Digital Instruments, in Santa Barbara. (see above) I
feel quite fortunate to have worked directly for Dr. Virgil Elings. He's one of
the most brilliant men around, and quite a colorful character. In 1993, I appli
ed to work as a programmer. He asked me to focus on the organization & support o
f a patent infringement lawsuit against a competitor. That work included: analys
is of the competitor's hardware and software, summarization of complex evidence,
financial analysis of damages, correspondence with attorneys, etc. I developed
various databases for tracking patents and legal documents. Additional projects
included: analysis of contracts and license agreements, patent and trademark app
lications and administration, proposal writing, and financial projections for fe
deral research grants. As the lawsuit ended, I asked to transition back into pro
gramming for DI's main products.
1993
Technical Writer II, Engineering, PulsePoint Communication (Formerly Digital Sou
nd Corporation (DGSD) Manufacturer of high-capacity network-based message proces
sing systems). Job description: "participated in the product design and developm
ent cycles for DGSD's software products, to identify, design, create and maintai
n required documentation." My primary focus was on DGSD's extensions to UNIX and
the "Systems Services" layer between the operating system and custom applicatio
ns. Required knowledge of UNIX, C, C++, and object-oriented analysis & design me
thodologies. Wrote test programs, shell scripts, and created sample programs for
user manuals and tutorials.
1992 - 1993
Technical Reviewer, Intellimation (educational software publisher), on a part-ti
me basis. Performed technical review and software testing of new educational sof
tware. Prior to 3/9/93: Technical Evaluation Coordinator, 30 hrs/wk. Performed t
echnical reviews of new educational software, finding bugs and suggesting improv
ements. Provided technical and programming assistance to developers. Required sk
ills in HyperCard and C programming. Plus technical support. Started using Linux
0.99 at home, in order to learn more about UNIX and C programming.
1988 - 1992
Consultant, Michael Kelley Harris Special Project Services for Investors, Entrep
reneurs, and Strategic Managers. (dba Venture Analysis until 1992) Services in
cluded: feasibility analysis, due-diligence, research, project management, prop
osals, writing, programming, etc. Prepared business plans for four limited partn
erships to raise a total of $3,000,000. Prepared large spreadsheets for investme
nt analysis. Created databases for clients wanting contact info, marketing plans
, etc. As necessary, hired professional associates, sub-contractors, and assista
nts. Worked very hard and learned a lot. Developed a deep appreciation for the
entrepreneurial risks and creations of others.
1985 - 1988
Physics student. University of California at Santa Barbara. Worked P/T for Bri
an Beebe, Colin Gray, and private collectors, fabricating, framing, and installi
ng contemporary art. Started studying C programming.
1985
Programmer/analyst. International Transducer Corp. Created computer models for t
he design of piezo-electric ceramic transducers, based on Bessel functions of ha
rmonic resonance. (BASIC)
1983 - 1985
Economics/Mathematics Student. University of California. Some freelance investme
nt research, analysis, due-diligence services. (Didn't make much money. Learned
a lot.)
1983
Programmer/analyst. VentureSim. Programming of Monte Carlo simulation and analys
is of oil & gas well investments, in BASIC and Lotus 123.
pre 1983
Numerous other jobs and small service businesses. (Including programming in Pasc
al, APL, Fortran, and assembly.)
EDUCATION
* B.S. Physics '88, University of California, Santa Barbara
* B.A. Economics-Mathematics '85, with High Honors; University of California, Sa
nta Barbara. (22 units of Computer Science, 4.0 gpa)
* 2000-2001 UCSB 12 units of Computer Science courses in Data Structures & Algor
ithms, and Numerical Analysis
* U.C.S.B. Extension Certificate in Object-Oriented Programming awarded August 1
998.
* SEI Software Architecture Professional. Certificate April 2005. (SEI Softwa
re Architecture Certificate Programs)
PATENTS:
Participated in the invention of a number of methods and instruments within the
field of atomic-force microscopes, including:
* United States Patent 7,334,460, issued February 26, 2008, "Method and appara
tus for manipulating a sample"
* United States Patent 7,040,147 B2, issued May 9, 2006, "Method and apparatus
for manipulating a sample"
* United States Patent 6,862,921 B2, issued March 6, 2005, "Method and apparatu
s for manipulating a sample"
CONTINUING EDUCATION:
* 2009 Feb. 9-11. Linux Device Driver Development. LinuxCertified. Santa Clara,
CA
* 2008 November 17-23 LINUX-LPIC1 7-Day Linux Boot Camp. (Linux system adminis
tration, vender neutral, leading to Linux Professional Institute Certification L
evel 1 (LPIC-1)) Unitek. Fremont CA
* 2008 November 12-14 Embedded & Real Time Linux Development course. (ARM9 AT91
, Eclipse) LinuxCertified. Santa Clara, CA
* (gap in courses and conferences due to some family health challenges, and incr
eased contract work to pay for the health challenges.)
* 2005 Fall - 2006 Spring. Design Patterns study group at Veeco Instruments. I
started this in the Fall of 2005, inspired by Joshua Kerievsky's Learning Guild
to Design Patterns. Weekly meetings to discuss one pattern and how it can be app
lied to Veeco's instrumentation-control software. We've been through the 23 patt
erns in the GOF book Design Patterns.
* 2006 Spring - Software Design Patterns, Santa Barbara City College, CS165. Gra
de A Language: Java & SWT, Eclipse
* 2005 Oct 16-20 - OOPSLA conference. (www.oopsla.org) Tutorials on Storytest Dr
iven Development by Max Baumann and Ken Scott-Hlebek; Tuning Your Methodology by
Alistair Cockburn; Domain-Driven Design by Eric Evans; and Patterns for Introdu
ding New Ideas by Linda Rising and Mary Lynn Manns.
* 2005 July 24-29 - Agile2005 conference in Denver. www.agile2005.com
* 2005 April 12-13 - Software Engineering Institute (SEI) - Software Architectur
e Design and Analysis, by Len Bass and Robert Nord.
* 2004 December 1-2 - Carnegie Mellon Univ., Software Engineering Institute (SEI
) - Software Product Lines, by Linda Northrop (Director of the Product Lines pro
gram.) (http://www.sei.cmu.edu/products/courses/spl.html)
* 2004 October 23-28 - OOPSLA in Vancouver BC. Tutorials by Joshua Kerievsky, Sc
ott Meyers + Kevlin Henney; Plus keynotes by Ward Cunningham, Alan Kay, Steve M
cConnell, etc.
* 2004 September 29-30 - Carnegie Mellon Univ., Software Engineering Institute (
SEI) - Documenting Software Architectures, by Len Bass and Felix Bachmann
* 2004 September 27-28 - Carnegie Mellon Univ., Software Engineering Institute
(SEI) - Software Architecture Principles & Practices, by Len Bass and Rick Kazma
n
* 2004 August 15-18 - XP Agile Universe Conference in Calgary (Many good present
ations and workshops.)
* 2004 three-day course in "Advanced Object-Oriented Design with Patterns" by Ja
mes Grenning of ObjectMentor. Language: Java.
* 2003 October 26-28 - OOPSLA in smoky Anaheim California. Tutorials on product-
line architecture, large-scale architecture, design patterns for high-performanc
e systems.
* 2003 August 10-13, XP Agile Universe Conference in New Orleans. (Many good pre
sentations and workshops.)
* 2003 Fundamentals of the .NET Framework. U.C.S.B. Extension Summer qtr, 1.5
units. A.
* 2002 three-day course in "Test-First Design and Refactoring", by Robert Koss o
f ObjectMentor.
* 2002 two-day course in planning via "Extreme Programming", by Robert Martin of
ObjectMentor.
* 2002 one-week course in "Extreme Programming". ("XP Immersion"), by Robert Mar
tin and Ron Jeffries of ObjectMentor. Language: Java.
* 2001 Organizational Management, U.C.S.B. Extension
* 2001 Legal Aspects of Employment Practice, U.C.S.B. Extension
* 2001 Principles of Performance Management, U.C.S.B. Extension
* 1998 The C++ Standard Template Library. U.C.S.B. Extension Fall qtr, 2 units.
A.
* 1998 Design Patterns. (C++ & Java) U.C.S.B. Extension Summer qtr, 3 units. A
.
* 1998 Introduction to UNIX. U.C.S.B. Extension Summer qtr, 3 units. A.
* 1998 Java II Fundamentals. U.C.S.B. Extension Spring qtr, part 2, 2 units.
A.
* 1998 Java I Fundamentals. U.C.S.B. Extension Spring qtr, part 1, 2 units. A.
* 1998 Advanced Object-Oriented Programming with C++. U.C.S.B. Extension Sprin
g qtr, 4 units. A+.
* 1998 Programming Windows 95/NT using Microsoft Visual C++. U.C.S.B. Extension
Winter qtr, 3 units. A+.
* 1998 Object-Oriented Programming with C++. U.C.S.B. Extension Winter qtr, 3 u
nits. A.
* 1997 Object-Oriented Analysis & Design (emphasizing UML) U.C.S.B. Extension F
all qtr, 3 units. A.
* 1993 Object-Oriented Analysis and Design, GE Advanced Products Center, using O
bject Modeling Technique (OMT). FT 2-week course.
* 1992 Science and Macintosh Conference, U.C.S.B. Extension 20 hours
* Reading lots of books and articles.