Posted on April 15th, 2019
Roon Labs is looking to hire several software developers during the first half of 2019.
Experience with our technology stack is a plus, but we place more value on the breadth of technologies you’ve worked with in the past. It is important that you are comfortable and experienced working in a large pre-existing codebase and with a variety of languages, toolkits, and technologies, picking up new skills and expertise as needed.
This role is open to all generalist developers who can comfortably work on all areas of our systems and get stuff done.
We are also interested in growing the team in a few specific directions. These are some possible areas of focus, based on the work we have coming up. Experience relevant to these areas is a bonus, and if any of this resonates with you please let us know.
Our mobile applications share one UI codebase across platforms--so this isn’t about building screens. There is some technical debt in our mobile infrastructure, and some expected product touch points are missing or not done well. Furthermore, as we expand the scope of our mobile apps to include streaming/playback away from the home system, there will be a lot of under-the-hood work required to make a lot more of our code run (and perform) on tablets and phones.
A few months ago, we launched Roon Radio, our first machine-learning feature. We have a healthy roadmap planned for future features that incorporate machine learning, and could use some help making these plans a reality. This work would encompass everything from data acquisition/warehousing, batch processing, learning/training steps, and surfacing the results via cloud services, dashboards, or our client applications. In parallel, we are working on ETL and Analytics systems for the rest of the company.
We recently moved our cloud operations to a new provider and containerized everything. While things are up and running, there are definitely some aspects that require shoring up and long term ownership, and we still have some rough patches in the system that we are slowly moving through. Adding fresh perspective, experience, and ownership in this area would be a great help to us.
“End-to-end” Project Ownership
If Roon were a web based product, we’d call this “full stack development”. We are always at work implementing new features or integrating with other products. This generally involves work in several layers--cloud services, the media server, and the user interface. We're looking for developers that can handle the detailed aspects of projects like this without losing sight of the larger goal.
Roon functions like an IoT product in the home. The core of the product is a media server, which manages a music library and streams audio to multiple zones around the home. This can run as software or on a dedicated appliance. In addition, Roon supports many different control points and networked audio devices. The Roon user experience is backed by a set of cloud services which serve up music metadata, recommendations, and so on.
Roon’s client applications are all built in C#, with C/C++ underpinnings. We use Xamarin tooling on iOS and Android. Our software is portable across Windows, Mac, iOS, Android, and Linux. The user interface is built using an in-house UI toolkit that combines a functional-reactive programming paradigm with an OpenGL-based rendering engine.
Our cloud services are built in C#, Node.js, and Python. Our cloud infrastructure runs on Docker Swarm and Google Cloud Platform. We use Postgresql, Nginx, and Elasticsearch.
Our data and learning systems are built using Python (numpy, scipy, scikit-learn, pandas, …), C++, SQL, and Airflow.
While a lot of our code is written in C#, this is not a Windows/Visual Studio/Microsoft’s Latest Dogfood kind of place. We use a limited subset of .NET as a portable runtime environment and most of our developers live on Mac/Linux machines using vim/emacs, make, zsh, and git.
The most active portion of our work day is 12PM-5PM EST. Your typical work hours should overlap that period sufficiently to facilitate collaboration with others. Aside from that, we do not care where you are located or if you need to split up your work hours in a non-standard way.
We offer Health/Dental/Vision (80/20), 401k with match, paid parental leave, and flexible time-off.