Senior Type-System EngineerLuna is looking for a senior type-system engineer to help build the next generation interpreter and runtime for Luna, a project said by Singularity University to have the potential to change the lives of one-billion people. If you have strong technical skills and a passion for all things compiler, then this role could be the one for you.As a type-system engineer you'll work as part of the compiler team to design and implement Luna's new type system, including its underlying theory, type-checker, and inference engine. This wok is _intrinsic_ to Luna's evolution, and will provide you with the opportunity to collaborate with a world-class team of engineers, community managers, and business developers (with experience at Bloomberg, GitHub, PayPal, to name a few), making your mark on Luna's future.What You'll DoAs a senior type-system engineer, you'll be working on the design and development of Luna's new type-system, in conjunction with the rest of the compiler team, to help support the language's evolution. This will involve:
- Determining and formalising the theoretical underpinnings of the new type system in a way as to ensure its soundness.
- Both theoretical and practical treatments of the theory behind Luna's type system.
- Working with the broader compiler team to implement the type-checking and type-inference engines as part of the greater interpreter.
- Using the type-system's information to improve the interpreter's functionality and performance, as well as how it interacts with the users.
The Skills We're Looking ForWe have a few particular skills that we're looking for in this role:
- Practical and rich experience writing code in a functional programming language such as Haskell or Scala, including experience with type-level programming techniques (3+ years).
- Experience working with the theory behind powerful type systems, including row types, type-checking and type-inference algorithms, and dependently-typed systems.
- Practical experience building real-world type-systems, including facilities for both type-checking and inference.
- An awareness of the UX impacts of type-systems, and a willingness to minimise their often-intrusive nature.
- Practical experience in building large and complex software systems.
It would be a big bonus if you had:
- Experience writing Java and Scala code, as these will be used to implement the type-system.
- Experience in writing comprehensive regression tests for both type-inference and type-checking systems.
Avoid the confidence gap. You don't have to match all of the skills above to apply!Who You'll Work WithYou'll be joining a distributed, multi-disciplinary team that includes people with skills spanning from compiler development to data-science. Though you'll have your area to work on, our internal culture is one of collaboration and communication, and input is always welcomed.We firmly believe that only by working together, rather than putting our team members in their own boxes, can we create the best version of Luna that can be.The DetailsAs part of the Luna team you'd be able to work from anywhere, whether that be at home, or on the go! We have team members distributed across the world, from San Francisco, to London, to Kraków. We welcome remote work and flexible schedules, or you can work from the Kraków office (or our planned SF office) if you'd like. We can provide competitive compensation and holiday, as well as the possibilityof equity as time goes on.How To Apply?Send us an email at [email protected], and tell us a little bit about yourself and why you think you'd be a good fit for the role! You can also tell us about:
- Some of your past work or projects.
- Why you'd like to work on Luna, and where you imagine Luna being in 5 years.
- The most important features of a team that you'd like to work in.
- Whether you take pride in your ability to communicate clearly and efficiently with your team.