Service Details

Software Development Details

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.).