Phoenix/Elixir ready for prime time? I'll let you decide: they were both used in live during the main French political show called "L'émission Politique" to help generate a word cloud based on the guest speech. To the date of this writing, the guests were Nicolas Sarkozy (12 millions viewers), Arnaud Montebourg (9 millions) and lately Alain Juppé (13 millions).
tl;dr: Elm allowed me to code a reliable frontend app in a very short time, Phoenix was so easy to grasp that I felt young again while coding the backend administration.
I'm the CEO (CTO, CSO, <put any cool name here>) of Voxolab, a company providing speech recognition analytics for businesses. Lately I've been working for Voxygen, where I had the opportunity to develop a system to generate a live word cloud, based on the most frequent words pronounced by the guest of a political show.
- Record/transcribe the speech of the guest microphone in real time
- Generate a word cloud based on the words frequency in real time
- If possible, use a computer already available at France TV. It can be a different computer for each show.
- Technical people of the show should be autonomous
So, starting from here, I decided to develop a "web solution" that would allow me to record the sound from every computer having a browser installed (to be totally honest, having Chrome or Firefox installed) and to send it to a remote server for transcription.
Here is what I already had:
- Google Chrome installed on the computers of France TV with the guest microphone plugged in
- A live speech recognition system on a remote server
- A python script generating word clouds based on text data
Here is what I needed to do:
- A human ready interface in order to manage the connection between the browser and the speech recognition server
- A backend administration to manage the different shows, the stop words list, …
I decided to use Elm for #1 and Phoenix for #2. I've been writing
Phoenix code in my side projects for only 3 months. Usually, for my business projects, I'm using Python/Flask for my backends and Mithril.js for my frontends. So, why Elm and Phoenix this time?
Elm, mainly for those reasons:
- I knew I would have to refactor the code a lot during a short period of time. I wanted to be confident while breaking things.
- As a business owner/recruiter, I wanted something with a low entry barrier for my future hirings. Elm has a low entry barrier, the JS ecosystem/fatigue/mess doesn't.
I was not disappointed: it's the first time I felt so confident when running a frontend app in production.
The need for the backend app was pretty simple: some basic CRUD operations. I could have used
Python/Flask for this without any problem. But I knew that it was potentially something that would need a lot of live/websockets connections in a near future. Phoenix shines in this domain and provides easy backend generation for CRUD operations. Last but not least, the entry barrier is pretty low too. The community is awesome, and the available resources are really significant now (thanks to Programming Phoenix book).
I placed a bet on Phoenix/Elixir because its ability to scale is rooted at the language level thanks to the Erlang VM.
Phoenix are production ready for my needs and were used in a live show with more than 10M viewers. Most importantly, I'm confident I can build my company products using both of them because:
- They answer perfectly the main problems in web development: reliability, scalability, ease of use.
- Hiring people should be easy: the entry barrier is very low, despite both of them being functional languages.