Company:
OracleLocation:
California, USAWork Location:
Nelson, New ZealandDates:
08/2016 - 12/2016Role:
Software Engineering ConsultantTechnologies:
Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS
Tasks:
Mobile and web development.
Company:
OracleLocation:
California, USAWork Location:
Nelson, New ZealandDates:
03/2016 - 06/2016Role:
Software Engineering ConsultantTechnologies:
Java, JavaScript, HTML, XML, CSS, JDeveloper, Oracle ADF, Mac OS
Tasks:
Using Oracle ADF, wrote components for Oracle's online learning application.
Company:
OracleLocation:
California, USAWork Location:
Nelson, New ZealandDates:
11/2013 - 09/2015Role:
Software Engineering ConsultantTechnologies:
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. 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 NetworksLocation:
Sunnyvale, California, USADates:
06/2013 - 09/2013Role:
Software Engineering ConsultantTechnologies:
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. (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 IncLocation:
San Francisco, California, USAWork Location:
Nelson, New ZealandDates:
09/2012 - 09/2012Role:
Software Engineering ConsultantTechnologies:
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. 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 LLCLocation:
Cambridge, MassachusettsWork Location:
Nelson, New ZealandDates:
09/2011 - 01/2012Role:
Software Engineering ConsultantTechnologies:
Java, JDK1.6, Swing
Tasks:
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, IncLocation:
Santa Cruz, CaliforniaWork Location:
Santa Cruz, California and Nelson, New ZealandDates:
09/2010 - 05/2011Role:
Software Engineering ConsultantTechnologies:
C++, using Qt, on Ubuntu and MeeGo.
Tasks:
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, IncLocation:
Boston, MassachusettsWork Location:
Nelson, New ZealandDates:
02/2010 - 03/2010Role:
Software Engineering ConsultantTechnologies:
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.
Company:
Opsware, IncLocation:
Sunnyvale, CaliforniaDates:
03/2007 - 06/2007Role:
Software Engineering ConsultantTechnologies:
Java, Swing, JGoodies, and JIDE widgets
Tasks:
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, LLCLocation:
Beverly Hills, CaliforniaDates:
11/2004 - 05/2006Role:
Software Engineering ConsultantTechnologies:
Java, Swing, Linux, Windows, Cygwin
Tasks:
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, LLCLocation:
Beverly Hills, CaliforniaDates:
11/2004 - 05/2006Role:
Software Engineering ConsultantTechnologies:
Java, Swing, Linux, Windows, Cygwin
Tasks:
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:
TapestryLocation:
Santa Cruz, CaliforniaWork Location:
Truckee, CaliforniaDates:
07/2004 - 08/2004Role:
Software Engineering ConsultantTechnologies:
Drupal, PHP
Tasks:
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:
AltoWebLocation:
Sunnyvale, CaliforniaWork Location:
Santa Cruz, CaliforniaDates:
11/2000 - 02/2002Role:
Software Engineering ConsultantTechnologies:
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. 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 TechnologiesLocation:
Santa Cruz, CaliforniaDates:
12/1999 - 04/2000Role:
Software Engineering ConsultantTechnologies:
Java, AWT, Swing, Linux
Tasks:
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:
eMediusLocation:
Capitola, CaliforniaDates:
10/1998 - 12/1999Role:
Software Engineering ConsultantTechnologies:
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.
Company:
Lutris TechnologiesLocation:
Santa Cruz, CaliforniaDates:
09/1998 - 09/1999Role:
Senior Software EngineerTechnologies:
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 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 DivisionLocation:
Palo Alto, CaliforniaDates:
06/1997 - 06/1998Role:
Software Engineering ConsultantTechnologies:
Java, Swing, HP-UX, Unix
Tasks:
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 CorporationLocation:
San Jose, CaliforniaDates:
08/1997 - 08/1997Role:
Software Engineering ConsultantTechnologies:
Windows 95, Windows NT
Tasks:
Advised software developers on how to internationalize/localize a Microsoft Windows application under Windows 95 and Windows NT.
Company:
Otsuka PharmaceuticalsLocation:
Palo Alto, CaliforniaDates:
08/1997 - 08/1997Role:
Software Engineering ConsultantTechnologies:
HTML
Tasks:
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 GoodsLocation:
San Jose, CaliforniaDates:
11/1996 - 05/1997Role:
Software EngineerTechnologies:
Java, Swing, Windows, Cygwin
Tasks:
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 GeneralLocation:
Mountain View, CaliforniaDates:
06/1996 - 08/1996Role:
Software Engineering ConsultantTechnologies:
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. 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 DivisionLocation:
Mountain View, CaliforniaDates:
02/1995 - 07/1996Role:
Software Engineering ConsultantTechnologies:
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.
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, CaliforniaDates:
11/1993 - 11/1995Role:
Software Engineering ConsultantTechnologies:
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.
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 DivisionLocation:
Palo Alto, CaliforniaDates:
11/1993 - 11/1995Role:
Software Engineering ConsultantTechnologies:
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.
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 DivisionLocation:
Mountain View, CaliforniaDates:
06/1990 - 11/1991Role:
Software Engineering Consultant and EmployeeTechnologies:
C++, Ada, X Window, XView, Unix
Tasks:
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 DivisionLocation:
Palo Alto, CaliforniaDates:
08/1989 - 06/1990Role:
Software Engineering ConsultantTechnologies:
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.
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 EngineeringLocation:
Santa Cruz, CaliforniaDates:
04/1989 - 08/1989Role:
Software Engineering ConsultantTechnologies:
C, X Window, OpenLook, X11/NeWS, SunWindows, SunView
Tasks:
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, CaliforniaDates:
05/1988 - 04/1989Role:
Software Engineer, Project LeadTechnologies:
C, X Window, Motif, Xenix, Sun NeWS
Tasks:
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, USADates:
01/1986 - 04/1988Role:
Research Engineer / Research ScientistTechnologies:
Unix, C, Pascal, VMSTasks:
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).