SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Hello, Joe. Hello, Mike;
Hello, Robert.1
A Hello World Style Lighting Talk on Erlang.
1. From Erlang the Movie (https://archive.org/details/ErlangTheMovie)
Hello, Erlang.
Erlang and OTP was designed for building
distributed, asynchronous, highly-concurrent, fault
tolerant applications with high availability.
Hello, Erlang.
Erlang and OTP was designed for building
distributed, asynchronous, highly-concurrent, fault
tolerant applications with high availability.
#BuzzwordBingo
Hello, Telecom.
Hello, Telecom.
• 100s of Thousands, if not Millions, of calls
happen at the same time
Hello, Telecom.
• 100s of Thousands, if not Millions, of calls
happen at the same time
• Your phone line has to always be available
Hello, Telecom.
• 100s of Thousands, if not Millions, of calls
happen at the same time
• Your phone line has to always be available
• My call cannot corrupt your call
Hello, Déjà vu
Hello, Déjà vu
• Sound Familiar?
Hello, Internet!
Hello, Failure.
Hello, Failure.
• In the Real World things fail. Embrace it.
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
• Immutability
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
• Immutability
• No Shared State
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
• Immutability
• No Shared State
• Isolated Processes Communicate Through Message Passing
(Actor Model)
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
• Immutability
• No Shared State
• Isolated Processes Communicate Through Message Passing
(Actor Model)
• Supervision Hierarchy
Hello, Failure.
• In the Real World things fail. Embrace it.
• “Let It Crash” philosophy
• Immutability
• No Shared State
• Isolated Processes Communicate Through Message Passing
(Actor Model)
• Supervision Hierarchy
• Live code reloading
Hello, C10k Problem.
Hello, C10k Problem.
Hello, C10k Problem.
–Alan Kay
I thought of objects being like biological cells
and/or individual
 computers on a network, only able to
communicate with messages […].2
Hello, OOP.
2. http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
Hello, “Weaknesses”.
Hello, “Weaknesses”.
• No strings as a data type
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
• Not going to be run on your mobile device;
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
• Not going to be run on your mobile device;
• but great for you mobile device backend.
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
• Not going to be run on your mobile device;
• but great for you mobile device backend.
• WhatsApp anyone?
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
• Not going to be run on your mobile device;
• but great for you mobile device backend.
• WhatsApp anyone?
• Not insanely fast
Hello, “Weaknesses”.
• No strings as a data type
• List of Integers or Binary types
• Not super performant for string manipulation, but good enough for most
scenarios
• Not great for GUIs
• Not going to be run on your mobile device;
• but great for you mobile device backend.
• WhatsApp anyone?
• Not insanely fast
• "There's no such thing as fast, only fast enough" ~ Joe Armstrong
Hello, FizzBuzz.
Hello, fizzbuzz.erl
-module(fizzbuzz).
-export([fizzbuzz/1]).
fizzbuzz(N) ->
Translations = lists:map(fun translate/1, lists:seq(1, N)),
lists:foreach(fun(Item) -> io:format("~s~n", [Item]) end, Translations).
translate(N) when N rem 3 =:= 0 andalso N rem 5 =:= 0 ->
'FizzBuzz';
translate(N) when N rem 3 =:= 0 ->
'Fizz';
translate(N) when N rem 5 =:= 0 ->
'Buzz';
translate(N) ->
integer_to_list(N).
Hello, fizzbuzz.ex
defmodule FizzBuzz do
def fizzbuzz(n) do
1..n
|> Enum.map(&translate/1)
|> Enum.join("n")
|> IO.puts
end
def translate(n) when rem(n, 3) == 0 and rem(n, 5) == 0, do: :FizzBuzz
def translate(n) when rem(n, 3) == 0, do: :Fizz
def translate(n) when rem(n, 5) == 0, do: :Buzz
def translate(n), do: n
end
Hello, fizzbuzz.lfe
(defmodule fizzbuzz
(export (fizzbuzz 1)))
(defun fizzbuzz (n)
(lists:foreach
(lambda (term) (lfe_io:format "~p~n" `(,term)))
(translate-upto n)))
(defun translate-upto (n)
(let ((numbers (lists:seq 1 n)))
(lists:map
(lambda (n) (translate n (rem n 3) (rem n 5)))
numbers)))
(defun translate
([_ 0 0] 'FizzBuzz)
([_ 0 _] 'Fizz)
([_ _ 0] 'Buzz)
([n _ _] n))
Hello, Demo.
Hello, Proctor.
• http://www.proctor-it.com
• @stevenproctor
• steven.proctor@gmail.com
• @fngeekery
• http://www.functionalgeekery.com
• @dfwerlang
• http://www.meetup.com/DFW-Erlang-User-Group/
• @planeterlang
• http://www.planeterlang.com

Weitere ähnliche Inhalte

Andere mochten auch

De cuong thi quoc gia mon anh
De cuong thi quoc gia mon anhDe cuong thi quoc gia mon anh
De cuong thi quoc gia mon anhTommy Bảo
 
Unit 3 – assembly language programming
Unit 3 – assembly language programmingUnit 3 – assembly language programming
Unit 3 – assembly language programmingKartik Sharma
 
1,001 Things You Didn't Know About Everything
1,001 Things You Didn't Know About Everything1,001 Things You Didn't Know About Everything
1,001 Things You Didn't Know About EverythingPamela J.
 
Christiane Nord
Christiane Nord Christiane Nord
Christiane Nord Jota Erre
 
Foreignization & domestication
Foreignization & domesticationForeignization & domestication
Foreignization & domesticationabdelbaar
 
Managerial communication unit-2
Managerial communication unit-2Managerial communication unit-2
Managerial communication unit-2SANJAY KANAGALA
 
Tourism in kenya– good or bad
Tourism in kenya– good or badTourism in kenya– good or bad
Tourism in kenya– good or badtudorgeog
 
An analysis of exam oriented education system (1)
An analysis of exam oriented education system (1)An analysis of exam oriented education system (1)
An analysis of exam oriented education system (1)lizhiao
 
More then a good story case application 1 answer
More then a good story case application 1 answerMore then a good story case application 1 answer
More then a good story case application 1 answerRazveer Jahan
 

Andere mochten auch (11)

De cuong thi quoc gia mon anh
De cuong thi quoc gia mon anhDe cuong thi quoc gia mon anh
De cuong thi quoc gia mon anh
 
Unit 3 – assembly language programming
Unit 3 – assembly language programmingUnit 3 – assembly language programming
Unit 3 – assembly language programming
 
1,001 Things You Didn't Know About Everything
1,001 Things You Didn't Know About Everything1,001 Things You Didn't Know About Everything
1,001 Things You Didn't Know About Everything
 
Christiane Nord
Christiane Nord Christiane Nord
Christiane Nord
 
Symbolism in "Scarlet Letter"
Symbolism in "Scarlet Letter"Symbolism in "Scarlet Letter"
Symbolism in "Scarlet Letter"
 
Present simple
Present simplePresent simple
Present simple
 
Foreignization & domestication
Foreignization & domesticationForeignization & domestication
Foreignization & domestication
 
Managerial communication unit-2
Managerial communication unit-2Managerial communication unit-2
Managerial communication unit-2
 
Tourism in kenya– good or bad
Tourism in kenya– good or badTourism in kenya– good or bad
Tourism in kenya– good or bad
 
An analysis of exam oriented education system (1)
An analysis of exam oriented education system (1)An analysis of exam oriented education system (1)
An analysis of exam oriented education system (1)
 
More then a good story case application 1 answer
More then a good story case application 1 answerMore then a good story case application 1 answer
More then a good story case application 1 answer
 

Ähnlich wie Hello, Joe. Hello, Mike; Hello, Robert.

Access to iDevices
Access to iDevicesAccess to iDevices
Access to iDeviceswill wade
 
Exploitation and State Machines
Exploitation and State MachinesExploitation and State Machines
Exploitation and State MachinesMichael Scovetta
 
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...Dakiry
 
28c3 in 15
28c3 in 1528c3 in 15
28c3 in 15antitree
 
Keynote, LambdaConf 2014 - The Silent Productivity Killer
Keynote, LambdaConf 2014 - The Silent Productivity KillerKeynote, LambdaConf 2014 - The Silent Productivity Killer
Keynote, LambdaConf 2014 - The Silent Productivity KillerPaul Phillips
 
Rails development environment talk
Rails development environment talkRails development environment talk
Rails development environment talkReuven Lerner
 
Hardware for JavaScript Developers
Hardware for JavaScript DevelopersHardware for JavaScript Developers
Hardware for JavaScript DevelopersTarik Kelestemur
 
NLP using JavaScript Natural Library
NLP using JavaScript Natural LibraryNLP using JavaScript Natural Library
NLP using JavaScript Natural LibraryAniruddha Chakrabarti
 
Hacking school computers for fun profit and better grades short
Hacking school computers for fun profit and better grades shortHacking school computers for fun profit and better grades short
Hacking school computers for fun profit and better grades shortVincent Ohprecio
 
Steelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trashSteelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trashinfodox
 
What happens when firefox crashes?
What happens when firefox crashes?What happens when firefox crashes?
What happens when firefox crashes?Erik Rose
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)jaxLondonConference
 
Natural Language Processing Tools for the Digital Humanities
Natural Language Processing Tools for the Digital HumanitiesNatural Language Processing Tools for the Digital Humanities
Natural Language Processing Tools for the Digital HumanitiesXiang Li
 
Go for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupGo for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupKirill Zonov
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012Tomas Doran
 
Lecture1_cis4930.pdf
Lecture1_cis4930.pdfLecture1_cis4930.pdf
Lecture1_cis4930.pdfzertash1
 
Oral tradition in software engineering: Passing the craft across generations
Oral tradition in software engineering: Passing the craft across generationsOral tradition in software engineering: Passing the craft across generations
Oral tradition in software engineering: Passing the craft across generationsbcantrill
 

Ähnlich wie Hello, Joe. Hello, Mike; Hello, Robert. (20)

Access to iDevices
Access to iDevicesAccess to iDevices
Access to iDevices
 
Exploitation and State Machines
Exploitation and State MachinesExploitation and State Machines
Exploitation and State Machines
 
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...
Єгор Попович, CTO @Tesseract, (Lviv, Ukraine) "Blockchain user: myth or reali...
 
28c3 in 15
28c3 in 1528c3 in 15
28c3 in 15
 
Keynote, LambdaConf 2014 - The Silent Productivity Killer
Keynote, LambdaConf 2014 - The Silent Productivity KillerKeynote, LambdaConf 2014 - The Silent Productivity Killer
Keynote, LambdaConf 2014 - The Silent Productivity Killer
 
Rails development environment talk
Rails development environment talkRails development environment talk
Rails development environment talk
 
Hardware for JavaScript Developers
Hardware for JavaScript DevelopersHardware for JavaScript Developers
Hardware for JavaScript Developers
 
NLP using JavaScript Natural Library
NLP using JavaScript Natural LibraryNLP using JavaScript Natural Library
NLP using JavaScript Natural Library
 
Hacking school computers for fun profit and better grades short
Hacking school computers for fun profit and better grades shortHacking school computers for fun profit and better grades short
Hacking school computers for fun profit and better grades short
 
Steelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trashSteelcon 2015 - 0wning the internet of trash
Steelcon 2015 - 0wning the internet of trash
 
What happens when firefox crashes?
What happens when firefox crashes?What happens when firefox crashes?
What happens when firefox crashes?
 
Speech Recognition System
Speech Recognition SystemSpeech Recognition System
Speech Recognition System
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
 
Natural Language Processing Tools for the Digital Humanities
Natural Language Processing Tools for the Digital HumanitiesNatural Language Processing Tools for the Digital Humanities
Natural Language Processing Tools for the Digital Humanities
 
Realtime web2012
Realtime web2012Realtime web2012
Realtime web2012
 
Go for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B MeetupGo for Rubyists. August 2018. RUG-B Meetup
Go for Rubyists. August 2018. RUG-B Meetup
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012
 
Lecture1_cis4930.pdf
Lecture1_cis4930.pdfLecture1_cis4930.pdf
Lecture1_cis4930.pdf
 
Oral tradition in software engineering: Passing the craft across generations
Oral tradition in software engineering: Passing the craft across generationsOral tradition in software engineering: Passing the craft across generations
Oral tradition in software engineering: Passing the craft across generations
 
nodebots presentation @seekjobs
nodebots presentation @seekjobsnodebots presentation @seekjobs
nodebots presentation @seekjobs
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Hello, Joe. Hello, Mike; Hello, Robert.

  • 1. Hello, Joe. Hello, Mike; Hello, Robert.1 A Hello World Style Lighting Talk on Erlang. 1. From Erlang the Movie (https://archive.org/details/ErlangTheMovie)
  • 2. Hello, Erlang. Erlang and OTP was designed for building distributed, asynchronous, highly-concurrent, fault tolerant applications with high availability.
  • 3. Hello, Erlang. Erlang and OTP was designed for building distributed, asynchronous, highly-concurrent, fault tolerant applications with high availability. #BuzzwordBingo
  • 5. Hello, Telecom. • 100s of Thousands, if not Millions, of calls happen at the same time
  • 6. Hello, Telecom. • 100s of Thousands, if not Millions, of calls happen at the same time • Your phone line has to always be available
  • 7. Hello, Telecom. • 100s of Thousands, if not Millions, of calls happen at the same time • Your phone line has to always be available • My call cannot corrupt your call
  • 9. Hello, Déjà vu • Sound Familiar?
  • 12. Hello, Failure. • In the Real World things fail. Embrace it.
  • 13. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy
  • 14. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy • Immutability
  • 15. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy • Immutability • No Shared State
  • 16. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy • Immutability • No Shared State • Isolated Processes Communicate Through Message Passing (Actor Model)
  • 17. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy • Immutability • No Shared State • Isolated Processes Communicate Through Message Passing (Actor Model) • Supervision Hierarchy
  • 18. Hello, Failure. • In the Real World things fail. Embrace it. • “Let It Crash” philosophy • Immutability • No Shared State • Isolated Processes Communicate Through Message Passing (Actor Model) • Supervision Hierarchy • Live code reloading
  • 24. Hello, “Weaknesses”. • No strings as a data type
  • 25. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types
  • 26. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios
  • 27. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs
  • 28. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs • Not going to be run on your mobile device;
  • 29. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs • Not going to be run on your mobile device; • but great for you mobile device backend.
  • 30. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs • Not going to be run on your mobile device; • but great for you mobile device backend. • WhatsApp anyone?
  • 31. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs • Not going to be run on your mobile device; • but great for you mobile device backend. • WhatsApp anyone? • Not insanely fast
  • 32. Hello, “Weaknesses”. • No strings as a data type • List of Integers or Binary types • Not super performant for string manipulation, but good enough for most scenarios • Not great for GUIs • Not going to be run on your mobile device; • but great for you mobile device backend. • WhatsApp anyone? • Not insanely fast • "There's no such thing as fast, only fast enough" ~ Joe Armstrong
  • 34. Hello, fizzbuzz.erl -module(fizzbuzz). -export([fizzbuzz/1]). fizzbuzz(N) -> Translations = lists:map(fun translate/1, lists:seq(1, N)), lists:foreach(fun(Item) -> io:format("~s~n", [Item]) end, Translations). translate(N) when N rem 3 =:= 0 andalso N rem 5 =:= 0 -> 'FizzBuzz'; translate(N) when N rem 3 =:= 0 -> 'Fizz'; translate(N) when N rem 5 =:= 0 -> 'Buzz'; translate(N) -> integer_to_list(N).
  • 35. Hello, fizzbuzz.ex defmodule FizzBuzz do def fizzbuzz(n) do 1..n |> Enum.map(&translate/1) |> Enum.join("n") |> IO.puts end def translate(n) when rem(n, 3) == 0 and rem(n, 5) == 0, do: :FizzBuzz def translate(n) when rem(n, 3) == 0, do: :Fizz def translate(n) when rem(n, 5) == 0, do: :Buzz def translate(n), do: n end
  • 36. Hello, fizzbuzz.lfe (defmodule fizzbuzz (export (fizzbuzz 1))) (defun fizzbuzz (n) (lists:foreach (lambda (term) (lfe_io:format "~p~n" `(,term))) (translate-upto n))) (defun translate-upto (n) (let ((numbers (lists:seq 1 n))) (lists:map (lambda (n) (translate n (rem n 3) (rem n 5))) numbers))) (defun translate ([_ 0 0] 'FizzBuzz) ([_ 0 _] 'Fizz) ([_ _ 0] 'Buzz) ([n _ _] n))
  • 38. Hello, Proctor. • http://www.proctor-it.com • @stevenproctor • steven.proctor@gmail.com • @fngeekery • http://www.functionalgeekery.com • @dfwerlang • http://www.meetup.com/DFW-Erlang-User-Group/ • @planeterlang • http://www.planeterlang.com