Zoo is building the next generation of hardware design tools redefining how hardware products are designed, developed, and built. We are seeking a Software Engineer with deep expertise in functional programming languages to help shape the future of our next-gen CAD software.
Responsibilities:
- 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
Requirements:
- 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