- Career Software Architect and Consultant who enjoys writing
small, fast, elegant software. Long-term projects are preferred
where I can build from the ground up, from inception through
product delivery. Can work independently or with your team.
- Creator of real-time messaging application https://sked.skccgroup.com.
- Creator of OOSMOS, the Object-Oriented State Machine Operating System.
https://www.oosmos.com.
- Former member of the Software Defined Radio Forum (SDR Forum)
representing Motorola.
- Former member of X3J16, the ANSI C++ standardization committee.
- Patent as co-inventor of Covidien's dual-head power injection system supporting simultaneous injections.
(https://www.google.com/patents/US20130245439)
- Recent: OOSMOS, TypeScript, Docker, Node.js, Websockets, Python, SQLite, Networking, state machines, and Git.
- Expert in C, C++, IBM's Rhapsody, hierarchical state machines, large-scale software architecture, object-oriented design,
real-time embedded systems, performance optimization, PERL, PHP, real-time
CORBA internals, and compiler design.
- Proficient in Python, Java, UML, VBA, HTML, XML, CSS, Assembly, Win32, Unix/Linux,
MS-DOS, pSOS, VxWorks, Integrity, MQX, Liberty OS, Clearcase,
databases (SQLite, MySQL, Access), SQL, PEG, X86, 68xxx, DSPs,
Software Defined Radios (SDR), PCI bus, TCP/IP, Sockets.
- Experience with C#.
W |
O |
R |
K |
|
E |
X |
P |
E |
R |
I |
E |
N |
C |
E |
OOSMOS, LLC |
March 2013 to Present |
Phoenix, AZ |
President, Chief Scientist |
- Creator of OOSMOS — The Object-Oriented State Machine Operating System.
https://www.oosmos.com
- Designed and implemented the complete operating system.
- Implemented the statechart-to-C code generator in Typescript.
- Implemented the OOSMOS website using a custom object-oriented PHP framework. The website is
completely responsive; meaning the same set of code supports both desktop and mobile devices.
Stress Engineering Services, Inc. |
March 2017 to April 2018 |
Mason, OH |
Consultant |
- Using the OOSMOS operating system targeting an STM ARM processor, designed and implemented
the software for a wound suction medical device. The device obtained FDA clearance on the first pass.
Reliance Medical Products |
August 2012 to March 2013 |
Mason, OH |
Consultant |
- Reimplementation of two medical devices: an ophthalmic exam chair and instrument delivery system.
Written in object-oriented C on the PIC32 platform using the OOSMOS operating system.
GE Healthcare |
May 2010 to July 2012 |
Milwaukee, WI |
Consultant |
- Working with GE Healthcare's Principle Engineer, designed and implemented a
Rhapsody-based distributed object framework to support implementation of GE
Healthcare's next generation CT scanner.
- Using Rhapsody's JavaAPI, designed and implemented an automated mechanism to
generate communication proxies from interface definitions specified graphically
in a Rhapsody model.
- Acted as principle Rhapsody mentor to quickly get the team using Rhapsody's
advanced features effectively.
- Provided initial design for the Axial Rotation Subsystem — the subsystem
that drives the large rotating element of the CT scanner gantry.
Covidien |
January 2006 to November 2009 |
Cincinnati, OH |
Consultant |
- Using Rhapsody, OXF, C++, UML, and PEG, redesigned and
reimplemented a dual-syringe injection medical device.
- On an existing power injector, rearchitected all motor control
elements and directed performance improvements that reduced
CPU usage from over 100% to less than 25%.
- Designed and implemented a motor control PID algorithm to assure
safe pressure levels of fluid within syringe during injections.
Northrop Grumman |
April 2005 to December 2005 |
San Diego, CA |
Consultant |
- Established end-to-end software development process using PERL on top of Clearcase, including automated builds of Rhapsody models.
- Developed and presented advanced CORBA C++ training to JSFCNI developers.
- Regular presenter of software engineering best practices to JSFCNI developers.
Tyco Healthcare |
February 2005 to April 2005 |
Cincinnati, OH |
Consultant |
- Tuned motor control PID algorithms of an injection device
written in C++ to detect and react to real-time anomalous pressure.
Northrop Grumman/PrismTech, LTD |
January 2004 to November 2004 |
San Diego, CA/Newcastle, England, UK |
Consultant |
- Worked with PrismTech and Northrop Grumman engineers to identify
and mitigate high-risk CORBA performance and transport
related issues with existing C and C++ CORBA ORB technology.
- Ported the C-based CORBA ORB I wrote while at Motorola to a
proprietary processor selected by Northrop Grumman's JSFCNI
program and implemented significant performance optimizations.
Metrics are proprietary.
- Prototyped a C++ CORBA ORB, targeting Windows and a proprietary processor.
Glenn Software Consulting, Inc. |
Mar 2003 to Dec 2003 |
Phoenix, AZ |
E-commerce Web Developer |
- Using PHP, JavaScript, AJAX and MySQL, developed e-commerce
web sites including associated content management systems.
Northrop Grumman Electro-Optical Systems |
Oct 2002 to Feb 2003 |
Tempe, AZ |
Consultant |
- Using C++ and Visual Basic, upgraded a test station that
used fiber optic communication for a proprietary military
high altitude thermal camera application.
Accenture |
July 1999 to May 2002 |
Minneapolis, MN |
Consultant |
- Designed and implemented a message exchange system in C++,
XML and CORBA for Accenture's Launch-Now startup venture.
- Designed and implemented a complete workpacket and life
cycle configuration management system in PERL on top of Clearcase.
- Designed and implemented a complete general-purpose database
management system in PERL on top of Oracle.
Motorola SSPD, Wireless Information Transfer System (WITS) |
January 1998 to July 1999 |
Scottsdale, AZ |
Consultant |
-
Designed and implemented a real-time CORBA ORB for C, the
foundation of Motorola's WITS software defined radio distributed
object architecture. This 'C' ORB is 3 times faster than
Washington University's 'TAO' ORB. It runs on NT, VxWorks,
as well as on a SHARC DSP (a first in the industry).
-
Designed and implemented the CORBA IDL to C compiler, written
in Java, to complement the WITS ORB.
-
Co-developed the WITS object-oriented radio framework in C.
Worked with Motorola's Chief Scientist to introduce this framework
to industry for standardization by the Software Defined Radio
(SDR) Forum. This framework was the earliest form of today's SCA.
-
Developed the WITS radio simulation platform on Windows, able to
simulate the operation of the entire radio. This platform is the
principal WITS testing platform.
-
Designed and implemented a real-time, write-only,
PCI-based shared memory OSI transport layer in C.
-
Technical lead of the WITS software infrastructure, responsible
for the CORBA ORB, Radio Control, RF and SNMP components, all written in C.
-
Developed and evangelized the WITS software architecture strategy:
Distributed object technology using CORBA.
Motorola SSTG, SPEAKeasy II |
November 1995 to January 1998 |
Scottsdale, AZ |
Consultant |
- Contributing system designer and implementer of the Motorola
SPEAKeasy multi-band multi-mode reprogrammable radio successfully
demonstrated at military training exercises at Task Force
XXI in March, 1997.
- Software lead of the System Control and INFOSEC product teams.
Platinum Technology |
May 1995 to Nov 1995 |
San Francisco, CA |
Consultant |
- Implemented major modifications to the Microsoft MFC
object-oriented class framework to lift severe 32K object size
limitations. The modified MFC was used to implement
Platinum's successful SQL-Coder database management application.
- Ported the C++ Windows-based SQL-Coder application to UNIX.
Andersen Consulting |
Apr 1992 to May 1995 |
Minneapolis, MN |
Consulting Technical Project Leader |
-
Lead designer and co-implementer of Andersen Consulting's
Universal Construction Toolset (UCT), Andersen's client/server middleware
that allows rapid development of GUI, batch and
server applications for Andersen clients on a wide range of platforms.
-
Designed and co-implemented UCT's object-oriented GUI in C++.
-
Implemented a complete, generalized data entry, validation,
translation and editing library for date/time, floating
point and masked data entry in C++.
-
Designed and implemented a generalized, reentrant, automated testing
system API in C++. Using this testing interface, programmers
can build self-verifying tests right into the system that
execute at startup, before main() is called.
-
Designed and implemented a complete, generalized, object-oriented date
and time library in C++. Features include symmetric format strings
for parsing input and formatting output, daylight savings time
support, time zone conversions, extensive date/time
arithmetic, and entire Gregorian calendar support and date/time validation.
-
Designed and implemented a suite of server self-tests
in C++. Traditionally, server tests involve complicated setup
of at least one client and one server process, possibly
on more than one machine. This server test is a single, self
contained, multi-threaded client and server executable that "talks
to itself," reducing setup and maintenance time.
-
Designed an integrated exception handling mechanism. Not all
compilation systems that UCT uses support the C++ exception
handling mechanism.
-
Developed and wrote the project's C++ coding standards.
-
Designed and implemented a multi-database API in C++. Currently
supports two implementations, Sybase and Oracle.
-
Designed and implemented a complete Microsoft Excel-compatible
data formatting library in C++.
-
Designed and implemented a complete, generalized "canonicalization"
library in C++ to handle the necessary byte-swapping and
type promotion to allow data transfer between machines of
different architectures in a heterogeneous environment.
-
Designed and implemented a generalized memory debugger for
C++ by overloading the 'new' and 'delete' operators. The system
can detect memory leaks, corruption, reads of uninitialized
or freed memory, and multiple frees of the same memory area.
-
Designed and implemented the primary mechanism that makes UCT
so portable-using C++'s ability to support multiple
implementations under a single interface, rather than the
traditional use of #ifdef's.
-
Designed and implemented a portable startup mechanism that allows
C++ objects to be constructed and destructed in a
predictable order in the "shared library" environments of Windows and UNIX.
-
Co-designed a portable socket communication interface in
C++ that cooperates with the multi-platform multi-threading
library mentioned above. Currently supports Winsock
for Windows and Unix Sockets for both SVR4 and Berkeley.
-
Ported UCT to Windows 3.1 and AT&T UNIX SVR4 platforms.
Assisted others with ports to all other platforms.
-
Taught classes on C++ and object-oriented design. This
project was Andersen Minneapolis' first exposure
to C++ and object-oriented software development.
Sun Microsystems |
Sep 1991 to Apr 1992 |
Phoenix, AZ |
Consultant |
- Joint venture between Sun Microsystems and Andersen
Consulting to develop Andersen's next generation of
client/server C++ middleware, now called UCT (Universal
Construction Toolset).
- Assisted developers in transition from C to C++, introducing
them to object-oriented design and development.
- Designed and implemented a program generator in C++ for
UCT that read a design database and produced ANSI C
source code. Programmers then augmented this code with business logic.
Loral Defense Systems |
May 1991 to Sep 1991 |
Goodyear, AZ |
Consultant |
- Integrated a landing system for an unmanned "drone" helicopter in C++.
- Implemented in C++ a multi-board device driver for the Motorola MVME332
Intelligent Communication Controller.
Glenn Consulting |
Feb 1989 to Apr 1991 |
Phoenix, AZ |
Software Engineer |
- Designed and implemented an ANSI C compiler for the 680xx-based
Amiga personal computer written in ANSI C.
- Implemented a complete ANSI C compliant preprocessor in ANSI C.
The only compiler out of eight competitors that actually execute
the examples in the standard correctly.
- Implemented a complete ANSI C compliant run-time library, including memory
management, standard I/O facilities, floating point math routines,
and date/time manipulation.
- Implemented an ANSI C test suite to test coverage of features,
global name space pollution of the run-time library,
and "edge" conditions that many compilers fail.
Loral Defense Systems |
May 1988 to Feb 1989 |
Goodyear, AZ |
Consultant |
- Designed and implemented hardware interface libraries for a
radar system in C++.
- Taught introductory C++ classes to project members.
Honeywell Bull, Inc. |
Apr 1988 to May 1988 |
Phoenix, AZ |
Consultant |
- Designed and implemented a high-level structured, custom script
language in C++ for Microsoft Windows and MS-DOS.
DDC International, Inc. |
Oct 1987 to Apr 1988 |
Phoenix, AZ |
Senior Software Engineer |
- Co-designed the DDC-I VAX to 80x86 Ada run-time system for
real-time embedded system applications. Primary objectives were
minimal size of required code and data space as well as fast
execution of memory management and the Ada tasking
model. The result is the smallest and fastest Ada
runtime environment in the industry.
- Acted as technical liaison between the Phoenix and
Copenhagen offices, spending 15% of my time in Denmark.
ITT Courier Terminal Systems, Inc. |
Feb 1985 to Oct 1987 |
Tempe, AZ |
Senior Software Engineer |
- Lead software designer and implementer of an IBM PC compatible
high resolution graphics workstation.
- Implemented a complete character-based windowing system and
user interface in C.
- Implemented MTX, a portable real-time multitasking executive
in C. MTX runs under UNIX, MS-DOS and as a stand-alone
operating system suitable for embedded systems.
- Implemented a chip-level device driver on an IBM PC for an
ITT-proprietary coax PC board in C. The driver used
MTX to meet its real-time constraints.
Texas Instruments |
Dec 1983 to Feb 1985 |
Dallas, TX |
Software Engineer |
-
Implemented in C the XNS network protocol on an IBM 4341
running VM/CMS for international factory automation applications.
-
Improved the performance of an existing C multitasking system for
use in a virtual machine running under VM/CMS by over 600%.
-
Implemented network performance analysis tools in C to verify
optimal network configuration and performance.
-
Developed high-level interprocess message communications interface to
allow C and Pascal programmers on VM/CMS to
transfer data between Virtual Machines.
Texas Instruments |
Oct 1982 to Dec 1983 |
Lubbock, TX |
Software Engineer |
-
Designed and implemented a UCSD Pascal compatible compiler for
the TI 9900 microprocessor based 99/8 computer. Written in Pascal,
it included global optimization using flow analysis, elimination of
redundant range checking and subexpressions, and support
for symbolic debugging.
-
Supported interpreter for GPL (Graphics Programming Language),
the language used by most Texas Instruments Home Computer programs.
Honeywell Large Computer Products |
Jun 1979 to Oct 1982 |
Phoenix, AZ |
Software Engineer |
-
Co-designed a multi-environment COBOL 85 globally optimized
compiler, capable of generating code for the
Honeywell CP6, GCOS, and Multics operating systems. Implemented
the code generator and code generation related parts of the front-end.
- Amateur radio operator. Extra class. Exclusively HF Morse code. Callsign K7MJG.
- Flight simulation. (X-Plane 11, RealSimGear G1000.)
- Private Pilot. (Not current.)
Ohio University, Athens, Ohio
BS Computer Science, Cum Laude, 1979