Why Did I Choose Perl When Building Crowdtilt? - <AUTHOR> http://dsog.info/blog/Perl/Hacking/Technology/2012/08/31/why-did-i-choose-perl-for-crowdtilt/ <comment><USER3> There is some decent justification in there, but I think the generic question, in a lot of questions is:

Why did I choose to build X with Y?

The generic answer is usually:

Because it is what I know.

The extended answer may include particular features of the language or environment or it may include the support provided by a particular cloud infrastructure.

As an example, the stuff I am personally working on now, I mostly use Python because I know it well and the ecosystem for webapps is pretty mature. 7 or so years ago, Python (in particular) mod python wasn't even close to modphp, so I went with PHP. Today, if I was adamant about building on Azure, I'd choose NodeJS (thus JavaScript) or C# because they are first class citizens of the platform.

In other words, choice of language can take on many facets. Good to see PERL mentioned again.

<comment><AUTHOR> There are always tradeoffs, but sometimes you can find "the best tool for the job". And that may or may not be the tool that you know. You gotta be flexible and open to learn other tools that may suit the situation better.

In the post I don't bash any other languages at all. In fact, I encourage people to learn other languages too. At the end of the day, it'll help you evolve your thinking process and extend your skill set.

Thank you for your comment :)

<comment><USER3> Not saying you bashed languages, but made a good argument for PERL. And the points were good and provided substance. Which, personally, I find useful and will likely guide me to look into things I may not know or revisit something I don't know. PERL _might_ be the exception.

What I liked about the post - it didn't focus on hype, like that around NodeJS (it's badass rock star tech); additionally it brought up a language no so en vogue.

Keep up the good work.

</comment></comment></comment><comment><USER4> The one thing I've learned as a consultant working outside the startup world, in the boring world of everyday business is just how much of the computerized world still runs on perl. I've seen some fantastically made systems and some real stinkers.

In the HN echo chamber, it seems like everyone who's anyone has moved on to ruby, rails, python, django, etc. Look into the every-web. My god, it's full of perl.

<comment><AUTHOR> I agree. It is a misconception that Perl is "dying". It powers a lot of the web. It had a bad rep a few years ago due to cryptic-looking codes that were written as a throw away code and somehow spread all over the web :).

I was one of the skeptical developers at some point, but then I got hooked :).

Modern Perl changes the old rep alltogether. I encourage people to write well architected, maintainable, extensible code and follow design patterns regardless of the language of choice.

<comment><USER5> Regardless of the structure of modern usage its syntax is still very noisy for the reader. It seems the majority prefer the cleaner syntax that doesn't use punctuation to define the type of access a la BASIC.

<comment><USER6> Yes, the sigils can make Perl code look noisy, especially as Perl uses curly braces and semicolons too. However, they do have a couple of nice benefits: firstly, they make variable interpolation easier (and less noisy!) than in other languages like Ruby and Python. Secondly, sigils make it easy to see what kind of data you are dealing with, obviating the need to scroll through your program to the variable declaration.

<comment><USER7> The sigils make variable interpolation easier only in the most generic case "interpolate $me". Anything more sophisticated requires a temporary variable.

<comment><USER8> You can avoid using temporary variables with the @{[...]} and ${\\...} idioms:

      my $x = 1;

      say "$x + 1 = @{[ $x + 1 ]}";

      sub plus1 { $_[0] + 1 }

      say "$x + 1 = ${\plus1($x)}";

</comment></comment></comment></comment></comment></comment><comment><USER9> I hope the strong testing culture and rock-solid reliability are another good sticking point.

CPAN is more than just a repository of modules: it's a tool-chain of software. When you upload a module you get a tonne of feedback about which platforms and versions of Perl the tests fail on, you get reports from CPAN Testers about your library in the wild, and when new Perls come out you get notifications if your library gets broken.

The ability for the language to evolve, I think, has been a big reason why Perl is still around. It's able to adopt new features and simultaneously remain backwards compatible for long periods of time (for the most part).

I don't use perl most of the time, but when I do I like it.

</comment><comment><USER10> I personally don't like the 'flavor' of most Perl that I've seen or written - and it was my first programming language - but it's obvious that it remains one of the most relevant languages in terms of shipped code.

That being said, I don't feel that _any_ of the reasons given in this post are in any way leading to the conclusion 'Use Perl'. In fact I think all of those points apply to just about every major high-level language today. CPAN is definitely a very high-quality system, but I think nearly every language I use has something functionally similar. The same sort of argument works on the other points, or so it seems to me.

The one exception is the ease of extending the language. I'm not familiar with that functionality of Perl, but I can say that extensibility of the core language is by far my favorite feature of Scheme. If Perl has a similar ability, then I will absolutely concede that that is a powerful feature indeed.

<comment><AUTHOR> Indeed :).

Checkout these modules: Test::Class::Sugar MooseX::Declare

Thank you for your feedback.

<comment><USER11> Those are both excellent examples. One modifies the core language syntax to allow for writing tests in a cleaner and easier way. The other one modifies the language to make writing OO code in a new way, one that will be familiar to Java developers. I don't know of very many languages that allow developers to modify the core language via 3rd party modules. That's why Perl will never die - it will simply evolve as the needs of programmers change. Hey, Smalltalk Roles are a nice idea ... ok we'll add those (Moose::Role). Hmmm, lets allow method signatures to declare types for their params ... sure no problem (MooseX::Method::Signatures). Wouldn't it be cool if we could treat arrays as objects and invoke methods on them? Sure, here you go (autobox::Core).

<comment><USER12> As has been alluded to in another comment: Which other languages that compare to perl have you actually looked at?

Python has rich meta-programming. Ruby has (almost) single-handedly super- hyped and re-invented the idea of domain specific languages (DSLs). Lisp is of course all about this (as is Forth).

Javascript builds on the ideas from Smalltalk and (especially) Self to allow you to crazy stuff with how objects work...

Java can't do much of this, but the JVM has been bent in surprising ways by efforts like Clojure and Scala...

While it is great that you know and like perl -- That particular point in the post (and this comment) seems rather poorly researched.

I'm very much on the burnt-by-crazy-old-nasty-perl-legacy-crap side of the fence -- but I can't deny that I see some of the reasons why people would like to use perl -- it's just not for me. The statement "Perl evolves in a ... manner that makes the language always fresh" makes me want to hide under the bed -- if I have to deal with someone else's code in production ;-)

Still -- it's a bit strange to see the claim that perl is somehow much more flexible than other comparable languages.

<comment><USER11> "As has been alluded to in another comment: Which other languages that compare to perl have you actually looked at?"

I am very familiar with all of the languages that you mention. They are all great languages in their own right. My comment however was about Perl's ability to easily evolve the core language via contributions from its community, as opposed to other languages that require a lenghty process performed by the core maintainers of the language. This allows Perl to evolve at a much faster pace than other languages. A lot of your points do not seem relevant in that context.

"Python has rich meta-programming."

Who cares? So do most modern languages.

"Ruby has (almost) single-handedly super-hyped and re-invented the idea of domain specific languages (DSLs)."

The Perl community has been writing DSL's since before most people had heard of Ruby. Real DSL's. Not just invoking functions without parens and labeling it a DSL, as is often done in the Ruby community. Ruby in no way invented or re-invented anything having to do with DSL's.

"Lisp is of course all about this (as is Forth)."

Agreed. Lisp macros are very powerful. Lisp is a great example of a language that can do this.

"I'm very much on the burnt-by-crazy-old-nasty-perl-legacy-crap side of the fence -- but I can't deny that I see some of the reasons why people would like to use perl -- it's just not for me."

This is a common complaint. People have had to deal with Perl code that they do not understand. It may have been poorly written, or it may have been perfectly written Perl code. If you do not take the time to learn Perl, you would not know the difference. The most common reaction is to blame the language.

"Still -- it's a bit strange to see the claim that perl is somehow much more flexible than other comparable languages."

It may be strange to you because you are not very familiar with Perl.

<comment><USER13> "People have had to deal with Perl code that they do not understand. It may have been poorly written, or it may have been perfectly written Perl code. If you do not take the time to learn Perl, you would not know the difference."

The problem is that Perl's TIMTOWDI culture and the inconsistent evolution of the core language make learning "enough" Perl harder than learning e.g. "enough" Python.

<comment><USER11> Yes, I definitely agree that Perl is harder to learn than Python. My point was that people may not have the time or interest to learn Perl, and so when they see Perl code that they do not understand, they blame it on the language instead of their own lack of knowledge.

Perl has a very rich and powerful and expressive grammar. It takes a good bit of effort to learn all of it. Python has opted for a grammer that is much more simple. That definitely has its benefits. For me personally, I feel constrained when writing Python code due to its lack of expressiveness.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Our company is primarily a Perl shop as well. Hiring is one of the big challenges with a technology stack based on Perl. Especially hiring younger talent who are more interested in the latest trendy language.

When I first started here I asked the same question: "Why?" - and I got essentially the same answer as this article.

In the end, as long as the development team is comfortable with it, and it works, and there is still a community of supporters, I suppose it doesn't really matter what it is written in.

Hey - at least it isn't PHP!

</comment><comment><USER15> "As far as I know, Perl is one of the only languages that can evolve via 3rd party modules."

Ummm... What?!

There's a long tradition creating DSLs in the Ruby community. Lisp/Scheme/Clojure have macros. OCaml has campl4. I'm sure there are many others.

<comment><USER16> I'll give you macros, but if you define DSLs as "chained methods", many languages have DSL supports. The author's talking about Perl's support for mangling the language itself through third party modules.

<comment><USER17> What does Perl have in that regard that Ruby hasn't? Ruby also has open classes and you can chain and modify any of the base classes, be it "String" or "Object".

I don't know anything like "MooseX", but that might be because Ruby actually has a somewhat working object system.

<comment><USER16> Perl lets you add new language keywords which take effect during the parse phase.

<comment><USER18> So, basically, Perl has macros? REAL macros? Like, say, in Lisps? Could I, for example, make fully inlined merge sort, as demonstrated a couple days ago here by a post from Racket blog? Now I'm curious.

<comment><USER19> Sort of. Perl has support for something like reader macros. See [http://search.cpan.org/~zefram/Devel- Declare-0.006011/lib/De...](http://search.cpan.org/~zefram/Devel- Declare-0.006011/lib/Devel/Declare.pm) for details.

One could, in theory, build something like Lisp macros using it, but I don't think that anyone has.

</comment></comment></comment></comment></comment></comment><comment><USER20> Of all the reasons why the OP chose Perl for their project, this is the one that makes the most sense:

 _5\. Perl code is fun to write._

If you are comfortable in your environment, then moving fast comes naturally and you have far more opportunities to succeed.

</comment><comment><USER21> I've had some experience with perl. While it has a lot of advantages (most of them are described in your post) it clumsily support OOP and is very hard to maintain. It's true that perl gets you going pretty fast, But once your code base reaches several hundred classes, you'll really regret ever considering it for production.

As a grad student I found myself using it quite a lot for writing quick and dirty scripts for data manipulation until I finally decided to move to python. Since then, I never look back :-)

<comment><USER22> Isn't the maintainability of the code a function of who wrote it?

<comment><USER23> That is one aspect, but not the only one. When you start to write complex software you realize that the language, frameworks, libraries, design patterns, etc impact the maintainability of your code.

<comment><AUTHOR> _frameworks, libraries,_

This is basically what Modern Perl and CPAN modules are all about. Checkout Perl Dancer as a web framework for example and you'll see simplicity.

</comment></comment></comment></comment><comment><USER24> How do you find hiring? A Blekko founder said they chose Perl partly because as one of the few hot startups to be using Perl, it would make them a top choice for great Perl hackers.

<comment><USER25> I've heard this argument before: I'll build my product using X because nobody else is doing it, so all the best Xers are going to line up. I can't speak for the author, but I haven't seen it quite work out.

Unless you're talking exclusively to language/stack zealots, the best guys are evolving the tools, and the next-best are evolving _with_ them. That's not to say that all things old are bad and all things new are good, but we do tend to get better at different classes of problems.

As the author suggests, though, Perl has this incredible longevity and extensibility. I really like it whenever I work with it, and it wouldn't be a turn-off if I was considering working there. But if someone came to me and said, "I want you to develop a To-Do web app in C++," I'd probably pass.

<comment><USER20> In all fairness, I think it depends on what "X" is in your case. If you've decided on Prolog as your language of choice, you are going to be limited to a pool of government type candidates and IBM event management gurus.

Perl was one of the first mainstream advanced scripting languages to run the Web, so the amount of folks out there that cut their teeth on CGI/Perl is pretty wide and deep.

For me, I started writing my first Web apps in Perl, and moved over to PHP.

</comment></comment></comment><comment><USER26> I've been playing around with perl over the last 10 years, and over the last 4 years or so doing perl professionally.

Because I'm in the job market at the moment I figured I'd take a closer look at Python and Ruby, so I'm concurrently reading two python/ruby books. To be honest, I don't see much in it. If I were to chose one I think I'd have to go with python, because Ruby looks to me, just like perl but with a different set of weird symbols to remember, and a slightly different set of downsides.

Python on the other hand looks like a sufficiently different take on the dynamic language problem, so as to be more interesting.

PHP I'm not bothering with right now. It's just like perl only with most, if not all of the design intelligence removed.

</comment><comment><USER27> I learned perl in the past (I'd rate myself as ~somewhat proficient~, ignoring 'new style perl'), and I like the language. That puts me in a strange place when I talk to friends: I don't know ruby nor python, but do think that perl's a nice language. A strange position to be in, by now.

That said: The do what I mean paragraph kind of reminded me of the Stripe CTF. One of the levels (5?) was vulnerable to pass parameters to a POST handler via query string. In other words: In level 5 in that CTF, if you followed one possible solution, you abused this flexibility.

So .. maybe it's not always a good thing? Including this particular reference in the article?

<comment><USER28> So I usually write Python. Perl has a similar heritage to Python and I think the two are similar in many ways (more in Rakudo). As a Python programmer, I think there is nothing wrong with liking and using Perl. I don't think you should find this uncomfortable or strange. I also think there is no clear-cut reason why you would absolutely have to switch, as long as Perl was still suiting your purposes.

</comment></comment><comment><USER29> I see these justifications for perl almost every time it comes up - <USER2> community, cpan, writing lots of code fast. These are good things, but it's worth pointing out that EVERY OTHER LANGUAGE DOES THAT. Ruby has gem, python has pip - modern languages have these things built in by design. Not to hate on perl, because there's things I like about it, but this article could be retitled "what I like about not using fortran"

<comment><USER30> >> EVERY OTHER LANGUAGE DOES THAT

Do you really know about this?

I've done a bit of Python lately. The infrastructure isn't close (see e.g. Perl Testers, chromatic had a blog post about it quite recently). Also, CPAN is much richer than pypi.

<comment><USER31> Which modules are missing on Pypi?

<comment><USER30> Off the top of my head -- a serious sql parser and the whole TAP test ecosystem. After a while I stopped checking cpan for what I needed, since I just got angry.

Another difference: In the Perl world, you can find and have dependency trees with dozens to hundreds of modules installed from cpan -- and you expect it to work, particularly since the module tests by default are run at install. (It is a bit painful with too many dependencies, but it works if you need it.)

<comment><USER32> I think there are many cases where packages may not be in one language repo, but in another. However, Python does have a lot of testing packages available that do a swell job. Also, the JUnit test-report format these days tends to be what I see a lot of.

<http://wiki.python.org/moin/PythonTestingToolsTaxonomy>

Also, as far as SQL, and even Object Relational Mappers goes, there's SQL Alchemy.

You can verify they are present here, in PyPi: <http://pypi.python.org/pypi>

<comment><USER30> SQL Alchemy doesn't have an SQL parser, which I asked for.

See <http://search.cpan.org/~rehsack/SQL-Statement/>

It contains a parser and evaluates SQL expressions on lots of data sources(!).

The testing tools on Perl use a common infrastructure and can work with each others in a plugin fashion.

</comment></comment></comment></comment></comment></comment><comment><USER33> Good Story and Dancer is really good. For these that want to give it a try we support dancer on the free hosting at <http://1.ai>

Perhaps how popular a solution for the web is depends also on free or easy hosting options where people can experiment ?

</comment><comment><USER34> I reach for Perl frequently, primarily for two reasons:

i. I've been using for 20 years or so, since Perl 4. By the time I check back to verify some point of Python syntax or library use, I will have written the code in Perl.

ii. CPAN. It is unusual for me to go there and not find something that I can use for a task.

I like Python and do use it a good deal, largely on Windows. Yet some months ago, I ended up writing a few longish scripts to run on Windows, with ActivePerl.

</comment><comment><USER35> I wonder if this will make hiring easier or harder in the valley?

<comment><AUTHOR> It is a very good question and I had to think really hard about it in the early days. My take on it is that I appreciate good developers regardless of the language of choice and those are the stars that we want to have at Crowdtilt. Good developers will usually learn any "needed" tools in a matter of hours.

In fact, I think if anything Perl would speed up the time it'll take to train a dev and get him/her to have an impact on the product from day one due to how easy is it to learn.

<comment><USER36> _In fact, I think if anything Perl would speed up the time it'll take to train a dev and get him/her to have an impact on the product from day one due to how easy is it to learn._

Which will be negated by how hard real-world perl code is to read and maintain.

<comment><USER37> There's a school of writing "modern" Perl, using source filters and object systems. Bare Perl is a mess but, in somewhat of a Lispy way, you can use Perl to rewrite your Perl. If none of your functions have signatures and you're manually blessing objects, your codebase will quickly turn to shit. Using a standard bits (such as Moose) to give you a consistent object system and method call syntax changes things dramatically.

<comment><USER38> This is a new fad and it undoubtedly leads to more maintainable code, but it still feels like a bad tradeoff to me: you get the verbosity of stricter languages without the benefit (compile-time errors) at worse performance than plain Perl. I'd rather write something new in Scala or Go nowdays than in strict "modern Perl" style / Moose (and I've used Perl almost exclusively for the past 13 years).

<comment><USER26> umm, verbosity?

      package Point;
      use Moose; # automatically turns on strict and warnings
      has 'x' => (is => 'rw', isa => 'Int');
      has 'y' => (is => 'rw', isa => 'Int');
      sub clear { my $self = shift; $self->$_(0) for qw/x y/}

1;

<comment><USER39> Verbosity.

        class Point {
            has Int $.x is rw;
            has Int $.y is rw;
            method clear() { $.x = 0; $.y = 0; }
        }

:)

<comment><USER40> Perl 6 is / will be sweet :)

<comment><USER39> Perl 6 is sweet, and will be sweeter when it has better performance. :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER41> I'm writing to beginner programmers. Please, please don't use Perl.

Use Ruby and/or Python. Other competing scripting might be good (like lua) but I haven't used them. I do know however Ruby and Python are better.

see [https://sites.google.com/site/steveyegge2/ancient- languages-...](https://sites.google.com/site/steveyegge2/ancient-languages- perl)

90% still holds true. This guy knows more than 99% of the Perl advocates on this thread (he's also smarter than me). Do another search on other famous programmers (like Rob Pike) and almost always you'll find negative comments about Perl. There a reason companies like google use Python and universities (like MIT) teach in Python.

For crying out loud Perl has pointers in it. Perl doesn't do basic parameter checking in functions. Perl doesn't come with a decent repl. The Perl repl doesn't work with readlines. Perl doesn't do sane type checking. print "abc" + 1; prints 1. It isn't a syntax error (like in Ruby or Python). Do some basic google searching. wantarray is one of most horrible things I've seen a programming language thats unique to Perl. You how know generally side effects are bad in functions? Well, I don't want to get into it... but just google it.

Perl has a weird cult culture to it. There are a few smart people who are really into it but it isn't because of the languages merits. This is well described by one of perl most famous developers: <http://www.perl.com/pub/2000/12/advocacy.html> No one with a OPEN mind who isn't lazy wouldn't move onto Python or Ruby.

Remember too at the end of the day it is how good or bad code theoretically is. Is what you see out in the wild. What you work with. The chances are you won't be looking at chromatic's code. Perl code is about the ugliest, most unreadable code you'll find on average. I recently saw something Brain D Foy (a Perl expert) acknowledging this. The average code is what counts.

Anyhow those are my 2 cents. I have to go to sleep.

<comment><USER42> Your post gets a number of things wrong about Perl.

> For crying out loud Perl has pointers in it.

It does? Do you mean references? You'll need to use reference syntax when using nested data structures, but this is the same syntax that you'll find in Python and Ruby - you could think of those languages as using references by default instead of having array or list types.

> Perl doesn't do basic parameter checking in functions.

This is true - you'll need to deconstruct `@_` yourself. It is a shame. There is Params::Validate and Method::Signatures to fix this.

> Perl doesn't come with a decent repl.

Yeah, this is annoying. Get Devel::REPL and use that.

> Perl doesn't do sane type checking. print "abc" + 1; prints 1. It isn't a > syntax error (like in Ruby or Python).

This throws a lot of people off, when they expect it to work like Python or Ruby and it doesn't. "abc" and 1 are actually the same type - scalars. A scalar can be a number or a string behind the scenes, and they're automatically converted, so you can just read data from a file and not have to worry about that. You want to use the dot operator, `print "abc" . 1;`, which prints "abc1" (which is what I think you want).

In those languages, it throws a type error, not a syntax error, which is an important distinction. Intergalactic law states that you're not allowed to complain about Perl if you don't know this.

> wantarray is one of most horrible things I've seen a programming language

Having list flattening means you can dump all kinds of data into a function and not have to worry about where it came from. Recently I wrote the line of code `highlight qr/regex/, @colours, @more_colours`, where I just dumped values from arrays into the function and didn't have to worry about destructuring them. If I wanted to pass the arrays, I'd put a backslash before them. It's sort of the opposite of Ruby's unary * operator.

Perl has warts just like any other language. Its warts are just more infamous (because Perl is used so much, a lot of people are having to maintain old codebases) and more visible (Perl has a culture of using the CPAN to fix things with the language (MooseX, Modern::Perl) whereas other languages' users tend to just put up with it).

I disagree that the average code is what counts. When I helped out on a Python cause, the lecturer barely knew Python, and taught it as though it were C (the students learned while loops first, then for loops, and never actually learned about generators. Yeah, I know). The code they wrote was definitely below- average. But not once did they turn to the Internet to see what proper Python code was like - they just followed the course, and did what it told them. If you learn Perl from a book, the amount of sub-par Perl code in the wild isn't going to affect you. Or, to put it another way: how can someone else make my language a worse one merely by writing in it?

I do agree that Perl is a bad choice for your first language: the choices it gives you and the amount it leaves up to you could get confusing when you're trying to learn it by yourself. Perl is a language for when you're a better programmer, and you've learnt to code at a higher level.

<comment><USER41> Please don't make assumptions about my Perl knowledge as I don't make any assumptions about your technical knowledge. I'm actually a Perl Programmer full time.

Yes, Perl does have pointers in it. The term 'References' (in Perl) is marketing cover up you fell victim to. Run this: my $x = [1, 2, 3]; print $x; It prints ARRAY(0x206a998) on my machine. There's a address and a type, that's a pointer. Please read the Steve Yeggie I posted above (he explains it quite well) and then reply back (if you are so inclined).

>It does? Do you mean references? You'll need to use reference syntax when using nested data structures, but this is the same syntax that you'll find in Python and Ruby - you could think of those languages as using references by default instead of having array or list types.

So I have include 2 modules do something incredibly basic and fundamential to all programming languages. What a joke. C has been doing this SANE behavor since the 80s (maybe seventies). Along those lines (sorry, I'm being sarcastic to get my point across) why don't we have all scalars get random wrong values (after you assign something to them)? Then you can include a module Variables::UseRealValues so it behaves correctly. Then Perl fanatics can tell me how other languages are less flexible and Perl via TIMTOWTDI is better.

> This is true - you'll need to deconstruct `@_` yourself. It is a shame. > There is Params::Validate and Method::Signatures to fix this.

Fair enough, I meant type error. I know what scalar is.

> Perl doesn't do sane type checking. print "abc" + 1; prints 1. It isn't a > syntax error (like in Ruby or Python). This throws a lot of people off, when > they expect it to work like Python or Ruby and it doesn't. "abc" and 1 are > actually the same type - scalars. A scalar can be a number or a string > behind the scenes, and they're automatically converted, so you can just read > data from a file and not have to worry about that. You want to use the dot > operator, `print "abc" . 1;`, which prints "abc1" (which is what I think you > want). In those languages, it throws a type error, not a syntax error, which > is an important distinction. Intergalactic law states that you're not > allowed to complain about Perl if you don't know this.

Yes other languages have warts. Perl just has more of them.

>Perl has warts just like any other language. Its warts are just more infamous (because Perl is used so much, a lot of people are having to maintain old codebases) and more visible (Perl has a culture of using the CPAN to fix things with the language (MooseX, Modern::Perl) whereas other languages' users tend to just put up with it).

But people don't just learn from books. All of us google how to do a particular task when we doing it (especially under time constraints). With Perl's unwieldy syntax you're likely to copy something wrong (I don't just even mean cutting and pasting, but concepts). Someone will probably have to read this code later. So 'on paper' it doesn't make you're language worse (as you question below) but in practice (and that's what really matters) Perl's lots of wrong ways to do it really shoots you in the shoot.

> If you learn Perl from a book, the amount of sub-par Perl code in the wild > isn't going to affect you. Or, to put it another way: how can someone else > make my language a worse one merely by writing in it?

I find it slightly annoying all these 'why I use Perl' links on hacker news. Advocacy is lame. With Python or Ruby you'll see more links on a new library or a tutorial (like math library on the front page). Rarely do you see a 'why I use Ruby' or 'why I use Ruby' link.

One final thing, for all my Perl critism I find the community intelligent and very helpful. I just think the language is poor and they should move on alreay to Ruby or Python. It's a shame they waste on their talents on Perl.

<comment><USER16> In Ruby can write `puts Object.new.inspect` to get something like `#<Object:0x7f88ded4cc68>`. Does that mean Ruby has pointers?

If you can't do math on it to access other parts of memory, it's not a pointer in the C sense.

<comment><USER41> But you deference the addresses just C. I'd say it's more a like a pointer than not. And this is where I have I issue. You don't deference addresses in Ruby or Python. When you are writing data structures in Perl you have constantly have to deal with extra syntax (and mental work). I'd say about 10% or so of my syntax errors come from this and it's completely unnecessary. It's a huge pain (to me atleast).

<comment><USER16> _I'd say it's more a like a pointer than not._

Are you familiar with the distinction between "pass by reference" and "pass by value"? If you call everything which behaves in the former way a pointer, I think you confuse an implementation strategy with a language construct and you lose an important feature of C pointers.

What you see in Perl (and Ruby) is a unique identifier that happens to be a memory address. It could be anything else, but the memory address is an identifier that's essentially free to generate. That's it. It's otherwise irrelevant. You have to write code in a language which has pointers to do anything with that information, and even then you have to cast it to a real pointer to do so.

We could discuss Perl 5's dereferencing syntax (it's ugly, no argument there) but that's a syntax issue and not an implementation concern.

<comment><USER41> I'm familiar with C and understand why pointers are there. I understand what you are saying and you make a fair point. I'll take back my statement Perl has pointers. Claiming Perl has pointers is very murky (although it has some truth to it). The heart of what bothers me is you have to deference addresses (similar to what happens with pointers in C) in Perl. This shouldn't exist in a scripting language syntax. It lots of unnecessary syntax, compile errors, and mental hoops you have to go through when coding. Ruby and Python don't have this serious (I think so at least) wart.

> Are you familiar with the distinction between "pass by reference" and "pass > by value"? If you call everything which behaves in the former way a pointer, > I think you confuse an implementation strategy with a language construct and > you lose an important feature of C pointers.

<comment><USER16> _The heart of what bothers me is you have to deference addresses..._

I don't understand why you keep saying that. They're not addresses.

From the language side of things, they're first class scalar entities just like strings and numbers. From Perl 5 they have nothing to do with memory addresses. (You might as well suggest that a nested data structure in any language without pointers is "dereferencing addresses", or that accessing object attributes is "dereferencing addresses".)

You can't write in Perl something like:

        my $reference = 'ARRAY(0x1234abcd)';

... and expect to access the array at that point in memory _even if you stringified an array reference and saw that its stringification included that hex address_. References are not pointers. They don't dereference addresses.

From the internals side, they're SVs, just like all other scalars in Perl 5. An SV is a C structure. Yes, the internals use pointers, but so does any other virtual machine implementation.

(Okay, you _can_ write code like I said above, but to make that work correctly, you have to write C to do it, because _C allows direct access to memory by address_.)

<comment><USER41> I'm sorry. I'm actually a little dyslexic and if a wrong word slips by the spell check I can get myself in trouble. s/deference/dereference/.

Consider: my $x = [1,2,3]; print "@$x\n";

In the second line I consider "$" dereferencing the "address" that points to an array. I don't know anything about the internals of Perl virtual machine and what that "address" really means. But to the common programmer it seems like you have to do the same work you would have do in C dereferencing pointers. Python and Ruby have no such operator, right? This unnecessary work is what I'm complaining about (and all the associated extra syntax).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER43> Reason no 6: The expression of people's faces when I tell them that I use Perl. "Oh! wow, why?" Priceless.

</comment><comment><USER44> Normally I'd just on the author for using a prototype in production, as admitted in point #1, but being open about it garners brownie points.

Good article, especially the praise towards CPAN. It seems to get lost in the hustle and bustle of the cutting-edge discussions, undeservedly so.

</comment><comment><USER45> I'm sorry but most of these arguments can be used to defend the use of ruby or python as well.

<comment><USER28> That's true, they're also true of Perl. These languages have a lot in common and a lot of overlap in what they can be used for.

</comment></comment><comment><USER37> TL;DR - I know Perl.

<comment><USER46> This is a great comment. Not sure why it we downvoted in oblivion. Sometimes there's nothing to say about an article, really. Way to drop the hammer, dude. Enough with HN pretension.

</comment></comment><comment><USER47> Perl is a really great language at getting things done today. Its failing (and the thing that makes a "mem" perl developer and a star developer) is what happens six months to a year after you complete a feature.

If you are willing to have some discipline up front (and the expense of some amount of velocity), it can save your bacon later.

</comment><comment><USER48> Does anyone have a good handle on how good perl interpreters are, or whether there are perl "compilers" that do something fancy, i.e. turn it into bytecode?

What with all the fancy compiler/interpreter technology going into things like V8, Nitro, pypy, cpy, etc, would be interesting to see how perl is keeping up in terms of speed.

<comment><USER49> Perl 5 has been around for a while and has seen quite a bit of optimization. It's fast.

<comment><USER26> And the regex engine is amazingly fast (there is one faster I believe). Try throwing a 20,000 item list at this little program, and then use the resulting regex to match another 20,000 items and see how long it runs (hint: not very, considering):

        #!/usr/bin/env perl
        use warnings;
        use strict;
        use Regexp::Assemble;
        my $ra = Regexp::Assemble->new;
        while (<>) {
            chomp;
            $ra->add($_);
        }
        print $ra->re . "\n";

<comment><USER26> Well I'm told that newer versions of perl optimise alternations internally and this is redundant now:

       my $re = join "|", @list;
       my (@matches) = $txt =~ /$re/g;

Quicker and faster...

</comment></comment></comment></comment><comment><USER50> Does he think he has to justify jis language choices to others?

Maybe he's worried because someone else might have to read the code someday and they might wonder why it's Perl.

What's needed is a way to store code in an "intermediate" form that can easily be translated into whatever scripting language is desired.</comment>


NounProject - an icon for every noun - <AUTHOR> http://www.thenounproject.com/

<comment><USER2> _"We get excited about things like scale, proportion, and shape. We are committed to design and quality in everything we do."_

That would make more sense to boast about if they weren't, for the most part (entirely?), collecting existing icons and assigning groups of nouns to them.

Also, many of their choices are rather less than international. A _No-P_ no- parking icon? "<3" for love? _Really?_

Otherwise, a fair little resource if you want a very standard icon in vector format. (Mind, you apparently have to download and decompress each one separately - I found no links for a collection.)

</comment><comment><USER3> Pretty cool, such an project to make an international visual language. And even better that the icons are in SVG format, and can be freely used.</comment>


Show HN: Wrkflows – Knowledge base and in-app widget for self-service help - <AUTHOR> https://www.wrkflows.io/ <comment><USER2> Wrkflows is also free to use. You can create unlimited articles and categories and you get a Knowledge Base and the Help Center widget you can put in your app. We also have a Pro Plan with some additional features like white labeling, custom domain name and inviting team members.

</comment><comment><USER2> Hey HackerNews, I'm a co-founder at Wrkflows. Thanks for checking out our project! We would love to hear any feedback you might have. We have a ton of stuff in the works, like additional integrations and features, but we would love to hear what you want in a product like this.

</comment><comment><USER3> How is this different than other help desk software?

<comment><AUTHOR> Thanks for the question! We're a small startup, so we can offer a more cost effective and simple solution. One of our biggest offerings is our in-app searchable widget, which provides more convenient, contextual help; users never have to leave whatever page they're on in your app to access help.

<comment><USER3> Awesome looks great! will give it a try</comment></comment></comment>


Ask HN: Has anyone heard of taking out a loan to maximize ESPP contributions? - <AUTHOR> Was thinking about this the other day.  If your typical Employee Stock Purchase Program (ESPP) nets you a 15% minimum essentially-guaranteed return but you can't afford to max out your paycheck contributions, why not find a loan for 10% or less to subsidize your paycheck so that you CAN max out contributions?  From the bank's perspective, the only risk to mitigate would be the employee getting fired or the company going under.  Seems like a win-win, but has anyone heard of such a practice? <comment><USER2> What % of employees eligible for ESPP even need the few hundred $ extra per paycheck that they won't max out ESPP?

They probably fall into these categories: 1> Unplanned financial crisis 2> New hires, typically from college with loans

I'd guess the market isn't big enough

<comment><AUTHOR> I'm thinking there might be more than you think, though you are probably right that the distribution would skew towards younger employees. Even 10% of a paycheck is decent sized chunk to have tied up in ESPP. Especially if you are doing other %-based contributions like 401K/IRA. Especially in areas where housing can cost 25% or more of your monthly earnings.

<comment><USER2> @matmann2001 - you'll need to get more numbers to assess the total assessable market (TAM).

ESPP eligibility might be a low% of the workforce given that SMBs employ much more than public companies. even among public companies, ESSP is only offered by a double digit % at best. Despite this, if the TAM is convincing, let's chat

<comment><AUTHOR> CNBC article from last year: [https://www.cnbc.com/2016/12/14/employee-stock- purchase-plan...](https://www.cnbc.com/2016/12/14/employee-stock-purchase- plans-are-underutilized.html)

Notably, Fidelity alone administers ESPP for 678,000 employees. Fidelity found that only 1/3 of employees with access to ESPP actually use it.</comment></comment></comment></comment>


Meat and Three and Ten Dollars' Worth of Regular - <AUTHOR> https://bittersoutherner.com/meat-and-three-and-ten-dollars-worth-of-regular <comment><USER3> What a great article! Well written & fun to read.

I can imagine the horror on many people's faces @ the idea of getting lunch/ dinner @ some grungy looking gas station. But growing up in the south, & having a lot of experience traveling all over the south by car, I can really appreciate this.

These type of places are everywhere. You will have to mingle with some interesting local clientele, but if you can get past the rough facade, you can really find some true gems.

It's easy to pass them up without giving it a second thought. It can be a risk, & sometimes you'll get burnt. But if you have a little sense of adventure, it can pay off big time.

When I was traveling a lot for an old job all around the south, it became a game of mine to try and find the best side of the road food I could. If I resorted to chain fast food on my way home, I considered it a failure.

This article really captures the energy of these type of establishments. And to be fair, it doesn't have to be a gas station . Tons of fantastic BBQ or 'meat & threes' are sprinkiled all over if you keep your eyes peeled.

I had some really great meals, & got a nice dose of culture along the way.

<comment><USER4> For those in the Bay Area, a pretty great local spot is The Junction, out in the wilderness between San Jose and...Livermore. Take 130 east out of SJ over some pretty rustic and gorgeous hill country, past the observatory, and eventually you get to this wooden shack where you can get some good homecooked mac n cheese from a tray, homemade hot sauces, etc, play some horseshoes out front, and generally forget you're a quick drive back to the valley of scrum

<comment><USER5> Also for the SF Bay Area folks: the gas station in Pescadero houses a solid taqueria.

<comment><USER6> Haha! Was thinking exactly of this place. Either lucky coincidence or it's better known than I thought.

<comment><USER7> You weren't alone. Great place.

</comment></comment></comment></comment></comment><comment><USER8> I've spent a bunch of time travelling through these places for work. I'm vegan and surprise surprise there is almost nothing I can eat. All the veges have either meat or dairy or both.

Good thing is often they will have a tin of beans on the shelf for sale and some hot sauce, so I never went hungry.

Also really nice folk literally 100% of the time. You won't find that in the cities.

Bonus note - i'm a foreigner and it never made any difference, I was always treated the same as everyone else.

<comment><USER5> > Also really nice folk literally 100% of the time. You won't find that in the > cities.

In my experience these folks are nice 100% of the time, unless you're the wrong color, religion, and/or sexual orientation.

<comment><USER9> I grew up in the South and ate at little hole in the wall BBQ places all the time. Never saw any outright discrimination. Many establishments were owned and and operated by black people. I must say cuisine is one of the few uniting features of the south. The racism is still there, but it is quieter, subtle, and behind closed doors most of the time. It's very sneaky and many people miss it.

</comment></comment></comment><comment><USER10> Unfortunately places like these are dying out the UK, from experience they seem to be failing to attract younger customers. They're also quite out of the way. As such, they put up their prices to compensate and start a death spiral until they can longer afford to stay open. A lot of older traditional pubs suffer the same fate.

My great grandparents and I would occasionally drive out to these places to enjoy a traditional Sunday roast, with little door-ways, a thatched roof and a wall filled with Sheffield steal / horse shoes / plates / other collectables. There we could trade old stories and enjoyed traditional English food to the point of becoming food comatose.

A tip to the serving staff wasn't expected, but it wast customary to give notes and tell the staff to keep the change. Often the food was so cheap that leaving the change didn't make much of a difference.

</comment><comment><USER11> I have noticed a trend toward this in Sydney, Australia, where grocery stores and quality restaurants are abundant. However it is not local home cooked food.

Instead large multi-national petroleum companies seem to be turning their branded stations into quasi-restaurants and cafes.

These have always existed on highways (truck-stops), but now I am seeing them all over the inner-city and suburban areas.

[https://www.caltex.com.au/thefoodary](https://www.caltex.com.au/thefoodary) [https://www.instagram.com/thefoodary/](https://www.instagram.com/thefoodary/)

*Caltex is a petroleum brand name of Chevron Corporation

<comment><USER12> There is a very strong chain of these in South Australia (OTR) owned by Peregrine Corp and the Shahin Family. It's a smart strategy, buying up prominent corner sites everywhere and spreading the offering beyond petrol/diesel/gas which you'd assume has a fading future.

</comment></comment><comment><USER13> A quick little story.

I had a oil refinery client in the Louisiana swamp (Port Barre to be exact). They bought some software and I was there to train them and do the config. When it came time for lunch someone suggested Exxon. I asked if the Exxon refinery had an exceptional cafeteria or something, they clarified that it was the Exxon gas station up the road. We went and there I sat enjoying the best Cajun meal I have had to this day.

</comment><comment><USER14> _Rural counties in the Mississippi Delta average one grocery per 190 square miles..._

Yes. This is the spot in Luca mentioned.[1] Nearest Wal-Mart Supercenter, #714, is less than 10 miles west. Two more about 20 miles east. That's why there are so few small grocery stores in those tiny towns.

[1] [https://email@example.com,-90.4791913,3a,33.8y...](https://firstname.lastname@example.com,-90.4791913,3a,33.8y,93.42h,88.53t/data=!3m6!1e1!3m4!1snfC- lqFG1Ff1T1cm1-I0kw!2e0!7i13312!8i6656)

<comment><USER15> Even counting Wal Mart as a grocer (and it is -- the biggest grocer, of course), if you drew a 190 sq mi rectangle centered on Lula, you wouldn't hit any of those Wal Marts.

<comment><USER16> What about dollar stores? Those often have a reasonable selection of groceries.

</comment></comment></comment><comment><USER17> What's "meat and three"? The article didn't seem to explain it and it's a colloquialism I've never heard before.

<comment><USER18> Had to look it up, myself. According to [https://en.m.wikipedia.org/wiki/Meat_and_three](https://en.m.wikipedia.org/wiki/Meat_and_three), it's a meal consisting of 1 meat and 3 side dishes.

<comment><USER19> Ha, I thought it was a way to say "Meat and 13 dollars of gasoline" (3 and 10 = 13)

<comment><USER17> This was my initial reading as well.

</comment></comment></comment></comment><comment><USER20> At the corner of Post Road and Mason Mill Road just west of Douglasville, Georgia near the county line separating Douglas and Carroll counties lives a Shell Station that fits description of those beloved gas stations in this article. I stop there regularly for a variety of reasons. The windows have a thick haze of years of fried chicken grease, engine grease, and daily abuse. It doesn't matter much though because windows are so plastered over with posters for lost dogs, fish frys, and general advertisements. You can get the quality Shell gasoline but you can also get diesel and off-road diesel because there is a demand for such a fuel here. You walk in and the hot food counter is steps away straight ahead, boiled peanuts immediately to your right at the register, snacks and Cokes to your left, and beer in the back corner. The coolers make loud humming noises but the Bud Light is always cold - <USER2> so cold the condensation has frozen over again on the tab forcing you bend your fingernail backwards a little too much for comfort just to open it. On the hot food counter there's always fried chicken of some sort, usually bone in but at breakfast they have a patty to put on your biscuit. For breakfast I like to go for the sausage biscuits. The biscuits are as big around as the palm of your hand, maybe a little bigger. The sausage usually has sat a little too long to be considered "fresh" but the biscuits are so good that you don't even worry about that. Besides, the two packets of mustard that get smeared on top usually help. Fried okra is a lunch-time staple during the hottest times of the year and it pairs well with the fried chicken. In the South fried okra is a prized seasonal side item. Good fried okra isn't just good, it's outstanding. The clientele is a mix of construction, tradesmen and tradewomen, lawn care, school teachers, office workers, and various day laborers. The trades and construction folks are too busy to stand around and chit chat so if they seem a little hurried it's because they are. Most of them have to be in the city (Atlanta) by 7am to start their shift. If you want that Southern hospitality look for someone not in a hard hat or wearing a shirt patch with their name embroidered on it, or you can wait for the weekend. Regardless, in such a diverse group respect and congeniality is always shown.

<comment><USER21> Mason Creek Rd, maybe?

</comment></comment><comment><USER22> This article and the other one a month or two ago about Sikh truckers in the LA Times have both been fantastic reads.

</comment><comment><USER23> Thanks for posting! This a wonderful article, accompanied by truly great photos, that reminds me of my days touring the south. Bitter Southernerner is killing it these days.

</comment><comment><USER24> Similarly there are Mexican food shops in gas stations out west. When I was looking at the Fine Article and thinking about that I saw that one of the Southern foods at the shops was hot tamales. Out west it's mostly tacos, burritos and quesadillas and I don't even know if they have tamales.

</comment><comment> crooked-v In Canada, combination gas station/convenience store/fast food chain restaurants are pretty common. As a USian who's lived in New England and the Pacific Northwest, the first time I came across one was almost viscerally starting.

<comment><USER25> I've spent the last two months in rural Saskatchewan working on an AgTech project. The gas station/convenience/restaurant 8 miles away from here used to do an absolutely amazing Indian buffet (East Indian, not First Nations) on Fridays, but they stopped due to lack of demand from the locals. They still make great "standard fare" food like subs, sandwiches, salads, etc, but... man do I miss that buffet.

</comment></comment><comment><USER26> Great article! Made me oddly nostalgic for a place I've never been.

</comment><comment><USER27> Not (really) in the South, but around here I've seen more than one such establishment with a sign that says "Eat Here - Get Gas". Ha!</comment>


Microsoft is now the leading company for open source contributions on GitHub - <AUTHOR> http://www.businessinsider.com/microsoft-github-open-source-2016-9 <comment><USER2> How is that calculated?

I mean Microsoft only has 2561 members ([https://github.com/orgs/Microsoft/people](https://github.com/orgs/Microsoft/people)) , so it isn't how many microsoft members contribute to open source.

Is it how many contributors their open source projects have? nope, FontAwesome has maybe 100 contributors to all of it's 5 projects but it's listed as having 9000+ contributors.

From what I can gather it's mostly based on the number of people that forked one of their projects (with some padding, maybe by the number of contributors to forks of the project? I have no idea)

This doesn't seem like a metric that is more meaningful then just the number of stars a repository has.

<comment><USER3> Microsoft also has:

[https://github.com/azure](https://github.com/azure)

[https://github.com/OfficeDev](https://github.com/OfficeDev)

[https://github.com/mspnp](https://github.com/mspnp)

[https://github.com/dotnet](https://github.com/dotnet)

[https://github.com/aspnet](https://github.com/aspnet)

[https://github.com/powershell](https://github.com/powershell)

[https://github.com/nuget](https://github.com/nuget) \- not sure this counts

plus probable another 100 i'm not aware of.

<comment><USER4> I'm no huge fan of Microsoft but leading that list with Azure made me recall a nice experience I had with their devs.

One of their APIs was missing something I needed so I created an issue on Github. Not only did the devs respond, they thanked me profusely for the input and made the (rather significant) change in days. I don't know if it's true or not, but I felt like their only user whenever I interacted with them (their issue tracker was rather empty...)

<comment><USER5> I had a similar experience with MS employees for an issue on a third party SQL driver using it with Azure SQL... very courteous, professional, and was included on some internal email chains to keep me informed. It did take a couple days, but the effort was very nice to say the least.

It was an Azure team member that spotted the bug and worked with some of the MS SQL guys to resolve the issue.

I can't speak for the larger organization, but will say that the Azure and .Net Core teams have been incredibly open and responsive. And with a huge amount of their devdiv stuff in Github, it doesn't surprise me they'd be one of the largest corporate contributors on Github.

</comment></comment></comment></comment><comment><USER6> This is very good, with this I learned that it's never too late to a company change. A very slow and large company like MS took decades to make this change, but they did well. And, they do that not because they are "good guys", but because this is the strategy to make them grow on their business. They are thinking on themselves.

<comment><USER7> > A very slow and large company like MS took decades to make this change, but > they did well.

From the outside imo it feels like it took ages for them to start this change, but actually doing it once they first started open-sourcing things seems to have been an incredibly quick switch, over just a couple of years. Has there been loads of progress on this in the background that's just only become visible now?

<comment><USER8> I suspect that most of their code was probably version controlled in Git anyway, so it wouldn't take that much effort to simply upload it to Github. What really delays stuff is probably the approval process, which for some companies can be really slow.

<comment><USER9> I'd imagine most of their code was in TFS. However I'm sure they used a tool to move things over. None of these have the full history of the project

<comment><USER10> Or worse, SourceSafe.

</comment></comment></comment></comment></comment><comment><USER11> AFAIK Angular is part of Google.

But a quite decent improvement from the era when the company bribed government officials to purchase bulk licences for pupils and govn't, distorting the job market. This is a less harmful Microsoft than it was 5-10-20 years ago.

<comment><USER12> > _a quite decent improvement from the era when_

Or the era of "Linux is a cancer"

[http://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_c...](http://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/)

<comment><USER13> Yeah, now they're just engaging in racketeering against Linux and Android using their patents.

<comment><USER14> The "Scroogled" era wasn't that long ago either. Unbelievably embarrassing.

Nor the stealing of Google's search results.

I'm not ready to bless Microsoft yet.

<comment><USER15> How long do they have to pay for their past mistakes before they've done enough to placate people?

<comment><USER16> Long enough to earn trust.

I still don't trust Sony after the RootKit fiasco, and it might be another decade before I do. Or Sprint after the IQ agent keylogger.

There are simply too many other companies with similar products to ms, sony or sprint that have no public dishonesty on their record. I can just use someone else's product until they have been good corporate citizens long enough that I have forgotten.

<comment><USER17> Honest question, if not Sprint, then who? Verizon is the worst. So, TMobile?

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> This is quite an improvement from the olden days when a certain Microsoft executive described the GPL as a cancer, and open source in general as a thing to avoid

<comment><USER19> If you're trying to write commercial software and make money off of it, the GPL _is_ a cancer.

MIT or the MS-PL is much more practical.

<comment><USER20> To translate

if you are attempting to exploit other peoples code with out giving anything back to the people that created the code then GPL is a cancer

>MIT or the MS-PL is much more practical.

This depends on the project

I normally license my libraries, code I intend to be included in other software under BSD or MIT, but full developed software that is intended to be used as is gets GPL.

<comment><USER21> >if you are attempting to exploit other peoples code with out giving anything back to the people that created the code then GPL is a cancer

That's bullshit - GPL requires you to open source your derived work as well - which plenty of people have a problem with commercially - it doesn't mean you don't want to contribute _anything_ (quoting you) back.

Even with the LGPL there are scenarios where sharing your code is not an option because of real world constraints (eg. NDAs), for example you need to modify the LGPL code to port to a closed platform. That doesn't mean you can't contribute back other improvements, but anything platform specific can't be released and therefore you can't comply with LGPL.

In general GPL creates a lot of problems to which GPL supporters just plug their ears and mantra "if you were truly free you wouldn't have those problems". Liberal licenses remove those problems and incentives to share back are there without the license requirement, you get your stuff maintained in the mainline and don't have to rebase on every update and reduce conflicts further down the development. LLVM is an excellent example of this where even traditionally closed companies OSS stuff because it's such a chore to keep up with latest. An example of a project being choked by GPL is Blender - a tool that has great potential to be a fully featured OSS 3D authoring package is struggling to fund developers because it can only sustain itself from government grants - nobody is interested in investing in it commercially because of the GPL. If it allowed for commercial plugins the OSS core would undoubtedly see significant contributions from those developers as well.

<comment><USER22> > In general GPL creates a lot of problems to which GPL supporters just plug > their ears and mantra "if you were truly free you wouldn't have those > problems".

I'm not plugging my ears. I recognize it, and it's terribly unfortunate that one would ever be in such a situation, but the idea there is that the GPL would encourage the liberation of other code, and other platforms. Here's an example:

      http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/doc/Why-CLISP-is-under-GPL

Now, you're talking about a broader issue than liberating a single program. But enough useful GPL'd software might sway larger systems.

Otherwise, if modifying free software and in doing so making your modified program proprietary means that it can't be used at all, then that is the intent.

<comment><USER23> Except the GPL doesn't just encourage open sourcing works which use the GPL work as a dependency; it makes the open sourcing of any library/program/what- have-you a MANDATORY condition for use of the GPL work. This has nothing to due with modification of the GPL work; the condition is still in effect when no modifications, proprietary or otherwise, are required in the GPL work.

I'm actually in agreement with Ballmer on this one: GPL is cancer. And I love contributing to OSS in general.

<comment><USER22> moron4hire is correct.

If you are not distributing the software personally or outside your organization, the GPL does not apply to you. If what you are doing does not constitute a derivative work, then your software is also not affected by the GPL: if you're invoking GNU grep in your program, for example, your program does not need to be licensed under a GPL-compatible license.

For clarification, see [https://www.gnu.org/licenses/gpl- faq.html](https://www.gnu.org/licenses/gpl-faq.html)

<comment><USER23> I am aware of these issues. I replied in-haste in-class, and didn't specify that I was only referring to library code. I instead used 'work', which was the wrong term; I apologize. Anyway, according to the GPL, using a GPL-ed library as a dependency in a larger codebase constitutes a derivative work (assuming distribution etc), thus requiring GPL-ing the whole larger codebase, which isn't cool (imo, of course).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> When I was a script kiddie back in the mid nineties Microsoft was this evil corporate empire that all the linux kids hated.

Now I'm in my mid 30s and I respect them a lot and would definitely work for them.

I guess we both have changed.

<comment><USER13> I'm not sure what changed about them. Do you think that dumping some code on GitHub is enough? I disagree.

"Linux kids" hated Microsoft because of their dirty tactics, exemplified for example in the "Halloween documents" [1], which shows among other things how they sponsored the SCO lawsuits against Linux. "Linux kids" also hated Microsoft for how they always tried to subvert open standards, like for example the Open Document Format (ODF). "Linux kids" also hated how Microsoft tried to push people towards DRM and Trusted Computing.

If they changed, that would mean they no longer engage in such tactics, right?

Yet Microsoft constantly engages in racketeering practices against Android phone makers and against Linux, with their huge patents portfolio, turning into genuine patent trolls. They make more money from Android than from their Windows Phone. They are also coercing computer makers to install Windows on computers, threatening with patents that allegedly cover Linux. If you can't innovate, litigate, right? And on open standards Microsoft is still engaged in subverting ODF, forcing governments that want open formats to accept OOXML as an alternative. And on Trusted Computing, well, they weren't the ones popularizing it, Apple takes the credit for that one, but they surely benefit from it now ;-)

Oh, and the often cited article by Scott Hanselman, titled "Microsoft killed my Pappy", doesn't mention these problems. Convenient, but it feels like a slap in the face.

Yet indeed, Microsoft did change. The Microsoft I know would have never tricked users in giving away their privacy by dark patterns [2]. And I can recognize they now have a wonderful PR department, otherwise this "change" nonsense wouldn't have flied without one.

[1] [https://en.wikipedia.org/wiki/Halloween_documents](https://en.wikipedia.org/wiki/Halloween_documents)

[2] [https://www.eff.org/deeplinks/2016/08/windows-10-microsoft-b...](https://www.eff.org/deeplinks/2016/08/windows-10-microsoft- blatantly-disregards-user-choice-and-privacy-deep-dive)

<comment><USER25> You should be more worried about Google and Facebook tracking your spatial and temporal data than Microsoft racking fees from Android OEMs.

<comment><USER13> I'm not sure how that's relevant to the topic at hand. Do you think I'm not ranting on Google or Facebook's behavior? If you'll look at my history, I'm doing it all the time.

But this is some sort of fallacy. Does the existence of other companies that engage in bad behavior somehow exempt Microsoft or makes them less bad?

And in case you're not up to date, Microsoft is also collecting your data and they forced that upgrade on all Windows users, in addition to behaving like patents trolls. So what's your point?

</comment></comment></comment></comment><comment><USER26> Let's discuss Microsoft's software patents.

Any Github contributions they make are trivial in comparison.

<comment><USER27> Never praise a good thing while a bad thing exists.

<comment><USER28> yep. this times a hundred.

I keep saying that for a lot of people there's nothing they could do to change their opinion because people are so invested in them being a bad guy. It's part of a world view.

</comment></comment></comment><comment><USER29> It seems to me like they are only open sourcing the products they wish more people are using, and not their actually useful products like MSOffice and the Windows OS.

Edit: to be clear, I know it is in their best interest not to open source those products, because that's where most of their money comes from. But it really looks to me like the want to flood the market with random open source stuff, so that they seem more open source friendly. But in reality they are not actually contributing anything very useful to the community.

<comment><USER30> VSCode is a great contribution and in some areas a valid alternative to Visual Studio.

<comment><USER31> Agreed - I have access to Visual Studio at work, but for some projects I've lately been using VSCode. It's super fast and has most of the features I need. Visual Studio is of course more fully featured, but I don't always need everything it has, and god it is SLOW!

</comment></comment></comment><comment><USER32> I reached a similar conclusion regarding Microsoft, based upon my own analysis:

[http://www.gh-impact.com/blog/the-most-influential- organizat...](http://www.gh-impact.com/blog/the-most-influential- organizations-on-github.html)

Despite being a latecomer to GitHub, Microsoft has risen to become the 4th most influential organization on GitHub in a very short amount of time.

</comment><comment><USER33> And I'm guessing they're even still not counting the Xamarin employees?

</comment><comment><USER34> I've been using dotnetcore to prototype a project. I'm actually really impressed with it. Every time I build and run it on Linux I'm resurprised that the project started in Visual Studio and builds / runs on Linux. Neat stuff, now they just need to add support LDAP.

This is all coming from someone who only uses Windows for Overwatch, Office, and courses that require it.

</comment><comment><USER35> Great - did they stop suing linux users yet?

<comment><USER28> Yes.

<comment><USER36> Unless you count android as linux.

<comment><USER37> Google is working on that: [https://en.wikipedia.org/wiki/Google_Fuchsia](https://en.wikipedia.org/wiki/Google_Fuchsia)

</comment></comment></comment></comment><comment><USER38> Leaving aside the obvious methodology issues, whenever such a huge company starts using a third party extensively I start worrying that they will buy them and lay waste to the values of the original company. At least we'll have GitLab and the like.

<comment><USER39> > whenever such a huge company starts using a third party extensively I start > worrying that they will buy them and lay waste to the values of the original > company.

The issue is the financial health I would be worried about. I haven't seen GitHub as anything special and it is clearly not the most Open Sourced company and their price structure has been all over the place. I am not worried about MicroSoft doing anything with Github they already have VS using git and you can use it dozens of different ways. There is nothing to be made with owning one piece of a dozen.

> At least we'll have GitLab and the like.

At least we have git.

<comment><USER40> At this stage the value of GitHub doesn't have much to do with git per se. It's about the projects' communities hosted there. That said, I don't see much of uniqueness in what GitHub provides, it just happened to be good enough and popped up at proper time.

</comment></comment></comment><comment><USER41> Ballmer 2005: Let's kick open source's ass

(Many years of confusion, a realization that no company has the engineering chops to pull off such a feat, stagnant stock price, CEO change..)

Nadella 2015: Let's kiss open source's ass

</comment><comment><USER42> Let the meaningless metrics wars begin.

</comment><comment><USER43> Microsoft is definitely trying to change its perception among the people, from hardcore closed box to trying to be the typical silicon valley company which opensources time to time to entice engineers working for them and yeah, greater good of the community.

But, as you see if you add Angular and Google's contributions, Google leads the list by a margin. So this looks more like a PR exercise and since when did we start taking BI articles on tech seriously(no offence to any readers).

<comment><USER44> > when did we start taking BI articles on tech seriously(no offence to any > readers)

None taken, BI articles are often poorly researched and written from a Wikipedia search knowledge level.

<comment><USER45> Regarding poorly research, this paragraph from the article struck me as odd:

> The data isn't perfect, since it only relies on GitHub information available > publicly — lots of businesses and project teams use GitHub in a private mode > to quietly share their code. But it's still a big step forward for > Microsoft.

Que? The article is regarding open source, not the use of GitHub as a source control, right? So even though the statement is true, it's not really making any sense. Am I misreading this?

</comment></comment></comment><comment><USER46> I have a feeling Microsoft will open source Windows soon.

</comment><comment><USER47> Docker has 14,000+ employees?

<comment><USER48> CrunchBase [0] puts the number between 100 and 250.

[0] [https://www.crunchbase.com/organization/docker#/entity](https://www.crunchbase.com/organization/docker#/entity)

</comment></comment><comment><USER49> If the article did the math to add Angular + Google, it would make them the top by a long shot.

<comment><USER50> I'm pretty sure there is quite a bit of overlap between angular and Google once you combine them.

Although they need to show how the numbers are calculated.

Is it the number of contributions and not contributors?

</comment></comment><comment><USER51> It's a bit different when a corporation open sources their product because it brings them more business value than a corporation actually contributes to not their open source projects. Does MS do that?

<comment><USER52> Are there any examples where a company contributes to Open Source software, without any (direct or indirect) benefit to themselves?

What difference does it make anyway?

<comment><USER53> I think akerro is asking about the motivation for Microsoft's contributions to OSS, rather than whether they benefit from it (clearly they do).

My impression, having spoken to people from Microsoft involved in OSS, is that they are pretty much entirely driven by what will make them the most profit. Sometimes that means making software "open source" and accepting contributions from the public (free labour!), other times that means keeping their software proprietary. They don't seem to care about ethics, or software freedom. It's a shame, but Microsoft aren't the only ones with that mentality. Big businesses are, more often than not, primarily motivated by profit.

<comment> UK-AL So are most for profit open source based companies. Redhat development is probably solely based on profit to.

</comment></comment></comment></comment><comment><USER54> Let's note that the analysis was done on Google BigQuery's GitHub public dataset

</comment><comment><USER55> Yet they are _still_ opposed to user freedom on computers. Microsoft hasn't changed.

<comment><USER56> Companies are rarely of a single mind. I like to believe some departments within it are less prone to self-reflection and still need a bit of nudging. In Microsoft's case, I think they went user analytics crazy in recent times and see it as a path to invest resources on. And in true corporation fashion, they are being a bit too heavy-handed with it.

</comment></comment><comment><USER57> Probably it's only a short term statistics.

<comment><USER48> Lies, damned lies, and statistics [0]

[0] [https://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statist...](https://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statistics)

</comment></comment><comment><USER58> Too little; Too late;

</comment><comment><USER59> GPL and Open Source are still a cancer purely from Business perspective especially on a short term perspective. This is exactly Steve Ballmer too, he is a business guy running a tech organization. He generated huge profits. Satya Nadella is a technical guy, who had seen the benefits of OSS tools, languages and platforms to know how they impact both the developer mindshare & long-term company perspective

</comment><comment> maze-le As long as key components like the official Microsoft NTFS implementation remain closed source, I see in this open source policy as a charade.

<comment><USER60> Thats a bit like saying, as long as Google keeps their search algorithm closed source, i see it as charade.

I'm happy that those companies open source more and more code. And Microsoft released some of their key technologies like .Net as open source. Personally i give them credit for that.

<comment> maze-le Nope, I don't think so. I don't demand Microsoft to open up the Windows sources or sources for MS-Office for that matter. They make money with these products and I understand the incentive to keep them closed. Alas NTFS is a filesystem, not the kernel of the OS. If Microsoft would recognize that there are other operating systems than Windows, and that it is valid that they operate with NTFS partitions, NTFS would be open.

Oh and yes, .NET is open source by now, btw. I think it's great too. And I am far less critical of Microsoft than 7-8 years ago. But opening .NET is also a strategic descision. In essence, it remains a Microsoft platform, and if more software for linux is written with .NET, good for Microsoft. If more software for windows is developed on linux machines with .NET, good for Microsoft. If more linux devs switch to windows, because of the better .NET integration, great for Microsoft. It's a win-win situation either way.

I'd love to see a development, that might be a net-loss[0] for Microsoft but a net-win for systems interoperability or the open source community.

[0]: Opening NTFS might not even be a net-loss...

</comment></comment></comment><comment><USER61> Good for them. I use exactly 0 lines of code from them. Seriously, who cares?

<comment><USER62> The majority of the working world.</comment></comment>


Ouya Kickstarter campaign ends with $8.6 million raised - <AUTHOR> http://www.theverge.com/2012/8/9/3229673/ouya-kickstarter-campaign-ends-with-8580359-raised

<comment><USER2> Hey App.net.. are you seeing this?</comment>


Show HN: Edit native mobile apps live without installing an SDK - <AUTHOR> https://apptimize.com/demo

<comment><USER2> Sounds interesting. Only problem is your site is quite difficult to use on a mobile.

Will bookmark and view later on a desktop though.

<comment><USER3> Thanks!

We just added detection logic for mobile browsers. Feel free to view this on a desktop for the best user experience!

</comment></comment><comment><USER4> This is pretty neat although kinda laggy for me. How are you doing the phone emulation?

<comment><USER5> Thanks! We've been working on this for a while.

We've considered a couple solutions to the lag; the most promising one we've come up with is to use a different framebuffer protocol. It wouldn't necessarily fix the lag, but we could probably be a little smarter about how we update regions to make it _feel_ smoother.

Regarding the phones: let's leave it at "chicanery." ;)

<comment><USER6> very cool - I think a service like this is definitely the future.

regarding the streaming, I'm founder/ceo of appetize.io. Take a look at our demo at [https://appetize.io/demo](https://appetize.io/demo) and lmk if you'd like to chat. Maybe there's something we can do together. john at appetize dot io

Cheers

</comment></comment></comment><comment><USER7> Wants an e-mail address before even showing me what's going on. No thanks.

</comment><comment><USER8> Doesn't work in Firefox 36.0 beta

</comment><comment><USER9> who's your target audience?</comment>


Show HN: DNS Whisperer – A DNS proxy for filtering out unwanted domains - <AUTHOR> https://github.com/apankrat/dnswhisperer <comment><USER2> Nice!

For anyone wondering, "why not just edit /etc/hosts on your router to redirect unwanted domains to localhost?," the advantage of DNS Whisperer is that instead of _redirecting_ unwanted domains, it actually responds with a NXDOMAIN (domain not found) error. If you just redirect the domains, all the advertising scripts will keep retrying to pull from localhost, instead of giving up immediately as in the case of NXDOMAIN.

</comment><comment><AUTHOR> This is a make-shift ad/tracker blocker for iPads and such. Very light and simple. It took just few hours to put together.

It still needs work to be a bit more configurable and robust, but it works surprisingly well as is, especially for the amount of effort it required.

Forks and patches are welcome and appreciated.</comment>


The Internet Is Broken, We Need a New One - <AUTHOR> https://www.zeit.de/kultur/2020-07/desinformation-peter-pomerantsev-social-media-regulation-democracy <comment><USER2> > We need a radically more transparent internet. We need to have the right to > know whether an online account is a bot or a genuine person, whether content > is organic or amplified by trolls. We need to know who is behind a "news" > site.

I agree with this, but I also can't help but think policies like this would result in much smaller and less commercially-driven internet. That's not necessarily a bad thing, but it wouldn't result in the type of economic growth that high-tech countries are relying upon now, which is ultimately why I don't think we'll ever see something like this happening.

There's just too much money being made by not disclosing human vs bot users to make these kinds of proposals a reality. The internet really is a commercial tool first and foremost, and there's way too much vested interest in jeopardizing that.

<comment><USER3> I think part of where we went wrong was allowing commercial activity on the Internet in the first place.

</comment></comment><comment><USER4> It's not broken. We nerds think it is because it's no longer just for nerds. It used to be a DnD party but now it's a keg party. The problem is we didn't set up guidelines when we had the chance. We made agile manifestos instead. How do we do make rules now? That's the new tech challenge.

<comment><USER5> It seems to me nerds came very late indeed to the "internet is broken" party. Most of us wanted to believe there was an "invisible hand" online, guiding the world to reason and brotherly love.

My perception is that the inflection points at which nerds soured have been political events: Edward Snowden, 2016 US Election, Brexit, Charlottesville, Myanmar, and Christchurch.

I don't see the common thread of these events pointing to a clash of nerds and jocks. It's just become an exercise in cognitive dissonance to preach "Singularity" gospel, while the world outside looks increasingly dystopian.

<comment><USER4> Good point. Yeah I don't think it's a clash of nerds v jocks - more of a shift from a small party to one where everybody and their friend shows up.

</comment></comment></comment><comment><USER6> [https://www.elastos.org/](https://www.elastos.org/)

</comment><comment><USER7> Eure Zeit ist abgelaufen, ein müder Haufen Mietmäuler den keiner mehr Mieten will.

Chill!

</comment><comment> Chiba-City First, eliminate advertising. Next, eliminate anonymity. Next, focus on teaching things that can be taught. For one example, the old (pre .com) comp.lang Usenet forums were fantastic. For another example, Consumer Reports is a blissfully dull but useful publication. B2B commerce at least comes with contracts and credible threats of legal retaliation. Broadcast consumer marketing is fully toxic.

<comment><USER8> Jawohl, mein Kommandant

<comment><USER9> Could you please stop posting unsubstantive comments to Hacker News? You've been doing it a lot and we ban that sort of account.

<comment><USER8> a terse comment isn't necessarily unsubstantive. the obvious subtext is that they are proposing authoritarianism

goodbye

</comment></comment></comment></comment><comment><USER10> Does the article talk about German news websites that insist on tracking and ads?

Ah luckily their "paywall" still doesn't mess with private browsing.</comment>


Slogans trigger resistance, Logos don't - <AUTHOR> http://languagelog.ldc.upenn.edu/nll/?p=3336 <comment><USER2> A slightly different interpretation is that slogans that aren't fully true trigger cognitive dissonance, which in turn triggers distrust.

For example: "Save Money. Live Better." It isn't obviously true that living better follows saving money -- perhaps the money is better spent for a premium product. Yet the logo, essentially big text that says "Walmart," is very obviously true: It's a big store called Walmart.

Logos generally don't make a statement and there's nothing to disagree with. So when you're shown a logo, you're free to draw on your own interpretation of the brand, but when your shown a slogan, you often experience this dissonance, which manifests as distrust.* Similarly, even the word "slogan" is enough to trigger this distrust, since you've been lied to so frequently in the past. I'd be curious how the effect differs from a true slogan, like "we are farmers," vs an untrue one like "the ultimate driving machine."

*Note that the above is essentially "The Law of Candor," from the classic book, The 22 Immutable Laws of Marketing by Al Reis and Jack Trout.

</comment><comment><USER3> That reminds me how Ogilvy wrote in Confessions of an ad man - how his copywriting style was more successful (sales-wise) than others even though his copy was lengthier and more descriptive than others'.

</comment><comment><USER4> ♥

v.

I love you.</comment>