About the role
You’ll build the low-level software that makes Cortex a dependable industrial controller. Your work will span the controller runtime, embedded Linux services, and interfaces to physical hardware. You’ll turn application intent into working machine behavior and own the implementation, integration, testing, and debugging that gets it into customers’ hands.
You’ll work directly with the founders, electrical engineers, and application team. This role requires strong programming and computer fundamentals: understanding how memory, concurrency, operating systems, communication, and timing affect a real system, then using that understanding to build and debug it.
Gardena, CA • Full-time • On-site five days a week
What you’ll build
- Develop low-level software for the Cortex runtime and the services that execute controller applications.
- Integrate industrial I/O, peripherals, and device communication with electrical and controls engineers.
- Build embedded Linux services and reliable interfaces between applications, the runtime, and hardware.
- Debug issues across software and hardware using traces, profiling, logs, and bench measurements.
- Improve latency, resource use, concurrency, and recovery behavior through measurement and targeted changes.
- Validate functionality and failure handling with automated tests, hardware-in-the-loop testing, and reproducible fault cases.
- Ship controller updates and diagnostics that make deployment and field troubleshooting dependable.
What you’ve already proven
- You’ve built and debugged low-level software that communicates with or controls physical hardware, and can explain what you personally implemented, tested, and resolved.
- Strong systems programming fundamentals, demonstrated in Rust, C, C++, or another relevant language.
- You can explain how memory, concurrency, timing, and hardware interfaces shaped your implementation, how you measured its behavior, and what you changed.
- Practical Linux experience and the ability to isolate failures across processes, device interfaces, and hardware boundaries.
- You use tests and instrumentation to establish correctness and diagnose difficult failures.
- You take ownership of working software, communicate tradeoffs clearly, and collaborate across disciplines.
What gets you here faster
- Rust experience, embedded Linux runtimes, device drivers, or integration across Rust and C/C++.
- Industrial automation, robotics, or device communication using protocols such as CAN, Modbus, SPI, I²C, or UART.
- Hardware-in-the-loop testing, real-time systems, controller updates, or diagnostics for deployed devices.