Contribute to our portfolio companies’ success by browsing open positions below.

Firmware Engineer at North
Kitchener City, Ontario, CA

About You:

You are a strong embedded software engineer with a passion for crafting elegant solutions to complex problems.  You know how to maximize performance and functionality on devices where memory, CPU cycles, and battery life are precious commodities.  You enjoy working directly with hardware - oscilloscopes, JTAG debuggers, and logic analyzers are your go-to tools. You understand the importance of reliability and determinism in embedded systems, and how to achieve it in practice.  You love working cross-functionally in an environment where engineers, designers, and research scientists come together 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 lower level software that drives 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, real-time systems, audio, power management, wireless, 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 problems.

What You’ll Do:

  • Architect, design, and develop software for the embedded processors within smartglasses and accessory products
  • Write robust, reliable, and efficient firmware to interface with sensors, displays, wireless chipsets, and other peripherals
  • Work closely with other teams to solve cross-functional problems to create compelling smartglass experiences on highly-customized hardware platforms

Main Objectives:

  • 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 bug fixes to gain familiarity with the development process.
  • Within 30 days you will:
    • Take ownership of a feature within the project team.
    • Contribute to code reviews, design meetings, and planning sessions.
    • Design a solution and present it to your team for peer review.
  • Beyond 30 days you will:
    • Take ownership of larger features / technical domains within the project, architecting solutions of increasing scope.
    • Active participation as a member of the 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 developing software for UNIX-like operating systems
  • Experience developing software for 8/16/32-bit microcontrollers in bare-metal or RTOS environments
  • Expertise with standard communication protocols such as I2C, SPI, and UART
  • Track record of delivering high-quality software in a fast-paced, multidisciplinary, and collaborative environment
  • Proficiency with a VCS (preferably git)
  • Degree in computer science, engineering, or equivalent (in lieu of degree, minimum of four years of relevant work experience)

Bonus Points For:

  • Familiarity with modern C++ techniques, as applied in C++11 and beyond
  • Experience with the ARM, Thumb, and Thumb-2 instruction sets
  • Experience with multi-processor systems
  • Knowledge of Bluetooth or other low-power wireless protocols
  • Knowledge of digital signal processing for audio and voice applications
  • Familiarity with the GCC or Clang/LLVM toolchains
  • Familiarity with debugging using GDB
  • Experience with Embedded Linux or native Android development
  • Knowledge of IP Networking
  • Familiarity with Python or other scripting languages
  • Experience using Agile methodologies including Scrum and Kanban
  • Relevant personal projects and open source work

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.