SlideShare a Scribd company logo
1 of 20
Download to read offline
Who are ’we’?
How and why we bootstrapped Functional Programming
                                          Evaluation
                                          Summary




      Functional Programming @ Ghent IT Valley

                             R. Slootmaekers              N. Trangez

                                        Incubaid Research Lab


          Commercial Users of Functional Programming, 2012




                         R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming
                                           Evaluation
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
How and why we bootstrapped Functional Programming
                                          Evaluation
                                          Summary




        Incubaid is a technology incubator, active in datacenter
        and cloud computing
        Prior exits through Terremark, Telenet (Belgian telco),
        Veritas/Symantec, Sun Microsystems,. . .
        some of our current involvements: Amplidata , Awingu ,
        CloudFounders , Dacentec , Racktivity




                         R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                           Amplidata’s unbreakable storage
   How and why we bootstrapped Functional Programming
                                                           our pain
                                             Evaluation
                                                           2.0 plan and execution
                                             Summary


Amplidata’s Dispersed Storage System
20 000ft view


                                                                            diskA0


                                                          StorageNodeA      diskA1
                                            encoder
                                            decoder
                               Client                        ........       diskA...
                                          provisioning
                                            policies
                                                          StorageNodeZ

                                           metadata




           client streams object data
           encoder generates equations : Ax = b or x = A−1 b
           policies determine how many disks | equations
           provisioning determines which disks
           send equations to StorageNodes
           record metadata
                            R. Slootmaekers, N. Trangez    FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Pain



         Pain: resource management
         Pain: sockets
         Pain: threads
         Pain: data corruption
         Pain: objects
  development was grinding to a halt




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Pain



         Pain: resource management
         Pain: sockets
         Pain: threads
         Pain: data corruption
         Pain: objects
  development was grinding to a halt




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The 1.6 Codebase (Core)



                                                                  Time (Blue):
                                                                          Pareto applies
 1                                                                        60% is IO
                                                                          30% is encoding/decoding
                                                                  size (Red):
 0                                                                        > 50 kloc
       StIO        MdIO Codec Rest                                        Codec ∼ 1 kloc
                                                                          IO < 1 kloc




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The Bet



  I placed a bet to rewrite the StorageNode component in OCaml
         Functionally identical
         Same Performance
         in 2 days. . .
  1.5 day later the drop in replacement was demoed, and we
  were allowed to Investigate alternatives to C++ for version 2.0




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The Bet



  I placed a bet to rewrite the StorageNode component in OCaml
         Functionally identical
         Same Performance
         in 2 days. . .
  1.5 day later the drop in replacement was demoed, and we
  were allowed to Investigate alternatives to C++ for version 2.0




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


How is this possible?



         component is very simple
         perfect specs
         existing component test suite
         performance is mostly determined by network & disk speed
         OCaml has object orientation.




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


2.0 Estimates & plan



         // in IO ⇒ 30 → 6
         recycle codec
         do the rest in comfort ⇒ 10 → 20
         maybe improve metadata IO (?)
  ⇒ (time) 100% → 86%
  ⇒ (size) 100% → 40%




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


What happened?


  We decided on Functional programming & picked OCaml.
         use Light Weight Threads library.
         Blinded by success.
         rewrote codec (in C)
         metadata → Arakoon
         feature creep
  ⇒ (time) 100% → 40%
  ⇒ (size) 100% → 100% (90% OCaml, 9% C, 1% Asm)




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                           Evaluation   Are we still happy?(2012)
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
       How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                                 Evaluation   Are we still happy?(2012)
                                                 Summary


  Were we Happy? (2010)


                                                                 No:
Yes:                                                                     Tools? what tools?
       Type Inference rocks                                              32/64 bit issues
       Superfast compiler                                                Multicore issues
       Fast Enough Code                                                  OCaml(build) learning curve
       Nice C integration                                                Emacs only
       Refactoring                                                       OO does not fit well
                                                                         Architecture?




                                R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                           Evaluation   Are we still happy?(2012)
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
       How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                                 Evaluation   Are we still happy?(2012)
                                                 Summary


  Are we still happy?(2012)



                                                                 No:
                                                                         OCaml language evolution.
Yes:
                                                                         OCaml runtime evolution.
       FP strategy works.
                                                                         OCaml library evolution.
                                                                         people & process mistakes.




                                R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming
                                           Evaluation
                                           Summary


Summary




         Doing everything in 1 programming language is plain silly.
         (But you need pain and some guerilla tactics to convince
         people)
         Functional programming and distributed systems match




                          R. Slootmaekers, N. Trangez   FP@GhentITV

More Related Content

Similar to Cufp 2012 talk

OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...Jonathon Hare
 
Copenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusCopenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusKnowit_TM
 
Hihn.jarius
Hihn.jariusHihn.jarius
Hihn.jariusNASAPMC
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineeringunivalence
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsESUG
 
Observability at Scale
Observability at Scale Observability at Scale
Observability at Scale Knoldus Inc.
 
Chapter 7 Erp Implementation Lifecycle Alexis Leon
Chapter 7  Erp Implementation Lifecycle   Alexis LeonChapter 7  Erp Implementation Lifecycle   Alexis Leon
Chapter 7 Erp Implementation Lifecycle Alexis LeonSonali Chauhan
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101Itiel Shwartz
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changesJaewoo Ahn
 
Agile in short projects
Agile in short projectsAgile in short projects
Agile in short projectsSiddhi
 
NaazAfrinResume (2)
NaazAfrinResume (2)NaazAfrinResume (2)
NaazAfrinResume (2)Naaz Afrin
 
Tracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionTracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionDamien Clauzel
 

Similar to Cufp 2012 talk (20)

OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
 
Copenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusCopenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars Irenius
 
Hihn.jarius
Hihn.jariusHihn.jarius
Hihn.jarius
 
Are Your Test Cases Fit For Automation?
Are Your Test Cases Fit For Automation?Are Your Test Cases Fit For Automation?
Are Your Test Cases Fit For Automation?
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineering
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise Applications
 
Observability at Scale
Observability at Scale Observability at Scale
Observability at Scale
 
Chapter 7 Erp Implementation Lifecycle Alexis Leon
Chapter 7  Erp Implementation Lifecycle   Alexis LeonChapter 7  Erp Implementation Lifecycle   Alexis Leon
Chapter 7 Erp Implementation Lifecycle Alexis Leon
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101
 
DevOps Challenges and Mitigation
DevOps Challenges and MitigationDevOps Challenges and Mitigation
DevOps Challenges and Mitigation
 
Technical Recruitment Overview & Tips
Technical Recruitment Overview & TipsTechnical Recruitment Overview & Tips
Technical Recruitment Overview & Tips
 
Pradeep_SCM
Pradeep_SCMPradeep_SCM
Pradeep_SCM
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
01 software engineering_aspects
01 software engineering_aspects01 software engineering_aspects
01 software engineering_aspects
 
Agile in short projects
Agile in short projectsAgile in short projects
Agile in short projects
 
NaazAfrinResume (2)
NaazAfrinResume (2)NaazAfrinResume (2)
NaazAfrinResume (2)
 
Sikuli
SikuliSikuli
Sikuli
 
Resume_nakri
Resume_nakriResume_nakri
Resume_nakri
 
Tracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionTracking Task Context To Support Resumption
Tracking Task Context To Support Resumption
 

Recently uploaded

(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...
(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...
(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...parulsinha
 
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...hotbabesbook
 
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...indiancallgirl4rent
 
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...Call Girls in Nagpur High Profile
 
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any Time
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any TimeTop Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any Time
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any TimeCall Girls Delhi
 
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Haridwar Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service AvailableDipal Arora
 
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...Arohi Goyal
 
Top Rated Bangalore Call Girls Mg Road ⟟ 9332606886 ⟟ Call Me For Genuine S...
Top Rated Bangalore Call Girls Mg Road ⟟   9332606886 ⟟ Call Me For Genuine S...Top Rated Bangalore Call Girls Mg Road ⟟   9332606886 ⟟ Call Me For Genuine S...
Top Rated Bangalore Call Girls Mg Road ⟟ 9332606886 ⟟ Call Me For Genuine S...narwatsonia7
 
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...Dipal Arora
 
Russian Escorts Girls Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls Delhi
Russian Escorts Girls  Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls DelhiRussian Escorts Girls  Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls Delhi
Russian Escorts Girls Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls DelhiAlinaDevecerski
 
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Bareilly Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service AvailableDipal Arora
 
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...jageshsingh5554
 
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore EscortsCall Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escortsvidya singh
 
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Bangalore Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service AvailableDipal Arora
 
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Siliguri Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service AvailableDipal Arora
 
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Dehradun Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Dipal Arora
 
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...astropune
 

Recently uploaded (20)

(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...
(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...
(Low Rate RASHMI ) Rate Of Call Girls Jaipur ❣ 8445551418 ❣ Elite Models & Ce...
 
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...
Night 7k to 12k Chennai City Center Call Girls 👉👉 7427069034⭐⭐ 100% Genuine E...
 
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...
(Rocky) Jaipur Call Girl - 09521753030 Escorts Service 50% Off with Cash ON D...
 
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...
Book Paid Powai Call Girls Mumbai 𖠋 9930245274 𖠋Low Budget Full Independent H...
 
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any Time
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any TimeTop Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any Time
Top Quality Call Girl Service Kalyanpur 6378878445 Available Call Girls Any Time
 
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Haridwar Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Haridwar Just Call 8250077686 Top Class Call Girl Service Available
 
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
 
Top Rated Bangalore Call Girls Mg Road ⟟ 9332606886 ⟟ Call Me For Genuine S...
Top Rated Bangalore Call Girls Mg Road ⟟   9332606886 ⟟ Call Me For Genuine S...Top Rated Bangalore Call Girls Mg Road ⟟   9332606886 ⟟ Call Me For Genuine S...
Top Rated Bangalore Call Girls Mg Road ⟟ 9332606886 ⟟ Call Me For Genuine S...
 
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...
Best Rate (Guwahati ) Call Girls Guwahati ⟟ 8617370543 ⟟ High Class Call Girl...
 
Russian Escorts Girls Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls Delhi
Russian Escorts Girls  Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls DelhiRussian Escorts Girls  Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls Delhi
Russian Escorts Girls Nehru Place ZINATHI 🔝9711199012 ☪ 24/7 Call Girls Delhi
 
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Bareilly Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bareilly Just Call 8250077686 Top Class Call Girl Service Available
 
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 9907093804 Top Class Call Girl Service Available
 
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...
VIP Service Call Girls Sindhi Colony 📳 7877925207 For 18+ VIP Call Girl At Th...
 
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore EscortsCall Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
 
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Bangalore Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Bangalore Just Call 8250077686 Top Class Call Girl Service Available
 
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Coimbatore Just Call 9907093804 Top Class Call Girl Service Available
 
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Siliguri Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Siliguri Just Call 8250077686 Top Class Call Girl Service Available
 
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Dehradun Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Dehradun Just Call 9907093804 Top Class Call Girl Service Available
 
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
 
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...
Best Rate (Hyderabad) Call Girls Jahanuma ⟟ 8250192130 ⟟ High Class Call Girl...
 

Cufp 2012 talk

  • 1. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Functional Programming @ Ghent IT Valley R. Slootmaekers N. Trangez Incubaid Research Lab Commercial Users of Functional Programming, 2012 R. Slootmaekers, N. Trangez FP@GhentITV
  • 2. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 3. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Incubaid is a technology incubator, active in datacenter and cloud computing Prior exits through Terremark, Telenet (Belgian telco), Veritas/Symantec, Sun Microsystems,. . . some of our current involvements: Amplidata , Awingu , CloudFounders , Dacentec , Racktivity R. Slootmaekers, N. Trangez FP@GhentITV
  • 4. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 5. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Amplidata’s Dispersed Storage System 20 000ft view diskA0 StorageNodeA diskA1 encoder decoder Client ........ diskA... provisioning policies StorageNodeZ metadata client streams object data encoder generates equations : Ax = b or x = A−1 b policies determine how many disks | equations provisioning determines which disks send equations to StorageNodes record metadata R. Slootmaekers, N. Trangez FP@GhentITV
  • 6. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 7. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Pain Pain: resource management Pain: sockets Pain: threads Pain: data corruption Pain: objects development was grinding to a halt R. Slootmaekers, N. Trangez FP@GhentITV
  • 8. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Pain Pain: resource management Pain: sockets Pain: threads Pain: data corruption Pain: objects development was grinding to a halt R. Slootmaekers, N. Trangez FP@GhentITV
  • 9. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The 1.6 Codebase (Core) Time (Blue): Pareto applies 1 60% is IO 30% is encoding/decoding size (Red): 0 > 50 kloc StIO MdIO Codec Rest Codec ∼ 1 kloc IO < 1 kloc R. Slootmaekers, N. Trangez FP@GhentITV
  • 10. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The Bet I placed a bet to rewrite the StorageNode component in OCaml Functionally identical Same Performance in 2 days. . . 1.5 day later the drop in replacement was demoed, and we were allowed to Investigate alternatives to C++ for version 2.0 R. Slootmaekers, N. Trangez FP@GhentITV
  • 11. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The Bet I placed a bet to rewrite the StorageNode component in OCaml Functionally identical Same Performance in 2 days. . . 1.5 day later the drop in replacement was demoed, and we were allowed to Investigate alternatives to C++ for version 2.0 R. Slootmaekers, N. Trangez FP@GhentITV
  • 12. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary How is this possible? component is very simple perfect specs existing component test suite performance is mostly determined by network & disk speed OCaml has object orientation. R. Slootmaekers, N. Trangez FP@GhentITV
  • 13. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 14. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary 2.0 Estimates & plan // in IO ⇒ 30 → 6 recycle codec do the rest in comfort ⇒ 10 → 20 maybe improve metadata IO (?) ⇒ (time) 100% → 86% ⇒ (size) 100% → 40% R. Slootmaekers, N. Trangez FP@GhentITV
  • 15. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary What happened? We decided on Functional programming & picked OCaml. use Light Weight Threads library. Blinded by success. rewrote codec (in C) metadata → Arakoon feature creep ⇒ (time) 100% → 40% ⇒ (size) 100% → 100% (90% OCaml, 9% C, 1% Asm) R. Slootmaekers, N. Trangez FP@GhentITV
  • 16. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 17. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Were we Happy? (2010) No: Yes: Tools? what tools? Type Inference rocks 32/64 bit issues Superfast compiler Multicore issues Fast Enough Code OCaml(build) learning curve Nice C integration Emacs only Refactoring OO does not fit well Architecture? R. Slootmaekers, N. Trangez FP@GhentITV
  • 18. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 19. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Are we still happy?(2012) No: OCaml language evolution. Yes: OCaml runtime evolution. FP strategy works. OCaml library evolution. people & process mistakes. R. Slootmaekers, N. Trangez FP@GhentITV
  • 20. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Summary Doing everything in 1 programming language is plain silly. (But you need pain and some guerilla tactics to convince people) Functional programming and distributed systems match R. Slootmaekers, N. Trangez FP@GhentITV