
Case Study: WSAM ProDu
Die Wärtsilä SAM Electronics GmbH (WSAM) aus Hamburg ist spezialisiert auf die Konstruktion, Montage, Verkabelung und Inbetriebnahme von komplexen elektrischen
Last month we attended Code BEAM Europe, a conference centered around programming languages that run on the BEAM virtual machine like Erlang and Elixir. During the two conference days we met inspiring people, listened to interesting talks and got updates on the future of the BEAM ecosystem. While the talks are not publicly available (yet), we still want to give you an overview of some of the main topics that were discussed.
The two most prominent BEAM languages, Erlang and Elixir, do not feature static types, which is not bad per se. With dynamic types you save on some boilerplate code in exchange for potential runtime errors. It depends on the use case if speed of development or a save runtime is more important.
The tool of choice for type checking in Elixir and Erlang is Dialyzer, a DIscrepancy AnaLYZer for ERlang programs. Dialyzer uses a concept called success types¹ that cannot catch certain errors. That’s why Giuseppe Castagna, Guillaume Duboc and José Valim wrote a paper and implemented a proof of concept for a new typesystem for Elixir.
This new type system is based on set-theoretic types. Guillaume told us about the project, and José later spoke about the integration into Elixir, which is in a very early stage, and there is still the possibility that they will fail to implement the concepts from the paper.
As expected, the conference had multiple talks about AI and Machine Learning. One in particular – titled: ”A Year in Production with Machine Learning on the BEAM” by Christopher Grainger – got our attention. ²
This talk revolved around machine learning and data evaluation in the Elixir environment, with a special focus on analyzing patent data.
Christopher described the issues with the prior search processes in patenting being time-intensive and potentially inaccurate and how machine learning could vastly improve and simplify this process. He also explained how they could eradicate Python completely and build one Elixir team for all the different needs of their application.
All in all, it was an enlightening presentation that shed light on the potential of Elixir in AI and Machine Learning.
In this talk, Hayleigh Thompson gave a brief introduction to her frontend-framework Lustre, which is heavily inspired by Elm and implemented in Gleam, a typed language that compiles to JavaScript or BEAM bytecode.
Like the highly influential yet boutique Elm, Lustre focuses on a zen-like developer experience for frontend applications with a simple mental model and a clear flow of data:
The entire state of the application is stored in a single model variable, which might sound messy at first, but thanks to Gleam’s algebraic data types, static types and pattern matching, making changes to the shape of that model is tool-assisted and type-safe.
Side-effects are pushed to the edges of the system, out of the pure functional core and are managed by the runtime.
It optionally compiles to JavaScript to run in the browser.
That’s all well and good, but why would anyone want to use a reimplementation of the Elm architecture in a language that is not Elm? The answer is code reuse and compatibility in the backend. Being a BEAM language, Gleam can natively call Elixir/Erlang functions and vice versa. This allows for sharing logic between your frontend application and your BEAM backend, which is often desirable and one of the reasons that people have gravitated towards writing backend logic in JavaScript.
While this was not explicitly a topic of the talk, I feel that small and niche languages such as Elm or Gleam sometimes have to justify their existence. In my opinion, one needs to look no further than the sheer enthusiasm of both the speaker and the audience during the talk – boutique languages are a space for innovation and experimentation, where developers are free to build the tools they want to use and like Elm has done with Redux and Vue.js, the really good ideas often trickle down into the more mainstream languages and frameworks.
These where our highlights of the code BEAM Europe 2023 conference. The talks will be published on the code sync youtube channel, some are uploaded already. We enjoyed our time at the conference and looking forward to the next event.
After freelancing for Inspired for about a year, Mehdi joined our team for good in late 2022. He loves using the Elixir programming language to design, build, and maintain robust and highly scalable applications.
Raphi works as a software engineer and consultant at Inspired. He's specialized in IT security. When concepting and implementing software he's always trying to take the point of view of potential aggressors.
He's engaing in functional programming in general for over 6 years and Elixir programming in particular for about 3 years using it on a daily basis.
Jens joined Inspired in early 2023.
Die Wärtsilä SAM Electronics GmbH (WSAM) aus Hamburg ist spezialisiert auf die Konstruktion, Montage, Verkabelung und Inbetriebnahme von komplexen elektrischen
Nach den Vorbereitungen in den letzten Kapiteln beschäftigen wir uns nun mit der eigentlichen Erstellung des Clusters. Am besten folgt
Ein Kubernetes-Cluster ist zwar sehr resilient, aber es gibt dennoch einige Vorfälle, die potentiell schwerwiegende Auswirkungen haben können. In diesem
Elixir’s interactive shell, known as IEx, is a powerful tool that allows Elixir developers to quickly test and evaluate code
Cookie | Dauer | Beschreibung |
---|---|---|
cookielawinfo-checbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-advertisement | 1 year | Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category . |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
elementor | never | This cookie is used by the website's WordPress theme. It allows the website owner to implement or change the website's content in real-time. |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
Cookie | Dauer | Beschreibung |
---|---|---|
__cf_bm | 30 minutes | This cookie, set by Cloudflare, is used to support Cloudflare Bot Management. |
Cookie | Dauer | Beschreibung |
---|---|---|
CONSENT | 2 years | YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data. |
Cookie | Dauer | Beschreibung |
---|---|---|
VISITOR_INFO1_LIVE | 5 months 27 days | A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface. |
YSC | session | YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages. |
yt-remote-connected-devices | never | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |
yt-remote-device-id | never | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |