SlideShare a Scribd company logo
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
 
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?
STAG Software Private Limited
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineering
univalence
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise Applications
ESUG
 
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 Leon
Sonali Chauhan
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101
Itiel Shwartz
 
DevOps Challenges and Mitigation
DevOps Challenges and MitigationDevOps Challenges and Mitigation
DevOps Challenges and Mitigation
Narayanan Subramaniam
 
Technical Recruitment Overview & Tips
Technical Recruitment Overview & TipsTechnical Recruitment Overview & Tips
Technical Recruitment Overview & Tips
UmaShanker Akharia ~ U.S.A.
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
Jaewoo Ahn
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
distributedtracing
 
01 software engineering_aspects
01 software engineering_aspects01 software engineering_aspects
01 software engineering_aspects
University of Computer Science and Technology
 
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
 
Sikuli
SikuliSikuli
Tracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionTracking Task Context To Support Resumption
Tracking Task Context To Support Resumption
Damien 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

Effective-Soaps-for-Fungal-Skin-Infections.pptx
Effective-Soaps-for-Fungal-Skin-Infections.pptxEffective-Soaps-for-Fungal-Skin-Infections.pptx
Effective-Soaps-for-Fungal-Skin-Infections.pptx
SwisschemDerma
 
Top 10 Best Ayurvedic Kidney Stone Syrups in India
Top 10 Best Ayurvedic Kidney Stone Syrups in IndiaTop 10 Best Ayurvedic Kidney Stone Syrups in India
Top 10 Best Ayurvedic Kidney Stone Syrups in India
SwastikAyurveda
 
Physiology of Special Chemical Sensation of Taste
Physiology of Special Chemical Sensation of TastePhysiology of Special Chemical Sensation of Taste
Physiology of Special Chemical Sensation of Taste
MedicoseAcademics
 
Vision-1.pptx, Eye structure, basics of optics
Vision-1.pptx, Eye structure, basics of opticsVision-1.pptx, Eye structure, basics of optics
Vision-1.pptx, Eye structure, basics of optics
Sai Sailesh Kumar Goothy
 
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTSARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
Dr. Vinay Pareek
 
Ocular injury ppt Upendra pal optometrist upums saifai etawah
Ocular injury  ppt  Upendra pal  optometrist upums saifai etawahOcular injury  ppt  Upendra pal  optometrist upums saifai etawah
Ocular injury ppt Upendra pal optometrist upums saifai etawah
pal078100
 
basicmodesofventilation2022-220313203758.pdf
basicmodesofventilation2022-220313203758.pdfbasicmodesofventilation2022-220313203758.pdf
basicmodesofventilation2022-220313203758.pdf
aljamhori teaching hospital
 
Ophthalmology Clinical Tests for OSCE exam
Ophthalmology Clinical Tests for OSCE examOphthalmology Clinical Tests for OSCE exam
Ophthalmology Clinical Tests for OSCE exam
KafrELShiekh University
 
Gram Stain introduction, principle, Procedure
Gram Stain introduction, principle, ProcedureGram Stain introduction, principle, Procedure
Gram Stain introduction, principle, Procedure
Suraj Goswami
 
263778731218 Abortion Clinic /Pills In Harare ,
263778731218 Abortion Clinic /Pills In Harare ,263778731218 Abortion Clinic /Pills In Harare ,
263778731218 Abortion Clinic /Pills In Harare ,
sisternakatoto
 
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptxANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
Swetaba Besh
 
Basavarajeeyam - Ayurvedic heritage book of Andhra pradesh
Basavarajeeyam - Ayurvedic heritage book of Andhra pradeshBasavarajeeyam - Ayurvedic heritage book of Andhra pradesh
Basavarajeeyam - Ayurvedic heritage book of Andhra pradesh
Dr. Madduru Muni Haritha
 
BRACHYTHERAPY OVERVIEW AND APPLICATORS
BRACHYTHERAPY OVERVIEW  AND  APPLICATORSBRACHYTHERAPY OVERVIEW  AND  APPLICATORS
BRACHYTHERAPY OVERVIEW AND APPLICATORS
Krishan Murari
 
Physiology of Chemical Sensation of smell.pdf
Physiology of Chemical Sensation of smell.pdfPhysiology of Chemical Sensation of smell.pdf
Physiology of Chemical Sensation of smell.pdf
MedicoseAcademics
 
Pharma Pcd Franchise in Jharkhand - Yodley Lifesciences
Pharma Pcd Franchise in Jharkhand - Yodley LifesciencesPharma Pcd Franchise in Jharkhand - Yodley Lifesciences
Pharma Pcd Franchise in Jharkhand - Yodley Lifesciences
Yodley Lifesciences
 
planning for change nursing Management ppt
planning for change nursing Management pptplanning for change nursing Management ppt
planning for change nursing Management ppt
Thangamjayarani
 
Evaluation of antidepressant activity of clitoris ternatea in animals
Evaluation of antidepressant activity of clitoris ternatea in animalsEvaluation of antidepressant activity of clitoris ternatea in animals
Evaluation of antidepressant activity of clitoris ternatea in animals
Shweta
 
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists  Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
Saeid Safari
 
NVBDCP.pptx Nation vector borne disease control program
NVBDCP.pptx Nation vector borne disease control programNVBDCP.pptx Nation vector borne disease control program
NVBDCP.pptx Nation vector borne disease control program
Sapna Thakur
 
Colonic and anorectal physiology with surgical implications
Colonic and anorectal physiology with surgical implicationsColonic and anorectal physiology with surgical implications
Colonic and anorectal physiology with surgical implications
Dr Maria Tamanna
 

Recently uploaded (20)

Effective-Soaps-for-Fungal-Skin-Infections.pptx
Effective-Soaps-for-Fungal-Skin-Infections.pptxEffective-Soaps-for-Fungal-Skin-Infections.pptx
Effective-Soaps-for-Fungal-Skin-Infections.pptx
 
Top 10 Best Ayurvedic Kidney Stone Syrups in India
Top 10 Best Ayurvedic Kidney Stone Syrups in IndiaTop 10 Best Ayurvedic Kidney Stone Syrups in India
Top 10 Best Ayurvedic Kidney Stone Syrups in India
 
Physiology of Special Chemical Sensation of Taste
Physiology of Special Chemical Sensation of TastePhysiology of Special Chemical Sensation of Taste
Physiology of Special Chemical Sensation of Taste
 
Vision-1.pptx, Eye structure, basics of optics
Vision-1.pptx, Eye structure, basics of opticsVision-1.pptx, Eye structure, basics of optics
Vision-1.pptx, Eye structure, basics of optics
 
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTSARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
ARTHROLOGY PPT NCISM SYLLABUS AYURVEDA STUDENTS
 
Ocular injury ppt Upendra pal optometrist upums saifai etawah
Ocular injury  ppt  Upendra pal  optometrist upums saifai etawahOcular injury  ppt  Upendra pal  optometrist upums saifai etawah
Ocular injury ppt Upendra pal optometrist upums saifai etawah
 
basicmodesofventilation2022-220313203758.pdf
basicmodesofventilation2022-220313203758.pdfbasicmodesofventilation2022-220313203758.pdf
basicmodesofventilation2022-220313203758.pdf
 
Ophthalmology Clinical Tests for OSCE exam
Ophthalmology Clinical Tests for OSCE examOphthalmology Clinical Tests for OSCE exam
Ophthalmology Clinical Tests for OSCE exam
 
Gram Stain introduction, principle, Procedure
Gram Stain introduction, principle, ProcedureGram Stain introduction, principle, Procedure
Gram Stain introduction, principle, Procedure
 
263778731218 Abortion Clinic /Pills In Harare ,
263778731218 Abortion Clinic /Pills In Harare ,263778731218 Abortion Clinic /Pills In Harare ,
263778731218 Abortion Clinic /Pills In Harare ,
 
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptxANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
ANATOMY AND PHYSIOLOGY OF URINARY SYSTEM.pptx
 
Basavarajeeyam - Ayurvedic heritage book of Andhra pradesh
Basavarajeeyam - Ayurvedic heritage book of Andhra pradeshBasavarajeeyam - Ayurvedic heritage book of Andhra pradesh
Basavarajeeyam - Ayurvedic heritage book of Andhra pradesh
 
BRACHYTHERAPY OVERVIEW AND APPLICATORS
BRACHYTHERAPY OVERVIEW  AND  APPLICATORSBRACHYTHERAPY OVERVIEW  AND  APPLICATORS
BRACHYTHERAPY OVERVIEW AND APPLICATORS
 
Physiology of Chemical Sensation of smell.pdf
Physiology of Chemical Sensation of smell.pdfPhysiology of Chemical Sensation of smell.pdf
Physiology of Chemical Sensation of smell.pdf
 
Pharma Pcd Franchise in Jharkhand - Yodley Lifesciences
Pharma Pcd Franchise in Jharkhand - Yodley LifesciencesPharma Pcd Franchise in Jharkhand - Yodley Lifesciences
Pharma Pcd Franchise in Jharkhand - Yodley Lifesciences
 
planning for change nursing Management ppt
planning for change nursing Management pptplanning for change nursing Management ppt
planning for change nursing Management ppt
 
Evaluation of antidepressant activity of clitoris ternatea in animals
Evaluation of antidepressant activity of clitoris ternatea in animalsEvaluation of antidepressant activity of clitoris ternatea in animals
Evaluation of antidepressant activity of clitoris ternatea in animals
 
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists  Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
Ozempic: Preoperative Management of Patients on GLP-1 Receptor Agonists
 
NVBDCP.pptx Nation vector borne disease control program
NVBDCP.pptx Nation vector borne disease control programNVBDCP.pptx Nation vector borne disease control program
NVBDCP.pptx Nation vector borne disease control program
 
Colonic and anorectal physiology with surgical implications
Colonic and anorectal physiology with surgical implicationsColonic and anorectal physiology with surgical implications
Colonic and anorectal physiology with surgical implications
 

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