Luna · Jan 10th 2020
Senior Graphics Developer
Luna is looking for a senior graphics developer to take charge of the design, development, and evolution of a new WebGL-based GUI for Luna, a project said by Singularity University to have the potential to change the lives of one-billion people. If you bring strong technical skills and a passion for performance, this could be the role for you.
As a senior graphics developer you'll be a key part of bringing the vision for Luna 2.0 into reality, with your work being integral to the realisation of the next iteration of Luna. You'll be able to collaborate with world-class team of skilled engineers, community managers, and business developers (from Bloomberg, PayPal, and GitHub to name a few), and make your indelible mark on the future of Luna.
What You'll Do
As a senior graphics developer, you'll be responsible for designing and building a high-performance renderer based on web technologies for use in the Luna IDE: Luna Studio. This will involve:
Working closely with stakeholders and customers to design the new GUI for Luna Studio.
Developing a design for the new renderer that will be used to implement this GUI.
Implementing the new renderer in a high-performance manner on top of WebGL and Rust (via Web Assembly).
Building a next-generation UI framework using this renderer for use in Luna Studio.
Using this UI framework to build the new GUI for Luna Studio itself.
Debug performance issues to ensure that the renderer is capable of achieving high performance even on low-powered hardware.
Creating visualisations for data science libraries using the renderer and D3.js.
The Skills We're Looking For
We have a few particular skills that we're looking for in this role:
A strong focus on both user experience and aesthetics.
3+ years experience with WebGL (or OpenGL).
A deep understanding of graphics abstractions including: VAOs, FBOs, PBOs, buffer types, and asynchronous computation modes.
A deep understanding of GPU techniques including: efficient buffer management, efficient GLSL construction, high-performance vector and font rendering, post-processing, 3D scene description (with nested objects), lights, cameras, and animation.
2+ years experience with Rust, including experience writing unsafe code for FFI and performance, and using the macro system for metaprogramming. You should be able to write idiomatic rust code.
Practical experience building high-performance graphical interfaces for end-user-facing applications.
As part of the hiring process for this job posting we're very interested in your previous work in these areas. Please link us to your Rust projects, blog posts and shadertoy shaders if you have them! It's important for us to understand your experience at the start of the hiring process.
It would be a big bonus if you had:
Experience with Rust's WASM toolchain, with wasm-bindgen, and experience with WASM itself.
Experience with visual programming systems such as Houdini, Max/MSP, Lab VIEW, or Touch Designer.
Knowledge of D3.js, and experience using it to visualise data.
Avoid the confidence gap. You don't have to match all of the skills above to apply!
Who You'll Work With
You'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.
As 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 possibility of equity as time goes on.
How To Apply?
Send us an email at email@example.com, 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.