- Expert in Software/Hardware interfaces, APIs, Abstraction Layers and Emulation.
- Object Oriented Analysis, Design and Programming. SOLID Principles and Design Patterns.
- Hardware Interface APIs and Abstraction Layers, design and programming. Firmware command protocol design and version management.
- Excellent verbal and written communication.
- Windows desktop GUI application development. MFC, Winforms/GDI+ and WPF applications.
- MVC and MVVM architectural patterns.
Programming Languages and Disciplines: Microsoft Visual Studio, C, C++ and C#. Win32 APIs and .Net Framework/Standard/Core application/API design and development.
USB Peripheral APIs and Abstraction layers: Barcode scanners, Biometric devices, printers.
Hardware Connectivity Protocols and Buses: USB, Ethernet and Wi - Fi. RS232/485/UART, CAN, SPI, I2C. Bluetooth Classic and Low Energy.
Network Protocols Analysis, Design and Programming: DNS, DHCP, FTP/TFTP, HTTP etc. Custom in-house protocol analysis and design. TCP/IP and Sockets. OSI reference model. Wireshark use and log analysis.
Network Communication Security: SSL/TLS, X.509 Certificates and PKI.
Project Management: Waterfall and Agile/Scrum. Team leadership.
Version Control Systems: Git/Github, TFS, Perforce and others.
Staff Software Engineer and Team Lead
- Conceived, Designed and Developed a software emulator for BD’s line of automated medication dispensing systems known as Confidential
- Written in C# using the .Net Framework BCL and Winforms, this emulator allows developers and other staff to quickly create simulations of large scale (many medication storage devices) Confidential with which to exercise the application against.
- It allows them to exercise and test workflows that would otherwise be unavailable to them without a specific type of medication storage device.
- Without this emulator, developers would need to spend considerable time acquiring, finding space for, and reconfiguring hardware.
- It is also useful to tech-writers to quickly get a Confidential emulation up and running to interact with the application to produce user guides and other technical documentation.
- I’ve been maintaining and extending this emulator for over 14 years. (C# and .Net Framework development, Emulation.)
The Designer, Developer and Team Lead
- The legacy application software had become rigid and difficult to maintain, test and release.
- The new project would be written entirely in C# and the .Net framework and would be a WPF application. Using OOA/D/P best practices, SOLID principles, and both existing (GOF) and in-house identified design patterns, the new Confidential application Confidential was a success, and a critical part of the new project.
- The legacy software was plagued by spaghetti code because of the variety of types of medication storage devices that had been invented over the years.
- The new Confidential abstracted away the differences in firmware and mechanical behavior of the devices by using a strategy design pattern and would be known as the “Storage Device Access” layer.
- The Confidential also has a “firmware management” layer that is used by other applications.
- During this project I collaborated with the electrical/firmware engineers to design the binary protocol that would be used over TCP/IP to communicate commands, replies and events between the Confidential and a smart bus controller embedded in the Confidential.
- The protocol was secured using TLS.
- The Confidential also provides software interfaces for interaction with station USB peripherals such as barcode scanners, biometric devices and printers.
- Developed an applicated that makes use of the Confidential and is responsible for ensuring that storage device firmware is at the correct version prior to the main application being launched.
- Firmware is collected in a “package” with binary, HEX and metadata files that the application reads at start-up.
- The metadata provides the information necessary to determine which devices need to be updated and is stored in XML files.
- Developed and maintain a Hardware Test Application (HTA) in C# using the .Net Framework and WPF for the GUI.
- The HTA also makes use of the Confidential and is used by Production and Field Service staff, and hardware manufacturing vendors, to test both individual components as well as completed Confidential assemblies.
- It has a mode where the user is automatically walked through test sequences identified based on the types of devices attached to the system and produces reports once the tests are completed.
- It also has a mode where Field Service technicians can issue fine-grained commands to the devices to enable custom trouble-shooting scenarios.