That is my number 1 complaint with Twitter. Sometimes when I write my tweets, I find that the app randomly inserts expletives and will turn the entire message into an @ reply. They must have some really wild NLP stuff going on too, because sometimes I'll even have words of praise switched out for ones of ridicule.
I mean, it's already hard enough to be civil in 140 characters.
Let's give the benefit of the doubt, maybe it was autocorrect and he was trying to be positive and civil on his phone, but his phone turned it into mean-spirited ridicule.
He was not being an accidental asshole. It's not just about hurting a person's feelings. 140 character limit aside, there are better ways of expressing your criticism without derision, and its better for the community if we try to maintain some decorum.
I find it easy to identify with a guy who screws up, hurts someone's feelings, and then trips over himself trying to make it better because he feels bad.
Accidental asshole isn't a real concept. I highly doubt any of the people would have reacted differently in person, for example. The character traits that we ascribe as being an asshole are developed over many days, during which many of the reactions are intentional.
Not really. He's said sorry, unreservedly. He's explained that he messed up, and that it really wasn't what he meant to say at all. I think that it's fair enough to disagree with something, just the way you say it is important.
As the biggest one on TV (House) would say: "People don't change". This is one of the many reasons I can't stand being in this business. Computers tend to have a dehumanizing effect on people. Just the fact that people only see code and not the actual person behind the code leads to the kind of mocking that should be reserved for inanimate objects directed at flesh and blood.
Apologizing (or in this case, fake semi-apologizing) doesn't make someone less of an ass. They may have to "act" less of an ass in order to make the apology seem legitimate.
Being sorry that somebody else felt bad is the beginning of an apology. But it's not the end of one. You can't just say to yourself, "Well now I'll never make somebody feel bad again. Problem solved!"
When you fuck up and hurt someone, people don't want just to hear about you feeling bad. That's making it about your pain instead of theirs. It's asking for people to pat you on the head and tell you it's all ok. That's kinda weak.
They want to hear what you've learned, and why this won't be a problem again.
In his defense he has apologized like 600 times on twitter so far. Im sure it was a genuine mistake just getting carried away in moment. Twitter makes that kind of easy I suppose.
Sure. But in those 600 times, is there evidence of him learning something? Contrast it with Corey Haines's apology, where he talked about how it violated his principles, that his specific mistake was forgetting that there are always people behind software. That's the sort of lesson-learning that I thought was missing from Steve Kalabnik's post.
I understand it was unintentional, but saying something was an accident in any apology makes it sound insincere. It shouldn't matter if it was an accident or not.
I agree that it sounds insincere, but I'm curious - what about his actions and his apology makes you think it was truly unintentional?
I'm all for assuming good will, but it's very difficult for me in this case.
>"I don't want to build my app on top of others' code who are at this level of understanding"
Seems intentionally condescending, not at all accidental.
>"Awesome, enjoy it. I'll be over here in not-node."
How is this completely dismissive, elitist snobbery not intentional?
That's like walking up to someone, punching them in the face, and then saying "oops, it was an 'accident'... sorry".
IMO his intention with these tweets is the core of the problem. To me, the intention quite obviously was to cultivate attention and elevate his status at the expense of humiliating another human being.
That's not something you can do by "accident". It's something you can regret[1] - but it's not like tripping over a curb, or rear ending a car because you were checking a text message.
Steve Klabnik
@steveklabnik
@harthvader @zeeg nothing's _wrong_ with it, but I don't want to build my app on top of others' code who are at this level of understanding
Did he perhaps mean to direct his criticism at node/js as a framework/language but rather made it sound like he was critical of the author of the node.js application in question?
Even if that is the case, it seems like he should have been able to read how other people would read his comment. I'm not sure I buy it.
Dear Steve, Heather and anyone else that fits the bill
It's okay. People sometimes say hurtful things despite historically having strong opinions about never belittling other people publicly. It doesn't mean that they truly mean it, and it doesn't mean that you should take these negative things to heart either. People slip up because we're multifaceted creatures and despite our intentions to be the best person all the time, well that's just not possible.
Regardless of whether what you're being criticized for is justified or not, it is inevitable if it's been made public. The irony in this case is that the bully is being made feel worse because of his past blog posts, which is also sad but just as inevitable. It's okay Steve, we all fuck up, and the ease of doing it on Twitter doesn't help.
Heather, I promise you that any decent potential employer is still exactly that. Nobody will disqualify you from a job position based on something you've made. You've open-sourced it, so if anything you get bonus points. You will always be criticized, the trick is to ignore the haters and know that people in a situation of genuine critique (i.e. candidate interviewer) will never judge you (as badly) as some people on Twitter did.
Do not let this discourage you from contributing publicly in future either, even if your code IS shit. Everyone's code is shit, at least to some people. As long as you're happy with it, that's all that matters. Also, somewhere down the line you'll look back at it and think "Wow, that's shit code", which just means you've gotten so much better.
Apologizing for "making someone feel bad" seems like a way of dodging blame. Honestly this whole thing feel like a half-assed apology sandwiched with excuses. If you are wrong say so, take the blame and move on.
I was one of the people who made a comment about this.
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.
You're entitled to be mean about things you don't like? But when other people have opinions on your opinions, you're suddenly a live-and-let-live guy? C'mon.
Of course, you can't even apply your own advice here. People have opinions that maybe there was some gender bias going on, but are you ignoring them? No, you're reflexively bashing them.
And you certainly didn't just "ignore it" when you came across some code you didn't like. So if you've got a principled intellectual stand here, I can't find it. As far as I can tell, your take is, "I like being a dick, but you people should shut up."
I think the point was, she wasn't trying to replace sed/grep. She had a script which she wrote and got some benefit from and decided, why not, post it on github. That said, I'm glad at least someone stuck to their opinion. I don't see the problem in criticizing the utility of software. Sure, we should all be nice, but that doesn't mean we can't be critical. How many people defending her have left negative comments on Show HN posts?
at least someone has the balls to stick with his opinion. gender might actually be part of the issue. people are way more protective over women's feeling than they are over mens. is that reverse sexist or something?
I don't get why people immediately turn into:
a) a gender debate, and
b) act as if programming is the only place where people have harsh opinions.
get over it. if someone on the internet somewhere on the other side of the world says something that you don't like, and you break into tears, you should be reexamining your sense of self-worth.
agitated? sure, why not. but, breaking into tears? really? I blame hollywood, and commercials(yes, seriously).
Why do you choose to not be a nice person (online)? Just curious.
Also, I think the "If you don't like, ignore it. If you can't ignore it, then you won't survive," is self-serving advice. It'd be easier to take seriously if you were one of the nice people.
I don't necessarily choose it, I just don't go out of my way (like most people) to be nice.
I would argue, that what makes me who I am (a driven, passionate person) also leads to traits like being honestly vocal about things. Whether the way these things are presented is directly related or not is a little bit different.
If I see something I don't like, whether it's on the internet, at work, or just in general, I will usually say I don't like it. Now Twitter doesn't make a great means of communication for things like this (e.g. you can really provide much insight, or realistically follow up), it does make it easy.
I would argue that people who are unwilling to give their opinion (and I know that there's many on both sides of everything, that are quiet), are simply forcing themselves into an uncomfortable situation.
Often you (or rather I) will deal with the results of your opinion, but for the freedom it offers, and the drive it gives me, I'll stick by it.
That said, I admire Heather for doing something, but I am rather unhappy that the result of this was a (IMO, unnecessary) blog post, a ton of ignorant comments on the internet, and more importantly, people attempting to turn the situation into something it isnt.
...and more importantly, people attempting to turn the situation into something it isnt.
The only party I've seen so far actually trying to make this storm in a teacup into anything other than what it is — namely, people being assholes on the internet — is you, with your weak, if persistent, attempts to make it about gender. It's not, it never was, and I'm pretty sure you know that, so playing that card is cheap and dishonest, at best.
I'm no psychologist, but to my mind, that kind of behavior absolutely reeks of awareness that the thing you're trying to make be about something else wasn't kosher in the first place.
"If I see something I don't like, whether it's on the internet, at work, or just in general, I will usually say I don't like it."
Regarding the views of the larger public who don't know you, who cares what your feelings are?
If your goal is to reflect your driven, passionate, intelligent nature to affect the public, then what's more relevant is WHY you don't like it - what, specifically is problematic in your experience. Getting to that point isn't white-lie, pc, or bending over backward to be polite - it's simply more relevant.
Utility-wise, isn't it more efficient to share that stuff, and just skip the "it sucks, it stinks, it's awful" comments? I don't know how you actually communicate since I haven't noticed other comments of yours but in general it seems to me that there's a major difference between venting and informative criticism - and mixing them can definitely reduce your efficiency in positively affecting others.
Agreed. He didn't write: "I think this is a bad solution", he wrote "Ever wanted to make sed or grep worse?". It's like zeeg can't see the sheer snark in the comment, like he believes that Heather was deliberately trying to make Unix worse. Which she wasn't.
Now he's surprised that he's been called out on it.
I'm gonna copy what I said in the other thread, because it's more relevant now:
You know, reading the various devs' tweets, they use twitter in a way that is completely foreign to me. Is there anything these guys think that they don't tweet? ("Hey, who's picking me up from the hotel?" is not something I'd ever announce to the world at large.)
This incident shows a danger of working that way--one of these guys apparently had a rude little thought best kept private--and let's admit it, we all have those thoughts at one time or another. But because he tweets everything, that little passing thought was pushed to the world, which is not good for anyone involved.
I'm sorry, and feel terrible that I made someone feel terrible
This does not come across as a strong apology because Steve keeps stressing on making someone feel terrible and not really accepting that he was wrong to ridicule code without offering constructive criticism.
I would like to see someone respond to a twitter message called out (like the one in question) and give a real apology. If you are truly apologetic for the tone but not the substance, use the apology as an opportunity to say as much! It offends our sensibilities to see a half assed apology that completely misses the point. If you think the tool is unnecessary, say why! Give a coherent argument and then we can have a discussion. Otherwise it comes off as phony.
I don't hate node However, the tools around using Node and JS are inferior to other languages (C/C++, Java, C#, even PHP and Python). Further, the language doesn't have the cleanest history in terms of design, so in a project with multiple people on it, you are leveraging coding guidelines, linters, and the like to have any real consistency.
A colleague raised an interesting question which I will paraphrase -- given the desire to build a project that exposes webservices from the ground up, what language would you choose?
My first response was, it depends on the platform. If you are using Azure, for instance, C# is the first class candidate, Node and other languages are tier 2/3. EC2, sky is the limit. Heroku, probably start with Ruby. If all things were equal, I would personally choose Python over Javascript.
Python and Twisted give a lot of the same benefits as Node in terms of async development. Python is more consistent and has a more mature (and featureful) standard library. Node and modules are plentiful, but a lot (even socket.io) still show some signs of being young.
For me, the choice is - right tool for the platform, group, and project you are working on. Personally, I will err towards the more mature when you are talking about scripting languages. (PHP doesn't count, it's super easy and I've used it a lot, but I always feel dirty afterward :) )
Google, through Closure Tools, and other groups and people have built tools around javascript. For example, JSHint is a pretty good linter and fixjsstyle is a nice little tool to fix formatting. Certainly JS isn't as amenable to static analysis as C, but with time we'll see more.
In many ways it parallels what people do in C: until you get to the scale where precise logging and style enforcement matters, you just forge ahead in the path of least resistance. So like you said, they printf or console.log, use lint or jshint, use -Wall or "use strict" etc.
And because when you bolt everything back on to node to get a decent webdev environment it's really not that fast.
And because callbacks are a really shitty way to write async code.
Like most things node is a tool with a very specific use case, as is typical with anything that is particularly fast at one task people assume that it's fast at all tasks. (C anyone?)
And also because unless you are running a free service your code really has to be absymally slow to not make money. Therefore you should program in the environment that is most pleasurable rather than the environment that is 'fastest', whatever that means.
But mostly because most of the people who talk about how great node is really don't have a clue what it actually excels at. Basically, for all the same reasons people hate PHP.
Node as a technology is misunderstood. Most people from other languages hear that it is javascript and scoff without digging into the source or into libuv. As a platform it made a certain set of trade offs which make it ideal for certain use cases, but some zealots see it as a panacea and suggest using node for everything under the sun. (Not to mention the general arrogance of some vocal proponents -- the core people are relatively humbled but there are a lot of pseudo rock star developers who think its cool to write JS instead of using the best tools for the job)
The traditional complaints of javascript were summarized well by Crockford http://www.crockford.com/javascript/javascript.html
Most of the people writing in JavaScript are not programmers. They lack the training and discipline to write good programs. JavaScript has so much expressive power that they are able to do useful things in it, anyway. This has given JavaScript a reputation of being strictly for the amateurs, that it is not suitable for professional programming. This is simply not the case.
reply
Node inherits the warts of Javascript. Node the framework is quite good and handles abstracting out threading/async incredibly well.
Node the community is still young, but growing. On two recent projects, I tried two different http auth related modules (digest auth). Both had been active for awhile and recently updated (within a month or two). Yet, despite digest auth being pretty established/spec'd out, had some serious flaws (I didn't have the time to offer back feedback, but it is on my list to submit patches). Friends have mentioned similar, though more complicated issues w/ socket.io for production use, one of THE modules used to highlight Node.
Node, JS, and the node environment have their warts, just approach them knowing that. Don't advocate them as awesome rockstar tech.
Outside of some very low-level modules that wrap C calls, most of the node modules are either very specialized or incomplete. I definitely find it easier in most cases to just rewrite functionality than to fallback on the recommended modules. Fortunately the C++ API isn't too far abstracted from the V8 API
Agreed. Node itself is pretty neat. But it isn't the end all/be all of server-side solutions -- modules/stdlibs being my first point of contention. I agree about wrappers to native code and have had to do such.
I don't hate it I just won't use it because I don't like its characteristics at the moment:
* Javascript : don't like it. This "[3,1,10,2,].sort()=
[ 1, 10, 2, 3 ]" is broken. Don't care about the historical explanations or philosophical arguments about strong or weak typing. It's broken and that's that.
* Nested callbacks. I don't like that. I like green threads and/or processes for handling concurrency. I'll take Go, Scala, Rust, or Erlang's (processes|channels|actors) instead, if not I'll take any green threads.
* Single threaded : server sits there with 16 cores, it's nicer to use something that can automatically scale across them. This also means if any deeply nested callback functions ends up blocking the whole node process stops.
Not trying to upset anyone at Joyent or others who put effort into, just my personal preferences. It is not that Node is bad, it's pretty good, it is just that I don't see a reason to use when they are much better tools out there.
I'll take a guess- A lot of people I know think Javascript is a horrible language- you can read blogs and blogs about arguments for why this is true and not true.
But I think it comes down to people who hate JS lamenting it escaping from client side into the server side.
no matter what people say , async programming is hard.
+ Async + closures makes things even harder , you need to watch for context mutation etc ...
+ in my opinion nodeJS is a great idea , the problem is javascript doesnt help developers do async programming the right way. Async programming should feel as natural as writing sync programs, the language should do the heavy lifting.
To decide if we should give Steve the benefit of the doubt, look at his tweet/post history. If he does this often, he is an asshole, if not he is an accidental asshole, which is fine because it is so easy to get real intention completely wrong in even long emails let alone a tweet. Also anyone can have a bad day...
Unfortunately, that article is spot-on. I want to be reading industry news, not someone's social gossip. Specifically, I want to read articles about optimizing Erlang, the latest developments in NoSQL databases, developer war stories, and changes in the funding landscape. I don't want to hear about someone apologizing for an offensive Twitter post.
I think we need a separate category called 'industry gossip' for this kind of drama.
It's on the front page of HN because this community cares about civility, online interactions, open source contributions, and gender issues in technology.
I don't want to hear about someone apologizing for an offensive Twitter post. Go ahead and keep downvoting me for expressing an opinion -- I'm sure I'm not the only one with similar feelings :)
--> To respond to the posts below:
I think the original post is fine, I didn't make this comment there. Hearing about that is interesting and is a fine example of how easy it is for users with social capital to abuse it, a reminder we need. Seeing two threads containing blog posts of people apologizing? I'm not sure I actually care, I think my learning and interest ended after reading the original thread. Now we're firmly in noise territory.
When you get to the point in your life when you decide to start a new company or venture, you will understand the value of these posts. There are many important soft skills that most people hyper focused on technology don't necessarily hone (and since you mentioned funding, you clearly don't think this should be like the programming reddit), and by seeing public examples we all learn how to handle similar circumstances in the future.
I mean, it's already hard enough to be civil in 140 characters.