Job Detail

Distributed Systems Developer (Elixir)

Inseriert am: 22.02.2018

About us


At Nomoko, we develop the platform to interact and build on top of what we call “the digital twin” of the world.


Our core is built on our in-house developed proprietary capturing technology that is UAV ready and allows us to capture entire cities in centimeter detail at unprecedented speed. We have also developed our own, distributed 3D modeling pipeline that allows us to model extremely large datasets and transform them into beautiful, photorealistic 3D models. Those models will allow us to build the digital twin of the world.


Our platform will enable customers to interact with the 3D data, query it and use it to build specific applications that require ultra realistic 3D data to exist.


About the job


We use Elixir (and Erlang) extensively to distribute and coordinate 3D reconstruction tasks across server clusters. Rather than a monolithic image processing system run on workstations, we develop and maintain a clustered, task-oriented pipeline built for paralellization and fault-tolerance.


We’re looking for distributed-systems engineers to join us in building this system to achieve new scales of computation and extend its capabilities with new features. In this role, you’ll be at the intersection of working in Elixir/Erlang (used by our distributed computing team) and C/C++ (the languages used by our image processing developers). You will help transition code from running on a single-machine during development to a load-balancing, cloud-oriented image processing and 3D reconstruction process.


If this sounds exciting for you, please apply!


Responsibilities 



  • Develop the job distribution system for deployment at scale

  • Create bindings for C++/CUDA image processing code


Core Skills



  • Have worked with Elixir / Erlang extensively

  • Hands-on experience with OTP, having built an understanding of the core principles and architectural components (GenServer, Supervisor, GenStage, gen_statem, etc.)

  • Familiarity with the unique challenges presented by distributed systems

  • Understanding of commonly used job scheduling / pipelining practices

  • Basic ability to read/write C/C++ for the purpose of maintaining BEAM bindings

  • Fluent in English


Advantageous Skills



  • Familiarity with SQL

  • Experience with computer vision libraries in the past (e.g.: OpenMVG, OpenCV)

  • Interest in machine learning


Technology Used



  • Elixir and Erlang​

  • PostgreSQL for relational data storage

  • libcluster, ecto, raft, among other BEAM libraries

  • Plug and Phoenix Framework for user interaction components 


 

Details