Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
195 lines (138 sloc) 7.5 KB
<meta charset="utf-8">
<title>{ Technology::Trotter }</title>
<meta name="author" content="Khaled Hussein">
<meta name="description" content="Why Crowdtilt Chose Perl Apr 13th, 2012 Comments Here at Crowdtilt most of our system
has been built using Perl. When I get asked about our &hellip;">
<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1">
<link href="/atom.xml" rel="alternate" title="{ Technology::Trotter }" type="application/atom+xml">
<link rel="canonical" href="">
<link href="/favicon.png" rel="shortcut icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<!--[if lt IE 9]><script src="//"></script><![endif]-->
<script src="//"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-12029230-3']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
<header class="inner"><h1 class="left"><a href="/">{ Technology::Trotter }</a></h1>
<nav class="menu left"><ul class="main">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
<div class="right">
<form class="search right" action="" method="get">
<input class="left" type="text" name="q" results="0">
<input type="hidden" name="q" value="">
<div class="social right">
<a class="rss" href="/atom.xml" title="RSS">RSS</a>
<div id="content" class="inner">
<article class="post">
<h1 class="title"><a href="/blog/2012/04/13/why-crowdtilt-chose-perl/">Why Crowdtilt Chose Perl</a></h1>
<div class="meta">
<div class="date">
<time datetime="2012-04-13T12:06:00-05:00" pubdate data-updated="true">Apr 13<span>th</span>, 2012</time></div>
<span class="comments"><a href="/blog/2012/04/13/why-crowdtilt-chose-perl/#disqus_thread">Comments</a></span>
<div class="entry">
<p>Here at <a href="">Crowdtilt</a> most of our system
has been built using <a href="">Perl</a>. When I get asked about our
technolog stack and mention Perl, I often get surprised looks followed by
&#8220;Oh! wow, why?&#8221; :). In this post, I will outline some of the most important
reasons we chose to go with Perl, and hopefully clarify some of the
misconceptions surrounding Perl and the Perl community.</p>
<p>While we don&#8217;t need a reason other than that we have a blast using Perl, and
love the people in the Perl community, here is my attempt to explain
a few of the reasons why my team and I decided to use Perl to build Crowdtilt:</p>
<li><p><strong>We needed to move fast.</strong><br/>
<a href="">Crowdtilt</a> is a young startup that is very
passionate about enabling users to leverage the power of collaborative
consumption models. We needed to move really fast and provide a highly
scalable, extensible, and maintainable product to our customers to enable
them to pool money together. Using <a href="">Perl Dancer</a> and
<a href="">CPAN</a>, we were able to prototype our site in a couple of
days. That same &#8220;protoype&#8221; has evolved to the current version of the website
over just a few weeks.</p></li>
<li><p><strong>We needed a strong community.</strong><br/>
Perl has a very strong community with highly competent hackers. When you look
at CPAN, you&#8217;ll notice that a lot of modules start their descriptions with &#8220;A
simple way to do bla&#8221;, which shows how much the community cares about
simplicity and implementing things in a way that makes sense. This resonates
very well with our culture and philosophy at
<a href="">Crowdtilt</a>. We love the Perl community, we love
simplicity and elegance, and the two go hand-in-hand :).</p></li>
<li><p><strong>Comprehensive Perl Archive Network.</strong><br/>
<a href="">CPAN</a>, Perl&#8217;s module repository, is one of, if not, <strong>the</strong>
largest open source module respository amongst programming languages. The
repository is evolving constantly and at a blistering pace. Perl is powerful,
but CPAN is a game changer. Our team is gladly contributing new modules and
enhancements to existing modules, while benefiting from community feedback
and support.</p></li>
<li><p>Language Design.<br/>
Perl was designed to evolve the same way a spoken language does. Humans
come up with new slang words and meanings that evolve the language. Perl
evolves in a very similar manner that makes the language always fresh, fun
to use, as well as incredibly flexible and able to be re-tooled for any
<p>As far as I know, Perl is one of the only languages that can evolve via
3rd party modules. Examples are Moose, MooseX::Declare and perl5i. This
allows it to evolve much faster than languages such as Java and Python
(both of which are also great languages) which, in order to add new
language features, require changes to the core language.</p></li>
<li><p>Do What I Mean.<br/>
A lot of Perl modules follow a DWIM (Do What I Mean) philosophy. Lets say
I want to handle an HTTP request and grab the userid parameter. Was the
parameter a query param, a HTTP POST param, a key/value pair inside the
json body of the request, or a token in the url? It doesn&#8217;t matter. The
Dancer framework lets me simply grab it via param &#8216;userid&#8217;. It just does
what I mean. This might make some people feel uncomfortable, and for
those people there is a way to be more explicit. In practice however, the
DWIM way results in more elegant and succinct code which is what we thrive
on at <a href="">Crowdtilt</a>.</p></li>
<li><p><strong>Perl code is fun to write.</strong><br/>
For me, it is because of how simple Perl code can be.</p></li>
<p>We are always looking for ways to improve. So, I would love to get your
feedback. In future posts, I&#8217;ll describe the rest of our technology stack and
architecture in more detail.</p>
<nav id="pagenavi">
<a href="/blog/archives" class="center">Blog Archives</a>
<footer class="inner">Copyright &copy; 2012 <a
href="">Khaled Hussein</a>
<script src="/javascripts/jquery.fancybox.pack.js"></script>
<script src="/javascripts/slash.js"></script>
<script type="text/javascript">
var disqus_shortname = 'knighthacker';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);