Verified Expert in Engineering
Real-time Embedded Systems Developer
Brady has three years of experience as a Software Engineer. His experience is predominantly in embedded firmware in C/C++. He also has significant experience with CICD, GitLab, Docker and scripting for test automation and Python. Brady has some experience with networking with Cisco, Type I Hypervisors and full-stack development in Apache, Flask, Go, Bootstrap.
Unix, Windows, Visual Studio Code (VS Code)
The most amazing...
...project I've developed is a dynamic network topology generator for developing and testing networking devices.
Manager of Software Engineering
- Developed new features and resolved issues in the robotics firmware.
- Created and maintained new and existing libraries for interfacing with peripheral sensors and actuators.
- Performed embedded systems networking troubleshooting using an oscilloscope and software debugging.
- Used a CI build pipeline for the robotics firmware.
- Migrated an entire embedded system application from ArduPilot to PX4 autopilot.
- Implemented new features and bug fixes for Qt-based ground control station.
- Developed embedded control software for robotics and UAV (C++).
- Designed and developed various drivers for actuators and sensors.
- Tuned PID controllers gains and actuator timings for robotics and UAV.
General Dynamics Mission Systems-Canada
- Designed and implemented a dynamic network topology generator for developing and testing networking and communications devices, including front-end, API, and back-end services.
- Developed new features and bug fixes in embedded communications software.
- Planned development activities in a SAFe Agile project management environment using IBM CLM software.
- Managed on-premises build, test, and deployment of CI/CD pipelines using GitLab CI/CD, Python, Docker, and XCP-ng.
- Created internal SaaS tools and applications to improve developer efficiency and quality of life.
- Deployed a reverse-proxy server to provide access to SaaS tools across the organization.
- Generated and maintained various documentation, including version description documents, firmware description documents, and numerous how-to guides and white papers.
- Automated the generation and maintenance of test results and verification of cross-reference matrices.
General Dynamics Mission Systems-Canada
- Developed CI/CD build/test/deploy pipelines for 20+ software projects.
- Implemented custom plugins for Wireshark packet dissector.
- Updated release documentation for software components.
Dynamic Network Topology Generator
I designed a network of managed switches that allowed us to create and destroy network topologies dynamically without moving physical hardware. I wrote a REST API using Python Flask and Apache to accept YAML topology files. The network topology specified in the file was then generated by creating VLAN tunnels on the managed switches. Available resources and active tunnels were tracked with MySQL databases.
Later, I developed a command-line interface for the system using Go. The CLI could create, list, and destroy active networks. This interface would cache canonical topologies and reference them by name instead of supplying the file each time you wanted to create.
This dynamic network generator allowed us to double the amount of automated testing time available overnight and was critical for the project's success through the COVID-19 pandemic.
Battery-Powered DSLR Gimbal Prototype
I designed and prototyped the entire project, including mechanical, electrical, and software.
The gimbal was designed to allow rotation around the optical center of the camera instead of the center of gravity. It consumes more power but reduces parallax shifts.
I adapted an open source DSLR control library to control the camera via Arduino microcontroller over USB.
I built a hot-swappable power converter to power the gimbal with power-tool batteries.
The reverse proxy was implemented to provide software services across multiple segments of an enterprise network.
The server included a front-end landing page implemented in Python Flask and Bootstrap. The page had links to various servers proxied by my reverse proxy.
Authentication to access the server used OAuth2.0.
Data Injection and Retrieval Using CLM API
Some examples of collected data include data from network analyzers, test logs, and unit and integration test results.
Data retrieved from the CLM suite was used in automatic report generation.
Python 3, C++, Python, SQL, VHDL, Java, C++11, Go, CSS, HTML, Bash Script, Bash, XML
Software Development, Software Design, Real-time Embedded Systems, PX4 Autopilot, Scripting, APIs, Hardware, Full-stack, Physics, Algorithms, Operating Systems, Electrical Engineering, Digital Signal Processing, Multimedia Processing, Electronics, FPGA, ArduPilot, Cisco Networking, IEEE 802.1Q, Mechatronics, Multimedia, Power Supplies, Prototyping, Robotics, Video Processing, Statistics, Software, RHEL, Proxy Servers, VMware ESXi, Configuration Management, PID Controllers, Control Systems, Unmanned Aerial Vehicles (UAV), OAuth, RPC
Flask, Bootstrap, Windows PowerShell, Qt
REST APIs, Protobuf, API Development
GitLab CI/CD, VirtualBox, Apache, Wireshark, GitLab, IBM RTC, DOORS, MSBuild
Unix, Visual Studio Code (VS Code), Android, Docker, XenServer, Apache2, Arduino, Linux, Windows, Windows Server 2016
Databases, MySQL, Elasticsearch, MongoDB, Redis
Bachelor's Degree in Computer Engineering
University of Alberta - Edmonton, Alberta