Task 1 - Duration: 1 Week
Read documentation on how to run a benchmark, setup Git/Gerrit pre-commit hooks, and learn the mechanics of Juju (anatomy of a charm).
Task 2 - Duration: 1 Week
Flash Mellanox NICs with updated firmware and confirm that it can PXE boot. This required a lot of ipmitool, bash scripts, and reading Mellanox documentation.
Task 3 - Duration: ~8 Weeks
Re-write software infrastructure to be compatible with newer version of Juju. This meant re-writing almost the entire Python codebase that automates the recreations of benchmarks on readily deployable machines in a server lab to be compatible with a newer version of Juju (the teamโs deployment system). In addition to re-writing for newer software infrastructure, my job was also to migrate the code to Python 3, document the whole process, design changes to a team of 25 people.
Task 4 - Duration: ~4 Weeks
Create software to automate flake8/pylint codestyling on Gerrit patch set updates and provide in-line feedback on the Gerrit front-end. This was accomplished through the use of Jenkins and about ~400 lines of Python automation code. This task required a lot of string parsing (Regex), reading Gerrit API Docs, and desigining a well-engineered process for auto-linting.
Task 5 - Duration: ~3 Weeks
Designing algorithm to estimate benchmark run times given a yaml experiment file. Thought of idea to use chi-squared independence test to decrease estimation time by an average of around 700%
Important skills learned/improved:
- Software Development Life cycle - Research/Learning, Development, Code Review Process
- Strong Coding/Scripting Skills
- Python, Bash/Shell scripting
- Continuous Integration with Jenkins
- Using statistical tests to increase efficiency of calculations
- Oral Presentation Skills
- Computer architecture and Workload Analysis
Pictures!
Silly pic ๐ Floor 3 squad ๐ฅ Climbing ๐ค