This is a summary of my experiences over many years with respect to software development, C and C++ programming, Python programming, and test development.
Python Development
- 10 years of experience in different jobs.
- Primarily used for development of testing of I/O systems and HW systems.
- Advanced level of Python experience, using versions 2.5, 2.7, 3.11.
- Proficient with “PyCharm” Python IDE.
- Self-enforced use of “pylint” for static analysis of Python source modules.
- No experience in working with front-end or back-end application development (i.e., web apps).
- Very high level of interest in continued SW development using Python.
- Significant projects using Python programming:
- Elaborate test framework for embedded system test.
- Numerous unit tests for embedded system platform API.
- Numerous functional tests for Linux and Windows file system I/O to storage devices.
- Development of many unittest modules for embedded system.
- HDMI/DisplayPort device inventory reporting (video camera and monitor inventory).
- Application to configure and launch VSLint for static analysis of C++ programs.
- Application to extract and format information from production testing of the system for subsequent processing by the JMP numerical analysis application.
- Tool set to extract the platform API documentation from the target system source files, and to generate test module templates to assist in developing final unittest modules.
- Numerous personal productivity tools to help in file management, source analysis, test development, etc.
C and C++ Development
- Early Career work:
- Development of complete operating system platforms in C for embedded systems.
- Development of VxWorks support platform SW in C language.
- Board support packages in C for numerous embedded systems (VxWorks and ad-hoc OS).
- Qualified C++ compiler tools for embedded systems.
- Developed Makefile-based build systems for C and C++.
- Development of C++ based tools for configuring BIOS of laptops (for Dell manufacturing)
- Development of C++ programs to interface various Windows and Linux host systems to HW test devices.
- Primarily C++98 development, some C++11.
- Code inspection, review, debug, and support for million lines of C++ in Seagate embedded system (no direct development of production code; only support).
- Currently in self-directed learning of later versions of C++ and STL through courses in LinkedIn and Wipro Learning.
- Using Visual Studio 2017 and VS Code IDE tools.
- Very high level of interest in new SW development using C++17 or C++20.
Test Development
- 10 years of experience in test planning, testing development, and test execution, primarily for I/O systems and embedded HW system.
- Created a concurrent (asynchronous) test framework using Korn Shell to test virtual storage, based on RDBMS, as shared by multiple computer nodes.
- Developed various test modules in Python for functional testing of:
- Linux System API calls to I/O services
- Fibre Channel interfaces to RAID flash systems
- Storage management commands
- Developed an automated testing framework in Python with Windows-based host test driver application controlling unit tests running on an embedded system.
- Developed and maintained automation of test framework on CI servers (Bamboo and GitHub).
- Reported problems in JIRA tracking system with detailed descriptions and instructions for reproduction.
- Created release documentation for distribution to internal customers.
- Very high level of interest in continuing SW/HW test development.
Embedded Software Development
- In my early career, development of embedded SW for controller boards with discreet devices; in later years, more of a support role of embedded SW and testing of SW on an embedded system of vintage architecture.
- Worked with HW engineers to help specify HW design from a SW usability perspective.
- Worked with HW engineers and test equipment to bring-up new boards.
- Supported manufacturing organization for issues during board production.
- Currently, working at home with personal microprocessor systems (STW32 and Raspberry Pi) to learn current embedded system technology.
- High level of interest in embedded SW development, but need much more hands-on experience.