The Application Software Engineer develops the ECL Command Center and the multiple internal applications on which the ECL runs. The Command Center is a desktop application built with web technologies. It offers scientists a broad suite of tools for designing experiments on the ECL, tracking their progress, and analyzing their results, all within the collaborative context of working alongside other researchers. Projects include: the notebook interface to Emerald’s Symbolic Lab Language (SLL); team-based features for managing projects and end-to-end research workflows; point-and-click command builders that onboard users into the capabilities of SLL; building out the platform for running the web application on the desktop.
We’re a small team, which means it is essential for every team member to be ready to take ownership and lead projects. Feature development and proximity to overall UX are both central in this role, so the Application Software Engineer works very closely alongside the outstanding ECL Design team.
As an early team member helping to build the Engineering team as well as the product, you will also be encouraged to contribute to the software engineering practices we maintain in our own work, and which we bring to ECL as a whole. We strive to be continually critical of our process, cutting cruft and homing in on performance multipliers (such as continuous integration and agile development practices).
Our Tech Stack
Our applications are web apps (React / HTML5 / CSS3) running on the desktop using NW.js, across Windows and Mac OS. Our backend services are written in Go, and deployed on AWS infrastructure in Docker containers, with container orchestration through Kubernetes. Our source code control is on Github, with integration with Travis CI for continuous testing. The Symbolic Lab Language is written in the Wolfram Language. Our stack is always evolving, and we welcome new ideas and technologies which enhance our ability to deliver incredible software.
The Application Engineering role operates primarily in frontend technologies like React and Redux. More broadly, developing the software to enable cloud-based science is an expansive, diverse challenge. A core component of our job is consistently determining the right tools for the job at hand, and diving in to learn these new technologies along the way.