Senior Software Engineer 22017 - PRESENTImagination Technologies
Technologies: Git, Perforce, ModelSim, NCSim, Riviera-PRO, Compiler Design, Makefile, MySQL, VHDL, Verilog, CSH, Tcl, C, Perl, Pandas, NumPy, Confluence, Unit Testing, Pytest, Python
- Managed a six-person team. Mentored staff in best practices to increase productivity and efficiency. Delivered projects on time and within forecasted budgets.
- Achieved better performance in the team by adding to the software engineering industry with professional procedures such as Agile/Scrum methods and test-driven development with regular review cycles.
- Changed the quality, readability, and usefulness of development flow to the next generation.
- Completed a Python-based project to make the generation of IP libraries within the flow unique. The project included a high-level understanding of OOP techniques, regular expressions, parsing methodologies, and performance analysis. Added new features (compiler) to do pre-processing of Verilog written code. The project overall saved enormous user time in their daily development/testing/auto-code generation.
- Created software testing procedures to have automatic testing of the software development process in Jenkins automation server. Created more than 100 Jenkins jobs with their own branch structure (DEV/MAIN/REL) to keep various releases stable. Configured infrastructure and integrated tools needed to automate build, validation, and unit testing of code, which triggers the development team to always increase the code coverage without breaking existing flow and backwards compatibility. Worked across functional (development/testing, deployment, systems/infrastructure) and project teams to ensure continuous operation of build and test systems (CI).
- Completed a Python-based project using a REST API to work with Confluence pages and with their contents. Parsed Confluence pages (XML data) and CSV files, and handled user requests with Python NumPy/Pandas. Project saved users' time to get notified instantly and have a better view in Confluence pages whenever some release flow metrics were unexpectedly changed.
- Fulfilled a Python-based project to parse C/C++ header files and compare the development and release codes to be sure headers are not broken during development. These are mostly register definitions. Wrote a simple C/C++ compiler using Python and parsed files with advanced-level regular expressions. The project saved users' time without breaking the backwards compatibility of various release flows.
- Involved all facets of the employee lifecycle, from recruitment and onboarding to training, learning and development, coaching, performance management, and offboarding.
- Provided strong user services by using the internal communication tools to make sure customers are satisfied with their daily needs and requirements by dealing with random tools/techniques/programming languages. Improved the ability for learning new technologies and understanding how to utilize them in a customer-facing environment.
Engineer for Proof of Concept Delivery2019 - 2019InnerSpace Technology, Inc. (via Toptal)
Technologies: Arista, APIs, WiFi, Apache, Python
- Created Python classes/scripts to fetch the client's locations (rssi data) using a Python request framework, parse the received data, and then send it to a pulsar topic for a long term storage.
- Created Python classes/scripts to merge the different locations using JSON data (rssi data) into one common dataset with time range specified by the user and then pushed the new datasets to another Pulsar topic. Used generic arg and config parsers to play with different features.
- Fetched all the data for the locations tree and device client data.
- Created a Python script to fetch the location tree and device client data by using Mojo REST APIs and dump them into a JSON file.
- Used Notion to fully document the user guide, dev specs, and other technical and statistical details for the whole project.
API Automation Developer2018 - 2018TekPerfect (via Toptal)
Technologies: Confluence, Python
- Created a Python script using a REST API to work with Confluence pages. Searched for specific patterns and changed user groups' restrictions per page.
- Documented usage of the flow, script, and page restrictions.
Senior Embedded Software Engineer2013 - 2017Energize Global Services
Technologies: Magnetic Stripe Card, Contactless Payment, Chip-and-PIN, Pos terminal, Bash, Unit Testing, Python, EMV
- Created Python/Bash scripts to test the POS terminal by handling screens, validating terminal messages, and checking output data. Added existing functionality in regression/daily processing using Python.
- Tested POS terminals using a general test framework.
- Supervised a team of six. Mentored and guided employees, ensuring all were trained in project knowledge and capable of performing assigned tasks.
- Checked that all tasks given to staff were done on time and to the required standard.
- Trained terminal and server configuration to allow run tests in the general test framework.
- Created Python scripts to test the police mode of POS terminals. Integrated testing with the daily test environment.
Embedded Software Engineer2013 - 2013Energize Global Services
Technologies: Magnetic Stripe Card, Contactless Payment, Chip-and-PIN, Pos terminal, C, Bash, Python, EMV
- Worked in the clients’ offices in Belgium for knowledge exchange purposes and had training in the clients’ offshore development center.
- Created ~500 unit tests for all existing functions in GTF and covered 80% of functionality.
- Created an online attempted transaction flow by using C on payment terminals based on embedded Linux running on ARM processors.
- Created automation scripts by using Python/Bash to test POS terminals.
- Analyzed and re-wrote inefficient GTF functions.
- Implemented multi-user mode for POS terminals using C and created Python scripts to test new functionality.
Senior Test Automation Engineer2012 - 2013Instigate CJSC
Technologies: NCSim, Riviera-PRO, FPGA, MySQL, Verilog, Java, CSH, Tcl, Perl, Python, ModelSim
- Tested a proprietary FPGA compiler by simulating failures with Aldec, NCSim, and ModelSim.
- Created testing scripts using Python (confluence API, Network API, MySQL) to automate testing of the FPGA compiler.
- Created a script to parse, collect, and fill daily test results in a Confluence page (mainly Python).
- Trained in the client's USA offices on design flow analysis and manufacturing testing.
- Supervised a team of four members by monitoring the performance of junior staff and by maintaining a clean, safe, and friendly working environment.
Hardware Design Engineer2011 - 2012Instigate CJSC
Technologies: Riviera-PRO, FPGA, Tcl, Perl, Verilog
- Developed an AES algorithm by using Verilog and handled verification of static timing analysis reports in FPGA through design flow (synthesis, place, and route).
- Created a general test framework to ensure output data integrity with regression/daily testing.
- Tested the client's tool by simulating RTL designs and technology mapped net-lists.
- Created scripts to test the client's tool by doing CCW and F-System in FPGA through design flow.
- Created scripts to compile and test the output data.
Software Engineer2010 - 2011Instigate CJSC
Technologies: CUDA, OpenCL, Octave, C++
- Developed Bing Maps and GPS functionality for a WeTab application.
- Developed a regular expression matching application using CUDA and parallel programming and got 10x speedup comparing with single execution of code.
- Developed an algorithm for solving linear matrix LU decomposition using C++/Octave and supplemented new functionality in the client's application.
- Developed an image (RGB and YUV) scaling application using C++.
- Trained in digital signal processing.