About The Role
We are seeking a Software Engineer with deep expertise in functional programming languages, interpreters, and modern web technologies to help shape the future of our next-gen CAD software. In this role, you'll work on KCL, our new programming language for 3D design. You'll help design language features, identify and improve rough edges or hard-to-use features, and improve its interpreter runtime. You'll also integrate KCL into its purpose-built IDE, Zoo Design Studio, allowing users to build KCL programs using a familiar point-and-click GUI. You can get a feeling for KCL in the KCL book. You’ll work across Rust, WebAssembly and TypeScript building advanced developer-centric features. This is a highly collaborative role where you’ll partner with our team to push the boundaries of interactive, code-driven design.
What You’ll Do
- Integrate the interpreter for a domain specific language (DSL) with a GUI written in TypeScript
- Implement code-mods and other code refactoring tools
- Add features and maintain an interpreter written in Rust, running in WebAssembly
- Maintain a language parser and syntax highlighting
- Develop and optimize the frontend of our modeling app, focusing on performance and user experience
- Collaborate with backend teams to design and implement robust APIs that support the app's code-driven design functionality
- Enhance the app's UI/UX by leveraging TypeScript, React, and XState, ensuring that the interface is both powerful and easy to use
- Develop delightful CodeMirror extensions that bridge the gap between the user's code and the 3d-model
- Implement advanced AST/code-mods, CodeMirror enhancements, and deep integration with WebAssembly (Wasm) for performance improvements
- Utilize XState for state management to maintain app consistency and reliability across various user interactions
- Apply a deep understanding of JavaScript and browser internals to improve app functionality and performance
What You’ll Need
- B.S. Computer Science or a related field, or equivalent professional experience
- Demonstrated professional experience and proficiency in software development contributing to highly scalable and reliable systems
- Proficiency with Rust, and Javascript/Typescript
- Experience with functional programming languages
- Knowledge of language parsers and interpreters
- Knowledge of AST driven code-mods
- Experience with Git
- Solid understanding of modern techniques and algorithms related to workflow design
- Familiarity with libraries and tools for programming language interoperability
- A testing-based and automation-focused approach to engineering