As a Senior Erlang Engineer, you will be involved in all aspects of the Go Factory Internet of Things platform infrastructure and operations. Responsibilities will include building the next generation of our distributed platform. You will be working on the server-side design and code for our platform, systems, and mobile clients.
The backend infrastructure is written entirely in Erlang, and uses Riak NoSQL and Google Protocol Buffers for our messaging from disk to client. We have developed some exciting tools that will eventually be open-sourced, including a code generation tool that auto-builds the platform, Erlang record mappings, protobuf encoding and decoding to Erlang records and JSON, and generates all the C, Objective-C, and Java client bindings that are used by the various SDK’s and embedded libraries.
First and foremost, we are looking for someone with deep experience real world distributed, scalable, and fault tolerant systems, with a core understanding of network protocols. While we are looking for a Senior Erlang Engineer, being an Erlang Engineer is not necessarily the number one skill we desire. If you are an expert in another functional programming language like OCaml, ML, or Haskell, or even C/C++, you should be able to learn Erlang quickly.
Our goal is to develop and foster a full stack skillset, where “full stack” means: Erlang, Android, Java, Javascript, C/C++, Objective-C, Protocol Buffers, BLE Beacons, Bluetooth, and all supported network attached devices and protocols. You will be exposed to, and working with a variety of network-attached devices and sensors in several industrial settings.
What You’ll Be Doing
- Developing core infrastructure that can be deployed on-premise or in the cloud using Docker, or similar framework to deliver as an appliance-like product
- Designing and building our next generation distributed Erlang IoT platform
- Developing and integrating a streaming persistence like Apache Kafka into our platform while maintaining our goal of an appliance-like product
- Developing integrations into OpenStack and CloudStack for dynamically sizing clustering
- Developing scalable API’s
- Architecting servers and services that will support terabytes/pedabytes of data from all the connected things
- Building out our Connected Workforce and Auto-Dispatch Asset Management products
- Building tools that will allow us to manage 100s of millions of connected things in real-time
- Monitoring system uptime and errors to drive us towards a high performing and reliable product