The self-encrypting hard drive - <AUTHOR> http://strom.wordpress.com/2012/02/09/the-self-encrypting-hard-drive/

<comment><USER2> I'd be very worried about special proprietary drives like these that have an encryption/decryption chip. What if the chip fails? How easy will it be to read the bytes off of a drive if it fails in the future? Here are my solutions instead:

On a Mac (Lion+), use FileVault 2. It provides pre-boot full drive encryption.

On Linux, use dm-crypt/LUKS. Why oh why is this still not easy to set up?

On Windows, use TrueCrypt full drive pre-boot authentication.

On an Android phone (ICS+), use the new android full drive encryption.

On an iPhone, I imagine you're SOL?

<comment><USER3> Fedora has proper disk encryption as a checkbox option during installation. It's very easy to set up.

<comment><USER4> Ubuntu does as well, with a choice between home directories only or the whole disk. It's not actually _that_ hard to set up dm-crypt manually, although not something I'm about to suggest to my grandmother.

</comment></comment></comment><comment><USER5> Friends don't let friends use snake oil encryption, like the kind offered by "on-disk" solutions. That thing even has key escrow - either cheaply- implemented 'trusted' hardware, or a second 'secret' key known by every copy of the unlocking software! There's little impetus for widespread analysis of any of these proprietary solutions, as there's too many models to focus on. If you actually want to protect your data, stick with the standard software FDE for your OS - it _should_ be a one-click option (and hopefully the default) at installation time.

<comment><USER6> > or a second 'secret' key known by every copy of the unlocking software!

Are you sure that each drive doesn't have its own key, tied to the serial number?

<comment><USER7> Wouldn't that mean that the manufacturer still has the secret key? That would make you vulnerable to government agencies,... and it is not the case if you use truecrypt or dm-crypt/luks.

</comment></comment></comment><comment><USER8> I have this from Wave Systems on my 6 year old Dell laptop. Secured with finger print scan at boot time (or password). Used it for a while but then after the first rebuild of the OS I switched the feature off.

</comment><comment><USER9> If someone has a recommendation for one of these drives with decent performance that would be great. We have some with spinning disks in laptops, and I would love to be able to upgrade to an SSD based one.

<comment><USER10> I like the Intel (SSD 320/520). Unfortunately I haven't figured out how to get the crypto to work on Mac OSX.

I haven't fully analyzed it because I couldn't get it to work with a Mac, but for PC, it looks ok.

</comment></comment><comment><USER11> What I worry about with WDE are unclean shutdowns. Does anyone know if WDE increases the risk of ending up with an unbootable computer?

</comment><comment><USER12> we use them at work and it makes our laptops unbearably slow.

</comment><comment><USER13> Windows only.

<comment><USER10> Some work on Linux too, but so far I haven't found a good SED solution for Mac OSX, which is what I care about on laptops now. The lack of a traditional BIOS complicates things.</comment></comment>


Show HN: Python function patching (not monkey patching, actual patch-patching) - <AUTHOR> https://github.com/adamchainz/patchy

<comment><USER2> I hate that I have to use this library.

Edit: I hate the usecase, not the library.</comment>


Blue Eyes Logic Puzzle - <AUTHOR> http://www.math.ucla.edu/~tao/blue.html <comment><USER2> Edit: it looks like I'm wrong.

The first argument is true; the second has the logical flaw. The flaw is assuming that induction can continue despite additional pre-knowledge available when there are greater numbers of blue-eyed people.

The statement will have no effect when the number of blue-eyed people is 3 or more:

When the number of blue-eyed people is 0, the foreigner is lying, and if the tribe believes him, everyone commits ritual suicide.

When the number of blue-eyed people is 1, the blue-eyed person did not know there were any blue-eyed people in the tribe. Knowledge is added by the statement, and the blue-eyed person commits ritual suicide.

When the number of blue-eyed people is 2, the blue-eyed people knew that there was a blue-eyed person but did not know that the blue-eyed person knew that the tribe had any blue-eyed people. Knowledge is added by the statement, and the blue-eyed people commit ritual suicide.

When the number of blue-eyed people is 3 or more, the blue-eyed people knew that there were blue-eyed people and knew that the blue-eyed people knew that there were blue-eyed people. No knowledge is added by the statement, and no one commits ritual suicide.

Edit: clarity.

<comment><USER3> If n=3, then each of the blue-eyed people know that there are blue-eyed people and know that the other blue-eyed people know. However, they don't know that all the blue-eyed people know that the blue-eyed people know. This is the piece of information that is learned by the statement given.

In general, if there are N blue-eyed people, then it is the Nth abstraction of "he knows that I know that he knows that I know that..." that is learned by the statement.

<comment><USER4> "they don't know that all the blue-eyed people know that the blue-eyed people know"

Yes, they do. In the three-person case, a blue-eyed person can see two other blue-eyed people, A and B, and they know that A can see B, and vice-versa, so they know that A and B both know that there are blue-eyed people, and they know that both A and B would be able to us the same logic they used, so they also know that A and B know that A and B know that there are blue-eyed people.

</comment></comment></comment><comment><USER5> Randall Munroe has a much more thorough write-up on (a variation on) this puzzle:

[http://xkcd.com/solution.html](http://xkcd.com/solution.html) (Though you might want to click his link to the problem description first since his is a variation.)

<comment><USER6> And for an even more detailed examination of the underlying philosophical issues:

[http://en.wikipedia.org/wiki/Common_knowledge_(logic)](http://en.wikipedia.org/wiki/Common_knowledge_\(logic\))

[http://plato.stanford.edu/entries/common- knowledge/](http://plato.stanford.edu/entries/common-knowledge/)

<comment><USER7> I understand the induction steps, but what I don't get is why the foreigner's statement triggers the logic induction. This quote from your first link sums it well:

        What's most interesting about this scenario is that, for k > 1, the outsider
        is only telling the island citizens what they already know: that there
        are blue-eyed people among them. However, before this fact is announced,
        the fact is not common knowledge.

It seems natural to me why they didn't commit the suicide before the statement (somehow induction doesn't work here), and why they did it after the statement, but I don't understand why. Isn't the fact that there are k > 1 islanders with blue eyes _common knowledge_ too?

I mean, what bit of information is added here?

<comment><USER8> What's added is the common knowledge that everyone _else_ knows that Blue > 1 (including the foreigner), and that everyone else knows that everyone else knows that Blue > 1, etc.

Consider two blue-eyed people, Alice and Bob. Alice sees Bob's blue eyes and knows that Blue ≥ 1, and vice-versa. But Alice thinks, "What if I have brown eyes? In that case, Bob wouldn't know that Blue ≥ 1." So, everyone knows that Blue ≥ 1, but nobody knows that everyone knows that. Then the foreigner comes along and tells them that, between Alice and Bob, Blue ≥ 1. Now Alice knows that Bob knows that Blue ≥ 1, and realizes that, if Alice has non-blue eyes, Bob will use the new information that Blue ≥ 1 to conclude that he has blue eyes, and therefore commit suicide on the next day. When he doesn't, she concludes that she must have blue eyes, and commits suicide. Bob goes through the exact same logic as Alice.

Though the foreigner's statement did not tell Alice anything new about eye color distribution, it _did_ tell her something about Bob's knowledge. The same goes for Bob, who learns about Alice's knowledge.

The logic is a bit more difficult to talk through with three people, so generalizing it further is left as an exercise ;P It comes down to "everyone knows that everyone knows that Blue ≥ 1", which the foreigner _also_ contributes as common knowledge by making his announcement. For more blue-eyed people, recur on that statement as many times as necessary.

<comment><USER8> Small clarification: For the two-person case, it's important that everyone knows that everyone knows that Blue ≥ 1. For the three-person case, it's important that everyone knows that everyone knows that everyone knows that Blue ≥ 1. (The last paragraph is a bit unclear and/or wrong.)

</comment></comment></comment></comment></comment><comment><USER9> I think the foreigners statement is ambiguous enough to render the proof in argument 2 incorrect. "... another blue-eyed person", to me, implies a singular person in the tribe has blue eyes. All of tribespeople will see multiple tribespeople with blue eyes, and therefore assume the foreigners statement was wrong, rendering no effect.

<comment><USER2> It's not so much that the statement was ambiguous or wrong -- it's that the statement gave no one in the tribe more information than was previously available to him/her.

Everyone in the tribe already observes at least 99 members with blue eyes, and everyone knows that everyone else observes at least 99 members with blue eyes, so the statement should have no effect.

Edit: split to separate comment.

<comment><USER10> But they don't know "everyone knew on day X" so there is ambiguity about when they would be counting from, so nothing can be deduced. The foreigner's statement provides a synchronization point: clearly everyone knew at that point.

</comment></comment></comment><comment><USER11> > Now suppose inductively that n is larger than 1. _Each blue-eyed person will > reason as follows:_ "If I am not blue-eyed, then there will only be n-1 > blue-eyed people on this island, and so they will all commit suicide n-1 > days after the traveler's address".

Why should not a brown-eyed person reason as follows as well? It is at this stage that an implicit "counting" of the blue-eyed population creeps into the flawed proof.

EDIT: I misidentified the place where the flaw comes in. Will repost a better explanation.

<comment><USER12> They would. The traveller has accidentally doomed them all.

edit: this is based on an unfounded assumption because of the wording of the problem - they may only know they don't have blue eyes. But when I read "100 have blue eyes and 900 have brown" it makes it sound binary and I assumed that's knowledge the tribes people have as well, i.e. we have only either blue or brown eyes.

<comment><USER13> In Randall Munroe's version of the problem, he gives the visitor red eyes to explicitly avoid this binary assumption. Obviously, the visitor's statement is slightly different because of this.

</comment></comment></comment><comment><USER14> Taking the 'dramatic effect' argument further: if all the blue-eyed people kill themselves, would the brown-eyed people all simultaneously know they have brown eyes and also have to kill themselves?

<comment><USER15> This is the missing element from most explanations I see of this problem. We all look at the n cases from the POV of a blue-eyed person. An outside observer with brown eyes has the same level of information available to him, so it seems to me just as likely that after the first day, each person, regardless of eye color, could reason that nobody left the previous day, so the visitor must have been referring to me. So either eventually everyone dies, or they all realize the paradox and forgo the ritual.

<comment><USER2> Each blue-eyed person observes 99 other blue-eyed people in the tribe, thus reasoning that he/she has blue eyes on the 100th day. However, each brown-eyed person observes 100 blue-eyed people in the tribe, thus reasoning that he/she has blue eyes on the 101st day (however this does not happen because on the 100th day all the blue-eyed people commit ritual suicide.)

<comment><USER16> Doesn't that presuppose they know there are 100 blue eyed people in their tribe? When that information is presented to the reader, it's presented as outside knowledge.

If they knew the color counts, they would know their eye color and all would have to commit suicide. The fact that the tribe still existed means, they didn't know the totals.

For example, if I know there are 100 people with blue eyes and I can count as many without including myself, then I must have brown eyes and must kill myself.

So again, there is no possible way the tribe had any idea what the _exact_ counts where.

As a brown eyed person, there are either 100 blue eyed people meaning I have brown eyes, _or_ there are a 101 blue eyed people and I have blue eyes. If a census was ever taken and the exact number known everyone would have to commit suicide.

Since the visitor didn't mention an exact number then there is still no way to know if you have blue or brown eyes.

However, the tribe now knows that the visitor knows he himself has blue eyes. Will they make him follow their ritual?

Update: OK, after reading the link in the first comment, I _get it_.

<comment><USER2> It is not necessary for the blue-eyed people to know the total number of blue- eyed people in the tribe, they can deduce it at day 100:

      * A blue-eyed person observes 99 blue-eyed people.
      * On day 99, the blue-eyed people do not commit ritual
        suicide.
      * Thus each blue-eyed person learns that all the blue-eyed
        people also observe 99 blue-eyed people.
      * Thus the blue-eyed person knows that the other blue-eyed
        people must observe that he/she has blue eyes.

</comment></comment></comment></comment></comment><comment><USER17> The traveler has no effect. The logical flaw is that with n > 2 blue eyed people, everybody knows that there is at least 1 blue eyed person AND everybody knows that everybody ELSE knows that there is at least 1 blue eyed person.

The traveler's comments would only have an effect with n<=2 blue eyed people. With n = 1, he'd instantly know. With n = 2, the 2nd blue eyed person would recognize that the first person now has the information and if he doesn't commit suicide on the first night, then the 2nd blue eyed person knows the 1st blue had the information before, meaning he saw somebody else, and then they both die on night 2. n > 2, the info is already out that blue-eyed ppl exist and the count has already started.

</comment><comment><USER18> So, what the visitor is providing is really the coordination, the point at which you can measure 100 or 99 days. But doesn't this setup require that there have always been 100 blue eyed people since forever? Any birth or death or all the islanders being crated at once would serve equally well as a timer. It seems like this problem only works because the blue-eyed islanders all know that there are 99 other islanders with blue eyes, but there was no moment in time where they learned it. And since that is so contrary to our expectations, it's what ends up making the whole scenario seem so unintuitive.

<comment><USER19> No, the key is that the foreigner's statement establishes common knowledge at some point in time. What happened before that point in time is irrelevant.

> the blue-eyed islanders all know that there are 99 other islanders with blue > eyes

That's true, but what they don't know (until the 2nd) day) is that all the other blue-eyed islanders know that all the other blue-eyed islanders know that there are 99 other blue-eyed islanders. On the 3rd day they will realize that all the other blue-eyed islanders know that all the other blue eyed islanders know that all the other blue eyed islanders know that... and so on. Then on the 100th day there are 100 iterations of recursive knowledge, and all the blue-eyed islanders realize they themselves must have blue eyes.

UPDATE: note that it is crucial that all the islanders are together when the foreigner makes his statement. If he goes to each islander individually and says "some of you have blue eyes" then it doesn't work. What matters is not the statement, but that all the islanders witness all the other islanders hearing the statement.

<comment><USER10> Strictly, all _blue eyed people_ need to hear the statement, right? If someone is missing and everyone (but them) knows the missing person has brown eyes, that doesn't change the logic of those who heard.

<comment><USER19> That's right.

Which suggests some follow-on puzzles:

1\. What happens if one blue-eyed person is somewhere else on the island when the foreigner makes his statement (and his absence is known to everyone)?

2\. What happens if the next day a blue-eyed stranger wanders into the village, thereby establishing common knowledge that the day before there was in fact an additional blue-eyed person on the island (though no one in the village knew it at the time)?

3\. What happens if the next day a blue-eyed baby is born in the village?

<comment><USER20> 1\. Suppose the foreigner makes his statement to a group of islanders _C_ ("contaminated"), and the rest of the islanders _P_ ("pure") do not hear it, and it is known to all that they didn't hear it. Call the group of blue-eyed people _B_. Then the intersection of _C_ with _B_ will kill themselves after a number of days equal to the size of that group.

2\. Nothing. (I interpreted this as being without a statement by a foreigner.)

3\. Nothing. (I also interpreted this one as being without a statement by a foreigner. With such a statement, it's the same problem as case 1; everyone will recognize that the baby, having not existed on Foreigner Day, can't know about nor have been mentioned in the statement.)

EDIT:

I should point out that I've assumed the foreigner's statement refers to the group he's addressing, not to the population of the island. ("At least one of you who I see before me has blue eyes".)

With a better interpretation of your problem 2:

2a. On some day, the foreigner addresses a village, saying "at least one person on the island has blue eyes". A blue-eyed stranger wanders into the village shortly after he leaves, allowing the villagers to believe that he was referring to the stranger.

In this case, there is no synchronization point, and "nothing" will still occur.

2b. A blue-eyed stranger wanders into the village _the day after_ the foreigner leaves, allowing the villagers to believe that he was referring to the stranger.

As far as I can see, this has gone back to case 1 again. The foreigner's statement provoked a first day of blue-counting, and while it is revealed to have possibly not meant what they thought it meant, day 1 of blue-counting is sufficient for day 2. The blue-eyed villagers should kill themselves after a number of days equal to the size of their group. (The stranger, even if he settles into the village, will be unaffected.)

</comment></comment></comment></comment></comment><comment><USER20> Here is the part that people seem to miss:

> If a tribesperson does discover his or her own eye color, then their > religion compels them to commit ritual suicide _at noon the following day_ > in the village square for all to witness.

Emphasis mine, of course.

You can think of this clause as specifying the clock speed (one cycle per day) of the logical machine that is the island.

</comment><comment><USER21> There's an infuriating variant, which I have as yet been unable to solve:

An infinite sequence of people have either blue or brown eyes. They must shout out a guess as to their own colour of eyes, simultaneously. Is there a way for them to do it so that only finitely many of them guess incorrectly?

<comment><USER22> And none of them have any knowledge about anything?

<comment><USER21> They can all see everyone else's eyes. That is, person N can see person M's eyes, for all M,N. [I don't know whether it's possible or not - it feels not, but it has been hinted to me that it is possible.]

</comment></comment></comment><comment><USER10> Personally, I'm convinced the blue-eyed people die on the hundredth day _if they haven 't earlier_ \- I am not convinced there is no shorter path to the information (though I certainly don't know of one).

</comment><comment><USER23> 1- Nothing says that there were 1000 islanders on the day the alien made his speech. Some may have discovered they eye color and died before.

2- Compare: "how unusual it is to see another blue-eyed person like myself in this region of the world" with: "how unusual it is to see other blue-eyed persons like myself in this region of the world"

To me, it is clear that the entire tribe the day the stranger makes his speech consists of N brown-eyed, and one single remaining blue-eyed.

They immediately understand the same thing, and all commit suicide the next noon.

</comment><comment><USER24> This is a lovely way to teach induction and proofs as part of a class. I personally prefer the dragon version of this problem. An elegant solution is provided here.

[https://www.physics.harvard.edu/uploads/files/undergrad/prob...](https://www.physics.harvard.edu/uploads/files/undergrad/probweek/sol2.pdf)

</comment><comment><USER25> Shouldn't it be better if people had to commit suicide in their own houses? I mean if there are 2 people with blue eyes and on the second day they see each other at the town square about to commit seppuko they'd figure perhaps the other is the only one with blue eyes. Or this whole thing went over my head.

</comment><comment><USER26> Ok, I'm pretty sure I'm being moronic and missing something, but does the foreigner give the tribe any more information? Does the tribe already know how many blue eyed and brown eyed people there are?

<comment><USER27> If they already knew how many of each, then they would all be dead, as any of them would see that the numbers add up only if he was in a specific group.

</comment></comment><comment><USER28> I think the problem also is missing some part where the people know for sure that they can only have blue or brown eyes.

</comment><comment><USER29> Well let's try the experiment a few times and see if our results match up with our theories in double-blind tests.

<comment><USER20> The problem statement specifies that the population of the island all reason with perfect logic. Compare that to the reasoning displayed by my babysitter's son once:

        Me: I saw my parents wrapping a Christmas present, but on Christmas
            when I received that present, it was labeled "from Santa".

        Him: Santa Claus is real.

Good luck finding a suitable population to experiment on. ;)</comment></comment>


When your child is a psychopath - <AUTHOR> https://www.theatlantic.com/magazine/archive/2017/06/when-your-child-is-a-psychopath/524502/?single_page=true <comment><USER2> Seems pretty quiet in here, so I figure I'll do a bit of spruiking. The article is definitely worth the read; I found it quite riveting.

The most interesting part is the suggestion that there might be effective methods of treating psychopathy/sociopathy. This would be groundbreaking if true, as psychopathy is generally thought to be untreatable. In fact, it has been observed that treatment will often just teach psychopaths how to more effectively manipulate others.

Another interesting bit: brain scan studies show that psychopaths have smaller amygdalae compared to non-psychopaths. The amygdala is a part of the brain that processes emotions, particularly fear, and is implicated in 'fear conditioning'. It's basically your brain's "module" for heuristic threat recognition. For example, the amygdala of an arachnophobe will light up and send the "pump adrenaline" signal if they are exposed to a spider. In contrast, psychopaths don't seem to experience fear and have difficulty recognising this emotion in others:

 _" I don't know what you call this emotion," one psychopathic prisoner said, looking at a photo of a fearful face, "but it's what people look like just before you stab them."_

</comment><comment><USER3> I have read somewhere that programmers are especially subject to sociopathy. Or rather, a lot of successful sociopaths grow up to be programmers. I believe the draw is the tiny rewards when program compiles and executes. At least for me personally.

I grew up a happy child in a middle class home and the symptoms didn't manifest until when I was 17. Looking back, I started a pattern of petty crimes such as shoplifting, sabotaging school computer, spamming teachers' inboxes, stealing answers to exams. I had 3 ultimatums from school. Because nobody understood computers at the time, I did complete my high school and got into a relatively good college for CS.

Just before graduation, my friend whom I bullied emotionally for 4 months attempted commit suicide. This is when I started to realize what I have become. I consider myself lucky because of the latent manifestations of sociopathic behaviors, which exempts me from further punitive conditioning from society forces.

</comment><comment><USER4> _" Psychopaths have always been with us. Indeed, certain psychopathic traits have survived because they're useful in small doses: the cool dispassion of a surgeon, the tunnel vision of an Olympic athlete, the ambitious narcissism of many a politician."_

 _" The condition can go unnoticed because many children with these traits—who can be charming and smart enough to mimic social cues—are able to mask them."_

This claim comes interestingly close to that of Pieter Hintjens' in his blog and book: [http://hintjens.com/blog:_psychopaths](http://hintjens.com/blog:_psychopaths)

<comment><USER2> I've always been fascinated by this idea; the possibility that a few of the highly popular or charismatic people you come across are actually psychopaths with a well constructed 'mask'. Indeed, one of the phrases that is used to describe this concept in general is 'the mask of sanity'.

</comment></comment><comment><USER5> "No evidence of abuse" Ha. So, some people just turn out this way, for no reason?

I think I know what "no evidence of abuse" means, having lived through it. It means everyone believes you deserve it, or that it doesn't harm you, or that the people who are supposed to report and investigate abuse are at least not doing their jobs or are predators themselves. The kid shows up at school with a burnt hand, or bloodied and bruised. The kid describes watching pornography, being given drugs, and physical and sexual abuse in front of the teacher at age ten. The kid's parents admit, in direct language, to social workers and law enforcement that they commit abuse. A teacher visits the house and witnesses drunken dad beating up on the kid. The kid turns in a writing assignment which is a recollection of sexual abuse. Police officers eyewitness the kid being assaulted, take reports of abuse from the kid after the fact, and the dispatchers document requests for assistance. These are just some of the things that can add up to "no evidence of abuse."

I believe that it is no miracle that when I no longer experienced physical, sexual and drug abuse and psychological torture, that after some time I began to not hate, want to kill or harm, and be devoid of respect for anything, everything, and everyone. However, these experiences left me crippled because I was prevented from developing into a normal human being. Somehow, I managed to not physically harm or destroy anything more, and only caused emotional pain inadvertently (something that I feel shame and regret for - nB I did not experience these feelings at all during the first twenty years of my life.)

It was many years, only after I healed enough to begin processing my experiences and realized that these things should not have happened to me, and that many people should have acted differently, before I wanted to harm anything again. Nowadays, instead of anything and everything, I would like to cause harm, pain and suffering to some of the principals and accessories of the abuse I experienced. I have developed, despite tardily, a sense of morals that prevents me from committing crimes and doing evil, and a sense of justice that leaves me unable to forget that these people are still alive, not punished, and will die without paying for their crimes. The juvenile probation officer whose fat thighs flash before my eyes every time I try to be intimate with my wife, because her jowly privates were the first I'd smelled, decades ago. The principal who accused me of a petty theft from a class I never went to, who grabbed me and spread me open when I didn't understand what he meant by 'grab your buttocks.' The psychotherapist who listed and billed for me as a patient, despite primarily teaching my family members how to continue their abuse and remain undetected while manipulating me with shame to not speak of it. The Chesapeake Police officers who threw my reports away, and the Virginia State Police agents who threatened me with arrest should I not stop complaining about abuse. I want them to live long, and suffer in pain every day, and terrible as this is, to watch their innocent grandchildren be abused and know the ability to determine the terms of their first sexual experience was taken from them. I simply cannot stop fantasizing about harm coming to these people.

I want to stop thinking these things, and instead take care of my self and family. Instead of calling me a schizo or a psychopath, they now say I have PTSD and reassuredly tell me that I'm a victim and my thoughts are rational.

<comment><USER6> While this may not be the appropriate forum for what you shared, I am deeply saddened to hear what you have struggled through. No one deserves that kind of abuse. And the severity of that pain would make forgiveness or empathy difficult for anyone. I am glad you desire to care for your self and your family, and I hope you experience success in those areas as you continue to heal and grow.</comment></comment>


Is there room for another classified ads website? - <AUTHOR>

It would appear that Craigslist has this market on lock down. Craigslist is almost the term people use when referencing online classified ads in general - like Kleenex.
With all the simplicities of Craigslist though, it seems like it could be updated and done better. I know 'better' is subjective, but a lot of newer technologies have come out since Craigslist was initially released. The concept could perhaps be modernized a bit.
Do you think there's room in the market for another Craigslist? What kind of things could make classified ads better? <comment><USER2> I sure hope so. I stopped using Craigslist a while ago and really only use my local news company's classifieds online now.

They might have more 'stuff' on Craigslist but I'm really turned off by the spam and the old feel of the site. Their neglect for a great UI and consumer experience lost them a user.

I am by no means a hardcore classifieds user, but I would really like a site that had a much more powerful search, better spam filtering and a way to clean out expired items more quickly.

</comment><comment><USER3> I think Craigslist/Gumtree/Kijiji are already done for. Their big value came from cross-selling across products and being the one place for everything. This was hugely valuable in the time of Yahoo where content discovery was difficult.

Now with the ease of content discovery the market is fragmenting into specialist sites, look at the profitable areas of Cragislist: housing, cars, dating. They all have specialist sites which are doing better than Craigslist, by taking the most profitable chunks of the market niche competitors are able to spend more per user in marketing and thus beat Craigslist.

In ten years time Craigslist is just going to be left with the least profitable classified ads. You have to ask yourself is that what you want to be competing for ?

Your best bet would probably to concentrate on a particular niche that you want to steal away from Craigslist (local sales, etc.) and figure out the problems people face in that niche and use that to break into the market, rather than trying to compete with Craigslist across the board in what is already a dying model.

</comment><comment><USER4> Yes. I am currently working on one just for shits and giggles. Its called spotted.at <http://spotted.at>

The things that I am focusing on are

a) realtime b) not having to provide phone number c) valid listings (e.g.: listing disappears once item is gone)

<comment><AUTHOR> How do you plan on determining when an item has been sold or a listing has been "fulfilled"? The only way I could think of would be to make it as easy as possible for the ad's poster to mark the listing as expired, or something.

</comment></comment><comment><USER5> New Zealand desperately needs -something- good. For example, there's a student job search site (only for students) with around 2 pages full of awesome freelancer jobs (with good pay) yet I cannot sign up/get in contact with the submitters (because I'm not a student).

That's food for thought. I mentioned New Zealand, so perhaps you can find a locality where a Craigslist-type website would pay off well.

<comment><USER6> Could you tell me the name of the site? I've been out of New Zealand for awhile, but it would be interesting to see what's available.

<comment><USER5> <http://sjs.co.nz> \-- when I was looking about a month ago, there was 37 jobs with an average time of 10 hours a week at $25 an hour. They were all sorts: coding eCommerce, website maintenance, Wordpress development etc.

(to search, type 'home' then find 'IT/Computer' in the classification drop down)

Generally I find it has a better range of casual/part-time or even full-time than Seek/TradeMe.

<comment><USER6> Thank you kindly!</comment></comment></comment></comment>


Tesla is releasing more battery capacity and free Supercharging due to Hurricane - <AUTHOR> https://electrek.co/2018/09/12/tesla-releasing-more-battery-capacity-free-supercharging-hurricane-florence/ <comment><USER2> Isn't Elon sending any metal tubes on standby for the opportunity to save any of the potentially submerged?</comment>


Anic -- Faster than C, Safer than Java, Simpler than *sh - <AUTHOR> http://code.google.com/p/anic/wiki/Tutorial ANI is a dataflow programming language, with strong typing, implicit parallelism, oop and the beggining of an implementation.<p>"Q: How does ANI resolve the fundamental issue of deadlock in parallel programming? How does the Dining Philosophers example on the main page work?<p>A: In ANI, under the hood, pipes implicitly enforce total resource orderings for acquiring data. Somewhat surprisingly, deadlock theory guarantees that there will be no deadlock if this condition is met." <comment><USER2> Still reading through, it's definitely piqued my interest. However, in the interest of consistency [as it translates to readability] two issues right away:

1) Get rid of the infix modifier to the filter. The statement is made that in ANI everything flows left to right. The infix operator while providing familiar 1+6->7 notation conflicts with the above flow statement. 1,6+->7 while not immediately familiar is easy to understand after explained. However, added special case rules for infix operation muddies the water.

2) In the following code sample provided, the left to right rule is again not followed and thus leads to increased difficulty in [human] parsing:

multiPrint= [string\ s, int\ times] {

            \\[std.gen] <- \times s ->std.out;

};

"Hello, World!\n", 10 ->multiPrint;

Instead, to be consistent and follow the previous left to right flow rule, use the following syntax:

multiPrint= [string\ s, int\ times] {

            \times -> \\[std.gen];

            s ->std.out;

};

"Hello, World!\n", 10 ->multiPrint;

In general if there is an everything flows left to right rule, there should not be a <\- operator.

imho

<comment><USER3> s/peeked/piqued

<comment><USER2> Thanks.

</comment></comment></comment><comment><USER4> gotta love the url _<http://code.google.com/p/anic/> _

</comment><comment><USER5> _Faster than C_ – this is explained in the FAQ as most C programs being single threaded and ANI being inherently multithreaded.

ANIC was posted to HN most of a year ago: <http://news.ycombinator.com/item?id=1042122> with much commentary.

<comment><AUTHOR> Sorry, I missed it at the time. BTW I wanted to avoid a double submit and I have been looking for some "search" box without success, it is probably obvious once you know where it is, where is it?

<comment><USER4> <http://searchyc.com/>

<comment><USER6> [http://www.google.com/search?q=site:news.ycombinator.com+key...](http://www.google.com/search?q=site:news.ycombinator.com+keyword)

</comment></comment></comment></comment><comment><USER7> Maybe it's just me, but I don't believe you can claim Windows supported by Cygwin proxy.

<comment><USER8> Why not?

<comment><USER7> The compiled binary result of an ANIC program can not run on Windows natively. Thus where on other systems my dependency list is simply the native binary, on Windows, Cygwin either needs to be packaged with the release or installed manually by the user.

It's a blurry question regarding where you say a VM/Compatibility shim means that you no longer running the application natively. The same can be asked of Java, Flash, and a lot of interrupted/bytecode languages. The distinction to me in this case is that the code is meant to be compiled to native code (which it isn't in this case), and Cygwin is not a common platform available on a Windows system.

[Edit:] The asker of parent question should not be down voted, it is a reasonable question, and as I've stated it's open to interruption.

<comment><USER9> What about .NET? By your logic, applications written for the .NET CLR don't support Windows (XP) either.

<comment><USER10> Well, they don't. That XP users are likely to have something installed that has dragged in .NET doesn't change that fact.

</comment></comment></comment></comment></comment><comment><USER11> Am I the only one thinking this code looks ugly and hacky. I would never code in this.

<comment><USER12> Frankly there isn't a language in existence that's "easy to read" and I'm kind of sick of seeing that claim. There's no way you can read anyone's code without knowing at least something about the language.

That said, I really like the ideas this language is offering and I'm definitely interested in giving it at try.

<comment><USER13> I'd argue that Python is very easy to read for someone new to programming, particularly someone familiar with mathematical notation. Something like:

        for animal in ['dog', 'cat', 'bear']:
            print animal

strikes me as intuitive and obvious, both absolutely and also relative to the equivalents in other languages.

<comment><USER14> That is not necessarily a sign of a good language, though.

ADD 1 TO COBOL GIVING COBOL

is also readable, and yet (thankfully!) we've mostly abandoned COBOL.

And no, I'm not saying Python is bad, or like COBOL - just that readability and quality of a language are not necessarily related.

<comment><USER15> I don't know that I agree, I really am not sure what "GIVING COBOL" means.

<comment> a-priori It's the assignment part; it says where the result should go. In this case, back to the "COBOL" variable. But, it's optional if you're assigning back to the source: ADD 1 TO COBOL means the same thing as ADD 1 TO COBOL GIVING COBOL. But, you can also do ADD 1 TO COBOL GIVING FOOBAR to assign it somewhere else.

(Yes, I just spent the last 10 minutes reading the COBOL pages on Wikipedia and Wikibooks.)

</comment></comment></comment></comment></comment></comment><comment><USER16> Latch concept is probably worth exploring further. Does anyone know of a language with native variables being a FIFO pipe? I.e.

      x = 1   // x now contains 1
      x = 2   // x now contains 1 and 2
      y = x   // x now contains 2, y now contains 1
      ...

This sort of thing. Not as an add-on construct, but as a native part of the language.

<comment><USER17> go channels are like that (im a little rusty but it works pretty much like this).

c := make(chan int, 2);

c <\- 1;//c contains 1

c <\- 2;// c contains 1 followed by 2

y <\- c;//y=1

<comment><USER18> It looks like make(chan int, 2) creates a channel with a maximum depth of two elements. I was curious how channels work, so I looked up the relevant part of the spec (<http://golang.org/doc/go_spec.html#Channel_types>). In case anyone else was wondering, specifying the length of a channel allows it to be written and read asynchronously until the channel is full. A zero-length channel will block until both a sender and receiver access the channel.

</comment></comment></comment><comment><USER19> I think the concept of a data-flow programming language is very interesting and I'd love to see an active, open-source data-flow programming language like Anic (which doesn't currently exists). Which makes me a bit uneasy about Anic is that it only has 3 committers, with the last update end of September, and no working compiler.

The developer needs two things: (a) financial support so he can work on it full time, and (b) an active community of contributors. Maybe some organization could sponsor him, or perhaps do a Kickstarter fundraise or simply ask around for donations... I just hope it gets some traction and a compiler; for certain problems Anic could be a very interesting and natural approach.

PS: The first response in this thread contains a few well articulated reasons for being interested in Anic: [http://groups.google.com/group/ani- compiler/browse_thread/th...](http://groups.google.com/group/ani- compiler/browse_thread/thread/4454069ad411282)

<comment><USER20> _makes me a bit uneasy about Anic is that it only has 3 committers_

Sadly its much worse than that.

Only one of those 3 committers, Adrian/Ultimus, is actually actively committing. I know this because I'm one of those three committers - I was given commit access because I helped answer questions and edit the wiki pages a little (because I knew enough about dataflow languages prior to encountering ANI that I was quickly able to understand the concepts and code). But I have yet to actually commit any code.

I was working on a simple x86 code generator (basically walk the AST, using maximal munch instruction _tiling_ ), but its not near working and I've been horribly busy with paying projects to finish it :(

</comment></comment><comment><USER21> I'm curious how a language with no compiler is "faster than C" since the speed of C is nothing to do with the language and everything to do with the compiler implementations which have been so heavily worked over the years.

I can believe it - I've made my own language and compiler whose results are faster in the niche area it targets than any C compiler I've ever seen - I'm just curious how this assertion is backed up.

<comment><USER21> nm, i see in the comments... so its a false claim then. nice. :/

<comment><USER22> Nowhere in the comments it is shown to be a false claim.

"Faster than C" is doable, but needs qualifiers, e.g:

CUDA in modern GPU hardware is faster than dektop C.

JITed Java was shown to be faster than C in several cases, because the JIT compiler could make adaptable optimizations based on the actual runtime environment.

And, any competent language that takes advantage of multiple cores easily is faster than most C equivalent programs (even most multi-threaded ones).

</comment></comment></comment><comment><USER23> That is the fugliest thing I've ever seen.

Looks like it's well written, planned and engineered tho.

<comment><USER24> Those were my thoughts as well. I like the idea of a language where multithreading is the default, but all those back slashes - it reminds me of * in C.

<comment><USER25> Yeah, it could use with different characters for syntax.

</comment></comment></comment><comment><USER26> My suggestion is to get an editor to look at that tutorial. It's fantastic that so much effort was put into presenting the language, but reading it is rather painful.

At best it's written like a oral lecture, at worst it's wordy, condescending, overuses of italics for emphasis, leads by the nose for no apparent reason, and has obvious exaggerations that aren't clarified.

The grammar is all fine and so is the general structure, but I suspect a good writer could help a lot with the remaining details.

</comment><comment><USER25> Looks like a computationally executed VHDL.

Interesting, but not necessarily useful. And looking how hard it is to "write" good vhdl logic, I'm not sure how many could handle coding in ANI.

<comment><USER20> While I partially agree with you're saying (VHDL _is_ hard to write well; thinking in parallel _is_ hard), I'm not sure I can completely agree. In it current textual form, you are probably right, but with a visual programming frontend, I think a dataflow language like ANI may actually be easier to program than a standard sequential program in a traditional language.

Why do I think this? Because visual dataflow languages have been _very_ successful as programming tools for non-programmers in niche areas. Eg, in music production: Puredata, MAX/MSP, Syntmaker, Reaktor; in 3D modeling (at least Blender has a dataflow-esque language for describing the render passes, but I've seen other visualization/graphics programs use datalow-like visual programming languages); in game development tools (I've seen at least three commercial engines which use some form of dataflow-esque visual programming language for describing shaders, AI and probably other things); the scientific community has LabVIEW. I'm sure theres others too (not exactly _non- programmers_ , but the defense/aerospace industries have SCADE).

Of course, coming up with an intuitive, yet sophisticated enough to do real programs in, visual representation and GUI interface would still be a difficult task and I certainly agree that for a textual programming langauge, your comment is probably correct.

</comment></comment><comment><USER27> AFAIK, this thing doesn't work any more than it did a year ago...

<comment><USER28> And just like a year ago, there's nearly 100 comments about whether or not the syntax is ugly, whether or not you find it readable because you can't break out of your Algol mindset, whether or not anything can truly be "faster than C", whether or not C is easy to parallelize, the url spells "panic", etc etc, and yet there's only 1 or 2 people that bother to look at the commit log and browse the source tree to find out that it's _total fucking vapor._

Pretty embarrassing for HN to be so reliably trolled.

<comment><USER29> The commit log shows plenty of activity: <http://code.google.com/p/anic/source/list>

<comment><USER27> I respect the author's dedication, but I think he has his priorities completely wrong (and I told him so last year): how can you commit something like "cleanup and performance boost for color-coded output" when there is not even a proof of concept that the language is implementable? He's worked a lot on the parsing and the front-end, but I wish he would get something compiled, anything, and just show that his idea can work, instead of debating about things that are ridiculously minor for the moment like syntax or an interactive environment. Chancho's post is exactly my thoughts.

For example, why not compile or manually translate some examples to C as a prototype? What can be done in assembly can mostly be done in C as well, if you're willing to sacrifice some performance.

<comment><USER20> Well, fwiw, the binary that does exist (which does, as far as i can tell, parsing, type inference/type checking and a bunch of semantics checking, plus it walks to AST to generate code (except it doesn't actually generate code yet), so far is insanely fast, even in verbose mode (where it prints a load of shit to stdout).

As for proof of concepts, on the mailing list he has stated that ANI is more or less a natural progression from previous unreleased projects.

Having said that, I agree that focusing on getting something working before trying to make it fast is the _correct_ way to do it...

</comment></comment></comment></comment></comment><comment><USER30> It looks tantalizing, and I _love_ shell scripts, and I've spent countless hours wishing for pipes in my programming language.

But: when it says, _"ANI is designed to abstract away from the idea of an "algorithm" altogether,"_ I go, "quackery."

<comment><USER31> There are things which aren't algorithms, but which can embody the same strategy as an algorithm, like sorting networks. Instead of series of steps, the sorting network specifies a bunch of data flows, wherein things can happen in parallel.

</comment></comment><comment><USER32> At first glance I always think it's "simpler than shit.", but then I read the article, and no, for my poor brain it is not simpler than shit.

</comment><comment><USER33> This latching and piping seems intuitive if you have done some monadic programming in Haskell.

</comment><comment><USER34> I'm not really sure of the accuracy of any of its claims, but it certainly looks interesting.

</comment><comment><USER35> what problem does this solve?

</comment><comment><USER36> The syntax hurts my eyes.

</comment><comment><USER37> Interesting, if he knows what he's doing. This doesn't fill me with hope however:

Building main executable... src/types.cpp: In member function 'TypeStatus::operator uintptr_t() const': src/types.cpp:1514: error: cast from 'Type*' to 'unsigned int' loses precision

<comment><USER20> Its easily fixed though: either compile on a 32bit machine, or change that line to type-cast to uintptr_t instead of unsigned int.</comment></comment>


Japan Airlines unveils tool to tackle horror of screaming infants – Child icon - <AUTHOR> https://www.theguardian.com/world/2019/sep/27/babies-on-a-plane-japan-airlines-unveils-tool-to-tackle-horror-of-screaming-infants <comment><USER2> This is funny and I guess useful but arguably a bit much. There are lots of other types of people I'd like to not sit beside during a 12 hour flight, should "deodorant wearing status" be added as well?</comment>


Crypto's 80% Plunge Is Now Worse Than the Dot-Com Crash - <AUTHOR> https://www.bloomberg.com/news/articles/2018-09-12/crypto-s-crash-just-surpassed-dot-com-levels-as-losses-reach-80 <comment><USER2> I think that headline is an outright lie. It's not as big as is stated in the article itself, and it has basically no impact on most people's lives, because it was expected by almost everybody.

They have hype in common, that's all.

<comment><USER3> > _and it has basically no impact on most people 's lives, because it was > expected by almost everybody._

Worse for those that have invested in crypto it means, not most people

<comment><USER4> It's only worse for those that invested in crypto during a period of a couple of months last year.

People who gambled on crypto any time before October are still up.

<comment><USER5> That's 11 months ago. You're saying that for virtually an entire year everyone who has invested in cryptocurrencies has lost money. That doesn't seem significant to you?

<comment><USER4> Fair point

</comment></comment></comment></comment></comment><comment><USER6> What exactly precipitates articles like this? Reading this headline I went to naturally go check the price of Bitcoin [1] and was expecting some... well something. Instead it's up about 5% on the month, a bit more than 1% on the week.

In my cynical mind this just reads _' It sure is a slow news day, but we need to put something out. I know! the old trusty Bitcoin is crashing... or something!'_ Is there some other event that precipitated this that I missed?

[1] - [https://www.coindesk.com/price/](https://www.coindesk.com/price/)

<comment><USER3> > _What exactly precipitates articles like this? Reading this headline I went > to naturally go check the price of Bitcoin [1] and was expecting some... > well something. Instead it 's up about 5% on the month, a bit more than 1% > on the week._

It was $19000 last year and ~ $6200 today, doesn't that give you any pause?

<comment><USER7> It was already $6800 in February. What has changed since than to write about "Crypto's 80% Plunge" _now_?

<comment><USER3> Articles are not just for breaking news.

They are also for reflective pieces covering a longer period of time.

</comment></comment></comment></comment><comment><USER8> Headline is a bit misleading - but nonetheless the crypto-route has been a huge destruction of capital.

My biggest issue with the article: You cannot just compare 2008's route of _one stock index_ with some arbitrary Crypto-Index. It's an unfair comparison.

I've did this just weeks ago myself: 2008's loss in S&P500 market-cap vs. this years loss in market-cap of the 5 leading crypto-curriencies. Which was about a third (Yes, it is just an approximation - it lacks the 2008's loss of market-cap in assets around the world, but so does it exclude ICOs and crypto- derivatives).

What makes such a comparison interesting though: The crypto-route was huge nonetheless, but it was more or less isolated. Which maybe was a good thing. If we were to believe in cyclical markets, with bubble-bursts being a recurring integral part, then maybe crypto was a "booby-trap" for spoofing speculation into it and save the rest of the financial markets this time?

</comment><comment><USER9> I've actually been hoping and waiting for this to happen.

I've been keeping an eye on bitcoin long before the bitcoin faucet dried up, and am a big believer in bitcoin as a practical currency rather than something to gamble with. Hopefully with this, bitcoin becomes usable again as means to transact in low-value trades with other people.

<comment><USER10> So... This is good news for bitcoin?

</comment></comment><comment><USER11> These types of MSM clickbait headlines are a pretty reliable buy signal

<comment><USER12> I will never understand the reflex of decrying news as "FUD" or outlets as "MSM", if journalists don't write what you want to hear.</comment></comment>


Show HN: A different interface for reading Hacker News - <AUTHOR> http://moeffju.github.com/pyxis/pyxis.html

<comment><USER2> Doesn't work for me --- nothing loads in either pane, nothing happens when I click on either of the links at the top.

(I'm using Firefox 3.6.13.)

<comment><USER3> same here, but works on Chrome. And it's even pretty nice, I like it. Maybe figure out some way to show comments side by side with the original page?

<comment><AUTHOR> If you want to see comments and link at once, <http://hnvue.com/> was linked in this thread and does that.

</comment></comment></comment><comment><AUTHOR> This is something I hacked up in about two hours using the iHackerNews API, serve, haml, and jQuery. It was inspired by the view many apps use on tablets in widescreen mode - list of items on the left, expanded content on the right.

The UI is not polished at all, but I wanted to get this out to get feedback.

On my TODO list for Pyxis: \- Better UI \- Load more pages (currently only the first page of the frontpage is loaded) \- Use the history API to make the UI state shareable.

The source is on <https://github.com/moeffju/pyxis>, so feel free to fork it and improve on it.

</comment><comment><USER4> Briefly amuse yourself by clicking "Show HN: A different interface for reading Hacker News" in each nested frame.

<comment><USER5> _Briefly_?

</comment></comment><comment><USER6> <http://searchlightdigital.com/2011-02-21_1408.png> it's just HN, all the way down...

</comment><comment><USER7> I prefer <http://www.hnvue.com>

<comment><AUTHOR> Interesting, I didn't know about that. I prefer the link/comments toggle instead of the side-by-side view because I like content panes to be as big as possible, but hnvue is very useful anyway.

</comment></comment><comment><USER8> Pretty cool. Why not have another column for comments instead of making users to click? Maybe put this as an option for users to select, because I'm sure there are a lot of people who are using widescreen monitors and are not fully utilizing it. I'm suggesting this as an option, because there are other batch of people who uses vertical mode.

</comment><comment><USER9> The line under each link "51 points, 27 comments" should be clickable and take you directly to the HN thread.

<comment><AUTHOR> That's a great idea, I put it on my j list. I hope to have time to hack on this tonight.

</comment></comment><comment><USER10> Has potential.

1) Make the 'x comments' part a separate link that opens the comments tab.

2) try and put the domain linked to somewhere

Otherwise, I like this interface

</comment><comment><USER11> ha cool . . . pretty similar to something I crudely put together awhile back:

<http://hackskimmer.heroku.com>

it uses viewtext to make things 'readable', which unfortunately seems to be choking right now

I wanted to put something together to let me get through hackernews quickly when i didn't want to get caught up in the comments.

</comment><comment><USER12> Doesn't work in Firefox 220.127.116.11. Not that I expect it would - nothing whizzy does. Mind you, that's part of the reason why I use it.</comment>


Start8 - Bringing back Start menu to Windows 8 - <AUTHOR> http://www.stardock.com/products/start8/features.asp

<comment><USER2> Use this instead (free):

<http://classicshell.sourceforge.net/></comment>


CloudABI, an ABI built around capability-based security - <AUTHOR> https://github.com/NuxiNL/cloudlibc <comment><USER2> This Is actually a really cool project. It's worth a read if you've ever looked into application portability and definitely if you value capability based security.

</comment><comment><USER3> Would this be used in conjunction with an authorization API to control access to the interface? So you would have an OAuth API to be able to even make a call to the ABI, which then has the built in security features of limiting security-threatening system calls, or would CloudABI have it's own access control as well as capability-security? Or am I muddling the concept?

I've learned a bit about APIs, but this is a new (and quite interesting) concept, particularly as far as security goes, but this looks quite interesting.

</comment><comment><USER4> what's a ABI? Application Brogramming Interface?</comment>


MLB's Newest Ballpark Is a Shift Away from Retro-Era Stadiums - <AUTHOR> https://fivethirtyeight.com/features/mlbs-newest-ballpark-is-a-shift-away-from-retro-era-stadiums/ <comment><AUTHOR> _While its exterior has been likened to that of a Costco, its interior is what will matter. When fans are permitted to enter, they will find many seats closer to the field than they are in retro parks_</comment>


The Promise of Firefox OS - <AUTHOR> http://sergimansilla.com/blog/promise-of-ffos/ <comment><USER2> So... it's 2013, and I'm sitting here with my blazingly fast nexus 4, and the web sites I visit are... slow. terrible. broken. spammy.

Half of them have 'popups' that try to banner at the bottom of the screen, but end up flailing wilding and either taking up the entire screen, or just helpfully sitting exactly over the middle of the page. A lot of them try repeatedly to direct me to a specific page, or a native app when ever I flick between pages.

The links are tiny and impossible to click on without zooming in.

It's just a terrible, terrible experience.

How do we get from this broken UX experience story of _right now_ , into the magical compelling 'mobile web app' future that OP talks about?

I just don't see a roadmap for it. :(

<comment><USER3> I worked as a front-end developer for an adnetwork for two years, so I take a little responsibility for your experience. I tried my best, but there just wasn't that much interest in getting it right.

Here's why I think we're all having a hard time with advertising in mobile. Basically, adnetworks are still learning how to do it right, the same way designers and developers are still learning how to do mobile websites right. The layout issue you mention comes from a conjunction of various reasons:

* Marketing thinks mobile == iOS, which sets limited expectations and for example means developers have a hard time getting a variety of devices to test on

* Adnetworks are likely targeting mobile with the same front-end infrastructure they use for desktop. Most of them still target IE6 so they're trying the same ideas

* Old iOS versions and many other webkit browsers have big issues with fixed positioning. First they didn't support it. When they did, they still had issues rendering while scrolling and firing the correct events

* Ads in mobile require a complex layout but the standard in the industry is that the website doesn't have to do anything but insert a script tag in the page. If there was teamwork between websites and ads, they could use better layout tools like flexbox

* No adblock on mobile (yet?) :P

Hopefully it'll change.

<comment><USER4>
      No adblock on mobile (yet?) :P

Rooted Android phones can install apps[0] that block most ads (I think it only blocks connections to the ads and doesn't do any fancy CSS rules).

And Firefox on Android has Adblock Plus browser extension which as far as I know blocks ads like it does on the desktop version. No root needed for this.

[0]: AdAway (I use this) <https://play.google.com/store/apps/details?id=org.adaway>

Adblock Plus for Android (Seems to have some non-root support, I haven't tried it): [https://play.google.com/store/apps/details?id=org.adblockplu...](https://play.google.com/store/apps/details?id=org.adblockplus.android)

 _This app above is not the same as the browser extension mentioned before_

<comment><USER5> Firefox Mobile has Adblock Plus available.

<comment><USER6> Here's the link to Adblock Plus for Firefox on Android. It works great! :)

<https://addons.mozilla.org/en-US/android/addon/adblock-plus/>

</comment></comment></comment></comment></comment><comment><USER7> _And if your problem is with JavaScript as a language, you can already use a myriad of languages that reliably compile to it. Do you come from a Java background? You'll probably like Dart, from Google. More of a functional kind of developer? Try ClojureScript, which is an impressive, well-maintained and well-performing implementation of Clojure on top of JavaScript. Coming from Ruby? You'll be almost at home with CoffeeScript. You get the picture._

God no. Instead of having to use a single awful language all the time I get to choose what language to transpile to javascript and I never have to look at or think about javascript at all. Unless of course there are bugs and then you get to experience the pleasure of debugging machine generated javascript. Maybe some people are filled with joy by the thought of debugging generated js, all I can say is that those people are certifiably insane.

How about we work on platforms that support more that one language as first class citizens. Is that really such a crazy idea in 2013?

<comment><USER8> How does this differ from debugging any other VM? Except in Javascript you're almost guaranteed your 'crash' will come as an exception with a stack trace – guaranteeably raised by the only executing single thread that could contribute state to the crash.

Debugging a Java or a C crash is infinitely worse, since instead of comparatively pretty symbols and a verifiably correct trace, you have a vector of bytes where your stack is supposed to be, and any number of threads running third party libs that could have written all over your frame pointers, and instead of semi-structured code you have a few thousand flattened basic blocks, devoid of any type information, absolutely swamped in gotos and boilerplate prologues/epilogues.

I'd much rather debug a JS exception than the subtle mental math required to statically analyse the stack operations of some assembly.

<comment><USER7> >Debugging a Java or a C crash in infinitely worse, since instead of comparatively pretty symbols and a verifiably correct stack trace, you have a vector of bytes where your stack is supposed to be, and any number of threads running third party libs that could have written all over your frame pointers

My experience of crashes in C is that the OS typically provides a decent backtrace including function names, not just a 'vector of bytes'. Your millage may vary, I expect it depends what kind of C you are writing on what platform, if you strip symbols etc. Sure your memory could get totally trashed beyond recognition but that has not been very common in my experience. I'd like to point out that I was not advocating writing C. I've not used Java but I always assumed it gave you decent stack traces.

>instead of semi-structured code you have a few thousand flattened basic blocks, devoid of any type information, absolutely swamped in gotos and boilerplate prologues/epilogues.

I've honestly no idea what you are talking about here. Java code swamped in gotos?

>I for one would much rather debug an exception in JS than the mental math required in statically analysing the stack operations done by a chunk of assembly.

If I'm writing Python I want a Python exception. If I'm writing Ruby I want a Ruby exception. Not an exception from JS code that I did not write. I have no idea what 'mental math' has got to do with this.

<comment><USER8> On many architectures almost any stack overrun will overwrite the frame pointer in C, resulting in a corrupted stack trace.

As mentioned in my second comment, I slightly conflated what C and JVM crashes look like – the comparison was poor.

> I've honestly no idea what you are talking about here. Java code swamped in > gotos?

Yes, the JVM has goto and your favourite compiler probably emits it, it's just not exposed in Java. If we're to compare the similarity of debugging a crash on the JVM to one on the "JSVM", then we cannot discount the complexity of the toolchain producing the target JVM code. If we assume that toolchain is bug free, then we must also assume a similar compiler targeting the JSVM is bug- free. At which point the OP should not discuss trying to debug Javascript – in this scenario it should never be required.

If instead we assume the JVM compiler and the JSVM compiler are not bug-free, then we must account for the debuggability of their languages. In the JVM one works in terms of stack offsets and goto (see [http://en.wikipedia.org/wiki/Java_bytecode_instruction_listi...](http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings) ) while useful constructs like "string key -> Object map" are totally missing (aka. a Javascript object), and all complex expressions are lowered to a long series of basic instructions, all involving stack manipulation.

In contrast a JSVM-targeting compiler can emit human-readable expressions and control structures, has no access to goto or stack manipulation instructions, and short-term architectural choices about how those constructs are further lowered is not baked into the language. Each individual implementation can choose their own approach, and improve on it in the future without requiring recompilation.

The result is that given a bad toolchain (and currently the JS transpilers really are all quite bad, and JS lacks some trivial features like source maps), the JSVM is an inherently more human-friendly debug target with less assumptions about the runtime environment. By now it should be clear that to compare you must discount the short term comparitive maturity of existing JVM compilers – an excellent idea when making long term architecture decisions. Additionally since in JS there are no threads contributing to shared state, code flow is also easier to understand.

[Edit] If we're to discuss anything like supplanting Javascript as the language for the web in the long term, let's not resort to 1980s architectural notions about static, totally inaccessible binary formats. Approaches like PyPy are far more interesting – given a minimally modified existing language, annotate it such that an implementation can build an optimizing interpreter for any language implemented in that existing language. Imagine Javascript being that existing language, and suddenly all the upheaval and backwards compatibility destruction disappears. Your JS-authored language interpreter could still function in old browsers, it'd just execute more slowly.

<comment><USER7> Maybe eventually we will have 'sufficiently smart transpilers' and interactive debuggers for languages that target javascript and don't expose the 'JSVM' but that is not the case at the moment. Mozilla said "And if your problem is with JavaScript as a language, you can already use a myriad of languages that reliably compile to it", i.e. if you don't like javascript you don't need to use javascript. This is what I was responding to, because I don't see it being true in the near future (next several years at least).

<comment><USER9> Have you tried source maps? [http://www.html5rocks.com/en/tutorials/developertools/source...](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/)

<comment><USER7> _Right now source mapping is only working between uncompressed/combined JavaScript to compressed/uncombined JavaScript_

Which was exactly my point. The tools for targeting javascript from other languages are non-existent at the moment, never mind mature enough that I would want to rely on them in production.

As an aside, am I the only person who reads things like this and is filled with a sense of foreboding:

 _The spec mentions cross site script inclusion issues that could arise from the consumption of a source map. To mitigate this it's recommended that you prepend the first line of your source map with ")]}" to deliberately invalidate JavaScript so a syntax error will be thrown._

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is a real question and no trolling:

Why is nobody building a second kind of browser, one which is not based on html and css. A browser which is geared towards app execution and development. A browser which can run apps which can be programmed in a way that is similar to programming Android apps. Where I can for example have a footer without doing some css hacks. DNS and most of our backends could still be reused but the client stuff would have to be written again. Delivering apps and linking between them like the web does is awesome. Building sophisticated apps is not awesome but on Android and iOS it is. Why not take the best of both worlds...now....not in 10 years when some standards might agree on something. Just think about how very important the web is. Everyone is using it. The whole world largely depends on it, but it's increasingly not up to the task. And why do web developers seem to be so satisfied with the state of the technology which drives the web. Oh, you think css is great because you can code a hack for putting a footer on the bottom of the page even when there is no content in the attention area? What? It's so strange.

Why has nobody ever tried to create such a browser?

<comment><USER11> I've thought about this a lot myself.

The language issue ultimately leads you to conclude that we need a browser with a built-in VM, rather than a built-in scripting language. It makes _so_ much more sense, as a clean and elegant solution.

 _"I know! I'll make my own new browser with an embedded VM and newer cleaner APIs, and revolutionize the web! It'll be amazing, allowing native-like performance from the browser. WebGL will finally achieve performance feasible for high quality games, the need for full native apps would be tremendously diminished, etc. etc."_

JVM is a well known example of a cross-platform VM, which tried to enter the browser via Applets. I think Java Applets failed because they were slow, ugly, clunky, and usually looked horrible and disturbed the web experience. Kind of like flash ads, but worse.

Microsoft Silverlight is kind of similar, but using the CLI rather than the JVM. As a plugin, it still wasn't seamless. And it had cross platform compatibility issues (not a fault of the CLI though).

The GUI issue (bloated DOM, hacky HTML/CSS) leads me to conclude that we need a new API stack for rendering GUIs that satisfies both web and application use cases without massively sacrificing memory and performance like the DOM seems to excel at.

But here's the thing:

Creating a new browser with a new VM and new GUI stack, all from scratch, is almost an insane undertaking. Sure, it's one I could almost see myself trying (being a perfectionist ADHD OCD coder) as a hobby, but I know better than that if I want to actually ship anything.

Ideally, I'd like to see some day a kind of "Mono Browser" - a browser that basically runs CLI code "scripts" in an otherwise traditional HTML/CSS stack for backwards compatibility. But the primary feature would be a new GUI stack completely disjoint from HTML/CSS for people who want to create blazingly fast and native-like snappy UIs.

It's fairly critical though to expose this new GUI stack, because otherwise it's just CLI-scripting-in-the-browser. CLI in a regular browser would be great IMO, but not a significant enough change for end-users to upgrade to the browser. Moreover, such a API stack would be extremely useful for cross- platform developers even of native apps. It would essentially compete with web-based cross platform frameworks like PhoneGap, and native ones like QT (though QT IMO is ugly and old fashioned vs web rendering).

So a great deal of work lies ahead in creating this GUI stack. This is something I'm kind of intermittently working on in my spare time. Unfortunately I'm usually kept quite busy on research work towards a PHD, but now and then I make a little progress. But if you know of others working on something similar, feel free to point me in that direction to collaborate.

<comment> ux-app I've also been thinking about the same sorts of things lately.

Mostly I've been thinking about the GUI issue on the web. CSS and the DOM are just not up to the task of creating a responsive app GUI. The incredibly complex set of nested CSS rules that need to be calculated and applied for each reflow is a nightmare.

I personally think the DOM is a fine way to define an app structure. GUIs are after all containers and components which map nicely to nodes in a tree.

CSS is great for presentation (colors, font styles etc). One of its strengths is its simplicity and its cascading nature.

What we need is a sane constraints-based layout model. This is standard fare for native apps (eg: iOS autolayout).

Imagine being able to specify:

      Block_A sits at the top of the window.
      Block_B is anchored to the bottom edge of Block_A.
      Block_C is inside of Block_B and is anchored to the left edge.
      etc..

A complex layout can be defined in a handful of rules which even JS can solve for.

Solvers for these types of optimization problems have been around for 20+ years. There's even a nice one written in JS eg:

      http://www.badros.com/greg/cassowary/js/quaddemo.html

<comment><USER12> I've often wondered about replacing HTML/CSS/JS with QtQuick and QML. Thoughts?

<comment> ux-app I don't have any experience with Qt&QML, though I've heard lots of good things about it.

I don't think a wholesale replacement of HTML/CSS is feasible though. There's just too much inertia behind the incumbents, not to mention that HTML/CSS is very good for the document centric web which applies to 90%+ of the existing web.

More flexible CSS layout modes such as display:flex are quite usable and go some of the way to addressing app-style layouts, however movement on these standards is slow and doesn't go far enough IMO.

</comment></comment></comment></comment></comment><comment><USER13> Some people on this thread are completely missing the point of Firefox OS.

Its about standards and making it work cross-platform with no lock-in about vendors. Last week, I spent some days on a hackathon to promote Firefox OS app development. It was very refreshing and fun.

After developing for iOS and Android, developing for a mobile phone using JS was a very good experience. I enjoy using Javascript. I think Obj-C is great too and I am not fond of Java but this is not about whats your favorite language, its about bringing the freedom of the web to your mobile device.

In couple days, I created a tiny QR Decoder that anyone with a Firefox OS device could browse too and install on their phone. That was great. During the hackathon we shared lots of apps between each other without the need for market approval, vendor saying or whatever. And yet there's the Firefox Marketplace to help discovery and certification for privileged apps.

Firefox Aurora for Android already has open web apps support that allow you to install web apps on your Android device and will hopefully implement all the WebAPI. Once Android and Firefox OS support the WebAPI there will be pressure on the other vendors to implement it as well and then we'll be in a better place than we are now.

</comment><comment><USER14> I'm really excited for Firefox OS, but I'm not sure why. Maybe it's because I have a lot of respect for Mozilla and the high quality of their software. Having a fresh ecosystem is always going to attract developers who haven't bothered with the current platforms due to overcrowding (among other things), even if it never rivals the size of Android/iOS.

</comment><comment><USER15> Some people are not getting the main goal of the Firefox OS: To give emerging markets (cheap) smartphones and keep the web as open as possible. Therefore, HTML/CSS/JS is a damn good combo to keep the web open, and to enable rapid development of apps.

</comment><comment><USER16> Glad to see this coming out - I think the technical chutzpah of FirefoxOS is fantastic, now let's see Mozilla Market it in the same clear vision and spirit.

I mean I simply did not know there was an emulator ([https://hacks.mozilla.org/2012/12/firefox-os- simulator-1-0-i...](https://hacks.mozilla.org/2012/12/firefox-os- simulator-1-0-is-here/)) until this post, and honestly I looked.

Edit: oh and can someone tell me if persona is taking off or not - are there stats from login.persona.org?

<comment><USER17> Hi lifeisstillgood, I am one of the core Persona developers. Persona is a pretty awesome project with very ambitious goals. We obviously want to see growth explode and are working hard to make Persona great for both users and site operators.

Persona's growth has been steady, primarily driven by newly developed sites. We hope that as the user base grows and support for the BrowserID protocol is natively built into the browsers, existing sites will have more of an impetus to offer support.

A version of Persona is already integrated into FirefoxOS and we hope to offer support in desktop Firefox by the end of the year.

If you want to participate in discussions, have an idea on how we can improve, or just want to see what we are up to, our mailing list is open to everyone: <https://groups.google.com/forum/#!forum/mozilla.dev.identity>

<comment><USER16> Thank you - I have just joined the group.

I agree - Persona is an awesome project - and I like anything that is going to take the pain of managing passwords away from me.

I am most interested in python / wsgi integration - if any of your collegues are working on this I will be very happy to contribute.

<comment><USER18> In some downtime at work I threw together a rough proof of concept just to see what it invloves in go[1].. It was crazy simple to get running. I hope people start using it in more places.

[1] <https://gist.github.com/minikomi/4563344>

</comment></comment></comment></comment><comment><USER19> I'm starting to feel like html/js/css is starting to become the 'this will be the year of linux on the desktop' of apps.

They're flexible technologies, but don't think they'll ever have the feel of purpose built native API's.

<comment><USER20> Only just starting? It was pretty apparent after the DHTML craze of the late 1990s fell flat on its face that web apps weren't any threat to native desktop apps. Then the exact same thing happened during the mid 2000s, when AJAX was all the rage. The more recent HTML5/CSS3/JavaScript fad is yet one more revival of the same failed set of ideas.

<comment><USER21> I think those eras had browsers that weren't capable of delivering on the promise.

If you only work with IE9+ (all the other browsers are quite good now) you will be working in a run time environment that is far superior to those available in the DHTML/Ajax era.

Another issue is that very few people know how to do large scale JS applications, where I work we do (130,000K+ lines of code, 900+ classes) but it has taken us several iterations to get to this stage.

I believe we are planning on making our tools open-source so hopefully people will start to see that large scale JS apps are very doable. www.caplin.com if you want to keep an eye on the open sourcing of our tooling.

<comment><USER22> 900+ classes, in Javascript?

<comment><USER21> We have a framework more than a library, we basically ship a framework that our clients use to create their own web trading applications. This framework covers many asset classes and many use cases.

It's not likely that any client would use all of our code and so we have build a tool framework that only pulls in the JS code that your application uses, this is done without a build and is immediately available (add a 'new namespace.sub.Class()' line and hit f5 and it will be in the js bundle you get.)

We bundle js, css, xml, i18n tokens etc.

All automatic and requiring no build.

</comment></comment></comment></comment></comment><comment><USER23> Good article. The main reason for FFOS is not to take over the world but rather disrupt the closed ecosystems that Google, Apple and Microsoft are creating; the same way that Firefox broke Microsofts monopoly on the browser market.

<comment><USER24> Except Android is no more or less closed than Firefox OS. Both open source, allow sideloading and have curated app stores.

<comment><USER23> Android itself isn't, but the ecosystem that they're building is. The market is controlled by Google and the apps will only run on Android phones. Not the OS is important, the ecosystem is. That's why Apple and Google and everyone are trying to keep everyone inside.

<comment><USER24> The Firefox OS app market is controlled by Mozilla and the apps will only run on Firefox OS (for now, at least).

Everyone is free to implement the Android app API, as Blackberry have, just like they are free to implement the Firefox OS phone APIs.

The difference is very small. Firefox is more likely to have portable apps, Android offers a much higher quality API for building apps.

<comment><USER25>
      > The Firefox OS app market is controlled by Mozilla

One clarification here: Mozilla's marketplace code is entirely public (though confusingly named):

<https://github.com/mozilla/zamboni>

Any corporate or individual entity could take this code and set up their own entirely compatible platform.

<comment><USER24> While the Play backend isn't open-source, there are already at least two other competing app stores.

The differences really aren't that big.

</comment></comment></comment></comment></comment></comment><comment><USER26> I still don't understand why Firefox OS will go anywhere when webOS did not. Aren't we talking about basically the same thing? HTML5/JS/CSS? Is it timing, the changed environment that now focuses attention on web apps? Is it the reputation of Mozilla vs that of Palm/HP? I'm not saying web apps won't have a place, I'm just extremely confused about the seeming contradiction or about- face here.

<comment><USER22> Palm/HP didn't exactly make it a huge deal to go to standards bodies, did they? That was my impression. Could be wrong.

<comment><USER26> Yes, perhaps that's it. The mention of standards bodies stood out to me too.

</comment></comment></comment><comment><USER27> I've read the article, I agree with the HTML5/JS premise, but I still do not understand Firefox OS.

</comment><comment><USER28> I can easily see it beating Android/iPhone (or at least competing). I can't wait to get my hands on such a phone and I'll definitely be making apps for it. I think a lot of developers are like myself since 1) it's all JavaScript/HTML5 which is cool and 2) it's by Mozilla and company. Once there are a bunch of apps the people will come, unless the mobile industry decides to make this fail or Firefox OS turns out to be terrible.

Also I think people miss, this isn't just a phone full of webapps, it's about opening up the native functionality of the phone to JavaScript. So operating the camera, accelerometer, contacts list API, etc.

</comment><comment><USER29> Interesting if this is in fact the goal. I would argue you still will have a mix of both. No ubiquitous environment, but Web apps will get first class support on upcoming platforms. At least this seems to be the most logical route. If you've ever used Cordova or "PhoneGap" you would know about the plug in architecture and how it is in fact still the wild west. Developers write native extensions to do things the underlying JS API can't, this won't change for a long time until the Web API does. The future is a mix of both Web and native, not just the Web.

</comment><comment><USER30> I would have liked to have heard a story like this one at FOSDEM. You had a room full of interested IT people/devs/... and missed selling the 'spirit' of fOS. Too bad...

<comment><USER31> <https://fosdem.org/2013/schedule/event/firefox_os/> <https://fosdem.org/2013/interviews/2013-jonas-sicking/> [https://fosdem.org/2013/schedule/event/automating_firefox_os...](https://fosdem.org/2013/schedule/event/automating_firefox_os/)

</comment></comment><comment><USER32> There are plenty of js/html frameworks for mobile. That mission was (and is??) the _promise_ of webOS. So I don't see how you can say "even in the unlikely event that Firefox OS itself disappears in the process, if web-apps become mainstream it will have succeeded" since it's far from a controlled experiment.

Mozilla always seems to have the same answer to "what if we just started from scratch": which is "let's do it". It's endearing I guess.

<comment><USER5> One big difference here is that Firefox OS (just like PhoneGap/Cordova) is aiming at standardizing the APIs, not at just being _another framework_.

That by itself will make the web richer regardless of how FFOS fares on the market.

<comment><USER33> And what makes those "standards" different from "another framework"? A rubber stamp from W3C?

<comment><USER5> Yeah, and usually a compliance test suite. And nowadays browser vendors even seem to be quite active in implementing these things.

See for instance [http://blog.chromium.org/2013/02/hello-firefox-this-is- chrom...](http://blog.chromium.org/2013/02/hello-firefox-this-is-chrome- calling.html) and [https://hacks.mozilla.org/2013/02/hello-chrome-its- firefox-c...](https://hacks.mozilla.org/2013/02/hello-chrome-its-firefox- calling/)

In general, I'm curious about the hatred here on HN towards W3C. Sure, standards often move slowly, but it is still the best way to achieve interoperability.

</comment></comment></comment></comment><comment><USER34> Good...i would be interested to know what kind of hardware support FireFoxOS would be targeted to build on...Just you know before i buy my new mobile...... I am already looking fwd for UbuntuOS which also supports JS as native and Nexus seems to fill their hardware req.

</comment><comment><USER35> In the abstract FireFox OS is appealing.

But the likely realities aren't. It's hard not to assume the ease with which Firefox the browser can be installed by my Mom when thinking about the OS. But doing so is plain wrong.

For most end users it will be as tied to a particular device by the manufacturer as any other mobile OS. And the likelihood that the end user will, as a practical matter, be able to load Firefox OS on their own is low because there is no ISA for mobile and the mobile ecosystem is so mined with patents.

It's not that some people may not be able to hack Firefox OS onto an iPhone - I actually expect it. It's that such hacks will kludged beyond utility for most non-technical people.

<comment><USER36> You're missing the point of Firefox OS. They don't want to make an OS, they want to make the web a good platform for apps.

</comment></comment><comment><USER37> Interesting. I'd love to see Firebooks in the future along with Chromebooks. It would be nice to have two cloud-based operating systems for the desktop out there.

</comment><comment><USER38> "But how is it going to beat Android or iOS?"

I'm more interested in how it stacks against other open source mobile OS's, most importantly Ubuntu, but also open webOS and Tizen.

</comment><comment><USER39> Can FirefoxOS run on top of android or iOS, or is that lower level?

<comment><USER40> The applications can, through Firefox for Android. That means that if you use WebAPIs that access phone internals, it will work just fine.

</comment></comment><comment><USER41> At the end of the day , the only user will care about is the app store and performances. If the apps are great and run fast then people will not care how they are made. That's the only thing we should care about.If FFos doesnt deliver on these levels then it wont work. There is already an os for cheap celphones , android. Cheaper hardware means crappy software.

</comment><comment><USER42> If the stench of doom were any stronger on this project, Id Software would have to sue for trademark infringement.</comment>


JPEG Artifact Removal - <AUTHOR> https://github.com/ilyakurdyukov/jpeg-quantsmooth <comment><USER2> This looks like it could be pretty nifty for some niche use cases. Cool find!</comment>


Sun Microsystems business plan (1982) [pdf] - <AUTHOR> https://www.khoslaventures.com/wp-content/uploads/SunMicrosystem_bus_plan.pdf <comment><USER2> Sun being absorbed and then practically dismantled by Oracle has been extremely painful to witness. Such legacy didn't deserve to end up in the hands of the greediest and most unpleasant company in the whole IT industry, but I guess they just followed the money.

</comment><comment><USER3> Wow, that was an expensive mouse!

I remember working on a Sun Sparc 4 (I think, about 1996) with an optical mouse that would only work on a special mat, and wondering what was the point? Glad to see they solved that particular problem.

</comment><comment><USER4> Amazing company, right up there with Borland and I don't know how many others.</comment>


UI lit by the lights in your room – Bob Burrough - <AUTHOR> https://www.youtube.com/watch?v=TIUMgiQ7rQ <comment><USER2> Tl;dw He's using a front fished-eyed camera to build a scene texture to apply to UI elements based on the lighting in the room.

Comment: cool demo but hm wouldn't this murder the battery?</comment>