Node, Twitter, and Apologies
blog.steveklabnik.com
blog.steveklabnik.com
I mean, it's already hard enough to be civil in 140 characters.
Is it just me or does this blog post just make this guy look like an even bigger asshole?
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.
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.
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.
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.
[1]-http://programmingtour.blogspot.com/2013/01/im-sorry.html
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
http://twitter.com/steveklabnik/status/293830888003887104Even 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.
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.
I think we can all do better than 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.
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."
Also, if you thought she made sed/grep worse, wait till you see my frankenstein: https://github.com/hollingsworthd/POSIXplorer
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).
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 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.
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.
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.
It's not like you guys criticized the person. You criticized code.
My goodness. I wish someone would come and criticize my code. It would be a great learning experience.
Now he's surprised that he's been called out on it.
for example: ack is really, really useful.
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.
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.
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 :) )
You are comparing a language that is like 2 years old vs languages that are pushing 20 years old.
the language doesn't have the cleanest history in terms of design
It is certainly no worse than several of the languages you just listed.
Personally, I will err towards the more mature when you are talking about scripting languages.
Psssst, JavaScript is a year older than PHP.
Sublime JSHint JSFormat (or fixjsstyle)
To get code to some basis of style consistency.
Debugging -
node-inspector or console.log
In the last six months, node-inspector has gotten a lot better, but a lot of times inserting console.log is just faster (mmm...printfs).
Btw I prefer console.error :)
Deleted comment
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.
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 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.
* 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.
But I think it comes down to people who hate JS lamenting it escaping from client side into the server side.
Behold people.. the underbelly of programmer culture :-(
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.
--> 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.