Areas of Expertise

  • Python App Development

Industries

  • Life Sciences

Technology Used

Challenge

An international group in the Life Sciences field reached out to Six Feet Up to assist with its new product launch. The company had an initial prototype running and needed assistance with their Linux-based embedded device technology.

The initial discovery outlined that various technology decisions had already been made, such as the use of Asynchronous I/O in Python, as well as the Angular codebase. The team also considered an Electron application and identified hardware specifications that the embedded software would run on. Several key challenges were unveiled, such as the need for 100% test coverage, a clear and reliable end-user update process, and a fast approaching deadline. 

It was ascertained that with the number of team members needing to contribute code to the project, as well as the desired collaboration with the client’s development team, a well thought out CI plan would be essential. 

Implementation Details

The Six Feet Up team first focused on reviewing the code that had already been implemented and compared that to the known remaining specifications presented by the client. The team knew that there were additional discovery items to be completed, as well as some unknowns that were to be addressed as part of the scope. 

Knowing that the timeline was tight, managing the critical path of tickets in the sprint backlog was essential to ensuring that enough progress was made each sprint to reach the end goal. A key consideration was anticipating the workload and division of labor across expertises and pulling in the right person for the right task along the way.

With the key areas of focus identified, the team organized as an agile team and the work was broken down into 5 sprints, with each sprint spanning a length of two weeks. In each of the two-week blocks, the sprint was kicked off with the entire team and went over the plan for the upcoming work. The team also held daily sprint stand-ups along the way, and ensured that all blockers were addressed swiftly to keep the team moving.  

The project began with the setup of all developer environments so that engineers could gain as much knowledge of the existing prototype code base as possible. The team addressed many open questions on the current system configuration. They offered a number of technology suggestions for the implementation that would drive further work in later sprints.

A major challenge to overcome was the boot sequence, including the update method and how the system would handle data persistence and potential device update failures. The team tackled the issue by proposing an ideal partition layout and a deployment method for handling the image downloading to devices in the field. A sophisticated process for updates was devised to ensure that the correct parts and pieces of the hardware were updated successfully. 

The proposed plan would:

  • Lay out the partitions for the device
  • Identify boot sequence and method of the boot sequence controller
  • Determine specific control of the software on the device
  • Break down packages for the system 
  • Follow a CI workflow

Along with the layout plan for the embedded device technology, the team was tasked with implementing a workflow that would handle a number of continuous integration pre-deployment checks. 

The CI Workflow handled:

  • Unit tests for the code
  • Building the update packages - application and Linux OS
  • Building the factory install media - including the disk image, partitions, with app and OS

At the same time that a portion of the team was identifying and recommending directions on the update method, the team's front-end developers were making updates to the application user experience. The teams collaborated on the design of three new views, as well as on the user interactions of those view states.

The team adhered to a number of rigorous testing and monitoring requirements to ensure that the device technology had the stability to perform well once deployed to the field. This included:

  • Logging significant system events to assist in device malfunction and debugging
  • Audit trails for documentation and delivery sign-off
  • Detailed process for pull request review and logging

Surfacing issues and questions quickly throughout the project turned out to be as key as closely documenting the implementation details. 

Results

A close, ongoing collaboration between the two companies throughout the project’s three-month span was instrumental in the successful delivery of a working embedded device application to be used for genomic sequencing in laboratories around the world.

Are you ready to start your next project?

Let's Talk