What It's Like To Be Ridiculed For Open Sourcing A Project - <AUTHOR> http://harthur.wordpress.com/2013/01/24/771/ <comment><USER2> What the fuck. (And I rarely say that word.)

We've got to grow up. This is 9th grade all over again. You know, those weird people that do things that you don't understand? They're the ones that grow up and make big impacts on the world.

Why can't we get over our negativity? We can't stop ourselves from thinking horrible things, or even saying them out loud to people around us, but surely we can restrain ourselves from publicly humiliating someone in front of thousands (or more) people. And for what purpose? To say "funny" things like "our eyes are bleeding!". Seriously?

I really will never understand why people can't simply be more positive. If I ever start a company the #1 thing I will look for in others is positivity. I wouldn't stand for this crap.

<comment><USER3> I wouldn't be at all surprised if there was a strong undercurrent of misogyny involved here, motivating their incivility and rudeness.

<comment><USER4> I don't want to be the one to say it, but it hasn't yet been mentioned in this thread.

If the author was named Henry instead of Heather, this wouldn't make front page or have a comment thread full of white knights.

That doesn't make the critics right in their aggressiveness, and people overall should be nicer.

<comment><USER5> You have absolutely no way of knowing that this post would not make the front page if the 'H' was for Henry.

That sentiment is a huge pet peeve of mine. Forget the gender of harthur, and look at what's left: someone writes a tool that's useful for them, and thought it would be useful for others (and, based on other comments, clearly it's agreed that it is for some). At least three people publicly take a shit all over said tool because, you know, lolol. Those three people have now been called out, and rightly so.

I don't think those three have been called out because Heather is a woman. I think they've been called out because others can see themselves in Heather's place. I know if I published something I wrote, just a small convenient script I had lying around, I wouldn't feel too good to see it attacked in public. Genuine sympathy can be extended to anyone.

</comment></comment></comment></comment><comment><USER6> _Then I see these people's follower count, and I sob harder. I can't help but think of potential future employers that are no longer potential._

There's a big responsibility that comes with being well-liked and nice. When someone with a good reputation and the means to broadcast it speaks negatively about someone, it matters much more than someone who is routinely rude, frequently negative, or unknown. I know that if the most well-liked and nice person in my lab were to criticize my ability as a scientist (in the same manner), I would worry about what everyone else thought about me now, that someone who never seems to say mean things would so something like that.

These individuals do good things: they contribute voluntarily to communities, they help high school kids learn to code, etc. And these individuals are visible. And if you search steveklabnik on HN, his comments don't seem mean or negative.

It's easy to forget, and it's a little paradoxical, but when you're really nice, there's a different standard. Perhaps there shouldn't be, but it does have a different impact.

<comment><USER7> Fair point. Once I read the names of those involved, I was a little taken aback for this very reason. Friends I respect think quite highly of Corey, for instance.

Also worth noting, both [Steve and Corey] have published apologies on their own blogs. Both are worth reading.

<comment><USER8> Here's David Cramer's notpology: [http://justcramer.com/2013/01/24/being- wrong-on-the-internet...](http://justcramer.com/2013/01/24/being-wrong-on-the- internet/)

<comment><USER9> This is bound to be an unpopular opinion, but why exactly does anyone have to apologize? He's absolutely right. Criticism comes from every corner, especially in the software world.

Your code stands for itself. Simple as that.

And I tell this to almost every programmer I work with at some point or another. If they have an emotional response to a code review, or criticism of any kind—"Code is never personal. Whatever I say about your code has nothing to do with you. All I want is for us to improve this together, and we do that by exchanging ideas."

Criticisms are _never_ directed at people, they are _never_ intended to be personal attacks—they are simply evaluations of quality, and we're all trying to achieve higher quality. When you put code out there, you open it up to _response._ If people decide that it's good, then great; if people decide that it's bad, then great! You have an opportunity to improve it. That is a _godsend._ It's a million times better than if you received no feedback at all.

Male, female, good coder, bad coder, I don't care who you are: if you go sob in a corner because you receive criticism, then you're not going to improve. You have to join the discussion like an adult. Cramer may have an asshole opinion here, but sometimes assholes are right. Sometimes the world is harsh, but through adversity we can become better. Deal with it.

* Update: Well, I've read up more. These criticisms were not the productive kind, and were tactless and mean. I stand by what I said, but the people in question didn't criticize right, and they deserve the vitriol being directed at them. Shame.

<comment><USER10> > _Code is never personal. Whatever I say about your code has nothing to do > with you._

I've heard this repeated ad nauseum (not just in this thread) and I think it's total crap. You cannot tell me that if you spend dozens of hours writing something then someone comes along and goes line by line telling you how what you wrote is an abomination that you're not going to have an emotional response.

If that's the case it has to go the other way as well. Just finish writing a new process that will save the company $30k a month? Doesn't matter. If your code doesn't have anything to do with you then it's not an accomplishment to write good code (I don't believe this).

Just to be clear, I _do_ think code is personal but I _do_ think people should welcome any constructive feedback, particularly the negative. Yes I feel a twinge in my ego any time someone criticizes my code, even minor stuff; but guess what? When they look at it next time they won't be able to make the same criticism, because I will have fixed it.

<comment><USER11> Of course the code we write is deeply personal. I think that what he means, however, is that the _criticism_ of code he gives is based solely on the code itself, and doesn't contain any inherent bias based on the author. He's saying "this code is crap" because of objective reasons that he (in theory) holds himself and others to as well, not because he thinks the author is a bad programmer.

<comment><USER12> People just don't work that way; at least, I don't.

Who reads code without thinking of the author? When I'm derailed by a bug in some library I'm depending on, or see code that works in a way I find unintuitive, clunky, etc., I absolutely think judgmentally about the person who wrote it.

When I'm reading someone else's code and find a solution that's significantly more elegant than I was imagining, I'm impressed by the person's accomplishment, and they basically get points in my head. If I meet them in person I'll quite possibly shake their hand a bit more warmly.

This is normal and natural, and I have to consciously _counter-balance_ that with the _learned_ (but not instinctive...) knowledge that I've written bad code myself, released buggy or clunky code, taken questionable shortcuts, etc..

When I'm in a position to criticize someone else's code (and it's part of my job to do it sometimes!) I usually rewrite my feedback a few times (and sometimes decide it's not needed at all) before writing or speaking to the developer, because it takes a lot of conscious thought to modify my instinctive response into something more fair and effective based on what I've learned over the years.

That's my experience.

Does everyone else actually think that differently?

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> > _Steve Klabnik @steveklabnik_

> _@harthvader @zeeg nothing's _wrong_ with it, but I don't want to build my > app on top of others' code who are at this level of understanding_

This message [1] in particular is absolutely disgusting. Someone hacked together a script that met their needs, and threw it up onto GitHub in case anyone else found it useful? Yes, let's take the opportunity to condescendingly insult their mental competency.

What does he even mean by saying that he doesn't "want to build my app" on top of harthur's code? Nobody asked him to; steveklabnik himself made the original post, taking the opportunity to show off this smug sense of superiority.

[1] <https://twitter.com/harthvader/status/293829635823792128>

<comment><USER14> Here's the thing, when someone like Linus Torvald says things like that, we applaud him for it.

<comment><USER15> I'm not sure if that's the same thing. Linus usually criticizes things in a way that actually points out the flaws. This guy is just essentially saying "LOL U SUCK"

<comment><USER16> LOL U SUCK. Kidding, though some of the threads I read involving C++/C with Linus involved are so childish they are actually entertaining.

Example: [http://article.gmane.org/gmane.comp.version- control.git/5791...](http://article.gmane.org/gmane.comp.version- control.git/57918)

<comment><USER17> "Some of the threads"

 _goes ahead and provides one link everybody here has read by now_

 _does see or mention context_

</comment></comment></comment></comment></comment><comment><USER18> Heather, I agree that people are unnecessarily rude to you. Don't sob. Your code shows you are already a more capable programmer than most of the ones I interview. No one has given you a clear answer as to why your code is reinventing the wheel, so allow me to do it politely. I took every single example from your README, and show you below how everything can be reimplemented with sed -r (nice extended regex syntax, mostly like js regexs), and find/xargs:

      replace 'var' 'let' *
      sed -ri 's,var,let,g' *

      replace 'var' 'let' . -r
      find . -type f -print0 | xargs -0 sed -ri 's,var,let,g'

      replace 'var' 'let' test/file1.js test/file2.js
      sed -ri 's,var,let,g' test/file1.js test/file2.js

      replace '(\w+)_(\w+)' '$1-$2' *
      sed -ri 's,(\w+)_(\w+),\1-\2,g' *

      replace 'var' 'let' . -r --include="*.js"
      find . -type f -name '*.js' -print0 | xargs -0 sed -ri 's,var,let,g'

      replace 'var' 'let' . -r --exclude="*.min.js,*.py"
      find . -type f ! -name '*.min.js' ! -name '*.py' -print0 | xargs -0 sed -ri 's,var,let,g'

      replace 'var' 'let' . -r --preview
      find . -type f -exec sh -c "echo == {}; sed -r 's,var,let,g' {}" \;
      (not sure if --preview does exactly that, I echo the filename followed by the modified content)

There is only one case that justifies reimplementing things: if your tool has the requirement of supporting the _exact_ js regex syntax, then yes you did the right thing to reimplement this in js. I have run into similar situations myself. One time I had to support Perl regexs, and I started by simply using Python's standard regex module, thinking that it would work because both Perl and Python use PCRE. Well as it turned out the regexs I encountered used some advanced features (such as negative/postive look-behind/look-ahead, etc) that Python's regex module plainly did not suppport. So I ended up rewriting part of my implementation in Perl.

Edit: I spoke too fast. As a commenter pointed out, other legitimate cases for reimplementing this in js would be when you can't afford to or don't want to fork a process to run find/xargs/sed. It sounds like you were running the tool from the command line, so I didn't think that would be your situation.

Edit 2: Yes, the exercise of reinventing the wheel is also useful for learning... I am not going to argue that.

Edit 3: If you care about _simplicity_ , I would personally rather write a small shell script wrapping find/xargs/sed and hiding their arcane options, as opposed to writing 173 lines of js.

<comment><USER19> I've been coding since 1993 and I have never made room in my brain for stuff like -print0.

Moreover, there are times when you'll want to do this stuff from within another program. What are you going to do, shell out to a find(1) pipeline? Then people like _me_ will be giving you shit.

There's nothing wrong with rewriting sed in Javascript.

<comment><USER20> I looked up what print0 does as I use find and xargs a lot.

Here's what print0 does - it separates the filenames with a null byte so that names containing spaces and newlines can be interpreted correctly.

Hopefully someone else will find it useful.

<comment><USER21> The TL;DR of -print0 is just to make sure _find_ works with all kind of weird filenames.

</comment></comment></comment></comment><comment><USER22> Funny how @coreyhaines has made hugboard.com ("giving the gift of encouragement"), @steveklabnik is a maintainer of hacketyhack, a tool for learning how to program.

"Hackety Hack will teach you the absolute basics of programming from the ground up. No previous programming experience is needed!"

And while you're busy learning the basics, we'll just wait until you release something so we can publicly ridicule you on Twitter because you did something we don't approve of. Hurrah!

<comment><USER23> hah, that's just pure irony

</comment></comment><comment><USER24> I get a fair amount of ridicule any time anything I write makes it into sites like reddit, and a small amount (depending on topic) when it makes it onto HN. When one of my posts hit the front page yesterday, I decided to re-read "How to Disagree": <http://www.paulgraham.com/disagree.html>

Having done that, I can now just privately laugh at anyone who fails to come up with an adequate refutation of my central point. People who just say things like "this is crap" can be prodded like "okay, maybe it is, but you didn't say how", and then when they fail to come up with how, you know where they are functioning.

It looks like she did exactly this (asked them to explain it) on Twitter, and got the same sort of "it just sucks" reply. Eventually, you can get to a point where they can be safely ignored or even used for your own personal entertainment.

One sent to me on HN: "What an asshole. Chromium's code is there for review, you know."

I said in reply: "Thanks! Comments like this mean I'm on the right track."

Yeah, it's stupid that you have to suffer before you can get to this point, but it's not like we're talking about an industry which defaults to caring for others.

...

Regarding the actual program, I don't write shell utilities in JavaScript so I can't say whether it's a good or a bad implementation. It's just not my space. It's not something I seem to need (since I tend to abuse perl to do such work), so I can't comment on the overall utility, either.

<comment><USER25>
      > Regarding the actual program, I don't write shell
      > utilities in JavaScript so I can't say whether it's a
      > good or a bad implementation. It's just not my space.

According to some other posts here, the quoted mockers are Ruby programmers. I believe the Twitter posts are about the concept of writing sed in Node- Javascript, not necessarily the implementation. As I understand it there's something of a rivalry between the Ruby and Node communities, and the Ruby community is known to be tolerant of boorish behavior.

<comment><USER26> So there is some truth to the stereotype of the angry asshole Rubyist?

I thought the community had moved on since those days. I've been tossing up whether to learn Ruby or Clojure next, and this kind of crap is a real turn- off for Ruby.

<comment><USER27> Do Clojure. Ruby suffers from a number of serious basic errors in its design. I'm in the middle of the long task of writing a clear, substantive criticism of them, but why they were bad choices is quite subtle, though it has large implications. That and Ruby has a culture of little or no documentation, even of the standard library, no attempt at consistency in APIs, even for something as basic as different kinds of network socket, and a community with rather more noise and rather less experience than makes me comfortable.

</comment></comment></comment></comment><comment><USER28> I was pretty appalled when I first saw those tweets. I held my tongue at the time (after all, who am I?) but as a member of the Rails community, seeing this sort of behaviour from community leaders is frustrating and kind of embarrassing, and I do think it needs calling out when it happens. I'm finding Twitter has become more and more depressing lately with similar incidents.

I don't know much of Dave or any others who stuck the boot in, but Steve and Corey are both involved in educational endeavours and should know better. Steve also recently railed against the idea that "you are not your code" (<https://twitter.com/steveklabnik/status/279399353729286145>) which makes his jab even more insulting.

I've often wondered why concepts such as MINSWAN even exist, but it seems some people actually have to be reminded to be nice.

If they haven't already, they definitely owe you an apology.

</comment><comment><USER29> Maybe before we spend a lot of time complaining about how federal prosecutors are unsympathetic assholes, we should start by examining our own community.

<comment><USER30> Death, prison, and felony convictions are not the same as public ridicule and hurt feelings. Only a nazi would equate such things. What?

<comment><USER31> HN's collective reading comprehension seems to have dipped lately. Fortunately, pg is usually concise enough that we can use this as an exercise:

"Maybe before..."

"before" merely implies order. It does not mean "instead of". It means, "this first, _then_ that."

"...federal prosecutors are unsympathetic assholes..."

The subject here is not jail sentences or felony convictions or legal antics. The subject here is _sympathy_. For example, a statement made on HN which would fit pg's subject is, "federal prosecutors had no sympathy for...".

"...we should start by examining our own community."

The implication here is that our own community is also often unsympathetic and full of assholish behavior.

pg was not comparing public ridicule and hurt feelings to death, prison, or felony convictions. He was only suggesting that one of the complaints here over Aaron's case has been that the prosecutors were "unsympathetic", even though our own community is also unsympathetic.

I have no idea how you could have misinterpreted a single statement of 24 words that badly.

<comment><USER30> I was mainly making a joke, but the content of the statement was a problem. Let's consider the relative merits and priorities of "spending time complaining about federal prosecutors" vs. "examining our own community". The former is about trying to change our society to make it more just, the latter is aimless introspection.

The comment was a bit of a troll and not insightful so I trolled back. If this were not pg's website, I am certain you wouldn't be defending the statement because it lacks substance.

<comment><USER31> > _The former is about trying to change our society to make it more just, the > latter is aimless introspection._

On the contrary, the former is something we probably won't change [1], while the latter is almost certainly something we can change.

> _The comment was a bit of a troll and not insightful so I trolled back. If > this were not pg's website, I am certain you wouldn't be defending the > statement because it lacks substance._

I seriously doubt he was trolling, and you shouldn't be so certain. This being pg's site is completely irrelevant in this case [2]; I'm simply ... actually, disgusted is about the best adjective I can think of to describe how I feel about the nonsense arguments on HN lately. People seem to be in some kind of a hurry to disagree, because they aren't actually _reading_ and _comprehending_ what other people are writing, they aren't stopping for a moment to consider that perhaps the person they're responding to _isn't_ an idiot or a troll, they aren't maintaining basic principles of civility, they're commenting on (and arguing about!) subjects that are way outside their expertise, and they seem to be nearly drooling at the chance to engage in a witch hunt.

For example, _nothing_ in my reply was a defense of pg's statement. Nothing. Not a single word. The entirety of my reply was a tutorial on high school level reading comprehension and a snide remark about HN (well, and a question about you). So, how is it that you interpreted that as a defense of his statement?

\--

[1]: I may yet be pleasantly surprised. I certainly wouldn't've guessed at how much press the Aaron Swartz case would end up getting, and there is some small chance now that it might end up causing some kind of change somewhere. That would be great. As of yet though, it has changed absolutely nothing.

[2]: Assuming of course that you don't find it significant that the founder of one of the programming communities on the internet is indicting the community's behavior -- although it's not clear if he's referring to the HN community or the broader programming or technical community.

<comment><USER30> > The entirety of my reply was a tutorial on high school level reading > comprehension and a snide remark about HN (well, and a question about you)

Maybe before you spend a lot of time complaining about how other people comment, you should start by focusing on making a positive contribution yourself.

</comment></comment></comment></comment></comment></comment><comment><USER32> I don't really see the problem. I never remember sed syntax and instead just use perl -e. It follows that someone may want to use JavaScript instead though I would personally avoid JavaScript at nearly any cost.

As for haters on the Internet, yeah, welcome to the Internet. If you do something, chances are someone hates you. Why? They are jealous that you are getting attention instead of them. They could write a better version of grep, but are too unmotiviated, lazy, or dumb. So instead they trash your version. Attention flows back to them, they look smart in front of their friends, and ???, profit! You don't have to play a part in their fantasy, though. Just ignore them and let them bask in the idiocy of their idiot friends.

Or, if they have actionable feedback ("line 34 is indented wrong"), fix it and send them a thank you. Investing any more thought than one of those options, though, is a waste of time and mental energy.

<comment><USER33> the worst bit is that a lot of the ridicule seems motivated by the fact that it's fashionable to hate on node.js. this tweet as much as admitted it: <https://twitter.com/steveklabnik/status/293831920872194050>

<comment><USER34> Isn't it (scientifically documented) that if (a software project) A is threatened by B then supporters of A start to bash on developers and users of B? Because that's what I see here. node.js is very much a competitor to rails, and Steve Klabnik is very close to rails.

<comment><USER35> Agreed. I wrote this blog post:

[http://paulbjensen.co.uk/posts/2012/07/11/thoughts-on- rails-...](http://paulbjensen.co.uk/posts/2012/07/11/thoughts-on-rails-node- and-the-web-apps-of-today)

Then Tony Arcieri wrote this rebuttal:

[http://www.unlimitednovelty.com/2012/08/debunking-nodejs- gis...](http://www.unlimitednovelty.com/2012/08/debunking-nodejs-gish- gallop.html)

He made some good points in his post, but the snarkiness was in my opinion a bit uncalled for. Being labelled a Rails Enthusiast when I had worked with Rails for over 4 years (2007-2011), 2 of those at New Bamboo (a big Rails agency in the UK) was cheap.

I then tried to deduce why he was so rude, so I looked through some of his older blog posts, and found this:

[http://www.unlimitednovelty.com/2012/03/why-critics-of- rails...](http://www.unlimitednovelty.com/2012/03/why-critics-of-rails-have- it-all-wrong.html)

but then this tweet summed it all up:

<http://twitter.com/bascule/status/274281490437767168>

The issue I see here is that there are some in the Ruby community who hate Node, but who then extend that hatred of Node to being rude to people involved with Node.js. Tony has been rude in the past to both Substack and Isaac Schlueter (major figures in the Node community) over Twitter. I can only reason that the rudeness towards Substack was because he made this comment on his blog post: [http://www.unlimitednovelty.com/2012/08/debunking-nodejs- gis...](http://www.unlimitednovelty.com/2012/08/debunking-nodejs-gish- gallop.html?showComment=1344730626043#c3236470474430472062).

As for his replies with Isaac, see this: <http://twitter.com/bascule/status/281932459719921664>

I'd like to say it stops there, but it doesn't. I actually had someone email me because Tony had been rude to them on Twitter because he compared npm to Rubygems. Can you believe that?

Tony is a smart guy, he's written some really awesome software, but when it comes to Node, he is a troll.

As for Steve, he hates Node, but I don't think that he intends to be rude to Node.js people. When I posted this on Twitter:

<http://twitter.com/paulbjensen/status/271691672348409856>

followed by this:

<http://twitter.com/paulbjensen/status/271733415580164096>

and this:

<http://twitter.com/paulbjensen/status/271734483538018304>

Steve Klabnik followed up later on with this:

<http://twitter.com/steveklabnik/status/271749289154330625>

Compare that to this:

<http://news.ycombinator.com/item?id=5018201>

Both Steve Klabnik and Tom Dale retweeted that HN comment. So where Steve might hate on Node, he doesn't hate on people who like Node.js, or have expressed a preference for it (otherwise he would probably have not linked to my post).

I know I'm not the best person to say this, but I wish that this could be the end of animosity between the Ruby/Rails and Node.js communities.

<comment><USER36> It's shocking the historical parallels between Node vs Rails and Rails vs Java. You'd think given the history of Rails that its practitioners (me being one for 7 years) would be more careful about dismissing a new technology for not being as "mature" and that you can "do all the same stuff" in Ruby.

I mean lets be honest: there is no outright revolution in Node anymore than Rails was a revolution, rather it's a matter of bringing useful ideas to the table in a convenient package. Node has particular strengths that Ruby does poorly, and we need to be intellectually honest about that rather than contorting ourselves to find ways to justify why ruby is always >=.

A lot of this animosity seems to come from a passion for the craft and subconscious fear of perhaps not using the best tool, and thus a need to justify to oneself why another tool is inferior. However if you look dispassionately, most of these conclusions are reached from highly asymmetrical knowledge and experience, and often rest on matters of taste. The hatred of Javascript for instance, is largely a matter of taste since its prototypal inheritance gives it a similar dynamic power to Ruby, just slightly uglier.

All that said, your original post also seems to come ever so slightly from a defensive position. Some arguments don't seem well argued, like why you thinks Rails is not good for APIs and heavy JS front-end (Rails has never been great with its Javascript, but it also mostly does the right thing to stay out of your way).

In any case though, I think we all have a tendency to overthink this stuff (me included). If the goal is to do good work, I think 1% of your time should be spent looking at new ideas and latching onto interesting new things, and 99% should be spent actually executing the craft.

<comment><USER37> I hope Node can keep it's frontier attitude up. Rails and Rake have been very homogenizing boring exercises in top-down fascism. So much of Node's spirit is in tiny modules, in the freedom and ability to hack up and try new things, to always be inventing: it's cost to create are low, the assumed body of knowledge one has to bring into a new project are tiny, the conventions are borderline non existent, and that's all a huge boon for staving off fascist boring mundane dead-end consensus. Keep iterating, stave off the little death, don't become your entrenched patterns.

<comment><USER36> The frontier is _always_ settled.

</comment></comment></comment></comment></comment></comment></comment><comment><USER38> "Most of being nice, in a software context, is about being considerate. Not unnecessarily trash talking other people's stuff. Not going out of your way to be a jerk. Try to be helpful. Treat others how you want to be treated" - [http://blog.steveklabnik.com/posts/2011-08-19-matz-is- nice-s...](http://blog.steveklabnik.com/posts/2011-08-19-matz-is-nice-so-we- are-nice)

What can I say?

<comment><USER39> The irony, it burns. I have a feeling there is an apology incoming. Everyone screws up and most people will poke some fun at some point. Seems like one of those off instances for him.

</comment></comment><comment><USER40> There exist two types of people:

1\. "Hur hur, sed piped with other tools already does this, you loser, why did you waste your time?"

2\. "Cool, a different take on sed written in Javascript. They've written some basic doco and made a npm package, I might try it."

Ignore #1 online and in-person, be friends with #2.

People who adhere to type 1 behaviour are alien to me. I fundamentally don't understand what their motivation is to respond with such harsh criticism. You've liberated some close source, personal tool, into the public domain. There's some group of people, perhaps in the long-tail, that will use this tool, or learn from the source code. Clearly people have expressed interest in the tool (74 stars and 5 forks).

Again, ignore #1, friend #2.

<comment><USER41> I think you've excluded the middle here, (#1.5 perhaps) one who thinks that your code is worthless/dangerous and does __not __call you a loser.

It can be true that a piece of software is a poor replacement for an existing tool.

It can be true that recommending it as a replacement for that tool is dangerous.

You can make these judgements about a piece of software without an incident like this happening. What's important here, is how you behave once you've made these judgements.

<comment><USER42> > It can be true that recommending it as a replacement for that tool is > dangerous.

Unless you're suggesting that NASA rewrite its rocket guidance subroutines in a brand-new interpreted language or something, it's probably not unequivocally "dangerous." (In that case, I would call the suggester a different word than "loser".) That's the whole point of open-source software: everyone can make their own judgments about what works better for them.

In the specific case of `replace`, if I want to know exactly what the command- line options do, exactly what order the files are being modified in, I can glance over 173 lines of javascript rather than search through the 4.3MB (uncompressed) of the sed source code. Sure, I suppose I'd have to include the Node.js source code to make it a fair comparison, but my point remains: choose the solution that makes the most sense to you.

</comment></comment></comment><comment><USER43> First up a clickable link to the project: <https://github.com/harthur/replace>

\---

When I see a project that reinvents the wheel I tend to think that the author needed a very particular wheel and decided to start with first principles. And even if it seems useless to me - open sourcing it lets me see how this wheel was created, and maybe learn something from it.

And of course sometimes someone reinvents `grep` as brilliantly as `ack` and I end up using it every day.

</comment><comment><USER44> This is pretty cringeworthy. I know probably everyone has made an offhanded jab about someone else's software (I know I have) - but in these days of twitter and real-time notifications, we have to remember that the real person behind something is often just a tweet away.

I'll try to keep this in mind next time I take to twitter to unleash 140 characters on rage on something that someone has made and cares about.

</comment><comment><USER45> I've been following 2 of the 3 guys in that twitter conversation for several years. The first thing I can say is that they both are big parts of the ruby community and generally represent it well.

With that said, this exchange really upsets me. I've noticed that there is definitely a sense of elitism among the guys that speak at many of the ruby conferences. I think a situation like this is simply a case of them forgetting that Twitter is public and that their personal message board isn't so personal after all.

Guys, this is bullying and it's fucking pathetic. It's not the first time, but it needs to be the last. I've at least seen Cory talk and the guy is definitely one of the good guys, but this puts him in really bad light. How much more effort would it have been to post a defect to the github account and informing of the issues?

<comment><USER46> And when you say that they are part of the Ruby community, it's sad, but I said to myself - why doesn't that surprise me. It's said that the community behind a really useful language has that type of reputation.

To tell you the truth, it's part of why I moved to python.

<comment><USER47> I take it you haven't seen @zeeg's tweets on the subject, then: <https://twitter.com/zeeg>

Sorry to disillusion you about the Python community.

Personally, part of the reason I stopped using Python heavily professionally in 2007 is because I was sick of hearing and reading Python web developers regularly disparage Ruby and the "Ruby community," a tradition carried on in comments like yours to this day.

<comment><USER48> Are you suggesting I was talking bad about the Ruby community?

I openly dislike Ruby (as a language), but I swear this project was written in Node, which I also dislike.

Oh, and I could care less __which __language something is written in, my simple, trollish tweet, was only based on the usability aspect.

<comment><USER49> Yeah, about trollish tweets... you might offend someone.

</comment></comment></comment></comment></comment><comment><USER50> Many people here seem to be commenting on the quality of the code in question - they are clearly missing the point.

Others are offering advice on how to deal with negative criticism on the Internet. They, too, miss the point. The point of this post isn't to complain "people trashed my work and now I feel bad, make me feel better", it's a call to action - "as a community, we should be better than this". Of course there will always be trolls and negative comments on the Internet. Instead of just preparing ourselves to deal with them, we need to be proactive about creating a community where everyone feels welcome to share what they're working on, even novices who don't write perfect code. (my previous thoughts on the matter: <http://news.ycombinator.com/item?id=4700490> )

<comment><USER25>
      > Of course there will always be trolls and negative
      > comments on the Internet. Instead of just preparing
      > ourselves to deal with them, we need to be proactive
      > about creating a community where everyone feels welcome
      > to share what they're working on

"Instead of"?

Attempts to reduce the number of undesirable comments or people in a community are commendable, but do not let yourself become confused about how well they work. Washing hands is no substitute for vaccination; if you want to grow a better community, then its members need to be trained both in how to avoid giving offense _and_ how to avoid taking it.

</comment></comment><comment><USER51> This is pretty awful. Steve and Corey are both well-known in the Ruby community.

Steve is an instructor at gSchool in Denver, for example, which trains software engineers. It's bad enough that they're both respected in the community, but being a student is a vulnerable position. If Steve were my teacher and he reacted that way to a project I released, I'd be absolutely humiliated.

<http://www.gschool.it/#instructors>

I don't think encouraging participation in open source and being a good teacher are that different. A more productive response would've been to submit some issues or pull requests to Heather's project.

</comment><comment><USER52> Steve Klabnik runs Hackety Hack (<http://hackety.com/>) which is supposed to encourage and teach new programmers, but this is the shit he says to other developers in the wild?

Nice.

</comment><comment><USER53> For years I have been terrified about putting my code on Github for fear of rage and retribution from the programmer community. This is a real problem for us amateur coders who enjoy hacking but don't necessarily have the chops to go head-to-head with the serious guys.

<comment><USER54> Likewise. I finally gathered the courage to start open sourcing code recently, I figure that if the code I'm writing _is_ shit then it's going to be shit whether it's on my hard drive or on github and the advantages of having code out there are worth the potential ridicule... but still I find myself prefacing everything with a disclaimer, "I was tired when I wrote this" or "This isn't the best code" just to give myself a get out if someone does decide to tear apart the quality of my code.

<comment><USER55> A completely agree here. Even though I get complimented at work about code quality, I just feel like the open source community is somehow "more serious". Like, what if I'm doing this whole coding thing completely wrong?

</comment></comment></comment><comment> ryan-allen I kind of expect more from Corey Haines, he's supposed to have a reasonable reputation according to people I know and trust. I'm supposed to be going to one of his 'Code Retreats' in Melbourne this year. I hope I don't get made fun of!

Good code seems to be whatever the majority of nodding heads agree upon, and rarely that is merit based. It seems to me that unfortunately most of the nodding heads are people who act like this.

I've been ridiculed for my code by people like this, even in situations whereby I've been trying to help solve their annoying problem (and in fact, did help solve their problem). What did I get back? Mostly condescension & ridicule, and no credit.

Anyway, if anyone wonders why valuable people run screaming from the software industry, it's people acting like this.

<comment><USER56> Why would you go to his code retreat? Seriously? I am stumped.

As far as I can tell he is just some guy who has engineered a healthy social media profile / following, and goes around beating his drum. Basically an agile-coach charlatan.

I suspect it is very likely you already know just as much, if not more, about software development.

</comment></comment><comment><USER57> To quote Mark Twain: "Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great."

</comment><comment><USER58> At some point during my teenage years, my dad gave me the one of the most useful pieces of advice I've ever gotten: "the world is full of assholes, don't let 'em get you down, but don't put up with 'em, either."

Or, in this case, don't work with them, or recommend that anyone you know work with them, because while the world is indeed full of assholes, it's also full of enough awesome people that you should never have to put up with the assholes.

<comment><USER59> That's similar advice to my favorite of Murphy's laws,

"There is always one more arsehole then you counted on."

</comment></comment><comment><USER60> I was about to contribute to an OSS project run by one of the people making fun of the OP. Not anymore. I will not work with people who set out to humiliate others on "code quality" (whatever the fuck that means).

<comment><USER61> Does this make sense? Are there other many people that use that project? Does your contribution to it signify an endorsement of its maintainer? Have you already written the code? Is it fair to the other users of this project that you're withholding a contribution because of an idiotic remark by its maintainer? Would it be preferable to fork the project so that the maintainer can be somebody else? What if you create your own fork with your contribution and publish it? What if the other person who made fun of OP then merges your changes back into the original codebase?

I can't tell if this is an attempt at activism or an excuse to avoid doing something.

<comment><USER60> Here is why:

Ever since the passing of Mr. Swartz my stance has changed. I've realized that e-bullying is real and can have a negative impact on a person. Who knows in what kind of emotional condition can the person being bullied is? I'm not saying that this could drive someone to do something tragic. But it could push them further down. And I will not work or contribute with people who do that.

The person was bullied. I will not work with bullies. Open source or not.

</comment></comment></comment><comment><USER62> Frankly, I think by now I've sort of got used to it. Its not just the case with Open source projects, This happens _everywhere_. I've been facing these sort of problems since I was a kid. Be the first guy to build a model from clay, or the one to write an essay, or the one to participate in the science exhibition. Nearly everyone will first find ways to crap on your work than find something positive about it.

After all these years, I just feel these are just ways a guy who doesn't work find a way to justify his inaction. Just make others work look bad, and then you can just go back relax and do nothing. Make your inaction look better than than the guys action.

People just don't get _90% of all success is just showing up_ thingy. Now coming to this project, a guy on twitter as shown on the blog says 'Ever wanted to make sed or grep worse?'- Oh! What does this guy think? Sed and grep are the best designed tools out there? Heck learning sed is a nightmare- the language is so terse it may take you months to make any significant headway learning it. There are like dozens of special cases you have to learn and handle.

Then why does sed win? It wins because the tool occupies space where there is no, or little competition. Sed shows up!!!

Everytime you see somebody produce a piece of work which is helpful in solving a problem think about why you couldn't have been the guy who could have done that, instead of finding ways to justify why you aren't have the guy who did that.

At the end, only ones who don't get laughed at are the ones who do nothing.

</comment><comment><USER27> More important: why are you listening to what anyone on Twitter says? For that matter, why are you listening to what anyone on Hacker News says (assuming you read this)?

Personally, I have no idea what anyone might have said about any of my code on github on Twitter, blogs, or otherwise. No, scratch that, I remember a terrifying moment when I realized the link in a sentence along the lines of "who says Haskell isn't ready for the real world?" pointing to my serial port library in that language. Anyway, that's beside the point.

You should have a short list of people whose opinion matters. Hint: your family, a set of people whose character and abilities you respect, and anyone who has direct power over you (though if the third isn't a subset of the second, you might want to work on that, too). Random people on the Internet don't count, no matter how famous they may be in their sandbox.

</comment><comment><USER63> It's bullying, plain and simple. There is no excuse for this kind of behavior, nor can I respect anyone who engages in it.

Even now I feel my blood boiling...

</comment><comment><USER64> Which is funny because the guy pictured, Steve Kablink, has this sentence on his about me page:

 _> Most of my software development work is in teaching these days. I run classes with Jumpstart Lab, and make Hackety Hack_

You'd think a "teacher" wouldn't act like this - but so arrogance goes.

With open source - your complaints are worth zero which is the exact same price you paid for the software.

Help others with pull requests/contributions - or shut the hell up.

</comment><comment><USER65> Others have linked to this, but, as one of the people who was in the bad, I want to say I'm sorry. <http://programmingtour.blogspot.com/2013/01/im- sorry.html>

<comment><USER64> Good that you didn't double down.

Wouldn't want to be on the back end of a hacker news shit storm :)

</comment></comment><comment><USER66> Here are some of Heather Arthur's other projects on Github:

<https://github.com/harthur/brain> \- neural network <https://github.com/harthur/classifier> \- bayesian classifier <https://github.com/harthur/clusterfck> \- clustering <https://github.com/harthur/glossary> \- term extraction

You can see more here:

<https://github.com/harthur?tab=repositories>

Nice stuff.

</comment><comment><USER67> I'm surprised no one mentioned it, but hey, there are people using windows out there where that can use this (instead of installing cygwin, or finding out what on earth is the equivalent of grep on windows command line)

I think it's just immature behavior to criticize like this and I'm happy to see the top voted comments here

Criticize in private, praise in public. Otherwise you are just a bully.

</comment><comment><USER68> You know, reading the various devs' tweets, they use twitter in a way that is completely foreign to me. Is there anything these guys think that they _don't_ tweet? ("Hey, who's picking me up from the hotel?" is not something I'd ever announce to the world at large.)

This incident shows a danger of working that way--one of these guys apparently had a rude little thought best kept private--and let's admit it, we all have those thoughts at one time or another. But because he tweets _everything_ , that little passing thought was pushed to the world, which is not good for anyone involved.

</comment><comment><USER69> FWIW, Corey Haines apologized: <http://programmingtour.blogspot.com/2013/01/im-sorry.html>

<comment><USER58> > FWIW

FWIW, I personally think it's worth a lot. It's easy to be nasty on the internet and a lot harder to be nice.

<comment><USER70> > a lot harder to be nice

Until all eyes are on you, and you know they're calling for blood. Then it becomes very easy.

<comment><USER58> Not always. Don't underestimate the strength of pride (though in this case, over a tweet, you're probably right).

<comment><USER71> "though in this case, over a tweet, you're probably right"

Well, maybe not: <https://twitter.com/zeeg/status/294305445521268736>

</comment></comment></comment></comment></comment><comment><USER72> Reverse misogyny. Had a man wrote a blog entry about crying due to 'boohoo comments' on the internet would get chastised out of the industry. A woman writes a blog entry about how her feelings get hurt and everyone with a set of swingers breaks down , puts on their big boy/high moral pants, and makes a grandiose apology (via published blog post, rather than private channels, because the fanbase must be informed lest we reduce our hits per month!)

Is this really a 250+ post thread about someone getting offended on the internet? Want to see an artist get offended about their work? Go check out deviant art.

Open code is inevitably peer reviewed. The development community since the mid 80s has been notorious relaxed, leisurely, casual. No suit, no tie culture. Are you really upset that you received a negative peer review in casual tongue?

Science has a similiar dilemma with peer review causing depression. Science and academia, however, do not have the same casual environment, however, and that is reflected in the peer review. Instead of "My eyes are bleeding", you receive things like "Das ist nicht nur nicht richtig, es ist nicht einmal falsch!" ("Not only is it not right, it's not even wrong!") Is that not rude?

Don't open up your code and you won't receive harsh sentiments from those that read it. Worked for MS.

<comment><USER73> The story isn't that someone got offended at constructive criticism. For starters, the criticism wasn't constructive or academic, and the criticized thing was just some little tool in a github repo, not an important physics paper, and the reviewers were just assholes, not brilliant assholes.

It was just bullying. And this is the story. It's true, of course, that a man would not have this recourse. He's expected to "man up". The legs of this story are that lots of people have this terrible attitude, almost everyone has seen it and it is hurting us a lot.

<comment><USER72> I get that. I understand the criticism that was offered was not constructive other than pointing out :

"Hey, look. sed does this too. Waste of time.".

My point in quoting Pauli was not to show you that academia stays far away from non-constructive criticism. Quite the opposite.

How does "You're not even wrong" help the author of the paper? It doesn't. It's an intentionally low blow meant to make the person reassess their position on the opinion they expounded upon. It's constructive in the fact that "maybe it'll knock some sense into them."

I, too, think the authors of the tweets acted in poor form. However, I have stepped back and looked at this for what it is, someone being upset about bullying on the internet. Bullying in a pseudo anonymous information exchange should not be surprising to anyone, nor should anyone take it so personally.

No boss is going to hire someone else because you got heckled on the internet, sorry. It'll be because you were lesser qualified than the other applicant.

</comment></comment></comment><comment><USER74> I don't know Steve Klabnik or Corey Haines (or any of the other people mentioned in the post), but I just lost a lot of respect for them.

If I do come across them (in a forum, in person etc), I'll remember more about how they tend to make disparaging comments about people on the internet rather than any code on github.

Lastly, kudos to you for writing code, solving a problem and putting it out there. I think is great what you're doing and you should ignore non- constructive criticism.

<comment><USER75> First time I've come across them too but the irony of Steve Klabnik's post is incredible [http://blog.steveklabnik.com/posts/2011-08-19-matz-is- nice-s...](http://blog.steveklabnik.com/posts/2011-08-19-matz-is-nice-so-we- are-nice)

</comment></comment><comment><USER76> David Cramer's response (via Twitter): "Are you mad that the Internet disagrees with you? Maybe get off the Internet?"

<https://twitter.com/zeeg/status/294305445521268736>

<comment><USER64> Douche is as douche does.

<comment><USER77> I got into an online argument with David Cramer years ago about something truly meaningless, but the notion that he is an asshole just stuck with me for some reason.

He seems like a terrible representative for Disqus. I wouldn't be surprised if a few people were turned off from working there when they discovered they would have to work with him.

</comment></comment></comment><comment><USER78> Oh the irony [http://blog.steveklabnik.com/posts/2011-08-19-matz-is- nice-s...](http://blog.steveklabnik.com/posts/2011-08-19-matz-is-nice-so-we- are-nice)

<comment><USER79> Well she wrote it in JS using Node, CLEARLY she was asking for it

<comment><USER37> If I weren't crying so hard right now I'd think about clapping. Too soon.

</comment></comment></comment><comment><USER80> I'm so tired of this.

In honor of harthur's efforts, and to take a stand against bullying, I've decided to fork the project. I'm currently porting it to Python!

<https://github.com/kennethreitz/replace>

I encourage others to do the same in their respective languages :)

<comment><USER81> Thanks, Kenneth. Actually, I've already forked and used harthur's code several times in the past -- she's written some really cool machine learning stuff for JavaScript that is easy to read. I've used it as the basis for playing around with machine learning in Python and JavaScript, and last year I tried (unsuccessfully, I think) to use d3 to create a nice visualization of her implementation of the k-means algorithm[0].

My visualization turned out poorly (I've had a few suggestions on how to make it better that I need to integrate, and am still open to additional suggestions). However, that obviously had nothing to do with harthur's excellent clusterfck library that I used[1].

Really, when you look over harthur's github contributions, she seems like the ideal open source contributor. She uses permissive licensing, writes clean code (in my opinion), uses unit tests, documents a lot of her code, chooses cool projects, etc. These are features I'm striving to integrate into my own code as I try to transition into programming as a profession instead of just a hobby (and I'm slowly getting there).

0\. [http://www.ericbullington.com/articles/2012/01/31/kmeans- vis...](http://www.ericbullington.com/articles/2012/01/31/kmeans- visualization) 1\. <https://github.com/harthur/clusterfck>

</comment></comment><comment><USER82> That's pretty infuriating. Learn to grow callous to it, laugh it off, and bury your head in the ground and keep pushing forward. You'll have assholes from every corner of the earth say demeaning things. But now I know Steve Klabnik is a dick, and Heather Arthur is a decent human being who's willing to put her work out there. Keep doing that and you'll be the happier person in the end.

</comment><comment><USER25>
      > Then I see these people's follower count, and I sob
      > harder. I can't help but think of potential future
      > employers that are no longer potential. My name and
      > avatar are part of its identity, and it's just one step
      > for a slightly curious person to see the idiot behind
      > this code.

Oh come on now. Potential employers are not going to be crawling through your github on the off chance they can find a hastily-written script to laugh at. If they do claim that they won't hire you because you wrote this tool, they are lying to cover for some less socially-acceptable rejection cause.

As for why people are laughing at this project, it's likely because you reimplemented a time-tested tool (sed) in a flavor-of-the-week platform (node- js) without any obvious awareness of how silly that looks. If you put a quick explanation in the README, like "I wanted a 'sed' that used Javascript regex syntax", then I doubt anyone would make any such fuss.

<comment><USER83>
      > Oh come on now. Potential employers are not going to
      > be crawling through your github on the off chance they
      > can find a hastily-written script to laugh at

No, they won't, but they do sometimes hire something new and worse than Checklist HR folks, Social Media for HR Researchers. At some point someone is going to hit an automated connection between "Heroes" and negative comments on other's work. It actually sounds like a "good" startup idea. Klout for hiring.

<comment><USER25> The funny thing about companies with arbitrary automated no-hire filters in their hiring pipeline is that they tend to be places such a programmer wouldn't want to work at anyway.

Say there's some HR department out there silently dropping any candidate that doesn't have a LiveJournal account. Would you worry? Would you even care?

<comment><USER83> Don't really know. I did get turned down for an internship because my high school was in the same area code as the college I went to (whole state is one area code). I really did want to work there.

<comment><USER15> I hope the keyword is 'did' -- if the hiring process is that robotic and stupid imagine the rest.

<comment><USER84> It's not always that simple. In a big enough organization, there can easily be good parts and bad parts, with the bad parts worth tolerating, especially if the bad part is just an upfront cost like a dumb hiring process. I might put up with some annoying corporate HR crap if it meant I could work at someplace like Xerox PARC in its heyday.

<comment><USER83> It was a DOE national lab, so it still stings a bit. It is probably why I absolutely hate the phrase "fly-over state" and tend to think less of people using it. It is probably also why I have such a visceral reaction to this article <http://news.ycombinator.com/item?id=5069195> and its author.

</comment></comment></comment></comment></comment></comment></comment><comment><USER85> This is par for the course in the Rails community. Once some Rails devs get more experienced, they think it's ok to shit on everyone else.

Granted, not all are like that...but many are.

God forbid you should stumble into #RubyOnRails on IRC. Thank God for Stack Overflow!

<comment><USER86> This to me is very unfortunate. I'm an experienced Ruby and RubyOnRails developer, and I think that this is totally unacceptable. This is why the Python community flourishes (and I learned to code with Python!), and the Ruby community, which has unfortunately become equated to the Rails community, relatively languishes.

I also think it's pretty funny/awful/ridiculous to see Rails devs hating on JS code. (JS is difficult to write well, and is NO LESS FUBAR than your average 3+year old Rails app). As recently as Rails 2.x, Rails was using Prototype... how'd that work out? For fuck's sake, how much human decency does it take to be civilized and constructive?

<comment><USER47> Responses to Heather's post from a relatively well-known Python developer:

<https://twitter.com/zeeg/status/294305445521268736>

<https://twitter.com/zeeg/status/294306974248607745>

<https://twitter.com/zeeg/status/294307486331187201>

I guess it's just not all that black and white, is it?

<comment><USER85> Yeh...I have had brash remarks from #Ruby too and not to mention #PHP and other communities for other languages.

So I don't think this is exclusive to the Rails community.

But, what pisses me off so much - and disappoints me more, is that Ruby (and by extension Rails) is such a beautiful language that allows me to do so much with such clear, and elegant syntax - that I have an expectation that other Rails & Ruby developers would generally be pleasant and nice. Not dicks riding on their high horse because they are the tallest kids in their corner of the playground.

When, in the big scheme of things, they are just 3 feet tall.

This particular instance is even doubly disappointing because I love Hackety Hack and Shoes.rb (which both are made for beginners). Why on earth would I now dedicate some of my time, when I know the maintainer will probably be ridiculing my code behind my back? Now this has just confirmed it.

It's actually quite sad and disappointing. No amount of apologizing will make up for it - unfortunately.

</comment></comment></comment></comment><comment><USER87> A quick scan of the project source doesn't suggest that "it makes my eyes bleed" was a fair criticism. It isn't going to cure cancer or solve deep problems, but who cares? The world is full of projects where people just snap a few cogs together and hit "Show HN" on their way to "... 3) Profit."

If you are going to put something in the public space, you have to be ready for any trolls in the vicinity to take a dump on it. It's not fair, but it's the economy of attention and identity at work.

<comment><USER88> "It makes my eyes bleed" is never fair criticism. It's vapid and meaningless and if I can implore _just one person_ to stop saying it, I will feel like I have achieved something with my life.

<comment><USER89> Never say never. Imagine, say, a contact lens solution...

<comment><USER88> My wife actually did put in the contact lens deep cleaner into her eye instead of the regular saline drops. Her eyes didn't _bleed_ , but we did get a tour of our neighborhood's lovely new Emergency Room.

</comment></comment></comment></comment><comment><USER90> I really like the easy to use approach of replace, and don't understand why every hackernews comment falls back to sed and grep. Free software is about choice, and this project is certainly another viable one. Thank you for open sourcing it!

<comment><USER91> Agreed. It actually works a lot like zmv in zsh[1].

I probably _won't_ use it but only because my stack is mostly Ruby and I generally use Ruby or sed for this sort of thing.

[1] <http://zshwiki.org/home/builtin/functions/zmv>

</comment></comment><comment><USER92> Man I know how this feels. The very first piece of code I ever open-sourced (5 years ago) was put on a "Wall of Shame". Turned out though that the person doing this had never even looked at my code, they were just a petty, jealous person who saw something with a title that irked them. I don't claim to have great code, but I am happy to still be putting lots of open-source code out there, and I'm happy I didn't let that first asshole discourage me. Fortunately, the rest of the community saw that this guy was an asshole, and the "wall of shame" was quickly brought down, but it'd be really nice if we didn't let such petty assholes make it into a position where they can ridicule people in such a public and far-reaching way in the first place.

</comment><comment><USER93> What's all the drama about? So what some famous people criticized your code. Get over it. They may disagree with it for whatever reason ultimately it's you who has to find the tool useful. Please don't whine about it just take it with a grain of salt they could be a million reasons they would say that.

</comment><comment><USER80> <http://kennethreitz.org/be-cordial-or-be-on-your-way.html>

</comment><comment><AUTHOR> Here's the Twitter discussion alluded to in the post:

<https://twitter.com/harthvader/status/293829635823792128>

Main justification is the nicer syntax. I agree it's nicer, but would approach it by wrapping sed, not re-implementing in Node.js from scratch.

I don't think that excuses the ridicule, though.

<comment><USER94> How would you get sed to output the files and lines on which replacements happened?

<comment><USER95> How about using diff and sed -i?

      # This version is obviously unsafe
      verbose_sed() {
        sed -i.old -e "$1" "$2"
        diff -u "$2.old" "$2"
        rm "$2.old"
      }

      verbose_sed s/vim/emacs/g rant.txt

You could then use all the tools that we already have for working with patches: colordiff to colorize the output, diffstat for a summary of changes, patch -R for reverting the changes, and so on.

Of course, you're more likely to than not already using version control, which gives you all this and much more, even if you were to use vanilla find+sed.

</comment></comment></comment><comment><USER96> I don't care how "popular" these guys are, they are douchebags. This kind of bullshit behavior is stopping me from trying Ruby.

<comment><USER97> Which is kind of sad, since old ruby community even had MINSWAN motto (Matz Is Nice So We Are Nice). I don't know when and why everybody became so abrasive.

</comment></comment><comment><USER98>
      $> diff @coreyhaines-apology @steveklabnik-apology
      < grace
      ---
      > sorry if i made you upset

A side-by-side example we can all use to learn how to apologize better.

[1] <http://programmingtour.blogspot.com/2013/01/im-sorry.html>

[2] <http://blog.steveklabnik.com/posts/2013-01-23-node>

</comment><comment><USER99> Seriously, i dont know what everyone is getting worked up about. Some wannabe smarty pants said something mean on the internets. How is that different than any other day?

Steve Klabnik: what exactly is his claim to fame [2]? Lets all mock him for reinventing the wheel with 'pomodoro'. "Messes with your hosts file" and run some crap ruby daemon on :80 so you can't browse the web for some number of minutes? WTF: it's called a proxy people or iptables. Why reinvent the wheel? OHHHH and a big no no here: shelling out to the system. LOL, the irony [1]. I need HIGH PERFORMANCE on everything I do including a local webserver. Gosh.

Corey Haines: huh? some software trainer who has written a well known anything? His github is less than inspiring.

Some other ruby people: big whoop. Lets see their githubs and then we can all point fingers.

[1] [https://github.com/steveklabnik/pomodoro/blob/master/lib/pom...](https://github.com/steveklabnik/pomodoro/blob/master/lib/pomodoro.rb) [2] <https://github.com/steveklabnik/bring_back_snowman>

<comment><USER100> I'm flagging this post, as it adds to the negativity cloud.

</comment></comment><comment><USER101> This seems like a nifty utility that lacks the learning curve of some classic Unix tools.

Granted, it duplicates stuff in sed and grep, but it looks like it would probably be useful to many people.

A project this reminded me of: <http://betterthangrep.com/>

</comment><comment><USER102> Seeing this sort of negative behavior, both in groups online and off and coding and not, affected me greatly, even when I wasn't the target. On one hand, it gave me pause to consider and critique my own work, enhancing the final product. On the other hand, it made me go into over-perfectionist overdrive and too scared to release stuff lest "everyone" hates it. This fear, however irrational, has gripped me for many years. Stories, scripts and projects being left in folders partially because I wasn't sure where to go with them, but I believe in part that I was too scared to see it through and be rejected (The McFly effect, if you will.) I'm only now just coming to terms with it and learning how to, excusing the french, not give a fuck what others think. If I'm happy with it, that's a great start.

It's like with improv comedy: Denying the other person doesn't go anywhere and typically ruins the whole scene. Working with the other person in a positive light,though, goes miles and miles.

</comment><comment><USER103> This is kind of saddening to see, but it is a crime that virtually every programmer has committed at one point or another in their careers. Let's be honest - in some cases it can be quite fun to do. The underlying problem is the ego, and the corresponding lack of objectivity that results.

From reading someone else's code - even glancing at it in some cases - one can infer a great many things. For example, if the indentation on some code is totally borked, most programmers will immediately be extremely doubtful about whether that code contains any interesting or useful ideas (though of course this is not always the case, counterexample being intentionally obfuscated code). In some cases, they will simply refuse to continue attempting to understand the code and dismiss it as useless. A similar thing can happen at the semantic level when the programmer detects a mismatch between the language/framework being used and the problem space; this dissonance is likely what is irking all of the people who are so childishly ridiculing your replace utility.

Sometimes when you're looking over someone else's code you spot some perceived inconsistencies/flaws/bugs. The crucially important part is _what you do next_. If you choose the route of publicly shaming them to stroke your own ego, then you have not only hurt yourself by appearing childish, insecure and unsociable, but you have also hurt their feelings. It's important to remain objective in these situations, and take the self out of the equation. If you HAVE to indulge yourself by tearing the code apart in a humorous manner then at least keep it between with your friends!

As I alluded before, I would guess that the reason people where poking fun at it was probably because there exist a lot of other utilities which have the same functionality and are readily available on most any system. Personally, I thought your code was interesting, and I thank you for choosing to make it public :).

</comment><comment><USER104> > I can't help but think of potential future employers that are no longer > potential.

Remember that this also applies to the potential employers of the people making these remarks. I don't think employers like these kind of toxic comments and sometimes I think Twitter actually has some use for decent people in that it acts as a honeytrap for exposing certain tendencies in not-so- decent people that would otherwise go unnoticed due to the holier-than-thou aura these people create for themselves. "Bro, look at his code! Guys! Guys! Look!"

</comment><comment><USER105> A tool like "replace" is actually very useful for someone like me.

Within the past year I've been learning OS X and the associated Unix environment (coming from a Windows background). At times I wonder how to do find/replace in the command line. So I look at sed. Glance over the man page -- what the heck? Google it; okay's so there's apparently different versions of sed, and OS X has something weird with -i since it's BSD sed instead of GNU sed... and oh look! It uses a different type of regular expressions than I've been using for the past 10 years. And, oh crap, I just accidentally overwrote my file because I typed in the command wrong.

The alternative for me is to open the Coffee REPL and get that crap done in seconds.

Yeah, I'm slowly picking up the Unix skillset (and Vim is invaluable after finally getting around to learning it), but I think people forget the sheer amount of _memorization_ involved to navigate in a Unix environment.

</comment><comment><USER106> This guy needs to stop being a pansy and grow some balls.

Oh noes! Someone on the internet doesn't like my work! My world is over!

What are you, a little girl? Nine, maybe ten years old. I'm seeing pigtails and a frilly skirt.

Get over it dude. It's impossible to make everyone happy. haters are going to hate. No need to make a big deal about it.

<comment><USER37> What are you, a little neckbearded basement dweller? There's probably little ten year olds girls ballerinas that could kick your wimpy ass.

Just, heads up, it was a girl that got wrecked on, and your comment is offensively sexist and, disregarding the situation, just generally inappropriately so.

<comment><USER106> I didn't realize it was a girl until after I made the post.

We should all feel sorry for her. Women are special creatures that must be protected and sheltered at all costs. How dare some men say anything bad about her.

Oh wait, they didn't say anything bad about her. They didn't even say anything bad about her code. They disliked her project. She even said most of the comments where positive. This is nothing more than attention whoring.

And you fell for it because she's a girl.

If you put something out there, people are going to hate and criticize it. Doesn't matter if you are a boy, girl, or three toed sloth. Just because she's a girl doesn't mean we should pay attention to someone who whines when a few people hate on the project. Nor does it make those haters terrible people. You don't hear Douglas Crockford crying every time someone criticizes him. And you don't get this upset at the developers who do criticize him.

It's sexist to treat her different because she's a girl. Everyone is criticized.

</comment></comment></comment><comment><USER107> I hate to say this -- as an older person -- the only solution is to get a thicker skin, because people on occasion are going to be assholes to you. Even good people in a moment of snark. Even when they completely misunderstand what you did and that it is good. And worse, there are those who just tear down anything. It's just a fact of life. I suggest you read Feynman's "What do you care what other people think?" It helped me a lot.

<comment><USER36> Spot on, this does get easier as one gets older, but one thing that makes it harder is Twitter itself. The nature of Twitter seems to create a primary- school-like atmosphere because of the short format and asymmetrical following mechanism. When you don't have the bidirectional communication it creates an effect like young children or people with underdeveloped social skills where you don't see peoples reactions and have a poor sense of what's really going on around you.

</comment></comment><comment><USER49> Even if the tool wasn't as useful as the traditional tool users have liked, I think that the following was an interesting comment:

      I think that, at least hypothetically, this app won't be
      significantly faster written in C than in JavaScript.
      It's I/O bound, and in JS regular expressions get JITted
      to native code (which sed won't even do!).

      The real slowdown here with our current JS
      implementations will be overhead for creating and
      replacing-in strings. This app actually just gave me a
      crazy idea for how we could optimize this kind of usage,
      so I wanted to say thanks!

<http://harthur.wordpress.com/2011/06/06/replace/#comment-776>

</comment><comment><USER108> Maybe it's cultural, but what was ridiculed was the project, not the person. Russians, for example, make a clear distinction between the two, so what the tweets said didn't shock me somehow.

I can totally understand how one can take it personally and I definitely think the apologies were necessary. Even though I am Russian, I would certainly apologize profusely if I had offended anybody for whatever reason and would be sincerely sorry.

<comment><USER84> The person _was_ ridiculed, FWIW: "...but I don't want to build my app on top of others' code who are at this level of understanding..." is insulting the person, not the project.

<comment><USER108> I have to disagree, somewhat. It's about the person's skills (or lack thereof), not about the person. An insult to the person would be "you're ugly".

I can totally see WHY someone can get offended, and I am not saying it's OK to say those things. But in my culture this would not be a problem because of what I said above.

</comment></comment></comment><comment><USER109> Reimplementing existing tools is a great way to learn and enhance your code fu. Hats off to the author. Haters gonna hate.

</comment><comment><USER110> At my office, I would be very angry if I encounter your tool. That would mean that the guy who has brought it was too lazy to learn the proper way and makes me waste my time learning how to use a useless tool. Your tool has no advantage over standard unix tools, it is just limited to a reduced number of use cases.

This kind of tools does not favour improvement of skills or good practice. I think this is the cause of the strong reactions.

On the other hand, your program seems well coded and I may use it when I need to code something similar in javascript. Thank you for open sourcing it. I think you should update your README.md file in order to indicate the proper way of doing things and to discourage the use of it for any other purpose than learning.

<comment><USER111> _I think you should update your README.md file in order to indicate the proper way of doing things and to discourage the use of it for any other purpose than learning._

Ack isn't a "standard unix tool" either. I use it all the time.

You're being a presumptuous asshole in telling her to discourage the use of it just because you don't like it. I get that you're trying to be nice. You're not succeeding. You're being the problem. Stop.

<comment><USER110> In my work I have always to go from one computer to another one (to analyse software problems). Sometimes I need to ask a developer to come on site to give a look to the behaviour of its code. It occurs very often that very good developers are completely lost when they arrive on a computer where all their marvellous customizations and shortcuts are missing.

Many developer are always on the same environment. They can use their own tailored tools and may not need many of the basic unix knowledge.

I think that good practices should be encouraged. The good practices improve the skill of people and reduce the costs at the society level. The basic knowledge of unix tool has an exponential rewarding effect (by learning a couple of new tips, you can solve many new needs). This tool facilitates the avoidance of these good practices.

I do not like people ignorance and I favour knowledge. I do not like losing time (except on HN) and I favour speed. I admit, this is a personal opinion.

We do not have much time to learn everything. I think the time spend learning "replace" should better be spend learning "sed". Try to use sed each time it is not longer than opening a text editor and doing a find and replace manually. This way you will not lose your skill.

Ack is not a basic tool you have chosen to avoid learning grep. All the basic options of grep are the same in ack. As a result you will not loose skill by using ack.

<comment><USER73> Which shell commands you use is a micro-detail. There is a surplus of shell commands, most of the features of which go unused. Meanwhile, some people are coding on Windows or an Apple platform and not using any of this. It really doesn't matter. This is nothing but justifying wanting people to do things the same way you do, without being able to explain why it is actually better.

<comment><USER110> Reread what I wrote. I have been moded down enough for giving my opinion about why this additional shell command can makes people angry. There are perhaps many young developers here that are fed-up listening to old ones telling them to learn basic unix way. I can understand them, but this is not a sufficient reason to reinvent the wheel without improvements, or to negate the obvious.

</comment></comment></comment></comment></comment><comment><USER112> Apology from one of the tweeters: <http://programmingtour.blogspot.com/2013/01/im-sorry.html>

</comment><comment><USER113> As the lead developer for Cryptocat, this sure rung a bell for me.

<comment><USER114> There's something to be said about encouraging people to use crypto software that might not be well-written, though. To me, it's fine to write whatever you want in any language you want, but if you write an application and market it as "communicate securely and anonymously", or any kind of software that could put people's lives at risk, really--like Tor--you should be confident it _is_ secure, i.e. that you know how to get it right. You are literally putting people's lives at risk, not just writing software that might be buggy, or which some people might not find useful.

IMO, the "lol, look at this, pathetic" for using node.js is inexcusable (regardless of what your opinion about node.js, and for the record, mine isn't favorable), but "X application has serious security holes in their software that could put you at risk. Don't use it" is not. For example, I don't consider this "bullying": <http://www.schneier.com/blog/archives/2012/08/cryptocat.html>

All this being said, I'm glad you powered through ([https://blog.crypto.cat/2012/08/moving-to-a-browser-app- mode...](https://blog.crypto.cat/2012/08/moving-to-a-browser-app-model/)) and solved the issues. OTR is awesome, and most of the critics have come around, AFAICT. Many others don't listen to this kind of feedback, and so deserve the critique all the more.

<comment><USER113> Oh absolutely. As Schneier noted in that blog post, we did solve the issues that were presented to us, switched to a signed browser plugin, OTR, got a full audit, and so on. But other than the handful of awesome and helpful critique, _man_ were people assholes on Twitter.

I stand by Cryptocat being a usable privacy tool today, and I think we were quite responsible in our development process. There's always media hype making us look like something we're not (a magic bullet for activists and other people in danger to solve all their problems,) but that's why we have warnings everywhere on our website and inside the app itself.

<comment><USER114> Yeah, don't get me wrong. People who have nothing to add can go disappear.

<comment><USER113> Thanks, man.

</comment></comment></comment></comment></comment><comment><USER115> There are a few open source projects which I would be willing to ridicule. In general the projects have traction, a significant history, and horrible code which never gets more than marginally better over more than a decade. It is one thing to be starting out. It is something else to decline self- improvement.

The problem though is this (and I have been on the receiving end of very harsh criticism of people I respected, some of which was shown correct over time), that there are often problems with critics jumping to conclusions and at the same time not being very detailed. Thus a response like these tweets can only be a "gut reaction" and never really very helpful to anyone. There is no time involved trying to grok the code. There is no opportunity to discuss what potential tradeoffs have been made or why. These two things need to be corrected.

I don't think folks should criticize code without trying to work with it and understand the API's. I don't think folks should leave a critique like "that's the old 1990's way of doing things" or "that code sucks." It is much better to get something like "So I see a few problems with the code... and ...."

In fact the few times I have gotten the latter (publishing code and getting responses like "I see some important concurrency issues there. This isn't safe to run on production.") I have been happy with the panning because I could fix the problems. But that's a far cry from what the article is referring to and it is, unfortunately a lot less common, IMO.

</comment><comment><USER116> Although I don't see anything particularly wrong with that script and why people are laughing at it, she needs to be less sensitive and not take it personally. After all, publishing open-source code is a very public act and makes you a very easy target for criticism. Imagine if the Linux kernel devs cried every time Linus went on one of his abusive rants. Not that I'm particularly defending this abusive behaviour, but you have to be realistic and realise that it happens.

</comment><comment><USER117> Someone's going to cry over this? I would have thought going through normal ridiculing in middle school and high school would have toughened someone's skin enough. And why are you even paying attention to the great twitter circle-jerk?

</comment><comment><USER118> I wonder if the amount of ridicule correlates with the fact that the author is a woman?

</comment><comment><USER119> It looks fine to me, I would actually use something like this internally for employees who can't regex. Except the node.js part, but that doesn't make it any less useful, I respect that other people use other tools.

The part that I see some may disagree with, is when these apps are posted in public repository indexes (npm). I feel a usefulness filter should be applied. That may be at the heart of the comments. Not that it was posted publicly, but that it was included with a generic name in a public repository (<https://npmjs.org/package/replace>), now it has the potential to be annoying to some users. The way these guys disagreed was just, ugh.

I write all sorts of cool little networking utilities for my company, but they were not ever intended for an end user, but could be used or adapted by someone else very quickly. My code doesn't leave my company (probably shouldn't, I'd get torn up just like this, I know it). If it did, I would just not want it in a repository.

</comment><comment><USER120> I just wanted to point out that the code (I know, it's not about the code) here is perfectly fine JavaScript, much, much better than tons of JS I saw in the wild. "eyes bleed"? What the heck? Have these guys never seen truly bad code? And if it's really just about language war...

Look, I understand that one can prefer one language over another, but trashing the code _someone already written_ (meaning you won't be forced to write this thing in this language if the need be) is so short-sighted, so closed-minded that I can't find proper words to describe it.

I almost refuse to believe that this is the kind of people who are the "stars" of communities - I really thought that to be really good with one language you need to know and respect many others and I thought that being a "star" involves being being good in the language you want to champion. I guess I was just deluded and we're choosing those who yell the loudest as our representatives. Whatever happened to meritocracy?

</comment><comment><USER121> This seems like a totally reasonable way to deal with criticism.

Also, "I can't help but think of potential future employers that are no longer potential." because some guy called Steve Klabnik and his wannabe follower Corey Haines who wants to suck up to him say your code sucks?

Don't take yourself so seriously please.

</comment><comment><USER122> First of all, I don't think it matters whether a man or a woman wrote the code. I for one didn't know when I read the link, until I saw this discussion.

There are several aspects to this. The obvious one is that anything you put out there is going to get criticisms. Look at Barack Obama being called a socialist muslim atheist, who attended Rev. Wright's church for 20 years. The point is, if you step up, not everyone will like you.

Now, being denounced by people who are well-respected and with a big following can hurt. Then again, I doubt it's very permanent. If this is the ONLY thing you've ever done, then you should just do more things.

If you are that sensitive about something, don't release it under your own name. Invent a handle just for this project. Kind of like a limited liability company. The art of the pseudonym goes back hundreds of years.

Also keep in mind the culture. Unfortunately in my opinion, the coder culture is full of elitist snark against noobs who are too visible. Maybe because it's so male. I have seen far worse reactions to people's code on IRC, especially some assholes in EFNet chatrooms. Freenode seems a bit nicer and well-behaved. But saying ridiculously quirky offensive things in response to code is something coders do to each other all the time. It's just the way many of them speak. I personally don't, and I find it extremely annoying, and I wish it would go away, but it's the reality.

Now as far as open source ... I remember releasing what I considered to be a very impressive (at the time) framework, <http://phponpie.com> , and although I got pretty positive responses <http://news.ycombinator.com/item?id=1682933>, and constructive criticism, it didn't really take off. I tried a bit of self- promotion and it didn't pay off either. So to me, releasing open source is kind of a lot like releasing any product ... if people don't really want it, then you're putting in a lot of effort for almost no return. Think about product-market fit in open source, just like anywhere else.

</comment><comment><USER123> Those people are arseholes, but sobbing? There's no sobbing in business (to paraphrase Tom Hanks).

</comment><comment><USER124> This code is better than 90% of the code I've seen. Why? It shipped.

</comment><comment><USER125> It strikes me as the OP is a new-fangled node.js programmer who unwittingly stepped into shell-script land and felt the judgmental wrath of those who dwell there.

This post has a lot of conversation which I take to mean it touched a nerve with a lot of people as it did me. I grew up when computer nerds were not cool and a lot of guys dealt with it by being self-righteous, condescending assholes. I thought those days were behind us now that computer guys and gals are off getting rich and running the world. But clearly the need to feel superior still exists in some communities. It bums me out to see people who otherwise do good work with such a mean-spirited attitude.

</comment><comment><USER126> People will criticize your work, good or bad, can't take every comment on twitter to heart.

<comment><USER127> The fact that these are "big deal" developers on some pretty important projects is the problem.

Also the fact that Mr. Haines is always promoting improving ones craft by writing code makes his comments even worse.

I feel that this comment on being a dick by jbrennan to be pretty decent:

"Next time you feel like mocking another developer for his or her lack of skills in a certain area, stop yourself. Talk to the person and explain to them why you think something they are doing is incorrect or how it could be done better. This way, you don't come off as a jerk, and the other developer learns something new and improves. And I'd be surprised if you didn't learn something from the experience, too."

</comment></comment><comment><USER39> Developer elitism at it again. The dev community really needs to lose this trait.

</comment><comment><USER128> I can't find any reasons to tweet stuff like that. Pretty sad to see that the mentality of some "popular" developer is.

<comment><USER129> Yeah, if they really had to get off on criticizing other's code, why not use IM or email? To do it on such a public place as twitter is kind of cruel.

</comment></comment><comment><USER130> I always cringe when i see a blog post along the lines of

"A great way to do X in unix"

because it is almost always followed by the true unix gurus coming on and schooling the poster.

literally, people: assume any unix script you post, no matter how trivial, must meet the standards of a mathematical proof to Fermat's Last Theorem.

and i must confess, i look down on bloggers that blithely post a unix script. Not because of their lack of Unix foo, but rather the shear naivete of posting it (and the ignorance of the fact that the grey wizards will come out of their tower and pound you for anything less than perfection)

</comment><comment><USER79> You have been ridiculed by a RoR core team member.. that is pretty awesome.

<comment><USER131> Inorite? A Rails core developer dissing someone for gratuitious use of Node.js. Now I've seen it all.

This project <https://github.com/harthur/replace> is some of the _least_ sucky code you're likely to see in a month of reading Javascript.

</comment></comment><comment><USER132> Steve Klabnik's apology:

<https://twitter.com/steveklabnik/status/294302391279435776>

<https://twitter.com/steveklabnik/status/294302539510337536>

He posted this ~2 years ago: [http://blog.steveklabnik.com/posts/2010-09-24-trolling- is-a-...](http://blog.steveklabnik.com/posts/2010-09-24-trolling-is-a-art)

I guess he's still working on his communication skills.

<comment><USER133> That second tweet still makes him look like an enormous douche. You're right about the communication skills.

</comment></comment><comment><USER134> Fuck it, ship it.

At least you're contributing to the world and bettering yourself.

</comment><comment><USER135> And we wonder why the programmer geek/nerd/shut-in stereotype or whatever sticks. We fucking step all over eachother as a chance to look better. "Oh, look, someone wrote a helper function that does something _I_ already know how to do."

What's the benefit of calling that person out?

Seriously. Answer that question before you take to a twitter mob.

People through this thread argue whether its worth the time, but if it took Heather one hour to write it, the function paid for itself once she used it for an hour of work that would otherwise be spent crawing man pages.

Hell, she says it was written a few years ago. Every piece of code I wrote two/three/four years ago can be looked at and often makes me cringe. You learn in time but that doesn't mean you should vanquish your mistakes. Grow from them, show them proudly as a statement of where you were and where you've come from. Whether you've evolved to a better programmer or not if that single function proved useful to you at one point it means that just one single person out there needed it. Does it make you wrong for not knowing/finding the tools it mimics? Maybe, but without someone beside her in the first place how should she have known. Perhaps taking to twitter with a knife for someone's back is a better start?

</comment><comment><USER136> Very disappointed with the people that made these statements, they should know better.

Kicking other peoples puppy is never cool, people forget where they started.

Some times you have to take this sort of crap on the chin and keep hacking away, the best thing you can do in situations like is just ignore them.

I think in this case they have realised how stupid their statements where and are hopefully truly sorry for the hurt they have caused.

Also a note to those with many followers, don't be a dick.

</comment><comment><USER137> It's astonishing how somebody's earnest hard work, put out in the world for all to see and benefit from, draws so many unmitigated assholes out of the woodwork.

Is it jealousy at quickly and elegantly producing something simple and useful?

protip: here's how to recognize you made a mistake and humbly apologize <http://programmingtour.blogspot.com/2013/01/im-sorry.html> Good on Corey.

here's how to do the opposite [http://justcramer.com/2013/01/24/being-wrong- on-the-internet...](http://justcramer.com/2013/01/24/being-wrong-on-the- internet/)

<http://blog.steveklabnik.com/posts/2013-01-23-node> <https://twitter.com/steveklabnik/status/294302391279435776> <https://twitter.com/steveklabnik/status/294302539510337536>

<https://twitter.com/zeeg/status/294307568019464192>

</comment><comment><USER138> 1.) Open Source is a meritocracy intentionally designed to counter the never- ending threat of software homogenization that profit motives lure us into embracing, not a soapbox for fleeting quandaries about morality and "social change" (whatever the hell that means for the week). Apples and oranges. Mountains and molehills.

2.) Open Source is not some cool kid's club where people who understand what a semi-colon can do try their hand at avoiding the recession. Even if coders did not make the money they make, THEY WOULD STILL BE CODING BECAUSE IT'S ABOUT TRICKING FUNDAMENTAL PARTICLES INTO DOING MATH FOR YOU. IT'S FUCKING AWESOME SO PUT UP OR SHUT UP.

3.) You code... you put it out there... and you have, literally, -ZERO- idea what is going to happen. People might like it, people might hate it.

Now this is the important part to my final point:

\---IT IS NOT YOUR PLACE TO CONTROL OR FILTER THOSE RESPONSES---

So you throw some code out there and people don't like it? You get mocked by some asshole? And? What, did you expect civility and ponies and rainbows? What fantasy model of human interaction are you relying on as the core of such assumptions?

Nay, sentient being. It is your place to ADAPT to those responses.

So... in short....

There is a BLAME option in version control, so point out the flaws in her code or shut up. So there's that.

Now as per the frothy mob trying to turn Open Source into some anti-bullying kumbaya because they watch too much Rachel Maddow...

There is -not- a SHAME option in version control, so either understand what problem Open Source is trying to solve (promoting software heterogeneity) or go back to the service sector where people are forced to be nice.

<comment><USER3> "---IT IS NOT YOUR PLACE TO CONTROL OR FILTER THOSE RESPONSES---"

One could equally well argue that it's not your place to control or filter criticisms of those responses. You're essentially positing that the majority of people here are out of line for saying "don't be a dick". That seems contradictory to me.

<comment><USER138> Childish usage of a primitive understanding of dialectics isn't going to deter me. You'll have to do better than that.

This is me ADAPTING to your response. Not filtering it out. Not telling you to never again say those big, mean, nasty words to me. Not running the internet to summon white knights to my ever beck and call because I want to win some points that don't matter anywhere.

This is me, leading by example, how to ADAPT to your response.

<comment><USER138> The point is that you challenged my contribution.

And I didn't filter it out.

Nor did I tell you to stop challenging me.

I adapted.

It's a simple concept.

</comment></comment></comment></comment><comment><USER139> I have an application I've been working on for about 5 years. I started it as a way to learn desktop and object oriented programming, and it's now grown to something like 10,000 lines of code. There have been long periods of 6 months or more when I've not touched it, then gone back in and get started again, as a result the code base is a bit of a mess. The coding style is a bit haphazard and it includes a fair sprinkling of ugly hacks.

But by and large it works and would make a decent alpha release. There are a few bits of functionality that need to be made more robust, which I'm working on now, and when that's done I'm going to bite the bullet and load it into Github. I've implemented a plugin system so users can customize it, and tried to do my best to make that part of it as consistent and clean as possible.

I do worry that uploading this thing could cut both ways. I'd like it to get some use, but I'm very aware of it's flaws. I wonder home many projects never get released because the authors are worried about this kind of reaction.

</comment><comment><USER140> Because of this post I learned a little bit about node.js and may want get into.

See how that works. And she has other interesting projects as well.

</comment><comment><USER141> harthur, your work is awesome.

</comment><comment><USER142> So here is a thing I've learnt as an artist: never offer unsolicited critique of other people's work. It makes you look like an asshole.

If someone WANTS crit, I will ask them if they really, really want it, and give them the caveat that I am probably going to rip them a new one. For my best artist buddies, I don't bother with the preface. They know how to detach themselves from their art.

And sometimes, yeah, I come across something so amazingly badly made that it becomes a thing of wonder. When I want to share that, I don't do it in public. I use private, limited channels. Email, private forum, locked Twitter account, whatever. Come to think of it I really tend to just say "holy cow look at this" rather than being super specific.

Tearing other people's stuff down in public makes you look like an asshole, period. Especially when you are tearing down the work of people less skilled and/or well-known. It also makes you look pretty insecure.

</comment><comment><USER143> Okay, I upvoted this story for the sake of 'missing kindness', in general on the Internet.

But after having understood, the whole story. What replace does is that, basically it is a good small utility for the author of the post to replace some content from a lot of files, also recursively going through directories. And the author happened to make it depend on nodejs.

In defense of these folks, who made nasty comments: they appeared to have made so, in the context of _this nodeJS-based-replace_ , attempting to replace the sed/awk/grep and unix scripting.

To any long time unix user, any quick hack to replace the said commands, does indeed appear to be falling short. And also a bit of a _why would you need to do such a thing?_.

Honestly, they should have been just empathetic enough to understand a non- unix user, hacking a quick utility, with the tools she is familiar with (nodeJS and javascript) to come up with something useful for self and friends.

edit: rephrase

</comment><comment><USER144> Github is not a beauty pageant. We do not write code for the people to evaluate them aesthetically. What we do, however, is to learn and teach. What we did to solve that problem and if there are others, they may use our solution as a step to solving their similar problems or better, they may offer a better solution.

What did these tweets add to the so-called "eye bleeding" code? What did they teach? What did we learn from all of these?

If I was in Heather's shoes, I would feel anxious whenever I sync to my public repo in Github. Or anxious whenever I code, worry whether this code is "beautiful" enough. And, folks, no one has any right to make a person feel like this.

I don't mean "no there shouldn't be any criticism on github" on the contrary, if you have something constructive to say, go ahead and shoot. I would not make a repo public if I don't want to see my mistakes, improvement starts with realizing what a mistake is.

</comment><comment><USER145> I'm amazed someone hasn't said "well that escalated quickly".

On topic, I've never really released code due to being scared of peer- disapproval, and also paranoid from the public display of potential attack vectors I haven't seen. I don't think that I will ever open source a live project due to these issues.

You should never say "that's bad code" without giving a reason why, and or showing how to make the code better. It's like walking out of a new release block buster movie and saying in a louder than normal voice "well that movie was bad". Anyone that can hear is going to start questioning, "what movie?", "why was it bad?", and instantly they are going to start wondering if the next 3 hours of their life is going to be wasted.

Basically I put this down to a generation of self absorbed twats that like to hear their own voice, and feel all warm and fuzzy inside when ever they grunt something "amusing" to their minions.

</comment><comment><USER146> It is an unfortunate fact that this sector of the world has a higher proportion of absolute assholes than other sectors. Egos are extremely fragile, cognitive dissonance is high, arrogance is the norm.

I'd say don't let it get to you, but that'd be dishonest. It'll get to you. The thing is you can't stop. That's the hard part.

</comment><comment><USER147> This topic is so hot in the community it's hard resisting the urge to weigh in. That being said I don't think I can add much to the particular direction the current conversation is going.

But given that I gave in to the urge to comment I do want to say this: Good job Heather! Keep up the coding and continue to have fun doing what you're doing. Solve the problems you see fit to be solved.

My guess is that you have a pretty good support network and you'll brush this whole thing off soon enough. However the next time you are one key-stroke away from submitting another project to GitHub, and you are given pause due to this whole fiasco, I say charge forward and submit. I look forward to seeing your contribution to the community. Just as I look forward to any contribution from anyone across the globe.

</comment><comment><USER148> I agree with the other comments here. It reminded me, unfortunately, that I did something like that once:

[http://thoughts.davisjeff.com/2007/11/17/700-queries-for- one...](http://thoughts.davisjeff.com/2007/11/17/700-queries-for-one-page- load/)

I can rationalize it in a few different ways, I'm sure. But the bottom line is that, if it's open source software, the correct approach is to either offer constructive criticism directly to the developers, or just not say anything without being directly prompted (e.g. "should we use this software").

I can see exceptions for major projects with a large developer base. You still need to keep it constructive, but I don't necessarily think you have a responsibility to join the mailing list for everything you want to complain about.

</comment><comment><USER149> I wish the guys involved would submit pull requests to amend what they thought was so bad. It has a better educational and apologetic value.

It also shows the kind of respect people should get; if you don't like the code you're seeing on Github, improve it and submit a pull request - why not?

<comment><USER150> Submitting pull requests is for code you actually consider worthwhile/useful. These guys didn't seem to think it even has a reason to exist, so why would they try to improve it? It'd be like saying, "Well, if you don't like my toothbrush for ducks, why don't you tell me how to improve it?"

<comment><USER149> I meant _after_ they have apologized. Instead of saying 'sorry' in word and that they didn't really mean it, say it in a pull request teaching the person offended something of value.

Further, I think they shape of the code was referred to as 'eye bleeding'. Regardless of if you're building something worthwhile, they could have fixed the eye hurting code and explain why that is a more correct way.

</comment></comment></comment><comment><USER151> I don't do much JavaScript or Node development but her projects look cool. As frustrating as this must have been for Heather, I hope that in the long run she might get some value from the publicity.

I was going to comment on the twits (misspelling intentional) but decided to stay positive.

</comment><comment><USER73> This is a cultural problem. I don't see any reason to believe that this is because she's a she. This kind of horrible arrogant douchebag attitude is just an epidemic. If you are a guy, and especially if you are nobody known, you do not have anything like this recourse.

</comment><comment><USER152> I replied to @steveklabnik's tweet saying (<https://twitter.com/hardikr/status/293819210965082113>)

        "There's also a search command. It's like grep, but with replace's syntax, and slower!" Wow - I'm sold!

If it was not clear, I was just kidding - and I apologize if my tweet and caused her any sort of distress. I'm just a novice in the open-source world, and I really respect harthur for her contributions to open-source. I was just "smiling" about Javascript's use to replicate grep. In fact, it is my Github everyone should be laughing at - it is filled with small useless scripts, and really terrible code.

</comment><comment><USER153> Thank you Heather! I could never be bothered to remember the commands for the swiss knife that is sed to do something as simple as this. Why I love this:

\- js syntax for regular expressions is what I'm most familiar with \- defaultignore is very helpful \- completely cross-platform \- can be used directly from my other node projects that need to search and replace files \- it's something i'd never be bothered to write because looking up sed syntax takes less time - so thank you for taking the time to do it and open source it!

Don't get me wrong - sed's great cause it's so powerful. Bash is powerful too. But I'm not a fan of either. Software should make our lives easier, not force as to learn cryptic commands to get simple things done. Compare "sed --help" to "replace --help". What will the future generation prefer when they need to do a basic search/replace task? The route of least resistance of course.

Making simple tasks simple is what real innovation is about. I don't consider myself a poor developer, I know a handful of languages, I'm just not a linux geek because I believe that interfaces should come first. I'm a developer / designer and I love simple and elegant solutions to every-day problems. Your module is exactly that. The reason some "experts" are up in arms is because it challenges the status quo. You no longer need to be a linux wizard to search and replace files. Hell - you don't even need linux. And the simplicity and approach of Node is what makes it possible. As Steve Klabnik said - this is actually their way of showing how much they hate node. And hate is a powerful word for "being afraid". And I'd be too if I dedicated a good chunk of my life to becoming a Ruby expert. "Ever wanted to make sed or grep worse?". Hahaha. I guess Apple I was also worse than the all-powerful mainframes of its day. That's probably exactly what the IBM guys said. Buy a PC that doesn't come with a screen? That does only a fraction of what IBM PCs do? Ever wanted to make an IBM PC worse? :) When the experts are afraid - that's when you know the Node movement is on to something.

PS Already almost 400 people have starred your project - I think that's saying something. Would be interesting to know the number of installs :)

</comment><comment><USER154> Klabnik is the first to fight for rights etc, now he's doing exactly the opposite. He's trying to rise his own status by decreasing others'.

I wonder if all his fights aren't just a means to justify his own weaknesses and need to feel superior.

</comment><comment><USER155> The criticism is so stupid too. Just because there's another tool out there already that can accomplish the same thing, does that mean no programmer should try to do the same thing again ever? How else do people learn?

And if she wants some of her work online to show potential employers or just to share, whats wrong with that? People should just mind their own business, and not be assholes.

If you don't like an open source project, make the same thing yourself, and make a post about how it improves on the older one. Don't tear someone down for not being as "smart" as you.

</comment><comment><USER156> I don't understand, not the critics, not the project.

Why insult something that someone obviously put a lot of care into?

The code is nicely formatted and clear. I can see how it works. Props to harthur for making something easy to read and then sharing it on Github. Both readable code and sharing should be encouraged.

I don't really get why someone would want to implement text processing utilities in node.js. It seems to be a bit heavy on the overhead.

Might someone re-implement harthur's user interface (which a bunch of people seem to like) in c, and submit it to the GNU Coreutils project?

</comment><comment><USER157> You know the Gmail extension that delay your mail, or the one that ask you at 2am if you really want to send that (drunk) text ? They should implement that in Twitter.

(note: I avoid Twitter as much as I can)

</comment><comment><USER158> I see absolutely nothing wrong with this approach of writing your own tools. If a person feels that it's better, why ridicule it? Noone is forcing you to use it. If you feel it's not for you, that's fine.

On the other hand, some people are advocating this approach as a way to improve your programming skills: <http://www.rodrigoalvesvieira.com/copy- unix/>

</comment><comment><USER159> So, I've felt the same way about uploading my own work-in-progress code to GitHub, but I use it as an antitode to perfectionism / procrastination. It's almost a form of militant pragmatism.

I've worked at some quite successful small companies, and they all share the property that you really don't want to examine the code too closely. The sausage is inevitably somewhat disgusting on close examination.

</comment><comment><USER160> Steve Jobs' response:

"By the way, what have you done that's so great? Do you create anything, or just criticize others work and belittle their motivations?"

</comment><comment><USER161> This is a lot what it feels like to blog about something technical, and then have someone swoop in and question not just your article, but your parentage and your IQ. It hurts a lot that people can't be constructive with their criticism, but I hope that Heather continues posting open source projects. Haters 'gonna hate, you just can't let them bring you down.

</comment><comment><USER162> I've followed 2 of those individuals on twitter in the past. Note the tense.

I found CH to be particularly tiresome, all show and little substance. Also very much prone to contradictions, he doesn't seem to realize that people remember things. I haven't met him in person, but I imagine he talks quite a lot at a loud volume.

</comment><comment><USER163> This blog makes an extremely good point. The industry we work in is very competitive and it's easy to get into the habit of making snarky comments about other people's code, even if you're actually not a jerk in real life. It's always good to remember that you should avoid doing this as often as possible.

</comment><comment><USER164> Similar thing happened to me when I wrote a nodejs abstraction in GWT: <https://twitter.com/jdub/status/25537683967180800>. Gotta shrug off the haters when it comes to showing projects like this. It is the internet after all.

</comment><comment><USER165> I never understood such gloating on open source communities. If you can change it for good, why gloat, why complain. There's obviously many reason to rage when you see bad code on commercial and privative stuff, but on open? Dammit, fork it, change it, contribute.

It was a bad behavior and people should understand it.

</comment><comment><USER166> The disturbing thing is I never expected such a behavior/ being an accidental asshole (as he has later confessed) from a reputable online identity like @steveklabnik, a contributor to <http://thechangelog.com> besides many things

</comment><comment><USER167> If their criticisms aren't constructive, they're wasting _your_ time. Don't let them. Ignore them if that's all they have to say. I don't care if it's your mom or your boss or Jeff Besos or Obama, wasting a person's time is an insult to that person.

</comment><comment><USER56> This just verifies my experience that Corey Haines is a fake.

His cult of personality is defined by lots of high-fives, 'that's awesome', 'i am such a positive person' statements.

So, he like to pretend he is really positive, nice, friendly... but this event shows that is all fake.

</comment><comment><USER168> I've forked your repository and tried to offer some helpful insights: <https://github.com/xmlblog/replace/blob/master/replace.js>

I hope you find this useful in some small way.

</comment><comment><USER169> Now that's a feature I'd like to see on github: an asshole filter.

What really bothers me is that, like me, I'd say a lot of those people learn daily from the work of others on the internet. What about giving something back? What about doing something to add?

</comment><comment><USER48> (I copied this from another HN posting)

I was one of the people who made a comment about this. I'm also assuming the reason I was pulled into this is because people much more important than me said similar things.

I'm not going to defend that I think attempting to replace sed/grep is a bad idea (especially not in 140 characters), but I will defend people's opinions.

Everyone has one, most of them you won't agree with. Whether they're nice or not. I'm generally not a nice person, at least online, that's my choice. That said, especially with this being the internet, you have to deal with others opinions.

While some people may go above and beyond (even myself sometimes) and actually be very mean with their opinion, that doesn't change the fact that they're entitled to it. If you don't like it, ignore it. If you can't ignore it, then you won't survive.

The fact that people somehow managed to turn this into the continuous drama debate about gender is just pathetic.

<comment><USER49> > _While some people may go above and beyond (even myself sometimes) and > actually be very mean with their opinion, that doesn't change the fact that > they're entitled to it. If you don't like it, ignore it. If you can't ignore > it, then you won't survive._

In other words, if someone says something nasty, you have no right to say anything about it. Because the nasty person has an _opinion_ , and _it's their right_. Great logic!

</comment></comment><comment><USER170> oh my god - people will always throw shit - often for no apparent reason at all. In fact - I would take it as a compliment. If you do great things, and shit come your way, it means you're successful. Don't let it get to you. Ignore it.

</comment><comment><USER171> harthur, if it's any help, I immediately `npm install pg replace`'ed. I love your tool's simplicity, for common scenarios, compared to the more common alternatives. Without all this drama, I wouldn't have come across it!

</comment><comment><USER172> Just starred your project on github. Thanks for bringing it to my attention.

</comment><comment><USER173> Chris Dickinson's response to this whole ordeal is very much worth the read: <https://gist.github.com/02cbd380b7b3b1df62b5>

</comment><comment><USER174> The truth is that there are a whole bunch of morons out there with petty little opinions and with no real achievements of themselves. They call the people Trolls (with a capital T). Ignore them.

<comment><USER73> They are still trolls even if they have a twitter following or have made some money.

</comment></comment><comment><USER175> @Author: Everyone has a right to say and have an opinion. Learn to accept people's reactions and hopefully you will understand why they said what they said. In other words, stop being a pussy!

</comment><comment><USER176> sucks to be on the receiving end of some nasty/uncivil comments. On the other hand, _you_ are now the person that re-wrote sed. That's pretty awesome.

</comment><comment><USER177> I'm curious : what is the use case for this utility ? If I look at the README, it says :

 _> Modifies files when matches are found_

Just like sed's -i option (except that -i allows you to specify a backup extension just in case)

 _> Recursive search on directories with -r_

I usually use find with sed, so it's not so much a problem (and it actually allows to filter the files by extension, exclude directories, etc, which is pretty handy)

 _> Uses JavaScript syntax for regular expressions and replacement strings_

I'm not sure that it's an advantage :)

So, is there something that I missed ?

<comment><USER178> Not one she specifically mentioned (or possibly thought of) but it runs on windows without Cygwin.

Edit: using the proper gender pronoun would help.

<comment><USER7> I've never configured Node on Windows, but apparently it requires Cygwin [1]

        Currently, you must use cygwin to install node. To do so, follow these steps:

[1] <http://howtonode.org/how-to-install-nodejs>

<comment><USER179> No:

<http://nodejs.org/download/>

</comment></comment></comment></comment><comment><USER140> Also, I think the concept could probably be done with sed and whatever bash scripts.

But the code didn't look that bad. It is Javascript after all.

</comment><comment><USER180> 850+ votes, 480+ comments and counting. Who is going to write that easy to use, 'properly written' shell wrapper around find/sed?

</comment><comment><USER181> Nice job, guys.

<http://www.lolbrary.com/post/35279/gamer-girls/>

 _headdesk_

</comment><comment><USER182> XKCD has the answer. <http://xkcd.com/1053/>

</comment><comment><USER130> a girl?

does that make a difference?

(honest question)

</comment><comment><USER183> Better shit code that gets the job done than beautiful code that gets nothing done

</comment><comment><USER184> I spent a summer once writing a substandard 'ls' command because I liked doing it.

</comment><comment><USER185> this is why i am afraid to open source my own personal projects. this fear.

</comment><comment><USER186> Isn't the whole node.js ecosystem subject to this criticism?

</comment><comment><USER187> One nit: I'm not seeing an open source license in the repo. This is what would keep me from using or caring about this code snippet or start caring about how the developer was being treated.

Is there one and am I just missing it?

</comment><comment><USER130> dude, unix is serious.... oh, wait a minute...

Never mind.

"Everybody gets a Trophy!!!!!"

</comment><comment><USER116> The Unix weenies strike again.

</comment><comment><USER188> No good deed goes unpunished.

</comment><comment><USER189> The open source zealots have been like this for years. 5 or 6 years ago, I forked a project and started charging for it. I was completely within my rights to do so as I followed the license (GNU) specifically and also gave out the full source code.

This didn't stop the death threats, taunts, and aggression I got from the general community. This and things like the recent word press theme debacle have put a bad taste in my mouth when it comes to open source.

</comment><comment><USER190> "Then I sob harder. I can't help but think of potential future employers that are no longer potential."

As an employer, I expect there to be criticism associated with a person's code. Criticism isn't a black mark.

But sobbing in reaction to criticism? Getting all upset about mild criticism from a-hole strangers on twitter? That's a black mark.

</comment><comment><USER191> Who else here really doesn't enjoy using sed, awk, grep, and xargs?

I try to use ack whenever I can avoid grep or find, personally. I wish there were better replacements for the other tools and that they were widely available (possibly as portable libraries).

</comment><comment><USER192> big shots tend to forget they are just humans and make mistakes. like all of us.</comment>