
Software Developer, Advanced Processing
- Waterdown, ON
- Permanent
- Temps-plein
- Design, develop and validate software in C/C++ for real-time control, communication, and signal/image processing systems
- Design, develop and validate Embedded Linux kernel modules and device drivers, including board bring-up and peripheral control
- Optimize real-time algorithms and image/video processing pipelines for performance, determinism, and low-latency behavior
- Follow trends in industry and academia related to signal/image processing (e.g., GPU acceleration, computer vision, machine learning, etc.)
- Produce technical documentation as needed to document your project work
- Participate in design and code reviews for your projects
- Assist in the development of test and verification plans as required
- Strong proficiency in C/C++ for embedded systems, including low-level hardware interaction and memory management
- Experience developing Embedded Linux software, including kernel modules, device drivers, and real-time system tuning
- Solid understanding of real-time system design, including deterministic behavior, interrupt handling, and timing constraints
- Familiarity with digital signal/image processing concepts and their practical implementation on embedded platforms
- Exposure to computer vision (e.g., image segmentation, object tracking) or computer graphics (e.g., rendering pipelines, GPU shaders)
- Familiarity with inter-process communication, messaging protocols, or embedded middleware (e.g., DDS, RTI, ZeroMQ)
- Experience with “tools of the trade” such as IDEs/editors, debuggers, compilation toolchains and source control management systems
- Ability to read and understand technical papers, datasheets, and interface control documents (ICDs)
- Familiarity with both Windows and Linux as host operating systems
- Familiarity with Agile software development practices
- Good communication and interpersonal skills
- Real-time rendering pipeline development, including lighting, shading, and post-processing effects
- GPU programming and shader development (HLSL, GLSL, or compute shaders)
- Familiarity with tools like NVIDIA Nsight, PIX, or similar GPU profilers
- Background in computer graphics, computer vision, or simulation systems
- University degree in Software Engineering, Computer Engineering, Electrical Engineering, Computer Science or a related discipline.
- Relevant Masters or postgraduate degree is an asset
- Preferred 2+ years of software design and implementation experience