Full-Stack developer @Pingflow
About Pingflow
Pingflow is a startup that specialized in visual management. Their main product is a no-code software as a service (SaaS) that allows anyone to design big, interactive dashboards that automatically displays up-to-date information from various data sources. These dashboards can be created simply by dragging customizable elements on a canvas, and connecting them to data sources such as APIs, SQL databases and spreadsheets.
In addition, the software includes powerful data transformation pipelines that can help extract and sanitize the relevant data coming from various sources.
My contribution
I lead a small team of developers and participated in the recruitment process. I made architecture decisions and encouraged code reviews.
Our product, Pingview, was having difficulties handling the load and was impossible to scale horizontally. I led the development of a new major version of Pingview that could handle far more users thanks to a stateless architecture, and added a significant amount of new features that were difficult to add to the legacy system
I migrated the back end from dynamically-typed, vanilla Javascript to Typescript
I migrated the front end from server-side HTML and jQuery to Vue.js
I introduced Redis as a cache layer for our data, and as a pub/sub system for live data updates. This contributed to reduce the response times of the application, and allowed the platform to handle thousands of data updates per second.
I brought Scala and more specifically Akka to the back-end stack, thinking it would help us achieve faster data updates and easier horizontal scalability. Actors and message-passing made it easier to reason about the live data update that were dispatched throughout the system.
It was my first experience with Scala in production, and surely there are many things that I would do differently. I had no knowledge of the Typelevel ecosystem at the time, and very little knowledge of the JVM; but this new version of Pingview was a success overall and it encouraged me to pursue learning Scala.
I worked in close collaboration with a DevOps engineer in order to reach maximum scalability and availability of the application. We distributed the application as a set of Docker images, and deployed it on a Rancher cluster