SlideShare a Scribd company logo
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

More Related Content

PDF
The Agile Alibi (Pavlo Baron)
PPTX
читальний зал
PPT
Madre feliz dia¡
PDF
Qcon2015 living database
PDF
Why we do tech the way we do tech now (@pavlobaron)
PPTX
абонемент
PPTX
The hidden costs of the parallel world (@pavlobaron)
PDF
Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)
The Agile Alibi (Pavlo Baron)
читальний зал
Madre feliz dia¡
Qcon2015 living database
Why we do tech the way we do tech now (@pavlobaron)
абонемент
The hidden costs of the parallel world (@pavlobaron)
Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)

Viewers also liked (12)

PDF
NoSQL - how it works (@pavlobaron)
PDF
@pavlobaron Why monitoring sucks and how to improve it
PDF
What can be done with Java, but should better be done with Erlang (@pavlobaron)
PDF
Dynamo concepts in depth (@pavlobaron)
PDF
Becoming reactive without overreacting (@pavlobaron)
PPT
Harry Potter and Enormous Data (Pavlo Baron)
PDF
Erlang and the Cloud: A Fractal Approach to Throughput
PDF
(Functional) reactive programming (@pavlobaron)
PPT
Let It Crash (@pavlobaron)
PPT
Big Data & NoSQL - EFS'11 (Pavlo Baron)
PPTX
Expo antiagregantes plaquetarios
PDF
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
NoSQL - how it works (@pavlobaron)
@pavlobaron Why monitoring sucks and how to improve it
What can be done with Java, but should better be done with Erlang (@pavlobaron)
Dynamo concepts in depth (@pavlobaron)
Becoming reactive without overreacting (@pavlobaron)
Harry Potter and Enormous Data (Pavlo Baron)
Erlang and the Cloud: A Fractal Approach to Throughput
(Functional) reactive programming (@pavlobaron)
Let It Crash (@pavlobaron)
Big Data & NoSQL - EFS'11 (Pavlo Baron)
Expo antiagregantes plaquetarios
Data on its way to history, interrupted by analytics and silicon (@pavlobaron)
Ad

More from Pavlo Baron (11)

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

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
TLE Review Electricity (Electricity).pptx
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Mushroom cultivation and it's methods.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Hybrid model detection and classification of lung cancer
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
DP Operators-handbook-extract for the Mautical Institute
PPTX
1. Introduction to Computer Programming.pptx
Encapsulation theory and applications.pdf
OMC Textile Division Presentation 2021.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Enhancing emotion recognition model for a student engagement use case through...
A comparative analysis of optical character recognition models for extracting...
Accuracy of neural networks in brain wave diagnosis of schizophrenia
TLE Review Electricity (Electricity).pptx
SOPHOS-XG Firewall Administrator PPT.pptx
Mushroom cultivation and it's methods.pdf
Tartificialntelligence_presentation.pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Encapsulation_ Review paper, used for researhc scholars
Unlocking AI with Model Context Protocol (MCP)
Univ-Connecticut-ChatGPT-Presentaion.pdf
cloud_computing_Infrastucture_as_cloud_p
Hybrid model detection and classification of lung cancer
Assigned Numbers - 2025 - Bluetooth® Document
DP Operators-handbook-extract for the Mautical Institute
1. Introduction to Computer Programming.pptx

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