An experienced software developer embracing judicious design to rapidly produce state-of-the-art software

  • Two decades of professional software engineering experience ranging from UI to backend to embedded development
  • Solid computer science as well as classical engineering training and background
  • Experienced team leader, also extremely self-motivated for individual work; excellent communication skills
  • Inspired and energized by software development challenges

Patterns
agile object-oriented MVC reusability asynchronous/functional big data multithreaded/mutexing automated testing continuous integration
Languages
Javascript C++11 Scala C HTML5 CSS3 SVG bash Java C# PHP Perl
Frameworks and libraries
node.js boost RESTful APIs websockets D3 Bootstrap OpenSSL AWS
Tools
Chrome/FF devtools MongoDB gcc/gdb valgrind Raspberry Pi Jenkins git CMake Apache Visual Studio Qt Creator Intellij sublime
  • Deep analysis, design and development experience
    • UI and UX development targeting many web, mobile and desktop platforms
    • High-volume load-balanced backend design and implementation in the cloud
    • Embedded device development
    • Experienced in capturing scientific and engineering domain knowledge into expert systems
    • Reuse of best-practice patterns from object-oriented, functional and other paradigms
    • Knowledgeable application of algorithms and data structures
  • High-speed development practices
    • agile and test-driven development practices
    • thoughtful design of reusable components
    • rapid assimilation of new technologies
    • unit testing, assertions and other preventative coding practices
    • continuous integration
    • automated end-to-end and performance testing

Causam's mission is to create software for the emerging market in transactional energy. As the power grid becomes deregulated, decentralized and distributed, opportunities exist for smaller generators to disrupt the generation monopolies of existing utilities and feed energy back into the shared grid. Causam is a startup creating software to empower this transformation. Causam split off from Power Analytics (see below).

  • Fully engaged with small startup team to architect, design, and implement a map-driven website based on leaflet and Play!, an AWS-enabled back end supporting high volumes of traffic, load balancing through haproxy and kafka, nosql database support through mongodb and cassandra, and IoT software to securely ingress meter data from devices strategically distributed on the power grid.
  • Established aggressive browser caching of versioned html, js, css, image assets. This included a Javascript tile caching mechanism for pans and zooms in the client map, following OpenStreetMap data tiling patterns, and a Scala backend to serve the tile assets by timestamp of the most recent change within the tile data.
  • Created an embedded device library in C that was pushed to a variety of small SoC devices like ARM-based Verizon cell modems. Leveraged libraries included custom busybox builds, libwebsockets, openssl, libmodbus and libcurl. Testing proved the ability to deliver secure, frequent, consistent meter data using local buffering; network outages did not affect SLA metering.
Power Analytics has two major offerings, Design Base and Paladin. Design Base allows engineers to design the layout of the electrical systems of large military sites, FAA facilities, data centers, etc. Electrical simulations can be run using the one-lines. Paladin uses Design Base electrical models and adds realtime monitoring using metering devices at the site.

  • Added features and fixed bugs in Design Base in C++ and C# using Microsoft Visual Studio and an Autodesk library that handles the underlying CAD layouts.
  • Added features and fixed bugs in Paladin in C++ and C# and ASP.NET and node.js. Created customizable widgets made with SVG and javascript for use in the web UI, which uses layouts that can be designed to model the physical layout of the site. Worked with the device gateway driver plugin code in C and C++ and C# to ingress from many different meter sources.
  • Established an agile development process to manage the two product teams, acting as scrum master for daily scrums and a JIRA-driven sprint cycle.
  • Established continuous integration processes to enable regular production quality semantic-versioned releases of both products from a central shared repository. The new product release cycle resulted in stable, feature-filled, and profitable releases throughout Michael's tenure.
Toshiba Global Commerce Solutions acquired the majority of IBM's point-of-sale business and now owns, develops and delivers the ACE SUREPOS point-of-sale systems to major corporations like Whole Foods, Walmart, Bed Bath & Beyond.

  • Added new features and delivered bugfixes in C++ for the base system as well as customer-specific overlays. The codebase has remained extremely stable throughout continuous expansion, via the use of a layering system based on templates, inheritance and factory patterns.
  • Worked in the large lab at RTP to deliver builds to the lab equipment that included gas pumps, sales kiosks and fully simulated grocery aisles. Builds are cross-compiled for the IBM 4690 OS and installed via USB drive.
  • Managed the contributions of a remote team in Bangalore, India. The remote team did not have direct access to the hardware, but worked with Windows builds for POS simulators. Michael provided training, prioritized and gave assignments, reviewed, corrected, and integrated contributions, performed lab testing, committed the code to Toshiba's code repository, and generally managed the team.
A small distributed team developed a next-generation outage management system for a larger development firm's power utility client. The software included a web-based Kendo UI, core services provided by the Play framework with Java and Scala, backend servers written in C++, a Cassandra database, and Solr for searching.

  • Chief architect and lead developer for the backend servers, written in modern C++11 and leveraging boost’s graph library, which performed outage analysis on utility powergrid networks. The system was capable of supporting massive networks of millions of energized nodes and lines. The server applications were multi-process and multi-threaded, synchronized via internal web services.
  • Components communicated using RESTful JSON-based APIs for component-to-component communication and easy web-based testing, SOAP for connection to existing external systems, and http chunking for realtime streaming of events. The component-based approach allowed the entire system to be scaled out to handle the extremely large data sets of the biggest utility customers. With this design, the server apps can be distributed across multiple processes on one machine, or using multiple machines, or any combination. The outage analysis logic was driven by coordinating with experts in the field to create complex but precise requirements specifications.
Duke Energy (which acquired Progress Energy) is the major utility for the Carolinas. Progress Energy was using two major software systems at the time: Telvent's Distribution Management System (DMS used for load flow analysis and smartgrid functionality) and ABB's Distribution Management System (OMS used for outage management).

  • Technical lead on creating a real time integration between the DMS and OMS systems. The two systems were not designed to communicate with each other directly, each maintaining separate models of Duke Energy's electrical network, but both systems provided a means of custom access. Telvent provided web services to programmatically access its DMS, and ABB's DMS was exposed through Oracle APIs.
  • Wrote custom software to integrate the disparate systems, using the following technologies: .net web services, webMethods service bus providers and consumers, custom webMethods flow and Java services, perl web server exposing web services, Oracle stored procedures and triggers. The entire DMS-OMS integration was designed, created, implemented and tested by Michael.
The NM-DMS department develops a graphical information system that allows management of large power utilities' electrical network distribution systems. The software not only manages customer calls, outages, crews, etc., but also maintains a three-phase energized representation of the electrical state of the network, including dynamic linecuts and jumperlines, near-realtime SCADA and AMI integration, and advanced powerflow analysis. Many major utilities in the U.S. and abroad are customers.

  • Worked on several components of the product, lead developer for the CAD-like map display component. The map component was written in C++ using MFC and STL. In addition, Oracle OCI provided database storage and Tibco Smartsockets provided middleware pub/sub messaging. Functionality that Michael designed and implemented in whole or extended from the beta-level product of 2000 includes...
  • Performance enhancements - Enhanced the performance to best-in-class levels. One large customer's entire 9-million-object network can be loaded at once and dynamically zoomed and panned. Includes a double-buffered display, a cell-based object filtering mechanism for smooth operation at all scales, and a dynamic node-reduced network for fast drawing when zoomed out to the full map.
  • SCADA realtime analog display - Added a performance-enhanced double-buffered drawing layer to display SCADA realtime analog values like voltage, current and power, color-coded by SCADA quality. The gui subscribes to all analogs visible within any view, updating the subscription as the user pans and zooms. At full zoom, 1800 points were updated every second without issue.
  • Advanced Metering Infrastructure (AMI) display - Updated the display to include AMI-generated information. The external AMI interface sends information to the gui, which has a variety of ways of summarizing the information on the display.
  • Unbalanced loadflow server - Wrapped unbalanced loadflow expert system, which calculates per-phase powerflow in even the largest complex electrical networks, into a server mode that runs continuously, summarizing violations that exceed allowable tolerances.
  • Dynamic symbology and annotations - All symbology and annotations can be configured to declutter at given zoom levels. The result is a map that gains detail as the user zooms in and simplifies as s/he zooms out.
  • Multiple view support - Unlimited number of views of the network are available. View types: geographic, schematic, site, auto-schematic, zoom overview, simulation.
  • Zoom overview - A bird's-eye view of the map that allows zooming and panning of the corresponding main view.
  • Auto-schematic - A subset of the network can be dynamically selected, and a non-overlapping schematic layout can be automatically generated on the fly.
  • Custom coding for every large customer - Each large customer requires development of some custom features. During analysis and design, Michael ensured that new functionality was made as generally useful as possible for merging into the baseline product.
  • Automated build-and-test environment with daily web reports for all components; used Perl to scrape build and test results into an HTML report; the report summarized errors, with expandable sections containing full build and test logs
  • Michael has submitted over 1000 code submissions, big and small, over the course of 5 years.
R&D developed the CXFS Filesystem (aka “Charon”), a cross-platform distributed file system, to allow synchronization across the service provider's multiple locations. CXFS was first implemented as a Unix filesystem supporting Solaris, Linux, BSD, HPUX, etc.

  • Ported the filesystem to the Windows platform
  • CXFS required binary compatibility across platforms, while maintaining the user-interface "feel" of the native OS
  • Abstracted the Unix code base as needed into platform dependent and platform-independent modules
  • Updated platform-independent code base to be cross-platform with Windows
  • Provided Windows implementation of platform-dependent code using VC++ and MFC
  • COM library to host tools in the Microsoft Management Console (MMC)
  • MMC-hosted formatting of CXFS volumes
  • MMC-hosted editor of the contents of CXFS volumes
Accelerator developed a state-of-the-art application, designed from the ground up, to capture mining engineering expertise and provide results in easy-to-understand productivity reports.

  • Minimal information from equipment manufacturers' simplified "glossy specification sheets" was expanded through reverse-engineering into a complete component-based simulation of the machine, using object-oriented modeling
  • The machine could then be driven on a virtual mine site to predict production and ownership and operating costs
  • Rigid and articulated haulers, loaders and other types of mining equipment were modeled
  • Modeled components included body, frame, engine, torque converter, gearing, linkage, tires including tread detail, soil, road profile, etc.
  • Mining operation details were fed along with the wide number of variables involved into a Monte Carlo style simulation that produced clear easy-to-read productivity reports
  • Earlier work included development of software that used fluid mechanics to automatically size the plumbing of fire sprinkler piping, and proof-of-concept software to balance hauler and loader usage across a fleet, minimizing the equipment required for a given multiple-phase production schedule.
Epi-Systematics developed an expert system in the field of infection control.

  • Extensive relational database design and programming
  • Rapid application development with Borland Delphi controls connected to database fields
Contract work, as well as personal projects. Personal projects include an open-source https API server, an open-source node.js module for git semantic versioning, a stock trading application, a cloud-based music system with web and all-platform clients, Firefox add-on development, several web sites, several Windows applications, etc.

  • See the project examples section for more details.

Stanford University
MOOC Online Algorithms coursework through Coursera.org
2013-2014

University of Florida
Gainesville, Florida
August 1990 - December 1990
Completed Graduate-level Civil Engineering and Computer Science classes
Attended for one semester to finish the last few credits required for VU degree closer to home

Valparaiso University
Valparaiso, Indiana
August 1984 - May 1989

Completed the following degrees and programs at VU:

  • Civil Engineering BS
  • Computer Science minor
  • Cooperative Education Program participant (one semester, two summers)
  • Humanities Honors College Associate Degree
  • Overseas Study Program participant (one semester)

University of Florida
Gainesville, Florida
Summer 1983
Attended program for high school students to assist in graduate-level work; involved in fluid dynamics studies

Edison Community College
Fort Myers, Florida
August 1982 - May 1984
Enrolled in college coursework during last two high school years, full-time during senior year

Cypress Lake High School
Fort Myers, Florida
August 1980 - May 1983
Valedictorian of the 350-member class of 1984

  • rad-scripts an open-source node.js module for git semantic versioning
  • quick-http an open-source https API server
  • bitpost control panel for my projects
  • Hang The DJ cloud-based music system with web and all-platform clients
  • A better Trader stock trading application
  • Github Michael's github profile
  • Stack Overflow Michael's stack overflow profile
  • Favorites: modern C++, node.js, bootstrap, d3, C ARM development
  • Cross-platform C++11 and beyond with boost, C++ Standard Library, my own reusable libraries
  • Full-stack development of map-based data-driven websites using Play, Scala, leaflet, haproxy, mongodb, cassandra, bootstrap, etc.
  • Cross-platform embedded C development targeting ARM and other small chipsets with cross-compiled libcurl, libwebsockets, zlib, openssl, busyboxy libraries
  • Custom C++ http RESTful server, RESTful client, websockets client written with the boost ASIO library
  • Cross-platform desktop development using C++ and Qt for docking UI, http web services, multimedia playback, sqlite database, multithreading, etc.
  • Android and iOS app development via native SDKs, as well as cross-platform write-once HTML5-based web app development using Jquery Mobile (jQuery, jQuery Mobile, jPlayer, javascript/DOM/AJAX, LAMP backend)
  • Linux C++ development with gcc, CMake/autotools, gdb/ddd, valgrind
  • Windows C++ and C# development with Visual Studio, unmanaged and managed (.NET), Enterprise Library
  • Mozilla Firefox add-on development, greasemonkey scripting, Firebug debugging
  • Continuous integration automation using Jenkins, command consoles built with node.js, bash scripting, command-line building
  • Cloud computing with Amazon EC2 web servers running apache, mysql, PHP, etc.
  • VM usage with VMWare on blade servers
  • Service bus application integration with webMethods, Java and C# web services, Oracle stopros and triggers, etc.
  • Linux use and administration, with Gentoo and Ubuntu distributions, including kernel and userspace compiling and configuration, scripting with python, bash, PHP, perl, software like apache, mysql, Kodi/OpenELEC media center, mediawiki, wordpress, trac, phpBB, and hosting of many websites.
  • Development environments have included: Visual Studio on all flavors of Windows; IDEA IntelliJ+CLion/Qt Creator/Eclipse/sublime/emacs/Android Studio/etc. on gentoo, fedora, ubuntu, arch, centos, RHEL, Raspian flavors of linux, usually using i3 tiling window manager; OS X with Xcode