SlideShare a Scribd company logo
Making Software. Better.
Simple solutions to big business problems.
a sip of elixir
About me
● Likes to solve problems that usually involves writing software
● Currently, helping customers of Equal Experts solve their software problems
● Twitter: @uttamkini
● Blog: https://medium.com/@uttamkini
What is functional programming anyway
● Declarative
● Immutable state
● Data is separate from functions (though functions can accept and operate on data)
● Functions are first class citizens (functions can be passed to and returned from other functions)
● Iteration is done using recursion (no for(i=0...) loops)
Functional programming is important !!
● Today, faster programs means utilizing multiple cores of a machine
● Because state is immutable, it becomes easier to write concurrent programs with functional programming
● Code is easy to read and reason about (once you get used to it)
● Easy to enforce correctness with type inference and checking
But, I don’t do functional programming !!
Are you sure ?
● Immutable objects have always been around in Java (remember the String class ?)
● Not using setters/changing an object once it is created is considered good practice
● Preferring composition over inheritance
● Lambdas in C# and now even in Java
● The stream api in Java 8 and Linq in C#
● Optionals in Java 8
But …..
● Since FP features are a bolt on to an OO language, writing functional code does not feel “natural”
● It is easy to go back to old habits of writing code with for loops and mutations
● It is nicer to learn a paradigm in a language that is designed for the paradigm
An elixir to get you started
● Is a dynamic and functional language
● Runs on the battle tested Erlang VM (Beam)
● Designed for distribution and fault tolerance
● Syntax inspired from Ruby
● Developer friendly tooling and ecosystem
● Can use Erlang libraries
Talk is cheap ….
Show me the
code !!
Communication in a stateless world
Static or Dynamic typing ?… a bit of both
● Dynamic by default
● The elixir compiler uses type inference where it can
● You can optionally add @spec directive for stronger type checks
Location transparency
● One Process can pass messages to another process in the same “OS process” or to a different process on
the same machine or a different machine in the cluster.
● The VM takes care of serializing/deserializing messages and calling the right process
Supervisors and Applications
● A supervisor is a process that monitors another process
● It restarts the process if it terminates (let it crash philosophy !)
● One process crashing does not bring the application down
● Applications are supervisors that can be configured to automatically start on process start up
Soar with the Phoenix
● Inspired by Ruby on Rails
● Focussed on developer productivity
● Can handle millions of connections at the same time
● Really performant (has micro second response times for regular workloads)
● Great support for web sockets that can used to build more interactive web apps
Closing thoughts
● Be patient when you learn something new, it takes time
● Learning a new language makes you a better programmer even in your current language
● You don’t have to learn everything all at once, everybody has a different pace of learning, so again be
patient
● If reading books doesn’t work, try videos or online courses (Every person has a different way of learning)
● If you enjoy what you are learning, the chances of dropping out go down
Thank You
Twitter
@EqualExperts
LinkedIn
linkedin.com/company/equal-experts
UNITED KINGDOM
+44 203 603 7830
helloUK@equalexperts.co
m
Equal Experts UK Ltd
30 Brock Street
London NW1 3FG
INDIA
+91 20 6607 7763
helloIndia@equalexperts.com
Equal Experts India Private Ltd
Office No. 4-C
Cerebrum IT Park No. B3
Kumar City, Kalyani Nagar
Pune, 411006
Web
www.equalexperts.com
CANADA
+1 403 775 4861
helloCanada@equalexperts.com
Equal Experts Devices Inc
205 - 279 Midpark way S.E.
T2X 1M2
Calgary, Alberta
PORTUGAL
+351 211 378 414
helloPortugal@equalexperts.co
m
Equal Experts Portugal
Avenida Dom João II, Nº35
Edificio Infante 11ºA
1990-083Parque das Nações
Lisboa – Portugal
Thank You
USA
+1 866-943-9737
helloUSA@equalexperts.com
Equal Experts Inc
1460 Broadway
New York
NY 10036
Ad

More Related Content

What's hot (18)

2018-09 - F# and Fable
2018-09 - F# and Fable2018-09 - F# and Fable
2018-09 - F# and Fable
Eamonn Boyle
 
Top Five Reasons for Choosing Python Programming
Top Five Reasons for Choosing Python Programming  Top Five Reasons for Choosing Python Programming
Top Five Reasons for Choosing Python Programming
Lesa Cote
 
Learning to Translate with Joey NMT
Learning to Translate with Joey NMTLearning to Translate with Joey NMT
Learning to Translate with Joey NMT
Julia Kreutzer
 
Intro flash cards
Intro flash cardsIntro flash cards
Intro flash cards
lorhow58
 
Intro flash cards
Intro flash cardsIntro flash cards
Intro flash cards
lorhow58
 
Readme
ReadmeReadme
Readme
PublicLeaker
 
Dion computerprogramming
Dion computerprogrammingDion computerprogramming
Dion computerprogramming
littlecricket07
 
ics user group dev day_2014 use notes objects in memory and other useful
ics user group dev day_2014 use notes objects in memory and other usefulics user group dev day_2014 use notes objects in memory and other useful
ics user group dev day_2014 use notes objects in memory and other useful
ICS User Group
 
Dark side of JS development framework
Dark side of JS development frameworkDark side of JS development framework
Dark side of JS development framework
AJAY NAYAK
 
Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry  Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry
Tharindu Weerasinghe
 
Devoxx 2013 Summary/Keynotes
Devoxx 2013 Summary/KeynotesDevoxx 2013 Summary/Keynotes
Devoxx 2013 Summary/Keynotes
Aliaksandr Kazlou
 
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Johan De Wit
 
JetBrains MPS
JetBrains MPSJetBrains MPS
JetBrains MPS
Владимир Кожаев
 
Fine tuning large LMs
Fine tuning large LMsFine tuning large LMs
Fine tuning large LMs
SylvainGugger
 
Recap and Feedback from our 1st Code School at Jama Software
Recap and Feedback from our 1st Code School at Jama SoftwareRecap and Feedback from our 1st Code School at Jama Software
Recap and Feedback from our 1st Code School at Jama Software
Ryan Saul
 
Create first android app with MVVM Architecture
Create first android app with MVVM ArchitectureCreate first android app with MVVM Architecture
Create first android app with MVVM Architecture
khushbu thakker
 
Why should I learn Matlab?
Why should I learn Matlab?Why should I learn Matlab?
Why should I learn Matlab?
Accenture Services Private Ltd.
 
CS1101 Unit 1 Discussion Assignment.docx
CS1101 Unit 1 Discussion Assignment.docxCS1101 Unit 1 Discussion Assignment.docx
CS1101 Unit 1 Discussion Assignment.docx
zend_alvi
 
2018-09 - F# and Fable
2018-09 - F# and Fable2018-09 - F# and Fable
2018-09 - F# and Fable
Eamonn Boyle
 
Top Five Reasons for Choosing Python Programming
Top Five Reasons for Choosing Python Programming  Top Five Reasons for Choosing Python Programming
Top Five Reasons for Choosing Python Programming
Lesa Cote
 
Learning to Translate with Joey NMT
Learning to Translate with Joey NMTLearning to Translate with Joey NMT
Learning to Translate with Joey NMT
Julia Kreutzer
 
Intro flash cards
Intro flash cardsIntro flash cards
Intro flash cards
lorhow58
 
Intro flash cards
Intro flash cardsIntro flash cards
Intro flash cards
lorhow58
 
Dion computerprogramming
Dion computerprogrammingDion computerprogramming
Dion computerprogramming
littlecricket07
 
ics user group dev day_2014 use notes objects in memory and other useful
ics user group dev day_2014 use notes objects in memory and other usefulics user group dev day_2014 use notes objects in memory and other useful
ics user group dev day_2014 use notes objects in memory and other useful
ICS User Group
 
Dark side of JS development framework
Dark side of JS development frameworkDark side of JS development framework
Dark side of JS development framework
AJAY NAYAK
 
Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry  Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry
Tharindu Weerasinghe
 
Devoxx 2013 Summary/Keynotes
Devoxx 2013 Summary/KeynotesDevoxx 2013 Summary/Keynotes
Devoxx 2013 Summary/Keynotes
Aliaksandr Kazlou
 
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Johan De Wit
 
Fine tuning large LMs
Fine tuning large LMsFine tuning large LMs
Fine tuning large LMs
SylvainGugger
 
Recap and Feedback from our 1st Code School at Jama Software
Recap and Feedback from our 1st Code School at Jama SoftwareRecap and Feedback from our 1st Code School at Jama Software
Recap and Feedback from our 1st Code School at Jama Software
Ryan Saul
 
Create first android app with MVVM Architecture
Create first android app with MVVM ArchitectureCreate first android app with MVVM Architecture
Create first android app with MVVM Architecture
khushbu thakker
 
CS1101 Unit 1 Discussion Assignment.docx
CS1101 Unit 1 Discussion Assignment.docxCS1101 Unit 1 Discussion Assignment.docx
CS1101 Unit 1 Discussion Assignment.docx
zend_alvi
 

Similar to A sip of elixir (20)

Introdução à Elixir
Introdução à ElixirIntrodução à Elixir
Introdução à Elixir
Guilherme Oliveira
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
Nicholas Sterling
 
Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional Programming
Dave Fancher
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
Anton Serdyuk
 
Multithreading in Scala
Multithreading in Scala Multithreading in Scala
Multithreading in Scala
Knoldus Inc.
 
The working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийThe working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор Турский
Sigma Software
 
The working architecture of node js applications open tech week javascript ...
The working architecture of node js applications   open tech week javascript ...The working architecture of node js applications   open tech week javascript ...
The working architecture of node js applications open tech week javascript ...
Viktor Turskyi
 
Thinking Functionally
Thinking FunctionallyThinking Functionally
Thinking Functionally
Piyush Katariya
 
Agile Development: Key to smart software development
Agile Development: Key to smart software developmentAgile Development: Key to smart software development
Agile Development: Key to smart software development
Jerlyn Manohar
 
Oop.pptx
Oop.pptxOop.pptx
Oop.pptx
KalGetachew2
 
Computer programming programming_langugages
Computer programming programming_langugagesComputer programming programming_langugages
Computer programming programming_langugages
eShikshak
 
198970820 p-oooooooooo
198970820 p-oooooooooo198970820 p-oooooooooo
198970820 p-oooooooooo
homeworkping4
 
Types Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master ProgrammingTypes Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master Programming
calltutors
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
AliyaJav
 
Computer programing 111 lecture 1
Computer programing 111 lecture 1 Computer programing 111 lecture 1
Computer programing 111 lecture 1
ITNet
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
Dave Cross
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
Vivek Parihar
 
How to code in the XXI century without losing your head
How to code in the XXI century without losing your headHow to code in the XXI century without losing your head
How to code in the XXI century without losing your head
René Olivo
 
Why functional programming in C# & F#
Why functional programming in C# & F#Why functional programming in C# & F#
Why functional programming in C# & F#
Riccardo Terrell
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
Izzet Mustafaiev
 
Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional Programming
Dave Fancher
 
Multithreading in Scala
Multithreading in Scala Multithreading in Scala
Multithreading in Scala
Knoldus Inc.
 
The working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийThe working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор Турский
Sigma Software
 
The working architecture of node js applications open tech week javascript ...
The working architecture of node js applications   open tech week javascript ...The working architecture of node js applications   open tech week javascript ...
The working architecture of node js applications open tech week javascript ...
Viktor Turskyi
 
Agile Development: Key to smart software development
Agile Development: Key to smart software developmentAgile Development: Key to smart software development
Agile Development: Key to smart software development
Jerlyn Manohar
 
Computer programming programming_langugages
Computer programming programming_langugagesComputer programming programming_langugages
Computer programming programming_langugages
eShikshak
 
198970820 p-oooooooooo
198970820 p-oooooooooo198970820 p-oooooooooo
198970820 p-oooooooooo
homeworkping4
 
Types Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master ProgrammingTypes Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master Programming
calltutors
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
AliyaJav
 
Computer programing 111 lecture 1
Computer programing 111 lecture 1 Computer programing 111 lecture 1
Computer programing 111 lecture 1
ITNet
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
Dave Cross
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
Vivek Parihar
 
How to code in the XXI century without losing your head
How to code in the XXI century without losing your headHow to code in the XXI century without losing your head
How to code in the XXI century without losing your head
René Olivo
 
Why functional programming in C# & F#
Why functional programming in C# & F#Why functional programming in C# & F#
Why functional programming in C# & F#
Riccardo Terrell
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
Izzet Mustafaiev
 
Ad

Recently uploaded (20)

Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Ad

A sip of elixir

  • 1. Making Software. Better. Simple solutions to big business problems. a sip of elixir
  • 2. About me ● Likes to solve problems that usually involves writing software ● Currently, helping customers of Equal Experts solve their software problems ● Twitter: @uttamkini ● Blog: https://medium.com/@uttamkini
  • 3. What is functional programming anyway ● Declarative ● Immutable state ● Data is separate from functions (though functions can accept and operate on data) ● Functions are first class citizens (functions can be passed to and returned from other functions) ● Iteration is done using recursion (no for(i=0...) loops)
  • 4. Functional programming is important !! ● Today, faster programs means utilizing multiple cores of a machine ● Because state is immutable, it becomes easier to write concurrent programs with functional programming ● Code is easy to read and reason about (once you get used to it) ● Easy to enforce correctness with type inference and checking
  • 5. But, I don’t do functional programming !!
  • 6. Are you sure ? ● Immutable objects have always been around in Java (remember the String class ?) ● Not using setters/changing an object once it is created is considered good practice ● Preferring composition over inheritance ● Lambdas in C# and now even in Java ● The stream api in Java 8 and Linq in C# ● Optionals in Java 8
  • 7. But ….. ● Since FP features are a bolt on to an OO language, writing functional code does not feel “natural” ● It is easy to go back to old habits of writing code with for loops and mutations ● It is nicer to learn a paradigm in a language that is designed for the paradigm
  • 8. An elixir to get you started ● Is a dynamic and functional language ● Runs on the battle tested Erlang VM (Beam) ● Designed for distribution and fault tolerance ● Syntax inspired from Ruby ● Developer friendly tooling and ecosystem ● Can use Erlang libraries
  • 9. Talk is cheap …. Show me the code !!
  • 10. Communication in a stateless world
  • 11. Static or Dynamic typing ?… a bit of both ● Dynamic by default ● The elixir compiler uses type inference where it can ● You can optionally add @spec directive for stronger type checks
  • 12. Location transparency ● One Process can pass messages to another process in the same “OS process” or to a different process on the same machine or a different machine in the cluster. ● The VM takes care of serializing/deserializing messages and calling the right process
  • 13. Supervisors and Applications ● A supervisor is a process that monitors another process ● It restarts the process if it terminates (let it crash philosophy !) ● One process crashing does not bring the application down ● Applications are supervisors that can be configured to automatically start on process start up
  • 14. Soar with the Phoenix ● Inspired by Ruby on Rails ● Focussed on developer productivity ● Can handle millions of connections at the same time ● Really performant (has micro second response times for regular workloads) ● Great support for web sockets that can used to build more interactive web apps
  • 15. Closing thoughts ● Be patient when you learn something new, it takes time ● Learning a new language makes you a better programmer even in your current language ● You don’t have to learn everything all at once, everybody has a different pace of learning, so again be patient ● If reading books doesn’t work, try videos or online courses (Every person has a different way of learning) ● If you enjoy what you are learning, the chances of dropping out go down
  • 16. Thank You Twitter @EqualExperts LinkedIn linkedin.com/company/equal-experts UNITED KINGDOM +44 203 603 7830 [email protected] m Equal Experts UK Ltd 30 Brock Street London NW1 3FG INDIA +91 20 6607 7763 [email protected] Equal Experts India Private Ltd Office No. 4-C Cerebrum IT Park No. B3 Kumar City, Kalyani Nagar Pune, 411006 Web www.equalexperts.com CANADA +1 403 775 4861 [email protected] Equal Experts Devices Inc 205 - 279 Midpark way S.E. T2X 1M2 Calgary, Alberta PORTUGAL +351 211 378 414 [email protected] m Equal Experts Portugal Avenida Dom João II, Nº35 Edificio Infante 11ºA 1990-083Parque das Nações Lisboa – Portugal Thank You USA +1 866-943-9737 [email protected] Equal Experts Inc 1460 Broadway New York NY 10036