Twitch could be a $20B company within Amazon - <AUTHOR> https://backchannel.com/twitch-could-be-a-20-billion-dollar-company-inside-amazon-2507b7f9aa6d#.1hn2nry6d <comment><USER2> Amazon bought two things with Twitch: 1) A social community 2) a monetization model. The video service itself is secondary.

The past several years has shown the social communities grow organically. But its hard to make users adopt one. If you build it, they probably won't come. It's easier for a big company to buy one up than start one from scratch. (Think Instagram versus Google Plus).

Second, Twitch is one of the few monetization models on the internet that is not pure ad based. Twitch does have ads, but streamers see more money through direct donations and monthly subscriptions. Also I am willing to bet the rate of ad blockers on Twitch is higher than the average site. Twitch has shied away from dark patterns that lock out adblocking users. I don't see any big modals or disabled video if I run an adblocker on Twitch. This is no doubt on purpose. So Twitch has locked on an monetization model of direct payment for digital content, which is rare on the internet. And best of all, it's completely optional.

A video streaming service alone is nothing revolutionary. There are many Twitch clones that haven't reach near the same popularity. Its the community, and how its funded.

<comment><USER3> If this thesis holds true:

       > The past several years has shown the social
       > communities grow organically. But its hard to
       > make users adopt one. If you build it, they probably
       > won't come. It's easier for a big company to buy one
       > up than start one from scratch. (Think Instagram
       > versus Google Plus).

Then the best use of someone's time might be to start as many social networks as possible on the possibility that one of them develops enough community to go "big." At which point you sell it to the highest bidder. Sort of "community farming" on a meta level.

<comment><USER4> My rule of thumb is that if you can get 100M monthly users you can sell your company for $1B. It doesn't matter what your product or platform or service is. It doesn't even matter if you have any revenue. If you can get a hundred million monthly users then you can sell for 1 billion dollars.

At least that's what I've observed over the past few years. Twitch was bought $1B with a mere 50M users. But highly engaged users with successful monetization. So it fits my model. WhatsApp was bought for almost $20B under the assumption they could hit 1B users. A 2x premium for being so large.

So roughly $5 to $20 per user. That seems pretty reasonable.

<comment><USER5> Unless I see evidence to the contrary, I assume that all startups follow your model - i.e. they don't give a damn about the product they're making[0]; they need something that'll give them a good growth curve in order to get bought for $alot[1].

I wonder if and when people get tired of that. I also wonder how user engagement/retention numbers evolve globally over time; if almost everyone treats their users like cattle, I won't be surprised if more and more people started treating on-line services as throwaway.

[0] - corollary: all the "we're trying to change the world", or "our passion is to help you do X" they say on their page is just lies.

[1] - that also applies to paid services; I've read that classic Maciej's post[2] about paid vs. free services, but companies aren't stupid; if being paid signals trustworthiness and leads to more users, they'll make the service paid

[2] - [https://blog.pinboard.in/2011/12/don_t_be_a_free_user/](https://blog.pinboard.in/2011/12/don_t_be_a_free_user/)

</comment></comment></comment></comment><comment><USER6> Maybe the most useful interview I've ever done on Mixergy is with Twitch's cofounder about how he founded the company.

Do yourself a favor and get the transcript. He's super-methodical.

[https://docs.google.com/document/d/11Bcu32XwL4S0BHB2fybaqRRQ...](https://docs.google.com/document/d/11Bcu32XwL4S0BHB2fybaqRRQF8I2KUpnFbQLrCM7gZk/edit)

<comment><USER7> That's awesome. You should consider posting it as a .epub or .mobi file!

<comment><USER8> With Google doc you can do "File -> Download as -> epub / pdf" and other formats.

</comment></comment></comment><comment><USER9> If you're interested in the backstory of Justin.tv (which became Twitch), StartUp has a two part podcast on it:

[https://gimletmedia.com/episode/almost-famous- season-3-episo...](https://gimletmedia.com/episode/almost-famous- season-3-episode-1/)

[https://gimletmedia.com/episode/season-3-episode-2/](https://gimletmedia.com/episode/season-3-episode-2/)

<comment><USER10> Just wanted to say thanks for these links. One because the story was/is awesome, and two, I had no idea about StartUp Podcast.

It was funny when one of the co-founders said something along the lines of "who the hell wants to watch other people play video games on the internet," little did he know... I beat my head on my desk some days thinking "why didn't I think of that!!!!" and then I beat my head on my desk again thinking, "what other ridiculous sounding simple idea is lurking out there yet uncovered." If anyone stumbles across that very thing and needs help brining it to fruition, pm me :D

</comment></comment><comment><USER11> This whole industry of game streaming is operating in a gray zone.

It's a matter of time before we see some big lawsuits against the streamer and streaming platforms which make a lot of money by publishing the whole content, without any royalties to game developers /publishers.

For certain games. it doesn't spoil or ruin the fun factor for viewers, but some others it just removed the incentives to buy a copy of the game in the first place.

<comment><USER12> Why do you think content owners would see this as IP theft rather than free advertising? Are people watching play throughs rather than playing it themselves?

<comment><USER13> It heavily depends on the game. There are lots of single-player games where the story is much better than the actual game mechanics. Or where watching somebody figure out all the puzzles is more fun than doing it yourself. Here, streamers and let's-players likely cause a decrease in game sales. In simulation and competitive games on the other hand streamers should usually cause more sales then they prevent.

As one less recent example, watching Half Life 2 with funny commentary is great, but I have no desire to ever play the game myself.

<comment><USER14> Relevant article on a game developer that did not approve of streaming their game: [http://www.thatdragoncancer.com/thatdragoncancer/2016/3/24/o...](http://www.thatdragoncancer.com/thatdragoncancer/2016/3/24/on- lets-plays)

</comment></comment></comment></comment><comment><USER15> Funny enough, I'm watching a Starcraft II channel on Twitch just now, while reading HN. I don't play _any_ games, not even the smallest, but I watch - although only caster streams, not player streams. Tastosis FTW :)

I have a cable subscription as part of my apartment package - but I don't use it. I don't even have a TV. Internet and streaming _only_. I find that if I had TV I'd be much more passive and watch too much, now I watch SC2 but not as much as if I had TV. I spend a lot more time with edX and Coursera and watch lecture videos instead. If I had a TV it would be much harder to turn it off than a game stream. I like the smaller communities, watching a TV production I am much more of a passive anonymous consumer than even a (very big) 50,000 viewer stream on Twitch, and even though Twitch chat is notorious, at least it exists. And a lot of streamers and casters react to what is going on in chat at least sometimes, in traditional media I am much farther removed from the makers.

Of various streaming services I tried watching Twitch in the end provided the consistently best experience, these days up to 1080p60. That alone is not sufficient to know how much data is flowing though, the data rate can be very different even for streams with the same resolution and frame rate, so with the same advertised resolution one channel can be much more crisp than another one, but some people may experience occasional buffering issues.

I just checked, currently there are about 650,000 viewers total on Twitch, rough estimate just to get an idea of order of magnitude. More stats: [https://www.quantcast.com/twitch.tv#trafficCard](https://www.quantcast.com/twitch.tv#trafficCard)

You can change the period on the right, the earliest to set "From" to is 23 March, 2012, to get a view of how Twitch's viewers develop(ed) over time. When I look at the last 365 days it looks pretty flat. I'm not sure about the data though, for some reason the "Rest of the world" (other than USA) is pretty much gone from one day to the next beginning of 2016. Does anyone have an explanation? I doubt that the "rest of the world" stopped watching Twitch overnight.

Looking at [https://stats.twitchapps.com/](https://stats.twitchapps.com/) it's the same result though - no real growth any more for at least the last 12 months. Unless that's based on the same data, I don't know.

<comment><USER16> I don't play computer games either, or watch Twitch streams, but I have watched quite a few "Let's Play" walkthroughs on YouTube (mostly old adventure games). You get to experience the game's story and puzzles without the frustration. ;)

</comment></comment><comment><USER17> With all that growth opportunity, you'd think they could invest a little more in the engineering side. I mean, I like Twitch, but their platform is still a mess. Chat delay can be a minute or more, and the VOD situation still sucks (60 days? Seriously?). I mean, they're owned by the people who run AWS for crying out loud. They should be able to knock this out of the park.

I thought YouTube Gaming was going to muscle in to this space quickly just by virtue of technical superiority. It looks like that hasn't happened yet, but Twitch can't afford to get complacent.

<comment><USER18> Fully acknowledging that some of the things they have issues with, my startup also has issues with, BUT:

My startup is under 2 years old, in the same space, and with a much smaller team. We have solved almost all of the technical problems twitch faces, and even released many other features that Twitch is only now also working on.

We have regularly looked at this market and what keeps fueling twitch's success, and strictly speaking people go where the content is. It has NOTHING to do with the user experience of the product, nothing to do with the quality of the tech. If there are 500 people streaming the game you want to watch on twitch and 10 on another platform, the viewers stay on twitch.

Anyway, it is an interesting problem, and one that all competitors in this space are facing. And has clearly not pushed twitch out in any way.

Finally the self promotion if anyone is interested in our product: [https://www.stream.me](https://www.stream.me)

<comment><USER19> > We have solved almost all of the technical problems twitch faces

A lot of those problems are a lot easier to solve with a smaller audience.

My point is, you haven't solved Twitch's problems _at Twitch 's scale_.

<comment><USER18> Very true, that is a continual problem that even twitch hopefully has to address often. There are no simple answers as you scale an application. I was more addressing the feature set.

All a team can really do is setup an architecture that can theoretically scale, and then adjust as you reach higher and higher levels.

FWIW, our site is actually a pivot after a product that reached a higher unique per day than twitch currently has (99th globally vs 63rd globally according to alexa.com). And I can say from experience that scaling a real- time experience is MUCH harder than a more traditional web app experience. But the techniques are much the same, reach the scale, see what breaks, fix.

</comment></comment></comment></comment><comment><USER20> My 9 year old son would rather watch people play minecraft than actually play it. I'm not talking about competitive or pro play (if that even exists for minecraft) - just people goofing around.

Potentially just an enormous new business for games.

I still can't get my head around it. It's like his version of cartoons.

<comment><USER21> It's not really a new phenomena. Look back in the 70s or 80s with arcades, people would stand around watching their friends play. Then later young people went to each others houses and played video games (mostly multiplayer but some single player and watched).

It's entertaining watching how other people do things. They might play differently than how you would play it.

<comment><USER22> Ha, I remember those days all too well...there would be a big crowd around the best players of PacMan, Defender or what have you...you would have to work your way in there, or be tall enough to look over peoples shoulders, to see what was going on.

</comment></comment></comment><comment><USER23> It's worth noting that in the 2 year period since Amazon bought Twitch, their search interest via Google has been stagnant.

[https://www.google.com/trends/explore?date=2014-08-25%202016...](https://www.google.com/trends/explore?date=2014-08-25%202016-08-26&q=twitch)

<comment><USER24> twitch is twitch. Who really searches for Twitch, instead of just visiting the site and searching for content there?

<comment><USER23> That proportion is not too relevant for this graph. The graph is relative.

Even if a only a small percentage of Twitch users use Google search to access Twitch, the graph would be somewhat indicative of it's growth.

<comment><USER13> The question is: does the probability that a given user accesses Twitch over Google search go down as the user uses Twitch more often? Does it so more than on other sites, maybe because regular twitch use promotes other ways of engagement (phone app, console app, email notifications, twitter links from the streamers, etc)?

If 90% of new Twitch users reach Twitch over Google, 30% of one week old users and only 5% of one month old users, then a flat graph could actually indicate growth.

</comment></comment></comment></comment><comment><USER25> More and more people are dumping cable TV. The main reasons that I hear for people keeping it are sports and news. If live streaming sites like twitch can sign deals with sports leagues, then I think we will see even more people cancelling their cable.

The nice thing about streaming is that you aren't channel limited, so there is no reason why you can't follow some obscure minor league team on the other side of the planet.

<comment><USER26> NFL rights alone will (my guess) cost around 5 billion USD per year when the next contracts are negotiated, maybe more.

There is no way an online service puts up that kind of money considering something like 1/3 of Americans simply don't have high-speed internet access.

<comment><USER19> The last time the rights were negotiated in 2013, they were $40B, with ESPN paying about double what NBC, CBS and Fox payed.

There is one company with the kind of money that might make sense -- Apple.

It would be a heck of a way for them to jumpstart a streaming service and make it only available on AppleTV.

Probably the biggest holdup would be the NFL itself, who makes sure those broadcast contracts reach the biggest number of people to keep their brand popular.

<comment><USER26> Apple really is the only option that makes sense, but mostly because it just doesn't make sense for anyone else. Would love to see it happen. I pay $50/month during the season for Sunday Ticket and the service is just OK. Would love to see a better take on it.

</comment></comment></comment></comment><comment><USER27> What is a good example of a twitch stream to show how great live streaming can be?

<comment><USER28> My favorite is [https://www.twitch.tv/fopt_membrillo](https://www.twitch.tv/fopt_membrillo). He streams pro Age of Empires 2 tournaments in the crazy Spanish soccer style, and his community (including me) support him enough that it's his full-time job. Full-time AoE2 streamer in 2016??? I think that's amazing.

An example of a crazy moment: [https://www.youtube.com/watch?v=JrxXKK8oIyE](https://www.youtube.com/watch?v=JrxXKK8oIyE)

<comment><USER29> Speaking of AoE2, I think Resonance22 has a really good voice and is great at explaining the game while playing/spectating. Random example: [https://www.youtube.com/watch?v=Lo- qAVGb5vQ](https://www.youtube.com/watch?v=Lo-qAVGb5vQ)

(He's not doing it full-time.)

AoE2 HD really got me back into PC gaming after a decade of only touching Wii/Wii U/mobile games. I'm not yet sure if it can drag me into watching Twitch, though.

<comment><USER28> Resonance22 is indeed fantastic, and very professional. I know he wants to make a career of casting/gaming at some point and I hope he manages to pull it off. T90Official is another great AoE2 caster in a similar style to Resonance22.

Same with me about AoE2 HD, I hadn't played a PC game for years until I tried it. Now I'm hooked on both playing and spectating. The $30k Clan Masters tournament going on right now is insane.

</comment></comment></comment></comment><comment><USER30> Watching people play video games is something I still don't understand.

<comment><USER31> Give it a try, see if you like it. I'd suggest a variety streamer first. The main thing for me, is that it's entertainment, not really the game itself.

Visualise this: Imagine your favourite comedian cracking jokes, now imagine him cracking jokes while playing a video game. Now imagine a chat of thousands joining in and interacting with your favourite comedian. Now imagine yourself talking to and cracking jokes with them. This is, in essence what many popular streams are.

<comment><USER32> Now imagine he's not funny and he's trying to appeal to kids.

This is why I don't bother. I do like speedruns, and I watch some of the cinemassacre stuff on youtube since I do actually like watching those guys.

</comment></comment></comment><comment><USER33> I honestly think the game streaming model is sustainable, but it's also a bit of a fad that will die down in 5-7 years. I also think Sony and Microsoft will begin to make their own portals of game streaming that will challenge Twitch. Microsoft just made an acquisition that points to this. That's not to say they want to kill Twitch, just that they see its value. In doing so though, it will squeeze the margin on advertising revenues, couple that with just demographic shifts in the social fad and I believe it will not grow near as fast as people forecast As for valuation, I don't know the numbers, it could be worth billions; but $20 Billion seems like a stretch when CBS is only worth $22 Billion and Viacom $18 Billion at present. I wonder what their actual financials look like, I feel like there is more monetary incentives and opportunities for the content creators than for Twitch itself.

</comment><comment><USER34> Twitch is a very interesting linguistical experiment, as the chat emotes can be used to convey very subtle nuances in meaning, unlike anything we've seen before, off- or online. For example, Kappa is a smug face denoting sarcasm, superiority, condescension and arrogance, but can imply any of those meanings _subverted_. Combining the emotes together, along with standard ASCII characters, can produce very complex and astoundingly compact stories[0].

[0] [http://i.imgur.com/sVQr7wY.jpg](http://i.imgur.com/sVQr7wY.jpg)

</comment><comment><USER35> Game developers don't have any option except to restrict public display of their games in some way.

There are now plenty of people who enjoy watching but not playing games.

Game developers need revenue for this firstly because they deserve it, having made the entertainment, but secondly because former players are now just watchers and not paying money, reducing revenue.

My guess is that games developers will permit public display of a restricted part of the game, like level one only, and will require royalties for display of other sections of the game

<comment><USER35> I think it's funny that people downvote because they don't like what they read even if its true.

Put yourself in the shoes of the game developer who puts everything on the line to develop a game that thousands of people watch but the developer gets no revenue for.

<comment><USER36> >Put yourself in the shoes of the game developer who puts everything on the line to develop a game that thousands of people watch but the developer gets no revenue for.

Has this _ever_ happened?

<comment><USER37> Yea pretty sure if you get the point where you have thousands or tens of thousands of viewers on Twitch, your game is already very successful.

</comment></comment></comment></comment><comment><USER38> I wish Twitch had an Apple TV app.

I've found that the Apple TV is the only way I "get" YouTube in the same way the kids these days do. No way am I watching videos on my laptop/desktop/iPhone/iPad while multitasking, but video on the big TV is great when sitting on the couch or on in the background.

Twitch on the Apple TV would be similar, but it appears Amazon (as with Prime Video) is refusing to release an app.

<comment><USER39> Welcome to todays walled entertainment gardens. Amazon thinks their Fire TV or Stick is superior to Apple TV (or any other product) and why would you want an Apple TV anyway? (sarcasm)

<comment><USER40> Amazon doesn't want to pay a tax to apple when they sell videos/service through an AppleTV. Amazon Prime app is available on other media players.

Apple on the other hand doesn't support their video ITunes content on non apple devices.

</comment></comment></comment><comment><USER41> and amazon could be a $3T (that is trillion) company.

Nothing wrong with these speculations. At least they are positive and much better than recession or bubble is coming like BS rumors.

source - [http://finance.yahoo.com/news/chamath-palihapitiya-says- amaz...](http://finance.yahoo.com/news/chamath-palihapitiya-says-amazon-could- be-a--3-trillion-company-174748494.html)

</comment><comment><USER35> I wonder how the founders feel.

<comment><USER42> Well we still got $970 million dollars, so mostly alright :)

<comment><USER35> What did your mom say when you told her that?

</comment></comment></comment><comment><USER43> These valuations are absurd.

</comment><comment><USER44> Not real

</comment><comment><USER45> Steam(Valve) could be next on Amazon's list.

Desktop application: Add \- amazon shopping \- streaming \- viewing \- social ...

<comment><USER46> Why should they sell it to Amazon? Valve is very profitable as it is.

<comment><USER47> Also: Valve is privately owned and the owner (it may just be Gabe) is not likely to sell.

[http://www.gamasutra.com/view/news/177395/Newell_Valve_would...](http://www.gamasutra.com/view/news/177395/Newell_Valve_would_disintegrate_before_selling_out.php)</comment></comment></comment>


Google Chrome and Earth available in Iran - <AUTHOR> http://www.bbc.co.uk/news/technology-12217228 <comment><USER2> A good news for the freedom of information.</comment>


Pity the Poor Couple Who Make $450,000 Per Year - <AUTHOR> http://scienceblogs.com/mikethemadbiologist/2010/09/pity_the_poor_couple_who_make.php

<comment><USER2> A few lessons here re the blog post being referred to:

1\. The title "professor" does not confer knowledge, intelligence or wisdom.

2\. Know that your online audience is diverse even if your regular readers aren't.

3\. If you're in a prominent non-activist position, avoid discussing politics, religion or sex.

4\. Never disclose details about your personal life, especially financials, unless you've thought it through and had a trusted and objective friend to review your post.

5\. Be careful about making yourself the subject of a blog entry. It's tough to avoid coming off as narcissistic.

And the obvious cliche: Write your emails and blog entries as if they're going to be published on the front page of a very popular newspaper that holds opposing views to yours.

<comment><USER3> Look at the whole picture. As this man's salary grew he started to add services and dependents and a wife and a lot of other things to his budget. He basically has reached a point where it is unsustainable but now he has convinced himself that he is in a hardship.

Not so different from the general public that believes owning a home, having three or four kids, and driving new cars is a right.

<comment><USER4> Everyone spends more as they make more money. It's pretty much human nature. The difference is that most people keep some bearing on reality and realize that they have it better than almost anyone else in the world (speaking of wealthy Americans here). They can also probably imagine cutting some stuff out if need be without blogging "woe is me".

<comment><USER5> >(speaking of wealthy Americans here)

You mean wealthy citizens of first world countries, right?

</comment></comment></comment></comment><comment><USER6> The link is here: [http://webcache.googleusercontent.com/search?q=cache:kpzaEp0...](http://webcache.googleusercontent.com/search?q=cache:kpzaEp0IVw4J:truthonthemarket.com/2010/09/15/we- are-the-super-rich/+todd+henderson+poor&cd=2&hl=en&ct=clnk&gl=us)

<comment><USER7> Thank you. The original blog post seemed to have been removed.

</comment></comment><comment><USER8> This is ridiculous. Any American (or Australian for that matter!) who whines about their taxes should come and work for a few years in Europe. In Belgium, on an entry-level salary (for a post-doc academic position) I was being taxed at over 50% (my communal tax was at 8%):

"For 2010, marginal income tax starts at 25%, rises to 30% over EUR 7,900, 40% over EUR 11,240, 45% over 18,730 EUR with a top limit of 50% for incomes above EUR 34,330. Residents also pay communal and regional taxes at rates between 0% and 8.5% of the total income tax payable. The most common rate is 6%." (source: [http://www.expatica.com/be/finance_business/tax/taxation- in-...](http://www.expatica.com/be/finance_business/tax/taxation-in- belgium-8618_8286.html) )

Throw in a 21% VAT on top of that and watch most of your income go to tax.

Mind you, Belgium is one of the heaviest taxers, but coming from Australia, where it is significantly less hard-hitting (top tax bracket is 30% for 180k AUD, then 45% for every $1 after), it was astonishing. I don't think I got what I paid for in Belgium either, to be honest, but that's a different issue ;)

<comment><USER9> While it may be true that Europeans are taxed more heavily than Americans, that does not necessarily mean that Americans being taxed more heavily is a good thing to happen. Your argument seems to boil down to, "You think that frying pan is hot? Join me in the oven then you'll really have good reason to complain." Thanks, but what if the best thing is to sit near the AC instead? I'm not claiming, by the way, that it would or wouldn't be better to tax American rich more, I'm just saying the argument you made is not a very good one.

<comment><USER8> Whereas I'm all for experiencing how others live, and thereby gaining a greater appreciation and experience of how the world works :) My argument isn't that Americans should be taxed more, just that Americans should come and see how the rest of the world works before having a good old whinge ;) (which is basically the theme of all the objections to this article -- I'm just expanding it out from rich/poor). 'tis the same with socialised medicine -- if those against it lived in Europe/Australia/Canada/etc. for a bit and saw how well it worked and how well loved it was in these countries, they'd probably have a different idea about it for their own.

<comment><USER9> OK, I see your point, and I think it is a fine one. Not very practical because of immigration policies and whatnot, but definitely of an idealism that I can subscribe to.

</comment></comment></comment></comment><comment><USER10> To a certain extent this guy has a point. You are rich if you can afford a good lifestyle without having to work for a living. These people have a high income, but they also have high level of spending and they have nowhere near the assets to support their lifestyles.

So, rather than being rich, they are wage slaves with high incomes.

When you have enough money to stop working and still have the lifestyle you want, your life is completely different. It buys you the one thing that is really precious - the time to do what you want with your life.

Although I am not extremely wealthy, I have enough savings to stop working and to spend my time the way I want.

The other interesting aspect of this case is that it is a classic example of the hedonic treadmill. No matter how rich you are, how successful, how productive, after a while the joy wears off and you think: If only I had a bit more, then I'd be happy. The millionaire thinks he or she needs $10m, with $10m you think $100m, etc. "The only way to win this game is not to play".

</comment><comment><USER11> As somebody who stands to get clobbered by this high tax bracket, I sometimes feel like I'm the only one out here who thinks it's just fine.

I've always been in favor of a flat tax with a lower bound. So, say 50% of all income above $20k. Let the regular folk (like me last during the last couple years of getting a bootstrapped startup off the ground) get off without paying any tax whatsoever. Take up the slack by making those with plenty (like me now that things are going well) pay our fair share.

I mean sure, losing _half_ your income to taxes is a problem, but it's one of those good problems, because to get it you need to be making _four times_ what everybody else is making.

As long as you figure out what your _actual_ means are and live within them, you'll still do fine.

EDIT: 50% -> "high" thanks to the below:

<comment><USER12> There is no "50% tax bracket". Obama's proposed plan would raise the 33% and 35% brackets to 36% and 39.6%.

<comment><USER13> Sure, but you're leaving out FICA (6.2%) and Medicare (1.45%). This bumps the brackets to 40.65% and 42.65% (or 43.65% and 47.25%). After local taxes this can easily top 50%. Suppose you earned $357k gross in Rhode Island. Your total tax liability would be in the area of $189k, or 52.7%.

All of this also ignores the employer FICA contribution.

<comment><USER14> Can you break down your calculation a little? It's way higher than what I got...wondering if you forgot that these are marginal tax rates?

<comment><USER13> You're right. I bungled it up and didn't treat the rates as marginal.

</comment></comment></comment></comment></comment><comment><USER15> Lost in the bashing of this professor who had the temerity not to want to pay higher taxes, is the fact that he had to invest lots of money to be able to earn his big salary. He probably has at least 7 years of higher education. His wife, as a medical doctor, probably has at least 8, if I understand correctly how med school and internships work. They sank a huge amount of money -- maybe close to $500,000 -- into investing in their careers, while most people in the lower income brackets have spent little, if anything, in that way. And the cost to the professor and his wife is even greater if you factor in the opportunity cost of not working high-paying jobs all those years they were in school. Call it a cool million sunk into their education and training, easily.

So it's hardly greedy of the guy to want to be able to at least pay back his wife's student loans before Obama hits him up even harder to help finance a new era of government expansion. There's a difference between revenue and profits, after all.

As for saying he shouldn't have bought a million-dollar house, that's hardly an unreasonable price for a couple with a combined annual income of roughly half that amount. As a multiple of their income, it's comparable to a couple who makes $125,000 a year buying a house worth $250,000. That doesn't sound so crazy, does it?

<comment><USER16> I think you're living in la-la land. If he had $500,000 to spend on education in the first place, then he started rich and just keeps getting richer. If he'd foregone the education and invested the $500k in something else, then he'd still be rich, and (presumably) he'd still feel hard done by.

<comment><USER17> From the original article, which you may not have actually read:

"My wife has school loans of nearly $250,000 and I do too"

They made the investment in their education and future with borrowed funds, just as I (and many others) have. It's not like he broke $500K off some trust fund he was born with...

</comment></comment></comment><comment><USER18> <rant>

This article irritates the living hell out of me. I was extremely poor as a child, yet there are sensible ways people act who are in poverty and ways in which poor people act that causes poverty.

> Because personal responsibility should not be the sole purview of single > minority mothers.

The popular idea (in the USA at least) is that once a person is a "single mother" they are somehow special and everyone has to pay their way. Popular politicians (Hillary Clinton) say things like "it takes the village to raise a child". This is against the normal notion of the father and mother paying for the child and raising the child. Most single mothers probably do not know the father of their children.

This is utter bullshit - a poor (and rich girl) is not supposed to get pregnant out of wedlock – that is insane stupidity. This has nothing to do with poverty. Getting pregnant does not entitle you to a big chunk of another's money.

> Being poor is going to the restroom before you get in the school lunch line > so your friends will be ahead of you and won't hear you say "I get free > lunch" when you get to the cashier....

Nice. I didn't get lunch at school.

> Being poor is feeling the glued soles tear off your supermarket shoes when > you run around the playground.

Hmm… fair enough. I only wore shoes since 8th grade (because it was mandatory). In any case, running around barefoot makes you faster (almost everyone did that). Gluing is a bad way to fix shoes – the better way is with a thick type of needle and twine (don't exactly know what this is in English).

> Being poor is relying on people who don't give a damn about you.

I never had a problem with people not caring about me. Of course you will not be the most popular guy with the girls or have fancy clothes (you know that group). But that doesn't mean that people do not care about you.

> Being poor is not talking to that girl because she'll probably just laugh at > your clothes.

Or having extremely bad acne+teeth but no money for medicine? Been there. Still doesn't entitle you to someone else's money.

> Being poor is your kid's teacher assuming you don't have any books in your > home.

You know what many teachers like? People who do well and work hard. All the money of rich kids cannot (usually) buy them good test scores. Fair enough, they have fancy scientific calculators and computers while you must do with a hand-hand-hand me down. But that doesn't help them that much. More often the privilege that rich kids experience set them up for failure later in life.

Here is what I have found with parents that are different: 1\. Became super conservative – everything is saved, nothing is wasted. Even now, when my parents are doing well, my father still can't throw away glass bottles. 2\. Obsession with cleanliness (my mother used to say: "We may be poor, but we are not dirty"). 3\. Obsession with education and forcing children to work extremely hard. 4\. Extremely socially conservative. My father forbade dancing, alcohol. Even forbade my sister from watching television soaps, etc… 5\. Extremely strict. 6\. Obsessed with being successful. My father has a successful business now, but still work 15 hours a day.

<\rant>

</comment><comment><USER19> He's already taken the original post down, did anyone capture it and want to repost?

<comment><USER20> [http://webcache.googleusercontent.com/search?q=cache:kpzaEp0...](http://webcache.googleusercontent.com/search?q=cache:kpzaEp0IVw4J:truthonthemarket.com/2010/09/15/we- are-the-super-rich/)

<comment><USER21> Damn, you would think a lawyer of all people would be more careful with trying to destroy the evidence!

<comment><USER3> Content removals can take up to 24 hours with Google webmaster tools.

</comment></comment></comment></comment><comment><USER22> > Perhaps Henderson's outburst should be chalked up to the influence of > degenerate white culture

This would be unacceptable to say about any other ethnic group - I've got to say, if you're Caucasian you should get upset at general hate speech and slapping "white" on something like it's a bad thing. I keep the company of people of all color and background, I'll do business with anyone I like, but it's time white people stop taking abuse like this passively. Any other ethnic group would be up in arms, calling this guy a racist asshole, and writing off his credibility permanently.

<comment><USER9> > Any other ethnic group would be up in arms

That is because the other ethnic groups are not the dominant ones in society, and are typically disadvantaged on the whole because of their race. My personal view as a White person is that I have enough advantages by my White male-ness that I do not need to demand more, or do anything to offset whatever minor inconveniences might arise from the same. Doing so would seem petty to me if I walked in another man's shoes.

Is this racist? Yes, I suppose. White privilege is real, though. A recognition of this fact requires some ability to discriminate between race when observing the state of society, so perhaps "racist" should not be the bad word. Instead, "racial oppressivism" might be a better thing to demonize.

<comment><USER23> What are the advantages you receive due to white male-ness?

(Note: I'm asking about advantages to an individual, not statistical advantages to a group. )

<comment><USER24> -No imbred fear of inferiority. -Acceptance all across the nation if not the globe. -Inspirational historical role models that you can relate to taught by default(save for february...lol) -Less chance of long-term jail sentencing for proportional crimes -etc... the list can go on. This is not to say that you should feel bad for having a slight advantage, but not to recognize it can be confusing to those who have lived with the disadvantages.

<comment><USER23> Interesting - at least two of the disadvantages are entirely self inflicted (inbred fear of inferiority, unwillingness to be inspired by people of a different race).

I'd be curious to see numbers for the jail sentencing claim. It sounds plausible, but numbers would be nice.

<comment><USER9> Only in the sense that any psychological issue stemming from abuse is self- inflicted.

</comment></comment></comment></comment></comment></comment><comment><USER25> Does the law professor have a right to complain? (Marginal Revolution):

[http://www.marginalrevolution.com/marginalrevolution/2010/09...](http://www.marginalrevolution.com/marginalrevolution/2010/09/does- the-law-professor-have-a-right-to-complain.html)

</comment><comment><USER26> What's with all the class warfare in the US lately? There isn't anything wrong with making money. I'm no where near the 450k/yr earnings range, but I certainly don't begrudge anyone who is. Some people seem to have the perspective that your earnings are the government's money, and they, through the goodness of their hearts, let you keep a percentage of it.

<comment><USER27> I think people don't (at least in the US, and probably globally, generally) begrudge people what they view as "fair" rewards, especially if they themselves might have a shot at them. Most of the political supporters of low taxes in the US are actually not incredibly high income, but people who think they may have high income in the future.

If you view most wealth and income as coming from fraud/crime or deceit, then it is much more reasonable to want some kind of confiscatory taxes. I think in the past, most Americans with relatively high incomes (doctors, small business owners, etc.) were well respected for contributing more value to the community than they took out in salaries. It is a lot harder even for me as a libertarian to defend those who make huge amounts of money from wall street, government regulation, etc.

In most third world countries with pretty open class warfare, the rich have largely made their money from extractive industry or other exploitation. I'm not sure if this is cause or effect -- there's a strong argument that living in a country where wealth only comes from that kind of thing actually turns your country into a horrible place to live, any where anyone who would otherwise be productive would then want to flee to be productive elsewhere.

</comment></comment><comment><USER28> Is the title here incorrect? From the article:

 _Our combined income exceeds the $250,000 threshold for the super rich (but not by that much), and the president plans on raising my taxes._

As for the author's premise, it all depends on what you're willing to put up with. I have a rusting 25 year old car and a dead front lawn (no gardeners, scarce water, no time to landscape myself). There are likely people who disdain this, and I posit the author may be one of them. But I have a family of six in an expensive area for well under half of the money he describes.

To the people with plenty of money, gardeners and private school are simply part of the cost of doing business; non-negotiable. But they remain optional, just as my choices of four kids an an expensive area are also up to me. There are others who would call me wealthy with my spending of money on such things. And they are right, in their way.

</comment><comment><USER29> See my comment in a related thread:

<http://news.ycombinator.com/item?id=1711490>

</comment><comment><AUTHOR> A follow-up article by Ezra Klein in the Washington Post:

[http://voices.washingtonpost.com/ezra- klein/2010/09/the_rich...](http://voices.washingtonpost.com/ezra- klein/2010/09/the_rich_are_not_bad_just_rich.html)

</comment><comment><USER30> Yeah, it's not like they worked to earn it or anything - oh wait.

</comment><comment><USER31> While it does piss me off to read someone who makes so much money complain, I don't think it's ridiculous for someone who already looses nearly half their income in taxes being concerned about a further hike. Suppose that last year I made $10k. Someone, somewhere, thinks that's a hell of a lot of money. But I bet most people on HN would not condemn me for being concerned about the government taking a few extra thousand.

His closing comment:

>The problem with the president's plan is that the super rich don't pay taxes – they hide in the Cayman Islands or use fancy investment vehicles to shelter their income.

seems like it might have some merit as well, although I am not in a position to actually know for certain.

Although, I have asked my father in the past what he pays for taxes, and he has told me well above 50%. He makes nothing like this man's wages, which makes me wonder how this man is getting away with less than 50%...

<comment><USER32> Very few occupations lead to a cash salary of more than a few hundred thousand dollars, tops. All the rest of their income (interest and other gains from investing, appreciation of assets, etc) is taxed at lower rates. Long term capital gains are only taxed at 15%, for example. So the richer you are, the lower your marginal tax rate can be as the proportion made up of ordinary income becomes smaller.

<comment><USER31> I think I may have just tasted the flavor of the "the rich are getting richer while the poor are getting poorer" kool-aid for the first time.

</comment></comment></comment><comment><USER33> Another article in the same vein

[http://latimesblogs.latimes.com/money_co/2010/09/obama- bush-...](http://latimesblogs.latimes.com/money_co/2010/09/obama-bush-tax- cuts-high-income-earners-wealthy.html)

</comment><comment><USER34> I wish he could lose his job for being so ungrateful and out of touch with reality and learn how truly privileged he is. This guy needs a wake up call ASAP.

Also, look at how disgusting some of the comments are on the cache, truly disgusting: "The poor are inferior to the rich in the U.S. The ones who are rich have used the system to generally move up, not manipulate the rest of the population as the liberal biters/haters would have you see the world you created."

<comment><USER9> Hopefully he will keep his job if he is good at it. No sense wasting that education when lawyers can learn good practice from him, even if his politics suck. You are basically advocating employer censoring of employees' private political opinions and expression, which is a dark road to advocate if there ever was one.

<comment><USER31> We can wish for bad karma though

<comment><USER9> We shouldn't. There's enough evil in the world already, and this man losing his job is not likely to make things better.

</comment></comment></comment></comment><comment><USER35> Not really saying all that much.

We earn over $250k so we're considered superich though that's not fair because we're not really rich because we spend all our money on normal stuff like house and groceries and richer people evade taxes offshore but we're not rich enough to do that and we could evade taxes by pretending to be divorced but we're too moral to do that and if you tax us we'll have to fire our gardener and cleaner and sell our house and that's not good for the economy and who said that you can spend money better that me anyway you Marxian.

<comment><USER36> Your money might not be stashed offshore, but your periods and commas seem to be safely hidden.</comment></comment>


Glen Green wall's First Look News Site is down? - <AUTHOR> http://www.firstlook.org

<comment><USER2> Then don't link to it. Flagged.</comment>


Lessons learned porting 50k loc from Java to Go - <AUTHOR> https://blog.kowalczyk.info/article/19f2fe97f06a47c3b1f118fd06851fad/lessons-learned-porting-50k-loc-from-java-to-go.html <comment><USER2> It is very interesting to see in such projects how they expose the weakness of certain Java idioms. The mentioned JavaBeans getters and setters are obsolete pattern, for which in most cases there's no good reason to keep it in the code. Java ecosystem is probably the richest one on the design patterns, some of which receive "anti" prefix over the years (e.g. self-contained singleton). At the same time new languages explore and verify the ideas and coding styles that might be worth to borrow and make mainstream. Porting exercise can be such source of new best practices pushing us to rethink what is worth keeping and what is pointless overengineering.

<comment><USER3> I was struck by the lack of inheritance in go, that to me is brilliant.

I've worked with C# for a decade, and I've yet to see a use of inheritance that wouldn't have been easier to maintain in the long run without using inheritance. We've limited our own useage to override methods in the standard library, but even then it's often used to implement things that are really just terrible practices. Like adding search functions for AD extension fields or increasing the timeout in one of the older web clients.

<comment><USER4> Embedding does seem like one of the decisions Go got very right.

Many languages (thinking c#, Java, c++) say they promote composition over inheritance but yet make inheritance so mmuch easier to use.

<comment><USER5> Indeed! This has _always_ mystified me. Why is it so easy to implement what is now considered to be an anti-pattern (inheritance) when it's so boilerplate and annoying to implement composition? Why does C# not have language support for delegating members? Why do I have to buy and use ReSharper just to generate all that boilerplate? It's a constant battle talking to "just get it done" developers about why inheritance is bad.

<comment><USER6> Inheritance is only considered an anti-pattern by some.

Since the 90's, any good CS book about OOP paradigms had discussions about is-a and has-a and how to make the best use of each, depending on the desired application architecture.

The thing is, such books usually aren't taught on bootcamps.

<comment><USER3> Inheritance isn't an anti-pattern in academia. I do part time work as an examiners for CS students, and I see their car/animal examples everywhere in introductionary courses.

When we have interns, they'll sometimes build things with inheritance. So it's certainly still a thing.

I've yet to see a real world use of it, where you wouldn't have been better of not using it though. My real world is the relatively boring world of enterprise public sector software, however, and maybe I'm simply oblivious to where inheritance might be worthwhile.

<comment><USER6> That is the thing, the architect should have a proper understanding of is-a and has-a relations and apply them appropriately.

Initially, VBX only allowed for composition as well, COM introduced interface inheritance with delegation, when one wanted to override a couple of methods, but not the remaining several ones.

And now UWP offers mechanisms to do implementation inheritance in COM, because everyone got tired to write delegating code for is-a relations.

Inheritance and composition are both tools, it is up to each one to learn how to use them appropriately.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> The article is more about the process and not the motivation for this port. What problem with Java/JVM caused the organization to commission this expensive porting exercise? And what are the benefits they have achieved after the port.

<comment><USER8> RavenDB is a database server, like PostgreSQL or MongoDB.

It requires database drivers (client libraries) for as many languages as possible.

More client libraries, more programmers can use RavenDB, more licenses for RavenDB sold.

They already have C#/Java/Python/Node.js libraries.

I ported Java client library to Go, so that people who program in Go can access RavenDB database.

<comment><USER9> Bonuses questions: do they other libraries stem from the java root client too or did they evolve separately (even out of house)? Why did you choose Java to port from? Are there interesting lessons in the commonality / differences between the language implementations?

<comment><USER8> RavenDB is written in C#. At first, it was Windows only but now is cross- platform database engine (Windows / Linux / Mac OS).

As a result, the original and most featureful client is for C# / .NET.

Java client is a port of C# client, done in house by Hibernating Rhinos (the creators of RavenDB).

As far as I can tell, other clients (Python / Node.js and the Go client that I wrote) were contracted to outside people.

The company suggested starting from Java code base. It makes sense because C# client heavily uses LINQ, which is unique to C# (neither Java nor Go has LINQ- like capabilities).

I didn't dig much into non-Java clients so can't speak much to that.

Overall, I was surprised how similar I was able to make Go code to Java code.

Changing from exceptions to errors was pervasive but a simple, mechanical transformation.

Porting functions using generics was the biggest hurdle.

Porting functions that use overloading was easy but annoying.

That being said, a Java code base that heavily used virtual functions and deep inheritance hierarchy would be more challenging to port to Go. Lucky for me, this code wasn't.

<comment><USER6> > neither Java nor Go has LINQ-like capabilities).

Not true since Java 8, with the introduction of streams and functional interfaces, which keep being improved with each release.

What Java doesn't have are expression trees, which are convenient but not a requirement for LINQ like features.

<comment><USER10> Expression trees are a requirement _if you 're writing a database client library_.

</comment></comment></comment></comment></comment></comment><comment><USER11> It's interesting that the resulting go code has 43k lines of code, while the python client for raven only has 6k lines. I don't know whether they have equivalent feature sets - but I kind of wonder how it would have turned out if the go port would have been based on the python version.

<comment><USER12> go codebases are not shorter (by much) than java's.

Performance is also usually on par - unless java's equivalent is built around a lot of reflection (orm and what not).

However, go compiled binaries are usually smaller, and code IMO is much more readable.

<comment><USER13> Like with all languages the implementer matters. There's a remarkable amount of variance that I've encountered in the tersiness of both Go and Java code.

For example, Go's err != nil pattern is often cited as being ugly, but good go code will often remove errors by design.

There's a good post by Dave Cheney about this; [https://dave.cheney.net/2019/01/27/eliminate-error- handling-...](https://dave.cheney.net/2019/01/27/eliminate-error-handling-by- eliminating-errors).

I think this is equally true of Java. Most Java code I've seen disgusts me, but I've also seen some beautifully written pieces.

<comment><USER14> This pattern is known in numerical computing as NaN. It's drawback is that when the computation produces NaN, one has no idea what triggered it. But that can be mitigated if the program prints stack trace on the first NaN. In case of Go that corresponds to logging error when it happens.

Another thing is that in many cases there is no good sentinel value to return that naturally leads to exit from loops or complex logic to check for error at the end of a function.

</comment></comment></comment></comment><comment><USER15> I personally have ported about 20K LoC from a java application to go; the majority of the code was from an underlying library used to model the data structures being used. It was mostly a class-by-class, function-by-function process of porting the base data structure and then all of its implementations, and culminated with the port of the services which uses all of it.

Regarding the author's frustration of moving POJOs over (and their variable declarations), I used sublime text to select all variables based on a shard token, then cut them and moved them over by word. You can then lower case the first letters of every word, and then find-and-replace by type using a shared token. I found this method very quick and effective.

<comment><USER16> shard token top of 2nd paragraph threw me for a loop, is this some sublime feature I don't know about? Means Shared token.

<comment><USER15> Yeah, that was a typo: I meant shared. Sorry!

</comment></comment></comment><comment><USER17> >Java allows circular imports between packages.

>

>Go does not.

Huh? As a package maintainer for a lot of Go stuff, I had to deal with tricky cyclic dependencies several times, especially in Google own Go packages like golang.org/x/build and google cloud.

<comment><USER18> What do you mean by "deal with"?

<comment><USER19> They had to take it into an alley and kill it, mafia style.

More seriously, they probably means find ways to restructure packages and extract shared dependencies into subpackages to avoid cyclical dependencies.

<comment><USER18> Which in turn means that go doesn't allow it, hence the original point.

</comment></comment></comment></comment><comment><USER20> Thanks for sharing. I understood the contract was about replicating as much as possible the same structure or workflow as the original Java code but if you had to develop the same client in Go from scratch, where would be the main differences in your approach and how the Go code would benefit ?

<comment><USER8> I would split it into multiple packages.

I would survey existing libraries for other JSON document databases (MongoDB, Google's Firestore etc.) and steal all their best ideas.

But honestly, good API design is something that needs a lot of time to reach the polished state.

Whatever I can come with today, I'm sure a year from now I would find ways to improve that.

That has been my experience with much smaller libraries I wrote.

The more time you get to spend thinking about the problem, the better solution you can come up with.

</comment></comment><comment><USER21> Some of these examples were obviously cherry picked for one side of the other. Comparing against getters/setters, which are written once, generally automatically by the IDE, and never looked at again and omitting the ubiquitious "if err, _ = f()" rote seems a bit disingenuous.

<comment><USER22> They also neglect to mention that there are active conversations in the Java community around how to effectively implement Data Classes. For example: [https://cr.openjdk.java.net/~briangoetz/amber/datum.html](https://cr.openjdk.java.net/~briangoetz/amber/datum.html)

</comment></comment><comment><USER23> Go has code coverage analysis in its testing facilities... why not use those?

<comment><USER8> I do use builtin coverage.

It's just it's nice to be able to track code coverage over time, which is what codecov.io provides.

Also, running all tests (to get full code coverage) takes 20 minutes and makes fan on my laptop unhappy.

The way it works is that on every checkin the CI job runs all the tests with code coverage enabled and uploads the results to codecov.

Codecov can then plot coverage over time.

My gripe is with inaccurate accounting of empty lines (like comments or struct definitions) by codecov. Go's tool to visualize this count them properly. I don't know if it's codecov or maybe I'm not sending the data properly.

<comment><USER24> In the above linked article you say:

> Codecov is barely adequate. For Go, they count non-code lines (comments > etc.) as not executed. It's impossible to get 100% code coverage as reported > by the tool.

I have an open source Go project that has some comments in methods, but still achieves 100% coverage using Codecov.io — I'm not sure what I do differently to yourself? (Perhaps I'm not using any inline struct definitions?)

Here's a link, in case there's anything useful to you in my .travis.yml ? [https://github.com/jimsmart/store4](https://github.com/jimsmart/store4)

HTH

<comment><USER8> It looks like we're both doing the same thing.

I don't know, maybe I'm not counting things right but for example [https://codecov.io/gh/ravendb/ravendb-go- client/src/master/d...](https://codecov.io/gh/ravendb/ravendb-go- client/src/master/delete_attachment_command_data.go) shows less then 80% coverage and there are only 2 lines not exected out of at least 18, which should be at most 10% counted as not covered.

<comment><USER24> In the example you link, there are 18 coloured lines, 4 of which are not green: 4/18 = ~0.22 = ~22%. This tallies-up as expected with the 77.78% coverage shown at the top of the file.

Codecov* doesn't count an 'if' statement as having full coverage unless one tests both outcomes: so the yellow lines here have been executed, but do not count towards your coverage score.

Granted, one could argue that that's not very generous! But on the other hand: those yellow lines have not been fully tested, despite being executed, so I can understand their decision.

In the linked code, just implement a couple of simple tests to test for the expected error conditions: it's easy (here at least) and ensures the code behaves as expected. (Obviously not all partial/no coverage lines will be so easy to hit with tests, it might not always be possible to easily get 100% coverage, but hey: start with the low hanging fruit!)

* I say Codecov here, but I highly suspect that they may simply be using Go's coverage reports under the hood?

</comment></comment></comment></comment></comment><comment><USER25> > Today if I was settings this up from scratch, I would stick with just > AppVeyor, as it can now do both Linux and Windows testing and the future of > TravisCI is murky, after it was acquired by private equity firm and > reportedly fired the original dev team.

I would rather go with CirrusCI which has windows, macos, linux and freebsd support, is much faster and is easier to work with. appveyor being the slowest, and travis having the worst features.

<comment><USER8> Thanks for the tip, CirrusCI looks interesting.

</comment></comment><comment><USER26> One of the most interesting parts for me was the time taken - 601 hours for about 50k loc. That could be a starting point estimate for other projects.

<comment><USER27> I'd say that's not nearly enough time to write 50k loc from scratch! (Unless I'm horribly slow and no one is telling me.) Porting is a very different kind of work from feature development, since you already know the inputs and outputs of your system.

</comment></comment><comment><USER28> Can anyone explain what's happening here? I can't make sense of the syntax:

func (q _Query) GroupBy(field string)_ Query {...}

<comment><USER29> I like the Go language for all of its efficiency and easy concurrency, but part of me can't help but think that they were dying to make some new syntax just for the sake of it.

<comment><USER6> That syntax was based on Oberon-2 (1991), given Robert Griesemer's presence on the team.

        PROCEDURE (q : Query) GroupBy*(field:  String): Query;
        BEGIN
         (* .... *)
        END GroupBy;

</comment></comment></comment><comment><USER30> "Both Java and Go have interfaces but they are different things, like apples and salami."

</comment><comment><USER31> If I'm paid to port it from Java to Scala, I'll write a blog like this after I'm done (maybe I'll never be done :-) ).

<comment><USER32> Why would you be paid to port a java library to scala? Scala developers can use the Java client library directly.

<comment><USER33> There can be benefits to having a 'native' Scala library, which uses scala idioms, but realistically it would probably just wrap the Java one.

</comment></comment></comment><comment><USER34> I wonder if it would have been easier (in terms of complexity, not in hours spend coding) to rebuild the project in Go (in 100% idiomatic Go) and port it to Java afterward. Sounds weird but since Go has such a strong focus on simplicity and Java probably implements most things Go uses, a port from Go to Java is probably a lot easier.

<comment><USER8> It's true that if those code bases were evolving together, it would be possible to make them more in sync by sticking closer to what Go provides.

But RavenDB is 10 years old. Java client already exists and has 50 thousands lines of code.

If I was trying to rewrite that from scratch, I'm afraid Joel Spolsky would find me and spank me.

<comment> grey-area Did you at any point dream of writing a translation tool which would port java to go automatically? (crazy idea I know)

<comment><USER8> Yes I did and I don't think it's crazy.

I'm not sure a tool could do 100% translation but I'm sure it could do a lot.

A surprisingly large amount of time was just moving the order of variable declaration from Java's "type name" to Go's "name type" and renaming, say, "String" to "string".

If a tool did that for me, it would save a ton of time.

Unfortunately, the upfront time investment to learn enough to write even the simplest translator would probably be greater than time saved on one project.

</comment></comment></comment></comment><comment><USER35> Also, null is not the empty string...

<comment><USER36> He knows it, that's why he mentions lack of null (nil) in Strings in Go as an issue when porting the code.

But depending on how the Java client uses null, "" can do just as well. It's not like you have many other options (except to add your own composite struct on top of String, or to use a guard value that's still a string).

<comment><USER37> In most cases this would probably be bad but he could also use a pointer to a string.

</comment></comment></comment><comment><USER38> I'm wondering if the goal of this porting project would've been achieved by Java's newly gained native/AOT compilation feature. Probably not, as a huge Java .so brings the JVM's infrastructure for gc etc., and too much overhead. Still, I hope we can get rid of the language-centric ecosystems we have in favour of established OS/POSIX ways for shared libs, or an evolution thereof.

<comment><USER8> There are an estimated 1 million of Go programmers.

The goal of the project was to enable those Go programmers to be able to use RavenDB database in projects written in Go.

The company also maintains Python client library and Node.js client library.

It's not about Go vs. Java as a technology but enabling as many programmers as possible to use RavenDB.

<comment><USER38> I understand the goal, and my comment wasn't so much arguing in favour of one language vs another, but rather that developing the same thing for multiple languages over and over seems wasteful.

<comment><USER39> In those client things the amount of the code that can be moved into a cross- language shared library might be lower than expected. E.g. the wire protocol and socket handling might be an option - but it's often not that big.

The bigger part might be transformation of the programming languages types into something useful for the client (e.g. through serialization), which has be be redone anyway for each language. And after that the question comes up whether sharing the remaining things yields enough benefits to justify the hassle of having a dependency which is less portable, requires another build system, etc.

That's my general experience with those kinds of projects - I don't know enough about RavenDB in particular to tell if it's the same here.

</comment></comment></comment></comment><comment><USER40> Why didn't you port it to Kotlin instead? Much better language than Go in every aspect and also comes with an auto-conversion tool.

<comment><USER41> Single executables yet without JVM?

Static typing?

Simplified toolchain without make/maven files?

My big one after swearing off of Java was never needing an IDE to do even the simplest things - is Kotlin useable without an IDE?

<comment><USER42> > Single executables yet without JVM?

Yes. The JVM is Java's biggest downside, so why would you want to just move to a different language on the same overly complex (to put it mildly) runtime.

<comment><USER43> I'd argue it's one of javas strengths, its fast and other than increasing max heap size tuning is only necessary for the hardcore FAANG etc What's complex about installing openjdk-<version>jdk from your package manager? Your app normally bundles library dependencies so no virtual environment fuckery like python Ruby et.al

<comment><USER33> I can assure you that you don't need to be a FAANG for tuning to be necessary...</comment></comment></comment></comment></comment>


Tech companies or banks? - <AUTHOR> I'm applying for internships and I started wondering how the 2 compare when it comes to: 1) salaries 2) work-life balance (most important for me personally) 3) overall enjoyment <comment><USER2> There is a huge amount of FUD going on here. I think this all comes down to the specific companies you apply for and work with. As an intern, you are probably going to end up moving and it matters a lot more what projects and problems you get to solve than whether it is a tech company or a bank. Now to answer your questions:

1) The salaries at both tech companies and banks will no doubt be about equivalent for interns. Salary has a lot more to do with your negotiating skills than anything.

2) Work-life balance has everything to do with the company. I have known engineers who have worked for big regional banks, small credit unions, and investment banks who have loved it. I have known engineers who have worked for the really big tech companies (Apple, Microsoft, Facebook, Google, HP), and small startups who absolutely hate it. There is NO hard and fast rule. Interview the company just like they are interviewing you.

3) Overall enjoyment has to do with your motivations. What do you like to work on? What problems interest you? Is your potential employer going to allow you to work on those problems?

Also, please realize, there is nothing that says you need to stick with the first company you intern with.

</comment><comment><USER3> if overall enjoyment is the most important for you, you definitely should try tech companies.

</comment><comment><USER4> obviously tech companies win on work-life balance.

Here's a running list of banker suicides for this year if you have any doubt: [http://www.valuewalk.com/2015/01/bankers-suicide- conspiracy/](http://www.valuewalk.com/2015/01/bankers-suicide-conspiracy/)</comment>


Where the Unix philosophy breaks down - <AUTHOR> http://www.johndcook.com/blog/2010/06/30/where-the-unix-philosophy-breaks-down/ <comment><USER2> I'm loathe to hand credit to Microsoft, but I think they're onto something with Powershell. Rather than being limited to passing text streams around, Powershell commands pass full-featured objects back and forth (with callbacks and everything!).

This flexibility really seems to break down the transaction costs that the original article talks about, when compared to traditional Unix pipes.

I'm still trying to come up with a Linux-y way to do this. Microsoft can mandate that all Powershell commands run under the CLR (and therefore can talk to arbitrary implementations of some CLR class) but any FOSS equivalent is going to have to deal with people wanting to interface programs written for a dozen different runtimes (and probably even some C code running on the bare metal).

<comment><USER3> Much of the simplicity which renders multi-command, single-line pipe chains facile to the posix shell user would be lost if the interchange format was any more complex than plain text.

If you need fields, then separate them with a text delimiter, if you need something more complicated, then maybe you should be using a programming language, or piping between scripts in a language with good text serialization.

<comment><USER4> Putting aside the fancy words, I agree.

Given the power of any computer (even those 30 years old), it's enormously powerful to be able to drop one segment of a pipe-chain and look at the output. Funny that I'm facing a similar issue now that some of the server world is going Javascript: "console.log(X);" doesn't necessarily tell you the whole story about X. Exchanging objects is 14% too complicated and anything more than 0% too complicated is too complicated.

<comment><USER5> > it's enormously powerful to be able to drop one segment of a pipe-chain and > look at the output.

But having more complex objects instead of text doesn't stop us from having that. The objects just need to have some kind of to-string method that the shell uses.

<comment><USER6> It does hinder you, since string serializations will usually be an incomplete (or worse, inconsistent) view of an object. With Unix pipes, their string serialization is all that it is.

<comment><USER7> besides the toString if we could get a decent amount of the objects to be public we might have simpler formatting rules.

</comment></comment></comment></comment></comment></comment><comment><USER8> Of course you're not going to rewrite Word by piping data around, for opening and saving and doing spell check.

Scripting languages are the next extension of unix - you take all those little programs that do something well, put them together with some control structure and you can do big things, often in an automated manner, which is difficult to do on a GUI.

That said, showing the GUI interface to someone and having them make selections is much more suited to other programming methods (MVC,etc.), often which can just run scripts on the back end.

The point of unix isn't having a bunch of programs that do different things - it's combining them like legos to do complex tasks via scripting.

<comment><USER9> You're limiting your view on operating systems to the stone age and that's exactly what Linux, Windows... etc are - stone age operating systems (midori is an exception if ever what I read is released). If the operating system is simply a vm the interface is the vm, what do I mean by this is there's no separation between low level and high level thus no barriers.

<comment><USER10> Out of curiousity, what is a currently functional non-stone-age operating system?

<comment><USER11> I haven't used any exotic OSes (like the Lisp Machines?), but I believe that Unix's "do one thing and do it well" philosophy was never serious, just an (ignored) guideline to programmers. Ignored partly because Unix isn't that conducive to it.

The Unix Way is to operate on lines of text with tools like sed/awk. These lines of text are poorly-serialized object representations.

Programs are big monolithic procedures (which take a lot of optional params as input — switches), which you're supposed to glue together under extremely weak programming environments (like bash).

I abuse Unix to get out of this paradigm as much as appropriate. There is a good idea hidden inside communicating with serialized objects (which I'm sure Erlang users understand better than I do), but it's a very primitive version.

(Maybe I'm wrong and someone will finally enlighten me.)

</comment></comment></comment></comment><comment><USER12> In the free software world, the functional boundaries between programs are, in fact, usually respected, even with interactive programs, where his "transaction costs" would apply. Emacs edits, awk does its thing, etc.

I think the reason programs creep in functionality is NOT these technical sounding "transaction costs", but in order to sustain vendor lock in. In a world where nobody worries about lock in, there is no reason to bundle an editor with a calculator with an email program.

In the Adobe world, the boundaries of the programs are pretty tight, with a little bit of bleed over. Counter example? Maybe.

That was not a great article, if you ask me -- I think the analysis was trite, and MS Office software probably isn't a good example of anything.

<comment><USER13> You're citing _Emacs_ as an example of a program that does just one thing and respects "functional boundaries" unlike (say) the way that Word does some spreadsheet-y things and Excel some databasical things?

A standard Emacs installation contains, among other things: a Lisp interpreter, an adventure game, a mail program, a Usenet newsreader, a calendar, a calculator with symbolic-algebra features, and an implementation of Conway's Life.

<comment><USER7> Don't true emacs users live in emacs?

<comment><USER14> Like Theseus's ship, their bodies & minds are gradually replaced by Lisp functions.

</comment></comment></comment></comment><comment><USER15> Honest question: does the Unix philosophy apply to all kinds of software?

I am curious to know if it's fair to compare typical Unix software (CLI-based, text-based --- usually system software is what comes to mind) with application software (Word processing, enterprise software, etc).

<comment><USER16> I think composition turns into extensibility when you start working on larger programs. For example, you cannot pipe the output of Vim or Emacs into another program, but you can write 100 lines of Python/Lisp/Lua/Perl/etc. that will let one application talk to the other.

Other applications see themselves as a walled garden, and may allow extension within the program, but make it difficult for communication to occur between programs, often by not exposing enough state, not documenting the interface, or not providing any scripting at all.

<comment><USER17> While not a literal "pipe", the $EDITOR and $VISUAL shell conventions are pretty much the same concept applied to larger programs.

And of course, which I think you were saying with your comment on extensibility, vim and emacs are well-designed for sending content out to a shell for processing (spell-check is a common example) and retrieving the results. ("!!" in vim)

</comment></comment></comment><comment><USER18> I couldn't help but read this article as a demonstration that the Unix philosophy still holds strong.

Even the MS Office example goes that way: people who want a nice graph and a computing sheet in a Word document will embed an Excel component, which is virtually Excel running and piping its output into the Word document. The same goes for reaching Access datasets and queries to produce graphs in Excel: Access pipes its data to Excel, which in turn produces a graph.

"programs gain[ing] overlapping features over time" is a result of feature creep and certainly a lack of architecture foresight. The author refers to spreadsheet features in Word and database features in Excel. I can only take a guess at what he refers to but, assuming he's not talking about object embedding (which I took care of above), being able to _draw_ tables graphically in Word is not equal to having a sheet able to compute formulas and render graphs, and being able to sort and filter columns in Excel is worlds apart to queries on a structured, relational table.

The core of the article seems to boil down to the fact that software inevitably brings duplicate functionality, and that this is good because it alleviates the effort of bridging applications. Yet duplicating functionality puts a burden on the developers that might be better spent elsewhere (including providing easy access to the "real deal"). What's more it suddenly becomes begrudgingly effortful for the user to achieve a task escaping the subset of duplicated functionality. In short, it might save you a little work, but it doesn't scale. That's why properly designed technology allows for trivial connection of software (Unix pipes) and description of contracts (sane text output) or abstracts the contract part entirely (e.g including an Excel spreadsheet in a Word document).

</comment><comment><USER19> Lately, I've been thinking a lot about interfaces, operating systems and procedure composition and this are some of my "ruminations":

\- None of the modern operating systems is really orthogonal: neither linux nor the BSDs embrace the real "Unix philosophy"

\- CLIs are monodimensional, and suffer from the same problems that dataflow programming has: it's easy to split the flow of data into two pipes, but is really hard (semantically) to rejoin them.

\- GUIs are imperative in nature, and that hurts composability.

\- Shells and REPLs have too many overlapping features (like OSs and ProgrammingLanguages+Libraries): the de facto standard for shells, bash, has a syntax that, for a programmer, feels really unclear. Every non trivial bash script that I wrote has turned really fast into escaping hell.

<comment><USER20> > \- CLIs are monodimensional, and suffer from the same problems that dataflow > programming has: it's easy to split the flow of data into two pipes, but is > really hard (semantically) to rejoin them.

That's not hard if the text streams are line-oriented

* append one to another, if order is not important

* append one to another and then sort again, if order is important,

* JOIN the streams using the `join' command (it's a standalone text utility, does pretty much what SQL JOIN does)

To compute sum (in set theory sense), use ` | sort | uniq', to take intersection, use ` | sort | uniq -d'. Or use the `comm' utility.

If using Bourne shell derivative, you may end up using temporary files. With the Rc shell, you may use the <{COMMAND} syntax, like:

      cat <{foo | bar | baz} <{frob | knob | bob} <{some | more}  | subsequent | processing

to catenate output of three pipes and do subsequent processing.

</comment></comment><comment><USER21> On the contrary I think whenever you get into a situation where there is an overlap in functionality, that means it needs to be further broken down into more smaller independent units. I see tremendous value in adhering to this philosophy, and usefulness of Unix is a testament to it. That does not means there are no shortcoming in the overall Unix approach but as far as this particular philosophy is concerned, I think it is very smart strategy to adhere to. Look at nature, our different body parts are specialized for specific functions(for example eyes, ears etc) and they do those functions remarkably well and when you combine these, we can recognizing the physical world.

</comment><comment><USER22> For quite a few years now it seems like a lot of Unix-style software has gone beyond text streams, to include a back channel connection to external data and processes (databases, http services, etc).

I generally enjoy sharing context as a data structure with a file-system-like interface (e.g. REST) between processes, and only more so when the command/control interface is a simple text stream. Of course, this reminds me of Plan 9, but there's also 1060 Research, and other examples I'm sure.

There is quite a lot of head room left in the Plan 9 paradigm, and you do yourself no disservice by taking some time to figure it out. It really is more Unix than Unix.

</comment><comment><USER23> Uhhmmm... am I the only one that noticed that the sole example in the article of "programs gain overlapping features over time" is of Microsoft software ... which, like, has nothing to do with Unix? My unix/linux box doesn't have overlapping software. Every piece of software is a specialist and does what it does well. It is easily replaceable and does not interfere with other software installed on the box. The unix/linux philosophy works extremely well. That's why it's popular.

<comment><USER24> > My unix/linux box doesn't have overlapping software

Not really true at all. find is especially heinous. "find ... -delete" is equivalent to "find ... -print0 | xargs -0 rm --"

<comment><USER18> To me that does not count as a duplicate, but as a usability and scalability feature.

* "find ... -delete" probably just calls unlink, just as rm does, which is a libc feature. No subshell spawned thus lean and fast.

* "find ... -exec 'rm {}'" allows to run a command without xargs, but does not allows you to filter and transform the stream. Propably will spawn a subshell for each call.

* "find ... -print0 | sed 'bar' | grep -v foo | frobznicate qux | xargs -0 rm --" is where the power lies. A few more subshells created.

This, to me, shows that 'find' actually does what it should do, and allows you to choose the best way you can do it WRT the task at hand.

<comment><USER7> and massive gui programs are?

</comment></comment></comment></comment><comment><USER25> > For example, think of the Microsoft Office suite.

Beneath the covers, don't the Office applications share a lot of common code?

<comment><USER26> Yes, but I would not think about it as code sharing. MSI (the installation technology used by Office and most Windows programs) supports the notion of "Shared Components," which allows applications to share common resources. A component is a discrete installation unit, and in the case of large products such as the Office suite, many components make up any one product (Word, Excel, etc.). Rather than sharing actual source code or bundling the same DLLs with each Office product, components are shared between the products. You can envision that rather than each product containing the same code used to generate tables, they all use the same piece of code when generating tables. There are a variety of advantages, of which perfect interop between pieces of software is by far the greatest.

More info on shared components: [http://blogs.msdn.com/b/heaths/archive/2009/12/21/about- shar...](http://blogs.msdn.com/b/heaths/archive/2009/12/21/about-shared- components.aspx)

</comment></comment><comment><USER27> Employee transaction costs are not lower than contractors. Employers typically pay vacation, sick pay, workers comp, health care, 1/2 social security plus other payroll taxes, equipment, office space, and incur certain liabilities for the employee.

<comment><USER28> All those things still have to be paid for by _someone_ when you hire contractors. Which is probably why I always hear about contractors getting seemingly-absurd high hourly rates, if it _didn't_ all come out about even, either we'd all be contractors or nobody would choose to be a contractor.

The _transaction costs_ here are things like all the negotiation that has to go in to getting anything done with contractors every time you want something done.

</comment></comment><comment><USER29> It can break down, but it's a damn good place start, especially if you don't have a good philosophy to replace it.

Does it need stating how useful and powerful text based output can be?

<comment><USER30> 50-minute talk on simplicity (simple meaning not compound) as a place to start (and a little bit on Clojure): <http://clojure.blip.tv/file/4824610/>

</comment></comment><comment><USER31> > Piping the output of a simple shell command to another shell command is > easy. But as tasks become more complex, more and more work goes into > preparing the output of one program to be the input of the next program. > Users want to be able to do more in each program to avoid having to switch > to another program to get their work done.

I see no logic here. Can anybody explain that?

</comment><comment><USER31> We can handle objects in CSV/TSV format with commands sort, cut, join, paste, awk, perl, python, etc.

We can handle XML objects with commands xml_grep, xmlpath, xmlpatterns, perl, python, js (JavaScript has builtin support for XML/XPath), etc.

JSON format in new, but we can handle it with js (native format), perl, python. CouchDB already uses JSON over pipe to communicate with tools.</comment>


Gödel, Escher, Bach - <AUTHOR> https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach <comment><USER2> Very strange book at the time. Factual fact is that in 1970s recursion and self-reference was abhorred. I even remember a lecturer in real-time control, who clearly did not know what a subroutine was. His world view was a state- machine with transition strings between states.</comment>


H1N1 Swine Flu - Google Map Mashup - <AUTHOR> http://maps.google.com/maps/ms?ie=UTF8&hl=en&t=p&msa=0&msid=106484775090296685271.0004681a37b713f6b5950&ll=32.639375,-110.390625&spn=15.738151,25.488281&z=5);

<comment><USER2> According to a radio interview with the chancellor of the U of Hawaii, a flu researcher, the strain is H5N1. H1N1 was in the inoculations of the the past 2 years and gives some protection. The last time the vaccines contained H5N1 was in the 70's, but those who received shots then have some protection. She said that it will take 4 to 6 months to develop a vaccine.

Interesting map.

</comment><comment><USER3> An animated one would be even more interesting. I'm polling for updates to the feed every few minutes and saving unique versions, so if no one else does it maybe I'll throw something together.

</comment><comment><USER4> Am I the only person for which the colors are totally messed up? I think the blue marker is "pink," but I'm not even sure. Makes the map way less useful.

<comment><USER5> The colors were fine for me, but I had a few other problems. I don't know if this is intentional, but it seems as if the data of this map is somewhat inaccurate. '8 cases in Queens high school' is reported at least 4 times (others seem like copy/pastes from different news stories about the same instance), in significantly different places. At best, less useful for prediction/comprehension of issue, at worst, alarmist.

</comment></comment><comment><USER6> Is the map right tho? There are thousands of reported cases in Mexico and that is definitely not reflected on the map.</comment>