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 a large 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 Lead Developer
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 hardware advancements 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