Kodlunch – Mikael pratar om varför han älskar Elixir

2022-06-15

Elixir i en flaska

Vad är Elixir?
Ett (relativt) nytt funktionellt programmeringsspråk.

Okay, lite mer får du berätta.
För att jag ska kunna berätta vad Elixir är måste du veta vad Erlang är.

Vad är Er-Er..lang(?)
Programmeringsspråket Erlang utvecklades av Ericsson på 80-talet och används än idag framförallt i deras switchar (tidigare för telefoni, nu för annan typ av trafik). Det utvecklas ständigt och nådde nyligen versionsnummer 25.
När du programmerar Elixir programmerar du egentligen Erlang under huven. Erlang kan räknas som ett av världens mest stabila språk och hanterar en stor del av världens internettrafik. Men tillskillnad från Erlang är Elixir även designat för att öka utvecklarglädjen. På det sättet kan du få det bästa av två världar.

Jo, men vad ger det mig för fördelar egentligen?
Det ger följande fördelar: Det går snabbt att bygga en produkt på ett hållbart sätt men där lösningen och produkten kan förväntas vara stabil, pålitlig och skalbar.

Hur kan det vara så?
Erlang byggdes för att hantera den växande mängden telefonsamtal där isolering av fel och för att kunna hantera många små anslutningar samtidigt, med en stark “concurrency”-modell.

Varför är det viktigt?
Framförallt för att ett fel i ett samtal inte ska kunna störa ett annat samtal. Dessutom ville Ericsson kunna skala upp utan att dramatiskt höja sina kostnader eller komplexiteten. Därför rapporterar många företag om att de, i och med bytet till Elixir, kunnat ersätta tiotals, eller till och med mer än 100 servrar med endast ett fåtal. Det betyder att även om du inte planerar för att skala upp till samma nivå som Ericsson så kan du vara säker på att om du skulle behöva, skulle det vara mycket lättare att skala upp med Elixir än de flesta andra språk, med fler kostnadsbesparingar och färre problem med flaskhalsar på vägen. Om du förväntar dig att din applikation kommer bli använd är Elixir sällan ett dåligt val.

Jo, det är ju bra att det går att skala och sådär, men utvecklare är ändå den största kostnaden, och det måste vara oerhört svårt och ta lång tid att utveckla en sån applikation. Eller hur?
Ja, det stämmer att utvecklare kostar väldigt mycket pengar och att det ofta är marginella kostnader för servrar och underhåll i jämförelse med att betala bra utvecklare. Däremot finns det inget som talar för att Elixir skulle vara svårare att skriva. Tvärtom behöver det inte vara en tradeoff i utvecklare-effektivitet mot server-effektivitet. I den senaste av Stack Overflows utvecklarundersökningar var Elixir det 4:e mest älskade språket. Snarare hjälper Elixirs modell utvecklarna att överkomma hinder som klassas som några av datavetenskaps-världens svåraste. Vilket gör att de snarare kan spara tid.

..ok.
Förutom det så har Elixir ett ergonomiskt och stort standardbibliotek, Pattern Matching, immutabilitet, ett inbyggt test-ramverk, doc-tests och mycket annat gött, dessutom tillåter det utvecklaren att programmera funktionellt .

Något annat?
Elixir har även ett ramverk för webbapplikationer, Phoenix. Phoenix har funnits i många år, men i det senaste har ett koncept som kallas “Phoenix LiveView” dykt upp. Phoenix LiveView är fräckt för att det ger utvecklaren möjlighet att använda ett delat “State” mellan frontend och backend. Något som tidigare för det mesta var uppdelat i två delar, där frontend hela tiden måste hålla sig i synk med backend manuellt och därmed öka komplexiteten rejält. Istället för att använda JavaScript på frontenden levereras uppdateringarna i Phoenix LiveView i backenden direkt via WebSockets. Vyerna skapas upp deklarativt och fylls sedan automatiskt av ramverket. Mycket likt hur React fungerar. Vilket kort sagt kan minska komplexiteten och frigöra tid till att fokusera på att utveckla affärsidéer och mindre på att skapa och lösa buggar.

Okay, nu får du sluta, det låter för bra för att vara sant. Vad är haken?
Det är ingen “silverbullet”. Bara för att du bygger något i Elixir (eller Erlang), får du inte automatisk skalbarhet och det är inte idiotsäkert för att undvika flaskhalsar och skalbarhetsproblem. Däremot bygger det på beprövad teknik och en systemmodell som gör det lättare att undvika den typen av problem. Det som däremot är negativt är att språket endast är tio år gammalt och att det därför är relativt få utvecklare som kan Elixir. Som tur är har vi på Iteam utvecklingsteam som kan hjälpa dig komma igång.

mikael

Vill du läsa mer om Elixir kan du kolla in vårt projekt Predictive Movement som ligger som open source på GitHub. Eller kontakta Mikael.

Kollage av olika AI-genererade bilder.

2022-11-14

AI för UX:are – är vår kreativitet hotad?

UX-teamet här på Iteam ville utforska användningen av olika AI-verktyg i det dagliga arbetet och ägnade en labbfredag åt detta.

Personer som arbetar vid sina skrivbord

2022-09-26

Tips när du startar ett team

Hösten är i full gång, projekt efter projekt startas upp och med det sätts också team samman för att jobba med nya utmaningar.

Karta med visualisering av kollektivtrafik

2022-09-23

Ökad rörlighet på landsbygden

Vi jobbar just nu vidare under Predictive Movement-paraplyet i två projekt, RörLa och Digiby.

2022-09-15

Room mates sökes till vårt kontor i Göteborg!

Letar du efter plats på ett magiskt och mysigt kontor? Ta en titt på ett av våra outnyttjade kontorsrum på vårt kontor i Göteborg.

Mikael

2022-06-15

Kodlunch – Mikael pratar om varför han älskar Elixir

Vår stjärnutvecklare Mikael berättar om glädjen att koda med Elixir

En större grupp kollegor umgås i ett kök/lounge.

2022-04-13

Vi fortsätter att rekrytera!

Att bygga relationer med omtanke och respekt är något vi alla kan göra för en bättre värld. I vår välkomnar vi både nya och gamla kollegor tillbaka.

Medarbetare som sitter i en lounge och pratar

2022-04-08

Vad är DesignOps och varför är det relevant?

I takt med att fler företag inser värdet av design ökar behovet att skala designfunktioner. Och det är precis det som DesignOps fokuserar på.

mobprogrammering team flow Iteam

2021-10-22

Riktig innovation kräver team flow

Hur kan ett utvecklingsteam bli ett hockeylag. Lösningen stavas Team Flow. Men hur gör vi för att uppnå detta?

Nya kollegor

2021-08-05

Hållbar digitalisering attraherar både kompetens och kunder :D

Hållbarhet och digital innovation sitter lika naturligt ihop som Batman och Robin

Tak

2021-06-18

Hur kan bostadspriserna förändras efter pandemin?

Location, location, location. Vad har Strindbergs hiss med huspriser att göra?

API

2021-06-16

Vad är ett API?

De flesta vet vad BNP är men få vet vad ett API är. Båda är komplicerade frågor som hjälper att känna till om man ska förstå hur samhället utvecklas.

Bild med text "Public money, public code"

2021-06-10

Vad är öppen källkod och varför ska du bry dig?

Öppen källkod är mycket mer än bara gratis programvara. Det är en filosofi som rimmar väl med demokratins värderingar.

Kontor

2021-06-09

Vi sa upp vårt kontor i pandemin. Dags att tänka nytt

Vi kombinerar det bästa från hemarbetet med en ny form av lokal

Christian Landgren i Logistikpodden

2021-06-03

Logistikpodden om Predictive Movement

Hur kommer framtidens transportsystem fungera? Kan AI hjälpa miljön?

En person som jobbar vid en dator

2021-05-18

Predictive Movement testas i Pajala

Predictive Movement är en samverkansplattform för att optimera transportsystemet. Denna veckan testar vi i Pajala.

Fyra personer i ett möte

2021-05-10

Jämställdhet på Iteam

2021 är Iteam ett techbolag med lika många kvinnor som män. Det tål att uppmärksammas!

Christian Landgren

2021-03-10

Tre snabba om #jobtech med Christian Landgren

Hur påverkar öppen källkod och öppen data arbetsmarknaden framöver?

Två utvecklare som samarbetar vid en dator.

2020-10-01

DX - upplevelsen som inte får glömmas

Developer Experience - hur skapar man lösningar som utvecklare ❤️ älskar?

Drönare

2020-09-03

Drönare för medicinleveranser

Hur skulle samhället förändras om vi kunde få drönarleveranser till varje stuga?