Software Engineer, Camera

About you:

You are an experienced embedded software developer with expertise in integrating image sensors into products.  You have developed system software and drivers to support image sensors, and understand how they are integrated in an OS environment - from the kernel through to the application layer.  You are familiar with common bus technologies used by image sensors, and how to interact with them using a processor's peripheral interfaces. You enjoy working directly with hardware - protocol analyzers, oscilloscopes, and JTAG debuggers are your go-to tools.  You enjoy the challenge of working in a fast-paced, multi-disciplinary environment to create compelling new technologies. You’re excited about wearable technologies and want to use your unique skills to shape future generations of our smartglasses and accessory products.

About our team:

We’re the Embedded Software team, and we deliver the firmware and lowest level software that drive our smartglasses and accessory products.  Our team consists of developers with experience in creating robust, reliable software that runs on a wide variety of embedded processors. Our software engineers have expertise in areas such as sensors, digital signal processing, power management, RTOS kernel design, audio, power management, Bluetooth and wireless networking, and display technologies.  Our team works closely with other engineering teams (electrical engineering, advanced R&D, and various software teams) to find solutions to complex challenges.

What you’ll do:

  • Prototype, evaluate, and integrate a variety of image sensor technologies in an embedded-linux environment
  • Write robust, reliable, and efficient driver and application code to support image sensor applications in future generations of Focals smartglasses
  • Work creatively as part of a cross-functional team to solve complex challenges, enabling groundbreaking imaging use-cases in wearable devices
  • Within 15 days you will:
    • Be assigned to a project team and start attending their scrum meetings.
    • Become familiar with the codebase, standards, design patterns, and tools used by the project team
    • Make minor code changes and simple bugfixes to gain familiarity with the development process
  • Within 30 days you will:
    • Work as part of a cross-functional team to bring up new image sensor functionality in an embedded linux/android environment
    • Contribute to code reviews, design meetings, and planning sessions with other firmware developers working in the domain
    • Design a solution and present it to your team for peer review
  • Beyond 30 days you will:
    • Take ownership of the software architecture for image sensor technologies used on Focals smartglasses in the OS and platform layer
    • Active participation as a member of the embedded software community,  representing your project team in cross-functional meetings and product design reviews
    • Demonstrate a commitment to continuous improvement - as an individual contributor, and as a member of a project team

What you need:

  • A desire to be more than just a coder, and to continuously learn as part of a cutting-edge engineering team
  • Strong coding skills in C or C++
  • Experience integrating image sensors into a mobile, wearable, or IoT product at the firmware level
  • Experience integrating vendor-provided driver code into an embedded linux environment
  • Experience writing system-level software (kernel and/or user-space) on application processors and MCUs
  • Expertise interfacing cameras with various buses, including traditional parallel interfaces and MIPI/CSI
  • Experience working with FPGAs and bench prototypes
  • Track record of delivering high-quality software in a fast-paced, multidisciplinary environment
  • Proficiency with a VCS (preferably git)
  • Degree in computer science, engineering, or equivalent (in lieu of degree, minimum four years of relevant work experience)

Bonus points for:

  • Familiarity with Android's Camera stack, including the Camera HAL
  • Familiarity with Video4Linux
  • Experience with real-time video streaming applications
  • Experience with machine-vision image sensors
  • Experience with common high-level machine-learning software toolkits
  • Familiarity with modern C++ techniques, as applied to C++11 and beyond
  • Experience with multi-processor systems
  • Familiarity with power management in embedded systems
  • Familiarity with debugging using GDB
  • Familiarity with Python or other scripting languages
  • Experience using Agile methodologies including Scrum and Kanban
  • Relevant personal projects and open source work
  • People leadership experience

Feel like you can’t tick all the boxes above? If you have some of the skills and experience that we’re looking for and are willing to use your talent to learn the rest, we encourage you to apply!

Why North:

Day-to-day, we challenge each other to constantly raise the bar, encourage unconventional thinking to achieve innovative breakthroughs, and are passionately committed to surpassing our goals. We advocate a healthy lifestyle and promote continuous learning in a flexible work environment. Most of all, we set visionary goals, and we’re passionate about building the best, most impactful products that people will love.

About us:

North, formerly Thalmic Labs, builds products that change the way we see and engage with our world. North’s latest product, Focals, are custom-built glasses with a display only the wearer can see. Focals let you see texts, get turn-by-turn directions, check the weather, request an Uber, ask Alexa, and more — seamlessly and immediately. Founded in 2012, North has grown to a world-leading team of engineers, researchers, designers, and creators committed to building a future where technology is there when you need it and gone when you don’t, hidden by design.