What It's Like To Be Ridiculed For Open Sourcing A Project
harthur.wordpress.com
harthur.wordpress.com
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.
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"
It's not that they're criticizing a woman, it's ~how~ they go about it.
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.
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.
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.
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.
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.
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.
The neuro-typical can be assholes too.
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.
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.
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.
If somebody is being a dick because they are hunting for a specific reaction from the other person that is not really Asperger behaviour.
Why not, out of curiosity?
(http://www.amazon.co.uk/Its-Raining-Cats-Dogs-Expressions/dp...)
(http://www.amazon.co.uk/Asperger-Dictionary-Everyday-Express...)
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.
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.
Congratulations. You bully in a thread about bullying being bad.
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.
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.
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.
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.
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.
Only one of the three to do so thus far.
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:
"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.
I'm just not replying to you on Twitter because lol
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?
This is all very confusing.
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.
I'd say these guys fail that test.
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 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.
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.
We can improve others with 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.
And there is a large gulf between "patting on the back" and being an asshole.
Good luck with ever hearing about any problem before it's too late to fix it then...
"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!"
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.
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.
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?
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.
Also worth noting, both [Steve and Corey] have published apologies on their own blogs. Both are worth reading.
I know Corey and don't really know too much about what happened here, so I'll only say he's one of the most positive and supportive people I know.
But the internet can be a strange place. How do you apologize to strangers? With blogs? I mean, these pieces are going around being viewed by hundreds of people. Is it really helping? I'm not sure, but, at the very least, people are trying.
Heather, don't take it personally - your code is fine! JavaScript, on the other hand, is a wounded warrior by now..
"Twitter makes it so hard not to accidentally be an asshole."
"But open source is right and we are the good guys?!", or... "But I know those guys and they are usually really cool!"
We want to categorize people as being bad or good, and it messes with our brain when we think we may have to re-categorize. It's more useful to realize that we all have a capacity to do both good and harm. It's also more useful to judge ourselves than others. Recognizing the need to change is the beginning. I know that I need Outside help to maximize the good and minimize the bad that I am capable of.
If one feels that 140 characters isn't sufficient to correctly represent one's nuanced thoughts, then don't tweet.
I doubt you could find many twitter accounts (barring commercial PR stuff) whose history is entirely free of rudeness.
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.
This is really interesting, maybe you want to think for a minute yourself before I reveal the reason. When I watched the documentation to the end I was surprised, but when I think about it now I'm not surprised anymore:
Car driving involves no eye contact, in fact you hardly ever see the face of the other person. People behave differently and more nicely when they look into each other's face. One illustrative example were Laughter Clubs. People go there to laugh. So when a new member joins, all others stand around him, start to laugh and look him in the eye. No matter if the laughter starts artificially, only few moments later the person in the middle cannot stop laughing... ;)
Back to the topic: Twitter is probably the most impersonal way to communicate. E-Mailing with my tax consultant is more personal. I cannot tell how often I realized that misunderstandings were created with E-Mails (which have arbitrary length.) Or even text messages which are limited to ~500 characters; but Twitter? 140 character stubs to talk to complete strangers?
Look at this quote:
> 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
What a prick!
Note that of course there's an element of "uncomfortable truth" to this—evaluating programmers' ability is probably a good thing, and he's right to a degree. We all know amazing and experienced programmers who write libraries that are like diamonds in the rough compared to other coders' work, but 1) you have to be tactful; you don't put people down for their code no matter what, because 2) you have to help them get there, and negativity is not how you do that.
There's no such thing as accidental one-off snobbery.
You are clearly well versed in this subject. So, how would you attribute this remark?
Off-hand snarkiness can be pretty mean, but that doesn't mean that everyone who engages in it is a fundamentally bad person; In fact I sincerely doubt anyone here has never written something similar.
People are treating "being an asshole" like an exceptional state of being, when in reality we're all assholes to someone sometimes. To pretend that some people are just intrinsically assholes, and everyone else is incapable of it, is a pretty surefire way to end up being the next asshole.
The reality is that snarky, flippant comments are easy, and it demands a level of self awareness to not engage in it. Recognizing your own ability to be an asshole is part of that.
Given his apology, he clearly would've not made that remark in person, nor would have he done it if didn't have a receptive audience that appreciates such snobbery.
And that's basically what we shouldn't do.
Here's the thing - if you ever even consider saying things like this to someone on the internet, you're an asshole. It's not a one time accidental thing. Nope, it's in your personality. I hope I never meet either of these two individuals, but if I ever meet them face to face I will make sure to tell them exactly what I think of them.
Don't you think you're taking this a bit far?
Here's his quote from twitter:
>Ever wanted to make sed or grep worse? http://github.com/harthur/replace
In the world I live in, that's called being an asshole.
Look, I'm not saying these guys should apologize (in fact, if this is how they apologize it's probably best they don't), I'm simply stating that they're dicks. I know a lot of computer programmers just like them.
Edit: And I hate working with people like them. I don't care how brilliant they are, programming is a team sport in most places. If you're a jerk I don't want you on my team, no matter how many awesome sed scripts you can whip up.
Fact: The vast majority of people would take the twitter conversation Heather posted as a personal attack. Not many people are able to separate attacks on their work product from attacks on themselves (for good reason - since I feel like most people derive a sense of pride from their work).
I dare say it would also take an asshole to not recognize this fact and make rude comments and not realize someone would be personally offended even though "it's just some code".
But I'm going to hope it's not just a post you disagree with. Just like I hope you don't call code bad because it uses OTB or omits semicolons. It should be failing to solve the problem it sets out to solve, and in an interesting manner. (Note: I have not looked at the code tweeted about.)
Edit: Wait how did THIS post get downvoted? I can understand the earlier posts but I can't even imagine what's objectionable about this one.
The outrage is not about constructive (or even unconstructive) criticism of the code itself (which appears to be fine): At least one of the guys ridiculed the author and questioned her competence for the sole reason of implementing a subset of the features of GNU find+sed on top of Node.js.
Thank you for the useful info.
You are way too attached to your code.
. . .
What these guys said was still extremely rude.
> You are way too attached to your code.
For most people this is subconscious. If you're not, good for you.
Someone who's so attached to their code that they can't accept criticism (even harsh criticism) of it is pretty much guaranteed to be writing crappy code.
You'll notice that harthur didn't flip out as if her child was insulted. Instead she asked for constructive feedback, a sign of professional maturity.
Whoever came up with the orig quote does have good sense. I've worked with a lot of people ranging from NASA to new hotness start ups. I would say 95% people would be pissed no matter the skill level if you just made fun of their work as opposed to offering constructive criticism.
> Someone who's so attached to their code
I'm sure that most people who care about the quality of their work is somewhat attached to their code.
> that they can't accept criticism (even harsh criticism) of it is pretty much guaranteed to be writing crappy code
The issue at hand isn't that Heather can't accept any sort of criticism. The issue is still that you don't have to be a fucking dick to criticize someone else's work. It's not hard to offer constructive criticism as opposed to just trashing and making fun of something someone worked on for months or even years.
> You'll notice that harthur didn't flip out as if her child was insulted.
Umm she was crying; not only that - she posted that she cried. I would say she was pretty upset; she just handled herself well despite the circumstances.
Everything in this world is subjective. When you talk about someone's work you are inevitable bringing some degree of comparison into it, and human ego has huge troubles dealing with that.
Nobody ever forgets an insult, it comes back sooner or later.
I wasn't saying people wouldn't get pissed if you insult their work. I'd be annoyed if someone made fun of my work. But I certainly would not be as angry as if someone insulted my child. Or even my dog.
> The issue at hand isn't that Heather can't accept any sort of criticism.
Obviously not. She handled the situation with an overabundance of grace and asked for meaningful criticism.
> The issue is still that you don't have to be a fucking dick to criticize someone else's work. It's not hard to offer constructive criticism as opposed to just trashing and making fun of something someone worked on for months or even years.
Absolutely. These guys were being jerks. My comment was about being as attached to your code as you are to your child.
> Umm she was crying; not only that - she posted that she cried. I would say she was pretty upset; she just handled herself well despite the circumstances.
I'd say the fact that she asked for feedback is clear evidence that she is not attached to her code the way she might be to a child. Try walking up to a parent and tell them that their child makes your eyes bleed and let me know if they ask you for constructive feedback, vs hitting you, screaming at you, spitting in your face, or just walking away scowling.
It's not "a single skill" as if you were telling Torvalds that his juggling skills were crap and he should keep his day job; if someone has enough coding experience that they're releasing OSS on GitHub, coding is quite likely their job (or they're in school to make it their job).
So yeah, snarkily saying that the product of someone's career activity makes your eyes bleed (or whatever) is demeaning to them -- i.e., directly attacking their dignity and others' respect for them.
Also: "should" != "is", I'm afraid.
That's a beautiful bit of writing and thinking, right there :)
There's a difference between "being an asshole" and "sometimes acting like an asshole". We all do the second thing sometimes.
A snarky comment and a bad apology may be an instance of the second thing. But they don't imply the first.
Compare another toxic noun, "racist". There's a difference between "being a racist" and "making a racist comment". If people could apologize for the latter when it happens, understanding that it does not imply the former, the world would be a better place.
Sorry chief, I'm gonna have to go ahead and disagree with you there. The snarky comment can be forgiven. (although I've since read other tweets/posts from David Cramer and it appears as though he really is that abrasive all the time)
By contrast, a bad apology is a clear indication of someone's true nature. If the apology is backhanded or otherwise poor, it implies a lot. If you issue an apology but don't really feel sorry, then you're just doing it to placate others, and you really are a jerk.
Holly Ass, Twitter, by essence is an assholy thing. What can you expect from someone who has "3500 friends" or "50 000 followers" ? Follow the Holy Shoe of Jerusalem :)
Their actions weren't advisable by any measure, but you've certainly demonstrated a willingness to make up your mind about them, based off a number of extremely extremely short pithy statements. Dial down your indignation, friend: help us get rid of this reek.
I agree with you and gave you an upvote. Maybe my comments do make me look like a "tosser" - but these people were behaving like bullies, plain and simple. And man, I can't stand that shit. I see it every day. People will go out of their way to make others feel miserable. Or they use their power/standing/influence to pick a fight with someone weaker just because they can.
The fact is Nodeites are renowned for rehashing the entrenched. It also, gasp, has callbacks. These people weren't gentle in pointing out a capital example of just these two things. I don't think that makes them bullies or bad people, nor do I guess they even considered the human behind the works nor hardly the work itself: my _guess,_ and indeed, everyone is guessing here, is that they were making a crack on the idea of replacer, as justly emblematic of what Node is renowned for.
And although I think one would be a fool to become so polarized in view as these people showed themselves to be, I would much rather we have open channels where such conduct is permitted, where we can be a little low brow, boorish or lively, and express our ruffian selves: I'd rather have a wildness. I prefer tolerance and resilience. I loath the intolerance that says we must sterilize and purify and be of good behavior, must watch ourselves constantly.
Harthur talks about feeling like her identity has been injured, wounded forever. Yet here we are condemning and slining insults, armed with the zeal she has given us. Here we are, enacting new moral codes, legislating terms where nothing but support and good manners towards one another will be accepted. She felt that she had not been tolerated, not encouraged, yet the response is to mandate intolerance of another behavior, yes a boorish one, but regardless, just another tripline for ourselves to unintentionally trip over. Let's instead seek discourse- which she did- and failing that, tolerance. Let's not go troll hunting, lest we lay too onerous a minefield for any man to hazard.
A girl got caught in the crossfire of polarized communities. She cried. Everyone felt bad, many got indignant and decried other people and other communities for their action or contact with the affair. The internet got more uptight about itself. That, to me, is the absolute losingest situation imaginable, and I'd handily pass out yellow cards to 80% of this topic as contributors towards winding ourselves up, of taking ourselves too seriously, of ascribing way too much levity to an event that was tiny in size, and which we have not been given a codex to understand- it remains a context free situation, one we merely make projections about, without knowing what the real intent was, we just know people tweeted, for whatever reason, because something struck them, and they created, made and shared new content about their experiences.
They shared. I don't understand, they haven't explained, I don't think I'd like it even if they did explain it better, but these were people keeping themselves amused, first and foremost. That that would be subject to so much scrutiny, the cause of injury, is itself the most tragic here. We need to be tolerant, and find good, not focus on censoring bad or fretting about our identities, as first Heather did, and now the three authors are likely doing.
Sorry for labeling your writing as tosser like, not cool of me. I feel like ascribing intent to what happened is an impossibility, and even with bad intent I'm still very uneasy with censoring, with mandatory good behavior. I beg for de-escalation.
"At no point in your rambling, incoherent response were you even close to anything that could be considered a rational thought. Everyone in this room is now dumber for having listened to it. I award you no points, and may God have mercy on your soul. " - Billy Madison
Man I love your version of tolerance.
First things first, bullying is not always conscious. You seem to imply that and I happen to believe that is not true. Someone can act bullying-ish without being a bully. It happens. It sucks, always. It sucks especially when you're not in fact a bully and you didn't mean to act like one. (someone made a comment about "being a racist" and "saying something racist". It's similar.)
This point has been made over and over again: Someone with such a large audience and such a public channel has a certain responsibility. For better or worse, they represent a certain part of a community, they are looked up to. You can't deny that with a certain amount of, let's say "Power" comes a certain amount of, let's call it "Responsibility" ;)
And that responsibility is that they can't afford the same boorishness and low brow-ness on their e.g. public twitter channels. It's not just a developer expressing an opinion anymore. It becomes a community thing. I even read tweets in German, bashing this github repo. And when it goes that far, the vitriol in the air just grows exponentially. People don't think about it anymore, it's suddenly a hive mind thing. That's why it spreads so quickly. Monkey see, monkey do.
It may have been only one tweet per person by three people, but they happened to be high-profile enough to spread it far and wide. I also want to keep the communication channels open and tolerant, but it is important to conduct yourself in a courteous manner that you would also use face to face. Especially if you have follower counts in the thousands or ten-thousands. (it's a tight-knit community...)
I don't, however think that the public communication channels need to be tolerant or indeed designed for low-brow, ruffian, boorish behaviour. You can do that at home with your friends. Or indeed on Jabber/XMPP. Or on your own forums. Or mailing lists. Not that I would want to ban people from exhibiting these behaviours on public channels (To the tolerance-mobile!), but I would like to see the community frown upon them. In my opinion, they add very little value to the content and they benefit mostly the person exhibiting them and not the community at large. That to me means definitely that it should stay in private circles, especially if it can be detrimental to a single person.
You say that the community doesn't do itself a favour, reacting as harshly as that. But many of us (I think) love the idea of open source. Many of us would put out a small tool like that on github and we would probably be upset if someone (seemingly) just took a quick look at it and go to twitter and just essentially start a high profile pitchfork mob. That is why the reaction has been soo strong and passionate.
Also, the fact that Heather got caught between communities warring (apparently. that was not known to me...) is fairly irrelevant. This kind of conduct needs to stop. If someone wants to duke it out on twitter, take it up with someone who 1. agrees to it, i'm sure there are enough zealots in either community. or 2. is of a similar high-profile stature.
Some thoughts on what was said, what was meant, what was perceived. What was said: "I cannot even make this stuff up [link to gh:harthur/replace]" What was meant [speculation?]: "Hmm, I wonder why someone would remake sed with node.js? Weird." What was perceived [speculation?][citation needed]: "OMGWTF, LOOK AT THIS IDIOT MORON!!11 DOESN'T TEHY KNOW THAT THIS IS LIEK SED BUT SHIT? ALSO NODE.JS, LAWL!!!11"
This is only one of the examples. This is a problem, agreed? Most people seem to forget that perception is the most relevant of these three things when you conduct yourself in public.
Wow, this got more rambly than expected.
PS: To everyone that says "grow a thicker skin, the world is bad", please don't do this. It should be very reasonable to expect people to not be idiots. It's not a stupid thing. It's something we as a community should strive for. We should be moving towards a community that frowns upon these behaviours, protecting the new and the defenseless. (What you do in your startup world is none of my business, of course.) Why this hit so close to home for Heather [speculation?] and many of us [speculation?] is because we feel safe in this community and we didn't expect to [citation needed] be backstabbed out of our own ranks.
That.
Have you really never made a comment without fully thinking out the ramifications, without missing some of the consequences, or just simply without really thinking period? People say shitty things sometimes, but labeling them as an asshole for all time based on that is patently ridiculous.
They picked a repo on Github that they thought was duplicating functionality in Unix (oh the horror!) and engaged in classic schoolyard bullying. Publicly shaming the code and the author, apparently to make themselves feel better and show the world how smart they were. And at the end of it, the apologies they issued after the internet turned against them were poor.
So yes, I do occasionally say dumb things, but I'm never a bully. If I say something mean it's because it was provoked. And if I need to apologize for something, I do it with real contrition.
If you want to judge a person with any degree of finality by one isolated incident that you barely were involved in, that's your prerogative. I think that speaks more about you than it does the person. Hopefully you'll give me some evidence that changes my mind, I'm at least still open to that.
http://blog.steveklabnik.com/posts/2010-09-24-trolling-is-a-...
This post was from 2010 where he admits he's a jerk and can't help it. I think that pretty clearly is a victory for my thesis.
The man HIMSELF admits he is intrinsically an asshole, and that even when he uses his real identity he can't help himself. Yes, he's trying to be better. But an alcoholic trying to fight the bottle is still an alcoholic.
Since we are talking about insults, reputation and constructive criticism: Does HN think the quoted text is appropriate?
Personally I think it is about on par with "makes my eyes bleed".
Seriously, what an asshole.
You don't have to like what he said but he puts it in context and within the realm of Twitter - a 140 limited space of communication.
His original tweet was "Ever wanted to make sed or grep worse?".
Really. Can we not be critical on the internet any more?
And here is EVERYONE saying worse things about him in the comments!?
Go look in the mirror people. I'll take the downvotes.
[updated: typos]
This is part of why I dislike Twitter - the 140-char restriction supposedly makes you to the point and concise, but in reality it just encourages snark and imprecision.
It's a world of sound bites, and "Ever wanted to make sed or grep worse" sounds wittier and has more jazz than "I really dislike this open source project and here's why."
That said, if a platform disallows you from being clear and fair to fellow people, don't use it. Ultimately the responsibility to be good to one another is your own to enforce, not Twitter's.
> "Can we not be critical on the internet any more?"
Honestly? No. The internet is full of flippant, callous, outright dismissals. It's reached epidemic scale - and it extends far beyond our little corner of tech. Everyone wants to have their little sound bite hating on something, and it's juvenile.
Given the current state of things, IMO criticism demands a higher standard than ever before. It's not that we can't be critical, it's that we can't be critical without qualifying and substantiating said criticism - there's just too much "hurr this sucks" floating around.
This may necessitate using communications platforms that permit more than 140 chars at a time ;)
> the 140-char restriction supposedly makes you to the point and concise, but in reality it just encourages snark and imprecision.
This is, of course, a false dichotomy. It does both, depending on the author, and the author's mood. The solution to this problem is to not follow jerks on Twitter. Follow cool people whose tweets have wit, poetry, interesting facts, and/or links to the same.
140 characters forces only minimalism, which exaggerates any number of latent traits, good and bad.
See my other post further down the thread. One of the prevailing attitudes I'm seeing in this thread is the notion that jerks/assholes are somehow exceptional. We're all more than capable of being terrible to each other, given the right context and the right triggers. Pretending that jerks are somehow a different class of people from "the rest of us" is folly.
No one is solely defined as "jerk" - most people have valuable things to contribute, the question is if the system is set up in a way that encourages good behavior.
I don't doubt there are many people who are able to tweet within 140 chars without behaving badly towards others. That's not the part under doubt, the question is if people behaving badly are in large part doing so because of forced brevity. We can make jerks contribute positive things if we set up the system correctly, we can also make more non-jerks into jerks by setting them up badly.
> "140 characters forces only minimalism"
This is a claim often trotted about, but I just don't see this. Looking at my Twitter feed it seems to encourage abbreviations, bad spelling, incomplete sentences, and truncated thoughts. Twitter proponents act like the internet was a giant cesspool of wordiness, and that Twitter was somehow the savior - I don't remember this internet when everyone was writing run-on sentences and long essays about their day.
Or rather,
replace 'critical' 'snarky'
I think that's a vast oversimplification.
I actually don't think this has ANYTHING TO DO WITH CODE. Anyone can walk into a subway restaurant, ask for a sandwich, take pictures of the people who made the sandwich, tweet their pictures laughing at how stupid they are and what a shitty job they did making your sandwich. You can do that to waiters, barstaff, cleaners, you can do that to anyone... but it makes you an asshole.
If you find yourself pulling up individual repos with <5 users and shouting 'Hey everybody look at these people recreating the wheel! What fools! Let's all point and laugh!' wouldn't you agree that's being an asshole? Is that bettering the community? No, frankly all you are doing is choosing to piss on a few people.
I have a ton of files on github and gist, most of them are absolute crap. I put them out there on the off chance someone happens by a similar issue/problem they might find something useful.
This morning there was a gist I was reading, and yeah it was mostly rubbish but it had the one line of code I was looking for.
That behavior needs to be encouraged by more people. We need to encourage people to put out their code and not delete it. Regardless of if it is crap.
If you see something picking up momentum with a growing base of users that you disagree with then by all means start raising the alarms; create a blog discussing the downside of using process X (examples of X could be nosql, sql, node, coffeescript, python, java, grails, groovy, haskell, go, maven, ant, gradle, etc etc)
I have a ton of files on github and gist, most of them are absolute crap.
Honest question:Is it okay for someone else to say (without swearing or making personal jabs) in public that it is also crap?
And again, to emphasize, this is a sincere question.
Will it bother me? Maybe, depends on who it is. XxHackerPants420xX's tweet of 'Columbo is teh code suxxor' wouldn't bother me as much as pg choosing to write a personal blog post titled 'ode to Columbo's shitty github account'.
Is it okay? Meh. It isn't a community I'd want to be part of. I truly believe in the power of constructive criticism and I don't believe anyone can survive this environment by wearing their hearts on their sleeve. However, there's never justification for rudeness.
And I agree - constructive criticism trumps criticism.
Is it okay? Meh. It isn't a community I'd want to be part of
Also agree. However I'm unease about people flogged in public over generic criticisms. I think its important that people can say things (yeah, even mean things) since sometimes its warranted.I'd prefer we save the public flogging to those that step over a hard-to-define line. I don't think that line was crossed in his case.
It's one thing to be critical. It's another to ridicule. Being critical is rational and objective. Ridiculing is a form of contempt, an emotion. When you ridicule, you are not taking apart what you criticize, you are trying to take apart the other person. Those skilled at this will often do it in such a way to make it sound as if they are being rational, objective, and focus only the work, when in fact, they are projecting emotions of contempt and cutting someone apart. The way our society is structured, you can "get away" with something like that because there's a fallacy ... that what you can somehow separate the criticism and feedback you give from the feelings that you experience (or suppress).
Well. You can't. Emotions arise and pass: they are real, they are experienced, and they affect behavior.
You can, but why? What good is served?
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.
You don't start "discussion" with "how to make sed and grep worse", you just don't. She (harthur) even attempted to get some real feedback out of the snarky twitter mob, but it turns out that "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".
I also agree that assholes certainly don't have to apologize, as long as you agree that we're free to carry on considering them assholes.
My father always told me, "It's a damn shame that it's legal to be an asshole in this damn country." But yes, it is, and yes, you absolutely are. I am a strong proponent of calling out assholes when they're being assholes; myself included.
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.
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?
Heck developers are still fine, try talking to a doctor about some other doctor's work, even if all you utter is a minor work of praise for the other guy you will receive nothing short of total angry response loaded with utmost display of ego possible.
Never needlessly criticize someone's work or praise a competitor in front of the person. Unless something big is at stake.
Everything is subjective and everything is personal. That's how human beings work.
These comments weren't constructive, by any means.
Maybe this is fine for psychopaths, economists, or machines that can eventually understand the criticism one day, but for normal people it doesn't apply. Someone's code is like someone's child.
It's great and I'd say necessary to use constructive criticism, but I just don't see the need to bully and make fun of people.
Having said that though, when you ridicule someone, you've made it personal. When someone ridicules someone else, there's a high chance that they secretly feel ridiculed by others (Jungian shadows).
I forgot who observed this: adult males will kill off younger competition, unless they are teaching. One of the core values of the Open Source community is sharing and teaching. I suppose, if you stick around in opinionated software long enough, then you start moving away from that core value.
I guess it depends on context. For team work projects, maybe your coworkers don't feel like they have ownership over their work. I feel that this is very different compared to open sourcing your personal work.
"if you go sob in a corner because you receive criticism, then you're not going to improve."
The corner part is up for discussion, but who says crying renders you un-improvable or non-adult? It's what you do after you cry that matters. I did not know harthur's gender until it was brought up, but women cry more easily than men and it isn't really relevant to their coding nor is it calibrated to feelings in the same way it is for guys. It's not the nuclear option guys think it is.
As for evaluations of code quality, I'd be thrilled to read a discussion of the actual "issue" somewhere. That would at least be interesting.
That basically summed it up. I guess it's clear the 140 character limit was never the issue.
Speaking as a hiring manager, if I see people behaving like assholes on Twitter or mailing lists, those people go on my do-not-hire list. Yes, we are all assholes from time to time, but for some people it's a pattern of behavior. Those are not people you want to work with, no matter how smart they are.
If Linus Torvalds applied to work at your company, would you turn him away?
As an interesting point, I learned this lesson in who not to hire from Michael Schroepfer, who is now VP of Engineering at Facebook.
Also, people who live in glass houses should not throw stones at others. What is to prevent someone from going all Dijkstra on them? So be kind to others, it won't take much for someone much smarter than you to trample you.
This is nothing but bullying and can have a serious affect on the bullied person's mental health.
> @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
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.
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.
Example: http://article.gmane.org/gmane.comp.version-control.git/5791...
goes ahead and provides one link everybody here has read by now
does see or mention context
If you don't understand the difference of context, well, look again!
(It's not necessarily good, but it is categorically different behavior.)
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.
There are many ways to reinforce meritocracy, or reinforce a culture without telling people to shut the fuck up in all caps.
That's actually not true. His "security monkey" references towards other projects being an example.
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.
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!"
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.
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.
"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-...
His most recent post is http://blog.steveklabnik.com/posts/2013-01-23-node
"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.
> 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.
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.
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 :)
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.
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.
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.
I've had a sed book on my shelf for years and I've used it more than once, but 99% of the time I end up giving up on sed and using a GUI-based tool instead of trying to concoct the cryptic lines given above as examples.
I absolutely would rather use the clean interface of replace, written in JavaScript or anything else, than to memorize that steaming pile of cruft.
1. You can pipe find/sed/grep/cut/awk/whatever to other utils. Today you might be replacing, tomorrow you might be analyzing text logs, and the more core utils you learn the more things you can do with them.
2. When you're ssh'd into another box that doesn't have that spiffy replace utility, now you don't know how to do an inline replace.
2. Perhaps you don't need to do this. Or perhaps you'll work it out when you ssh into another box.
Fair.
This boils down to an individual's needs. I think most people in a position to be making this choice are fairly well aware of what's possible with standard nix CLI tools, and can decide whether or not to invest the time to learn them.
In my experience the ROI for nix wizardry is fairly high at first, but begins tapering off. There are a half dozen or so command chains I use daily without which I could hardly see myself working, and the rest I may not touch for weeks or months on end. YMMV.
> 2. When you're ssh'd into another box that doesn't have that spiffy replace utility, now you don't know how to do an inline replace.
It doesn't make sense to optimize a workflow around an edge case. You don't often hear this brought up as an argument against dotfiles, key bindings, vim plugins or what have you.
If you run nonstandard, you basically have to learn vim/vi as a default install for an OS and another with all your add-ins and customization. Sure the key bindings are similar, but I don't have my macros and why is my tabbing funny, there's no line numbers, and damn it, the backspace key doesn't work. I forgot I set that in my .vimrc.
Sure, I can remember most of the latter with set tab and set no, but when you're popping around systems, switching to root (with it's on .vimrc), keeping applications as stock as possible is very helpful.
I personally have a slightly custom .vimrc for my local use, but I don't rsync my dotfiles across the globe for my other home directories. I basically try to keep it as code development (with .vimrc) and sysadmin (may not have niceties, but I'm not editing code).
But as soon as I want to do something more sophisticated, I again reach for the tools I know better.
No I can't use my GUI tool on a box I'm ssh'ed into, but I can push my changes to a git repository and pull them to be local, where I can do complex things really quickly and without having to memorize tons of obscure options and corner cases.
In a case where that's not as feasible (hundreds of megabytes of log files, say), and what I need is beyond my find/sed/grep skills, I usually drop into my language-of-choice and produce a tool that is much easier to use for my purposes. Honestly I haven't touched awk in a long time because the pain is so much greater in awk to accomplish what I can in my own more familiar toolset.
I get that those tools work fine for any old-school Unix hacker, and the combination is quite powerful in its own right. I don't have the desire to BE an old-school Unix hacker, though, and my tool-set is quite powerful enough to accomplish what I need without going through that particular hazing ritual, thank you.
My need for tools like this happens rarely enough that even if it would be faster once I'd learned the tools to type out the appropriate command line, the amortized time to GET to that skill level in those tools would be far more than the time it takes me to just use my "less optimal" tools.
I haven't spent much time learning unix utilities, so that might explain it. But I can't help but shudder at find . -type f ! -name '.min.js' ! -name '.py' -print0 | xargs -0 sed -ri 's,var,let,g'
It is the usual tradeoff between simplicity and features.
There is only one case that justifies reimplementing things
Or, um, how about the one that goes "I felt like it"? That's sufficient justification in my book.
I'm siding with mrb on this one. Learning flexible tools gives you immense power in comparison to low-learning-curve ones. The time invested is considerably smaller than the time spent figuring out how to solve edge cases with simple tools. This is something which appears to be impossible to communicate to people with words. Learn some of these tools and you will see for yourself.
By 'learn' I do not mean, for example, becoming familiar with hjkl for navigation in Vim. I mean mastering the tools to the point that using them requires no effort - where just as you experience the impulse "I want a glass of water" and without any effort go to fetch one, you experience the impulse "I want to create a new class in file X, navigate to file Y then modify method Z", your fingers start moving and suddenly you're done. I get frustrated watching my IDE using co-workers write code - it takes them a very long time to do very simple things. Their tools are narrow and do not facilitate expression - they constrain it.
Pre-emptive strike on the argument that code completion is better - Eclim (Eclipse with a Vim frontend) solves this problem very well. Nonetheless, I have it installed and configured but can barely find a use for it.
Even in the consumer world, this is Apples strongest selling point for example. Make products simple and easy to use, but still do 90% of what anyone would want to do with it. If that isnt enough, there are other things to use.
I think the same can be said over replace. I find your skills with sed/grep impressive and its certainly very useful in some cases (mostly devOps) but in case i need it myself i would just look it up and in the meantime use simpler tools and get the job done.
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.
by the way: "-print0 | xars -0" is really idiomatic, you know? Lucky you didn't have a single filename with spaces to handle...
It's the shell, by the way, that cares about "spaces in filenames". Not dicking around with shell metacharacters is just one of the many wins you get by not shelling out to accomplish basic programming tasks.
Note that 'xargs -P' behaves very similar to 'make -j' and is often useful as a simple work-unit scheduler.
Seriously? find/xargs is nearly impossible to use (safely) without it.
So you know who you're dealing with here, I used Emacs for something like 10 years before I figured out how to do regexp search/replace.
I'm pretty comfortable with my abilities as a software developer. If I was Steve, I'd be about as embarrassed about the idea that someone's "level of understanding" of find|sed|xargs was worth commenting about as I would about the rudeness. Of course, if I was Steve, I'd have apologized privately and not fed into the shitstorm, too. :)
Indeed, especially since there's sed and sed.
The examples given use -i, but no luck with BSD sed, where you will use -i~ at best. Also, lack of -e before the expression may make things blow up at times. And the sed regex does not support stuff like +, so many times I end up replacing sed -i~ -e with perl -pi -e or ruby. Besides, sometimes your looping logic is not implementable with a find easily or at all, especially when its context is readily available in the original language, so maybe you use the CLI at times, but this CLI might just be a frontend to a lib part saving you from forking a thousand times over.
Are you talking about BSD sed here, because GNU sed does support + with the -r flag.
Moreover, if you want to use this as part of your node app, then it's a good reason to reimplement some of sed's functionality.
I still don't see why you'd laugh or ridicule someone else for doing something like this, and sharing it (if anything at all, it serves as a good tutorial on file manipulation with javascript/node IO.
Often not possible depending on what authorizations and hosting you have.
And although its getting a bit off-topic at this point, doing replacements directly in the file isn't even a good idea. The standard "move $file to $file.backup, run sed against $file.backup and pipe it into $file" method is not just recommended because it is portable, it also saves your ass when you messed up your search+replace and broke all your files.
You'd be surprised what is restricted in a lot of corps beyond the "approved" software list. It is amazing what big things get approved and what little things don't.
But it's not. It's a command-line tool. To replace the best, most powerful, most flexible, most stable tool (and additional tools) made for the command-line for this exact purpose. This is the definition of reinventing a square wheel. It's just a bad idea.
(p.s. by using xargs (with or without -print0) you can use one option to parallelize the function, vs writing it all in your own code. but i guess getting mad over a fork/exec call is a better idea)
If you can replace a long line of pipes with a simple command line, then why not?
When admins use it, they often simply shell out to the identical console tools. Why? It's easier. They just do everything you need, they're universal, and they work well together.
Go ahead and write a new Perl in JS, and nothing will change; the console tools will still be there, better than anything else.
I agree that it simplifies the workload. Unfortunately, it does not reduce the workload.
Still, someone probably rewrote something similar to sed in JS
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.
On the bright side, normalizing file names before batch-processing them was a good idea too.
I also think that binary sized string should be the default for shells and command pipelines; plain text was great in the 60s, but it's now the 21st century and I use too many shell flavours on too many systems to remember their arcane quoting rules, locale rules, unicode bugs, etc.
Regardless, it's a shame that there's not a standard separation of UI from functionality in all these utilities - more than once I've wanted to just be able to dynamically link libsort.so from another program because writing files and exec'ing ... urgh.
So if the program has overhead when loading, using a -r option instead an outer find loop can make a magnitude of difference to program operation.
Who are you to decide how she may spend her time? Why in the world do you think that she has to justify to you what projects she creates?
Don't get me wrong. i actually _know_ the f* syntax because I'm and old crazy fart like that by now. But when it comes to use it, it takes a while to type. Sometimes I make typos. Sometimes i forget one specific option or character and I gotta look in man again.
The simplified syntax wrappers make it f' easy.
The other day I made a csv column grepper. It just calls awk and assign numbers to column names, so i can just grep by column names no matter their order.
So yeah, a huge line of awk can do it. An even less understandable line of grep can actually do that too. Some other tools as well. Mine is just ./supertool colname colname colname ... | awk "$2 != blah" |column -t
(For the record, there were similar wrappers in python and perl, each of which were 5 to 35x slower (200 to 1000 lines script) than my 20 lines bash script, which is another complain I have. Reimplementing that stuff in high level languages is generally a bad idea, specially when you don't understand what happens underneath.
The sed/xargs/etc. examples look increasingly like impossible-to-memorize line noise to me, while the --include, --exclude etc. options in `replace` are comprehensible and seem to follow standard command line argument practices.
Again, this is from a very entry-level unix tools perspective, but there it is.
It also seems to me that reimplementing things with the stated goal to make them easier to use has to be one of the best justifications around, no?
I hope I sound as respectful here as you did in your comment -- I certainly appreciated seeing a clear response to her library, so thanks for that.
That replace library does what it's supposed to do - it replaces shit easily.
Don't like it - don't use it.
If people want to do more - then they'll figure it out for themselves. For everyone who already knows more - eat some humble cake.
This is a false dilemma and completely misses the point. The replace library was written by a person who either never heard of or never learned how to use SED. Just because they created their own hack as a workaround doesn't mean it's the right thing to do.
By this logic, there is no way for beginners to write much of anything since there are existing implementations of almost any idea, and it should be disallowed ever to make a new thing which could replace any old thing.
"It's similar to sed but there are a few differences:" and then goes along to list out the differences.
I would expect this person to 1) have heard of and 2) have learned to use sed in order to write a tool that is similar but has slight differences in syntax to sed.
As for editors - there is a niche for emacs and there is a niche for notepad. If a program is weaker on some aspects but clearly superior in another aspect, then it has a valid niche and making it really is the 'right thing to do'. Usability/discoverability is a very important aspect of software, and sed is a bit lacking there.
Are you honestly at HackerNews posting that someone hacking together some code to scratch their own itch is not "the right thing to do"?
Yes. And people can site Pi to the 10.000 digit. Doesn't make it any less useless.
Calling the basic operation of these cornerstones "useless" speaks more about your disposition than the tools, I think.
Yes. Sad isn't it?
It's not as if they were perfect when the were designed.
I've used CLI tools for years, and it would probably take me 5-10 minutes of scanning the man pages to reproduce all but the simplest of those snippets. Granted, this boils down to the sporadic use-case, but that's the entire point.
The replace examples are all clean. It would mean I would not be juggling little peculiarities of arcane syntax, such as which sed flags to invoke, or whether to use exec or xargs.
If the problem occurs too frequently, it makes more sense to make the solution re usable. Which is exactly what 'replace' is doing here.
Exactly. People tell me "Nobody needs ack, you just write wrappers around find+grep" and I say "You could, but I published it and now people don't have to."
"[Laziness] makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer."
I don't have to worry about updating my find command lines to account for new types of source code or source control folders in unfamiliar programs, I need only ensure that ack is kept up-to-date.
C++ once compiled to C, but even then people wouldn't claim they were using C, they'd claim they were using C++. "I don't use C++ because it's C with 'classes', I use C++ because it sets up my vtables and overloaded functions"
If its of any help I think its time for the Unix community as a whole to sit down and self reflect. If people are beginning to think something like 'sed' as too level to use, then better job needs to be done to make them more accessible and usable. There are enough examples on this thread where people are saying that they look at sed as an API on top which a program needs to be built up on. And not a complete program in itself. Also shell is not a full fledged programming language.
Any new API on top of them would only be present on a fraction of machines, and thus would reduce the major advantage of them in that they are available everywhere.
One advantage of her Javascript replace is that she can drop it on any machine with a Javascript runtime and it will work, unlike sed.
And the real truth is, she wrote something that solves a problem she has, which is the measure of her success, not someones arbitrary comments.
It clearly serves a purpose and it's apparently useful. Most importantly, it exists, so there's no need to argue over how you think it should have been implemented.
I'm sure if you were to release your own [script / wrapper], someone would find use for it, in the same manner that some have apparently used 'replace'. I honestly fail to see the big deal here.
What you fail to take into account is that there's definitely a niche for Node.js-based development tools such as this script: The GNU userland is not ubiquitous.
Node.js did not come with a system command to search and replace across files - now it does.
I fail to see why you will ever need to rewrite this?
Probably, but I can't really speak to that.
Either way, we were originally talking about the syntax & implementation. It doesn't make a lot of sense to object to a hobby script on the basis of development time.
I quickly reach a point where I just think "Fuck it, I'm writing a Python script for this."
A simple tool that only takes a couple of minutes to learn, then a five second look at the man page to refresh the syntax is very valuable, particularly if it focuses on doing the one job that people want to do most often.
> The issue is that it's 5-10 minutes to scan each man page every single time I want to use sed, find, xargs, etc."
Which means you could put in a one time investment, write a wrapper shell script, and be done.
And if you insist on disagreeing still, then that's fine, but the this whole point was brought about in response to:
> I've used CLI tools for years, and it would probably take me 5-10 minutes of scanning the man pages to reproduce all but the simplest of those snippets.
Such wrappers aren't lingua franca anymore - nowadays they are as arcane and as COBOL, since [for most X] it's easier to write a perl|ruby|JS script to do X than a shell script to do X.
Starting from scratch (say, from a Win background) it might be easier to learn a language like Haskell or Scala than to learn the shellscript language with the whole pack of sed/awk/grep/etc flags and tricks.
I might have an issue with doing a replacement in JS for node, though. But for those who are already using node, why not.
$ replace "Foo" "Bar"
is common sense and easy to understand.Not to mention that sed -i is a GNU extension.
I haven't used replace but it seems like a pretty innocent piece of helpful code for someone who likes JS.
Heather, you've created a nice and useful tool with a modern tool-set, did a very decent job coding it and took the time to open-source it. In my eyes at least it puts you in the top 0.01% of coders in the world.
However I used it so infrequently that whenever the need would arise, I would invariably screw up the order of the 2 (only 2!) arguments. I could have added support for --help, --usage or similar, but that seemed like overkill.
I eventually just learned how to "properly" use find and grep (both of which I was already using anyways, which helped me remember the command line for each).
With that said I do agree that I'd never use shell script or Unix userland on purpose when writing scripts that are intended to be portable across different Unices (or even Windows), that's the kind of thing I'd reserve for personal use on my own userland. Hell, even on one machine you never know with some distributions what kind of shell you'll login to by default...
I would rather use my language of choice to implement the above (mine wouldn't be JavaScript, but it clearly was Heather's) than to research all of those arcane command lines.
Rather obviously YOUR language of choice for this kind of problem IS sed. So OF COURSE you would use a shell script wrapping sed etc. to implement these functions.
But guess what? To handle all of those options at the command line would still take a pretty large fraction of 173 lines of code, if you added in an equivalent level of parameter checking and option handling.
And if you want to make MY eyes bleed, hand me a file with ~150 lines of logic in shell script that spawns cryptic command lines. Despite not REALLY knowing JavaScript, I would much prefer to maintain the JavaScript than a shell script with the above commands.
PS: I will do it in 15-20 lines, if only to prove a point, if someone sends 1 BTC to 1F43fceWvwznv4rH7s1B3du2w5VznFJY58 :) (yes, my time is valuable - I have other things to do)
When I DO see non-trivial shell scripts, they are just this side of arcane gibberish. The command lines above are completely opaque to anyone but an expert in EACH of those tools (I know some of the tools, but not all well enough to know EXACTLY when I need to backslash a paren, or how many backslashes to use, or when I need quotes or not...).
When I see the JavaScript that spawned this conversation, despite not knowing JavaScript well at all (probably about the same level I "know" shell scripting) I was able to follow everything that was happening to the point where tweaking it to add features would have been easy.
The objective shouldn't be to write code in the fewest possible symbols. Everyone would use APL (or a more recent evolution of that language) if that were the case.
The fewest possible readable and modifiable lines of code is my objective. Shell scripting tends to have lots of obscure and unpleasant syntax to accomplish the most basic flow control.
You are right in telling that sewing a few utilities using pipes can emulate 'replace'. But remember you are talking about learning those 'few' utilities first. Trust me unless you have practiced your way out of these thing with hundreds of hours with experience over years its humanly impossible to remember and use a tool like sed to its full capacity. The more utilities you add to your pipe chain the number of ways in which these utilities can be used more or less follows a exponential curve.
Now if some one comes along and gives you a version 1 of a tool that can simplify these things and give you simple way of doing things in a command instead of doing it with a ten pipe chain commands, he/she is ideally solving a problem of a great importance.
As some one who loves the Unix CLI, I have often wondered why people spend a whole day writing a java program what could have easily done with sed and awk in a line or two. But these days I understand why. Learning and using sed/awk to their full potential is a time consuming task. You not only have to learn them factually through a manual. You also need to study the problem cases for which they are appropriate. Then you need to go and put their solution patterns in your brain. Then you need to map all problem patterns with solution patterns. Then you need to learn all the arcane special cases. Generally this comes to a person over years practicing those utilities.
As a matter of fact Perl was invented because using C, with all these utilities was getting very difficult.
Now if somebody can give things like these. Which do many things out of the box, without you having to go through the pain of learning things and practicing over the years. They would have indeed given you a tool of great value.
In my experience even if some one fails working on something like this, by third or fourth version of the tool they generally come up with a thing of great value.
Think of this like Vim Vs Sublime Text 2. In case of vim there are ways of solving problems. In ST2 many of those solutions are automated and sometimes given to you out of the box.
The argument is that basic shell knowledge should be trained in order to not lose skill (or to improve). At my work, these skills are useful when facing unexpected urgent needs.
Having a short script is a very poor benefit (simpler syntax and reduced key typing) for a big loss: - loss of knowledge - loss of understanding of what the script is doing - need to learn the name of the script which is not a reusable knowledge.
Learning the basic usage of sed, awk, shell is an investment that is quickly rewarded.
Learning all the intricacy of "replace" needs to know many javascript details and how they interact with shell escape sequences and your LOCALE configuration. I am sure it is less documented than the sed command.
This kind of reports are useful for people doing similar activities.
Some people just don't live in the shell. We're taught to build upon useful building blocks to make useful things - why would you not abstract away the monotonous tasks?
No, Perl doesn't.
PCRE was written because a lot of people liked some of the ideas that were first introduced in Perl's regular expression engine. But PCRE was a reimplementation, and never was all that compatible with what Perl was doing.
Other than "re", there's "re2" and "regex". None are PCRE but "regex" is close enough most of the time.
I feel these examples serve more as a selling point for why one would use something like `replace` over a cacophony of flags and pipes. The interface for `replace` is simple and elegant. It does one thing, and it does it well. I think that's commendable.
P.S. The `sed -r` flag does not exist on POSIX systems like OSX. You'll have to use something like perl -pie, or write a convoluted buffering loop.
And why assume a POSIX command line?
Frankly the code is hardly deserving of derision. It looks perfectly capable to me, and the syntax is far superior to arcane unix commands. Just because you'd rather write a sed wrapper than write this code doesn't mean it makes sense to deride others for trying to move the human race forward.
replace 'var' 'let' . -r
find . -type f -exec sed -ri 's,var,let,g' {} +
replace 'var' 'let' . -r --include="*.js"
find . -type f -name '*.js' -exec sed -ri 's,var,let,g' {} +
replace 'var' 'let' . -r --exclude="*.min.js,*.py"
find . -type f ! -name '*.min.js' ! -name '*.py' -exec sed -ri 's,var,let,g' {} +
To all the Unix shell critics: don't try to argue that writing a 173-line js script is "simpler" than learning 3 find options (-type -name -exec), the bang(!) 'not' operator in find, and 2 sed options (-r -i). This is just wrong, seriously.You are wrong about #2 too: I have said this 5 times already: you can write a very short (much shorter than 173 lines of js) a wrapper shell script exposing an interface as easy as "replace".
Please read what I wrote!
"There is only one case that justifies reimplementing things: if your tool has the requirement of supporting the exact js regex syntax..."
(Please read what I wrote, really!)
b) Regarding those that do want to "run the command line," can you agree that there are users who really want and need to use JavaScript regexps from the command line and not some other regexps with different semantics?
c) Can you accept that these are the valid use cases that your "use sed" arguments just don't cover?
I've read your arguments and I've never seen clear acceptance of a) b) and c). I've also seen that you had to carefully think and even improve your "use sed" implementations, giving also the good argument in favor of her approach. Having the tools that demand less from the user is a good thing. Can you accept that (d) too?
Can you see why we discuss, when you just quote yourself as "There is only one case"? That's why I claim you're wrong. There's not only one case.
In the context of discussing the open-sourcing of the script, the issue isn't really whether or not writing the JS is simpler than learning "3 find options", it's whether using the JS is simpler than learning "3 find options".
You just use it.
Let's face it. Most people will never bother learning shell commands in and out. I've been a *nix user for 20 years and I still have to be checking man pages, and I often stumble upon basic shell command options running differently in different shells.
Other than for sysadmins, shell commands are going the way of the dodo. This isn't new, it's been happening for many years already. Increasingly capable computer people from the newer generations will be focusing their skills and time elsewhere. Arguing against this reeks of grumpy old coder bitterness. I know my shell stuff and it serves me well. I use vi/vim daily. I don't impose my usage patterns or expect that something "existing" means it's appropriate for everybody.
That said, the javascript solution does look a bit long winded.
Also, please don't take it as a negative comment on your comment, I actually appreciate the solutions and it makes me consider sed again.
In a professional context, I understand[1], but this is a personal project someone wrote to scratch their own itch. Why is it unjustifiable? I can think of plenty of reasons to reimplement something but I think the burden is really on you to say why it shouldn't be done. If you think replace is a waste of time just don't use it - simple as that.
[1] I've spent the last two years maintaining an application written in a homegrown web framework - don't get me started.
- Node.js can be installed on Windows and sed/find are not available on this platform.
- Many of my coworkers don't understand sed/find syntax, and even if they could learn it, they don't have plenty of time.
Btw, it's terrible that a few guys make rude comments about a free and open source software. If you don't like, don't use it or if you think you can make it better, fork it or shut up.
Depending on how much you need to this sort of workflow, this could be extremely valuable.
It would be far quicker for me to write an one-use program in a number of languages than to find out how to do this in the sed oneliner style that you show - ergo, the sed approach has drawbacks in some use cases, and alternatives should be tried.
I'm just making the point that it's not just about learning, it's about writing the code. If you're the type of programmer that is only looking for a means to an end, this isn't for you, but if you're like me, the fun is in figuring it out yourself without the help of libraries.
A tool's a tool. If it's useful to you, use it. If you don't need it, then don't. Why does this have to turn into a debate about why someone shouldn't have invented another tool because one already exists?
Look around the world, there's competition and choice in literally everything. Why can't they be choice in what CLI tools to use?
"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!
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.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.
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.
It reminded me of this: https://www.youtube.com/watch?v=YX3iRjKj7C0
Also, just look at the top comment in that video. The irony.
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.Created. Had a problem and wrote working code to solve their problem. Then shared it. Not really something to point at in mockery.
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.
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.
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 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.
Why? I'd guess because the blog post refers to celebrity hackers bullying another hacker. The community -- more than just these few guys -- can't even behave civilly. It's a case of the pot calling the kettle black.
Contending the latter should be addressed before (or even comparatively) to the former is what I take issue with.
Because he is suggesting that "someone said someone else's code was bad" is a more pressing and concerning issue than "the federal government threatened to destroy the life of a young man and drove him to suicide over a trivial non-offense".
>Are you sincerely arguing "It's OK for me to be an unsympathetic asshole because I don't send people to jail"?
I can't imagine how one could make an honest, good faith attempt at communications and come to that conclusion. It seems more like you are deliberately looking for a strawman. I am arguing that pg can in fact make a fallacious and ignorant statement, even if he is aware of the difference between two cases he is comparing.
As someone once said to me: I can't imagine how someone could make an honest, good-faith attempt at communications and come to that conclusion.
What pg said, albeit more politely, is that calling out federal prosecutors for lacking sympathy when you don't exhibit any yourself is rank hypocrisy.
Stop trying to pretend he said something other than what he really said. His words speak for themselves, you don't get to invent an absurd justification to pretend they mean something else. You can read the post yourself, it is still there.
He has no way to know if the people calling out the federal prosecutors have sympathy or not. There is no hypocrisy in Bob saying the prosecutors did something wrong while Joe (who Bob has never met or heard of) is saying Sally wrote some bad code.
And destroy their reputation. And, in some cases, push them to the edge.
This idea that we shouldn't try to address problems in the HN community because there are problems elsewhere in the world is ridiculous.
"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.
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.
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.
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.
It's a lot easier to be an asshole to people in certain structured formats -- prosecution, online chat (IRC being the ideal, but even email, twitter, and blogs lead to aggression). It's harder in person, or in other formats (essays?).
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.
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.
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'm loving the great supportive comments in this thread however.
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.
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?
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.
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.
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.
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.
What can I say?
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.
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.
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.
_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?".
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!
"Forget the insults you receive and remember the compliments. And if you figure out how to do that, let me know"
---
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.
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.
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?
To tell you the truth, it's part of why I moved to python.
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.
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.
Though not as sad as when intelligent people fall hook, line and sinker for unfair reputations formed and paraded by third parties displaying as much commonsense as those who used to stereotype others by race or gender in times past.
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.
i only see one comment responding to the code
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.
Nice.
Most of the "your code sucks" comments is based more around you didn't do things like they would have. Such as:
"You didn't use OO principles the way I interpret them so you suck."
"You used that library/framework/language that I hate so you suck."
"You're not coding in my *nix flavor with my choice of IDE so you suck."
"Your project does something I already do with this other project so you suck."
Rarely do I see actual constructive comments on how the person in question can get better. At this point I'd rather communicate with a bunch of nobodies and learn together than follow somebodies that ridicule someone for trying.
Reminds me of an old school Jeff Atwood quote:
"There are a handful of programmers in the world capable of producing brilliant, perfect code. All the rest of us can do is keep making our software less shitty over time-- a process of continuous improvement."
Sure, some employers might care... "new guy might get flamed online". Yeah... okay... do you want that shallow of an employer? :-)
If you want, put your code online and email me, I'll be happy to look at it and point out any obvious mistakes.
(I don't know why harthur reimplemented parts of sed. I don't really care. sed is hard to use, I wouldn't mind rewriting it myself).
I imagine the other side. What if there is that one person 20 years from now that was looking for a piece of code and finally end up on your idea from 20 years prior.
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.
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.
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.
"There is always one more arsehole then you counted on."
I can't tell if this is an attempt at activism or an excuse to avoid doing something.
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.
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.
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.
Even now I feel my blood boiling...
> 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.
Wouldn't want to be on the back end of a hacker news shit storm :)
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.
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.
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.
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.
Until all eyes are on you, and you know they're calling for blood. Then it becomes very easy.
Well, maybe not: https://twitter.com/zeeg/status/294305445521268736
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.
Maybe someone's poorly written tool might save you a days work in the future.
Also, there's a difference between peer review and making fun of them/attacking them. If you can't see the difference, I wouldn't want to work with you.
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.
"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.
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.
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.
I assume you like internet drama.
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 :)
http://news.ycombinator.com/item?id=5108181
Perl or PHP, because why not?
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... 1. https://github.com/harthur/clusterfck
> 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.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?
A recruiter isn't going to pass you up either. Recruiters will spam the fuck out of anyone with a github follower.
The second sentence of the readme is "It's similar to sed but there are a few differences"
Granted, not all are like that...but many are.
God forbid you should stumble into #RubyOnRails on IRC. Thank God for Stack Overflow!
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?
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?
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.
"I have learned that in the open-source world, you are not your code. A critique of your project is not tantamount to a personal attack"
It seems to have improved significantly over the past year. Not sure why.
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.
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.
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.
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
# 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.
There are lots of us aren't like this. I guess we will have to become more vocal.
$> 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
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... [2] https://github.com/steveklabnik/bring_back_snowman
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/
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.
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 :).
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!"
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.
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.
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.
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.
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-776I 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.
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.
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.
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.
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.
I have never said that everybody should know the arcane parts of sed (http://uuner.doslash.org/forfun/sedtris.sed). The unix tools work best when they are combined together (with pipes). The basic usage of sed is very useful to combine unix commands. Knowing the basics of standard unix tools has always been a time saver for me. Here is an example of a command that I may need in some unusual cases:
for i in $(awk '/PWP/{print $1}' machines) ; do
echo $i; rsh $i df . ; done
In my case, it does not worth being a script, because I may not have the same need before a month or two. Without unix tools, this would be a pain in the ass.
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.
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.
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.
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.
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?
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.
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.
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.
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."
"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)
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.
klabnik isn't: http://rubyonrails.org/core
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-...
I guess he's still working on his communication skills.
At least you're contributing to the world and bettering yourself.
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?
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.
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://blog.steveklabnik.com/posts/2013-01-23-node https://twitter.com/steveklabnik/status/294302391279435776 https://twitter.com/steveklabnik/status/294302539510337536
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.
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.
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.
And I didn't filter it out.
Nor did I tell you to stop challenging me.
I adapted.
It's a simple concept.
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.
See how that works. And she has other interesting projects as well.
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.
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
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.
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.
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.
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.
http://thoughts.davisjeff.com/2007/11/17/700-queries-for-one...
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.
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?
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.
I was going to comment on the twits (misspelling intentional) but decided to stay positive.
"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.- 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 :)
I wonder if all his fights aren't just a means to justify his own weaknesses and need to feel superior.
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.
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?
(note: I avoid Twitter as much as I can)
On the other hand, some people are advocating this approach as a way to improve your programming skills: http://www.rodrigoalvesvieira.com/copy-unix/
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.
"By the way, what have you done that's so great? Do you create anything, or just criticize others work and belittle their motivations?"
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.
It was a bad behavior and people should understand it.
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.
I hope you find this useful in some small way.
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?
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.
Act like a decent human being.
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!
> 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 ?
Edit: using the proper gender pronoun would help.
Six of one, half a dozen of the other
Currently, you must use cygwin to install node. To do so, follow these steps:
[1] http://howtonode.org/how-to-install-nodejsHowever, 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.
Debating the technical merits of this particular project can't really address that.
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.
Why would anyone want to work with Steve?
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 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.
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.
vs
$ replace 'ugly' 'beautiful' . -r
I can definitely see the value here
I know which approach I would choose.
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."
But the code didn't look that bad. It is Javascript after all.
http://www.lolbrary.com/post/35279/gamer-girls/
headdesk
does that make a difference?
(honest question)
Is there one and am I just missing it?
Never mind.
"Everybody gets a Trophy!!!!!"
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.
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.
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).