← Back to projects

Evercam

Lead Elixir engineer (full-stack)

Introduction

Hello — I have been a programmer for the past 10 years in Node.js, Elixir, and Ruby, with an appetite to learn and try new things; I mostly learned through R&D. I love to contribute to open source and tend to dive into strange, complicated problems. I still have plenty to learn, but I ship answers in production.

About the company

Evercam provides construction cameras, timelapse, and device/cloud tooling — from Rails-era apps through a migration to Elixir/Phoenix microservices, Nuxt frontends, and edge firmware.

More about Evercam

My role

Lead Elixir engineer (full-stack across Node.js, Elixir, Ruby, Vue/Nuxt, React, Apollo GraphQL) over several years, remote from Islamabad.

  • Maintained Ruby on Rails admin and dashboard applications with RSpec & Capybara.
  • Maintained and built features in dashboard and admin applications written in Ruby on Rails.
  • Maintained and worked on features in a Ruby Sinatra API; led a rewrite to Elixir Phoenix with GraphQL, Swagger docs, and unit tests.
  • Made a large architectural move from monolith to microservices, separating business and camera logic.
  • Migrated Ruby on Rails application to NuxtJS (Vue) and connected it to the Phoenix API.
  • Created a Ruby on Rails application for computer vision — Eyes of Things: Mobile Camera Demonstrator.
  • Built Snapshot Extractor using RabbitMQ fan-out topology in Elixir with Oban, GenServer, RMQ publisher, and BroadwayRabbitMQ.
  • Set up RAID and Nagios for physical server monitoring on Hetzner servers.
  • Set up and maintained SeaweedFS clusters for uploading camera snapshots.
  • Built tooling to accept Kafka message streams using BroadwayKafka with Protobuf decryption in Elixir.
  • Built and maintained embedded Elixir (Nerves) at the edge with Phoenix backends for telemetry, device health, and field operations alongside IP cameras (Hikvision / Axis).
  • Implemented hot code upgrades using Distillery in Elixir and Ansible — write-up on Medium.
  • Developed and maintained a microservice in Elixir to handle 1000+ camera workers using RabbitMQ with producer/consumer logic, DynamicSupervisor, and a one-for-one strategy.
  • Built tooling to generate maps using GeoJSON and CoffeeScript, deployed on Heroku.
  • Built and maintained a Node API with React and Apollo GraphQL using MongoDB.
  • Maintained services on AWS Elastic Beanstalk, Amplify, EC2, S3, Route53, and Lambda.
  • Worked with PostgreSQL, Firebase, and MongoDB.
  • Implemented Redis cache in the Elixir/Phoenix API for read-heavy paths.
  • Built and maintained Phoenix API and NuxtJS apps for live streaming JPEGs using channels and Phoenix PubSub; coupled APIs and microservices with Erlang RPC.
  • Created and maintained device management and monitoring — edge-commander.

Technologies

ElixirPhoenixRuby on RailsNuxtGraphQLRabbitMQAWSNerves