
What It's Like To Be Ridiculed For Open Sourcing A Project - luigi
http://harthur.wordpress.com/2013/01/24/771/
======
jlongster
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.

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

~~~
steveplace
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.

~~~
peterevans
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.

------
kevinalexbrown
_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.

~~~
doktrin
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.

~~~
nollidge
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/)

~~~
calinet6
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.

~~~
pc86
> _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.

~~~
gknoy
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.

~~~
jtheory
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?

------
mintplant
> _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>

~~~
yen223
Here's the thing, when someone like Linus Torvald says things like that, we
applaud him for it.

~~~
readme
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"

~~~
adrr
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)

~~~
pavanky
"Some of the threads"

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

 _does see or mention context_

------
mrb
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.

~~~
tptacek
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.

~~~
sid6376
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.

~~~
d0m
The TL;DR of -print0 is just to make sure _find_ works with all kind of weird
filenames.

------
wasabian
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!

~~~
jaequery
hah, that's just pure irony

------
rachelbythebay
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.

~~~
jmillikin

      > 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.

~~~
nikatwork
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.

~~~
madhadron
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.

------
spohlenz
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.

------
pg
Maybe before we spend a lot of time complaining about how federal prosecutors
are unsympathetic assholes, we should start by examining our own community.

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

~~~
thaumaturgy
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.

~~~
jcampbell1
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.

~~~
thaumaturgy
> _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.

~~~
jcampbell1
> 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.

------
jrockway
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.

~~~
zem
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>

~~~
wereHamster
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.

~~~
paulbjensen
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.

~~~
dasil003
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.

~~~
rektide
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.

~~~
dasil003
The frontier is _always_ settled.

------
wippler
"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?

~~~
d4vlx
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.

------
brotchie
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.

~~~
sharkbrainguy
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.

~~~
btown
> 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.

------
nmcfarl
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.

------
swanson
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.

------
bstar77
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?

~~~
mbreese
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.

~~~
stoprock
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.

~~~
zeeg
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.

~~~
chris_wot
Yeah, about trollish tweets... you might offend someone.

------
dandelany
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> )

~~~
jmillikin

      > 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.

------
tiktaktoe
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.

------
tylerlh
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.

------
bmmayer1
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.

~~~
citricsquid
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.

~~~
rozap
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?

------
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.

~~~
e4c5shev
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.

------
btucker
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."

------
biesnecker
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.

~~~
boyter
That's similar advice to my favorite of Murphy's laws,

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

------
orangethirty
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).

~~~
beering
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.

~~~
orangethirty
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.

------
kamaal
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.

------
madhadron
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.

------
kstenerud
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...

------
confluence
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.

------
coreyhaines
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>

~~~
confluence
Good that you didn't double down.

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

------
evanprodromou
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.

------
eranation
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.

------
IvyMike
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.

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

~~~
biesnecker
> 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.

~~~
talklittle
> 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.

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

~~~
Mutinix
"though in this case, over a tweet, you're probably right"

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

------
serf
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.

~~~
pekk
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.

~~~
serf
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.

------
kt9
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.

~~~
keyboardP
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)

------
rdegges
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>

~~~
confluence
Douche is as douche does.

~~~
ceol
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.

------
twog
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)

~~~
tlear
Well she wrote it in JS using Node, CLEARLY she was asking for it

~~~
rektide
If I weren't crying so hard right now I'd think about clapping. Too soon.

------
kenneth_reitz
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 :)

~~~
eric_bullington
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>

------
kyro
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.

------
jmillikin

      > 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.

~~~
protomyth

      > 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.

~~~
jmillikin
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?

~~~
protomyth
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.

~~~
readme
I hope the keyword is 'did' -- if the hiring process is that robotic and
stupid imagine the rest.

~~~
mrgoldenbrown
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.

~~~
protomyth
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.

------
marcamillion
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!

~~~
mbillie1
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?

~~~
stoprock
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?

~~~
marcamillion
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.

------
swdunlop
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.

~~~
MartinCron
"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.

~~~
scarmig
Never say never. Imagine, say, a contact lens solution...

~~~
MartinCron
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.

------
sharms
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!

~~~
halostatue
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>

------
nowarninglabel
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.

------
Fuxy
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.

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

------
luigi
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.

~~~
parfe
How would you get sed to output the files and lines on which replacements
happened?

~~~
noste
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.

------
manish_gill
I don't care how "popular" these guys are, they are douchebags. This kind of
bullshit behavior is stopping me from trying Ruby.

~~~
xentronium
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.

------
ispivey

      $> 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>

------
jumby
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>

~~~
pnathan
I'm flagging this post, as it adds to the negativity cloud.

------
lwf
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/>

------
crowbar
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.

------
maxdeliso
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 :).

------
_pmf_
> 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!"

------
Xcelerate
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.

------
ripter
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.

~~~
rektide
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.

~~~
ripter
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.

------
michaelwww
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.

~~~
dasil003
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.

------
chris_wot
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>

------
dblock
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.

~~~
mrgoldenbrown
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.

~~~
dblock
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.

------
evolve2k
Reimplementing existing tools is a great way to learn and enhance your code
fu. Hats off to the author. Haters gonna hate.

------
webreac
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.

~~~
eropple
_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.

~~~
webreac
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.

~~~
pekk
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.

~~~
webreac
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.

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

------
magikarp
As the lead developer for Cryptocat, this sure rung a bell for me.

~~~
thirsteh
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.

~~~
magikarp
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.

~~~
thirsteh
Yeah, don't get me wrong. People who have nothing to add can go disappear.

~~~
magikarp
Thanks, man.

------
einhverfr
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.

------
shaurz
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.

------
qwertybob
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?

------
davidbrenneman
I wonder if the amount of ridicule correlates with the fact that the author is
a woman?

------
ddunkin
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.

------
klibertp
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?

------
mosselman
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.

------
EGreg
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.

------
gadders
Those people are arseholes, but sobbing? There's no sobbing in business (to
paraphrase Tom Hanks).

------
donnfelker
This code is better than 90% of the code I've seen. Why? It shipped.

------
jakejake
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.

------
redmattred
People will criticize your work, good or bad, can't take every comment on
twitter to heart.

~~~
thezoid
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."

------
d4vlx
Developer elitism at it again. The dev community really needs to lose this
trait.

------
brunolazzaro
I can't find any reasons to tweet stuff like that. Pretty sad to see that the
mentality of some "popular" developer is.

~~~
re_todd
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.

------
jpeg_hero
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)

------
tlear
You have been ridiculed by a RoR core team member.. that is pretty awesome.

~~~
marshray
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.

------
numbnuts
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.

~~~
Gigablah
That second tweet still makes him look like an enormous douche. You're right
about the communication skills.

------
almost_usual
Fuck it, ship it.

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

------
TheCapn
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?

------
wolfeidau
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.

------
bane
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>

------
TheEmpath
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.

~~~
quasque
"---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.

~~~
TheEmpath
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.

~~~
TheEmpath
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.

------
simonh
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.

------
berlinbrown
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.

------
zachrose
harthur, your work is awesome.

------
egypturnash
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.

------
rehack
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

------
f4stjack
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.

------
kysol
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.

------
obstacle1
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.

------
slohr
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.

------
jeffdavis
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.

------
jondot
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?

~~~
jff
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?"

~~~
jondot
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.

------
mark_l_watson
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.

------
pekk
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.

------
hardik988
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.

------
akrymski
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 :)

------
kurko
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.

------
lilsunnybee
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.

------
deltasquared
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?

------
conradfr
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)

------
rytis
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/>

------
JabavuAdams
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.

------
sharjeel
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?"

------
vital101
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.

------
rjempson
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.

------
davesque
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.

------
kodablah
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.

------
meerita
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.

------
suhair
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

------
stephengillie
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.

------
e4c5shev
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.

------
xmlblog
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.

------
r4pha
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?

------
zeeg
(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.

~~~
chris_wot
> _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!

------
Nordichacker
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.

------
skrebbel
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!

------
cslarson
Just starred your project on github. Thanks for bringing it to my attention.

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

------
pan69
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.

~~~
pekk
They are still trolls even if they have a twitter following or have made some
money.

------
suyash
@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!

------
countessa
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.

------
arcatek
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 ?

~~~
crazytony
Not one she specifically mentioned (or possibly thought of) but it runs on
windows without Cygwin.

Edit: using the proper gender pronoun would help.

~~~
doktrin
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>

~~~
maxerickson
No:

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

------
berlinbrown
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.

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

------
gcv
Nice job, guys.

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

 _headdesk_

------
marklittlewood
XKCD has the answer. <http://xkcd.com/1053/>

------
jpeg_hero
a girl?

does that make a difference?

(honest question)

------
kschua
Better shit code that gets the job done than beautiful code that gets nothing
done

------
davethespider
I spent a summer once writing a substandard 'ls' command because I liked doing
it.

------
jezi22
this is why i am afraid to open source my own personal projects. this fear.

------
mulligan
Isn't the whole node.js ecosystem subject to this criticism?

------
cdibona
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?

------
jpeg_hero
dude, unix is serious.... oh, wait a minute...

Never mind.

"Everybody gets a Trophy!!!!!"

------
shaurz
The Unix weenies strike again.

------
shizzy0
No good deed goes unpunished.

------
paulhauggis
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.

------
andyl
"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.

------
DannoHung
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).

------
camus
big shots tend to forget they are just humans and make mistakes. like all of
us.

