SlideShare ist ein Scribd-Unternehmen logo
1 von 93
Downloaden Sie, um offline zu lesen
$ whoami
Name: Zvi Avraham
Title: Founder & CEO
Company: ZADATA Ltd
E-mail: zvi@zadata.com
Concurrent Language for Concurrent World
The world is concurrent…
I could not drive the car, if I did
not understood concurrency …
-- Joe Armstrong, father of Erlang
Object-oriented
Programming
Object-oriented
Programming
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Concurrency-oriented
Programming
Concurrency-oriented
Programming
process
process
process
process
process
process
process
process
process
process
process
process
process
process
process
process
process
process
Imagine a programming
language which allows only
1000 objects
-- Joe Armstrong, father of Erlang
COP vs OOP
Concurrency-oriented vs Object-oriented
• 15 years ago OOP became mainstream
• COP became popular only recently
• Process is active object
– i.e. object with it’s own process of control
– Objects in OOP are “passive objects”
• Processes as cheap as hashtables:
– ~ 300 words (1.2KB) per process by default
– max 134M processes per VM (limited by RAM)
Concurrency-oriented Programming
• Large number of processes (up to millions)
• Complete isolation of processes
• No shared memory
• Copy message data between processes
– instead of just passing pointer to message
• Avoid sequential bottlenecks
• Location transparency
Share Nothing!
No mutable State!
Software Isolation
But, it will not help
if the whole VM crashes
One Process per
Parallel Activity
• try to do only one thing per process
• If you need to do something
– just spawn a new process
• no thread pools!
Let it crash!
• all sequential languages get error handling
wrong!
• No defensive programming!
• If you don’t know how to recover from the
error – let it crash!
Lenin –
Lived
Lenin –
is Alive
Lenin –
will Live!
Errors –
Existed
Errors –
Exist
Errors –
will Exist!
Lenin, read my dissertation:
“Making reliable distributed
systems in the presence of
software errors”
http://www.erlang.org/download/armstrong_thesis_2003.pdf
Erlang Timeline
1984
1986
1987
1991
1993
OTP
1996
1998
2007
Open SourceDistributed
Erlang
Early
Erlang
Prototypes
First fast
implementation
CS Lab
Experiments
AXD301
switch
Erlang/OTP Stack
Erlang VM – BEAM / ERTS
Functional Sequential Erlang
Concurrent Erlang
OTP – Open Telecom Platform
Distributed Erlang
ErlangProgrammingLanguage
Functional Sequential Erlang
• Data types:
–Integers (incl. BigNums), floats, atoms
–tuples/records, lists/plists, binaries, funs
–Maps (added in R17)
• single assignment
• pattern matching & guards
• closures (anonymous function data type)
• list comprehensions
• bit-syntax & binary comprehensions
• tail recursion & tail call optimization (TCO)
Single Assignment1> X.
* 2: variable 'X' is unbound
2> X = 10.
10
3> X = X + 1.
** exception error: no match of right hand side
value 11
4> X = X.
10
5> X = 10.
10
6> X = 20.
** exception error: no match of right hand side
value 20
No Loops???
No Loops???
• Use instead:
–recursion and tail recursion
–list comprehensions
–binary comprehensions
–Higher-order Functions (HOFs):
• map/foldl/foldr/zip/filter/etc.
• For example:
[ io:format(“~b”,[I]) || I<-lists:seq(1,10) ].
RECURSION
RECURSION
Regular Recursion
Tail Recursion
zvi@host:~$ erl
Erlang R16B02 …
…
1> c(demo).
{ok,demo}
2> demo:fact(0).
1
3> demo:fact(5).
120
4> demo:fact(-10).
** exception error: no function clause
matching demo:fact(-10) (demo.erl, line 10)
OOP vs FP
Side-Effects
• Erlang is not pure-functional language
• “Controlled Side effects”:
– Messages - Pid ! Msg – send message to process Pid
– Signals - i.e. your linked process is dead
– Exceptions
– I/O
– Process Dictionary - similar to TLS (thread local storage)
– ETS / DETS - fast in-memory / persistent lookup tables
– Mnesia - distributed realtime database (sort of STM)
Erlang Source Code Structure
• OTP Release (self-contained tar.gz archive)
– OTP Application (directory structure)
• Module (file sources in *.erl, compiled in *.beam)
– Function
Âť Clause (syntactic sugar for case statement)
MFA
• Module:Function/Arity
• Module:Function(Arguments)
• M:F(A1,A2,..,An) = apply(M,F,[A1,A2,..,An])
Concurrent Erlang
• Spawn processes
• Send messages to processes
• Selective receive
• Additional data types:
– PIDs, references
Spawn a process
Send Message
Receive Message
Actors / Agents / Active Objects
Process
• Pid – Process ID
• optional: registered name
• initial call: MFA
• message queue (mailbox)
• stack
• heap
• Dictionary (like TLS – thread local storage)
• traping exits? (boolean flag)
• linked processes
• priority (low/normal/high)
• Reductions counter
Distributed Erlang
Erlang Run-Time System Erlang Run-Time System
network
A B C
Node name: foo@domain.com Node name: bar@domain.com
Distributed Erlang
Erlang Run-Time System Erlang Run-Time System
B ! Msg
network
A B C
Node name: foo@domain.com Node name: bar@domain.com
Distributed Erlang
Erlang Run-Time System Erlang Run-Time System
B ! Msg
network
C ! Msg
A B C
Node name: foo@domain.com Node name: bar@domain.com
Erlang VM - SMP Schedulers
zvi@host:~$ erl
Erlang R16B02 (erts-5.10.3)
[smp:4:4] [async-threads:10] [hipe]
[kernel-poll:false]
Eshell V5.10.3 (abort with ^G)
1>
Hot Code Reloading
• Module may have 2 version loaded in VM:
– old version
– current version
• When new version of module is loaded:
– it become a “current version”
– current version become the “old version”
• All new processes will use current version
• The old processes running old version
– In places in the code where module name is explicitly
specified - the process will switch to current version:
• my_function(Args) - no version switch
• my_module:my_function(Args) - switching version
Tools
• IDE:
– Emacs, Distel, Plugins for Eclipse and Netbeans
• Testing:
– e-unit, meck, proper, QuickCheck (paid), Quick Check mini - free
• Static code analyzer:
– Dialyzer
• Debug and trace
– Built-in in VM – dbg, redbug
• Build:
– emake, rebar, relx, erlang.mk
• Package Managers:
– rebar, mix
ERLANG RESOURCES
Docs, Tutorials, Community, Conferences
ErlangCentral.org
Erlangbooks
http://www.erlang.org/download.html
http://www.erlang.org/doc
http://erlang.org/mailman/listinfo/erlang-questions
http://LearnYouSomeErlang.com
http://www.TryErlang.org
https://ErlangCentral.org
Erlang/OTP is a good fit for:
• Irregular concurrency:
– Task-level
– Fine-grained parallelism
• Network servers
• Distributed systems
• Middleware:
– Parallel databases
– Message Queue servers
• Soft Realtime / Embedded applications
• Monitoring, control and testing tools
Not so good fit for:
• Concurrency for synchronized parallel execution
– Data Parallelism
• Floating-point intensive code (HPC)
• Text Processing / Unicode
– Unicode support now much better
• Traditional GUI (supports wxWidgets)
• Hard Realtime applications
• Extensive interop with other languages/VMs
– improvement here with NIFs and Erjang - Erlang on
JVM
Thank You! Now Q&A
All images are taken from Google Image search and various other places on the Internet
Š Copyright of corresponding owners
BACKUP SLIDES
Communicating with External world:
• Part of the OTP:
– CORBA/IDL
– ODBC/SQL
– ASN.1
– SNMP
– HTTP/FTP
– SSH
• erlcall
– execute any Erlang function on remote Node from the
shell or script
• escript
– write scripts in Erlang – no need to compile
Communicating with External world
In-proc Out-of-proc
Custom Protocol Linked-in Drivers
• in-proc (.so, DLLs)
• Written in C
• custom protocols
• Can crash VM
Ports
• external executable
• like pipes
• custom protocols via
fd/stdio/sockets
• Dir = os:cmd(“ls –al”).
Generic Protocol NIF
• Native Implemented
Functions
• Written in C
• in-proc (like JNI in Java:
.so, DLLs)
• .so/DLLs can be hot code
reloaded at runtime
• can block a scheduler
• Can crash VM
C-Node
• out-of-proc (external executable,
interpreter or VM)
• Pretend to be a distributed
Erlang node (but implemented in
other lang.)
• JInterface (Java), OTP.NET,
PyInterface (Pyton), Ruby-
electricity, etc.
• Example: erlcall
OTHER ERLANG VM
IMPLEMENTATIONS
Erjang – Erlang for JVM
Erlang-on-Xen / ling VM
LuvvieScript - Erlang to JS compiler
LANGUAGES FOR ERLANG VM
Elixir Books
COMPARISON
Concurrent Programming: Scala+Akka, node.js, Go
Go-lang
Erlang / Elixir Clojure Scala Node.js Go-lang
Paradigm Functional COP Functional Functional
OOP
CBoP
OOP
ImperativeO
OP?
Type system dynamic dynamic static dynamic static
Target BEAM JVM JVM Chrome V8 native
Multithreading yes yes yes no Yes
Built-in
Asynch I/O
yes no no yes yes
Lightweight
processes
yes Partial* no no yes
Soft-RT GC yes no no no no
Pattern
Matching
yes no yes no no
OTP analogue? Yes - OTP Akka? Akka? no no
Tools Middle
Elixir - better
good middle good excellent
Problem Domain
usually used
Messaging,
Distributed
Systems
Unstruct.
data
Big Data:
Kafka, Spark
Web apps /
Realtime Web
DevOps

Weitere ähnliche Inhalte

Was ist angesagt?

Linux multiplexing
Linux multiplexingLinux multiplexing
Linux multiplexing
Mark Veltzer
 
LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723
Iftach Ian Amit
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Igalia
 
Concurrent Programming OpenMP @ Distributed System Discussion
Concurrent Programming OpenMP @ Distributed System DiscussionConcurrent Programming OpenMP @ Distributed System Discussion
Concurrent Programming OpenMP @ Distributed System Discussion
CherryBerry2
 
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Chris Fregly
 

Was ist angesagt? (20)

Lecture8
Lecture8Lecture8
Lecture8
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014
 
Compilation and Execution
Compilation and ExecutionCompilation and Execution
Compilation and Execution
 
Let it crash! The Erlang Approach to Building Reliable Services
Let it crash! The Erlang Approach to Building Reliable ServicesLet it crash! The Erlang Approach to Building Reliable Services
Let it crash! The Erlang Approach to Building Reliable Services
 
Avro - More Than Just a Serialization Framework - CHUG - 20120416
Avro - More Than Just a Serialization Framework - CHUG - 20120416Avro - More Than Just a Serialization Framework - CHUG - 20120416
Avro - More Than Just a Serialization Framework - CHUG - 20120416
 
Linux multiplexing
Linux multiplexingLinux multiplexing
Linux multiplexing
 
Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011
 
Intro to elixir and phoenix
Intro to elixir and phoenixIntro to elixir and phoenix
Intro to elixir and phoenix
 
An Introduction to Twisted
An Introduction to TwistedAn Introduction to Twisted
An Introduction to Twisted
 
LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
 
Introduction to OpenMP
Introduction to OpenMPIntroduction to OpenMP
Introduction to OpenMP
 
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
 
Openmp
OpenmpOpenmp
Openmp
 
epoll() - The I/O Hero
epoll() - The I/O Heroepoll() - The I/O Hero
epoll() - The I/O Hero
 
Concurrent Programming OpenMP @ Distributed System Discussion
Concurrent Programming OpenMP @ Distributed System DiscussionConcurrent Programming OpenMP @ Distributed System Discussion
Concurrent Programming OpenMP @ Distributed System Discussion
 
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and UnderstandingA Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understanding
 
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
Swift for TensorFlow - Tanmay Bakshi - Advanced Spark and TensorFlow Meetup -...
 
Taming the resource tiger
Taming the resource tigerTaming the resource tiger
Taming the resource tiger
 
Asynchronous I/O in Python 3
Asynchronous I/O in Python 3Asynchronous I/O in Python 3
Asynchronous I/O in Python 3
 

Andere mochten auch

Erlang Message Passing Concurrency, For The Win
Erlang  Message  Passing  Concurrency,  For  The  WinErlang  Message  Passing  Concurrency,  For  The  Win
Erlang Message Passing Concurrency, For The Win
l xf
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
l xf
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
Eonblast
 

Andere mochten auch (20)

Erlang Message Passing Concurrency, For The Win
Erlang  Message  Passing  Concurrency,  For  The  WinErlang  Message  Passing  Concurrency,  For  The  Win
Erlang Message Passing Concurrency, For The Win
 
Concurrency in Elixir with OTP
Concurrency in Elixir with OTPConcurrency in Elixir with OTP
Concurrency in Elixir with OTP
 
Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)
 
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
 
Elixir and OTP
Elixir and OTPElixir and OTP
Elixir and OTP
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
 
Clojure class
Clojure classClojure class
Clojure class
 
20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaErlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
 
Winning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test CycleWinning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test Cycle
 
High Performance Erlang
High  Performance  ErlangHigh  Performance  Erlang
High Performance Erlang
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John Stevenson
 
Elixir talk
Elixir talkElixir talk
Elixir talk
 
Clojure values
Clojure valuesClojure values
Clojure values
 
NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
 
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
 
From Perl To Elixir
From Perl To ElixirFrom Perl To Elixir
From Perl To Elixir
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 

Ähnlich wie Erlang - Concurrent Language for Concurrent World

Realtime web2012
Realtime web2012Realtime web2012
Realtime web2012
Timothy Fitz
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
Tomas Doran
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
elliando dias
 
Introduction to multicore .ppt
Introduction to multicore .pptIntroduction to multicore .ppt
Introduction to multicore .ppt
Rajagopal Nagarajan
 

Ähnlich wie Erlang - Concurrent Language for Concurrent World (20)

Go from a PHP Perspective
Go from a PHP PerspectiveGo from a PHP Perspective
Go from a PHP Perspective
 
Php
PhpPhp
Php
 
Php
PhpPhp
Php
 
Php
PhpPhp
Php
 
Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)
 
Evented Ruby VS Node.js
Evented Ruby VS Node.jsEvented Ruby VS Node.js
Evented Ruby VS Node.js
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through Ontology
 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash Cracking
 
Realtime web2012
Realtime web2012Realtime web2012
Realtime web2012
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
Rustbridge
RustbridgeRustbridge
Rustbridge
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for Rubyists
 
Rails development environment talk
Rails development environment talkRails development environment talk
Rails development environment talk
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
 
Week1 Electronic System-level ESL Design and SystemC Begin
Week1 Electronic System-level ESL Design and SystemC BeginWeek1 Electronic System-level ESL Design and SystemC Begin
Week1 Electronic System-level ESL Design and SystemC Begin
 
Introduction to multicore .ppt
Introduction to multicore .pptIntroduction to multicore .ppt
Introduction to multicore .ppt
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 

Mehr von Zvi Avraham

Cloud Computing: AWS for Lean Startups
Cloud Computing: AWS for Lean StartupsCloud Computing: AWS for Lean Startups
Cloud Computing: AWS for Lean Startups
Zvi Avraham
 

Mehr von Zvi Avraham (9)

Data isn't the new Oil - it's a new Asset Class!
Data isn't the new Oil - it's a new Asset Class!Data isn't the new Oil - it's a new Asset Class!
Data isn't the new Oil - it's a new Asset Class!
 
Functional APIs with Absinthe GraphQL
Functional APIs with Absinthe GraphQLFunctional APIs with Absinthe GraphQL
Functional APIs with Absinthe GraphQL
 
Limited supply
Limited supplyLimited supply
Limited supply
 
TimeSpaceDB
TimeSpaceDBTimeSpaceDB
TimeSpaceDB
 
Erlang on OSv
Erlang on OSvErlang on OSv
Erlang on OSv
 
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
 
[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...
[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...
[http://1PU.SH] Building Wireless Sensor Networks with MQTT-SN, RaspberryPi a...
 
Cloud Computing: AWS for Lean Startups
Cloud Computing: AWS for Lean StartupsCloud Computing: AWS for Lean Startups
Cloud Computing: AWS for Lean Startups
 
Migration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming ModelsMigration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming Models
 

KĂźrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

KĂźrzlich hochgeladen (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Erlang - Concurrent Language for Concurrent World