Principal Security Software Engineer
We are Brain Corp and we build AI software for robots and automation services. We set out to create the most intelligent tools, and now, we power the world’s largest fleet of robots operating in commercial public spaces. By injecting intelligence into solutions from trusted manufacturers , we are able to transform organizations’ manual operations into automated workflows - making the lives of people safer, easier and more productive. Our robots are running around thousands of stores, schools, warehouses, hospitals, offices, airports and more, solving practical challenges with revolutionary solutions. For more information on how we are turning robots into tools that serve a purpose and to learn how you can become a brainiac, please visit: https://www.braincorp.com/.
As a member of the Software Engineering Team, the Principal System Software Engineer is responsible for leading the development and integration of system level components on Brain’s robots. The engineer will be working with different teams on various levels of the robot software stack including: board bring-up, system boot, operating system and the application application layer. These robots solve complex, real-world problems. As a core member of our Software Division, the Principal System Software Engineer will work with our world-class team of engineers and scientists to build a platform for the next generation of intelligent machines. Their experience will be pivotal in advancing our mission: safe, secure and reliable robots everywhere.
Duties and Responsibilities:
- Integrate BSP and work on software bringup on multiple platforms.
- Identify, propose, design, implement, and support new features, fixes, and functionality to move both our products and our software organization forward.
- Deliver software features/functionality that improve the security, reliability and performance of of the software powering Brain’s robots
- Increase the agility/ software release frequency of the team and organization through code refactoring, simplification, and removal.
- Help set and execute on the technical roadmap for our robotic product lines.
- Mentor and train junior engineers as required.
- Help resolve production and customer issues and engineer long-term solutions through root cause analysis and data analytics.
- Other duties and projects as assigned.
- Bachelor of Science degree in computer science, software engineering, or a related field.
- 12 years of experience in system-level software design across all stages of the software development life cycle with a BS or 8 years of the same experience with an MS.
- Experience architecting, designing, implementing, testing, and debugging complex system level software.
- Ability to translate high level requirements into production ready software.
- Ability to provide technical guidance to other members of the team by providing clear architecture definitions and designs in addition to providing feedback in code reviews.
- Experience with hardening Linux in order to provide a secure product including full disk encryption, Trustzone (ARM), or TPMs (x86) and related technologies.
- Experience with Linux board support packages (BSPs) for ARM based SoCs.
- Experience working with Nvidia architectures.
- Experience writing C++11 (or newer), as well as shell scripts for Linux.
- Detailed knowledge of systemd, udev and other configuration and initialization sub-systems used in Ubuntu Linux.
- Experience with kernel development for embedded processors
- Experience with multi-process and multi-threaded applications.
- Experience working with creating Ubuntu debian packages.
- Experience working with securing an IOT device running embedded Linux.
- Strong debugging skills in kernel context.
- Expert level knowledge of operating system fundamentals: file systems, interprocess communication, computer networking, system calls, system resources, security, etc..
Things that make a difference:
- Experience with robotic sensors such as 3D cameras and lidar.
- Experience writing Python applications and knowledge of Python constructs and internals.
- Experience implementing complex build systems with Cmake or other build systems.
- MS in computer science, or related field.
- Extensive experience designing for ease of testing, both at the unit level and and integration test level.
- Track record of delivering quality system software for an IOT based product running embedded Linux.
- Good working knowledge of robotics and surrounding systems.
The physical demands described here are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions. Essential functions may require maintaining the physical condition necessary for sitting, walking or standing for periods of time; operating a computer and keyboard; talk and hear at normal room levels; using hands to finger, grasp, and feel; repetitive motion; close visual acuity to prepare and analyze data and figures; transcribing; viewing a computer terminal; extensive reading; lift, push, carry, or pull up to 10 pounds.
The work environment characteristics described here are representative of those an employee encounters while performing the essential functions of this job. The noise level in the work environment is usually quiet to moderate. Employee is exposed to the typical office environment with computers, printers and telephones.