About the Role
About the Role
The Software Engineer will focus on RISC-V firmware and driver development, as well as software hardening and security tools. The role involves working with embedded operating systems, compilers, and cloud-based infrastructure, primarily using Rust and C.
What You'll Do
- RISC-V firmware and driver development.
- Software hardening and security tools.
- Embedded operating systems (in Rust and C).
- Compilers, code generators, and linters.
- Simulators and emulators (e.g. QEMU).
- Electronic design automation (EDA) tools.
- Performance and code size analysis.
- Cloud-based infrastructure (such as continuous integration pipelines).
Who You Are
- Solid experience with C or Rust.
- Strong algorithmic and problem solving skills.
- A degree in Computer Science or equivalent experience.
- A high standard of written and spoken English.
Bonus Points
- Experience designing, implementing, and maintaining large-scale or modular Rust codebases.
- Expert understanding of unsafe Rust, FFI, and low-level systems programming.
- Strong proficiency in C; familiarity with C++ and Python are a plus.
- Solid understanding of compiler internals; experience with LLVM is a plus.
- Experience with build systems and reproducible tooling (e.g. Bazel, Nix, uv).
- Experience developing for embedded or resource-constrained environments, including real-time systems.
- Familiarity with CI/CD for embedded or systems software.
- Strong knowledge of computer architecture; some experience with assembly languages (x86, RISC-V); familiarity with hardware design is a plus.
- Good knowledge of Linux.
- Experience contributing to open source projects.
- Higher degree levels and academic research experience are highly valued.
Requirements
C or Rust experience
Solid experience with C or Rust is essential.
Algorithmic skills
Strong algorithmic and problem solving skills are required.
Computer Science degree
A degree in Computer Science or equivalent experience is necessary.
English proficiency
A high standard of written and spoken English is required.
Nice to Have
Experience designing, implementing, and maintaining large-scale or modular Rust codebases is preferred.
Expert understanding of unsafe Rust, FFI, and low-level systems programming is highly valued.
Solid understanding of compiler internals; experience with LLVM is a plus.
Experience developing for embedded or resource-constrained environments, including real-time systems, is beneficial.