Company:

Oracle

Location:

California, USA

Work Location:

Nelson, New Zealand

Dates:

08/2016 - 12/2016

Role:

Software Engineering Consultant

Technologies: Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS

Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS

Tasks: Mobile and web development.

Mobile and web development.

Company:

Oracle

Location:

California, USA

Work Location:

Nelson, New Zealand

Dates:

03/2016 - 06/2016

Role:

Software Engineering Consultant

Technologies: Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS

Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS

Tasks: Using Oracle ADF, wrote components for Oracle's online learning application.

Using Oracle ADF, wrote components for Oracle's online learning application.

Company:

Oracle

Location:

California, USA

Work Location:

Nelson, New Zealand

Dates:

11/2013 - 09/2015

Role:

Software Engineering Consultant

Technologies: Java, JavaScript, jQuery, HTML, XML, CSS, JSON, JDeveloper, Oracle ADF Mobile, MAF, iOS, Android, GitHub, Vim, Bash, Mac OS

Java, JavaScript, jQuery, HTML, XML, CSS, JSON, JDeveloper, Oracle ADF Mobile, MAF, iOS, Android, GitHub, Vim, Bash, Mac OS

Tasks: Using Oracle ADF Mobile, helped write a mobile app for iOS and Android devices which creates itself dynamically based on data from data controls and Java beans.

Using Oracle ADF Mobile, helped write a mobile app for iOS and Android devices which creates itself dynamically based on data from data controls and Java beans. The app dynamically assembles AMX pages and fragments based on JSON files that contain the data to be displayed and also describe the GUI to be used. (I.e. the data tells the app which GUI templates to use to display the data.)
Using Oracle ADF, wrote an almost identical web app that runs on WebLogic and is displayed in web browsers.
Wrote multiple, highly interactive and responsive custom controls for mobile devices. This was for a SPA (Single Page Application) that includes Oracle ADF custom controls much the same way you include custom components in AngularJS.

Company:

RGB Networks

Location:

Sunnyvale, California, USA

Dates:

06/2013 - 09/2013

Role:

Software Engineering Consultant

Technologies: Java, JDK1.5, JDK1.6 and JDK1.7, Swing, Eclipse, Perforce

Java, JDK1.5, JDK1.6 and JDK1.7, Swing, Eclipse, Perforce

Tasks: Added features to, and fixed bugs in, their BNP (Broadcast Network Processor) and VMG (Video Multiprocessing Gateway) products.

Added features to, and fixed bugs in, their BNP (Broadcast Network Processor) and VMG (Video Multiprocessing Gateway) products. (These products are used to do transcoding and high-density digital video processing.)
Development work involved creating and/or modifying Swing components such as modal and non-modal JDialogs, JFrames, JTextFields, JComboBoxes and JTrees. Implemented features such as drag-and-drop on JTrees and added new components/functionality to existing dialogs.
Debugged/rewrote much of the existing code that used SwingWorker and background threads incorrectly with respect to the Swing EDT (Event Dispatch Thread). Debugged and wrote test cases to track down problems in the server-side code and XML-RPC layer that the Swing GUI used to communicate with the servers running on the video processing hardware.

Company:

Diginome Inc

Location:

San Francisco, California, USA

Work Location:

Nelson, New Zealand

Dates:

09/2012 - 09/2012

Role:

Software Engineering Consultant

Technologies: Java, JDK1.6 and JDK1.7, Swing, JFreeChart, Glazed Lists

Java, JDK1.6 and JDK1.7, Swing, JFreeChart, Glazed Lists

Tasks: Developed a simple prototype GUI for Oracle OpenWorld 2012 to help demonstrate how Diginome's DataDNA Software was used to verify business transactions, (and find "missing" money), for the Chicago Transit Authority.

Developed a simple prototype GUI for Oracle OpenWorld 2012 to help demonstrate how Diginome's DataDNA Software was used to verify business transactions, (and find "missing" money), for the Chicago Transit Authority. The GUI allowed the person giving the demo to easily read/edit/write data files in preparation for the talk. The same GUI could also be used for the actual demo at the conference, and had an iTunes-like sorting and filtering interface.

Company:

Physion Consulting LLC

Location:

Cambridge, Massachusetts

Work Location:

Nelson, New Zealand

Dates:

09/2011 - 01/2012

Role:

Software Engineering Consultant

Technologies: Java, JDK1.6, Swing

Java, JDK1.6, Swing

Tasks: Developed a cross-platform graphical query builder to edit predicate expressions.

Developed a cross-platform graphical query builder to edit predicate expressions. The GUI allowed users who are not proficient at writing textual queries to create query expression trees easily. The GUI was designed in such a way as to make it easy to create complicated legal expressions and difficult to create illegal expressions.

Company:

Gridata, Inc

Location:

Santa Cruz, California

Work Location:

Santa Cruz, California and Nelson, New Zealand

Dates:

09/2010 - 05/2011

Role:

Software Engineering Consultant

Technologies: C++, using Qt, on Ubuntu and MeeGo.

C++, using Qt, on Ubuntu and MeeGo.

Tasks: Helped write software to manage data and application communication of a "smart" home energy system.

Helped write software to manage data and application communication of a "smart" home energy system. Applications communicate using QDBus / D-Bus, sending Qt data values such as QString, QVariantList, QVariantMap. Wrote a test driver for the system that uses XML input files to drive the commands that are executed and to compare against expected results. Input XML syntax allows for the storing and retrieval of values, looping, logging and other minimal language-like features.

Company:

Terative, Inc

Location:

Boston, Massachusetts

Work Location:

Nelson, New Zealand

Dates:

02/2010 - 03/2010

Role:

Software Engineering Consultant

Technologies: Java JDK1.6 and Swing, with Eclipse3.5

Java JDK1.6 and Swing, with Eclipse3.5

Tasks: Implemented a new Swing L&F (Look And Feel) and some custom widgets/components for an existing network management application.

Implemented a new Swing L&F (Look And Feel) and some custom widgets/components for an existing network management application.

Company:

Opsware, Inc

Location:

Sunnyvale, California

Dates:

03/2007 - 06/2007

Role:

Software Engineering Consultant

Technologies: Java, Swing, JGoodies, and JIDE widgets

Java, Swing, JGoodies, and JIDE widgets

Tasks: Helped develop a small part of the GUIs for their SAS (Server Automation System) product.

Helped develop a small part of the GUIs for their SAS (Server Automation System) product. The SAS application is used to manage software and operating systems on large numbers of distributed remote devices.

Company:

EWT, LLC

Location:

Beverly Hills, California

Dates:

11/2004 - 05/2006

Role:

Software Engineering Consultant

Technologies: Java, Swing, Linux, Windows, Cygwin

Java, Swing, Linux, Windows, Cygwin

Tasks: Rapidly prototyped and developed many different highly customized GUIs to control proprietary high frequency trading strategies.

Rapidly prototyped and developed many different highly customized GUIs to control proprietary high frequency trading strategies. Financial instrument information displayed included: Bond prices/yields/spreads, Option positions and quotes, Spreads, Swaps, Currencies, FX, etc. Work was done using Java and Swing.
Wrote a set of GUI components and layout managers with unique resizing behavior that allowed the same GUI to work on a tiny PDA screen or a huge plasma screen. Work was done using Java and Swing.
Wrote a completely customizable trading GUI that allowed the user to create a GUI by adding, removing, and customizing individual components almost like a generic GUI builder works.
Wrote a tablet computer based GUI that replaced traditional "pitcards". This GUI is now used by the company's traders on the floor of the New York Mercantile Exchange.
(EWT and Madison Tyler were different parts of the same organization, which became Virtu Financial.)

Company:

Madison Tyler, LLC

Location:

Beverly Hills, California

Dates:

11/2004 - 05/2006

Role:

Software Engineering Consultant

Technologies: Java, Swing, Linux, Windows, Cygwin

Java, Swing, Linux, Windows, Cygwin

Tasks: Rapidly prototyped and developed many different highly customized GUIs to control proprietary high frequency trading strategies.

Rapidly prototyped and developed many different highly customized GUIs to control proprietary high frequency trading strategies. Financial instrument information displayed included: Bond prices/yields/spreads, Option positions and quotes, Spreads, Swaps, Currencies, FX, etc. Work was done using Java and Swing.
Wrote a set of GUI components and layout managers with unique resizing behavior that allowed the same GUI to work on a tiny PDA screen or a huge plasma screen. Work was done using Java and Swing.
Wrote a completely customizable trading GUI that allowed the user to create a GUI by adding, removing, and customizing individual components almost like a generic GUI builder works.
Wrote a tablet computer based GUI that replaced traditional "pitcards". This GUI is now used by the company's traders on the floor of the New York Mercantile Exchange.
(EWT and Madison Tyler were different parts of the same organization, which became Virtu Financial.)

Company:

Tapestry

Location:

Santa Cruz, California

Work Location:

Truckee, California

Dates:

07/2004 - 08/2004

Role:

Software Engineering Consultant

Technologies: Drupal, PHP

Drupal, PHP

Tasks: Wrote PHP modules to do SEO (Search Engine Optimization) of web pages on the Developers.net website.

Wrote PHP modules to do SEO (Search Engine Optimization) of web pages on the Developers.net website. The modules were written in PHP and used the Drupal platform and content management system. The SEO modules allowed the editing and dynamic insertion of SEO text to be separated from the administrative tasks of creating and maintaining the Developers.net website.

Company:

AltoWeb

Location:

Sunnyvale, California

Work Location:

Santa Cruz, California

Dates:

11/2000 - 02/2002

Role:

Software Engineering Consultant

Technologies: Java, Swing, Ant, Linux, Windows, Cygwin

Java, Swing, Ant, Linux, Windows, Cygwin

Tasks: Wrote a Swing application that manages application server property/configuration files for WebLogic, JBoss, and the AltoServer EJBs.

Wrote a Swing application that manages application server property/configuration files for WebLogic, JBoss, and the AltoServer EJBs. Work involved writing GUI utilities to simplify development and using JDOM to manipulate XML files.
Reviewed current AltoStudio GUI for JSP page editing, gathered feedback, and wrote documents and GUI mockups for AltoStudio 2.5. (AltoStudio is an IDE for creating J2EE web applications.)
Documented design of AltoStudio 3.0. Created GUI mockups for design and use-case documents.

Company:

Lutris Technologies

Location:

Santa Cruz, California

Dates:

12/1999 - 04/2000

Role:

Software Engineering Consultant

Technologies: Java, AWT, Swing, Linux

Java, AWT, Swing, Linux

Tasks: Helped design and develop two web applications/applets for doing network monitoring and management for Manage.com and Peakstone.

Helped design and develop two web applications/applets for doing network monitoring and management for Manage.com and Peakstone. Wrote highly customized, very graphical, applet control panels for both web applications using AWT. Wrote a server side graphing package based on the KLG toolkit.

Company:

eMedius

Location:

Capitola, California

Dates:

10/1998 - 12/1999

Role:

Software Engineering Consultant

Technologies: None

None

Tasks: Wrote the technical portion of the company's business plan. Helped the two non-technical founders pitch the idea to venture capitalists. We got eMedius its first two million dollars of funding, and got eMedius accepted into Garage.com.

Wrote the technical portion of the company's business plan. Helped the two non-technical founders pitch the idea to venture capitalists. We got eMedius its first two million dollars of funding, and got eMedius accepted into Garage.com.

Company:

Lutris Technologies

Location:

Santa Cruz, California

Dates:

09/1998 - 09/1999

Role:

Senior Software Engineer

Technologies: Java, AWT, Swing, Linux

Java, AWT, Swing, Linux

Tasks: Helped design and develop a Java application for Kinko's called ScanToWeb that lets their branches scan in customer photographs and host them on the web.

Helped design and develop a Java application for Kinko's called ScanToWeb that lets their branches scan in customer photographs and host them on the web.
Helped design and develop a Java application for Kinko's called PerfectBind that lets their branches bind paperback books. The application used a simple animation to help the Kinko's worker visualize how the customer's document would be scaled to fit the available paper and cover sizes using different printing techniques.
Designed and helped develop a Java GUI for AmplifyNet's iSurfRanger bandwidth management product. The GUI was based on JDK1.2 and JFC/Swing.
Designed and helped develop a Java program to monitor Kinko's branch orders submitted via email. The highly configurable system nagged branches at different intervals about unread email using a voice mail system. Almost Orwellian.

Company:

Hewlett Packard NetMetrix Division

Location:

Palo Alto, California

Dates:

06/1997 - 06/1998

Role:

Software Engineering Consultant

Technologies: Java, Swing, HP-UX, Unix

Java, Swing, HP-UX, Unix

Tasks: Developed a Java graphing package used to display network metrics.

Developed a Java graphing package used to display network metrics. The graphing package was based on KLG's JClass Chart toolkit, JDK1.1, and JFC/Swing.
Developed a scripting test bed for regression testing of the graphing package within different browser and JDK environments. Test bed could be run as a standalone application or as an applet that used RMI.
Investigated and wrote test code for Java based client/server communication using Serialization, RMI, Sockets, and JNI.
Ported a Motif graphing library to Java and made it capable of displaying Japanese characters.

Company:

Xmedia Corporation

Location:

San Jose, California

Dates:

08/1997 - 08/1997

Role:

Software Engineering Consultant

Technologies: Windows 95, Windows NT

Windows 95, Windows NT

Tasks: Advised software developers on how to internationalize/localize a Microsoft Windows application under Windows 95 and Windows NT.

Advised software developers on how to internationalize/localize a Microsoft Windows application under Windows 95 and Windows NT.

Company:

Otsuka Pharmaceuticals

Location:

Palo Alto, California

Dates:

08/1997 - 08/1997

Role:

Software Engineering Consultant

Technologies: HTML

HTML

Tasks: Advised Oncology Product Development group on website and collaborative document issues.

Advised Oncology Product Development group on website and collaborative document issues. Developed part of Oncology Product Development's website which included monthly reports, project schedules, team member and study site contact lists, useful bookmarks, employee photos, and site maps.

Company:

Delivering The Goods

Location:

San Jose, California

Dates:

11/1996 - 05/1997

Role:

Software Engineer

Technologies: Java, Swing, Windows, Cygwin

Java, Swing, Windows, Cygwin

Tasks: Helped design and develop an Internet based supply chain application.

Helped design and develop an Internet based supply chain application. Designed the GUI and developed it using Java, Netscape's IFC (Internet Foundation Class) toolkit, and Microline's View Toolkit. The entire application made heavy use of threads and Tibco's Rendezvous for asynchronous communication using publish/subscribe techniques.

Company:

Network General

Location:

Mountain View, California

Dates:

06/1996 - 08/1996

Role:

Software Engineering Consultant

Technologies: Java 1.0.2, AWT, Visualize Toolkit, Microline Component Toolkit

Java 1.0.2, AWT, Visualize Toolkit, Microline Component Toolkit

Tasks: Developed a prototype GUI for an application that will let Internet Service Providers and Web Content Providers identify and diagnose service problems on the Internet.

Developed a prototype GUI for an application that will let Internet Service Providers and Web Content Providers identify and diagnose service problems on the Internet. The GUI was written entirely in Java using JDK1.0.2, the Java AWT, Visualize Toolkit, and Microline Component Toolkit. Work was done offsite using the Internet and a laptop with a Ricochet radio modem. (Very 90's, yes?)

Company:

Hewlett Packard Scientific Instruments Division

Location:

Mountain View, California

Dates:

02/1995 - 07/1996

Role:

Software Engineering Consultant

Technologies: Java 1.0, Java 1.0.1, Windows MFC, Windows OCX, Visual Basic, Windows NT, Windows 95, Windows 3.1

Java 1.0, Java 1.0.1, Windows MFC, Windows OCX, Visual Basic, Windows NT, Windows 95, Windows 3.1

Tasks: Wrote a thread manager and thread tester to debug Java threads and synchronized methods using JDK1.0 and JDK1.0.1.

Wrote a thread manager and thread tester to debug Java threads and synchronized methods using JDK1.0 and JDK1.0.1. Helped develop an OCX (OLE Control) which would allow Visual Basic applications to display and control a "LIMS" application used for environmental and drug testing. The OCX was a complete MFC application on its own, and had a Document/Frame/View architecture. The entire product consisted of a set of Visual Basic panels as the primary GUI, and the "invisible at runtime" OCXs used by the Visual Basic application. Most of the development I did was on WindowsNT 3.51 and 4.0, with a little under Windows 3.1 and Windows95. Prototyped an RPC interface to a UNIX/Oracle/Motif application so that it could be controlled by Microsoft Windows applications.

Company:

Seagull Technology, Inc.

Location:

Cupertino, California

Dates:

11/1993 - 11/1995

Role:

Software Engineering Consultant

Technologies: C++, X Window, Motif, Unix, Windows

C++, X Window, Motif, Unix, Windows

Tasks: Designed and developed a GUI and a library of Motif/C++ and database objects used to create/edit an airline waypoint and route database.

Designed and developed a GUI and a library of Motif/C++ and database objects used to create/edit an airline waypoint and route database.
Wrote a crude prototype object-oriented database to be used for demonstrating the GUI to the FAA.
Restructured existing ground to airplane GUI code to make it more object-oriented, and changed panel layout to make it more user-friendly.
Designed and developed a prototype GUI for a multi-state real estate database conversion program.
Helped Seagull engineer track down and fix a memory corruption bug and a memory leak in their software.

Company:

Hewlett Packard Scientific Instruments Division

Location:

Palo Alto, California

Dates:

11/1993 - 11/1995

Role:

Software Engineering Consultant

Technologies: C++, X Window, Motif, Unix, Windows

C++, X Window, Motif, Unix, Windows

Tasks: Designed and developed a Motif based object-oriented GUI toolkit in C++ for use by other engineers to ease GUI development and enforce a consistent look and feel over many products.

Designed and developed a Motif based object-oriented GUI toolkit in C++ for use by other engineers to ease GUI development and enforce a consistent look and feel over many products. The toolkit contained standard field classes such as integers, floats, strings, toggle buttons, menus, lists, and tables. It also contained various panel classes in which the engineer would put these fields. The panels contained error/status and help lines, and a set of standard buttons with default actions. The field objects had error checking callbacks built-in, and would automatically display error messages when the user tried to enter or "OK" an illegal value. Each field had a customizable help message that was displayed as the field got the focus or as the user moved the mouse over the field. The toolkit has some really slick features.
Helped design, prototype, and develop a large Motif and Oracle based object-oriented application to manage drug stability testing using my toolkit in C++.

Company:

Sun Microsystems Software Engineering Tools Division

Location:

Mountain View, California

Dates:

06/1990 - 11/1991

Role:

Software Engineering Consultant and Employee

Technologies: C++, Ada, X Window, XView, Unix

C++, Ada, X Window, XView, Unix

Tasks: Designed and developed a crude object-oriented prototype of a Data Inspector in C++ and XView.

Designed and developed a crude object-oriented prototype of a Data Inspector in C++ and XView. (A Data Inspector is a GUI used for looking at data and its relationships with other data. e.g. A structure that is part of a linked list.)
Wrote requirements documents for the debugger's GUI and the language it would use to communicate with the underlying debugger. Led weekly meetings to gather input and reach consensus on these documents.
Helped design and develop a small part of the graphical user interface for SPARCworks2.0's C, C++, and FORTRAN debugger "dbxtool".
Tested, and wrote small multi-tasking Ada test programs for, the SPARCworks Ada programming environment's debugger.

Company:

Hewlett Packard Scientific Instruments Division

Location:

Palo Alto, California

Dates:

08/1989 - 06/1990

Role:

Software Engineering Consultant

Technologies: C, HP-UX, X Window

C, HP-UX, X Window

Tasks: Ported from X10 to X11 and debugged: a large plotting package used for chemical analysis, and HP's Xray widget/gadget set, the Xray GUI builder.

Ported from X10 to X11 and debugged: a large plotting package used for chemical analysis, and HP's Xray widget/gadget set, the Xray GUI builder.
Wrote window manager communication routines so panels would work with the window manager intelligently.
Developed a tool for monitoring and debugging memory allocation.

Company:

Crucible - Sun Microsystems, Visual Engineering

Location:

Santa Cruz, California

Dates:

04/1989 - 08/1989

Role:

Software Engineering Consultant

Technologies: C, X Window, OpenLook, X11/NeWS, SunWindows, SunView

C, X Window, OpenLook, X11/NeWS, SunWindows, SunView

Tasks: Helped develop the OpenLook window manager for MIT's X11/R4 release.

Helped develop the OpenLook window manager for MIT's X11/R4 release. The OpenLook window manager is ICCCM compliant.
Converted Prior X11/GKS to work on X11/NeWS.
Ported VE's Visual:GKS from SunWindows to SunView.

Company:

The Santa Cruz Operation (SCO)

Location:

Santa Cruz, California

Dates:

05/1988 - 04/1989

Role:

Software Engineer, Project Lead

Technologies: C, X Window, Motif, Xenix, Sun NeWS

C, X Window, Motif, Xenix, Sun NeWS

Tasks: Oversaw engineering development and support of SCO's X11 product, Xsight.

Oversaw engineering development and support of SCO's X11 product, Xsight. (Xsight is the X server of Open Desktop.)
Oversaw integration of Locus's X11 server development with SCO's TCP/IP and Xenix to make Xsight. Responsible for tracking Xenix kernel bug fixes and TCP/IP bugfixes that affected Xsight, and for tracking bugfixes for Xsight itself.
Developed a set of tutorial programs to teach Xlibrary programming.
Gave classes and tutorials on the X Window System, Xlibrary programming, and programming using toolkits and widgets.
Ported the Dec widgets and HP widgets, and wrote example programs using these widgets and the HP window manager. (OSF's Motif is a combination of these.)
Worked trade shows to set up software for SCO and its OEMs, demonstrated Xsight to customers, and babysat alpha software.
Assisted Documentation group with release notes.
Ported Sun NeWS to Xenix's event driven mouse and keyboard driver.

Company:

ESL (Electromagnetic Systems Laboratories)

Location:

Sunnyvale, California, USA

Dates:

01/1986 - 04/1988

Role:

Research Engineer / Research Scientist

Technologies:

Unix, C, Pascal, VMS

Tasks: Researched and developed software for several projects in artificial intelligence, computer vision, graphics, and signal interpretation.

Researched and developed software for several projects in artificial intelligence, computer vision, graphics, and signal interpretation.
Developed fuzzy logic software to locate, extract, and describe features in photographs taken from aerospace vehicles.
Developed software to do signal segmentation, description, and identification using computer vision methods and linear and nonlinear neural net techniques.
Developed a plotting package and its GUI on Sun workstations using SunWindows, SunView, and an Ingress relational database. Developed software to do Kalman filtering of navigational data from devices such as GPS (Global Positioning System), INS (Inertial Navigation System), and LORAN (LOng-RAnge Navigation).