Hacker Newsnew | past | comments | ask | show | jobs | submit | andrew1's commentslogin

I find the environmental criticisms here bizarre; do the communication mechanisms the rest of us use suddenly have no environmental costs?


I find your response even more bizarre - just try to imagine replacing email with this method for just half a minute.

The real reason this isn't a concern is because of the absolute cost of his experiment, not because of the relative expense of his communication method in comparison to others.


In fairness, that sounds apocryphal. If it were really common then there would be no money in doing it because the market would have factored in days before the event the fact that the price were going to fall.


I'm not offended:)

Call it what you want, but it's been a winner for the past 4 years for us.


It might be the reason that Apple are infringing on the patent is that they are selling, not just using, a product which contains something which infringes the patent.


Using something with unlicensed patented technology exposes you to liability as well. Otherwise you could just make shell companies to add the final software piece to a product and cleanse the liability from all the other players.


Do you have a link to what you consider to be a good description/definition/tutorial of "Data Oriented Programming"?


Whenever I run across Data Oriented Programming it is almost always called Data Oriented Design. You focus on your data and what transformation it needs to undergo to become output. Noel's blog is probably the best source of information for that style of programming I have seen.

http://gamesfromwithin.com/data-oriented-design


Thanks, that's an interesting article.


Almost off-topic: I voted you up because I am also interested in knowing a little more about this and thought by voting you up other people would see there's more people interested in it. Then I realised points are hidden...


It will still be seen by more people, and let the author know that this was appreciated/to write more stuff like this.


If the two larger circles had that ratio then it would imply that the two circles in the bottom left and bottom right would have the same radius. Which they don't appear to. So the ratio between the two larger circles must be slightly smaller, 1.5ish maybe.


Yes, you are correct. This seems to be the flaw in the design then , i.e. no organic relationship between the two clusters except the arbitrary golden section boundary.


I'm not really sure what you mean. If company X allows customers to pay for goods/services with bitcoins then they would be able to pay the wages of their employees using the bitcoins.


> Can someone else explain, why i'd take time off of work to do this job interview? Why not take a day off and interview with Google/Apple/Microsoft instead?

Surely it depends on the job. Maybe it's paying twice as much as Google/Apple/Microsoft for the same role.


Because you'd get paid for it. If that still doesn't interest you, perhaps you don't want to work at the company? No reason to apply in the first place.


Wouldn't the geometric mean of 1 and 3 be sqrt(3) ?


> It's only a short reprieve though; because either the browns know that only two colours exist (and so on day 100 immediately know they are brown) or they face the same conundrum as blue, and commit suicide on day 900.

In the case where they aren't told that only two colours exist, why would they kill themselves on day 900? Suppose instead that one of the brown eyed people had green eyes, I don't see how the brown eyed people or green eyed person could deduce the colour of their own eyes.


Imagine the problem like this. The island is populated by just 100 Blue eyed people.

An individual can therefore see 99 blue eyes. Their logical reasoning is that if they are not blue eyed then on day 99 all of the blue eyed people will commit suicide (because they can see 98 blue and 1 of another colour). Because the others don't commit suicide on day 99 the only logical inference is that everyone else can see 99 blue eyes too. And so they too must be blue.

The reason the solution is so complex to comprehend is because the logical inference has little to do with what eye colours exist in the tribe. It is, ultimately, simple mathematics. If a tribe has n blue eyes, y brown eyes and z green eyes any of the individuals in the tribe will eventually be able to logically infer which colour they have, regardless of having any starter information.

Another way to think of it is this; they know that there are either n people with X eyes. Or n+1. Where n is the number of people they can see with X eyes and the unknown factor is their own eye colour. For everyone without X eyes n is greater than those with X eyes.


You originally said that the people with brown eyes would commit suicide after 900 days. Can you explain to me how any of them can know for sure that they don't have green eyes?


I have done; I was using the "blue eyes on their own" as an example to demonstrate it.

I'll try again (this can take a long while to get your head round :D).

Once the Blue eyed people are dead each islander now knows that there are definitely at least 899 brown eyed people, with the unknown factor their own eye colour.

Their hypothesis must be as follows (imagine this is the logical reasoning of ONE islander laying out the scenario):

- If I do not have Brown eyes that means each of the brown eyed people can see 898 browns. If that is the case, then on day 899 all of those people will kill themselves.

- If I did have Brown eyes then each of the brown eyed people can also see 899 brown eyes. If that is the case then no one will kill themselves on day 899, therefore as I can only see 899 browns, I must have brown

Here is where most people struggle to understand: The number of brown eyes each individual can see is fixed at 899. The only unknown factor is their own eye colour. The solution is that everyone knows each other unknown factor. You know that either n or n+1 brown eyes exist (where n is the number of brown eyes they can observe). And so does everyone else (and, crucially, you know they know).

If everyone's n matches yours, then on day n+1 you can infer what the unknown factor is.

Another way of thinking about it is this; an individual can logically reason that only two types of people exist on the island. Those who see 899 browns (him, at the least), those who see 898 browns (potentially everyone else; on the hypothesis that his eye colour differs). If on day 899 no one commits suicide then each individual knows that only the former exists. And therefore they have brown eyes.

(this is horribly hard to put across :S which is why it is such a delicious problem! The main thing to remember is that to the knowledge of one individual there is a known number of brown eyes, and a figure for the minimum and maximum number of brown eyes any other individual can see. If the number of days exceeds the number of browns you can see, you must be brown)


Suppose instead of being 900 brown eyed people there are X brown eyed people.

Suppose X is one, then the brown eyed person appears to be stuck, all the blue eyed people are dead so he knows he doesn't have blue eyes, but he can't determine what colour his eyes are (are they brown?, are they green?).

If X is two then we're left with two people after all the blues are dead. Each one can see a brown eyed person, but again, this doesn't help them determine what colour their own eyes are. Again, why can they not be green?

The case for X>2 seems similar to the case for X=2, there's no magical point at which they can suddenly all say 'I don't have green eyes, I must have brown eyes'

With all respect, I think you are underestimating the problem. :)


Suppose X is one, then the brown eyed person appears to be stuck

Yes, the problem specifically doesn't work if the number of people with an eye colour is below a certain amount.

The case for X>2 seems similar to the case for X=2, there's no magical point at which they can suddenly all say

In a scenario where there is, say, just brown and green (regardless of whether they know this or not), then X>3 is enough.

Where X=3 or less there is not enough information to go on (you successfully point out the flaws) and they could conceivably be any other eye colour. But above that you know it is impossible for there to be an individual who can see only one or two browns, therefore it can be inferred properly.

One of the main problems comes from the explanation of the issue which involves the suggestion that you recurse the problem back to X=1, this is inaccurate because there is always a known absolute minimum people that could have brown eyes (n, the brown eyed people you can see) and a known minimum number that any one person could see (n - 1). So long as for a brown eyed person (n - 1) > 2 the the inference is possible.

Remember; it does not matter what alternative eye colour they might be (and whether they can see it or not). Only that they are either brown or not brown. The logical inference is based on what the others must be seeing.

Try jotting it down and then reasoning it out as an individual in the tribe. Once it clicks it will seem simple :)


OK, so we agree that if there are X <= 3 people then they're stuck and cannot kill themselves.

You claim that if X = 4 and everyone has brown eyes then on day 4 they will all kill themselves. Suppose I am one of these islanders. I can see three people with brown eyes. On days one, two and three no one kills themselves. On day four I get up and kill myself because I know that I have brown eyes.

Fine, now let's consider the case where there are three people with brown eyes, and one person with green eyes:

As I think we've agreed above, the three people with brown eyes cannot infer that they have brown eyes (i.e. the X < 3 case). So they are not able to kill themselves.

But consider the green eyed person: he can see three people with brown eyes and no one kills themselves on days one, two or three.

He is in exactly the same situation at this point as the brown eyed person we considered in the four-brown-eyed-people case. So at this point, by your logic, he must know that he has brown eyes. Which is a contradiction.

I think you are wrong that induction is not involved in establishing eye colour. (unless you can convince me in the X = 4 case that is :) ).

This isn't a problem I'm unfamiliar with it, a colleague asked me it when I was being interviewed for my current job, and it gets rediscussed periodically. I really do think you're wrong I'm afraid.


Umm, we defined X as the number of people with brown eyes. So on an island with 4 people, three of whom have brown eyes, then X=3 and, yep, there is a problem.

Where X=4 (i.e. there are 4 people with brown eyes) it works.

In your case, where the number of people is 4, but X=3, then the fourth possibly incorrectly infers that he has brown eyes and so, on his own, kills himself. On the other hand they are "highly logical" so I argue they would realise that there were too few people to know.


But that's precisely the point, if they're all "highly logical" then in the island-wtih-3-brown-and-1-green case the person with green eyes can't correctly know their eye colour so can't kill themself. But they are in exactly the same situation as a person with brown eyes in the island-with-four-brown-people case. So if the green eyed person in the first case can't deduce their eye colour, then neither can the brown eyed person in the second case.

If you don't agree, please explain to me what extra piece of information the brown eyed person in the second case has which means he can kill himself on day four. As far as I can see they are both in the situation that they can see three people with brown eyes, and no one has yet killed themselves. What is the extra piece of information that allows the brown eyed person in the second case to deduce that he has brown eyes?


I disagree with you.

Try jotting it down and then reasoning it out as an individual in the tribe.

(1) Suppose there are 4 browns, b1 to b4, and b1 is trying to figure out if his eyes might not be brown.

(2) b1 wants to know if it's logically possible for his eyes not to be brown and for the others not to know their eye colour.

(3) b1 therefore supposes b1 has green eyes. If this were the case, b2 would see b1's green eyes and both b3 and b4 having brown eyes.

(4) If then b2 imagined b2 had green eyes, b3 would see b1 and b2's green eyes, and b4's brown eyes.

(5) If then b3 imagined b3 had green eyes, b4 would see three sets of green eyes.

---

(6) So b1 can imagine a situation, where b2 imagines a situation, where b3 imagines a situation, where b4 sees three sets of green eyes.

(7) If everybody on the island knew at least one person had brown eyes then in b1's imaginary scenario, b4 would know they had brown eyes and would commit suicide on day 1.

(8) If this didn't happen then we'd know that at least 2 people had brown eyes by day 2, and the induction takes off.

Since they don't know that at least one person has brown eyes, then b1's imaginary scenario is possible, and it's therefore possible that b1 doesn't have brown eyes.


Damn. You're right :S

I didn't manage to make that final leap... and hence see to importance of the foreigner. Subtly brilliant!

Consider me trouted.


The brown eyes must certainly entertain suicidal thoughts. Their religion compels them to commit ritual suicide if they know their own eye color and they know that the odds their eyes are brown are 999 to 1 ;)


If I do not have Brown eyes that means each of the brown eyed people can see 898 browns. If that is the case, then on day 899 all of those people will kill themselves.

No - if I do not have brown eyes then the knowledge that everyone shares is that there are at least 898 brown eyes, not that there are at least 899. This is because the others would then see only 898, since by hypothesis my eyes are not brown.


I'd have to politely disagree; if your class has mutable state and you want to maintain some invariant relationships amongst the elements of your class then as far as I can see you really need to be able to specify that some operations can only be performed within the class. If your class is immutable then I'd agree that in most cases privacy offers you few benefits.


Yes, that's the theory. In practice it doesn't seem to work out so well. Neither the promised benefits of using private fields actually manifest, nor the promised costs of not having private fields, but the costs of actually having the private fields manifest in spades. In cost/benefits terms, the benefits are almost entirely theoretical and the costs much higher than advertised. I consider them a major net loss for OO.


I wouldn't really agree that it doesn't work out in practice. For the systems that I work on, the concept of privacy is extremely useful, perhaps we're doing things 'the wrong way' to believe that but I don't think that's all that likely.

What would you suggest as a better alternative, outside of a purely functional approach? Just as an example, suppose that Java's LinkedList class didn't have a cached size and that instead it went and iterated its elements to calculate its size each time someone asked for it. I might write a wrapper around LinkedList with two private variables, the LinkedList and an int to cache its size in. Then I would update the int each time an operation was performed on my member list. If I can't make those two members private, how can I ensure that no one accidentally updates the list without updating the size, or vice-versa. It mightn't be an unreasonable mistake for someone to think calling mylist.size = 0 would empty the list. What is the 'safe' way of constructing this concept?


> If I can't make those two members private, how can I ensure that no one accidentally updates the list without updating the size, or vice-versa. It mightn't be an unreasonable mistake for someone to think calling mylist.size = 0 would empty the list. What is the 'safe' way of constructing this concept?

Conventions. In Python, for instance, all private fields and methods start with a double underscore, i.e., '__'. This is merely a convention, outlined in PEP8. Documentation tools don't pick up "private" fields. Even when they do, they don't list them in the same section as the public fields.

You could argue about the safety of this approach, but at some point you have to let go of the training wheels and let programmers make their own judgments.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: