About the Job
- Develop and maintain Python-based system services, daemons, and tools running on Linux devices.
- Own delivery of well-defined features and services, breaking requirements into implementation tasks and identifying dependencies.
- Build RESTful APIs and WebSocket interfaces that expose machine state, diagnostics, and control to frontend clients.
- Implement device communication and error handling in collaboration with hardware and firmware teams.
- Develop reliable service behavior, including startup, shutdown, reconnection, logging, and recovery from faults.
- Collaborate with React developers to align API behavior, system state, and user workflows.
- Ability to expand beyond your comfort zone in the stack - this means helping where needed.
- Improve CI/CD pipelines and development tools.
- Maintain clear documentation for APIs, services, communication interfaces, and debugging procedures.
Working conditions
- Working from the office in Waterloo at least three days per week.
About You
- Post-secondary education in Computer Engineering, Software Engineering, Computer Science, or a related field, or equivalent practical experience.
- Solid experience developing and debugging in Linux environments, including services, permissions, processes, and command-line tools.
- Experience designing and consuming REST APIs, JSON interfaces, and inter-process communication.
- Familiarity with networking concepts, including sockets, HTTP, WebSockets, timeouts, and connection management.
- Ability to independently deliver defined work, communicate tradeoffs, and seek input when requirements or technical risks are unclear.
- Strong collaboration and documentation skills across hardware, firmware, and frontend teams.
Nice to haves
- Experience with computer vision, image processing, camera calibration, or sensor fusion.
- Experience developing and deploying software on System-on-Module (SoM) platforms.
- Firmware development experience, including C/C++, microcontrollers, and embedded debugging.
- Experience communicating with hardware over USB, serial, CAN, IB2C, SPI, or GPIO.
- Familiarity with embedded Linux build systems such as Yocto or Buildroot.
- Exposure to React, TypeScript, and frontend integration.
- Familiarity with Docker and container-based deployment.
- Experience with real-time data streaming, telemetry, and diagnostics.
- Experience, or at least an interest, in robotics, motion systems, automation, and physical products.
Why Were Awesome
- Were a scaling company - youre hired to have a voice, not to be a cog.
- Three weeks vacation to start, plus a paid end-of-year company shutdown.
- Flexible work hours.
- Family-friendly work culture.
- Collaborative work environment.
- Located in the growing tech hub of Waterloo, Ontario, close to restaurants and easily accessible by public transit.
If this sounds like a good fit, reach out! Wed love to hear from you.
Compensation
The expected base salary range for this role is CAD $110,000-$135,000. Final compensation will be based on job-related skills, experience, and qualifications. This range reflects base pay only and does not include bonus eligibility or benefits.
Posting and application details
This posting is for an existing vacancy. Applications are reviewed by a member of our team; we do not use artificial intelligence (AI) to screen, assess, or select candidates. Selected applicants will be contacted regarding next steps.