Bump Case Study

Embed Size (px)

Citation preview

  • 8/12/2019 Bump Case Study

    1/2

    Company Overview

    Bump Technologies (Mountain View, CA), founded in 2009,

    launched its file-sharing app for smartphones in 2010 that

    skyrocketed in popularity overnight. It was the billionth

    downloaded app from Apple iTunes and became the 9th

    most popular free app there. Behind the seemingly simple

    bump of two phones to share files is a sophisticated blend

    of technologies using GPS, timing of the bumps, latency

    compensation of different cellular carriers network speed,adjusting for environmental

    factors (light, sound and

    background) where the phones

    are, as well as accelerometers to

    measure the bumps impact.

    Python Constrictions

    Bump wrote their app originally in Python since most of the

    founding team were familiar with it, which allowed them to

    get started quickly. As the app grew quickly and needed to

    scale, however, the team started having significant issues,

    including high error rates and a rash of single points of

    failure, particularly in shared memory functionality. The

    tipping point came when the volume of code eclipsed the

    programmers ability to remember all the code in their

    heads and share it accurately.

    Thankfully some developers had experience in Haskell and

    persuaded their team to use it. They knew Haskell would

    drastically reduce the amount of code through its inherently

    clean and terse syntax. It would be an excellent way to

    drive down the error rate and eliminate the need to hire alarge team of Java programmers.

    HaskellFun to Code, Get More Work Done

    As they gained experience with Haskell, Bumps developers

    found that it was fun to program. It runs long and flat in

    memory with few problems out of the gate. Haskells

    reliable, extensive type system and checking functionality

    eliminated coding errors common in Python. Result:

    Case Study

    BumpThe Easiest Way to Share

    Industry/Application

    File Sharing and Mobile App

    Problems

    Started with Python, then discovered:

    High error rates.

    Single points of failure, particularly in

    shared memory functionality.

    Code volume exceeds programmers

    memory and ability to collaborate.

    Need to hire many more Java

    programmers.

    Doesnt scale beyond prototype.

    Haskell Solution/benefits

    Quickly develop prototypes with few

    errors.Easily extend code and scale app.

    Simply and reliably deploy changes or

    new features without introducing

    errors.

    Dramatically reduced time spent on

    testing and debugging, which

    accelerated time to market.

    Reduce development cost and

    headcount.

    Scale easily and quickly from 6-8

    cores to more than 250 cores over

    70-100 machines.

    Haskell is definitely a good

    alternative to traditional

    development tools--Jamie Turner

    LeadDeveloper

  • 8/12/2019 Bump Case Study

    2/2

    Haskell has proven to be

    extremely multicore and multi-

    processor friendly, supporting the

    scaling needed with our rapid

    growth. We knew we could code

    extensively without problems. The

    Haskell compiler is very reliable

    and refactoring in the language is,

    well, glorious.

    --Jamie Turner

    Lead Developer

    the highest-quality code while reducing development time. Further, the modularity and libraries in

    Haskell facilitated extensive code reuse and parallel development, further enhancing productivity. The

    engineers found that the Haskell compiler gave them excellent confidence in their software expansion

    and maintenance by providing multiyear life of their code other languages such as Python couldnt offer.

    In short, they got more work done, with fewer errors and in less time.

    HaskellThe Language of Scale

    To top it off, Haskell provided such a robust and reliable

    base that it easily enabled Bump to grow their application

    from one based on 6-8 cores to one that is more than 250

    cores over 70-100 machines. This critical advantage is part of

    Haskells native functionality. By eliminating shared values

    and interdependencies, Haskell ensures functions can be run

    in parallel on multiple processors and cores, thereby uniquely

    taking advantage of the latest hardware architectures to

    power performance and scalability. Python and other

    languages simply dont work well with these latest hardwareadvancements due to their structural limitations.

    HaskellMultiple Benefits

    In summary, Haskell contributed significantly to Bumps success. It enabled Bump to:

    Quickly develop prototypes with few errors. Easily extend code and scale their application as customer demand grew. Simply and reliably deploy changes or new features without introducing errors. Dramatically reduce time spent on testing and debugging, which accelerated time to market. Reduce development cost and headcount. Scale easily and quickly to support explosive growth.

    Copyright 2013, FP Complete Corp. All rights reserved.

    We had some initial challenges with our programmers learning Haskell and increasing their

    productivity, but ultimately these growing pains have been outweighed by considerable long-term

    savings that came from eliminating all of the errors we had before, while being able to readily

    duplicate code with Haskells simple structure. It definitely is a good alternative to traditional

    development tools--Jamie Turner

    Lead Developer