Founded in 2010, Silk (Amsterdam, Netherlands) has a
structured content management application that offers users a sophisticated means to organize, visualize and associate their data, especially when there are links and tags within these data elements. Once created, users can visualize, navigate, track and query the data. One use is for PR agencies to organize their internal knowledge base as well as track patterns and trends of online content for their clients.
Requirements
Like any startup, Silks development requirements revolved around speed and scale:
Quickly prototype ideas and test them against evolving customer requirements. Ability to handle large data sets and transactions. Modify test environment without disrupting test users. Bring test environment into production seamlessly. The backend software infrastructure had to be robust, stable, adaptable and highly scalable to support the expected growth in 3-5 years.
Productivity, performance, quality, scalability and agility are the Holy Grail of software development. In their search for this programming ideal, Silk discovered that none of the widely-used languages satisfied all of these goals. The Silk founders knew that building their service in traditional programming languages would be difficult, time consuming and costly. Eager to bring their vision to market ASAP and having a limited staff, they wanted to skip the prototyping hurdles that most programming languages presented. This meant writing quality code the first time around.
Case Study
Industry/Application Web structured content management application. Development Requirements Requirements revolved around speed and scale: Quickly prototype and test ideas against evolving customer needs. Ability to handle large data sets and transactions. Modify test environment without disrupting test users. Bring test environment into production seamlessly. The backend software infrastructure had to be robust, stable, adaptable and highly scalable to support the expected growth in 3-5 years.
Haskell Solution/benefits Saved hundreds of hours testing and debugging. Programmers can focus on real programming and innovation, instead of grunt work. Delivered on all aspects of productivity, performance, quality, scalability and agility
Haskell enabled us to get into market in less than half the time!
--Erik Hesselink Lead Developer SilkStructured Content Management
We just didnt have the resources to spend our valuable time on hundreds of hours of testing and debugging during our prototype stages. --Salar al Khafaji Cofounder, CEO We used the SNAP libraries and Happstack framework to build a reliable web architecture for our application. This enabled us to apply the features and benefits of the Haskell language to web site and service development.
--Erik Hesselink Lead Developer
Haskell is the Solution
In Haskell, Silk found the perfect solution:
Feature Benefit
An abstract type system with compile-time type checking that allows program interfaces to be specified and validated. This documents the intent of the program and enforces code conformity at compile time.
If a coder violated the type definitions the compiler would catch the inconsistencies.
Pure functional programming that removes the interdependencies between code segments caused by shared variables and objects. Software can be developed, refactored, extended and deployed with very low error rates. Functions and modules can be parallelized and scaled to run across a large number of processors and cores.
Extensive collection of libraries which provide high-level type abstractions and higher order functions.
Can be applied to a large variety of problems and data types.
Simple abstract functions that can be composed or chained together into sophisticated algorithms.
Greatly increase code reuse, readability, and validation. Lock-free software transactional memory (STM). Makes explicitly data sharing easier to use than traditional thread programming models that use locks or mutexes.
A proven and reliable 7 th generation compiler evolved over 20 years.
Generates efficient and error-free code. Web frameworks that leverage Haskells correctness and scalability features. Easily develop web UI applications and backend services.
HaskellHalf the Time to Market
Once confident that Haskell provided a solid framework to build with, Silks programmers started coding in earnest. Their innovative application includes shared custom index servers designed to provide speedy responses to data requests from multiple users, and UI tools for building custom relationships between data elements and then rapidly compiling them into a graphical representation for visualization. Haskell performed exactly as expected. The programmers found that Haskell, to their tremendous relief, allowed them to concentrate more on innovation and real programming, and much less on operational issues such as repetitive testing and debugging.
The end result was an innovative and error-free web application that quickly met customer needs and easily scaled with increasing customer demand. Most importantly, Silk estimates conservatively that by using Haskell, their product launched in half the time it would have taken had they used traditional programming tools.
Copyright 2013, FP Complete Corp. All rights reserved.
While writing type definitions requires some additional upfront time, it saved us from chasing bugs and performing extensive integration testing. It also helped us understand the code. We could revisit what we wrote on a white board over two years before and know exactly what was going on.