About Zipline
About You and The Role
As an Autonomy Platform engineer you will be responsible for delivering a computer system that enables a highly maneuverable aircraft to dodge power lines that are not on any map, avoid buildings that aren’t shown on satellite photos, stay clear of other aircraft and safely find the right open area to drop life saving supplies. This will entail conceiving and implementing methods for transporting, processing and storing high-bandwidth data across multiple processors in real-time. You will need to find the best techniques to run advanced machine learning algorithms on resource constrained embedded hardware. You will study entire datasheets in order to help select, test, and productionize novel sensors using techniques that produce a flawless stream of output over thousands of flight hours.
What You’ll Do
Work closely with hardware and embedded software teams to make the right design decisions to ensure the highest-quality data can be acquired, with outstanding reliability and a focus on efficiency in time, cost, and effort
Hold a relentlessly high bar for quality across a team that tackles a wide domain of software from acoustic signal processing to image capture
Set examples of best practices and processes so that algorithm developers have the tools they need to understand and optimize their designs, making sure they’re getting the most value out of the hardware onboard
What You’ll Bring
You’ve deployed real-time safety-critical systems where runtime and post-mortem analysis were equally supported
You bear the battle scars of fighting for deterministic behavior in your software… but think the battles are worth fighting anyway
You know all the tricks to wring performance out of your favorite platform’s neural network accelerators — zero copy, quantization, batching, etc.
You have internalized best practices from working on a codebase with many collaborators, from continuous integration to code review
You love digging into all levels of your technology stack, whether it’s the build system, the network stack, or the application layer itself
You know your way around aligning data between sensors–and why, even with the best of planning, it doesn’t always work as expected
Proficient in C or C++ and Python
Familiar with running the Linux kernel on resource-constrained systems and with real-time requirements
Understands what makes code run fast or slow, and how to use multi-core or GPU hardware to make things run fast every time
Familiarity with the best way to get data in and out of a computer–and keep track of where it went
Bonus points for experience developing device drivers for microprocessor peripherals or familiarity with Rust