Time for another Sponsor Spotlight! Today we’re talking to Sebastian Probst Eide, who’s the CTO at Aircloak…
Please tell us a little about Aircloak
Aircloak was founded in 2012 as a spin-off from the German research institute, the Max Planck Institute for Software Systems in Kaiserslautern in the south of Germany. Our initial goal was to make non-intrusive targeted advertising possible, but the focus rapidly shifted to privacy preserving analysis of sensitive data instead. Today we are headquartered in Berlin in Germany.
The product we are offering is a software layer (effectively a SQL proxy) that organizations with sensitive data install between a database with sensitive user data and internal or external analysts that normally would not be allowed to work with the data at all. Aircloak is used in banks today. Banks store immense amounts of rich information on how and where their customers spend their money. For legal and trust reasons access to this data is tightly controlled. Using this data for other purposes than providing bank customers with their transaction history requires additional consent. As a result, data is frequently not used for general analysis and the development of new products at all. With Aircloak this problem vanishes. As the results produced by Aircloak are fully anonymized, data can be safely used and shared without requiring additional user consent.
How did you discover Elixir? (And was there anyone in particular who introduced you to it?)
We got introduced to Elixir through our team member @sasajuric. Up until making the change we had been using Erlang for our backend systems, and Ruby on Rails for customer facing interfaces. As we were making some larger changes to our product we decided to make a wholesale change from Erlang + Ruby to Elixir.
What attracted you to Elixir the most, or what was the biggest advantage of Elixir that was most relevant to you and what you do?
Since we had been using Erlang for quite some number of years we were already very familiar with OTP and how to build reliable and self-healing system using the tools Erlang provides. The change to Elixir was a low effort means of unifying our stack further and removing our dependency on Ruby. One of the biggest improvements of the move to Elixir from Erlang was the reduction in boilerplate and the excellent tooling it provides.
How big is your dev team? How many of your developers work with Elixir?
How did you train your developers? Were there any gotchas in training your developers? (If so, how would you do it differently if you had to start over?)
Coming from Erlang there wasn’t much of a learning curve to speak of. Once the decision was made we transitioned from one day to the other.
All new code was written in Elixir, and whenever we touched existing code we ported it over to Elixir as well. Within weeks most of the code base was in Elixir, and within months all traces of the original Erlang codebase were gone.
What are your policies on remote work?
We decided to build Aircloak as a distributed company from the very beginning. It has made finding developers very easy and has turned out to greatly increase everyone’s quality of life.
By fully embracing remote work it has also forced us to structure our internal communications and project management in ways that ensure everyone is kept up to date with the relevant information they need to stay productive and get their jobs done.
We are currently building up more of a presence in Berlin for functions related to business but have no plans in changing anything when it comes to our technical team. Remote work is and remains a central part of our organizational DNA.
What kind of Elixir related projects have you worked on and how are you using Elixir generally?
Our main product is developed in Elixir. It contains everything from a SQL query parsing and compilation engine, to services that write tailored queries for different database backend types, perform data processing and most importantly data anonymization. We have also open sourced a library we internally use for communicating between individual components in our system, and also rely heavily on the lens library developed by another one of our colleagues.
Were there any difficulties in transitioning to Elixir?
Are there any architectures or methodologies in particular that you follow?
(Such as Agile, The Replaceable Component Architecture, The Single Responsibility Principle, etc)
No. I am personally not a fan of too heavy-handed processes. As our tech team is still small we instead focus on self-contained projects that everyone can work on in isolation. This works well given our remote and distributed way of organizing the team. By keeping the individual projects relatively small (from under a day to a week), and relying heavily on peer-review and feedback, we make sure we stay on track and maintain focus.
Which database systems do you use the most?
While our primary database is Postgres, our product also supports databases such as MySQL, SQL Server and MongoDB as well as more enterprisey databases such as SAP Hana, and SAP IQ.
Which front end technologies do you use the most?
What was your primary language before you discovered Elixir?
Our primary language before moving to Elixir was Erlang. This made the transition to Elixir all the easier as we were intimately familiar with all the concepts around OTP and building systems using Erlang.
How happy are you with your choice in using Elixir? Is there anything in particular that you’d like to see in Elixir?
Elixir is serving us well. We do however miss the rich type systems offered by languages such as Haskell or OCaml. Dialyzer, unfortunately, is not up to the task.
What would you say to other companies thinking about adopting Elixir?
Elixir (and Erlang) is wonderful for systems where you want to support asynchronous requests and background processing. It’s a dream come true if you want to build web frontends and come from environments like Ruby (on Rails) where you end up having to rely on additional (complex) systems for background processing. Having the ability to write products comprising of multiple services all nicely maintained, packaged, and interacting within a single VM is fantastic!
Thank you for answering our questions! Is there anything else you’d like to share? Any plans? News? Tips?
Our product has so far been squarely focused on the enterprise market. The need to work with sensitive data is however equally present in SME and startups too. We are therefore in the process of creating versions targeted at NGOs, startups and SMEs. If you are interested, please get in touch!