The Simple Proof of the Tetris Lamp - <AUTHOR> http://jackm.co.uk/posts/2015/01/11/the-simple-proof-of-the-tetris-lamp/ <comment><USER2> Terrific reasoning! That same "checkerboard coloring" strategy is used a lot for figuring out tiling problems.

It is too bad the lamp wasn't made of pentominoes (the 12 Tetris-like pieces with 5 squares vs. your tetrominoes with 4 squares.). See [http://en.wikipedia.org/wiki/Pentomino](http://en.wikipedia.org/wiki/Pentomino). There are 2339 ways to form these into a perfect 6x10 rectangle (more if you include rotations and reflections).

FYI: The creator of Tetris actually got the idea for his game pieces from Solomon W. Golomb's book "Polyominoes" that introduced all kinds of variations on tiling puzzles and proofs. Chapter one starts using checkerboard reasoning right off the bat. So, you are in good company.

</comment><comment><USER3> I came here looking for a link to someplace where I can buy this lamp. Since no one has posted such a link yet, here it is:

[http://www.thinkgeek.com/product/f034/](http://www.thinkgeek.com/product/f034/)

(I realize we all have access to Google, but if I save 100 people 10 seconds, then I just saved 1000 seconds!)

<comment><USER4> The article links to it in the first sentence also: [http://www.amazon.co.uk/Lychee-Tetris-Constructible-Three- di...](http://www.amazon.co.uk/Lychee-Tetris-Constructible-Three-dimensional- squares/dp/B00JZGD930)

<comment><USER5> If only it were underlined so we would have known it was a link?

<comment><USER6> Is that responsive?

</comment></comment></comment></comment><comment><USER7> Similar to:

[https://en.wikipedia.org/wiki/Mutilated_chessboard_problem](https://en.wikipedia.org/wiki/Mutilated_chessboard_problem)

<comment><USER8> Yes. Every time you get a problem with a rectangle table, you must paint it like a chessboard. If that is not enough to find the solution, you must try to think.

A small technical detail, dew to professional deformation. The article says that the numbers of squares of each color must be the same, but that only happens if the total number is even, like in this case 13+15=28. If the total number of squares is odd, then you get one extra square of one of the colors.

<comment><USER9> Minor derail - I know I mistype 'their' as 'they're' and likewise for other similar homonym pairs all the time, but due -> dew is a particularly nice example of the genre :)

<comment><USER10> "making do" -> "making due" seems to be relatively common among US English speakers, too. In British pronunciation dew also sounds the same as due but both differ from the US "do"...

</comment></comment></comment></comment><comment><USER11> >"Maybe now I can shift my irritation from the lamp itself to whoever designed it to possess such a property. "

I wouldn't be mad at the designer. That person designed a lamp and proposed an impossible puzzle that at first glance looked plausible.

It is the best way to troll people... ever!

<comment><USER12> [http://en.wikipedia.org/wiki/File:15-puzzle- loyd.svg](http://en.wikipedia.org/wiki/File:15-puzzle-loyd.svg)

:)

<comment><USER13> "Some later interest was fuelled by Loyd offering a $1,000 prize for anyone who could provide a solution for achieving a particular combination specified by Loyd, namely reversing the 14 and 15.[13] This was impossible, as had been shown over a decade earlier by Johnson & Story (1879), as it required a transformation from an even to an odd combination."

</comment></comment></comment><comment><USER14> That's exactly how they get you to buy TWO lamps! :)

<comment><USER15> Is that really obvious? I think the checkerboard pattern only says something about the neighborhoods of the pieces and the amounts of tiles of each color used, not whether there exists is a rectangle configuration.

<comment><USER16> If you buy 2 lamps, you've got 2 of all the 7 pieces. Piece 7 (the T-shaped piece) is doubled and you can switch the pattern for the second set. You'll have 15x color A and 13x color B in the first set and 13x color A and 15x color B in the second set. I'm pretty sure this would enable you to create a rectangular lamp.

<comment><USER17> Having the same number of both colours is not sufficient. 14 Z pieces will give you 28 of each color, but you can't make a rectangular lamp (of any size) from only Z pieces.

<comment><USER18> Not in 2D, but you can in 3D!

edit: Actually I'm not sure my previous statement was true. You can make it more pleasing such as this though: [http://nterm.co.uk/content/images/tetris.png](http://nterm.co.uk/content/images/tetris.png)

<comment><USER19> <nitpick>rectangle specifies 2d</nitpick> I believe you could form a hollow cuboid, but I don't think you could complete a solid cuboid.

</comment></comment></comment></comment></comment></comment><comment><USER20> Your friend read Martin Gardner's aha! Insight, which has exactly this proof in it and is a popular book for young mathematical puzzle enthusiasts.

</comment><comment><USER21> Here's one nice-looking configuration I found. You seem to be implicitly assuming you can only have a depth of one unit but that's possibly an unnecessary limitation. I'm working on seeing if some kind of perfect cuboid can be made.

[https://3dwarehouse.sketchup.com/model.html?id=u2d94f70c-682...](https://3dwarehouse.sketchup.com/model.html?id=u2d94f70c-6825-4fed- bc3d-bfc700d99eec) (there's a webgl viewer)

<comment><USER22> I'm not sure, but i think the lamp wouldn't work anymore - it seems like the front and back metal strips might have different polarity.

<comment><USER21> Might not light up anymore, yeah. Maybe with some rewiring.

</comment></comment></comment><comment><USER23> A few things:

1) Why limit yourself to 4x7? The 1988 NES version of Tetris is 10 units wide.

2) There isn't any malicious design, you simply get 1 of each shape (one of the L pieces in the author's photo is reflected, should be turned the other way).

3) In Tetris, a full row is removed immediately so having a complete rectangular shape that occupies the full available width is unrealistic.

Pedantry aside, you'd have to ask Alexey Pajitnov if there was any devilry involved in choosing the shapes since the makers of the lamp have faithfully included a full set. Also, I personally prefer the aesthetic of a lamp arranged in such a way as to leave a hole in each row rather than a plain wall of coloured squares.

<comment><USER24> > Pedantry aside, you'd have to ask Alexey Pajitnov if there was any devilry > involved in choosing the shapes since the makers of the lamp have faithfully > included a full set.

No devilry, there's just only so many ways you can connect four squares together to make a shape.

[http://en.wikipedia.org/wiki/Tetromino](http://en.wikipedia.org/wiki/Tetromino)

<comment><USER23> He could have chosen pentominoes instead.

[http://en.wikipedia.org/wiki/Pentomino](http://en.wikipedia.org/wiki/Pentomino)

</comment></comment></comment><comment><USER21> You could rotate some pieces such that they're partially jutting out of the back of the lamp, which might make it possible.

</comment><comment><USER15> Isn't the lamp simply designed to contain all of the seven types of Tetris pieces?

</comment><comment><USER25> > _Maybe now I can shift my irritation from the lamp itself to whoever > designed it to possess such a property._

There's no "design" involved in the choice of pieces: there are seven different ways to connect four squares in an orthogonal grid, "tetrominoes", assuming you allow for pieces to be rotated but not reflected. Tetris uses all seven, and so does the lamp. (Although the lamp's design apparently allows pieces to be reflected, i.e. rotated outside of the grid, so the S and Z pieces can be considered the same, as can L and J.)

</comment><comment><USER26> You can make a rectangle as long as you don't use all of the pieces (maybe that is part of the puzzle?). For example, from [http://www.amazon.co.uk/Lychee-Tetris-Constructible-Three- di...](http://www.amazon.co.uk/Lychee-Tetris-Constructible-Three-dimensional- squares/dp/B00JZGD930), remove the purple piece, shift the red piece to the left one space and flip it, then place the blue piece vertically on the right hand side.

<comment><USER27> The argument in the article was that it's the purple piece (the "T") that is the problem (or least that makes the proof trivial). Can you make a rectangle with a subset that includes the T?

<comment><USER28> Theorem: No.

Proof: Any rectangle made of Tetris pieces must have an even number of squares (in fact, a multiple of 4) and hence the same number of black/white squares. Every Tetris piece except the T has the same number of black/white squares, hence the T cannot be used in any arrangement of a subset of Tetris pieces into a rectangle.

</comment></comment></comment><comment><USER29> I recently read a similar case in Simon Singh's book _Fermat 's Enigma_ [http://www.amazon.com/reader/0385493622?_encoding=UTF8&query...](http://www.amazon.com/reader/0385493622?_encoding=UTF8&query=15) about the 14-15 puzzle. It was similarly unsolvable and provable the same way.

Interestingly, his account is rather different than that on wikipedia [http://en.wikipedia.org/wiki/15_puzzle](http://en.wikipedia.org/wiki/15_puzzle) Singh claims that Sam Lloyd created the puzzle, secretly proved it was impossible, and offered rewards to anyone who could solve it.

</comment><comment><USER30> A similar trick can be used to solve the following problem: considering a rectangular grid, is it possible to find a cycle that goes from adjacent squares to adjacent squares and visits each square exactly once?

Answer (ROT13): Vg qrcraqf ba gur cnevgl bs gur ahzore bs fdhnerf, juvpu qrcraqf ba jurgure gur qvzrafvbaf bs gur tevq fvqrf ner obgu bqq be abg. Vs gur ahzore bs fdhnerf vf bqq, gurer nera'g nf znal juvgr fdhnerf nf oynpx fdhnerf, naq n plpyr zhfg tb sebz juvgr gb oynpx naq sebz oynpx gb juvgr, fb ab plpyr rkvfgf. Vs vg vf rira, lbh pna rnfvyl pbzr hc jvgu n trareny fpurzr gb pbafgehpg n plpyr.

<comment><USER10> This is called a Hamiltonian circuit.

</comment></comment><comment><USER31> Speaking of Tetris proofs, I've had the following problem on the back-burner for a while: is there a way to check whether an arbitrary contiguous space comprised of squares can be filled in by tetrominoes? I don't have a math background so reasoning about it is difficult. Here's the question on StackOverflow: [http://stackoverflow.com/questions/20083552/tetromino- space-...](http://stackoverflow.com/questions/20083552/tetromino-space- filling-need-to-check-if-its-possible)

<comment><USER2> A lot depends on your specific rules of the game. Does "filled by tetrominoes" mean you have to use every tetromino at least once? If not, then you can always fill your contiguous square space with 2x2 tetrominoes. Also, whatever your rules, it is generally a lot easier to prove it is possible (or not) to fill a space than find an actual solution.

<comment><USER31> The main rule I'm trying to follow is "as random a tiling as possible". So unless absolutely necessary, no picking certain pieces just because it's easier.

The max area I'm having to tile is fairly small (maybe 100x100 at most) so an actual solution could be fairly easily brute-forced in the last step of the process. I just want to avoid having to backtrack as much as possible since it increases the cost substantially.

</comment></comment></comment><comment><AUTHOR> Author here - slightly overwhelmed by the response, but thanks for everyone's feedback! I never thought so many people would be as interested as I am in the lamp...

</comment><comment><USER32> you should turn that link into an affiliate link. i would love to know how many (other) people also bought that tetris lamp after reading the article.

</comment><comment><USER33> What's more annoying is that it has two identical L pieces, instead of having one that is a mirror-image of the other, as they appear in Tetris.

<comment><USER34> Well it looks like you can rotate them (I mean in the 3rd dimension not present in actual Tetris)

</comment></comment><comment><USER35> Interesting concept. However, is it really a proof? If I removed piece #7 I'd have 24 boxes (12 white, 12 black) with which I could theoretically build a 6x4 rectangle, but I don't see how this would be actually possible with those pieces.

Maybe it only proves the negative, but not that there must be a solution.

Edit: there seems to be a solution for a 4x6 rectangle.

<comment><AUTHOR> Exactly that - it's a proof that in this case a solution can't be found. Having a collection of pieces that doesn't violate the assumption in the article isn't a sufficient requirement for a solution to exist.

</comment></comment><comment><USER36> This is to prevent customers from accidentally assembling the lamp in an unspectacular way.

<comment><USER37> Yeah, if you form a perfect rectangle, all the pieces will _disappear_.

</comment></comment><comment><USER38> Very relevant to the video game Sigils of Elohim [http://store.steampowered.com/app/321480/](http://store.steampowered.com/app/321480/)

</comment><comment><USER39> Reminds me of Knuth's Dancing Links algorithm: [http://arxiv.org/pdf/cs/0011047.pdf](http://arxiv.org/pdf/cs/0011047.pdf)

</comment><comment><USER40> If you remove the T piece, is it possible to assemble the other six into a rectangle? I suspect not, but the checkerboard proof does not suffice for this.

<comment><USER41>
        rr  Z []      S  LL
        r  ZZ []      SS  L
        r  Z     IIII  S  L

        rr  Z [] S  LL
        r  ZZ [] SS  L
        r  Z IIII S  L

        rrZ[]SLL
        rZZ[]SSL
        rZIIIISL

<comment><USER40> Interesting! I just came here to say that I've found a 4x6 packing. I love the fact you can also do 3x8!

        ZZLL
        IZZL
        IOOL
        IOOJ
        ISSJ
        SSJJ

</comment></comment></comment><comment><USER42> Maybe now you will have to buy a second one in order to make a perfectly rectangle then get rid of the excess pieces. Genius design.

</comment><comment><USER43> Wow so weird to see the tetris lamp on HN. One of my 2 year-old's favourite toys!

</comment><comment><USER44> So if you ignore piece number 7, can you form a rectangle with the remaining pieces?

<comment><USER45> Well, this proof doesn't mean you can't. It's not sufficient to prove that you can.

<comment><USER46> It can be done, at least if you're allowed to flip one of the 'L' pieces into a 'J'.

        1112
        1322
        3324
        3554
        6554
        6664

<comment><USER47> :-) [https://lh4.googleusercontent.com/-dTGQKj2JHKo/VLOsol5kN3I/A...](https://lh4.googleusercontent.com/-dTGQKj2JHKo/VLOsol5kN3I/AAAAAAAAwWM/VJj9ECvKBKo/w878-h1184-no/IMG_20150112_121439.jpg)

</comment></comment></comment></comment><comment><USER48> I would be interested in learning who that friend was, and how he got to the proof.

</comment><comment><USER49> Nerdgasm :)</comment>


Kubernetes 1.12 - <AUTHOR> https://kubernetes.io/blog/2018/09/27/kubernetes-1.12-kubelet-tls-bootstrap-and-azure-virtual-machine-scale-sets-vmss-move-to-general-availability/ <comment><USER2> It's about time for a Kubernetes to do LTS releases. 3 month release cycle and support for only 9 months is too quick for companies given that in practice companies are running lots of clusters, not just 1 or 2 big clusters.

<comment><USER3> Kubernetes already has many vendors that provide packaged distributions and long-term support if you want it.

If you use the managed hosting/cloud providers then updates are also automatic and easy.

<comment><USER4> I definitely have not found updates on GKE to be easy, even though all it takes to trigger it is clicking a button.

Each one I've done on our cluster over the past couple of years has caused _something_ to break, often in a strange and obscure manner.

One time an automatic master upgrade happened at 9pm and effectively sent all of our logs into a black hole for reasons unknown. As with many of the other upgrade hiccups, I just had to poke, prod, delete and recreate entities and things magically started working again.

There is so much going on under the hood it makes sense that there would be issues with upgrades, so the frequency of the releases is frustrating. Dealing with after hours alarms just because the k8s release cycle is so aggressive really grinds my gears. I would fully support an LTS version.

<comment><USER5> this is the hardest thing for people to get sometimes, it was the original core "concept" behind devops/ci-cd:

upgrades don't get easier when you delay them and make them bigger, they get harder. if you think k8s upgrades are bad now, having them change twice as much half as often would be _worse_.

<comment><USER4> We've certainly embraced the devops approach, releasing many times per day with lots of automation on k8s, but I don't see this as being incompatible with using LTS releases.

Having an LTS release available offers the flexibility to choose when to upgrade based on any number of factors affecting the business and engineering cycles, the same way we pin software libraries to specific versions so our own stability and build consistency isn't subject to the varying release cycles of the package authors.

There's definitely a balance to be found between waiting so long to upgrade that it becomes insurmountable, and having to frequently run disruptive, mystery-downtime-causing upgrades for unneeded new features.

<comment><USER6> If you have an automated test suite for your applications, and you use it to ensure that candidates pass before deployment, why can't you test new Kubernetes releases by ensuring that your apps' test suites (which are known to be good) pass on new Kubernetes versions? If the test suite fails on a new Kubernetes version, then either improve the test suite to get rid of false positives or fix the software.

In proper CI/CD practices, build "stability" is an anachronism. Master is always green. Test changes before merging. If the changes fail the test suite then don't merge and don't deploy until it's fixed. Master stays green. Why is dynamic infrastructure any different?

LTS only makes sense as a strategy if testing and carrying out the upgrade involve significant amounts of work which needs to be planned out in advance. Ideally, this isn't the case.

</comment></comment></comment></comment></comment></comment><comment><USER7> People with Kube experience, at what point should someone on Heroku consider switching to Kube with something like GKE? I have a rough idea of the pros and cons, particularly cost vs. time overhead, but curious about more subtle things.

<comment><USER8> I'm migrating "legacy" applications (as in non-containerized ones) to container environments for medium to large companies, and I would suggest two things:

\- get a local test setup with minikube ([https://github.com/kubernetes/minikube](https://github.com/kubernetes/minikube)) and Helm ([https://www.helm.sh/](https://www.helm.sh/)) and try out a few applications \- convert a project of yours to a Kubernetes deployment, then a Helm chart

If both steps are successful and you still feel like Kubernetes is doing a better job for you then Heroku, get a Kubernetes professional. I promise you, there will be as many problems as with any other environment. The only difference is that the Kubernetes issues are not documented.

<comment><USER7> "The only difference is that the Kubernetes issues are not documented."

Move that one to the icebox then!

</comment></comment></comment><comment><USER9> Fast release cycle does give k8s a regular news coverage!

</comment><comment><USER10> Anyone knows if in-place VPS is actually in? Doesn't seem like it from reading gh issue. Imo this should be at the top of the release notes, not hidden in the middle

<comment><USER11> What is in-place VPS?

<comment><USER10> Vertical pod scaling

</comment></comment></comment><comment><USER12> kubelet tls bootstrap is a feature I am looking forward to. We just finished dev work and testing to get to 1.11 as we have to support various cni's and automated upgrades from 1.10, it will probably be couple of months before we get to 1.12

</comment><comment><USER13> K8s 1.12 is here</comment>


Peter Thiel Sells Majority Of His Facebook Shares In Deal Planned Pre-IPO - <AUTHOR> http://techcrunch.com/2012/08/20/peter-thiel-sells-majority-of-his-facebook-shares/

<comment><USER2> Would you expect him to do anything else? Invert the question: if you had $500 million cash, would you spend it all on Facebook stock? Or Google stock? Or any one stock?

Even for company insiders who really believe in the future of their company, it isn't prudent to hold more than a small fraction of a billion-dollar fortune in one stock, from a purely rational perspective. Of course, the public expects irrationally enthusiastic behavior from founders, which is the only thing that leads to the gigantic fortunes amassed by the Gates/Ellisons of the world.

<comment><USER3> Is this some sort of extreme cognitive dissonance?

Why can't people just accept that Facebook is a fad?

It does not mean the world is going to end. It's a fad, not a solid company. We went through this before 12 years ago. Eventually the market figures it out. Move on. That's what Thiel is doing.

More fads are around the corner. Investors will keep falling for the same old tricks.

Gates and Ellison are very poor comparisons. Their software was not web-based (=ad-based), their main market was the enterprise and they went to great lengths to create long-term customer lock-in. They began in a different era, and are nothing like Facebook, which is a photo-sharing website that relies on display ads and game-playing "whales" to make money.

<comment><USER4> Facebook a fad? Think of it this way...

The social web is just as important as search on the web. The web will always have search engines, and it will always have social networks. Google took over where Excite and Altavista left off. Facebook took over where MySpace and Friendster left off.

Google controls the majority of the social search market. Facebook controls the majority of the social network market.

So you might be saying, that's nice, but Facebook can't monetize it's users!

Have you ever looked at Google search results lately and noticed that nearly 1/2 the screen above the fold could be ad space? Don't believe me? Search for "iphone".

Yet we all think nothing of it. We've accepted it as users of Google.

Imagine if Facebook found a way to get it's users to ACCEPT ads. Start small, like Google and gradually increase it over time to what it is now.

That doesn't sound far fetched does it?

<comment><USER5> The "social web" is no where near as important as search. Imagine removing search from the net. Now imagine removing Facebook or other social networking sites. The difference is staggering.

<comment><USER6> I think you should consider your own example more closely. "Search" is not just Google, it would be all search engines (good luck finding that old email). Similarly, removing social would not just remove Facebook, it would also remove hacker news (certainly a social website) and all the other forums you frequent.

Social websites, widely, are websites that allow users to connect to each other. Even 4chan is social. Without search, we couldn't find anything on the web, but without social we couldn't talk to anyone. I don't know which is worse, but they would both be enormous losses.

<comment><USER7> I think you are calling more things social than the word pre-supposes. If you call 4chan "social", then you have the wrong definition - 4chan is a forum, a place people discuss things.

Facebook, or "the social web" as its coined these days, is about the friend graph (ditto with twitter - its about who you follow, and who follows you), not about discussions.

Imho, the web will function perfectly well without facebook - each of the features of facebook such as photosharing, event organizing etc, all have ready replacements. Sure, the friend graph helps you connect easier/faster, but taking it away isn't as detrimental as taking away search.

<comment><USER6> As I said in my post, I'd include forums in "social." Facebook has the graph, but you could construct a weaker form of that graph using any of the popular community-focused sites.

<comment><USER8> Not really. Facebook and other social sites nowadays all rely on one true personal identity. On forums on the other hand you can be whatever, multiple times, and have a discussion with yourself (even a meaningful one).

<comment><USER6> I have at least one friend with multiple Facebook accounts, which he has talk to each other as a joke. Much like Facebook, most of the significant interactions on forums happen between permanent, established accounts (4chan could be the exception that proves the rule, as everything on it is arbitrary and real projects are organized elsewhere).

Facebook wants to portray itself as a one-person-one-account service, but the lack of extra accounts is largely because they've obsoleted most of the reasons people would create multiple accounts.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Everyone keeps focusing on Facebook as an ad platform, and pointing to the difficulty in monetizing mobile via ads. But I'm betting Facebook is on the brink of rolling out a digital wallet. They already act as an authentication/identity service with hundreds of millions of users. If those users linked their FB accounts to their bank accounts, they'd be able to buy anything on any integrated website that they log into with FB Connect -- or eventually in any store that wants to handle FB payments. With FB taking a small cut of every transaction, I imagine PayPal and Stripe would be in trouble, no? Mobile doesn't have to be about ads....

<comment><USER10> Given their past approach to several privacy and sharing type issues, there is no way in hell I'm buying anything with a Facebook wallet.

<comment><USER11> Which of the following companies paid an FTC fine for sharing user data, Facebook or Google? Do you trust that company with your money? :)

</comment></comment></comment><comment><USER12> It is worth highlighting that this sale was via a Rule 10b5-1 trading plan. That is, Thiel made the decision to sell prior to the IPO.

<comment><USER13> A facebook insider decided that facebook wasn't worth keeping his money in prior to the IPO. That is highlightable..

<comment><USER14> He converted a $500,000 investment into more than $1,000,000,000, which is at least 200,000% ROI. Would you recommend against diversification at this point? Do you provide financial advisory services by any chance?

<comment><USER13> I am positive he is doing diversification but not with facebook as part of his portfolio; as he sold pretty much all of his facebook stock. So once again. Facebook insider chooses to sell most of his stock prior to IPO, and prior to first quarter results. Very highlightable..

<comment><USER15> he sold 80% of his stock IIRC.

</comment></comment></comment></comment></comment><comment><USER16> I think this is just thiel putting his money where his mouth is. Anybody who has followed him knows it's no secret that he's spoken out against companies solving small problems and has even implied facebook to be squarely in that camp.

</comment><comment><USER17> I'm going to buy when it gets closer to $10 per share. Half the world uses Facebook every day so let's not pretend it isn't an awesome business with utterly massive potential.

<comment><USER18> "awesome business" and "massive potential" aren't mutually exclusive events. It can have massive potential, but never deliver and still be a terrible business.

Sure, it's got a lot of upside if you can buy it at the right price, but up till now, it hasn't shown advertisers (who make up the majority of their revenue) that it can deliver customers as acceptable CPAs. Until that happens, we'll still be waiting for facebook to be an "awesome business."

<comment><USER17> I don't think CPAs are the right metric. Facebook is massively engaging. I think TV is the most natural synergy b/c people socialize around it today but only in one household.

Facebook should also launch a web search similar to Google just go capture some market share in search-driven advertising.

Around the world, Facebook is the fastest loading website (it often beats Google). Its infrastructure is ready to make a truly global play of some kind.

Expect something huge after the stock price stabilizes a bit.

<comment><USER19> Perhaps CPA is not the right metric. But a bunch of hype that glosses over the fact that Facebook doesn't really actually make very much money is not the right metric, either.

<comment><USER7> But i thought facebook's revenues are in the billions? Where is that money coming from?

<comment><USER18> A little over 3.5 billion. I think he was saying that the revenue considering the company size and user base (almost 1 billion) is not very much.

<comment><USER19> Yup. Especially considering their revenue has also been falling, that there are concrete reasons to think that it will continue to do so, and that they're operating in a notoriously brutal and fickle space. There's money there, but not enough to cushion a fall.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Facebook have a problem that Google hasn't.

1\. Their social graph is great but it has one major flaw. It's very bad at profiling intent.

They also have a problem they share with Google.

2\. They haven't found a way to make advertising work on mobile, an increasing part of their visits.

Unless they find a way to solve those two areas they will not be able grow their revenue without hurting their visitors.

<comment><USER21> > 2\. They haven't found a way to make advertising work on mobile, an > increasing part of their visits.

And herein is the problem: Apple - Apple is so against advertising that they created their own iAd network to keep other companies out of the game (it doesn't have to really be a success - just enough to keep devs off competing ad networks).

As long as Apple is influential in the mobile world, Google and Facebook are going to have a tough time with mobile ads... do consumers actually want ads? Apple is betting no, and as far as they're concerned - screw the devs and advertisers.

<comment><USER20> Hmm

Actually I think the problem is bigger than that.

Android is a more popular mobile OS than iOS by far and in fact googles reason for approaching it that way is that they want a platform to serve ads on.

But so far they havne't managed to find a way to do it.

<comment><USER21> I think monetization would require near-monopoly-level control for Google. How much would adwords bring in if Google weren't the "default search" destination?

If Google can basically kick Apple back into niche status (not there yet), then they could extract monopoly rents on a defacto standard of ad-based apps either using Google's mobile ad network, or a consortium of which they are the sole influential player.

Perhaps that explains why they haven't tried to heavily monetize this yet - that would pus more consumers into non-ad-based apps where Apple is strongest.

</comment></comment></comment></comment><comment><USER22> The 10b5-1 is actually bit fuzzy on whether you can cancel trading plan. SEC basically says that if you cancel the trade than you are not legally liable because no transaction actually occurred and so one cannot claim that you profited from insider trading. So in theory you can cancel the trading plan if you like. However if SEC _feels_ that you cancelled only because of price drop then they can come after you for ALL your future trading plans or may even re- examine previous trades to see if you were trying to game the system. Therefore executives are advised by to cancel only under extraordinary circumstances.

So I think Thiel had lot of legal pressure, although technically not an obligation, to sell as per his trading plan filing. He could have taken risk but it's probably not worth it for another half-a-billion of profit if you are already multi-billionaire and if you are already cultivating 1000X returns as it is.

On the other hand it is surprising that he decided to sell _most_ of his stock instead say only quarter or so. I would think Thiel as a long term investor in FB from what I've read in the book "Facebook Effect". Thiel is one of the few person that probably knows most upcoming plans and products in works and problems at FB. A typical strategy for investors like Thiel is to cash out in stages instead of dumping most stock at once like regular VCs do (10-25% each quarter, for example). Considering his level of insider knowledge this only means he did not expect FB stock going up at the time of trade filing in at least 1 to 2 year horizon.

This is even more surprising because I keep thinking FB is going to come out with something like AdSense any day now and almost instantly double its revenues bringing stock back to $25-30. Obviously Thiel has calculated things differently.

</comment><comment><USER23> The Facebook story is over. They got ahead in the social network game of making communication over the Internet easier. They did this by making Email obsolete. One centralized system where all users can send instant messages to one another without remembering user logins, email addresses, or phone numbers. This is the ONLY advantage Facebook has over its competitors. And I guarantee their current advantages are going to be eroded away by more open protocols. In the same way that Twitter's current advantage in microblogging is also going to be eroded away.

If you get too far ahead of everyone else you become the target, and there are simply so many startups and smart brains working against Facebook and Twitter at this point that they simply will not be able to maintain their leads indefinitely (which is what their market values are incorrectly predicting).

<comment><USER24> You're focusing only on features, and ignoring the fact that Facebook has more active users on their site for more time per day and with a higher retention rate than any other site in existence, and that network effects have created an almost insurmountable barrier to entry.

<comment><USER23> You know who currently has an even better advantage in social networks? Cell phone carriers. If I take a look at my Facebook friendlist or feed, and compare it to the last calls and messages made on my cellphone -- they don't match up at all. That means, at least to me, Facebook's graph for me doesn't relate at all to my real world social network, and so most of its value is probably artificial.

Certainly no system ever built can match Facebook's penetration rate, but it will probably always pale in comparison the real world social network. The difference is mobile devices are going to map a lot better to the actual network in ways that Facebook will be unable to capitalize on.

</comment></comment></comment><comment><USER25> Selling before the end of the year saves him over a hundred million in capital gains, too.

</comment><comment><USER26> Peter, if you are reading this, there's one question I'd love to ask. Why did tou even buy Facebook shares in the first place? Just to say you owned a part of Facebook? It was a clear failure from the beginning when they hit the market, way overpriced - surely you must of known this too. And then comes why other question. Why sell now, after loosing so much money? If you were willing to take a gamble in the first place, you should of been prepared to stick with it for a few years - it might go back up, but that's only if FB manage to get their shit together.

<comment><USER27> Did you even skim read the article? He invested $500k as one of their earliest investors, and turned that into $400 million. He sold when he did because of a lock up period.

<comment><USER26> Christ, I must of been asleep while reading that article! You're right.

</comment></comment></comment><comment><USER28> The market is concluding FB is not likely $1 trillion company. The Q is order of magnitude for FB $TEV.

A. $1000B ? No... B. $100B? Maybe C. $10B? Possible

I think Theil is obvi not betting on $1T.

Thus, after 8 yrs, time to go.

At ranges between B and C, holding a large position in a public stock that is exhibiting true volatility (ie, something other than upward drift), is not likely to please his LP investors.

Nor, similarly would it be advised for his own holdings.

Reading more into the tea-leaves (ie, operationally) might be fun, but I'm not sure its adding explanatory power to what we are seeing here.</comment>


Comcast locks value customers out of Sochi streams - <AUTHOR> http://gigaom.com/2014/02/10/no-olympics-for-you-comcast-locks-value-customers-out-of-sochi-streams/ <comment><USER3> Here's how my interaction with Comcast went when someone called and got me to sign up for the deal:

Comcast: You can have double your current internet speed plus HBO Go and some other junk for only $4 more per month.

Me: <after a while> ok, but I don't need a cable box because I don't have a TV. I'll just watch online. I can do that right?

C: Yes, but we need to ship you a cable box anyway.

Me: why?

C: because

Me: ok but I'm not at home much and packages left on my stoop get stolen. Could you ship it to my office?

C: <after a while> oh all right we'll ship it to your office.

(Ships to my home anyway and the box gets stolen)

C: Sir, please check to see if your doorman accepted the package before we charge you for the cable box.

Me: I don't have a doorman and I told you not to ship the box to my home. The cable box that I didn't want was stolen like I said it would be.

C: We can only ship it to your home. We will ship you another one.

Me: I don't want another one, I just don't want to pay for the one that was stolen.

C: Ok, we'll cancel your new package then.

Me: Can't I just pay for it and not have the cable box? I don't have a TV.

C: No. I will cancel your new package. Is there anything else I can help you with?

It was like talking to a robot. I dearly hate monopolies.

<comment><USER4> You were talking to a low level employee, who doesn't know a great deal about the company he works for, and is just following a script with a specific set of rules.

I get confused when people try to reason with these guys, they can only do what they are allowed to do. They aren't going to make an executive decision and break the rules for you. You need to feel around what they can do, and don't expect miracles.

<comment><USER5> The one time I got angry at customer service was when I cancelled a mobile broadband contract and then several months later noticed I was still being charged. Apparently there was no record of the cancellation or indeed my original call at all (despite the original operator confirming that the cancellation had went through on their system). All the latter operator would do was simultaneously assert that their system was infallible and that, no, they didn't believe I was lying or otherwise confused. An unstoppable force was meeting an immovable object, both of the operator's own construction, and they refused to acknowledge that. The frustrating conclusion was that it was strictly impossible to refund me the money. Of course, they couldn't even keep that straight: some time later and out of the blue, a full refund showed up in the mail with no explanation attached.

<comment><USER6> Did you deal with Megapath (formerly Speakeasy) too? I will never get internet from the scumbags who bought out that once great service again.

They won't cancel you over the phone, only via the internet. And their internet thing didn't work any of the three times I tried it until (miraculously) it worked while I was telling the lady on the phone that I wasn't about to give them my new credit card number because I had not authorized the previous charges and their own cancellation page had "failed" on multiple occasions. Yet, when on the phone yelling at a supervisor, I got a confirmation that I had cancelled immediately.

I do have one possible explanation--after cancelling, it claimed that I would receive a call. They never even attempted to call (per my phone logs), but I have to think that some customer retention person somewhere had a quota that was easier to fake if you simply didn't call the customer and claimed that they had changed their mind about cancelling. I bet someone could figure out the truth by examining how many people miraculously change their mind regularly before finally cancelling....

It's been several years and I'm still mad at them. If you ever do have to cancel that service, make sure you log the exact dates and times that you cancel and document it.

<comment><USER5> It was a European outfit I was dealing with. You reminded me of another frustrating aspect of it: I could give them the date and time down to the minute of the original call that their infallible system was unaware of.

Towards the end, I asked if it was really worth losing all my potential future custom over $SMALLISH_SUM and apparently the answer was yes. Complete cretins, all!

</comment></comment></comment></comment></comment><comment><USER7> I'm one of these customers, and it's a minor pain in the ass.

Also, a small correction for anyone considering their "HBO Go" deal - <USER2> don't actually get access to HBO Go, only to HBO Go content through Xfinity streaming. That sounds like an academic distinction, but their Xfinity streaming page doesn't integrate with Chromecast, so if that's how you planned to watch the HBO Go content, you can't.

<comment><USER8> That's not what I've experienced. I have the same deal and get proper HBO Go access (including Chromecast).

</comment></comment><comment><USER9> We've been streaming the BBC's coverage via a VPN. It's been great. The iMac is close enough proximity to the TV that a Thunderbolt to HDMI cable reaches. With a full screen mode Chrome, the quality is great.

I've had a VPN for some time just for security reasons, but I suddenly get even more value for my $40/year.

<comment><USER10> Which VPN provider?

<comment><USER11> You can also just spin up a Linode in their UK zone and then use an SSH tunnel through that. When the Olympics are over spin down the vm and you're done.

</comment></comment></comment><comment><USER12> This feels like a big step in the wrong direction but here's the problem...If content providers can't limit the consumption of their content (at all), they essentially become "public good" providers. Their work is non-excludable (anyone can access it) and non-rivalrous (my consumption doesn't affect your consumption).

There are plenty of solutions* and limiting streaming via an internet provider may actually be the right one. Big (expensive) streaming content like the Olympics is paid for in the same way we pay for TV channels. Which is good, if the alternative is that content not being provided at all.

Unfortunately, this is ultimately in everyone's worst interest because Comcast can (and will) force Netflix/Hulu/NBC/ABC/CBS/YouTube/Vimeo/ComedyCentral/etc to pay to be "carried" on their network. And they won't have a lot of leverage.

We need _pay_ for high-quality content. It's just a matter of how.

* [http://en.wikipedia.org/wiki/Public_good#Possible_solutions](http://en.wikipedia.org/wiki/Public_good#Possible_solutions)

<comment><USER13> I don't think anybody[0] is arguing that this stuff should be free. Rather, people generally argue that they should be allowed to pay for it without it being bundled with a bunch of other stuff. Why should I need a cable TV subscription in order to stream certain kinds of video over the internet? Just figure out how much money it should cost and then let me[1] pay it if I want it.

[0] OK, I'm sure there are some people out there saying it should be free. Just not that many, and not here.

[1] This is a hypothetical "me", as I don't personally care about these particular streams at all. But I totally understand where people are coming from when they want to watch something and don't want it to be tied to their cable TV subscription which should be completely irrelevant.

</comment></comment><comment><USER14> Capitalism ruins everything eventually. The Olympics used to be this shared patriotic experience. But now that it's being packaged up and segmented for maximum gain it will become less relevant to big parts of society. Which is probably a good thing considering how patriotic fervor becomes increasingly merged with giant corporations and the military.

</comment><comment><USER15> I must be missing something here. Why would you expect the "Internet plus HBO" package would also give you the Olympics? The Olympics aren't broadcast on HBO, are they?

<comment><USER16> because it says it includes nbc, which is broadcasting the olympics

[http://gigaom.com/2013/10/24/did-comcast-just-take-a- first-s...](http://gigaom.com/2013/10/24/did-comcast-just-take-a-first-step- towards-unbundling-hbo/)

</comment></comment><comment><USER17> Heh - that's nothing; at least they have the option of paying for access. Charter customers on the east coast get access, but those of us on the west coast do not (as per Charter's customer service reps, confirmed by our inability to use our data to log into the Olympic coverage online).

</comment><comment><USER18> Bug exploit to watch past 30 min. preview limit:

[http://www.reddit.com/r/hacking/comments/1xjx5f/watch_the_ol...](http://www.reddit.com/r/hacking/comments/1xjx5f/watch_the_olympics_for_free_thanks_jquery/cfc5ski)

</comment><comment><USER19> get a CactusVPN account for $5 and stream the olympics from the UK. Works great.

<comment><USER20> And as an added bonus you don't have to listen to the constant commentary about how Russia sucks, and how this Olympics is failing.

Literally the first words out of the mouth of the commentator before the opening ceremonies on NBC were about the cost, "terrorism fears" (which ironically are self-perpetuating, due to the American media both creating them and then reporting on it), gay rights, weather, and some of the last minute building issues.

The whole thing feels childish. Like the US media is going out of its way to drag the Russian games through the mud for anything they can cling onto. I mean how many times have they shown the faulty ring in the opening ceremonies? I have seen it at least a dozen.

The US media certainly didn't treat the London summer games with such obvious contempt and disrespect.

<comment><USER21> Maybe because London doesn't lock up women's rights advocates and people who suggest homosexuality might be OK. Russia gets hate because it doesn't bother to try endearing itself to people. It's sort of like America only minus all the stuff America puts out that people like.

</comment></comment></comment><comment><USER22> I just use a cheap cinfu bitcoin paid VPS to stream BBC but you can also use [https://hola.org/](https://hola.org/) (free) which people have claimed is good enough for streaming BBC or CBC in Canada to watch events. I haven't tried it.

Due to over the top DRM this year CBC can't stream any Linux compatible streams because of fears somebody might actually record it. Never mind that competent pirates already pvr and encode entire Sochi events and have them up on torrents everywhere we must make your streaming as annoying and difficult as possible.

</comment><comment><USER23> Yep, we got hit by this as well. I still have hope that one day Comcast will start to realize what the customer wants. Of course, it's not really necessary for a monopoly to fulfill their customers wishes, so fat chance that will ever happen. Cable franchising with municipal regulation is crazy.

</comment><comment><USER8> Another thing to note with this "plus HBO" deal is that it's not just an extra $5, you also have to pay an extra $6 or $7 for various "cable fees". As soon as you add cable TV the hidden fees start appearing.

</comment><comment><USER24> Find a friend with an Aereo account and VPN into their account.

Aereo's not widely available, but if it is in your area it's well worth the 8 bucks!

</comment><comment><USER25> Recently, two failures to follow up with promised service appointments / reschedules.

Looking forward to the day I can tell them to shove it.</comment>


OpenMandriva, the first Clang-built Linux distribution - <AUTHOR> https://www.openmandriva.org/en/news/article/the-best-until-openmandriva-does-better-released-omlx-4-0 <comment><USER2> What difference does that make for an end user? You have two copies of the same OS on the 2 PCs (same hardware) but one compiled on gcc, the other on LLVM/clang. How will this affect me? What differences I will notice? Better performance? Like real world performance

<comment><USER3> You could theoretically see better real-world performance. As someone who is currently working on very high-performance C++, I have noticed Clang being much more 'confident' in optimising code than its counterparts (especially compared to MSVC++).

That being said, in the grand scheme of things any performance improvement would probably only show up on benchmarks.

<comment><USER4> Might inspire new implementations if people realize there are some spots that can run faster elsewhere.

</comment></comment></comment><comment><USER5> Several *BSD projects have been using the Clang toolchain by default for many years, and have been a massive driving force in getting these fixes upstreamed so that other systems, incl. Linux distributions can benefit from greater choice of compilers.

FreeBSD since 10.x on i386/amd64, not sure about the status on other platforms.

OpenBSD since 6.1 for arm64, 6.2 for i386/amd64. This is both default for the base system, meaning kernel and userland. And also the ports tree, for compiling 3rd party packages, very few ports still depend on gcc.

And also, while not the default system compiler yet, LLVM/clang is compiled and installed on macppc/sparc64 and mips64 systems.

</comment><comment><USER6> That's neat but the large differentiation seems to be PGO+LTO. As pointed out below both of Google's distributions of Linux are optimized that way (actually with AutoFDO/SamplePGO+ThinLTO), but I don't think there is a community distribution that is properly optimized. It could be significantly better.

<comment><USER7> Clear Linux?

<comment><USER8> They do for at least some libraries. For example, here is a blog post about how they build Python and a few math libraries with PGO: [https://clearlinux.org/blogs-news/boosting-python-profile- gu...](https://clearlinux.org/blogs-news/boosting-python-profile-guided- platform-specific-optimizations)

<comment><USER6> That's interesting but kinda highlights the difficulty of shipping an entire OS with profile-guided optimizations. What they need is very broad sample coverage and SamplePGO instead of instrumented FDO. This is what ChromeOS does with Quipper: they collect perf data samples from the entire fleet of customer devices and they build the distribution with AutoFDO/SamplePGO.

</comment></comment></comment></comment><comment><USER9> Really great work by the OpenMandriva team. I've spoken to some of their contributors before and even looked into one of the bugs they reported. Now that I think about it, I need to send that patch for fixing asm goto detection in glib.

Android and ChromeOS are also built with Clang. I'm curious about the distinction of "first." Does anyone know the timelines here?

<comment><USER10> Not sure how wide Apple has adopted it or how much of a 'distro' you could call their operating systems, but much is built using LLVM with clang where publicly visible.

<comment><USER11> Also, to be pedantic, apple is a BSD, not a linux.

<comment><USER12> Mac OS is its own operating system with its own kernel. It's neither Linux nor BSD.

<comment><USER11> oh good point, TIL only the posix and syscall layer is BSD. nonetheless it's not at all a linux.

<comment><USER13> If you want to see how much different they are, have a look at

"Mac OS X Internals: A Systems Approach"

[https://www.amazon.com/Mac-OS-Internals-Systems-Approach- ebo...](https://www.amazon.com/Mac-OS-Internals-Systems-Approach- ebook/dp/B004Y4UTLI)

Since then, has macOS become even further away from BSD, with its own Network stack, XPC, SIP and many other architecture changes.

</comment></comment></comment></comment></comment></comment><comment><USER14> > Python has been updated to 3.7.3, and we have successfully removed > dependencies on Python 2.x from the main install image (for now, Python 2 > continues to be available in the repositories for people who need legacy > applications);

This is cool. I wish ubuntu/debian would move towards this.

<comment><USER15> Debian is moving towards this [1], just at its own speed (i.e.: slowly to try and avoid breakages as much as possible).

[1] [https://www.debian.org/doc/packaging-manuals/python- policy/p...](https://www.debian.org/doc/packaging-manuals/python- policy/python3.html)

<comment><AUTHOR> That's basically never, then. Debian "maintains" tons of old, broken software in their repositories.

</comment></comment></comment><comment><USER16> Clang has added a command line option for automatic initialization of auto variables to zero, hasn't it?

That by itself would be enough to make me choose clang over a compiler that didn't have that option. Gcc deliberately doesn't support that, right?

<comment><USER17> That seems like a mistake to turn on, given that clang also has options to error on uses of potentially uninitialized variables. Zero is often just as wrong as any other value, so this flag will hide real bugs.

In fact, I'd rather have a flag that clobbers values with random data, to make sure that uses of uninitialized values are caught as soon as possible.

<comment><USER18> > error on uses of potentially uninitialized variables.

This is absolutely the best option. That said,

> I'd rather have a flag that clobbers values with random data.

That's roughly what happens in practice as is, doesn't it? Barring the first option I'd rather have an option that fails predictably and reproducibly. An arbitrary but deterministic garbage number maybe? Like --set- uninitialized=0xdeadbeef. That might be getting too elaborate, haha.

</comment></comment></comment><comment><AUTHOR> For those interested, there's a presentation about OpenMandriva's usage of LLVM from EuroLLVM 2019:

* Video: [https://www.youtube.com/watch?v=QinoajSKQ1k](https://www.youtube.com/watch?v=QinoajSKQ1k)

* Slide deck (PDF): [https://llvm.org/devmtg/2019-04/slides/TechTalk-Rosenkranzer...](https://llvm.org/devmtg/2019-04/slides/TechTalk-Rosenkranzer-Switching_a_Linux_distro.pdf)

<comment><USER19> Am I correct in assuming you are connected to the project ? If so I was wondering what the packages are where you employ PGO, Firefox, Chromium and x64 are examples of applications with built in compile-support, are you using PGO on other packages as well ?

</comment></comment><comment><USER20> Isn't Android built with Clang?

<comment><USER21> Yes.

<comment><USER20> Now that I think about it, I think Chrome OS is as well?

<comment><USER21> ChromeOS is based on Gentoo, is it not?

<comment><USER20> Yes, as far as I'm aware they've been using Gentoo for quite a while.

</comment></comment></comment></comment></comment><comment><USER22> Also this:

> Python has been updated to 3.7.3, and we have successfully removed > dependencies on Python 2.x from the main install image (for now, Python 2 > continues to be available in the repositories for people who need legacy > applications);

<comment><USER23> Arch Linux was able to achieve this years ago.

<comment><USER24> Arch Linux has a package manager written in C, instead of Python, for example.

<comment><USER25> APT is written in C++ and YUM is written in Python.

Besides the Python2->3 thing, are there actually any practical advantages to using a lower-level language for managing packages?

<comment><USER26> Pacman is, subjectively, the fastest package manager I've ever used. Not sure if it's C vs python though, apt is also much slower on many tasks.

<comment><USER27> This could easily be simply because Pacman doesn't do as much as apt. For instance apt tracks symbols exported by shared libraries. Pacman doesn't.

<comment><USER28> I've never heard of that. In what situations is that tracking used?

<comment><AUTHOR> As far as I know, only RPM-based package managers do symbol tracking at dependency resolution time. Neither Debian nor Arch package managers do this.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> ELI5... why is this great news (i.e. why is LLVM/CLANG better than GCC -- speed?)

<comment><USER30> They want to get rid of Stallmann's GNU concepts

<comment><USER13> Which is always ironic, given that without Stallmann's GNU concepts, Linux would never have happened.

And most likely, given the BSD state back then, it would mean we would just keep using either commercial UNIXes, or Windows would have won the UNIX wars.

But lets get rid of Stallmann's GNU concepts.

<comment><USER31> > given the BSD state back then

you mean being persecuted by over-bearing commercial unices? (e.g. SVr4 and ATT)?

lets not mis-confuse the issues to our personal ends - the argument is just as valid that without BSD UNIX, stallman would also not have a system to base a clone on..

GNU attempts to redefine the existing cultural status quo of open-source software dating from the dawn of computing to its own personal ends

<comment><USER13> Sure they had a system, commercial UNIXes would been kept being used.

GCC only got manpower when Sun changed the way UNIX SDK used to be given to customers.

And who knows, maybe companies would have been more willing to dedicate manpower to HURD.

</comment></comment></comment></comment></comment><comment><USER32> Hmmmm...

> LLVM/clang 8.0.1

Guess they have a time machine, as LLVM 8.0.1 isn't released.

There's an rc2 available (3 days ago), but that's not really a release:

[https://github.com/llvm/llvm-project/releases](https://github.com/llvm/llvm- project/releases)

Jumping the gun a bit maybe? ;)

<comment><USER33> FreeBSD also imports RCs, for example

[https://github.com/freebsd/freebsd/commit/48cf3d0825d200d26e...](https://github.com/freebsd/freebsd/commit/48cf3d0825d200d26e6a562b91de4f7f2ba11a84)

Who cares about "really™ final releases"? :D

<comment><USER34> Well, there was the infamous case of gcc 4.0.0 (No, I don't have a white beard)

<comment><USER35> shush, you'll scare the children. The GCC 4.0.0 release thread on slashdot is all of slashdot in one thread [https://news.slashdot.org/story/05/04/21/2125235/gcc-400-rel...](https://news.slashdot.org/story/05/04/21/2125235/gcc-400-released)

</comment></comment></comment></comment><comment><USER36> In addition to the "why does LLVM matter" asked elsewhere, why would I want to use OpenMandriva?

<comment><USER37> [https://wiki.openmandriva.org/en/4.0/RC/Release_Notes](https://wiki.openmandriva.org/en/4.0/RC/Release_Notes)

but I'm not really sure. I guess if you want a recent kernel, KDE Plasma based distro and you work with LLVM/clang.

I really don't know where it fits with Mageia/PCLinuxOS and other Mandrake descendants.

History IIRC -- Mandrake was RH Linux with KDE; Mandriva was a continuation of that which split; OpenMandriva were devs from that split that took ROSA Linux (still doing KDE4 I think) and then continued their project from that base.

<comment><USER38> Working with LLVM/clang is pretty much the same on a distorted compiled with clang as one compiled with gcc. Even the C++ ABIs are largely compatible if you use libstdc++ instead of libc++.

</comment></comment></comment><comment><USER39> Background HN comments on the compromises between choosing clang or GCC:

[https://news.ycombinator.com/item?id=17617043](https://news.ycombinator.com/item?id=17617043)

</comment><comment><USER40> Doesn't mention if the kernel built fine with clang, that would be interesting if so as that used to be tricky. (I'm probably out of date; maybe it's fine nowadays?)

<comment><USER9> Good question! This is my day job! Builds are looking pretty green!

[https://clangbuiltlinux.github.io/](https://clangbuiltlinux.github.io/)

X86_64 required the implementation of ASM goto, which we just shipped. You'll need to build clang from source, but the feature will be in clang-9.0 release. Other arches should build with clang-8 (technically x86_64 will build pre 4.19 kernels) but we shipped pixel 2 kernels w/ clang-4.0 so older Clang's may work depending on your target arch/tree/configs.

<comment><USER40> Ah, that's really interesting, many thanks. I'd be building from source anyway, so I'll have to try clang HEAD with Linus' tree and see how it goes.

<comment><USER9> Great! Please report any bugs you find via our issue tracker on the site linked above (if we haven't already spotted them).

</comment></comment></comment></comment><comment><USER41> They still use libgcc, ld.bfd, and libstdc++ though.

<comment><USER42> I was wondering whether they were using `libc++` and `libc++abi` or not. Thank you for clarifying this.

<comment><USER5> If you're looking for a system that does, OpenBSD adopted libc++ and libc++abi by default.

<comment><USER42> I have OpenBSD in a VM, sadly, I have many monitors and TVs I need to interface with wirelessly to do presentations, and OpenBSD does not really support that.

<comment><USER5> A bit off-topic, sorry, but I'm curious about what you mean by interfacing with Monitors/TVs wirelessly, how does that work?

</comment></comment></comment></comment></comment><comment><USER43> Surely that distinction must to go to Android and/or ChromeOS?

</comment><comment><USER44> I assume glibc is built with gcc still? Is there a listing anywhere of the packages that aren't build with Clang?

<comment><USER45> Not sure if this is updated recently but here is a list [https://wiki.openmandriva.org/en/Packages_forcing_gcc_use](https://wiki.openmandriva.org/en/Packages_forcing_gcc_use)

<comment><AUTHOR> That list is definitely out of date, because it still references the old ABF instance...

</comment></comment></comment><comment><USER46> [https://www.phoronix.com/scan.php?page=article&item=gcc- clan...](https://www.phoronix.com/scan.php?page=article&item=gcc- clang-2019&num=1) :

"On the AMD side, the Clang vs. GCC performance has reached the stage that in many instances they now deliver similar performance... But in select instances, GCC still was faster: GCC was about 2% faster on the FX-8370E system and just a hair faster on the Threadripper 2990WX but with Clang 8.0 and GCC 9.0 coming just shy of their stable predecessors. These new compiler releases didn't offer any breakthrough performance changes overall for the AMD Bulldozer to Zen processors benchmarked.

On the Intel side, the Core i5 2500K interestingly had slightly better performance on Clang over GCC. With Haswell and Ivy Bridge era systems the GCC vs. Clang performance was the same. With the newer Intel CPUs like the Xeon Silver 4108, Core i7 8700K, and Core i9 7980XE, these newer Intel CPUs were siding with the GCC 8/9 compilers over Clang for a few percent better performance."

</comment><comment><USER45> Amazing news :)</comment>


God Simulator - <AUTHOR> https://www.kickstarter.com/projects/1762414407/the-god-sim <comment><USER2> Reminds me a lot of Peter Molyneux's games.</comment>


Microsoft Launches Its First Android App. Yes, Google's Platform. - <AUTHOR> http://techcrunch.com/2010/03/03/microsoft-android-app/

<comment><USER2> And Windows Mobile has Google Maps. It's almost like Microsoft and Google want users, even if those users didn't pick the right $299-for-two-years religion.

</comment><comment><USER3> Well Android isn't going to reject a Microsoft app and it makes business sense to back the underdog and hit at Apple's monopoly.</comment>


Google Execs Seem Out of Touch With Social Networking Culture  - <AUTHOR> http://networkeffect.allthingsd.com/20101119/the-landscape-around-googles-hiring-binge/ <comment><USER2> A bit perplex by these two statemnets.

"But it's an awkward time at Google, where a group of employees can leave, create a start-up and come back two years later through an acquisition with $50 million in their pockets."

So employees leave, create their own startup and Google happens to buy those startups. Here it sounds like a bad thing.

Yet.... a few sentences down she says , "Google needs to find a way to foster its employees' entrepreneurial desires and talents"

Wouldn't this mean more employees would leave? If I have entrepreneurial desires, I'd quit my job and tried to pursue my own startup.

On a different note, I feel that Facebook is a trend supported by hype that can be brought down by any other hip social network site down the line. Just like Xanga, and MySpace before it. A good example is Digg, once thought to be a behemoth it died almost over night.

<comment><USER3> Also, how many employees leave Google, create their own startups, and fail? (or at least... don't get bought out by Google?)

(one example that comes to mind: Cuil)

</comment></comment><comment><USER4> This article is plain pageview fodder. It begins by repeating known facts about the talent war between Facebook and Google, and then dives off about a "lack of social" at high levels without even attempting any connecting statements. Yes, Facebook's focus is "social", but it'll take more than an utterly unsubstantiated almost-quote like "younger employees, especially, say they are turned off by their bosses' lack of social media savviness on a personal level" to convince anyone of even a base correlation.

I really don't think anyone presently working at Google is judging their bosses by their volume of tweets - and if they are, hiring them may well (imo) have been an error.

</comment><comment><USER5> Correlation does not equal causation. The article assumes that because Sergey and Larry aren't Twittering and Facebooking, "Google does not understand social." I can't begin to tell you how myopic that view is. Sergey Brin, for one, is _very_ much behind Buzz, and in many ways Google has not played its hand yet.

</comment><comment><USER6> What a bunch of crap... By that same measure, Apple should considered as doing horribly as well -- where are the tweets / blog posts / check-ins from Steve Jobs or other senior execs?

<comment><USER7> I'm probably missing something here, but apple aren't exactly relevant in the social networking scene, are they?

<comment><USER6> Well they do have "Ping" but that probably just proves your point. I brought this up because the article seemed to me to be about hiring and retention, and the author cited (poor) social networking as contributing factor for Google problem in this area.

from the article: "Part of why Google needs to "get social" so badly isn't just on a product or market level, but to impress its own employees"

</comment></comment></comment><comment><USER8> Companies often become a reflection of the personality of their leadership. Though this factor should be strongest when the company is the smallest/youngest. Their strengths, their weaknesses, their tastes. Google would be just as prone to this, for good or bad, as Apple or Microsoft or Oracle. In fact, I think you could write the same kind of article about those other companies, except picking a different area or two where they seem to have a "blind spot", even if it isn't really accidental, but a matter of strategy or taste.

</comment><comment><USER9> I don't hear the rank and file engineers going to facebook talking about how excited they are to be at a company that "gets it" socially or has really exciting challenges or their execs talk to people in 140 character blocks without a filter. I think mostly people going to facebook are looking at their pre-ipo status next to their roughly guaranteed blockbuster ipo valuation. Google shares have little chance to appreciate that much anymore, and certainly not in the timeframe.</comment>


Why The Open Office Makes You Distracted, Exhausted, And Insecure - <AUTHOR> http://www.businessinsider.com/why-the-open-office-makes-you-distracted-exhausted-and-insecure-2014-4

<comment><USER2> This seems very one-sided and does not address real issues. If you don't address key issues around expectation setting, common goals, etc then yes these may occur.

Similarly, claiming that open plan offices put people under fluorescent light away from windows is specious at best. The typical 'old school' office set up had offices around the perimeter (ie windows) and kept everyone else shielded further from the windows.

I am more interested around what design works in open plan? Or, does open plan actually make you more sedentary because you don't have to walk to your colleagues.

</comment><comment><USER3> I can see some of these examples being an issue, but some can be easily adjusted. I also think it depends on the type of business.</comment>


Ask HN: How can big businesses use Twitter better, if at all? - <AUTHOR>

I work for a big bank and unbelievably (I think) they have not got a twitter account.<p>I have seen that Dell, Strarbucks and others (admittedly retail based) have used Twitter successfully. I wondered if a bank could use Twitter and how could they use it in an innovative way? <comment><USER2> I wonder if there are some financial regulation rules which prevent banks from using these tools ? I personally don't see a problem though if they are just promoting themselves and potentially some financial products - however i'm not legal bod around financial rules</comment>


Mixpanel (YC S09) Takes Stat Tracking Beyond Google Analytics  - <AUTHOR> http://www.techcrunch.com/2009/07/23/y-combinators-mixpanel-takes-stat-tracking-beyond-google-analytics/ <comment><USER2> I think you guys need to rewrite your pricing page, at least tell the user what a data point is

        If you send less than 20,000 data points per month,
        Mixpanel is free.

        If you will be sending more than that, we have a tiered
        pricing model:

        Contact us for high volume pricing.
        * $0.35 per 1000 points - first 50,000 points sent
        * $0.25 per 1000 points - next 150,000 points sent
        * $0.15 per 1000 points - all points after that

        This pricing includes data storage, analysis, and
        bandwidth.

<comment><AUTHOR> yeah, it's a bit rough. A data point is a single event you send us - when a user plays a song, pokes someone, or makes a purchase.

<comment><USER3> You may want to consider rethinking the metered billing model. Geeks love them, particularly if the algorithm to calculate the price is spiffy. I have yet to see evidence that people who pay for stuff like them.

Here's an anecdote for you: our industry is going cloud cloud cloud right now and I am pushing it internally. Enthusiasm among management for test projects is high -- I'm presenting one today, actually.

(I rewrote an internal app on the App Engine. It took two days for a prototype, will take two more for getting it production-ready, total cost and schedule less than 10% of when we had more senior, more talented engineers implement the version we are actually using.)

So in this process of "Hey, we don't have to actually host hardware here!" evangelism I actually tried to get a purchase order for Slicehost approved for a different project, where I said something to the effect of "It is going to cost us X,000 yen when I'm in development, and X0,000 yen when we move it to production, and Y0,000 yen if this app gets really popular internally."

This purchasing request broke my manager.

He told me that he'd rather get a request for ten times the highest price I quoted, than try to figure out how he was supposed to incorporate conditional logic into his budget and reporting forecasts for this quarter.

Are you sure you don't want to be selling my manager the low-cognitive-pain, easy-to-buy, ten-times-more-expensive version?

$0.35 per 1000 points - first 50,000 points sent

Boom, you just broke my manager. Not only are you requiring forecasting and conditional logic from him, you're requiring math.

Small Business: $20

Web Application: $100

Enterprise : Call Us

There, now we have an unbroken manager. I ask for $100 a month (not because we need it but because my manager won't approve the Small Business so I won't bother asking), he asks "Are you sure we aren't Enterprise?", I say "Yeah, I did the math", he says "OK, approved."

[Edited to add:

Incidentally, in my own business I'm a stats junkie. There are currently three types of tracking scripts on my pages, plus my rolled-my-own bits, and you very well might be #4.

That said: I pay $19 a month for CrazyEgg, which has given me some very valuable insights into user behavior in the past, so valuable that I continue paying for it on a monthly basis despite not actually using it in most given months.

At the moment, for example, I think I have no experiments actually running.

Now, hypothetically if I were already using MixPanel and savoring that time you made me a thousand dollars by increasing my conversion rate, but didn't currently have an experiment running, you might not be making money from me. That is sort of suboptimal for you, isn't it? I'm willing to pay you _for nothing_ if you have previously delivered wins to me and if I think I might get another win at an unspecified point in the future. This dynamic has earned CrazyEgg about $250 of free money from me. Do you want free money? ;) ]

<comment><USER4> _You may want to consider rethinking the metered billing model. I have yet to see evidence that people who pay for stuff like them._

How about Amazon's cloud services? Lots of people pay for those.

Your story is sad but it sounds like the problem might be more the relationship between you and your manager rather than a problem with all cloud servies.

</comment></comment></comment></comment><comment><USER5> How much can they scale? And how much historical data would be stored? I am working on crunching huge weblogs right now and looks like they have already solved the problem (on a smaller scale? The website doesn't talk about traffic that they can handle)!

<comment><USER6> We have people sending us millions a day, we should be fine.

<comment><USER7> I think the original poster is interested in your service, but wants to be confident he can trust it.

"millions a day" builds confidence but " _mostly_ under control" puts it right back here we started. Maybe a little bit more detail would put him (and others) at ease?

<comment><USER6> The reason I said "mostly" is because it's naive for anyone to think they have things perfectly under control. No scaling problem is always solved, there's always things that show up. We have it largely under control and are very capable of handling it.

<comment><USER8> A good way to end people's fears of your scalability would be to introduce an individually licensed instance of your service and inviting the client to keep things under their own control (if not in their intranet, then on a dedicated host under their control.)

<comment><USER9> Won't this involve handling over the code itself? I am toying with this idea for my startup but the fear of code getting leaked has prevented me from fully embracing it.

<comment><USER8> Depends on what their code is written. I handed out a lisp binary and an image dump; I update it once every 2 weeks and I send them a single .core file as an attachment.

If you insist on exact version compatibility, I am sure you can dump images from most mainstream dynamic languages or ship intermediate "compiled" object code.

There is also the option of getting them a standlone host and billing them extra for its monthly costs. Failing that, there is always the law.

Most companies just want to improve their business processes and use tools to make them more profitable in their line of work; just think of how much software you use, and see how many of your vendors do you feel like competing with. If anything; quicker money is made from asking the vendor for a reseller license and agree on a partnership and sales commission.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I've been using mixpanel for a few weeks now -- nice software. The integration (PHP, Javascript) was very easy and the data presentation is easy to understand albeit still a bit rough.

<comment><USER11> ditto. Adding Mixpanel tracking was incredibly quick in both Javascript and Ruby, and setting up basic funnel stats is far simpler than with Google Analytics. They've also been really responsive to suggestions.

</comment></comment><comment><USER12> Love the service - I had it up and running in 5 minutes

</comment><comment><USER13> I have seen Mixpanel in action, and I think it's by far the best solution out there.

Congrats on the official launch.

</comment><comment><USER14> Looks very promising. I'm going to be taking a closer look for our application.

</comment><comment><USER15> Only took us a couple of minutes to get things set up too. Congrats on officially launching guys! Looking forward to seeing where this goes.

</comment><comment><USER16> we've been using mixpanel for our facebook apps since launch and it's helped us greatly, and our entire team loves it. even the pm understands the stats without asking questions (which is usually not the case).

understanding how a user uses the application has not only helped us figure out what features the user wants, but also which of those actually WORK (in real time).

love it.

</comment><comment><USER17> good stuff! I especially like the real-time stats</comment>


Ask HN: What are your companies Engineering Blogging Guidelines? - <AUTHOR> A lot of people write blogs and a lot of companies have blogs. Do people who work at said companies, have a list of guidelines about this - things they can/cannot write about both internally and on their personal website? My company is trying to formalize their blogging guidelines and what engineers should not write about. I am trying to understand what industry standard is to give them feedback. If you have a company policy regarding blogging, I would appreciate it if you could share it. <comment><USER2> I'm interested in this too - as a consultant, there are a lot of cool problems that could make solid technical/architectural blog posts, but the issues of exposing client incompetence (real or perceived), or simply mentioning people who don't want to be mentioned keep me from doing it. Sort of a shame. We've solved some fun issues and it'd be great to get some comments on how other folks solved similar ones.

At the end of the day, unless your company is the kind that's desperate for 'thought leadership' style attention, it's not likely you'll get the OK to do much under official auspices.

<comment><USER3> Review your NDA. You might be able to talk about your work as long as you don't mention the company for whom the work was performed.

</comment></comment><comment><USER3> Depends on what your company is trying to achieve with the blog.

Are they trying to use it as a inbound sales funnel? Are they using it for recruiting talent? If so, what talent pool are they trying to draw from? Is your product highly technical?

If this blog is meant to be a sales funnel ("this product is amazing; look at how invested our engineers are!"), then the content will need to be specific enough to demonstrate your product's engineering quality while being buzzwordy enough to identify with your audience. Ex: If you work for a company that builds insulin pumps and are trying to blog about the software powering those pumps from a sales context, you might talk about testing strategies your team employs on the RTOS powering the pump but not about how you mocked a subset of the CPU's instruction set to fully unit test it. _That_ content might be more appropriate for recruiting embedded engineers ("that's a cool tech stack! how can I apply") --- it's all about capturing your audience.

An important thing to keep in mind is that your blog should be _consistent_ with its messaging. If you're creating a highly-technical engineering blog, keep it highly-technical. If you're writing an engineering blog meant for sales, keep it focussed on sales. Readers are flighty, and one way to get them to unsub really quickly is to write content that isn't relevant to them.

Good luck!

</comment><comment><USER4> I started to post a detailed 6-part how-to guide on Linkedin. The topic was using pyvmomi, Redis, vROPS API, and Pandas to collect VMware capacity data for intelligent VM placement. My company asked me to take it down halfway through. It shook me up pretty bad for a couple days, even though I halfway expected it.

It contained no data specific to the customer but they said they were worried someone might get the wrong idea. They're not allowed to even disclose who their customer is per their contract.

They said I could post it on a tech blog but just not there. I thought about posting it here but I don't know what to do since I don't have much of a social media presence. All my techie friends are on LinkedIn.

<comment><USER5> Why not post it on your blog and share on facebook/twitter etc?

</comment></comment><comment><USER6> Don't forbid your employees to write about obscure implementations. Every time management thinks that security by obscurity is just enough - there needs to be someone who can tell them otherwise and nothing cures it better than a public blog post on a technical subject. Think about it this way: you might get some feedback from people all over the world that can guide you with all sorts of valuable information for free.</comment>


The Perl Toolchain Summit - <AUTHOR> https://code.foo.no/index.php/2018/02/16/perl-toolchain-summit-2018-oslo-norway/ <comment><USER2> Great initiative!</comment>


Why I want Concepts, sooner rather than later - <AUTHOR> https://isocpp.org/files/papers/p0225r0.html <comment><USER2> I was involved in putting concepts into the g++ standard library, for the aborted C++0x concept design.

My feeling is this is a classic example of an area where the perfect is the enemy of the good.

At one extreme we have C++'s current design -- try substituting the types into the template and see what explodes. At the other extreme (which is what C++0x templates did) is that if a template passes 'concept check', we know, 100%(ish), that the resulting code is going to compile.

The problem is, that this means when you write the concepts for a function, you have to have concepts for every corner of the C++ language you could make use of. This means for many functions the concept list ended up being longer than the function! Further, it is easy to miss optimisations (such as rvalue references), because you didn't 'concept' for them.

The latest aim is (to me) a good middle-ground. It checks (for example) that something is "numberish", or "iteratorish". You can easily create freakish types which will pass concept check, and then not compile, leading to the kind of error messages users currently get. But the common cases, of people passing sensible, but wrong, things into methods, will get much nicer errors.

<comment><USER3> If I get the idea, concepts are similar to Haskell's decade-old type classes, as an alternative to OOP classes and inheritance, which by now almost everybody has agreed are largely a bad idea from an architectural perspective. Did anyone see Edward Kmett's talk "Type classes vs the world" and wants to lose a few words on how they compare?

Regarding the problem you mentioned, I've often tried to break my problem domain in "abstract concepts" using templates, static assertions, code generation etc. I don't think I have a real word success story. Abstraction doesn't work out of course for business logic because generalizing over the mess which our world is is just incredibly hard, but also not for algorithms, because quite frankly, efficient implementation is the result from learning a thousand neat little tricks and applying them in the right situations. Abstraction remove these opportunities.

For example, recently I've seen a Java application with a parameterized container class. The parameters were abstract and thus the container had to use tons of nested Hashmaps to get from A to B. Had it admitted that the only sensible parameter was "int", everything could have been implemented using a few super-fast arrays.

Another problem is that abstraction actually grows cancerours dependencies across the code base. If we instead design clean data interfaces reusing basic data types and add a few lines of comments / constraints / consistency checks, this dependency hell just freezes down and we notice that abstraction wasn't the actual problem to begin with.

For the basic quick and dirty app, or script, of course it's extremely important to have generic STL containers and a std:: algorithm, or python dicts / set / iterators, and be done with it. Also in rare cases, abstractions like Monoid, Functor, Applicative, Traversable, Monad can come in handy when you can reuse a few lines of code from a generic library.

But to come back to your point, I think that's all largely explored territory and the point of diminishing returns has long been surpassed.

Thoughts? Counterexamples?

<comment><USER4> My first thought is, why exactly do you think everyone concluded that OOP classes and inheritance is bad architecture?

<comment><USER3> It's my impression -- I've heard it from so many programmers that I respect.

The impression may be biased by my own frustrations dealing with bad abstractions (like: 90% of the classes I've seen out there are semantically broken, a.k.a not state machines).

(To back that up, there is a python script of mine which I think is rather clean. It has basically a single class in it, which was needed because the API of cmd.Cmd relies on inheritance. I had to spend quite some time to circumvent that insane amount of brokenness. I've put in a few cynic comments out of frustration. If you're interested: [https://github.com/jstimpfle/gitadmin/blob/08a2c0b7dd1a8950e...](https://github.com/jstimpfle/gitadmin/blob/08a2c0b7dd1a8950e3e9084a964ae3a248b29b39/gitadmin#L1303) Good times.)

Name the use cases where you think inheritance is a good fit.

<comment><USER5> Inheritance got a bad rap in part because object oriented analysis was done as an exercise in taxonomy (Employee is a Person is a Mammal is an Organism...), instead of identifying useful abstractions. A second problem is using inheritance when composition is obviously better. java.util.Stack is a lovely example of both sins in action.

Where inheritance shines is in enabling _close coupling across module boundaries_. An example is event routing: how do you enable customization of how events flow through your app? UIKit handles this through inheritance. The base method gives you the default behavior, which you can override to customize. You can stop propagation by just not calling super, or redirect the event by calling the method somewhere else, etc. It's flexible.

JavaScript handles this clumsily, by trying to anticipate all the customizations you might want to do and providing APIs for each of them (event.preventDefault, event.stopPropagation...) Despite all that, frameworks like React have to reimplement event dispatch, because the default behavior is too inflexible.

Here inheritance is the glue that enabled close coupling between UIKit's default event dispatch algorithm and outside modifications to it.

<comment><USER3> Yeah widget toolkits (if not done across maintenance boundaries) are really the one situation which is always described as a good fit for inheritance. However I don't think I like the idea of "close coupling across module boundaries". Sounds like an antithesis to sustainable architecture to me. Anyway I don't do UI...

</comment></comment></comment></comment></comment></comment><comment><USER6> Meanwhile, you can use Rust now where traits (which fill a very similar niche to concepts) have been available for a long time, and are widely used in the standard library.

Of course, once you do, you find that some of the traits you would like to be able to use aren't expressible without "higher kinded types" ([https://github.com/rust-lang/rfcs/issues/324](https://github.com/rust- lang/rfcs/issues/324)), so there are still some big features that everyone kind of hopes will happen soon but there's no current plan for. But the existing trait system gets you pretty far for a lot of what you want to do.

<comment><USER7> Traits are not like Concepts. Concepts are for template meta-programming. You're thinking of the "Contracts" proposal which would be like concepts but for normal types, so like traits.

Also, can we have a C++ article where the comment section doesn't turn into a Rust ad?

<comment><USER8> We could if C++ wasn't so complicated, overwhelming, and prone to writing bad code that everyone feels compelled to replace it and going as far as starting a project like Rust to solve the issues Python or Go do for C++ with the same level of zero-cost abstractions.

Devil's Advocate: C++ may be complicated, but try comparing hello worlds in each language. Maybe Rust still isn't the holy grail either.

<comment><USER6> Rust:

      fn main() {
          println!("Hello, world!");
      }

C++:

      #include <iostream>

      int main() {
        std::cout << "Hello, world!";
      }

<comment><USER9> The Rust version adds a newline (hence print _ln_ ) while the C++ version doesn't. Either the Rust version should use `print!`, or the C++ version needs an `<< std::endl`

<comment><USER10> Adding '\n' to the string is perfectly fine, no std::endl needed (\n translates to the system-specific newline and the stream is flushed on destruction anyways).

</comment></comment></comment></comment></comment></comment><comment><USER11> And this was published in response: "Why I want Concepts, but why they should come later rather than sooner" [0]

[0] [http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p024...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0240r0.html)

<comment><USER12> It's all about timing, with C++11/C++14 having changed the language substatially it would be nice to fix some of the issues that templates have caused over the years. Due to new behaviours on the language existing templates might stop working.

Honestly almost any template by itself it's brittle and can fail to execute as predicted depending on the type received. This causes major issues and has to be solved sooner rather than later.

Also important to note that Concepts went through a lot of work and it evolved from concepts to the current concepts lite that was proposed for C++17.

I would like that the committee was a bit more open when mature proposals backed by senior members fail to pass. It could help other people understand the issue and maybe work towards solving it.

</comment></comment><comment><USER8> Can someone explain what C++ Concepts are and what they're used for? I see they'd simplify the code greatly but when I went to read this article I expected him to talk about maybe an approach to programming that focuses on the concepts first or something and was completely surprised that this is a programming feature.

<comment><USER13> In essence, they are used to allow template writers to easily put constraints on the type parameters that their templates require, and provide better diagnostics to users of template classes when they try to instantiate a template with the wrong parameters.

Normally when you wrongly instantiate a template you get a block of text which describes exactly what went wrong. In terms of the language as it is now, the whole block is necessary, but the ability to mentally parse it is a skill that requires time and is otherwise relatively useless. In addition, for library users, errors could happen way inside the internals of the library, and the users would have little to no information as on how to parse such errors.

To try to mitigate this, type traits were introduced. These are used by template writers, and their task is to check that template parameters satisfy certain given requirements or else a certain overload is discarded (using SFINAE for example). In this way, errors would be caught before trying to actually instantiate a template, and users would not be exposed to errors within the internals, but just at a boundary when a template was being instantiated. But still this approach has limitations, and the errors are still not quite pretty.

Concepts tries to fix all this with an approach that resembles java's "implements". It provides a way to easily specify and check at compile time the interface required by template parameters, so that it can be checked before instantiating the template and give better errors in terms of the concept rather than type traits features.

</comment></comment><comment><USER14> Quite frankly, I still don't get it. Concepts are a big, complex feature and the main thing you get out of them is that it makes it easier to write error- checking for template parameters. I don't think I've ever actually been bitten by that problem in the first place.

I was champing at the bit to get C++11 features like auto, move, lambdas, unique_ptr, bind and random. I could see exactly where I'd use them to make my code simpler.

The C++17 proposals mostly are uninspiring in comparison. Some seem minimally useful while others seem very complicated. I worry that we might end up standardizing a bunch of useless or poorly considered features.

<comment><USER15> >I don't think I've ever actually been bitten by that problem in the first place.

That I think qualifies you to be a few of a kind if not one of a kind. If you use a lot of templates and manage to avoid the problem of 'late errors' with a reasonable effort I would love to know more about your programming style

<comment><USER14> I suppose I probably have been bitten by this sort of thing when using iostreams and Google Mock.

</comment></comment></comment><comment><USER16> Summary: The article is talking about including Concepts in the upcoming ___C++17_ __standard - but only in the language specification, not the standard library because it 's not fully ready. It argues that the language part is ready, though.</comment>


Top Tools for Better Reading, Online and Offline - <AUTHOR> http://lifehacker.com/5452100/top-10-tools-for-better-reading-online-and-off <comment><USER2> Reading while exercising? REALLY? How about actually working out hard for a half an hour, then doing whatever the hell you want. Half-assing two things at once sounds like a recipe for getting nothing done.</comment>


BBC News heads to the dark web with new Tor mirror - <AUTHOR> https://www.theverge.com/2019/10/24/20930085/bbc-news-dark-web-tor-the-onion-browser-secure-censorship <comment><USER2> Duplicate: [https://news.ycombinator.com/item?id=21343241](https://news.ycombinator.com/item?id=21343241)</comment>


My friend survived major surgery - <AUTHOR>

My friend survived major surgery! I know nobody cares, I'm just super happy about it and will post this all over the place today. :) <comment><USER2> Here's a bunch of good wishes for your friend for a speedy recovery!

</comment><comment><USER3> Glad to hear :) hope your friend has a speedy recovery!

</comment><comment><USER4> Thats really good news. He must be proud to have a friend like you :)

</comment><comment><USER5> Awesome news then!</comment>