|
|
|
|
Languages |
• C++
• C
• Python
• Bash
• HTML
• CSS
• PHP
• JavaScript
• jQuery
• Java
• SQL
• assembler
• many others... |
Systems & Tools |
• Linux
• Unix
• POSIX
• Apache
• Tomcat
• Git
• Mercurial
• wxWidgets
• Qt
• GTK+
• Windows
• Cygwin
• Embedded Systems
• many others... |
Technical Skills |
• Open Source tools and development methodologies
• GUI design and development
• Object-oriented design
• Strong technical documentation skills
• SCM
• Build automation
• Tool-smithing |
Personal Skills |
• Excellent written and interpersonal communications
• Rapidly assimilates new technologies and environments
• Works well in groups or individually
• Well organized and self-motivated
• Creative problem solver |
|
|
|
|
Aug 2002 – present |
Volpe National Transportation Systems Center (USDOT) – Cambridge, MA
https://www.volpe.dot.gov |
Job Title |
Information Systems Specialist |
Roles |
Principal Software Engineer; Lead Developer; System Architect |
Technologies Used |
• C/C++
• Python
• Bash
• Git
• Ruby
• Perl
• Java
• Tomcat
• HTML/CSS/JavaScript/jQuery
• PHP
• Linux/Solaris/AIX
• Oracle
• MySQL
• Windows
• TCP/IP networking |
Details |
Developed new and maintained existing software for various Federal Aviation
Administration (FAA) programs: |
|
- From January 2013 to the present, served as a member of the ADS-B (Automatic
Dependent Surveillance-Broadcast) SAPT (Service Availability Prediction Tool)
team that is developing and maintaining two web sites that provide official FAA
information services to pilots and airlines about the availability of GPS-based
navigation capabilities along aircraft routes-of-flight. The web sites use
HTML, CSS, JavaScript, jQuery and PHP on the front-end and Java on the back-end,
including Tomcat-based Java Web Services and standalone back-end servers written
in Java, and an Oracle database:
-
https://sapt.faa.gov/ – Predicts the availability of GPS service and the performance of
ADS-B-based navigation for aircraft along their
routes-of-flight. The web site offers both an interactive
HTML-based web form as well as an XML-based web service designed
for automated use by flight planning systems. New FAA rules
(which are currently out for public review and planned to go
into effect in 2020) will require all flights that do not meet
minimum hardware standards to use this web site pre-flight to
determine whether they will meet the required navigational
performance.
-
http://www.raimprediction.net/ – Predicts the availability of GPS RAIM (Receiver Autonomous Integrity
Monitoring) for aircraft using certain classes of navigation hardware. Proper
use of this tool satisfies an FAA requirement for these aircraft when operating
on certain designated routes and is explicitly recommended by the FAA for this
purpose. The web site offers both an interactive HTML-based web form as well as
an XML-based web service designed for automated use by flight planning systems.
The RAIM Prediction web site was previously developed by another team and its
maintenance and further development was turned over to the SAPT team in early
2013.
In 2015, raimprediction.net was discontinued and its functionality was
integrated into sapt.faa.gov.
- From November 2012 to January 2013, developed a data collection server to
capture data from weather instruments via a 32-port serial card, a counter card and a frame-grabber device. The software was
developed in C++ in a Linux environment and deployed on a Windows 7 system under
Cygwin. The software is part of an experimental weather monitoring program for
aviation at Otis Air Force Base and serves as the back-end for an experimental
web site that provides a dashboard view of the data.
- From March 2009 to November 2012, served as Lead Developer and
System Architect on a project to develop a Monte Carlo-style, fast-time
aircraft/vehicle simulation tool. Developed the software architecture and led
several developers in implementing the software suite (C++ and Python).
The tool had a focus on ground-based operations (with some airborne
operations) and was designed specifically to analyze a new concept for
reducing taxi delays on the airfield called Collaborative Departure
Queue Management (CDQM). The basis of CDQM is to predict taxiway
congestion and to mitigate it by holding some aircraft in the gates for
some period of time (which also reduces the amount of fuel wasted while
idling on a taxiway).
The simulator generated synthetic tracks (aircraft), based on a
defined scenario, that could autonomously navigate the airport
surface and negotiate traffic situations. It was able to integrate
with the CDQM server while simultaneously acting as a surveillance
data source (i.e. track data) and a consumer of CDQM advisory data,
which it used to control the release of departure aircraft from
gates. Performance analysis of CDQM was conducted by statistically
comparing the airfield performance for the given simulation scenario
both with and without input from CDQM.
- From September 2006 to March 2009, served as Lead Developer
and System Architect on a project to develop a Monte Carlo-style, fast-time
aircraft simulation tool focused primarily on airborne flight in and around
airport terminal areas. Developed the software architecture and led several
developers in implementing the software suite (primarily in C++).
The tool was intended to replace a sponsor's existing tool and
therefore was required to duplicate certain functionality as well as
implementing new functionality. The tool is used by the FAA sponsor
to study proposed changes at the Nation's airports and to make
formal determinations regarding the safety of the changes as well as
formal recommendations for or against the changes. The types of
changes that are studied include physical changes (e.g. new
runways), configuration changes (e.g. traffic patterns and uses of
runways and taxiways) as well as proposed rule changes related to
airport operations. All such studies are focused on safety and, in
particular, on the mitigation of unexpected circumstances such as
unplanned aircraft movements.
- Prior to September 2006 served as Principal Software Engineer on several smaller projects:
-
Maintained a prototype airport surface surveillance system for the FAAs
SafeFlight21 program. The system fused data from multiple sources (including
ASDE-X multilateration, secondary radar, flight plan database, and aircraft
transponders) to generate a live, real-time "picture" of the local air traffic
situation showing all aircraft and their position, identifying information,
track/heading and velocity.
-
Developed and maintained a TCP/IP-based data distribution server application with content-based filtering.
-
Developed software to control an ADS-B radio receiver, decode data, and serve to clients.
-
Developed data analysis software for the FAAs Runway Status Lights program, to
aid a study tasked with determining where and how many new runway status lights
should be installed at several dozen of the nation's top airports. Also
developed functional verification software to verify the correct operation of
the Runway Status Lights system.
-
Maintained and administered multiple distributed TCP/IP networks (including
Ethernet-based LANs and T1 circuits) and network equipment (Cisco routers and
managed switches) linking remote sites to supply realtime airport surveillance
data to clients.
|
|
|
Jan 1997 – Oct 2001 |
Foliage Software Systems, Inc. – Burlington, MA
http://www.foliage.com |
Job Title |
Senior Software Engineer |
Technologies Used |
• C/C++
• STL
• UML
• XML
• HTML
• ASP
• JavaScript
• CORBA
• Windows/MFC/COM
• Solaris
• Motif
• VxWorks
• MercuryOS
• TI C3x/C4x DSP
• MS SourceSafe
• RCS
• IMAKE |
Details |
Participated in multiple client projects encompassing extensive software design
and development work on a broad array of technologies and products, both
individually and as a team member, with a strong emphasis on object-oriented
methodologies. Summary of projects worked on: |
|
- Enhanced the control software for a commercial ion implantation system.
Enhancements ranged from improvements to the advanced robotic wafer handling
system which significantly reduced accidental wafer breakage (potentially saving
end-users thousands of dollars per incident) to user interface extensions that
enabled secure remote access to recipe editing facilities (and others), allowing
end-users to optimize their access to system resources. Developed software in C
for a VxWorks and SunOS/Motif environment.
- Participated in a proof-of-concept project to design and develop enhancements to
a set of deployed commercial electron beam lithography systems. Used an
object-oriented design process and developed software using C++ and COM to
simultaneously run on Windows NT, Solaris, and a bank of parallel processors
running MercuryOS.
- Designed and developed an object-oriented, distributed control system framework
for a commercial electron beam lithography system. The system manufacturer used
the framework to develop their next-generation lithography system in C++, saving
them a great deal of development time and enabling them to rescue a badly
slipped development schedule to deliver their new product on time and on budget.
Used an object-oriented design process, including UML modeling, and implemented
the design in C++ using STL and CORBA. Developed a multi-platform build tool
using IMAKE that supported Solaris, Windows NT, and VxWorks.
- Designed and developed embedded avionics software, including a primary flight
display and a navigation display, for a small aircraft. Software was developed
to DO-178B Level B guidelines and received FAA certification. Utilized an
object-oriented design process, including extensive UML modeling. Designed and
developed an OO framework in a C environment which provided C++-like
functionality, including inheritance and true polymorphism, and allowed the team
to quickly translate the OO design into C code for a timely delivery to the
client. Applications ran in a custom embedded environment on a TI C3x / C4x
DSP, cross-compiled and emulated from Windows NT.
- Designed and developed medical software for a blood testing application. The
software was considered a “process control” application because it only
partially controlled the hardware environment while primarily intending to
interactively guide a human operator through all the steps of the testing
process, as well as computing and storing the final results. Developed a custom
GUI using Visual C++ and MFC to run in a Windows 2000 environment. Also
developed several major system components.
- Enhanced the control software for an advanced digital jukebox. Developed
software in C++ and JavaScript/ASP/DHTML, for a Windows 2000 and COM+
environment, using ATL, STL, and MFC. Designed and developed an event logging
system which was implemented as a COM component, wrote log files in XML format
to enhance machine readability, and accepted queries from Active Server Pages
(ASP) to which it responded with XML-formatted event data. Designed and
developed a simulator for a custom HTTP server which acted as the interface to a
remote, proprietary song database used to automatically populate jukeboxes in
the field (restaurants, bars, etc.). Enhanced the XML processing components of
the jukebox configuration management sub-system to use multiple, overlaid XML
files that allowed new factory configuration data to be introduced into an
end-user installation while preserving site-specific settings when possible.
Made enhancements to the web browser-based GUI.
|
|
|
Oct 1994 – Dec 1996 |
National Datacomputer, Inc. – Billerica, MA |
Job Title |
Senior Software Engineer |
Technologies Used |
• C/C++
• 80x86 assembler
• MS-DOS
• DPMI
• Windows
• Novell NetWare
• RCS |
Details |
Developed new and maintained existing software in C and assembler for a
PC-based, hand-held computer, with a concentration on user interface facilities.
Designed and developed an advanced full-screen editor for proprietary database
files, written in C++ for an MS-DOS/DPMI environment, which enabled customer
support personnel to work more efficiently and reliably. Designed and
maintained adaptable software build procedures for an MS-DOS environment. |
|
|
Jul 1992 – Oct 1994 |
Practice Management Systems, Inc. – Needham, MA |
Job Title |
Software Engineer |
Technologies Used |
• BASIC
• C/C++
• 80x86 assembler
• MS-DOS
• Novell NetWare |
Details |
Developed new and maintained existing software for electronic medical insurance
claim submission and medical billing. Wrote MS-DOS programs using MS-BASIC PDS
and Borland C/C++, including network support for Novell networks using Novell
NetWare API. Developed user interfaces, function libraries, and toolbox
interfaces. Developed telecommunication software for claims submissions over
proprietary networks using Borland C/C++ and Greenleaf communications library,
and telecommunication scripts using ProComm Plus and other communications
software packages. Wrote numerous tools and utilities including a note-taker
application, used by telephone operators, that is capable of routing messages
over a Novell Network to any printer, allowing customer service calls to be
handled more efficiently. |
|
|
Mar 1992 – May 1992 |
Interactive MicroSystems, Inc. – Salem, NH |
Job Title |
Programmer/Consultant (short-term contract) |
Technologies Used |
• C
• 68000 assembler
• Commodore Amiga |
Details |
Developed new and enhanced existing video editing and controller software to
control video editing decks and process “edit-decision lists”. Developed a
software library to load and display computer animations and still pictures
transparently from multiple graphics storage formats. Integrated software with
an external, commercial scripting language (Arexx). Software was written using
C and 68000 assembler for the Commodore Amiga. |
|
|
Jun 1989 – Mar 1992 |
Theta Systems, Inc. – Woburn, MA |
Job Title |
Software Engineer |
Technologies Used |
• C
• 68000 assembler
• Commodore Amiga
• CDTV
• VAX/VMS
• VAX MACRO |
Details |
Participated in multiple projects: |
|
- Designed and developed CD-ROM-based, interactive multimedia software in C and
68000 assembler for the Commodore Amiga and Commodore CDTV, including the CDTV
Welcome Disk, a product which was distributed worldwide with the CDTV player.
Assumed responsibility for the Welcome Disc project under crisis circumstances:
numerous outstanding changes and a very limited time budget. Converted the
application into a script-based multimedia engine which allowed all changes to
be completed before an important deadline. This also made the software usable
for several other applications, saving the client a great deal of additional
development effort.
- Co-authored the official developer's guidelines for CDTV, defining the proper
behavior of CDTV applications and the standard user interface look and feel for
the CDTV development community, accompanied by example programs and code
libraries to demonstrate the principals described within.
- Designed and developed telecommunications software using C for the Commodore Amiga and VAX/VMS.
- Designed and developed IPC software for VAX/VMS in C and VAX MACRO.
- Designed and developed object-oriented drawing software using C for the Commodore Amiga.
- Researched and developed OOP methodologies as well
as software coding techniques to make programs easily portable between different
operating environments such as VMS, Amiga, and MS-DOS.
- Received some exposure to Macintosh and UNIX.
|
|
|
Oct 1988 – May 1989 |
Viking Technologies, Inc. – Middletown, RI |
Job Title |
Managing Editor/Programmer |
Technologies Used |
• C
• BASIC
• 6502 assembler
• Commodore 64/128/Amiga
• MS-DOS |
Details |
Produced the Commodore 64/128 edition of UpTime a monthly, computer-oriented, diskette-based periodical. Responsibilities
included: planning future issues; making editorial assignments; writing and
editing articles and programs; working with an artist to procure artwork for
publication; assembling the final product; managing a network of beta testers;
and maintaining a monthly budget for all activities. Assisted in the startup of
an Amiga edition and programmed for the Amiga and the IBM-PC editions.
Developed hypertext authoring and presentation software on the IBM-PC. |
|
|
Jan 1987 – Nov 1989 |
Applied Innovations, Inc. – Wakefield, RI |
Job Title |
Software Engineer (part time from Oct 1988 through Nov 1989) |
Technologies Used |
• BASIC
• C
• Turbo Pascal
• MS-DOS
• PVCS |
Details |
Developed new and maintained existing MS-DOS software for psychological testing
and medical billing using Turbo C, Turbo Pascal, 80x86 assembler, and
QuickBASIC. Conceived, proposed, designed and developed a new system in Turbo
Pascal to generate printed medical insurance claim forms utilizing a full-screen
editor and separate printing software. This software drastically expedited
support for new claim forms, generating notable customer satisfaction and
significant new income for the company. Managed company-wide software version
control using PVCS. Continued working part-time on a consulting basis for one
year after departing the company in November 1988. |
|
|
|
|
2003 – present |
Various Open Source Projects |
|
Participated in and submitted code to several Open Source projects, including some initiated by myself. |
|
|
|
|
Mar 1984 – Mar 1987 |
M.E.M.O. Computer User's Group – Fall River, MA |
Position |
Librarian (elected 3 terms) |
Technologies Used |
• BASIC
• 6502 assembler
• Commodore 64 |
|
Produced a monthly club diskette containing public domain programs for the
Commodore 64 computer and presented it at public meetings. Organized and taught
club-sponsored programming classes in BASIC and 6502 assembly language
programming. |
|
|
|
|
1981 – 1982 |
Bristol Community College – Fall River, MA |
Area of Study |
Associates Degree in Electrical Engineering (incomplete) |
|
|
1980 – 1981 |
Bishop Connolly High School – Fall River, MA |
Area of Study |
Introduction to BASIC programming |
|
|
|
|
|
Available upon request. |