SlideShare une entreprise Scribd logo
1  sur  36
The almost zero-slide
                       story of my journey
                       into Erlang, and why
                      I’ll never be the same
                                again

                             Pavlo Baron, codecentric

Wednesday, February 20, 13
Pavlo Baron

                              @pavlobaron


Wednesday, February 20, 13
it began in the 70s,
                     as I learned to tinker...



Wednesday, February 20, 13
natural speaking wasn’t
                   really mine, so some
                  time later I discovered
                    the most expressive
                      language around
Wednesday, February 20, 13
x86 assembly



Wednesday, February 20, 13
At some point, I
                  realized that there is C
                    (guess it was about
                       growing up or
                        something).
Wednesday, February 20, 13
So I started coding in C:
       while (abc) {}

                             asm {
                                 push   bx
                                 push   es
                                 mov    bx, 9
                                 mov    ax, 0
       ...
Wednesday, February 20, 13
But puberty was over
                       (I was like 18), and I
                          had to do some
                             higher level
                        programming. So I
                          discovered C++
Wednesday, February 20, 13
The golden age of my
          C++ coding: OO thinking,
            abstractions, objects:
                 long SomeClass::getFoo()
                 {
                     _asm
                     {
                          mov eax,dword ptr[ecx]
                     }
                 }
                 ...
Wednesday, February 20, 13
But (enterprise) Java’s
                           advance was
                       unstoppable. I had
                          to jump in for
                          some money.
Wednesday, February 20, 13
I loved coding Java - finally
         patterns and real abstract
                  thinking:
              package com.stuff.jni;
              public class Magic
              {
                static {
                  System.loadLibrary("strlen");
                }
                public static native int strlen(String s);
              }
              ...


Wednesday, February 20, 13
Out of nowhere,
                     someone came along
                    and asked me to write
                       a tiny-footprint
                      database for these
                      weird Palm-PDAs.
Wednesday, February 20, 13
And I found myself
                             coding for memory
                              maximum of 64kB
                                  yet again.

Wednesday, February 20, 13
But (enterprise) Java
                               was where the
                                 money lived
                                 (fun lived in
                                nightly hacks).
Wednesday, February 20, 13
oh, look, an interest
                 calculator that’s perfect
                  for us! Let’s buy it for
                   our Java platform!!!

Wednesday, February 20, 13
What, it’s
                        written in C???
                       What, it can’t do
                    parallel calculation?????

Wednesday, February 20, 13
How parallelize this
                  thing in our enterprise
                 Java stack? Threads? EJB
                   doesn’t like threads.
                     Machines through
                  message-driven beans,
                      JMS, whatever?..
Wednesday, February 20, 13
Now, the bullshit part
                       of the slides is over.
                      Here is where Erlang
                             kicks in.

Wednesday, February 20, 13
I spent 3 months of my
                    life researching how
                        Erlang can help
                    parallelize this weird
                       piece of C code.

Wednesday, February 20, 13
It could help.
                               It really could.

                             On one machine, on
                              several machines.

Wednesday, February 20, 13
But their ops guys said
          it’s not Java. So they won’t
             take it (as if they knew
           what real serious Java is).

Wednesday, February 20, 13
And what happened? I
           just used every chance to
             play more with Erlang.
             This is what happened.

Wednesday, February 20, 13
I decided to write a book
            only to learn this thing a
           lot deeper. Took 2.5 years
             of my life, worth every
                  single minute.

Wednesday, February 20, 13
I toured through
             Germany with an Erlang
              live hacking session for
            Java user groups. And yes,
                they (mostly) liked it.

Wednesday, February 20, 13
My Java code started
                        looking like this (and,
                          man, why didn’t it
                             compile?):

                      public void doit(String s) ->

              ...

Wednesday, February 20, 13
I don’t even want to
                    touch a language not
                         having list
                    comprehensions and
                  lambdas. Tooth grinding
                   about those that don’t
                   have pattern matching
Wednesday, February 20, 13
Erlang made my code better
    in any language I use. I don’t
      reassign variables. I work
          with deep copies. I
      sometimes use recursion
     instead of loops. I cut code
        into tiny, parallelizable
               functions
Wednesday, February 20, 13
I judge every platform by
                the fact if I can spawn
                2^27 actors on it and
                  pass asynchronous
             messages between them
Wednesday, February 20, 13
I am questioning every
            home-brewed non-Erlang
              distributed system or
            programming framework
             with a simple question:
            why reinvent the wheel?
Wednesday, February 20, 13
For specific use cases such
   as messaging or distributed
   data management, an Erlang-
      based technology has
     automatic credit of trust
         when I look at it
Wednesday, February 20, 13
I met some of the smartest
     people I ever met who are
    directly or indirectly related
              to Erlang

Wednesday, February 20, 13
No, Erlang is not perfect.



Wednesday, February 20, 13
But to be honest, nothing is.

               Erlang is just the only
              considerable platform to
                solve some specific
                     problems.
Wednesday, February 20, 13
I have it in my toolbox. It’s
            a precise machine, very
            sensitive to doing things
              wrong. But I’m glad I
               learned to use it.
Wednesday, February 20, 13
You should, too.



Wednesday, February 20, 13
The End.

            Thanks to the WWW
             for helping out with
          some code snippets. I lost
             my own ones during
               a house moving
Wednesday, February 20, 13

Contenu connexe

En vedette

Erlang and the Cloud: A Fractal Approach to Throughput
Erlang and the Cloud: A Fractal Approach to ThroughputErlang and the Cloud: A Fractal Approach to Throughput
Erlang and the Cloud: A Fractal Approach to Throughput
Wooga
 

En vedette (12)

NoSQL - how it works (@pavlobaron)
NoSQL - how it works (@pavlobaron)NoSQL - how it works (@pavlobaron)
NoSQL - how it works (@pavlobaron)
 
@pavlobaron Why monitoring sucks and how to improve it
@pavlobaron Why monitoring sucks and how to improve it@pavlobaron Why monitoring sucks and how to improve it
@pavlobaron Why monitoring sucks and how to improve it
 
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)
 
Dynamo concepts in depth (@pavlobaron)
Dynamo concepts in depth (@pavlobaron)Dynamo concepts in depth (@pavlobaron)
Dynamo concepts in depth (@pavlobaron)
 
Becoming reactive without overreacting (@pavlobaron)
Becoming reactive without overreacting (@pavlobaron)Becoming reactive without overreacting (@pavlobaron)
Becoming reactive without overreacting (@pavlobaron)
 
Harry Potter and Enormous Data (Pavlo Baron)
Harry Potter and Enormous Data (Pavlo Baron)Harry Potter and Enormous Data (Pavlo Baron)
Harry Potter and Enormous Data (Pavlo Baron)
 
Erlang and the Cloud: A Fractal Approach to Throughput
Erlang and the Cloud: A Fractal Approach to ThroughputErlang and the Cloud: A Fractal Approach to Throughput
Erlang and the Cloud: A Fractal Approach to Throughput
 
(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)
 
Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)
 
Big Data & NoSQL - EFS'11 (Pavlo Baron)
Big Data & NoSQL - EFS'11 (Pavlo Baron)Big Data & NoSQL - EFS'11 (Pavlo Baron)
Big Data & NoSQL - EFS'11 (Pavlo Baron)
 
Expo antiagregantes plaquetarios
Expo antiagregantes plaquetariosExpo antiagregantes plaquetarios
Expo antiagregantes plaquetarios
 
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
 

Plus de Pavlo Baron

Plus de Pavlo Baron (11)

data, ..., profit (@pavlobaron)
data, ..., profit (@pavlobaron)data, ..., profit (@pavlobaron)
data, ..., profit (@pavlobaron)
 
Near realtime analytics - technology choice (@pavlobaron)
Near realtime analytics - technology choice (@pavlobaron)Near realtime analytics - technology choice (@pavlobaron)
Near realtime analytics - technology choice (@pavlobaron)
 
Set this Big Data technology zoo in order (@pavlobaron)
Set this Big Data technology zoo in order (@pavlobaron)Set this Big Data technology zoo in order (@pavlobaron)
Set this Big Data technology zoo in order (@pavlobaron)
 
a Tech guy’s take on Big Data business cases (@pavlobaron)
a Tech guy’s take on Big Data business cases (@pavlobaron)a Tech guy’s take on Big Data business cases (@pavlobaron)
a Tech guy’s take on Big Data business cases (@pavlobaron)
 
From Hand To Mouth (@pavlobaron)
From Hand To Mouth (@pavlobaron)From Hand To Mouth (@pavlobaron)
From Hand To Mouth (@pavlobaron)
 
The Big Data Developer (@pavlobaron)
The Big Data Developer (@pavlobaron)The Big Data Developer (@pavlobaron)
The Big Data Developer (@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)
20 reasons why we don't need architects (@pavlobaron)
 
Theoretical aspects of distributed systems - playfully illustrated (@pavlobaron)
Theoretical aspects of distributed systems - playfully illustrated (@pavlobaron)Theoretical aspects of distributed systems - playfully illustrated (@pavlobaron)
Theoretical aspects of distributed systems - playfully illustrated (@pavlobaron)
 
JUGS June'11 - Erlang/OTP
JUGS June'11 - Erlang/OTPJUGS June'11 - Erlang/OTP
JUGS June'11 - Erlang/OTP
 
Big Data - JAX2011 (Pavlo Baron)
Big Data - JAX2011 (Pavlo Baron)Big Data - JAX2011 (Pavlo Baron)
Big Data - JAX2011 (Pavlo Baron)
 
BigData & CDN - OOP2011 (Pavlo Baron)
BigData & CDN - OOP2011 (Pavlo Baron)BigData & CDN - OOP2011 (Pavlo Baron)
BigData & CDN - OOP2011 (Pavlo Baron)
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
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
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

Diving into Erlang is a one-way ticket (@pavlobaron)

  • 1. The almost zero-slide story of my journey into Erlang, and why I’ll never be the same again Pavlo Baron, codecentric Wednesday, February 20, 13
  • 2. Pavlo Baron @pavlobaron Wednesday, February 20, 13
  • 3. it began in the 70s, as I learned to tinker... Wednesday, February 20, 13
  • 4. natural speaking wasn’t really mine, so some time later I discovered the most expressive language around Wednesday, February 20, 13
  • 6. At some point, I realized that there is C (guess it was about growing up or something). Wednesday, February 20, 13
  • 7. So I started coding in C: while (abc) {} asm { push bx push es mov bx, 9 mov ax, 0 ... Wednesday, February 20, 13
  • 8. But puberty was over (I was like 18), and I had to do some higher level programming. So I discovered C++ Wednesday, February 20, 13
  • 9. The golden age of my C++ coding: OO thinking, abstractions, objects: long SomeClass::getFoo() { _asm { mov eax,dword ptr[ecx] } } ... Wednesday, February 20, 13
  • 10. But (enterprise) Java’s advance was unstoppable. I had to jump in for some money. Wednesday, February 20, 13
  • 11. I loved coding Java - finally patterns and real abstract thinking: package com.stuff.jni; public class Magic { static { System.loadLibrary("strlen"); } public static native int strlen(String s); } ... Wednesday, February 20, 13
  • 12. Out of nowhere, someone came along and asked me to write a tiny-footprint database for these weird Palm-PDAs. Wednesday, February 20, 13
  • 13. And I found myself coding for memory maximum of 64kB yet again. Wednesday, February 20, 13
  • 14. But (enterprise) Java was where the money lived (fun lived in nightly hacks). Wednesday, February 20, 13
  • 15. oh, look, an interest calculator that’s perfect for us! Let’s buy it for our Java platform!!! Wednesday, February 20, 13
  • 16. What, it’s written in C??? What, it can’t do parallel calculation????? Wednesday, February 20, 13
  • 17. How parallelize this thing in our enterprise Java stack? Threads? EJB doesn’t like threads. Machines through message-driven beans, JMS, whatever?.. Wednesday, February 20, 13
  • 18. Now, the bullshit part of the slides is over. Here is where Erlang kicks in. Wednesday, February 20, 13
  • 19. I spent 3 months of my life researching how Erlang can help parallelize this weird piece of C code. Wednesday, February 20, 13
  • 20. It could help. It really could. On one machine, on several machines. Wednesday, February 20, 13
  • 21. But their ops guys said it’s not Java. So they won’t take it (as if they knew what real serious Java is). Wednesday, February 20, 13
  • 22. And what happened? I just used every chance to play more with Erlang. This is what happened. Wednesday, February 20, 13
  • 23. I decided to write a book only to learn this thing a lot deeper. Took 2.5 years of my life, worth every single minute. Wednesday, February 20, 13
  • 24. I toured through Germany with an Erlang live hacking session for Java user groups. And yes, they (mostly) liked it. Wednesday, February 20, 13
  • 25. My Java code started looking like this (and, man, why didn’t it compile?): public void doit(String s) -> ... Wednesday, February 20, 13
  • 26. I don’t even want to touch a language not having list comprehensions and lambdas. Tooth grinding about those that don’t have pattern matching Wednesday, February 20, 13
  • 27. Erlang made my code better in any language I use. I don’t reassign variables. I work with deep copies. I sometimes use recursion instead of loops. I cut code into tiny, parallelizable functions Wednesday, February 20, 13
  • 28. I judge every platform by the fact if I can spawn 2^27 actors on it and pass asynchronous messages between them Wednesday, February 20, 13
  • 29. I am questioning every home-brewed non-Erlang distributed system or programming framework with a simple question: why reinvent the wheel? Wednesday, February 20, 13
  • 30. For specific use cases such as messaging or distributed data management, an Erlang- based technology has automatic credit of trust when I look at it Wednesday, February 20, 13
  • 31. I met some of the smartest people I ever met who are directly or indirectly related to Erlang Wednesday, February 20, 13
  • 32. No, Erlang is not perfect. Wednesday, February 20, 13
  • 33. But to be honest, nothing is. Erlang is just the only considerable platform to solve some specific problems. Wednesday, February 20, 13
  • 34. I have it in my toolbox. It’s a precise machine, very sensitive to doing things wrong. But I’m glad I learned to use it. Wednesday, February 20, 13
  • 35. You should, too. Wednesday, February 20, 13
  • 36. The End. Thanks to the WWW for helping out with some code snippets. I lost my own ones during a house moving Wednesday, February 20, 13