Download Philip Craig Plumlee

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Database wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Relational model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Team Foundation Server wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

Transcript
Philip Craig Plumlee
7375 Alicante Road
Carlsbad, CA 92009
[email protected]
Phone: 760 814 5658
760 500 0338
Senior Software Engineer
Objective
To demonstrate rapid, goal-oriented, safe, and robust coding techniques, by both teaching and doing, in an
environment of aggressive multi-platform, integrated systems, and advanced View visualizations.
Programming Experience
2009-present – Cuker Interactive – Senior Software Engineer
Cuker is a website agency specializing in boutique e-commerce and online marketing strategies, using
Python Django. I upgraded their unit testing strategy to support Test-Driven Development, BehaviorDriven Development, and Continuous Integration to CruiseControl.rb.
Celtek Clan – Integrated fulfillment via SOAP to ProLog’s ProWares warehouse management
system.
django-test-extensions – Add assert_xml and assert_html, to test XML and HTML via XPath.
Manduka – Transmit sales orders via SOAP to Intuit QuickBooks.
merchant-gateways – An open source Python port of the Rails ActiveMerchant plugin, to give
all payment gateways the same simplified, idiomatic interface.
Morelia viridis – An open source Behavior Driven Development system allowing clients to
express business rules in plain English. Unit tests evaluate the rules and verify the source
code obeys its specifications.
Xterra Wetsuits – Integrated fulfillment to Mail Order Manager, and wrote an elaborate
packing algorithm that matches wetsuit orders to correct box sizes.
Web Cube – The core of all these projects is a CMS & e-commerce engine using Django’s
segmented architecture to allow clients to pick and choose which features they want in
their websites, all running from a common code base.
2009 – Climber.com – Software Contractor
Launched 2 projects; one to calculate a user's résumé’s visibility to search engines, & mail out reminders
when their rank changes, and another to periodically send customized search results to registered recruiters.
Both projects required a “scheduling engine”, to sort and collate huge record lists before efficiently
dispatching each one.
2007-2009 – Integralnet (eBlogs) – Senior Software Engineer
Trained a crew of 6 junior engineers to use Ruby on Rails, Ajax, & MySQL for e-commerce and inhouse business views, using MacOSX desktops and Linux servers.
My innovative contributions to the TDD environment, assert{ 2.0 }, assert_xhtml, and assert_rjs_, are
now released and used as Free Software.
VideoFly – The customer entertainment system, using light Ajax, and advanced SOAP Web
Services connecting to multiple affiliates & payment gateways, with rotating content, &
high-volume Flash, integrated via XML.
weg2257 – The in-house content management system, using advanced Ajax, and high-volume
MySQL data warehousing.
All projects use Capistrano to deploy to multiple server clusters, with load balancing.
2005-2006 – Akonix – Senior Test Engineer
Retrofit cross-platform tests for a C++ server that parses and filters various Instant Messaging protocols,
using Boost. Researched and architected the kernel of a new platform, using CORBA (ACE/TAO/CIAO
libraries) on Linux.
2004 – High Moon Studios (formerly Sammy Studios) – Test Engineer
Built an integration test server for Darkwatch, using MiniRubyWiki to host acceptance test scripts written
in Lua, applying the “Broadband Feedback” principle from the book Test First User Interfaces. Wrote
developers’ tools in C#. Tested Maya, Renderware, Havok, Xbox, PS2, etc.
2004 – Spun Labs – Lemon Grove CA – Agile Coach
Facilitate 2.0 – TDD, refactoring, tracking, and acceptance test mentoring for a turnkey orderentry appliance, using Java, Linux, MySQL, Apache & Tomcat, targeting small
businesses.
2002 – 2003 – SYSTRAN – La Jolla CA – Senior Quality Control Engineer
Introduced software product lines, daily builds, and automated tests to stabilize and localize their desktop
product line, written in VB and WTL, using advanced XML and XSLT, and advanced
internationalization techniques.
ManageMSI – dynamically reconfigure Visual Studio VDPROJ files to dynamically create MSI
(Microsoft Installer) files containing any product line and any kit of data files. Includes a
complete, light, robust VDPROJ parser. C++
Server Interface Dialog – Internet Explorer hosted inside a WTL dialog box, controlling its
DOM objects via COM, and exploiting its HTTP form plumbing to piggyback extra
information to the Systran Enterprise Server. All written entirely via Test Driven
Development (exposing none too few bugs in their server!).
SystranDashboard – a lite GUI displaying a list of all of SYSTRAN’s product lines, and all of
their language pairs. To generate a complete end-user application, one selects a product
line, any combination of language pairs, and a list of locales. The program compiled and
tested that configuration, then automatically built its locales and installers using two other
projects. This system removed months from SYSTRAN’s order turn-around time. BASH
shell scripts, CygWin, GNU, Linux, Makefiles, Perl, Tk, Unicode
Systran Enterprise Client, Greek – retrofitted automated tests, debugged, trouble-shot, and
upgraded Version 4 of the GUI tool suite to display a pure Greek user interface. iso-88597, VC++, WTL
Systran Toolbar for Logitech Users – http://www.systransoft.com/Logitech/ Upgraded
SYSTRAN’s Internet Explorer Toolbar (which translates Web pages between any of >10
language pairs) to dynamically register with a server and display intermittent dynamic
pop-up ads, containing graphics, using efficient dynamically uploaded graphics. Project
finished in 2 weeks using Test Driven Development. GIF, HTTP, VB, XSLT
ResourceLocalizer – dynamically replace English text in RC resource scripts with translated text
from any other language. C++, Unicode, XML
9/2002 – 4/2003 – MiniRubyWiki – Free Software
A Wiki tuned for personal & project use, with many advanced features – embedded GraphViz, userdefined markup tags, etc. – and providing the most correct Wiki interface features possible under pure
HTML. Now in use at many private sites.
9/2000 – 9/2002 – Omnigon International – Carlsbad, CA – Computer Scientist
Data visualization and kernel processes for a distributed very-high-dimension complexity solving tool,
using Agile Development, Linux and Python.
Chain Code – suite of graphics tools to render the harmonics of chain-codes applied to 2D pattern
recognition. BLT, Python
Entity Editor – canvas to display the nodes, connections and activities between elements of the
complexity solving tool. Editing the nodes programmed the tool. GraphViz, Python,
Tkinter
Graph Quantizer – canvases and math algorithms to represent graphs (nodes & edges), and
animate advanced algorithms processing them. GraphViz, Python, Tkinter
NumGram – canvas to render and edit the mathematical operations of a pattern-matching tool.
BLT, Python, Tkinter
NumGram Movies – experimental movies depicting histograms of mathematical results as
animations of mountain range fly-bys. Python, POVray
Zhegalkin Polynomials – tutored the Russian astrophysicist Marina Murzina to use Test Driven
Development and write a Python program to manipulate binary polynomials and process
them with a suite of Boolean operations. BLT, Python
2001 – Flea – Free Software
Fractal generator. Users write turtle graphics using a miniature language. Ruby code interprets the turtle
commands and outputs a stream of 3d object primitives. Pluggable back-ends convert these primitives into
commands to a rendering tool, such as GTK, OpenGL, POVray, VRML, etc. Project used pure Test
Driven Development.
1999 – 2000 – Spherion – Irvine, CA – Software Consultant
Consultant to Odetics (now DTGTV; video tape library robotics using Win32, VC++), and to
Firstsource.com (B2B e-commerce using Win32, VC++ and SQL Server).
AIRO Automation System – debugged & cleaned up the build process for >1 million lines of
C++
Data Export Tool – GUI, back-end, and task scheduler for a tool to convert any of an arbitrary set
of views into a database into custom formatted comma-separated value text files, for
regular export to other companies’ data portals. ASP, COM, HTML, JavaScript, MFC,
MS Task Scheduler, MySQL, SQL Server, Test Driven Development
1998 – 1999 – Environmental Software – Huntington Beach, CA – Senior Software
Engineer
Data visualization, maps, and contour plots for a database of environmental quality samples taken at a
customer's site. Win32, Visual Basic, VC++, SQL Server
Data Importer – system to import any database of geographically distributed soil sample analysis
results, of any schema, process the intermediate version to clean and sanitize it, and bulkimport the result into EnvSoft’s proprietary database. VB, SQL Server
Surface Maps – ported FORTRAN contour plotting algorithms to C, wrapped them into an OCX
control, painted this onto Visual Basic forms, and added controls to configure dozens of
math coefficients. Rendered map outputs into portable formats, and display these on
overlays of aerial photographs. Thorough documentation, including the math routines
involved. ATL, DocJet, f2c, GDI, GIS, MFC, C, VB6
1998 – 1998 – Politizen.com – Culver City, CA – Webmaster & Software Engineer
Authored & deployed a Web site containing an e-mail portal, ZIP-code database, discussion forums, and a
Wiki. ASP, HTML, JScript, SQL Server, VBScript
1998 – 1998 – NBC Digital Productions – Burbank, CA – Software Engineer
Temporary job upgrading the login to the Pretender game site. ASP, HTML, SQL Server, VBScript
1989 – 1998 – Jon Goldman Associates – Anaheim, CA – Chief Software Architect
Process management systems for the semiconductor industry. Read data from various industry tools; graph
it, and analyze it for trends. OS/2, Win32, Visual Basic, VC++
Applied Materials Recipe Verifier – Intercept Semiconductor Equipment Communication
Standard messages between a cell-controller and an AMATS plasma furnace; verify the
Recipes in these messages so all fields fall within specification limits. RS232c, VB
BayView – Tool status viewer, permitting engineers outside the semiconductor fab to see at a
glance what any set of dissimilar tools are doing in real time. The status viewer presents a
(tool type-specific) icon if the tool is in process, and another if it is idle. Next to each icon
is a set of vital statistics, such as the Recipe name and time into the run. If the SPC
software reports an alarm, the status viewer instantly displays it as a blinking yellow icon.
Developed both a TCP/IP client-server protocol and a database format to carry
generic process data live from a tool monitor to a status viewer. Wrote ActiveX controls
to interpret the protocol and output records, but not to handle the low-level TCP/IP
sockets. Our VB programmers send data from off-the-shelf TCP/IP controls into my
controls; this simplifies my controls and lets us mix and match the objects.
The status viewer is a colorful Visual Basic form with apparently no user interface at
all - no menus and almost no keystrokes. It reads a list of programs from an INI file. Then
it displays a toolbar with an icon for each program. You select a tool and hit the toolbar,
and the program launches the program with the tool's name or other info in its command
line. The first program we add to the INI file displays the current process as a graph. VB,
TCP/IP, proprietary database & network protocols
Grapher – JGA's primary graphic process viewer. LabViews-based tool to display the data
signals captured from one operation of an arbitrary semiconductor tool. The program
stacks all the signals from one or more processes in horizontal strips, synchronizes them
in time, zooms and pans, turns lines or strips on and off, presents raw data in a little
report, etc. Our installers program which lines to display in what strips with a single,
central, non-tool-specific INI file of less than 100 lines. Design Patterns, STL, VC++
Ion Implanter Monitor – for Cypress Semiconductor. Monitor an Eaton Ion Implanter using
GEM communication. Verify entered recipe and lot numbers against the customer's
Sybase workflow database. Collect process information into historical files and display it
as graphs, and log all operator interactions. Borland C++, OS/2 Presentation Manager
Net9000 – VT-220 terminal emulator to place a Graphical User Interface between the user and the
character-mode interface of the Thermco Furnace MUX-9000 controller. Users hit our
buttons, and our Virtual User drives the controller's user interface. The program
maintains a database of Thermco Recipes, presents these in a full-featured source code
browser. Recipes can transfer over a network between furnaces, and users can drive a
furnace's terminal remotely.
Parsed the 'recipe' command language for Thermco Vapor Deposition Furnaces, to
present a hierarchy chart of the subroutine calls. Thermco writes their recipes in a
language like old-fashioned BASIC, with GOSUB calls. This, plus their queasy user
interface, makes the recipes too easy to write and absurdly difficult to read. The first
thing our program does is expand all subroutines into a call tree and put every line in
order. Think of it as a source code browser for recipes. Simulated recipe action in
Schemes. Borland C++, OS/2 Presentation Manager
Novellus Monitor – interpret the Semiconductor Equipment Communication Standard protocol
emitted by a Novellus semiconductor furnace; sample its data while it runs, and relay the
customer’s workflow commands into it. Borland C++, OS/2 Presentation Manager
Recipe Editor – download, interpret, and graphically render the sequence of commands in a
Thermco furnace controller recipe. Edit, store, browse, and upload recipes. VB
Schemes – render any database contents, or live data, as a customized animated map representing
the pipes and control signals inside a furnace’s Mass Flow Controller system. OS/2,
Presentation Manager, proprietary language
SPEEDFAM Material Handling Monitor – Record wafer film thickness before and after
polishing. Display thickness trends over many runs. Schedule wafers from various lots
for test, production and touchup polishing. VB
TEL Data Capture – interpret the GEM emitted by a Tokyo Electron Limited vapor deposition
furnace & store its run information to our proprietary database. Borland C++, OS/2
Terminal – VT-52 terminal emulator to present RS232c output from the Thermco Furnace, with
hand-made character mode windows, menus, configurable charts and context-sensitive
help.
Thermo Data Capture – interpret the VT52 output of a Thermco furnace; store run information
in our database. Borland C++, OS/2, Oracle
TrendViewer 2000 – database and GUI to collate and display Statistical Process Control trends in
the behavior of individual components of semiconductor furnaces. VB, LabViews,
VC++, SQL Server
1988 – 1989 Digisoft – Anaheim CA – Programmer
Inventory database for seafood warehouses, using CET BASIC, ISAM, & XENIX. Wrote a library of
character-based input-output routines for a large database system, to make each module of the system
consistent, user-friendly, and automatically upgradable. At the time, CET BASIC did not have a real userinterface library of its own.
1988-90 – Orange Coast College – Costa Mesa, CA
Introduction to (1980's versions of) databases, programming languages, and techniques.
1987 – Bucks County Community College – Newton, PA
Trigonometry & Calculus.
1982-6 – Tyler School of Art – Elkins Park, PA
Painting, drawing, drafting, cartooning, performance art, and AmigaBASIC.
Writing
Acknowledged by the books…







Agile Software Development: Principles Practices & Patterns by Robert C. Martin
Extreme Programming Installed by Ron Jeffries
Programming Cocoa with Ruby by Brian Marick
Test Driven Development: By Example by Kent Beck
Unit Test Frameworks by Paul Hamill
User Stories Applied: for Agile Software Development by Mike Cohn
Working Effectively with Legacy Code by Michael Feathers
Lecturing
Test First User Interfaces
Test Driven Development
Test First User Interfaces
Refactoring Demo
27
8
4
2
July
April
Sept
Oct
2004
2004
2003
2002
XP/Southern California
XP/San Diego
XP/San Diego
XP/San Diego
2003 – 2005 – Test First User Interfaces
A tutorial on Test Driven Development to create advanced Graphical User Interfaces. The book extends
the Test Driven Development concept into GUIs, demonstrating tests, written at the same time as the
source code, aggressively resisting bugs and preventing the need to operate a debugger. This lifecycle
allows simple design principles to emerge into advanced and flexible object models, by avoiding GUI
development's notorious fragility. The book presents the complete source history of these advanced
projects:
SVG Canvas – Combining Ruby, Tk, XML, XPath and GraphViz Test-Driven Development to
display graphs in a canvas.
Family Tree – Extending the previous case study to add interactive editing.
NanoCppUnit – A tiny Visual C++ test rig that address the hardest issues of COM, WTL, and
MSXML.
Model View Controller – Extend the previous case study to use TDD and Refactoring to grow a
data entry program with a clean, layered, and decoupled architecture.
Broadband Feedback – Extend the previous case study to use TDD and ImageMagick to
constrain low-level GDI graphics, localization & internationalization, and animation.
Embedded GNU-C++ Mophun™ Games – A tiny game for color cell phones.
The Web – Writing tests that constrain Web projects, using Internet Explore's DOM layer thru
COM, HttpUnit with Java, and WebUnit with Ruby. Writing a Web server, in Ruby, that
constrains Agile projects using an Acceptance Test Framework comparable to
http://fitnesse.org/
SKILLS
Languages
C++
years
11
C language
Visual Basic
Ruby
JavaScript
Python
Perl
Systems
MS Windows
SQL
STL
TCP/IP
HTML
ActiveX / OLE / COM
GNU
Linux
MFC
AmigaDOS
Tk
ASP
WTL
XML
XSLT
MSI
Unicode
Gnome
KDE
Mophun
Techniques
User Interface Theory
Object Oriented Programming
Design Patterns
Test Driven Development
Extreme Programming
Statistical Process Control
6
6
4
4
2
2
13
10
10
10
8
6
6
5
4
4
3
3
1
1
1
1
1
14
10
7
5
3
2
References

employers
o

Kent Beck – [email protected]
Dave Geving – [email protected] – (h)619-442-9337 (c)619-249-2310
Llewellyn Falco – [email protected] – (858) 336-6560
Paul Petralia – [email protected] – 201-236-7997
Paul Treece – 562 592 7608
colleagues
o
Ben Kovitz – [email protected] – 858 488 2052
Jim Shore – [email protected]
John Sarkela – [email protected]