Lead Flight Software Engineer (consultant) Resume
Pittsburgh, PA
TECHNICAL SKILLS:
C++, C, C#, JAVA; other languages used include: JAVASCRIPT, Visual Basic, LISP Windows, .net framework for Windows, and UNIX / LINUX / AIX
C++: Microsoft Visual Studio 2015 (C++11) on Windows 7; TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS; gcc and g++ (C++11) on Ubuntu; gcc and g++ (C++11) on Centos; gcc and g++ on Red Hat Linux (cross compiler for Toshiba’s Linux CE); CodeWarrior from Metrowerks on Windows for VRTX; XLC on AIX (VisualAge C++ Professional / C for AIX Compiler, Version 6); Microsoft Visual C++ (MSVC 1.0 to MSVS 2015 (C++11)); g++ on Redhat Linux; Borland 5.5 on DOS; C++ (CFRONT) on ATT UNIX System V; MS C++ on MS DOS; Glockenspiel C++ on MS DOS; Glockenspiel C++ on ATT UNIX System V; gcc and g++ on MS Windows; gcc and g++ on MS DOS; C++ on HP - UX; C++ on AIX; C++ on Wang 42X; C++ on Wang VS; C++ on Apollo WS; C++ on Sun WS
C: Microsoft Visual Studio 2015 (C99) on Windows 7; TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS; XLC on AIX (VisualAge C++ Professional / C for AIX Compiler, Version 6); Microsoft Visual C (MSVC 1.0 to MSVS 2015); Borland 5.5 on DOS; MS C on MS DOS (MS DOS (all public releases) to MS DOS boxes on Windows 1.0 to Windows 7); CC on ATT UNIX System V; C on Berkley Unix; C on Wang 42X; Wang C for Wang VS; C for Wang WS; Mark Williams C
Miscellaneous: .NET Framework 4.6; TFS, SCRUM, ClearCase, XML, Coverity, Siebel, STL, Visual Studio, Metrowerks, Visual Source Safe, Perforce, Subversion, StarTeam, CruiseControl.NET, Embedded SQL (from C, C++, and C#), Oracle, DB2, InstallSheild, SDLC (software development life cycle), OOA, OOD, OOP, SQL for Oracle, TSQL for MS SQL Server, UDB for DB2 on AIX, .NET 4.6, boost in C++11
SOFTWARE ENGINEERING EXPERIENCE:
Lead Flight Software Engineer (Consultant)
Confidential, Pittsburgh, PA
Responsibilities:
- Helped design flight software to control a space robot (the Peregine Lander). Initial port (proof of concept) was done using C and C++ with TI’s Code Composer Studio 6.2.0.00050 for Ubuntu 14.04 LTS. We were porting Confidential ’s cFE (core flight executive) and OSAL (operating system abstraction layer) to run on freeRTOS on the TI Hercules RM57L843ZWT.
Software Engineer (Consultant)
Confidential, Fort Wayne, IN
Responsibilities:
- Design, development, and maintenance primarily in C++11 using MSVS 2015 for Windows 7 for a Common Battlefield Application Toolset (ComBAT) for the Confidential .
- Constructed white box units tests using the Google C++ Testing Framework (Google Test).
- Tools used included boost as part of C++11, Team Foundation Server, and Qt; work was done on Windows 7 using SCRUM.
Software Engineer
Confidential, Aston, PA
Responsibilities:
- Design, development, and maintenance primarily in C++11 for Ubuntu precise (12.04.5 LTS) for remote monitoring and control systems.
- Tools used include automake and g++ 4.6.
- Development was done thru putty for Windows 7 using SDLC.
Software Engineer (Consultant)
Confidential, East Syracuse, NY
Responsibilities:
- Design, development, and maintenance primarily in C++11 for CentOS for a radar system for the Confidential .
- Tools used include JIRA, subversion, coverity, g++, cmake, Confluence, and Jenkins.
- Development was done thru TigerVCN for Windows 7 using SCRUM.
Staff Software Engineer
Confidential, Erie, PA
Responsibilities:
- Design, development, and maintenance primarily in 68010 asembler, C, and PASCAL for embedded software for Confidential locomotives.
- Tools used include ClearQuest and VirtualBox (NetBSD 6.1.5).
Software Engineer (Consultant)
Confidential, Brea, CA
Responsibilities:
- Design, development, and maintenance primarily in C++11 for an embedded Ubuntu platform for inflight entertainment.
- Tools used included JIRA, subversion, coverity, g++, gmake, Confluence, and Jenkins.
- Development was done on VirtualBox running under Windows 7 using SCRUM.
- Embedded system used both OOD and design patterns.
Systems Engineer (Consultant)
Confidential, Nashville, TN
Responsibilities:
- Design, development, and maintenance primarily in Pro*C/C/C++ and scripting (sh, csh, ksh, and perl) on UNIX (SunOS 5.10 for SPARC-Enterprise) using Oracle to help solve issues and process claims and payments for TennCare.
Software Developer (Consultant)
Confidential, Brentwood, TN
Responsibilities:
- Design, development, and maintenance primarily in C++ (MSVC 2012) for the .net framework on Windows 7 using SCRUM.
- Ported PathGroup applications from MSVS6 to MSVS2012. Data stored in MS SQL Server.
- Researched adding molecular genetic reporting in HTML5 (from GenoSpace) to our reports to aid in personalized medicine.
- Aplication used MFC, OOA, OOD, OOP, and design patterns.
Application Programming Analyst / Programmer
Confidential, Nashville, TN
Responsibilities:
- Design, development, and maintenance primarily in Pro*C/C for AIX of processing CMS-1500/CMS-1501, 997/999 (Functional Group Acknowledgement/Implementation Acknowledgement) reporting (for insurance claims clearing), and HL7.
- Built new wrapper for archive software (records must be kept for a number of years (varies from state to state) and Emdeon currently has petabytes worth of them stored at its data center; so far, Emdeon has never deleted anything, just moved it to slower forms of storage as it gets older).
- Data stored in Oracle.
- Some JAVA, perl, and shell scripting.
Software Scientist
Confidential, Huntsville, AL
Responsibilities:
- Design and development in C++ and C# on the .net framework on Windows using Visual Studio for Confidential ’s Computer Aided Dispatch system as it relates to InService’s Outage Management System and Mobile Worforce Management.
- Design and development of DLL’s in C++ (e.g., OMSAlarmManager) for interop with C# and GUI’s (in C# (e.g., OMSStyleConfiguration tool) and C++ (e.g., OMSDisplayOptions)) using dynamic redundant SQL (an extention of t-sql) for Oracle and MS SQL Server. Some MQSeries Messaging.
- Configuration management and build management - built releases, service packs, and patches of OMS and MWM to ship to QA, coordinating the activities of developers in the United States and India using SCRUM. Aplication used MFC, OOA, OOD, OOP, and design patterns.
Consultant/Contractor
Confidential
Responsibilities:
- Some work as an independent, the rest through other firms. Clients included Motorola (I developed for cable set top boxes and hosts for cable cards) and QVC (I worked in Enterprise Data Services).
- Development in C++ and C, some development in JAVA, JAVASCRIPT, VB, and C#; for UNIX (including xlC on AIX, gcc on Linux, and Metrowerks CodeWarrior on Windows for VRTX) and the .net framework on Windows (using Visual Studio); used SQL for DB2 and SQL Server; used XML for doing data exchange.
- Some development related to back end web processing for search and navigation.
- Some software architecture (specs using UML), project management, and project coordination (
- Various of the aplications used MFC, OOD, and design patterns.
Senior Software Engineer
Confidential, Watertown, MA
Responsibilities:
- Programmed in Microsoft Visual C++ using the Microsoft SDK RougeWave was used in Protest releases. Also used Visual C++ for Windows CE on various Windows CE platforms with the appropriate platform SDKs.
- The Windows CE platforms were used to control the F6X from various smaller devices (including handhelds).
- Made extensive use of MFC, OOA, OOD, OOP, and design patterns.
- Doble’s products are primarily power system simulators. These generate voltages, currents, frequencies, and phase shifts of phases of EMF waveforms that are either described directly in the test (for steady states as well as linear and binary searches) or to replay transient waveforms that were previously captured (during a transient event (such as a lightning strike)) or specified through a waveform editor. The waveforms are used to test relays and circuit breakers and determine their compliance to manufacturers operating specification as well as configuration operability.
- Had to refactor Protest many times due to changing hardware (both PC platforms and Doble instruments (new instruments had to be supported to run the older tests even though the communications protocols were completely different while maintaining the support for the older instrument sets), software (from DOS through releases of Windows from Win95 to XP; FOXPRO to T-SQL for SYBASE; various releases of Crystal reports; various releases of Rogue Wave; et al), and market conditions (power utilities have been undergoing their own refactoring efforts as power generation, distribution, delivery, and maintenance have been divided; the business interfaces to the participants in the power grid have changed radically as a result).
- The port of the Protest functionality from the original DOS platform to Windows involved both UI and database redesign, but core functionality had to be preserved. Protest 3 (the last DOS based product) was written in FOXPRO. The new Protest was based on SYBASE and written in C++. The transient functionality was incorporated into Protest from a DOS product written in C; it was refactored into C++ to support waveform generation on both the F6X and the F2K Doble platforms (the legacy product only supported the F2K).
- Did pre-sales support, post-sales support, customer support, and customer training.
- Developed special communications drivers for Hydro Quebec resulting in a $5 million sale.
- Trained engineers from BPA (Bonneville Power Administration) in the use of my APIs. Ported the API set to Windows CE for BPA’s use. This resulted in a $6 million sale.
- Designed and presented a course to customers who wanted to build their own macros using the F6X APIs (this course was presented in Baltimore in the Fall of 2002 at the Doble User Conference).
- Helped a summer intern port Mirror (in Perl) from a LINUX platform to an NT platform.
- Designed and developed communications and protocol DLLs for interfacing PC-based UIs for Win32 environments (XP through Win95) with embedded systems for instruments made by Doble to test relays and other power systems equipment. Other of the DLLs developed implement macro functionality on top of the communications DLLs. All the DLLs are written in C++ for MSVC; the last release of MSVC I used for this was Visual C++ 6.0.
- Used object oriented design and object oriented programming techniques extensively.
- The F6X protocol allows client applications (some written at Doble, some written by third parties) to define deterministic finite state machines that describe power system simulations.
- The transport macro classes designed for the F6X protocol follow a variation of the Envelope/Letter paradigm where in the F6XTransportMacro class is both the envelope class and the base class for all derived letters allowing for recursive polymorphism (based this design on Coplien’s polymorphic number class, though a class factory paradigm was used instead of a virtual constructor paradigm for construction of the representations). This resulted in a design that was both divisible (was able to take on additional staff and improve time to market) and scalable (didn’t have to develop all of the classes for the project to be demonstrable or shippable), thus allowing defiance of two of Brook’s laws (see The Mythical Manmonth).
- Designed and developed a set of APIs that give access to the objects in the DLL to third party developers. Supported our third party developers domestically and internationally. They use the third party APIs from both VB and C++.
- Instrumented the F6X and F2K DLLs in such a way that communications sessions may be captured (by activating a back door). These can be used both for static diagnostic purposes and as input to the applications that generated them. Replay allows debugging of the UI without the need for a physical instrument or the equipment that was being tested by the instrument. That was particularly important when there were very few real F6Xs in existence. It is also important when the equipment necessary to show a problem is not available to R&D (such as customer relays, circuit breakers, or power system stabilizers).
- The upper layers (both of the DLL and the application that is calling it) are unaware that they are not connected to a real instrument. This allowed the Protest application that controlled F6Xs to be ready when the F6Xs were ready to be sold broadly. It also allows our third party developers in India to debug their applications without having to have access to an F6X all the time.