Career Summary

I am a passionate programmer, doing what I love for a living.

I first taught myself programming (VB .NET) early on in high school for a website idea I had. Shortly after, I became addicted to the creative possibilities and my passion has never left me.

I enjoy building creative solutions to complex problems (and the teams surrounding them) that provide high value to the end users. Using simplicity, expressiveness and maintainability to incrementally and iteratively provide value, I can ensure that the solutions I build are built-to-last, while also being flexible enough to reflect constantly changing requirements.

While I am comfortable in many languages/environments, what I enjoy the most is .NET/React/TypeScript (Angular too, but I haven't gotten my hands dirty). The early part of my career had been primarily focused on Windows, but I tend to lean more on unix operating systems (Linux/OSX). I'm my strongest in a terminal, which Windows just isn't well-suited for.

I also love the CI/CD side of engineering. Working with a team/organization to determine the best approach to commit and deploy with confidence is a challenge I will always take. Once developers get into the groove of developing features without fires to be hosed or tooling to fight, life becomes a little better for everybody.

I manage a few open-source projects in different languages, including JavaScript, C# and Go.

Also, I'll be the first to tell you that I've made mistakes in my career, but I use them to my advantage. Remember, incremental improvement!

Work Experience

Senior Software Engineer

Med X Change
Nov 2012 - Present

Managing a team of people on a wide-array of projects across different languages/platforms. Managing the internal DevOps life-cycle (commit, review, build, version, deploy, and support) for embedded systems (Linux and Windows) and web projects (Docker/ASP.NET MVC/etc).

Some key points:

  • Develop/design recording software for the medical industry.
  • DirectShow and gstreamer for encoding/decoding with various video formats, including H264/MP4.
  • WPF and Qt/QtQuick implementations of digital recording software on embedded devices.
  • iOS/Android application development using the Xamarin platform.
  • C++/C for internal libraries used to connect to record video and connect to hospital networks (DICOM/HL7).
  • Custom Embedded Linux distros for embedded devices (Yocto).
    • Brickless update design.
    • Read-only boot with tmpfs overlay for stability and resilience.
  • Compilation and cross-compilation (vc++, gcc, MAKE, CMAKE, meson, autotools, etc).
  • ASP.NET (and .NET Core) for physicians and patients to view studies.
  • Manage IT infrastructure for software and project management.

Technologies used:

  • .NET
  • ASP.NET MVC
  • WPF
  • Qt
  • Docker
  • SQLite
  • MongoDB
  • Postgres
  • C/C++
  • DICOM
  • HL7
  • Embedded Linux
  • Google Cloud Platform
  • Continuous Integration
  • Unit Testing
  • Atlassian

Software Engineer

MethodFactory
Jun 2011 - Dec 2012
  • Managed/maintained production instances of IIS/SQL Server for many high-volume sites (coleman.com, rawlings.com).
  • Managed a prescriptive framework written in C# .NET 4.0 used to accelerate and model application development according to industry best practices.
  • Managed an internal automated NuGet feed (using TFS Build) for delivering updates.
  • Database design and development. Managing indexes/performance. Troubleshooting with SQL Profiler.
  • Created a process to managing SQL Server Database Projects (SSDT) so that framework libraries can be distributed with matching .dacpac files for client schema updating/generating. The process also included automated deployments of database schema and projects from TFS builds for Continuous Integration and validation of the build.
  • Wrote and managed C# TFS Build Activity that creates and deploys multiple NuGet packages.
  • Implemented an enterprise WCF Service Host Factory that uses IoC (Dependency Injection) to resolve contracts for runtime composability.
  • Created WCF Services using REST/JSON for use on client side widgets.
  • Created an MVC3/jQuery eCommerce UI foundation for eCommerce websites. Delivered to projects in a .zip file delivered by a VirtualPathProvider for easy updating and ensuring stability. Added support for overriding at every level (css/js/view) for client specific adjustments using a MVC ViewEngine and a client-side dependency management framework (Cassette).
  • Implemented/created a jQuery plugin in ASP.NET MVC3 to enable extensible keyboard navigation with 100% client-side interaction from the point of entry.
  • Designed enterprise N-tier framework to be reused by multiple enterprise clients (Coleman, Nuk, Rawlings).
  • Designed/developed software for medical equipment for capturing and recording pictures and videos using MSMQ/NServiceBus/SignalR to send messages between the website and hardware.

Technologies used:

  • .NET
  • ASP.NET MVC
  • SQL Server
  • TFS
  • Microsoft Test Manager
  • Microsoft Commerce Server
  • Windows Server 2008/2012
  • Microsoft BizTalk

Freelance Software Engineer

Adept Web Studios
Jun 2009 - June 2011
  • Re-wrote nopCommerce from WebForms to ASP.NET MVC. Contributed it back to nopCommerce for the V3+ release.
  • Design and develop custom solutions from cms to e-commerce using the appropriate technologies.
  • Created a Lucene.NET implementation for faceted searching in eCommerce solutions (nopCommerce).
  • Wrote and sold plugins and themes for nopCommerce.
  • Wrote a CMS integration for nopCommerce to bring advanced CMS technologies to an eCommerce driven website.

Software Developer

Dataline Associates
Sep 2009 - Aug 2011
  • Managing catalog and orders (25,000 products) using MSMQ to handle product/inventory updates.
  • Integration into 3rd party websites for price comparison and analytics.
  • Managing web server (Windows Server 2008 R2) and database for high-uptime and high-load.

Skills & Tools

Languages

  • C#
  • HTML/CSS
  • JavaScript/Node
  • TypeScript
  • Go
  • C++/C
  • Unix Shell Scripts
  • SQL
  • Python

Client-side

  • React
  • redux
  • MobX
  • webpack
  • Gulp/Grunt
  • Jest
  • Sass/LESS
  • Bootstrap
  • SSR
  • Electron
  • jQuery

Operating systems

  • Unix/Linux
  • OSX
  • Windows
  • Windows Server

Linux distributions

  • Yocto
  • Ubuntu
  • OpenSUSE
  • Arch
  • Gentoo
  • VoidLinux

IDEs/Debuggers/Compilers/Source Control

  • Visual Studio
  • Visual Studio for Mac
  • Visual Studio Code
  • Rider (JetBrains)
  • Qt/Creator
  • Git
  • TFS
  • SubVersion
  • GCC/G++
  • Clang
  • Makefile
  • CMake
  • Meson

Databases

  • Postgres
  • MongoDB
  • SQL Server
  • SQLite
  • Cassandra

Projects

  • An integration of .NET and QML for cross platform and high-performance desktop applications. I built a thin C layer with C++ shared pointers to integrate the two garbage collectors (.NET and QML-JavaScript). AppVeyor and Travis CI are configured to ensure a suite of tests pass for each commit on every major platform (Linux/OSX/Windows).

    Technologies used:

    • C/C++
    • .NET Core
    • QT
    • Continuous Integration
  • Darch    godarch.com

    Think "Dockerfiles", but for immutable, stateless, graphical (or not) environments, booted bare-metal. I use this tool as my daily driver for Linux. Each distribution contains a custom initramfs that overlays a temporary file system over your read-only Darch images. This allows each boot to be a clean boot. Any change made to the runtime (apt-get install, etc) are discarded on each boot. Any change you want persisted has to be scripted and baked into your recipes (which is a good thing!).

    Technologies used:

    • Go
    • Docker
    • containerd
    • Continuous Integration
  • A boilerplate project used for a few personal projects of mine. It is a clone of the default ASP.NET template, written in React, that includes login (internal/external) and account management. There aren't many opinions and uses only well-established libraries and patterns. It also includes server-side rendering, allowing ASP.NET MVC controllers to provide the data needed to render each page on the server. After the initial render, client-side routing handles all future navigation. Since the server renders JavaScript, there is no need for Razor anywhere.

    Technologies used:

    • React
    • ASP.NET
    • .NET Core
    • Entity Framework Core
    • gulp
    • webpack
    • redux
    • Server-side rendering

Education

  • MCPD/MCTS .NET Web Developer
    MCP ID: 8482776
  • Associates of Liberal Arts and Science
    State College of Florida.
    GPA 3.6 2008-2010