Apropos nothing else: Coda Hale is pretty great writer. Most of this content was fairly predictable given the last two Yammer/Scala stories; even so, this held my attention start to finish. INTERCAL. Heh.
That's actually my point: it's not a particularly interesting release, but it was still fun to read.
That said, let's remember here that Yammer has no real "damage" to "control" here. I'm guessing 99.9999999% of their customers could not care less whether they build things in Java or Scala or INTERCAL. The kinds of people that do care about stuff like that are disproportionally likely to sh!tc#ck about Yammer being "a dumb Twitter clone" instead of buying.
PR bs summary: "I said scala sucks, but I only said it to that one person, I didn't mean everyone to know that I think scala sucks, so yes, we love scala (but in private we think it sucks)".
I wonder if Stephen Colebourne or Alex Blewitt will write a news story or blog post about this response. They've certainly not hesitated to spew out the following garbage, all in the past week:
In his first article, Alex even had the gall to reference himself twice without mentioning the fact, all while still writing in a voice that pretended to unbiased reporting. That seems very unprofessional to me!
No, actually, I don't wonder at all. When I read the Harry Potter series, its portrayal of media as corrupt and sensationalist irked me as unrealistic hyperbole. No one could be that biased in their reporting, could they? Yet the conduct of these two lately conjures up in my head an image of Rita Skeeter sneaking about, spreading rumors and twisting truths into half-lies. At least they've made their irrational anti-Scala bias clearly manifest, so the rest of us can ignore them now.
If you've been paying attention, I addressed most of Stephen's points in the comments sections of his first two blog posts, and Alex's "news stories" are just a rehash of those posts. I've also made comments in one of the other Hacker news threads about the Yammer email. Finally, I know Scala has flaws and admitted to them in other places. I may be a fanboy, but I consider myself one that listens to reason, at least.
My last comment, however, has nothing to do with technology and everything to do with the human side of things. Stephen and Alex are playing dirty, and I'm calling them out for it.
I don't blog actively right now, although I'm tempted to start after all this. All my input can be found in the comments sections of Stephen's two EJB2 posts and in other hacker news threads.
When a "journalist" says "there is a rumor that X", is it even false? After all, once a journalist said it, the rumor exists. Bad PR is easy to generate and if media consumers are stupid and lazy enough, they'll buy it.
The Potterverse is a tale of what happens when there are no adults in the world at all - when all people behave like twelve year olds all the time. Annihilation of all life on Earth is prevented by authorial fiat.
Have these two follow-up posts changed anyone's mind about the first?
Yammer's productivity gains from Scala were apparently not greater than the losses due to poor tooling and the impedance mismatch between Java/JVM and Scala. Therefore, the engineers all thought it was better to just go back to Java.
That seems like a useful data point, but certainly others' experiences might vary. Have these other posts added any extra information?
I don't think they were intended to really change anyone's perspectives, but rather just clarify a private conversation accidentally made public.
If anything, I just find it really odd that a company feels the need to have an official statement on what programming language they use/will use/might use.
I think Coda did a good job in posting Yammer's official position clarifying the situation and it's a captivating blog post.
Many people (including some people on HN) started criticizing Yammer because they decided to go back to Java. This blog post was in some sense necessary for Yammer.
It was him trying to end all of the stories floating around caused by the private but public email.
He didn't want the last word to be Yammer hates Scala and need's to jump ship. He thought it necessary to give a more balanced overview and provide subtext to the original message. I think he succeeded in doing this.
TL;DR: Yammer uses a number of languages and every one of them have their strengths and shortcomings. They are getting back to work, and not argue about tools. No "official" word on whether they are actually moving away from Scala.
Actually the line we were moving some components from Scala to Java suggests that they are not completely moving away from Scala. Which is pretty reasonable.
Personally, Scala's multiple ways of solving the same problem is a major concern to me, it's language with bipolar disorder.
For example.
Iterating through a container.
1. list.foreach(anonmyous function)
2. for (i <= list)
3. while loop.
Throw in both scala.collections.immutable/mutable, and java.util collections.
Scala wants you to use functional programming styles to solve problems. Thus do everything list.foreach() way. But it's backed on top of jvm which isn't the most functional programming friendly virtual machine. All the functional programming end up being syntaxical sugar and a burden if you want any performance at all. So for performance you are forced to write things the java way, which terrible because the language is designed to lean towards solving problems functionally, so you shoot yourself in the foot either way.
This is a familiar pattern in any language, not just scala. If you doubt me just check out the source code for memcpy.c. Witness the loop unrolling, the byte fiddling the register level manipulations and the several hundreds, if not thousands, of lines of code required to implement the function. Wouldn't a simple for loop be enough?
High performance code anywhere will force you to drop down to the lowest level possible and work from there. The rationale of functional programming is that you can work largely at a high level and drop down to low level techniques in the 1-10% of the code that really matter for performance. One measure of the success of Scala is that it is being benchmarked against Java unlike Python/Ruby/Groovy etc. It is a reasonably high level language, yet the benchmark comparisons are always against Java. If necessary the performance required can be had by writing your while loops to avoid the object allocation required to build a closure. I don't see this as a disadvantage at all, as I can use the high level techniques in the remaining 90% of the code.
But Scala doesn't let that happen nicely does it? It doesn't go down without a bit of fighting. Scala's quirks make writing lower level code more difficult. Interfacing with Java collections feels just awkward.
EDIT: Quoting, as OP updated his comment as I responded.
>But Scala doesn't let that happen nicely does it? Interfacing with Java collections feels just awkward.
Awkward? The Scala interface is better than the native Java interface itself. I can perform a map, reduce, filter on the Java array in Scala, something that is impossible in Java. How can it be more awkward than Java itself?
What I'm saying is, if you decided to say, use a Java HashMap in one part of your code for performance reasons. You'll have to live with that with the rest of your code. Half of the classes in the scala library doesn't like it because it doesn't implement the required traits and as far as I can tell there is no nice way of converting between collections.
Scala doesn't provide a built in for your specific case but
import scala.collection.breakOut
and you can convert mutable Java hash map to immutable scala map
b = a.asScala.map(p => p)(breakOut)
where b : scala.collection.immutable.HashMap[java.lang.String,Int]
and a : java.util.HashMap[String,Int]
Not too bad at all. Moreover, why would you want to convert a Java map to Scala if you specifically used the Java map to improve performance? How is this any worse than coding in Java itself?
I don't really get what all the fuzz is about. I think this guy is losing the point or trying to excuse himself for what he thinks. You wrote your thoughts about scala, the email accidentally (or whatever) leaked and somebody referenced your thoughts. The point is not that you wrote those thoughts in private or whatever the point is that you wrote that java suits you better than scala. And that's got referenced. Nobody said Yammer publicly announces that scala doesn't suit them. Whether your thoughts were intended for the public or for just one person is irrelevant. What a politician says when his mic is on while he is thinking is off the air, and everyone accidentally hears it, is still true. The fact that it was not intended for everyone to hear doesn't automatically make it false.
The point I was trying to make is that it's not important whether it was a public announcement or not. It is quite clear from the posted email what their thoughts are on scala. The email talks about developers at Yammer and gives specficic reasons and examples. The point is made clear and loud.
Now they realise it might not be good for PR and try to "fix" the situation appealing to the fact that the email was not meant to be public which is both ineffective and unelegant.
The damage has already been done! The private email, made some rather valid point which after looking through Scala are pretty evident now. So unless you have an existing founding team that is rather versed in Scala, it probably you should be avoided.
Ah, so much better than those "slapfights" we have here at HN, isn't it? Protip: backpedaling and fence-mending don't work if you go right back to the kind of public behavior that got you in trouble in the first place.
Who do you think you're putting in their place with a comment like this? It's clear Coda could give a shit† what "HN" thinks about him or his messages. Do you think your comment is going to influence him in any way?
Because really the only parties that your comment is going to influence are the subset of HN readers that are actually interested in Yammer's use of Scala, who instead have to watch a pretend trial play out on HN about Coda's "professionalism".
(I'm happy to delete this comment if you delete yours, just for whatever that's worth.)
† Really. I'm not trying to be snippy; I'm just saying it frankly.
Why would someone who doesn't give a shit say something like
"I’d rather suck a dog’s nose dry than lend a hand to the nerd slapfights on Hacker News."[1]
That sounds like the attitude of someone who very much does give a shit about HN enough to not like it.
And besides that, while I may agree with what you're saying in principle, in practice it's bad business to go around insulting such a large number of potential clients/employees/partners. It's better to keep your mouth shut if you don't have anything nice to say.
Keep telling yourself that. Most of the time these days when people talk about HN like that, it's because they've become accustomed to pointing at it and laughing amongst their friends.
Meanwhile, the rest of your comment: due respect (really), but who cares? He doesn't. What are you trying to prove? Who are you trying to convince? Let's definitely keep burning thread space on this dumb metadrama, now that we've started.
I don't plan on losing any sleep about Coda's position about HN. I've got better things to do with my time.
But at the same time, I don't blame people on HN for being a bit angry and venting on the subject. That's what people tend to do when they've been insulted. I was even a bit peeved (albeit for about 2 minutes). Does this serve any practical purpose? Absolutely not. But human beings will be human beings: dumb, dramatic, emotional apes who take offense when people insult them.
Well, I don't get that people 'talk about HN like that' and I think it's worth understanding. A conclusion from that may be that you want try and explain the value of HN. It would be a win if someone like Coda Hale would sometimes participate in discussions here.
As you yourself said, it ain't gonna happen anyway. Therefore, this thread isn't "spoiling" anything that would have happened otherwise. At least try to be consistent, instead of trying to silence everyone who doesn't share your opinion of an author you obviously idolize.
Seems like every comment I see from you the last couple weeks is exceedingly angry rants, and half of them constitute the very metadrama you're calling "dumb". What's going on with you?
I'm not trying to put anyone in their place. In a way, that kind of dominance-hierarchy BS is exactly what I'm objecting to. The point here is that this new response from Coda doesn't even address the technical debate. It doesn't make one new point in that area. It's entirely about smoothing ruffled feathers, so responses about the ruffling and smoothing of feathers are completely fair game.
Furthermore, this kind of "reputation management" (or whatever you want to call it) really does matter, and I think there are important lessons the HN audience can take away from it. Being conciliatory toward one person or group just isn't very convincing if you're almost simultaneously trying just as hard as ever to alienate others. The mixed messages, even though they're supposedly addressed to different people, make even the conciliatory part seem insincere. If I were in Donald's or Martin's position, I'd be wondering how long the constructive tone - and the original letter was very constructive - will last before the inevitable reversion to form. The lesson is that if you want to claim the moral high ground you have to stand on it for a while. Stephen was wrong to publish what should have remained private correspondence, but calling him out like that only ensures that the controversy will continue. The urge to bare teeth and show dominance overwhelmed the rational choice to let this whole thing fade into a natural and well deserved obscurity.
What was called for was de-escalation, and anybody else who finds themselves in a similar situation (many of us have or will BTW) would do well to watch how this one plays out.
I don't think you're following me. You can't correct Coda. He doesn't care. All you can do is take the thread in one direction or another. I think this is a bad direction for our threads to go.
Also: I don't think you can talk about "de-escalation" when you brought the issue up on the thread.
I know that. What I might be able to do, though, is explain why his example might be a bad one to follow. Or maybe it's a good one, for those of the "no publicity is bad publicity" mindset. In any case, I think it's worth it to express my view. These things do affect businesses and livelihoods. Maybe it's too "meta" for some people, but - unlike some - I won't tell people who disagree that they should remain silent.
"I think this is a bad direction for our threads to go"
It's not only a bad direction for "our" threads to go; it's a bad direction for the broader discussion - across here, Twitter, various blogs, etc. - to go. That's my point. HN isn't an island. I've seen quite a few people who disable comments on their blog posts and explicitly direct readers to the corresponding post here for discussion. The real damage to real reputations is being done elsewhere, and condemning those who point it out here seems counterproductive.
"I don't think you can talk about "de-escalation""
Ad hominem, pure and simple. I'm not one of the principals here. I have nothing to do with the companies or communities involved. As a mere commentator, nothing I say affects those relationships one way or another, so de/escalation is an inoperative concept. If you want to disagree with me fine, but please stop finding new ways to tell me I shouldn't even have an opinion.
Coda was obviously not thrilled that @jodastephen apparently (from updates written at the top of his post) decided to
(1) widely publish personal correspondence that wasn't meant to be sent to him,
(2) mirrored it when Coda removed his copy from the net,
(3) insinuated it was a public statement by yammer, whereas it was private thoughts from Coda, and
(4) wasn't even classy enough to contact Coda before publishing it.
Maybe I'm particularly sensitive to (3) because an jerk on HN insinuated that my posts here were representative of the company I worked at, but none of those four things are particularly nice on @jodastephen's part. Note also that, depending on your employer, (3) can get you in quite a bit of trouble. @jodastephen claims he found the email on HN or twitter, but that doesn't mean he has to repost it. Just like when you see accidental tits photos sent from someone's phone, you can either close the tab or repost it to spread it to the world.
That said, it's obviously interesting that the build situation for larger projects seems to be a shitshow, but still, an email to Coda before posting wouldn't have hurt.
The context also matters -- as Coda mentioned, this email was only in regards to the negatives with scala and doesn't mention any of the positives.
I understand and agree with everything you said. Coda has every right to be angry with Stephen. He might even have the right to sue Stephen. Nonetheless, swearing in public like that was simply not the way to deal with the situation. Think about it in purely strategic terms. What outcome might Coda or Yammer want from this? Perhaps for it to fade away, perhaps for Stephen to apologize, perhaps something else. Does snarling at Stephen bring any of those outcomes closer? Did the swipe at HN? If Stephen or anybody else - I suppose some might think that includes me - harbored any ill will, wouldn't this just give them even more opportunity to do some damage?
Sometimes the right thing to do when you're wronged is to let it pass, no matter how much it sticks in your craw, for strategic reasons. Sometimes giving in to that moral-outrage addiction simply does more harm than good, no matter how justified the outrage might be. And yes, I've very much been in that position myself. It sucks, but I've learned that it sucks even more to have a self-inflicted wound on top of the one I got from someone else.