CALEB GIMPEL
  • Home
  • About
  • Projects
    • Garrow Space Systems
    • SFU Satellite Design Team
    • Miscellaneous
  • Work History
  • Contact

Miscellaneous Projects

Automation Codebase Refactor

SpaceAlpha Insights Corp: Oct 2022- Jan 2023​

SpaceAlpha Insights obtained much of its technology from a previous company, including the vast majority of the existing codebase. The original test framework was a custom-built class structure which manages the environment setup and teardown, test start, test organization and results compilation. Because the entire framework was custom build, when something breaks, it is up to the test team to isolate and fix the problem; when a test fails, it could be unclear whether the failure is a result of the test case or the framework itself. Additionally, when writing test scripts, the framework would call everything as part of the setup and it was difficult to pick-and-choose pieces to test independently of other components.​
My task involved taking the existing components and stripping it down to its components for a more modular approach to testing. As part of my approach, I created a 68 page document detailing my requirements for the new framework, the technology we would use and I outlined our specific implementation.
​The new test framework was built on Pytest and leveraged fixtures to manage the setup and teardown of each component and was organized into class objects based on the functionality. The class hierarchy was generally grouped as follows:
  • Base Class: Environment setup, such as loggers and report handling
  • ​Subclass 1: Model setup, including simulated devices
  • Subclass 2: Hardware setup, including real devices and power-on sequences
  • Subclass 3: Collection of tests, grouped based on functionality​
The above approach made the system extremely modular and portable; many fixtures could be reused across tests, but would never be called in setup unless necessary. The final test framework enabled developers to easily re-use our test framework for their unit tests with standardized logging and reports automatically handled.​​
​

Tools: Documentation & Planning, Linux, OOP, Pytest, Python, SSH Remote, VSCode
Picture

Simbox

Motorola Solutions Inc: Nov 2021 - Apr 2022

Simbox is an internal tool used by the ACM Team for development. Most of the hardware used by the ACM team is made by third-parties, so integration with hardware at large scale is critical.
​
Simbox solves development for large scale applications. The service is a simulator requestor web application; a user may request 1..n simulators and the web application automatically manages the selection of an available virtual machine, pulls the image and deploys n containers. The proof-of-concept uses a single image designed outside the company, but future iterations of the project can easily integrate any simulator image.​
The web application is written in Python using a Model-View-Controller (MVC) architectural pattern. When a user requests simulators, the job is saved to PostgreSQL and the task is announced as available to the backend using a publish-subscribe message queue. Deploying many containers can take significant time, so the application was designed to work with multiple instances of the backend without duplicating results.​

When a new virtual machine is created, its docker engine is registered with Portainer. Portainer acts as a single access point for a tools developer to manage resources and track how many simultaneous instances are currently running.​​

Tools: Azure, Docker, Redis, REST API, Portainer, PostgreSQL, Python

Home Media Server

Personal: Oct 2021 - Nov 2021

While I worked at Avigilon, they deprecated some of their appliances and gave staff cases of old, underpowered Linux servers. In researching how to best use these servers, I discovered Plex and Owncloud, two applications that can be easily deployed and used as a personal media server.​
​
The servers are installed with 8GB storage, so I disassembled the unit and replaced the SSD with a 2TB HDD and a copy of Ubuntu 20.04. After some configuring of settings, I managed to install both applications and link them together so any media loaded to my Owncloud will automatically appear in my Plex.
​
I soon discovered that to access both web applications using my home router would not work as they both share the same IP Address and port. To resolve the routing issue, I installed Nginx as a reverse proxy using Docker; the proxy acts as a layer on top of my server and handles incoming traffic based on the hostname.
​
Tools: Docker, Linux, Nginx, Owncloud, PC Assembly, Plex
Picture

Automation Breakout Board

Avigilon: Sep 2019 - Sep 2021

Repeatable test results are key in Quality Assurance, which is why the Automation Breakout Board (ABB) was created. Avigilon integrates their software solution with multiple third-party hardware vendors, and ABB acts as single interface that works with any general hardware. This custom PCB enables the integration of control panels, token readers, inputs, outputs and a Raspberry Pi.​
​
The entire circuit was assembled and tested by hand; as hardware requirements scaled up, new boards were built and tested before bringing into production.​

Once ABB was proven to provide repeatable results, collections of vendor hardware and ABB were assembled together on PCBs and were made available to the entire development team. The creation of ABB came at a critical time with the COVID-19 pandemic as it enabled remote validation and testing of physical hardware. ​

Tools: Autodesk Eagle, Digital Multimeter, FastAPI, I2C, Oscilloscope, Raspberry Pi, SSH, Soldering Iron, 3D Printer
Powered by Create your own unique website with customizable templates.
  • Home
  • About
  • Projects
    • Garrow Space Systems
    • SFU Satellite Design Team
    • Miscellaneous
  • Work History
  • Contact