My company is self hosting sentry for about 30 Python & Java in-house services and it was the easiest deployment of anything that's taken me more than apt-get install to deploy.
I have no problem visualizing how Target is able to predict future purchases based on what items I've already bought or what items I'm browsing. I have trouble visualizing how anyone can predict future purchases based on me liking a picture of a cat or browsing through friends vacation photos. Unless they're planning on selling me cat vacations...
Even your age, sex and country is very useful to advertisers - an ad targeted at those is worth about 50x the price of one sent to a random internet user (or it was when I last worked in that industry). Facebook knows where you went to college, what your favourite movies are, and perhaps most importantly of all, who your friends are. That's huge.
They just have to correlate: people who browse cat photos at 3 am and "like" these specific ones tend to buy canned beans within the next 3 days. It doesn't have to make sense as long as they can derive correlations from it.
For the vast majority of projects, upgrading (or working with both PY2 and PY3 at the same time) is not that big of a deal unless the project you're working on is really, really old (2.3 days). At work we run unittests targeting different python versions and the most time I've spent changing a typically 4k loc project's codebase to work on both 2 and 3 has been around 4 hours. The average around 1.
He does have a point although he might not have meant to. I've setup both Cloud.com's stack and the OpenStack for smallish private clouds and I have to agree with him. Java was a poor choice for the project and my experience of it (6-7 months ago, caveat emptor) was that it was riddled with bugs and suffered from more than a few bad design decisions. It's 200k+ lines, with very few tests (I'd wager on single digit coverage if I was a betting man), has a homemade ORM (why no hibernate?), the design of the instance image delivery system defies all human logic and there's no proper messaging queue anywhere to be found. Add to that colourful spectrum of inconsistencies and you end up with a lot of issues. However, I'm not saying that those issues are Java's fault, they clearly aren't. But, with any language choice there comes a culture and I don't think I'm being unfair when I say that I see these kinds of things more in Java projects than in Python. For comparison, the OpenStack is about ~70k lines (~30k of which are tests).
Have you noticed, that this point, which I have not meant to make, is very common, and situation you described - such complicated mess of layers and layers of useless abstractions, bugs and poor design decisions, is the description of a common Java project? And that description cannot be applied for most of other common languages, except PHP, which is much worse nightmare and a triumph of incompetence in itself.)))