825 comments

[ 2.8 ms ] story [ 423 ms ] thread
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 ?

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

Edit: using the proper gender pronoun would help.

Yet it appears to require node.js?

Six of one, half a dozen of the other

Yes, you are missing something. The features of his utility is not the point.
Well, if someone says "So wrong that it doesn’t even need to be explained", I assume that saying some of the reasons which would lead to the bad reviews is relevant.

However, I agree that it doesn't address the second point of the article which was the useless rudeness. But developers are (helas) known to be very rude people. That's not the first article talking about it.

I don't think a critique of the code in question is especially relevant to the main point of the article, i.e. the practice of mocking open-source projects.

Debating the technical merits of this particular project can't really address that.

Yeah you missed the point of the article.

It's not about the usefulness of the project, it's about why does notorious developers like steveklabnik (rails core team) and dcramer (lots of django related projects) are publicly bashing this project without any reason.

It's rude and childish.

Wow--I was unaware of the fact that the commenting dudes were devs on actual important projects.

This reminds me of the time James Cameron got on youtube and started posting mocking comments on videos with under 100 views.

Oh, that's right, he never did that. Because it would be ridiculous, and would make him look like a petty bully.

That's pretty clever! I like that one...
The tool is simpler than sed because it misses a lot of stuff that sed actually does.

That's what you and the people mocking this project have missed.

Well, there's also the old idea of "if you don't have anything nice to say, don't say it." Or the idea of constructive criticism. Or the idea of contributing useful patches to the project.

So yes, there is something you and the armchair experts missed: software doesn't exist in a vacuum, and the people behind the software might have some emotional investment in their work.

As for the original project author, it bears mentioning that if you can't handle ridicule, don't appear in public. Someone, somewhere, will find a reason to mock you. It might be your choice of language, your formatting style, your_use_of_long_variable_names, UseOfCamelCase, too much/too little abstraction of methods, the colour of your hair, your choice of footwear, too much/too little hair, or that your name isn't common.

Mocking people has never led to things getting better.

I disagree, slightly. Mockery is sometimes the only way to make the powerful, oblivious or powerfully oblivious pay attention. I agree that it is not a reasonable tool against someone who isn't hurting anyone.
Or downvoting. I guess mockery, /and/ downvoting.
For example, Alan Cox mocking Fedora. Maybe not that nice, but Fedora is a big boy and can take care of itself. It's not bullying. And there is more at stake than someone else's github repo being unappealing.
I see your point, but I slightly disagree. It could be worthy to kindly say that there is a 'standard' way to do it, since the author may not be aware of find or sed. And if they are, some readers may not.
She mentions sed in the readme. She knows about it, and has informed potential users as well.
"the people behind the software might have some emotional investment in their work."

If you are coding to relieve an unresolved emotional tension that just has no other outlet instead of solving an actual problem, you are in the wrong industry. Go be the first Jackson Pollock programmer.

$ find ./ -type f -exec sed -i 's/ugly/beautiful/g' {} \;

vs

$ replace 'ugly' 'beautiful' . -r

I can definitely see the value here

One of the approaches has been used by tens of thousands of users over decades and the other by a handful over a few months.

I know which approach I would choose.

I'm sure many people who have had to put up with the atrocity of sed over decades would love this tool... the author obviously knows about sed and found it lacking.

Regardless, though, it's a tool she found useful, even if you personally don't. So what? The appropriate response is "Oh cool, I try to use sed. It has arcane syntax and portability issues, but it's a lowest common denominator that I can expect to find on all the systems I work on."

The problem is that being abusive and belittling to others is harmful to the open source community, especially when it revolves around someone who has gone and contributed to the community actual working code.
It's wheel reinvention - same idea, different UI. But that's not always a terrible thing in programming; in fact it describes most of our software.
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/

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.

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.

Me neither. It's not as if klabnik was asked to use it. Plain old rude, in the name of defending no principle in particular.
The maximist point of view is to wrap sed, yes. But what also came to my mind was what if he/she just wanted to only learn, I can think of no better way than to try to write it 'yourself' in the language of your choice, if only as a learning exercise.

All to often we in technology assume the maximist point of view, possibly completely discounting another dynamic point of view or some inspirational reasoning (of the originator).

*edit: spelling

How would you get sed to output the files and lines on which replacements happened?
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.

I don't think rewriting as a wrapper around sed would be an improvement. That would put you in the business of translating one regexp syntax into another which is probably more error prone.
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!
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.

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.

Yeah I mean it's OK to make judgements and think or believe whatever you want. Maybe even tell how a friend or two how silly something seems to you while hanging out. It's a different thing to being a dick to someone publicly on the internet for trying to contribute positively to open-source.
> 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.

I'm in the #1.5 category probably.

_But_ it is all about how it is written. Criticism is good when it is constructive, otherwise it is not far from just name calling, badgering and spewing of hate.

Other ways to respond could be "That's a cool idea. I like to use sed" or "checkout my python one-liner".

All those things you highlighted could be true, but that's still not a reason to offend someone.

It depends on who the author is:

* If an 8 year old wrote that, that would awesome and she would become an overnight internet celebrity.

* A Linus Torvalds wrote that -- everyone would become very worried that he is smoking something.

* Someone who is just learning to program -- it is awesome and they should be encouraged to do more of it

* A seasoned programmer -- they should still be encouraged but criticism should be more pronounced "Cool but sed usually works better, were you thinking of some specific feature?".

(comment deleted)
I guess the point of the #1 is they may be trying to hit you with a clue. sometmes not in a most efficient way, hurted feeling stay in the way of learning.
Perhaps, but comments like "I cannot even make this stuff up" and "eyes bleeding!" are not constructive criticism, just pointless mockery.
I agree with this mentality. Its best to just ignore the #1-types out there. Of course, that doesn't remove the sting. I don't use node, so this doesn't fit in my toolchain.

However, I wanted to commend the author on the nice simple interface. In particular, I like the highlighted output showing the changed lines in all files. This is one thing that sed -i doesn't do (although I guess you could cobble it together with sed's backup feature and diff).

Anyway, don't get discouraged by the haters!

>Again, ignore #1, friend #2.

"Forget the insults you receive and remember the compliments. And if you figure out how to do that, let me know"

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.

"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.
Never say never. Imagine, say, a contact lens solution...
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.
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.

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.

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
the hatred of node.js always reminds me of anti-apple people.
I have to say that node.js can be an entirely useful tool, and I can even support Heather's activity of making things she wants to use with it, without drinking kool-aid that node is better than everything and solves everything and should replace everything. And the same of Apple. It seems inaccurately simplistic to describe this as 'hate'.
The worst bit about it is that it's part of a petty language squabble?
no, that a petty language squabble was worth abusing someone over - it had very little to do with her actual code
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.
Agreed. I wrote this blog post:

http://paulbjensen.co.uk/posts/2012/07/11/thoughts-on-rails-...

Then Tony Arcieri wrote this rebuttal:

http://www.unlimitednovelty.com/2012/08/debunking-nodejs-gis...

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

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

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.

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.

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.
The frontier is always settled.
I mostly agree with you but it seems to me elitist behaviour like this has a lot of tacit acceptance among developers. I have seen it many times in my career, and have also noticed that workplaces where is is not acceptable tend to make everyone more productive.
It's a people problem, not a developer problem. Watch the gossip magazines trash actors' clothes and haircuts.
Good point, but some communities seem more civil than others. I went from theoretical computer science to development and there was a noticeable drop in civility. Of course the theoretical computer science community is tiny when compared to software development.

I'm loving the great supportive comments in this thread however.

The difficulty of a subject acts as a filter. For mastering a hard subject you need to be able to control your impulses, which might also cause a more civil behaviour.

I don't think that it's accidentally, that the Haskell community is the most civil community I have been part of. Just being part of it makes myself a nicer and more civil person.

> Watch the gossip magazines trash actors' clothes and haircut

And also reading some of the more interesting messages on the Linux Kernel mailing lists, specifically messages by Linus. It's sometimes entertaining to read them and the responses in defense of Linus because he's awesome. I wonder what the reactions from HN would be if it was Linus, or some really high profile programmer, making these comments?

Sorry, being in a vituperative argument based on some actual issue may be rude, but it isn't the same as spontaneously bullying people on Twitter with zero-content flames about their personal github repos.

Someone gets in a fistfight over a woman, this is not mature, but it's different from cold-cocking strangers on the street because you think it's fun.

>Welcome to the Internet. If you do something, chances are someone hates you.

You know, this is really what we have to keep in mind, or at least try to any way. Doesn't stop it from stinging a bit when it happens though. Especially when they are the first kind of comment you receive when you show a project in a public forum.

I usually expect a couple of 'Fuck you. My eye's are bleeding from your coding." style comments anytime I show a project publicly, but there are still times that it catches me off guard.

For instance, not even code related, I once asked on Reddit for a couple of people to help beta test a Skype plugin I was working on. At that time, I had never written a threaded piece of software before, and had no idea how it would perform when a bunch of users were accessing it simultaneously. I wanted a larger test pool than the two or three of my friends who were online at any given time allowed.

So I made my post, and received almost entirely negative feedback from it. To the point that I was completely unprepared for. I got stuff about what a loser I was, and even PMs about how I should just kill myself now for being such a loser, etc, etc.. It seemed like once the first negative comment popped up, the bandwagon effect took over, and suddenly it was an inbox full of hate.

So I sat there in my chair, wondering what the hell just happened, what I did to all of these people people to cause such hostility, and on top of that, I sat there wondering why I even cared what a couple of assholes on the internet said. I didn't want to care, or be that guy who was bothered by "the mean people on the internet," but dammit I was a bothered by the whole thing.

Not related at to code at all but your comment about catching you off-guard reminded me of a comment chain I was a part of on reddit. There was a comment about assigned seating in movies and I replied with how I liked the system and why, and then the reply to me was something along the lines of, "Remind me to never hang out with you.". Water off a duck's back to me but it did give me a moment's pause and I recognised that if I weren't used to such behaviour it would have affected me.

It reinforced a feeling I have that, sadly, you can't seem exist in communities on the internet without being ready to put up with unanticipated 'hate' (for lack of a better word).

I know many people who given time to become more experienced, would benefit greatly from various aspects of the net, but I worry they wouldn't last a week before they decided it was something they never want a part of.

If I've learned one thing is that the Reddit community is not friendly. I swear to God, there must be a underground competition to who can bully and troll more users there.
On the main subs, I think it is that there has been a down tick in the average user age. Being on the site and not being logged into my account feels quite a bit like visiting my 14 year old little brother facebook page. Just kind of base-line, 14 year old funny.

My point being, I think a percentage of the trolling may come from that demographic. It's not rare to run across account that literally was set up just to hurl insults and racism. I just imagine that there are a group of 14 year olds sitting on the other side which boast to each other about how much negative Karma their 'troll' accounts have.

In other areas, I think it's that some people just take karma far too seriously. I used to spend a lot of time in the language specific learnprogramming subreddits. It seemed like a nice way to help the 'community,' without having to do the race to the answer game that you do on stackoverflow.

I learned that some of the most unbelievably childish people hang out in the language specific threads so they can play 'expert.' I ran into a couple of users that would downvote every answer in the thread that wasn't theirs. I sent one a message about reddiquette and that fact that he's really being a bit of a dick in our small community, but his response was to downvote all of my posts, and say that all other answers were wrong but his (they weren't).

Needless to say, it seemed a waste of effort to continue to post if everything was just going to be buried thanks to some guy's e-ego.

As the lead developer for Cryptocat, this sure rung a bell for me.
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...) 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.

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.

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

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

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

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.
I hope the keyword is 'did' -- if the hiring process is that robotic and stupid imagine the rest.
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.
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.
No one worth working for who's technical is going to not hire you because someone heckled your script on twitter.

A recruiter isn't going to pass you up either. Recruiters will spam the fuck out of anyone with a github follower.

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

The second sentence of the readme is "It's similar to sed but there are a few differences"

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!

hah, that's just pure irony
People will criticize your work, good or bad, can't take every comment on twitter to heart.
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."

To quote Mark Twain: "Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great."
(comment deleted)
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.

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

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

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 )

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

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

i only see one comment responding to the code

Reimplementing existing tools is a great way to learn and enhance your code fu. Hats off to the author. Haters gonna hate.
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...

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.

>> If I ever start a company the #1 thing I will look for in others is positivity. I wouldn't stand for this crap.

What's conspicuously lacking here is not positivity per se, it's the absence of civility & decency. Those are two very different sets of attributes.

Lack of an outright positive demeanor won't sink a team. Lacking civility and decency, however, will stick a severe wrench in any project.

edit : On a personal note, reading this was unpleasant and embarrassing. I'm sorry the OP had to go through this.

edit 2 : retracting the following statement after reading apologies published by those involved - "I'm glad I now know who not to interact with in the community"

I guess you're right. Civility also sounds less cheesy than positivity! I find that teams can be balanced with people positive and negative, and it's how you handle negativity that's important, which is what you point out.
(comment deleted)
I wouldn't be at all surprised if there was a strong undercurrent of misogyny involved here, motivating their incivility and rudeness.
It's the reverse - a lack of civility among those alpha-nerd types leads to the general acceptance of misogyny (and racism, for that matter) among them.
Perhaps you are correct. While I completely agree that what happened to her was completely uncalled for regardless of her gender. I find that sometimes myself I am slightly harsher in criticism of my male colleagues and friends. Perhaps dcramer and steveklabnik didn't realize they were addressing the project of a female programmer? Nonetheless, their rudeness is still wrong especially in the public sphere.
I'm quite skeptical of this. It's not like her gender is immediately obvious from the GitHub repo, and it seems obvious that if these guys recognized the screen name they wouldn't have been foolish enough to make these comments about an engineer at Mozilla.
I seriously doubt it was misogyny as much as it's just online disinhibition. Twitter is especially notorious because the very format forces you to be curt.
Accusing everybody criticizing a woman of sexism is certainly not helping. They almost certainly didn't know she is a woman. Moreover Steve Klabnik at least is a widely known ally (http://confreaks.com/videos/1089-madisonruby2012-anti-opress...)
"Accusing everybody criticizing a woman of sexism is certainly not helping."

It's not that they're criticizing a woman, it's ~how~ they go about it.

It is fundamentally impossible to provide enough evidence or preemptive apologies to find redemption once someone starts playing the Identity Victim card. Don't even bother.
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.

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.

"have a comment thread full of white knights"

You're seriously suggesting that anyone here who decries the rude behaviour described in the blog post, is doing so just to impress the protagonist of this drama with their chivalry? What an absurd notion.

Using the phrase "white knights" as a gender-based insult for people sticking up to bully-behavior is pretty unnecessary and reflects poorly on you. There's no need to bully the bullied further because you feel some sort of nonexistent imbalance.
"If the author was named Henry instead of Heather"

I'm going to have to strongly disagree, I honestly didn't know the author was a girl until I saw the name, well after I had read comments and was intrigued overall with the topic. I think the jump to misogyny or gender bias is a bit premature, but I can't really offer up much evidence other then my own perceptions and interpretations of what I've read.

Simply put, the topic is really interesting in itself and hasn't really been discussed much on HN in this specific way, unless I've missed some previous threads. I think add the fact that the negative comments were from some decently well known people, which all responded to it as well, and I think you have all the explanation you need for it being a popular post outside of any sort of need to resort to guys going to to a girls defence explanation.

If the author was named Henry, the probability that this post would have been written would be far lower. For better or for worse.
The majority of HN readers seem to have assumed that the author is male. I assumed the same thing for most of it, before getting suspicious at the non-joking use of "sobbing". I wouldn't be surprised if these Twitter posters made the same assumption.
The thing that bothers me is that some people changed their tone after they found out she was a woman and after they read her post. This speaks volumes more than the original comments. If anything it seems there's an implication that somehow women are unable to cope with jackasses as well as men.

Would it have even made HN at all if she was a man and wrote the same way? I doubt it, but if it did, and she was a he, he would have been pounded to the ground in the comments.

Of course, all of this could have been avoided if people act the way they're expected face-to-face. None of these people considered the "person" who wrote the code. And none of them considered "not useful for me" != "not useful". If it was, why are there so many tools out there besides UNIX?

BTW... Twitter's short form is a lame cop out IMO. You can be curt and still not be condescending. Allegedly "smart" people could have been cogent without being asses.

I just wanted to point out that (hopefully) these Twitter guys were posting because they truly disliked the project, rather than out of misogyny as the GP speculates.

It bothers me too when people here and elsewhere assume every single negative comment or piece of criticism directed at a woman is due to misogyny, and that somehow women should be "no criticism zones" or something. I really like when people maintain gender anonymity online, because it keeps comments and feedback at a gender-blind level.

At this point, I blame it on the assumption that Aspergers must run rampant and is severely underdiagnosed in the dev community.
I understand your point, but "makes my eyes bleed" is not a typical comment from a neuro-atypical person.

The neuro-typical can be assholes too.

Neuro-typical people can be assholes, but they tend to understand that they are being an asshole when they act asshole-ish.

I think a big problem in the dev community is a lot of asshole behavior out there from people who don't intend to, or even _understand_ that they are being an asshole.

Regardless of intent, this asshole behavior has consequences on neuro-typical and atypical people alike.

I think nerdy/geeky/dev/asberger/whatever people need to be more mindful of how they interact with people. Unfortunately the recent asberger pride movement doesn't help.

> Unfortunately the recent asberger pride movement doesn't help.

The word is "Asperger's". 'Asperger pride' is an attempt to reduce the hateful ignorant bigotry that the neuro-atypical face every day. The kind of ignorance that leads to early death, reduced job opportunities, reduced educational opportunities etc.

Thanks for the correction, I got lazy there.

I think the problem with 'Asperger pride' is it tends to focus on how neuro-typical people have wronged people on the spectrum. A lot of times the painful truth is that person with aspergers is at least partially culpable for the negative outcome of their social interactions.

This becomes a major problem when you work in a place where almost everyone is on the autistic spectrum. There are no oppressive neuro-typical people, yet stubborn asshole behavior skyrockets because all the nerds are being dicks to each other.

I don't know your workmates, but if I had to hazard a guess I would suggest that this is probably more a function of being in a highly male dominated environment rather than your co-workers actually having autistic traits.

If somebody is being a dick because they are hunting for a specific reaction from the other person that is not really Asperger behaviour.

I think it's autism that must run rampant and that it's underdiagnosed partly because people have called it Asperger's which doesn't seem as serious. With the new version of the DSM this won't happen as often.
There is a huge gulf between Asperger's and full blown autism.

People with Aspergers are "normal" people in the sense that they are generally capable of looking after themselves, communicating and working normal jobs etc

People will full Autism have severely limited communication skills (often no spoken or written language skills at all beyond repeating a handful of phrases) and require a significant amount of assistance in most areas of life. They will often live with full time carers.

I thought Asperger's was being removed from the new DSM, so it's all autism now?
Not sure of the new terminology but these are 2 conditions that vary not just quantitatively but qualitatively.

The term Autism as it is used today suggests severely delayed language development. This is not a symptom of Asperger's and sufferers of the latter can often develop advanced language skills.

There are still people that fall under the high-functioning category that have a hard time taking care of themselves and holding down jobs. Just because you check some boxes doesn't mean you check them all, and I'm glad the DSM is removing a term that tries to generalize a subset.
I agree, but the level of care required for an "aspie" vs that for somebody with severe autism is night and day.
Think about this: this statement, right here, is a completely unfounded (i.e. you have no evidence about any of the 3 people being ASD, and the probability of all of them being ASD is really low even among geeks like us), passive-aggressive (you are attacking people with ASD but making it appear sympathetic), pseudo-intellectual (how much do you really know that you didn't read in superficial internet threads) insult (oh yes it is) toward people with ASD. Ironically, presumably from a neurotypical, who by implication is supposed to be more sensitive than the alternative.

Congratulations. You bully in a thread about bullying being bad.

I've worked with people with Asperger's and Autism in a clinical setting. I'm not talking out of my ass.
While you might not be, you're probably the exception. The typical interaction sequence is:

1. Someone is rude on the internet.

2. "Ooh, look, undiagnosed ASD, lol, most software devs are ASD."

3. Self-applause, occasionally followed by discussion about whether Asperger's is different than Autism or whether it's a spectrum disorder, occasionally someone mentions the new version of DSM. (Sometimes this really bothers someone, and then there's the meta-thing where people smirk and say that of course people with ASD don't like reclassification, etc, etc. It's so tiresome.)

I think this may well be a worthy successor to Godwin's law.

It's not just rudeness that triggers this response -- it's when someone displays a severe doesn't get it moment. The most significant moment on HN I've had of this is when someone tried to argue that sexism can't exist in tech because there's a Wikipedia page that lists 50 women with significant contributions to the field.

That sort of thing makes me wonder, if after 20-40 years of being part of our society, that is your understanding of one of the major grievances held by people out there, then there is a missing connection. You don't have to agree with the sentiment or conclusion, but if you can't even understand the complaint then you are either woefully sheltered or perhaps it's time to consider cognitive deficiencies.

And this sort of failure mode happens all the fucking time in this community.

This is exactly it.

Time and time again you see large groups of people in this community exhibiting behaviors that show that they are unaware of normal social and societal conventions, and an inability to relate and sympathize/empathize with others.

No, you see that. I see different social groups having different social conventions. The fact that you can't imagine how someone in a different social group could possibly not follow the social standards you deem correct speaks only of you, not of them.
+! on succeeding Goodwin's law with tiresome and prejudicial accusations of autism spectrum disorders (often by people who really don't understand how offensive and insulting they're being

The fondness of this community to use words like retard and retarded as insults and use implications of special needs issues as forms of abuse is disappointing given the overall level of smarts of the community. But at least that's obviously offensive. The folks trotting out autism spectrum disorders don't even seem to realize they're being just as problematic and perpetuating unhelpful stereotypes.

+! on succeeding Goodwin's law with tiresome and prejudicial accusations of autism spectrum disorders (often by people who really don't understand how offensive and insulting they're being

The fondness of this community to use words like retard and retarded as insults and use implications of special needs issues as forms of abuse is disappointing given the overall level of smarts of the community. But at least that's obviously offensive. The folks trotting out autism spectrum disorders don't even seem to realize they're being just as problematic and perpetuating unhelpful stereotypes.

Thanks for writing this. As someone who has ASD (and who thinks he is not an asshole) it always makes me cringe when someone connects being a douchebag on the internet with it. Prejudices like that makes it very hard to tell people about it when some automatically assume you're an asshole for having ASD. All kinds of people behave bad on the internet for various reasons because they can and they are emotionally detached from the people they are writing about. ASD has absolutely nothing to do with it.
Ugh, this is exactly the 'asperger pride' mentality I mention in a thread below.

You are trying to make it politically incorrect to talk about the problem of aspergers in the dev community. The parent is a bully? really? A bully? come on.

Maybe these specific people have aspergers or not, but the problem of a high concentration of socially inept people in the technology world causing strife amongst each other is a real problem.

This is a problem and it should be talked about.

Corey Haines wrote a thoughtful apology here: http://programmingtour.blogspot.com/2013/01/im-sorry.html

Only one of the three to do so thus far.

Classy. None of the "I am sorry if you were offended bullshit" just a sincere "I messed up". Take note, just about everyone else.
I agree. Everyone makes mistakes at some point and that apology seems to be the best possible way to deal with it IMHO.
Super relieved to see that - I was seriously disappointed to see Corey's name in amongst the mob. That's how an apology should be written.
Steve Klabnik has now also posted an apology http://blog.steveklabnik.com/posts/2013-01-23-node
And unfortunately it is exactly the "I am sorry if you were offended" type.
I don't think it is. I think its the 3rd kind: "I didnt say what I thought you said, but I can see how I hurt you and I'm sorry". Assuming that's true - which I think is a reasonable assumption based on how he teaches and his blog post from last year about being nice - it would seem wrong for him to post a full out apology.
no it's definitely a "I'm sorry for offending you, but seriously fuck you for using node."
He definitely said that in the later tweets. Maybe you're right - its definitely less of an apology than his comments merited.
David Cramer just doesn't get it:

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

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

All that despite confessing that he doesn't understand why the project was written:

https://twitter.com/zeeg/status/293829856381255681

Clearly. He also wrote:

"Are you mad that the Internet disagrees with you? Maybe get off the Internet?"

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

He's now gotten off the Internet because he's upset. Ironic.

Nope, still here.

I'm just not replying to you on Twitter because lol

Don't expect you to - you read it, good enough for me to know you did :-) Thanks for letting me know.

Your entire blog post is a big "The Internet disagrees with me":

http://justcramer.com/2013/01/24/being-wrong-on-the-internet...

You said something in 140 characters that was snarky and mean, that's actually not easy to do to be honest. And then you got called on it, and now you are getting criticized. Not nice, huh?

Actually, you know something... I correct myself. It is easier than I realised. I'm not sure that would be a skill I'd be proud of...
The internet doesn't disagree with him, a vocal minority of hyper sensitive cry babies and desperate white knights disagree with him. Very few people who don't care take the time to say "who cares?".
They care that you care? Why can't they not care that you care? Or is it the fact that they don't care that you care? Yet in that case then how can those who take the time to say "who cares?" say they don't care when they seem to care enough to ask who cares?

This is all very confusing.

Why is you confusing yourself posted as a response to me? You can mutter random nonsense to yourself offline, I don't need to be involved.
(comment deleted)
I take it from your response that you are the few who cares enough to say "who cares"? You sound a bit sensitive...
(comment deleted)
All you should take from my response is that I don't know why you replied with random nonsense.
A bit hyper-sensitive are we? That's the end of the thread from me though, my absurdist questions should have told you everything you need to know about my opinion of your horrid attitudes. Have a nice day: I fart in your general direction.
I just looked at his twitter feed, and he has a lot of "I made a mistake" posts. What he did was bad, but at least he is not trying to minimize it. And this thread getting to the top of Hacker News will probably teach him a lesson.
I somehow feel the "Twitter culture" itself is partially to blame. A setting that rewards short, sharp, witty remarks that skirt over the surface is just few small steps away from endorsing sarcastic, bitter, passive-aggressive or even over-the-top spurts.

It's no wonder that no one who made those stingy tweets did respond to author's replies and questions. They didn't want to start a discussion in the first place.

Fortunately, the pendulum can also swing the other way here, as they are people who readily jump to defend against harassment.

A good test of character is how one treats those that they perceive to be lower status than them.

I'd say these guys fail that test.

It might be better to say that they failed last night and leave a more general judgment open.

It's a good thing that people are calling this out and giving the participants cause to reflect on the problems with that kind of conversation (along with the rest of us). But I think it's also good if we don't rush to reduce people to some of their meaner moments. A lot of the participants have done a number of good things in the past, and they may well apologize and make this the exception rather than the rule.

I was being pithy. I don't mean to suggest that they're awful people.

I think in the open source community there's an ugly culture of celebrating people that act like jerks about technical things that reasonable people could disagree on (the poster child of that probably being Linus). I don't think that's a useful culture to have around. I think the best way to get rid of that culture is to make clear that those people can go fuck themselves. Just because you can be a dick doesn't mean you should, and the community should reflect that.

I'm not the positivity police, I don't think people should be nice just for the sake of being nice, but there's no reason to go pick on someone's project just because it does something you'd rather do with another tool.

So you ascribe personal, leveled, directed malevolence directly against Heather Arthur and her replacer library to their actions? You don't think it had anything to do with just doing it for kicks, anything to do with how people see Node?
(comment deleted)
Folks on internet fail to understand that there are people on the other side of terminal and some civility is warranted. All of us should discourage uncivil behavior by non-participating in a silly conversation.
(comment deleted)
the hell are you talking about?

every person that created something worthwile in this world has been ridiculed. for good reason. i hate the fact that people here spout that uber positivity crap.

you know what, you mess up -> you get ridiculed, what do you do? you make something better.

The world is not this pretty flower place where everyone can be happy and strive at the same time. there is no rich without poor, and there is no great without bad.

please everyone be happy is a stupid argument to make. it actually makes people NOT improve.

it has nothing to do with elitism developer community. it's the same everywhere. you don't get patted on the back for doing something mediocore at best, well that is, unless you're an mba.

I fail to see what is being wrong with being positive and happy. We should strive to make the whole world as universally happy as possible.

We can improve others with constructive criticism.

Clearly you can take it too far. If somebody does something wrong, are you allowed to tell them? Even though it is going to be negative? Do you never correct your children? Do you keep people on who need to be fired?
There's a rather large difference in saying "what you've done is not only useless, it's so stupid it's making physically ill" and providing constructive criticism

It's the shit sandwich approach, say something good, say something critical, say something good.

Tearing someone down, just because you can is not productive. I wonder if these same tweeters would have said the same thing to this persons face, and then turned their backs and walked away.

So explain to me how she messed up. Because I don't see any messing up on her part. I see a number of assholes (and some generally good folks who did mess up) unable to get out of their own headspace and into someone else, but that's about it.

And there is a large gulf between "patting on the back" and being an asshole.

> If I ever start a company the #1 thing I will look for in others is positivity.

Good luck with ever hearing about any problem before it's too late to fix it then...

Now hold on... you can, in fact, raise issues in a positive way.

"Hey Larry, after I spoke yesterday I checked and we've got corruption on our RAID array... I think I can work towards resolving it, but if not then we need to come up with a mitigation plan."

vs.

"Larry, we've got corruption on our RAID array. I told you yesterday and you didn't work fast enough on my suggestions, so now we're all screwed. I can't believe your stupidity!"

Sure you can, but I suspect that if positivity is the #1 priority, you're pretty likely to see issues ignored or hand-waved away.
No more so than if you were extremely negative and played the blame game. Ignoring issues is not what I'd call positive though. That's just delusion.
Being positive in the face of unrealistic deadlines is exactly that, delusion, and it's a pretty damn common and popular one in a large percentage of all software projects.

Look, I'm not saying that a positive attitude is bad, just that it definitely shouldn't be your #1 priority as proposed in the first comment I was replying to.

No one taught middle school kids how to deal with emotions.

That's because the adults around them don't know how to deal with them.

We are educated in a math & science heavy society. That's good. However, it puts the focus on evidence. Emotions don't leave much of a trace unless you act on it. So we use behavior resulting from emotion as evidence of reality and ignore the experience of reality.

Then we say, "be real" and cut off an entire spectrum of reality -- that of experiencing emotions.

These are the makings of the shadow side, the Jungian shadows. When you disown or suppress experiences, then they get stronger.

So yes. We have not grown up because we don't know how. Or at least, no one told you how.

You cannot "get over" negativity. That's a form of rejecting something you don't want to feel. The only way out is to accept the experience of it as is, without rationalizing it and without acting on it. That's probably the hardest thing you will ever do in your life, but the most important if you want to grow as a person.

There are several methods by which one can do this. One of them, called vipassana, was taught to some prisoners with great results (http://www.dhammabrothers.com/). However, you don't need to be a criminal to use this.

Serious question to you and any offended people here: what do you think of sites like The Daily WTF? Is it an anathema to any civilized person and the owners should be ashamed of themselves and apologize? After all there are real people behind every TDWTF story and if - god forbid - someday they stumble upon it they may recognize themselves and their feelings will be hurt!

Or is the whole point here that Github accounts are not (necessarily at least, as in this case) anonymous and as long as no individual is identified personally we can all share a chuckle at their crappy code?

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.

  > 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.
Hum. It reminds me of performance art, to be honest.
It does, any art really. If the software were the brushes, no piece of software is right for every artist.

Should we trash people for making 'yet another social network' or 'yet another online map database'? This is even a smaller scale project and barely worth the effort to complain about.

Programming can be a much more creative exercise, and sometimes people forget that. I don't always do things to be useful, I do them to be fun and educational.

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.

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.
Having tried Ruby for a year, I have experimented this myself. With a strong OOP background, I can assert that it's not even an elite that enjoys ridiculing noobs.

It reminded me of this: https://www.youtube.com/watch?v=YX3iRjKj7C0

Also, just look at the top comment in that video. The irony.

Ruby is an awesome language. The community, particularly the community that revolves around rails, and the "uncle craftsmanship" baloney, leaves many wondering WTF. I can't stress enough how nice it is to use the ruby language to code and solve problems.
I'm not a regular user of either, but I've much more enjoyed my time playing with Clojure and lurking in the community. For the most part they seem like solid people.
As much as the "truth" of the stereotype of the jock PHP developer or smelly, fat, bearded C developer. That is to say, those people surely exist within each world but it's a shame when others lack the peripheral vision to see the true, bigger picture without falling into stereotyping.
That's what you're taking from this? Really?

As someone remarked elsewhere in these comments:

    > There is no "open source hivemind" so please don't 
    > disparage the millions of open source coders who 
    > will never make the frontpage of HN by lumping the 
    > entire conglomerate into one community.
Oh is that what it is? The tweets weren't specific enough. Basically a point and laugh response but I didn't get it. I looked at the code briefly and it certainly seemed odd that node/javascript was being used as a command line tool to do something that can already be done with other tools, but this person created this to make their life easier.

Created. Had a problem and wrote working code to solve their problem. Then shared it. Not really something to point at in mockery.

It's disappointing that someone like you who is trying to share information and learn together would be attacked like that. People are awful.

I have a new policy of not responding to any comment that includes any form of ad hominem argumentation or any continued argument that is full of logical fallacies. It's just not worth the time to be arguing with people on Reddit or HN.

I have to agree. You need to look at the quality of the people who like you vs hate you.

There's plenty of haters on the Internet. As jrockway said (just a couple comments up): "If you do something, chances are someone hates you. Why? They are jealous that you are getting attention instead of them."

I heard a metaphor once: You've got a bucket full of crabs. If one crab tries to crawl up and out of the bucket, the other crabs drag him back down.

Try your best to ignore the haters.

I looked at the actual code and, although I'm no expert with Node, it looks pretty reasonable. The only things I can find to criticize was the word "replacize", which makes me cringe much like "performancing" or "optimizely", and the use of == instead of ===. But I think reasonable people could disagree about those things. Someone who isn't me might think "replacize" is sufficiently humorous to retain, for example.

The nesting goes a little deeper than I would like: https://github.com/harthur/replace/blob/master/replace.js#L9... is 7 indents deep, for example, where I think something like 4 indents is a place where I should stop and start questioning what I'm doing. But three of those indents are a tradeoff forced by the node.js async API: anything that has to wait on the result of an asynchronous operation must necessarily be in another function, and you can choose whether to nest that function deeper or to move it somewhere unrelated and give it a name; and you have to use error codes instead of exceptions for error handling from those operations.

The program actually includes a synchronous version of the same code, where the line corresponding to line 90 above is https://github.com/harthur/replace/blob/master/replace.js#L1..., the blank line following "var text = fs.readFileSync(file, "utf-8");". If that fails, it throws an exception, so the "if" block isn't needed, and the code that follows doesn't need to be nested.

This is the agony and the ecstasy of Node: everything is (normally) asynchronous, giving you unwanted levels of nesting, but on the other hand, everything is asynchronous, so you can process the files in the order that the filesystem finds it most convenient to return them to you in. I wouldn't be surprised if it turned out that Heather's code was typically much, much faster than find | xargs -P sed, simply because it was able to productively manage many more outstanding I/O requests at once.

Line 90 also points to a pitfall that often befalls us with parallelism: at some point parallelism stops being productive, so you have to limit it. In this case, Heather's code throws the ball back to the user and suggests that they rerun their command in synchronous mode — albeit having partially completed the replacement task, which might be a bad failure mode, depending on whether your replacement is idempotent.

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.

> 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

What a great idea to go around calling other people stupid for creating personal open-source projects that they enjoy using, mocking their competence and treating them as if they should go away because they aren't as good as you. What a productive use of a developer's time.
Even stranger is the fact that harther isn't exactly a novice programmer: apparently, she's part of Mozilla [1], and wrote brain.js [2], a neural network library in JavaScript with almost 1,400 stars on GitHub.

[1] https://twitter.com/harthvader

[2] https://github.com/harthur/brain

brain looks pretty cool and I also noticed she not only works at mozilla but also regularly speaks at conferences. Weird how judging a person's competence based on looking at a single for fun open source project may not be a great idea.
which is doubly embarrassing for the people insulting her because odds are anyone taking the time chastising someone's hacky duct tape script as if it were a Real Thing Worth Talking About probably has no comprehension of real algorithmic work, real computer science, like that needed to implement neural nets.
To be fair implementing a simple neural network is probably about par for the course as a sophomore CS undergrad project.

The basic algorithms you need can be found via google.

In my (extremely limited) experience the much more difficult part is using them to successfully solve real world problems.

Sure. My point is anyone who really seriously gets on their high horse about how great they are by looking at a simple little script that is essentially background noise for professional engineers are probably pretty far removed from even a sophomore CS undergrad level of sophistication.
Certainly, although in my experience smart , sophisticated people are by no means under-represented in the "asshole" population.

IMO the problem comes when you have people who's entire ego is based on being smart. In the past they probably had their egos massaged by getting the highest test scores in class etc and "winning" in that sense. Since the world does not work like that anymore they feel that they have to "win" at github instead.

Seriously, what a complete prick.
Here's the thing, when someone like Linus Torvald says things like that, we applaud him for it.
Who's "we"? HN, let alone software devs as a whole, are not a hivemind.
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"
And with Linus, it's not usually about the person (unless the person is actually being obstinate or negligent).
And here I was thinking that Linus was the one guy in open source who says "moron" a lot.
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...

Oh, the C++ one came to mind immediately when I read the parent comment.
"Some of the threads"

goes ahead and provides one link everybody here has read by now

does see or mention context

Linus doesn't say things like that.

If you don't understand the difference of context, well, look again!

He does. This was pretty nasty.

http://shutupmauro.com/

it is nasty but it is useful and when you a kernel maintainer is probably deserved.
Yelling at someone you're in an argument with is a world away from picking on a stranger.

(It's not necessarily good, but it is categorically different behavior.)

Dressing down someone like that on a public mailing list is absolutely picking on them. It's not an argument, and is basically no different to the behaviour here.
It is basically worlds opposite to the behavior here.

a. Linus uses swear words. Steve Klabnik used none.

b. Linus provides substantive criticism. Even if you need flame-retardant underwear to hear it.

c. Linus never ever ridicules outsiders.

So what do the two have in common, again?

I loved the mauro thread because you're seeing Linus talking to an insider of an influential project and tell him that the relative outsider with no status is right. By doing it publicly he reinforces the culture of the kernel: we don't break user code. We are a meritocracy, and if you're wrong I will not be shy about letting you know.

He could do it with less profanity. But I heartily support his doing it so emphatically. Nobody else on lkml will brush something off as a userland bug for a year.

Ridicule is an extremely poor motivational tool, and when someone of Linus' standing does it, other people think that makes it somehow ok.

There are many ways to reinforce meritocracy, or reinforce a culture without telling people to shut the fuck up in all caps.

"Linus never ever ridicules outsiders."

That's actually not true. His "security monkey" references towards other projects being an example.

If someone brings up their child in a way I think is wrong I may disapprove, but it would be wrong of me to be abusive about it. If someone deliberately hurts my child and then makes excuses, I may very well end up serving 10 years to life for what I do to them.
Do you have this opinion when you are doing it?
Do you really not see the difference between Linus Torvalds recalibrating a kernel contributor and three nobodies of questionable "conference-fame" picking on a random stranger?
No, I don't see why there should be different standards for civility in the two situations.
(comment deleted)
I don't see the difference. Could you perhaps explain it?
Sounds like a general reprimanding a subordinate who has put people's lives in danger repeatedly and needs a straightening out. He clearly explained what the problem is, and expressed frustration that this had been explained before. Quite different from what is going on with this post.
Linus has in the past called OpenBSD folks a bunch of "masturbating monkeys" because of their stickler like attitude towards security.
I think it's inaccurate to suggest Linus is universally applauded for his rude behaviour. The last public outburst that caught wider attention than the LKML seemed to quite divide programmers in terms of its appropriateness. Personally, I found his attitude repellent and his tone unjustified.
Linus is often rude, but AFAIK not gratuitously, but I may have missed some of his public messages.

But even if it's the case, he is rude with the guys who work with him, his "captains" that he knows since a long time.

He do not bash a random project on Github totally unrelated to him just like that.

You can't compare.

No, Linus is often gratuitously rude.
Got a link ? Of Linus being gratuitously rude with a perfect stranger ?
Why does it need to be with a stranger? Rude is rude.
Linus telling someone to shut the fuck up last month: http://news.ycombinator.com/item?id=4962912
I don't think another maintainer on the Linux kernel qualifies as a perfect stranger. The team isn't /that/ large.
Different because Mauro is talking on behalf of the Kernel and claiming obviously bad changes are good ones. Linus is reprimanding a subordinate that is supposed to be one of the most well-informed members of the Linux community as a kernel maintainer -- he's not criticizing a stranger for posting a tiny script in case it "might be useful".

Linus is DFL (not so benevolent sometimes) of Linux, and can lash out when one of his trusted lieutenants is acting like an idiot. What these guys did is call out a stranger on the street and said "YOU SUCK!"

Be that as it may he was a complete dick. I wouldn't want to work with someone like that, no matter who he is.
You don't have to. Then again, that's not a criteria for anything.
My guess is most people prefer not to work with assholes. And its a pretty good guess.
He's usually rude to code presented to him, but he doesn't go out of his way to diss code. It's a big difference.
tubbo 0 minutes ago | link [dead]

He's usually rude to code presented to him, but he doesn't go out of his way to diss code. It's a big difference.

Linus doesn't say things like that.

He goes after people who enter discussions without bothering to understand the details or the history. If you want to code your own kernel in Java, that's your prerogative. But if you come to lkml and start preaching C++ advantages, you will get flaked.

Not to contribute to the mindless hate, but look at the dude's Twitter photo. He's clearly an eccentric fellow. And also, apparently, an asshole.
Steve Klabnik:

"I find it incredibly hard not to be judgmental.

I'm not sure what part of my personality makes this happen, but even when I try to curb tearing down other people, I end up doing it anyway. I'm not sure if it's just me, but I think part of the problem is that these kinds of things are rewarded."

http://blog.steveklabnik.com/posts/2010-09-24-trolling-is-a-...

Textbook weasel apology.
I don't think textbook weasel apologies are usually done several years in advance.
Note the date; this one was from 2010.

His most recent post is http://blog.steveklabnik.com/posts/2013-01-23-node

And it's still a weasel apology
Generally a weasel apology would be:

"I'm sorry If I made someone feel bad"

Not

"I am sorry. I feel terrible that I made someone else feel terrible."

Corey's apology did feel nicer, but I don't think that Steve's was a bad apology.

In his "apology", Steve says three times that he was "accidentally" an asshole. That doesn't sound very sincere.
He also talks more about his feelings than the person he's apologizing to!
From that post:

> Twitter makes it so hard not to accidentally be an asshole.

No, I'm pretty sure being an asshole makes it so hard not to accidentally be an asshole. Plenty of people, including Heather, weren't assholes on Twitter.

(comment deleted)
"I am too cowardly/lazy to actually treat people with any sort of respect, and really I never matured out of kindergarten bully tactics"

Am I wrong for interpreting it this way?

> 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

I can't speak for him, but based on another comment further down ("I'll be over here in not-node"), it read like a dig at Node itself by proxy / extension.

> Yes, let's take the opportunity to condescendingly insult their mental competency.

Indeed. This type of behavior is almost never justified, but particularly less so when the object of scorn is clearly an exceedingly talented programmer. One glance at her GH profile reveals several well-used open source projects, including a neural network library and a bayesian classifier.

It really does drive home the point that if this can happen to someone of her caliber, then it really can happen to anyone. In fact, it probably does - except with less public attention.

One glance at her GH profile reveals several well-used open source projects, including a neural network library and a bayesian classifier.

Thanks so much for pointing that out (and thanks Heather for writing it :P)! I would have missed it otherwise, and I have always wanted to play with neural nets as well as bayesian filters.. this seems very friendly for me to get into, so it made my week(end) if not more :)

I might be an emotionless robot or something, but I don't get the furore over this.

Everyone writes crap code sometimes (viz. github.com/007 aka craptown USA). Just because you are "exceedingly talented" or have "well-used" projects doesn't mean everything you write is rainbows and unicorns.

If your project is useful to you, then screw everyone else - why care what they think?

https://github.com/harthur/kittydar is useless but brilliant. I'll be bookmarking it for the next time I need feature detection in JS, and because it mentions HOG descriptors.

https://github.com/harthur/replace is useful but not-brilliant. I'll bookmark the 'sed' or 'awk' manpage instead.

But it seems that complaints against the replace code wasn't about the code itself. It seems it's more about the fact that it isn't sed, that it's javascript, that it's node, and that they themselves would choose not to use it. For all those reasons they chose to publicly criticize the project in what can be considered a demeaning way. For an "open" source community, that's a bad thing and deserves this furor. In fact, it should happen more often than it does.
This is scary. I share a lot of bad code in various places, that I created in process of learning or just because I needed something done quickly. I always inform that this code shouldn't be used in any system "as is", but may serve for learning purposes.

I know that a lot of people do that. And I find it incredibily useful, sometimes finding a snippet of code saves me time from jumping extra hoops, just because (for example) driver misbehaves or documentation is incorrect/incomplete.

I hope this incident doesn't stop anyone from sharing their code and findings, no matter how good or "professional" they are.

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

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.

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

What can I say?

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.