Software Developer

Roon Labs — Company based in New York

via We Work Remotely

Headquarters: New York
URL: https://roonlabs.com/

The Role

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.

Possible Areas of Focus

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.

Mobile Applications
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.

Machine Learning
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.

Devops/Cloud Services
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.

Our Technology

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.

About You

  • You have a healthy curiosity about how things work.
  • You have excellent communication skills, and speak and write English well.
  • You can work independently and own projects to completion.
  • You aren't afraid of doing grunt work when your projects require it.
  • You are comfortable making noise when you get stuck or when something feels wrong.
  • You possess strong computer science fundamentals: data structures, algorithms, programming languages, distributed systems, databases, and information retrieval.
  • You’re a good programmer. You write understandable code with an eye towards maintainability.
  • When things break — and they will — you are eager and able to help fix them.
  • About You

    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.

    To apply: https://roonlabs.com/jobs.html