- ASP.NET Core
- Angular (2 - 9)
- Windows Forms (WinForms)
- WiX Toolset (Setup Projects)
- Windows Services
- Microsoft SQL
- Sybase ASE 12.5
Frameworks / Libraries
- .NET Core
- .NET Framework
- Entity Framework
- Azure Service Fabric
Tools (IDEs, etc.)
- Microsoft Visual Studio
- SQL Server Management Studio (SSMS)
- VS Code
- Azure Data Studio
- Android Studio
- SQL Profiler
- Beyond Compare
Source Control / CI / CD
- Azure DevOps
- Azure Pipelines
- TFS (Git and TFVC)
- SourceGear Vault
- Windows 10 Pro (and earlier)
- Windows Server 2019 (and earlier)
- Linux (Ubuntu, Debian, Slackware)
Varis LLC Sep 2019 - Present
Responsible for building full-stack software solutions to handle a large volume of incoming documents.
- Utilized C#, Azure Service Fabric, and Docker to build a series of micro-services which converts, OCRs, and processes a large continuous volume of inbound documents (thousands daily).
- Wrote a .NET 5 (.NET Core) WPF-based monitoring/dashboard application which displays the live status and past statistics of the document services. The application uses MVVM, dependency injection (DI), and unit tests written with MSTest.
- Wrote a WPF-based PDF/TIFF annotation editor using the AtalaSoft DotImage (WinForms) control. The WPF components use MVVM (w/ Caliburn.Micro), dependency injection (DI) (w/ AutoFac), and unit tests written with MSTest.
- Used docker-compose to setup a GrayLog, Prometheus, AlertManager, and Grafana dashboard service. GrayLog is now used by all Varis applications and services for error handling.
BitCollectors Sep 2011 - Aug 2019
Started BitCollecters with his wife in 2011 where their shared expertise in the software industry has been utilized to help several clients implement new custom software solutions or maintain existing ones.
- Created a new software product for Resource Action Program to manage inventory, clients, and shipments. Was responsible for designing and implementing the back-end architecture using SQL Server, ASP.NET Core, and Onion architecture principals. Also handled the majority of development and architecture with the front-end Angular (v6) project.
- Handled the creation of various proof-of-concepts for the CEO and CIO of LifeMed ID, including integration of several biometric hardware SDKs into the WPF front-end. Also created an Android application using the Android SDK which could be used by healthcare providers and their patients to accurately identify patients. Regularly created UI and input automation scripts to automate patient searches within legacy EMR system UIs.
- Worked with the project manager of Maranatha: Volunteers International to build a system that is used for managing dozens of construction projects each year. The application is utilizing AngularJS, Microsoft SQL Server, and ASP.NET Web API.
LifeMed ID Sep 2008 - May 2015
Led the design and development of their core product which assisted with healthcare provider registrations. The system acted as a "bolt-on" service that sat on top of their existing EMR software. It enables healthcare providers to register and issue identity tokens (smart cards, magstripe cards, biometrics, etc) to their patients to streamline future visits and positively identify the patient.
- Built the original core product from the ground up. Originally using .NET 4.0, ASMX web services, Windows Forms, and Microsoft SQL Server, it was eventually migrated over to WPF with MVVM and Web API (RESTful web services).
- Created a Windows Service application that handled the printing and encoding of patient identification tokens and acted as a shared printer. It supported the printing of smart cards, magnetic stripe cards, or patient wristbands with a QR code. It included a WinForms UI that communicated directly with the service through IPC / named pipes. The UI offered configuration options, showed a live log, details on the active card being printed, and a print queue.
- Wrote an auto-updater application that handled the automated deployment of our software to hundreds of users. It utilized a Windows Service to manage the downloading and installing of the files, while a WinForms UI was displayed showing the current status to the user. The service communicated with the UI through IPC / named pipes. The UI would also prompt for the license key and store it with the service configuration to determine which set of files the client needed. File updates were determined by comparing file hashes on the server with local hashes on each workstation.
- Created an internal card layout design tool with WinForms for visually creating the card layouts used by customers to print patient cards. Field positions such as X and Y positions and Z-order were defined in the database for elements such as patient photo, name, medical record #, etc.
- Built a patient portal using ASP.NET MVC, Bootstrap, and JQuery
- Created an input and UI automation library using C# to call Win32 API functions to simulate keystrokes and mouse clicks (User32.dll \ SendInput). Automation steps were defined in a "script" (XML) that allowed for macros to be declared, along with conditional blocks. This was used to facilitate one of the core functions of the LifeMed product.
- Created an internal tool for developing the XML automation "scripts". It utilized AvalonEdit for syntax-highlighting and WPF with MVVM. It allowed staff to quickly and easily develop and debug an automation script with the same core libraries LifeMed used without needing LifeMed setup.
- Created a working proof-of-concept application for the Verifone MX915 and MX925 POS devices. The software allowed patient cards (smartcard and magnetic stripe) to be read to invoke the LifeMed search automation on the healthcare providers' EMR software.
SN Servicing Corporation Mar 2007 - Jul 2008
- Built and maintained several modules for their internal asset management application. Modules utilized .NET, C#, and CSLA.NET remoting framework.
- Maintained a BPO (Broker Price Opinion) web portal with ASP.NET
- Built several Silverlight 2 (beta) proof-of-concepts for the BPO web portal.