Live data from Hacker News

Perl Startups: Lacuna Expanse

blogs.perl.org

51–60 of 87 posts

Re: Perl Startups: Lacuna Expanse

#51

The largest reason why I would hesitate to use Perl in my startup would be the core philosophy of TIMTOWTDI (there is more than one way to do it). Being able to write something multiple different ways leads to Perl being a lot easier to write than it is to read. As a result code maintenance can become a huge headache due to someone not understanding the idioms used by the person who originally wrote the code. I've se…

What language prevents TIMTOWTDI? And don't say Python. I'm not talking about the language motto. Because that's the nature of using these things called programming languages: http://www.paulgraham.com/langdes.html

Python has Pep8. Perl has Perl::Critic. C# has FxCop. Etc.

I've not yet seen any language possess the qualities that prevent it from being unreadable. It's an amazing open question though, isn't it?

I think you hit the point with "code maintenance can become a huge headache due to someone not understanding the idioms used by the person who originally wrote the code". But this isn't a language thing. This is a people thing.

Re: Perl Startups: Lacuna Expanse

#52

I really don't like the hate for perl. Sure, it's got some stuff which can be a bit difficult to understand at first, but that flexibility is nice when you just want to whip something up quickly. It reminds me of how people love to hate Java because of it's verbose code (myself included). At the end of the day, if you know what you're doing it really doesn't get in your way. I do a lot of metaprogramming and text pro…

Learn as many languages as you can and specialize in the one you love.

Re: Perl Startups: Lacuna Expanse

#53

Perl is not going away any time soon. 1,20,000 packages[1] ( compared to Pypi : 32621 [2] and Rubygems : 59,519 [3] )is nothing to scoff at. [1] http://www.cpan.org/ [2] https://pypi.python.org/pypi [3] http://rubygems.org/

This is true, BUT there is a law of diminishing returns. The value of a large library scales nonlinearly. The added packages are more likely to be unrelated to whatever you are doing, and so become progressively less likely to be useful.

That said a culture of testing all of the time makes the Perl packages less likely to have serious conflicts. Which is a huge value proposition. (For the Ruby fans who jump up to object, do you run unit tests by default every time you go to install gems? Do you have people volunteering lots of machines with different things installed for the purpose of running unit tests on everything in Rubygems? No? Then you don't know what a "culture of testing all the time" is.)

Re: Perl Startups: Lacuna Expanse

#54
post #48
post #37

I think "I just like it" or "it feels right to use it" should be enough explanation. There's a tendency for people to demand a rational list of reasons for any choice (very academic thinking) but more often than not that results in tacked on reasoning anyways...oh sure I use it because of X,Y,Z while in reality we just picked it because it "seemed cool" I think people are too scared to regret their choices. Just pick…

And he can then be countered by those who just hate Perl ... I'm getting tired of language rants (either pro or con) but my overall impression is that he's pretty close-minded.

All language zealots are close-minded by definition.

Re: Perl Startups: Lacuna Expanse

#55
I have some experience in this area. My first startup: Grazr (http://tcrn.ch/aUqiIb), the back end was mostly Perl with some custom C modules. Grazr was started in 2005 when Perl was already out of fashion.

So why did we choose Perl, practical reasons mostly. My co-founder had previously been the CTO of the company that owned Slashdot and he had a team of top-notch Perl people that he thought would want to join us. I had worked a lot with Perl in a previous life so it seemed like a natural fit.

Perl has many strengths. You can "just get stuff done" with Perl. The module library is obviously a huge strength. The first version (effectively a public prototype) of Grazr went live very quickly (days). If you’re careful with it, you can also build some fairly complex projects using Perl. The machinery for Grazr processed a huge amount of data (for the time) multiple terabytes of feed data and had a lot of advanced features like: processing of normalized feeds, an embedded scripting language, cross link analysis, a search engine, and most of the heavy lifting was Perl. Think of the system as an advanced form of the feed API that Google Reader eventually released, nearly real-time (unlike the Reader API we updated feeds upon request) with the addition of a scripting layer on top. I'm very proud of what we built, technology-wise. We failed in other ways (UX, marketing and sales mainly) but the underlying system was quite impressive.

When the feed application language and processing engine stopped being the focus of the company, the Grazr system ran on only a few virtual servers, responsively and smoothly for over a year with steadily growing traffic. That was with the whole company ignoring it and focusing on other 'pivots' (before pivot was the term-du-jour for that). Why the company ignored a service that was steadily growing traffic with absolutely no input from the team/company is a rant for another day. :)

When I co-founded my next company, Smarterer (http://smarterer.com/), I vowed gone-with-the-wind-style that as God as my witness, I would never write a big startup-project in Perl again. Smarterer is written mainly in Python.

Why the Perl hate? First, I still think Perl is a fine language. You can get a lot done with it. But as other's have pointed out, one of the primary design philosophies of the language make it painful in some cases. Large, evolving projects with multiple contributors seems to be the axis of evil for Perl. Startups exacerbate this problem because they exhibit most of these factors and compound it with unrealistic functional time pressure.

What I observed as problems were:

First, with Perl there is always a temptation to be clever. It's a lot of fun, but one of the underlying philosophies of Perl, the "Tim Toady" thing, opens up a lot of temptation to show just how clever you are, usually too clever by half. That always leads to the WTF moments as you’re reading any code you haven’t written in the last week. I started to feel each WTF moment as a tax on our tech team.

When you have a big Perl project with several contributors, coming up with coding standards is a must but usually in a startup environment getting something working is almost always the first priority. Also, coding standards only get you so far with Perl because it's so flexible. If you spend any reasonable amount of time, the unwritten standards of how people write Perl code subtly shifts over time. Usually the code get better as contributors influence each others coding styles, but this makes going back to read working code that’s 6 months to a year old a massive pain in the ass.

Lastly, having coding standards doesn’t protect you against other peoples modules. If you have a large and complex enough system, you’re going to start tripping over the bugs and corner cases in other people’s modules. Perl has the strength of CPAN, but because you can’t enforce a coding standard across all of Perl, debugging into other people’s modules can be an exercise in frustration. When some bug is tracked down to a third-party module, treating it as a black box is no longer an option.

When faced with these problems you can usually work through each case. In the best case it just takes a few minutes of working through the cognitive dissonance, but in other cases you end up breaking out the print statements and/or debugger to instrument code just to figure out what the heck was the intent here.

As a startup guy, the energy required to “re parse” code that’s already been written in subtly different ways starts to drive you crazy because that’s time and energy that could be being applied to solving the bug and tackling the new problem at hand. That re-read and re-parse tax gets worse and worse the large the project becomes and the more people that are involved.

That’s, generally, why I wouldn’t recommend Perl as a language for a startup project, but every case is different. If you're not in the axis-of-evil for Perl, you have incredible discipline and you only rely on a limited number of third-party modules you may be OK.

Re: Perl Startups: Lacuna Expanse

#56
post #6

>Ruby - Now that Perl has Dancer/Plack/Moose, Ruby has nothing that Perl doesn't have (at least that I've seen). Therefore no reason to switch. >Python - Basically the same argument as Ruby, except that in my opinion Python isn't half as good of a language as Ruby. IMO he kinda missed the main ideological differences, benefits, pros, cons of both ruby and python.

IMO he kinda missed the main ideological differences, benefits, pros, cons of both ruby and python.

No. He wasn't arguing ideology. He was saying that for his needs, this is how he compares things.

Of course his needs implicitly assume his own ideological biases. Yours may vary. But he's not trying to convince anyone else - merely say what went into his decision.

Re: Perl Startups: Lacuna Expanse

#58
post #2

a bit off topic, but i really wish if jetbrains creates an ide for perl, similar to their pycharm or phpstorm i believe compared to other younger languages perl can be overwhelming, and i think a great ide will go a long way reducing the barrier of entry to new comers

Ever heard of Komodo? I've been using it for years for Perl development, plus it supports Python, Ruby, and a host of other languages. I wouldn't consider doing any serious Perl dev without it.

is Komodo bound in any way to ActiveState perl distribution? or can it be configured to use any perl you have installed, including perlbrew stuff

Re: Perl Startups: Lacuna Expanse

#59
post #58

Earlier quoted context omitted.

Ever heard of Komodo? I've been using it for years for Perl development, plus it supports Python, Ruby, and a host of other languages. I wouldn't consider doing any serious Perl dev without it.

is Komodo bound in any way to ActiveState perl distribution? or can it be configured to use any perl you have installed, including perlbrew stuff

No. If it were, I wouldn't even consider using it.

Switching between multiple interpreter installations is pretty easy (a drop down in a preference pane) -- it will find every interpreter on your path, and can index anything defined in $PERL5LIB for auto-complete goodness.

The debugger is great -- I love being able to set conditional breakpoints using a possibly complex expression in the native language (not just simple var=val type things).

Post reply on HN