I support high quality and responsive
process. I keep you in the driver's seat, and give you a system that you can steer accurately towards business goals. I
have worked in many industries and solved every kind of technical problem imaginable, from inventing languages to
debugging embedded hardware, using adaptive planning and sustainable, disciplined techniques that hold value and enable
teamwork.
Communication
Mentoring, artificial intelligence, scientific visualization,
user-interface design, public speaking, complexity theory, technical writing,
maintenance, process diagnosis & treatment, and high-end games.
Maintain a Redmine project management database in
Ruby on Rails 4.2, using MySQL and
jQuery,
administrating an advanced Jabber XMPP network, with
REST and OAuth2 links to Intuit Quickbooks,
Zoho CRM, and Stripe payment gateway.
Build and maintain a Django & jQuery registry of surfboards, categorized by their designs.
Use pure TDD to write an Android applet that uploads data through Bluetooth, to a Django website, and stores it on our server. The applet stores user
login information in system preferences, and tracks the downloads and uploads with progress bars.
Recover and extend a Ruby on Rails website maintaining a gallery of videos, in various formats, uploaded to
Amazon S3. Apply Test-Driven Development to preserve flexibility & resist bugs against frequent
design changes. Add HTML5 features to user interface via jQuery.
Python(x,y), Qt4,
C++, and Arduino firmware, on MS Windows.
CEI builds automated
optical inspection and X-ray inspection tools for the PCB industry.
Introduced advanced Test-Driven Development,
including tests on elaborate user interfaces, and on complex math.
I finished their HAWK component tape inspection system; created
the entire look and usability of the user interface, integrated its
microscope, programmed the reel controllers, invented a file-system
database to hold output images and details, analyzed each image
in realtime, and wrote the results to an elaborate HTML report.
And I completely rebuilt the look and usability for their flagship
TruView X-Ray automated inspection system, including the industry's
first automated inspection based on Gerber PCB definition files.
Ruby on Rails webmaster; a complete
technician dispatch system with e-mail notifications & document
uploads, for Team Uptime.
Django with
JavaScript Closure,
on a website to coordinate and schedule infrastructure
development projects for a global internet content &
backbone provider, for eTouch.
Architect, from scratch, Python UWSGI servers
to manage CMS content, for iPad e-learning, and report on examination questions, for 4th
Down Software, with XML +
MongoDB.
All these projects use Linux
Advanced Ruby on Rails back-end operations, to interpret Google Analytics results that
rank each user's resume in our system, and to email registered recruiters batches of resumes that match their search
criteria.
Advanced Ruby on Rails, targeting multiple server clusters, using Ajax, raw JavaScript, advanced CSS, and
MySQL, for e-commerce, including merchant accounts, security, authentication, and
scrubbing data. Pure XP with pair programming, TDD, continuous integration, and CruiseControl.
These sites incubated my assert{ 2.0 } project, a competitor to RSpec
that turns any statement into a detailed assertion; assert_xhtml,
which tests HTML by example, and
assert_rjs_, an upgrade to
assert_rjs, providing more accurate results.
Retrofit cross-platform tests for a C++ server that parses and filters various Instant Messaging protocols.
Researched and architected the kernel of a new platform, using CORBA (ACE/TAO/CIAO
libraries) on Linux.
Building an integration test server
for DarkWatch, using MiniRubyWiki to host acceptance test scripts written in Lua, applying
the "Broadband Feedback" principle. Used
Test-Driven Development to write test scripts in Ruby and Perl,
via GNU, CygWin, and XML, to generate HTML reports. Tested Maya, Renderware, Havok, Xbox, PS2, etc.
TDD, OO, HTML, refactoring, tracking,
and acceptance tests. HTMLCSS, Servlets, and the persistence
layer of a turnkey order-entry appliance, using Java, Linux, MySQL, Apache & Tomcat, targeting small businesses.
Introduced software product lines, daily builds, and automated tests to stabilize and localize their desktop
product line, written via TDD in VB and WTL, linked by ActiveX to custom MS Office and Internet Explorer toolbars. Lead the Logitech Toolbar effort. Custom HTTP "web services"
transport layers. Advanced XML and XSLT, and advanced internationalization techniques, and build scripts in Perl working on both Linux and MS Windows. Automatically configurable, multi-lingual MSI
installers.
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-8859-7, 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
A Wiki tuned for personal & project use, with many advanced features - embedded GraphViz, user-defined markup
tags, etc. - and providing the most correct Wiki interface features possible under pure XHTML. Works on both Linux and MS Windows.
Written via pure TDD, tested with Watir, and now in use at many private sites, including PDAs.
Helped develop hDx, a topology-based pattern-recognition system aimed at reducing combinatorially explosive
problems to low computational complexity. Worked on fragment-assembly application comparable to Phred/Phrap to
demonstrate the system’s applicability to bioinformatics. Data visualization and kernel processes, using Agile
Development, TDD, Linux, Python, PostgreSQL, GraphViz, Qt, and Tk.
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
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, with acceptance test outputs in HTML. Works on both
Linux and MS Windows
Consultant to Odetics (now DTGTV); video tape library robotics using Win32, ActiveX,
TDD in VC++ with MFC on MS
Windows.
Consultant to Firstsource.com for B2B HTML e-commerce using TDD, ASP, Win32 SDK, VC++, MFC, VB and
SQL Server, on MS Windows.
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
Data visualization, maps, and contour plots for a database of environmental quality samples taken at a customer's
site. OO designs in Visual Basic, custom ActiveX with MFC &
OLE, and 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 bulk-import 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
Authored & deployed a Web site containing an e-mail portal, ZIP-code database,
discussion forums, and a Wiki, written in ASP with an SQL Server back-end.
Process management systems for the semiconductor industry. Read data from various industry tools; graph it, and
analyze it for trends, to provide Statistical Process Control.
Complete project lifecycles with OO designs in C and VC++ with STL, custom COM (ActiveX)
controls using MFC and ATL, GUIs in Visual Basic, TCP/IP transport layers, data layers in
ADO & ODBC, and complete SQL Server databases on MS
Windows.
All my generic libraries are still in use and being extended.
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