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

NoSQL - how it works (@pavlobaron)
NoSQL - how it works (@pavlobaron)NoSQL - how it works (@pavlobaron)
NoSQL - how it works (@pavlobaron)Pavlo Baron
 
@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 itPavlo Baron
 
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)Pavlo Baron
 
Dynamo concepts in depth (@pavlobaron)
Dynamo concepts in depth (@pavlobaron)Dynamo concepts in depth (@pavlobaron)
Dynamo concepts in depth (@pavlobaron)Pavlo Baron
 
Becoming reactive without overreacting (@pavlobaron)
Becoming reactive without overreacting (@pavlobaron)Becoming reactive without overreacting (@pavlobaron)
Becoming reactive without overreacting (@pavlobaron)Pavlo Baron
 
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)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 ThroughputWooga
 
(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)Pavlo Baron
 
Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)Let It Crash (@pavlobaron)
Let It Crash (@pavlobaron)Pavlo Baron
 
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)Pavlo Baron
 
Expo antiagregantes plaquetarios
Expo antiagregantes plaquetariosExpo antiagregantes plaquetarios
Expo antiagregantes plaquetariosale_magnifike
 
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)Pavlo Baron
 

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

data, ..., profit (@pavlobaron)
data, ..., profit (@pavlobaron)data, ..., profit (@pavlobaron)
data, ..., profit (@pavlobaron)Pavlo Baron
 
Near realtime analytics - technology choice (@pavlobaron)
Near realtime analytics - technology choice (@pavlobaron)Near realtime analytics - technology choice (@pavlobaron)
Near realtime analytics - technology choice (@pavlobaron)Pavlo Baron
 
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)Pavlo Baron
 
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)Pavlo Baron
 
From Hand To Mouth (@pavlobaron)
From Hand To Mouth (@pavlobaron)From Hand To Mouth (@pavlobaron)
From Hand To Mouth (@pavlobaron)Pavlo Baron
 
The Big Data Developer (@pavlobaron)
The Big Data Developer (@pavlobaron)The Big Data Developer (@pavlobaron)
The Big Data Developer (@pavlobaron)Pavlo Baron
 
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)Pavlo Baron
 
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)Pavlo Baron
 
JUGS June'11 - Erlang/OTP
JUGS June'11 - Erlang/OTPJUGS June'11 - Erlang/OTP
JUGS June'11 - Erlang/OTPPavlo Baron
 
Big Data - JAX2011 (Pavlo Baron)
Big Data - JAX2011 (Pavlo Baron)Big Data - JAX2011 (Pavlo Baron)
Big Data - JAX2011 (Pavlo Baron)Pavlo Baron
 
BigData & CDN - OOP2011 (Pavlo Baron)
BigData & CDN - OOP2011 (Pavlo Baron)BigData & CDN - OOP2011 (Pavlo Baron)
BigData & CDN - OOP2011 (Pavlo Baron)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

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
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, ...apidays
 
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 FresherRemote DBA Services
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 TerraformAndrey Devyatkin
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
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].pdfOverkill Security
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Dernier (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
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, ...
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

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