Hello Claudio. Recently, you’ve given a speech related to ELM that is purely functional and is developed with an emphasis on usability, performance, and robustness. Would you like to briefly explain what your talk was about?
ELM is a pure functional language. I turned to the community that’s beginning more than anyone else to use the functional to show that – yes! – JavaScript can be dealt with in a functional way, but there are pure functional languages that bring us very strong advantages, including ELM, an ML language where there are no runtime errors. Bringing this concept into a world where “null is not a function” or “undefined is not a function” are errors on the agenda, and probably seen by a JavaScript developer dozens of times a day, could be an advantage. I tried to emphasise the interoperability of this language with JavaScript. It’s possible to create elements in ELM which can be inserted in a codebase, for example, React. The idea was to be more interested in raising awareness of the language because, aside from ELM, there are many ML-style functional languages related to JavaScript. In fact, during the talk, I received many questions about these languages from the community members. Facebook, for example, is working on an ML-like language.
In your opinion, is this technology continuing to evolve?
Nothing is perfect or static, and ELM is evolving because it emerged in a period when the maximum aspiration of a functional language usable in JavaScript was to write a very small component, but which was then adopted by quite complex web applications. So it’s evolving towards the usability of code and packetisation. Another proof that ELM is evolving is that the communities and conferences are inviting important people related to this programming language as it happened in case of Codemotion as well. One of the keynote speakers at Codemotion Rome 2018 was Richard Feldman, one of the creators of ELM.
Do you have any advice for those who are approaching the area of functional programming?
There is no ELM community, at least in Rome, but it is possible to start talking about ELM on an international level. Founding an ELM community would certainly be a good idea: the online documentation is well done, and the Open Source code, which is an excellent resource to grow, is also available. Moreover, it could be an opportunity to collaborate with colleagues, friends, developers and maybe carry out a project from scratch, which is always the best way to grow. If anyone’s interested, there’s a repository of Elixir Rome where there’s an app that I used together with Gabriele Santomaggio during our talk at Codemotion Rome 2018; the front-end is entirely developed in ELM.
Could you tell us why you decided to talk about ELM? Did you want to spread the word about it or there is someone in the community who requested this kind of talk?
Once I was talking to one of RomaJS’s leaders, Matteo Manchi, and I told him that I wanted to give this kind of talk to the PHP community. Matteo told me that surely front-end side would have been well-covered, inviting me to do the talk at one of the meeting of his community, and of course I accepted this invitation.
I must also add that requests from community members are always listened to; lately the communities communicate through Slack, and there’s a Slack for every community: BEAM Italy, RomaJS, the Slack for all the GrUSP. If you’re interested, just do a quick search on Google and you find some Slacks to sign up to, where you can request support for each specific topic.
In your opinion, why should anyone who has never been interested in the topics related to ELM and in functional programming in general attend the talk like this?
Something closely related to ELM is the lack of runtime errors. Moreover, it’s interesting that ELM is a pure language, and therefore if you wanted to do all the functional tests on an entirely ELM codebase, having 100% coverage would guarantee the lack of bugs, which is no trivial matter. I would also add the readability of the code. When you feel confident with the language, we’re talking about an extremely readable code, a very lean and very well-made syntax. Even the ELM codestyle standards are designed to use versioning in the most correct way. Sometimes, until you try and you have a little awareness of what it’s like, functional programming looks complicated, but once you get stuck in and see people who didn’t even know what a remap was until two years ago, now they use it constantly within their code.
Thanks for all this interesting information. Now let’s change the subject a bit. Could you tell us a bit about yourself?
I’m a back-end developer and currently, I work at AdEspresso, a startup that deals with marketing activities on Facebook. It’s been a while since I delivered my last talk, but my first talk dates back to 2014 – I delivered it at the Symfony Day conference. I was mainly engaged with the PUG Roma community. My favourite programming language was PHP. It changed a little bit around four years ago when I also dedicated myself to the programming language called Elixir. What I try to do when I deliver my talks is to increase the interest in functional languages, towards this paradigm that’s much older than you think and that’s beginning to re-emerge through frameworks and good practices originating especially in the world of JavaScript.
Let’s go back to the start… Why did you choose a career in the IT industry?
In reality, I studied a completely different thing: I am a computational and theoretical chemist. I joined the IT world because it was my first serious work experience. At the very beginning, it was not serious: we drew up a sort of micro company with another colleague. Later on, things went very well, so I decided to drop out of my studies in chemistry and devoted myself to the IT world. At the beginning I was a system engineer and I started programming in C++, then, at my first serious job, there was the need to make an application for distributed work, and then I made my first web application even though it was obviously with very particular methods, it was in PHP and it’s certainly not comparable with what can be done (it happened more or less in 2006). Later on, I became interested in web programming.
Claudio, could you tell us how you keep yourself informed on all the latest tech news? Do you follow any course? Do you attend the conferences?
Absolutely! Doing all these things is super important. Since Codemotion conferences or specifications began, for example, those of GrUSP when I worked in the PHP environment, or those of BEAM Italy now that the team is engaged on Elixir, I think the quality of Italian code and programmers has increased. The best thing for keeping yourself up-to-date is joining the community created within the largest conferences and attending the meetups, with monthly meetings, mailing lists etc. There’s no better way to grow and discover new things than the community. The community doesn’t take charge of anything you learn and it’s the best way to discover what to study tomorrow. There are no professors within the community and no one’s obliged to teach you; the exchange is mutual! The advice I give to everyone who is starting to develop or is entering the tech world is: the community is the most important thing!
Do you have any advice for those who are approaching functional programming or who are starting their career?
The best advice I can give is “get out of your comfort zone: if you keep doing things you know how to do, you’ll never evolve”. That said, specifically with functional languages, I can say that, as with everything connected to IT, the more you keep going, the more you weaken myths. You shouldn’t be scared; what they sell you as complicated often isn’t.