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"
Only one of the three to do so thus far.
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.
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?
Good luck with ever hearing about any problem before it's too late to fix it then...
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.
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.
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?
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.
Heather, don't take it personally - your code is fine! JavaScript, on the other hand, is a wounded warrior by now..
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
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.
"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-...
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 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.
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.
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.
$ 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.
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'
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.
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.
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.
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?
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.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.
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.
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.
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?
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.
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.
Depending on how much you need to this sort of workflow, this could be extremely valuable.
And why assume a POSIX command line?
"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.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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 :)
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
http://news.ycombinator.com/item?id=5108181
Perl or PHP, because why not?
> 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.
The second sentence of the readme is "It's similar to sed but there are a few differences"
> 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.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?
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
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.
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.
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.
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.
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.
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?
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.
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!
Act like a decent human being.
> 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 ?
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.
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.
vs
$ replace 'ugly' 'beautiful' . -r
I can definitely see the value here
Debating the technical merits of this particular project can't really address that.
Edit: using the proper gender pronoun would help.
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).