General:
- Background in electronics and electrical engineering.
- Windows and Linux, desktop and embedded platform custom software development.
- Knowledge of Object-oriented design principles, implementation, and design.
- Knowledge of Design Patterns and Finite State Machines.
- Windows Service/Linux Daemon startup, configuration, and operation.
- Formal Linux RPM and DEB package deployment management, Windows Setup and Installshield deployment.
- Preemptive Multi-threaded development for desktop and embedded systems.
- Distributed control in desktop and embedded systems via CAN bus or TCP/UDP protocols.
- Modular design, data structures and algorithm development and testing.
- XML configuration with W3C XSD design, composition, and schema validation.
Communications and Networking:
- Full OSI communications stack implementations.
- Internet-based systems.
- TCP/IP, UDP, and raw socket programming.
- Programming the Linux IP stack.
- Network design and implementation.
- Network security (HTTPS, FTPS, TLS/SSL, SNMPv3, X.509 PEM certificates, key management).
- Network protocols (TCP/IP, UDP, PPPoE, PTP, NTP, ARP, RARP, ICMP, Tunneling/IP Encapsulation, etc.).
- SNMP Agent functionality and custom MIB creation.
- FTPS/FTP client support for importing/exporting dynamic configuration and exporting log files.
- HL7 Interfaces to electronic medical records.
- Custom networking protocols for both control and data plane.
- PTP IEEE 1588 and NTP time synchronization.
- Cisco Router Configurations and Networking.
- SNMP Management.
- Communication techniques: TDMA and CSMA algorithm development.
- Long-Term Evolution (LTE) Wireless communications.
- Network device simulators/emulators for control and data planes.
- Cisco Router Configuration and SNMP based management and monitoring.
- RESTful API implementations.
- Experience working with RF systems and digital communications.
- Experience with design and operation of Radio-frequency (RF) systems.
- Knowledgeable with communication protocols such: I2C, SPI, UART, etc.
Embedded Systems:
- Experience developing applications which run a variety of OS/RTOS targets.
- Embedded firmware design and development.
- Solutions for resource constrained embedded systems.
- Experience with a variety of CPU architectures (Arm Cortex, Intel, Coldfire, TI MSP430 etc.).
- Embedded Linux platform tuning for near real time behavior.
- Embedded software systems development.
- Embedded RTOS: Coldfire MQX, TI-RTOS, TI DSP/BIOS, uClinux.
- Embedded Linux: Arch Linux, Embedded Debian, UbuntuMATE, OpenWRT, OpenEmbedded, Linaro, ADI Linux, MontaVista Linux.
- Embedded system platform boot code.
- State machine based behavioral model implementations.
- Lock free wait free multi-threaded application development.
- Implementation of single tier HTTPS server for embedded systems.
- Embedded cross platform development with and without GUIs based on the Qt framework.
- Designs for low power consumption using dual processors (e.g. MSP430 and TI DSP).
- Hardware device drivers and board support packages.
- Qt/C++ development for embedded systems.
- Experience developing low level device drivers for hardware peripheral interfaces such as SPI, I2C, USB, LCD, ADC, DAC, RFIC.
- USB skills working with embedded USB host and device hardware and firmware.
Enterprise Systems Development and Databases:
- Experience developing with SQL and RDBMS(s): Microsoft SQL Server, Oracle, SQLite, MySQL, NoSQL.
- Client server designs of multiple tier architectures.
- Database design, normalization, and client-server application development.
- Mainframe connectivity and data mining.
- Image file validation and file type/format conversions.
- Computer Output to Laser Disk (COLD) storage.
- Transformation of Microsoft Excel based records into a distributed multi-user solution using either Microsoft Access or SQL Server database back-ends to provide support for business intelligence, analysis, and reporting.
- Experience with advanced query design, stored procedures, views, functions, index design and SQL performance tuning techniques.
Device Driver Development:
- Device drivers: Windows and Linux.
- ODBC drivers to access mainframe database content.
- USB host drivers for embedded systems.
- SPI, I2C, UART, RS-232, RS422, FPGA, CAN bus, Ethernet, EHPI, and flash device drivers.
- Dual processor high precision time synchronization.
Languages, Frameworks, and Graphical User Interfaces (GUI):
- C/C++/C# GUI for Windows Forms.
- .NET Framework, Model–View–Controller (MVC).
- Qt, Java, and wxWidgets cross platform GUI development.
- C# cross platform embedded and desktop development using Project Mono.
- Linux bash scripting.
- National Instrument’s LabView and HMI.
- Microsoft Foundation Classes (MFC), ActiveX/OLE, Windows SDK programming, COM/DCOM.
- Office Automation, Office Add Ins, MVC, OpenGL, ATL, WordPress, and DirectX.
Web Development:
- Web development for desktop and embedded environments.
- Implementation of single tier and multi-tier web solutions.
- Django/Python web framework.
- C#, .NET Framework, ASP.NET, MVC.
- Java, Python, HTML5/CSS3, JavaScript, jQuery, JSON, Bootstrap.
- WordPress, Drupal, CMS, Adobe Dreamweaver, Adobe Photoshop.
- RESTful service-oriented architectures with public APIs.
- Lighttpd embedded web server and FastCGI interface and protocol.
- Single tier embedded web server with Bootstrap content.
Reverse Engineering and use of Open Source Projects:
- Legacy application rework to provide resiliency to network defects.
- Use and modifications of open source as part of broader solutions.
- Re-purposing a portable computer by source code analysis, disassembly, and modifications.
- Modifying a PTP client software stack to add functionality.
- Modifying an LTE UE software stack to mine for and message link metrics.
- Extending an open source PPPoE software stack for use with multiple connections and threads.
- Extending a Qt/C++ based HTTP web server to provide support for the secure HTTPS protocol, basic browser authentication, role based authentication, and role based differences to web presentation and access.
- Extending a Qt/C++ based web server to provide support for REST APIs and Ajax messaging.
- Implementing SNMP Agent capabilities using a legacy SNMP MIB.
- Creating a real-time spectrum and waterfall display viewer for the EMANE network emulation framework.
Integrated Development Environments:
- Microsoft Visual Studio, QtCreator, Eclipse, LiClipse, Xamarin, MonoDevelop.
- MontaVista DevRocket, Crossworks for TI MSP430, Code Composer Studio for TI DSPs.
Productivity and Testing:
- Automatic database driven source code generation tools with user created templates.
- Internationalization conversion and XLIFF support.
- Visualization tools to support development and diagnostics.
- Network and Wireless traffic/test tools such as JPerf/IPerf and Wireshark.
- LabVIEW and related test setup and execution.
- Unit, Integration, Functional, System, Stress, Performance, Usability, Acceptance Testing.
Software Development Processes:
- Analytical and prototype development.
- Enhancement to standard models and tools.
- Full Software development lifecycle. Ownership of complex engineering projects throughout life-cycle including specification, architecture, design, implementation, testing, and post-release maintenance.
- Experience in a structured development environment with source control and bug tracking systems.
- Source Control: GIT, Subversion, and Mercurial.
- Bug Tracking: Bugzilla and Mantas.
- Development of design documentation (requirements, flowcharts, data flow diagrams, state transition diagrams, etc.).