Mozilla working on in-page popup blocker for Firefox - <AUTHOR> https://www.androidpolice.com/2018/03/12/mozilla-working-page-popup-blocker-firefox/ <comment><USER2> Maybe some webmaster education to teach people that popping up a dialog begging for Facebook follows or email addresses is generally considered a hardcore dick move? Seriously, who decides to employ those dialogs? A newsletter signup is best embedded in the page itself, as is any social follow ads. To shove them in my face is always rude, and usually means not only am I not going to sign up for your newsletter, but I'm to close out of your page altogether. You lose, go home [and fix your jerky web design].

<comment><USER3> > Maybe some webmaster education to teach people that popping up a dialog > begging for Facebook follows or email addresses is generally considered a > hardcore dick move?

That doesn't work. Before Bayesian filtering and Gmail, 90% of my mail was spam. The people who did it knew that it was wrong, they just didn't care. $$$ > almost anything.

<comment><USER4> Imho the difference is that spam emails are a captive audience; keep sending them, eventually you get a hit. And you can send new ones to the same person repeatedly.

But irritating popups will ensure many will never come back - you've forever lost your opportunity to even attempt to sell me something. Seems so illogical

<comment><USER3> You're assuming that regular people care that much about them. When you have users with an Internet Explorer not that far from this one: [https://i.stack.imgur.com/82hWm.jpg](https://i.stack.imgur.com/82hWm.jpg), do you really think that several popups phase the regular users? :)

<comment><USER5> Internet explorer with a million toolbars seems to have been replaced with the much cleaner tablet-as-a-Facebook-machine and a million freemium apps.

<comment><USER6> "Steve needs your help in farmville!"

</comment></comment></comment></comment></comment></comment><comment><USER7> I just have a bookmarklet to kill all "fixed" position divs.

I'm clicking it more and more these days - even those damn fixed navs that take up a stupid percentage of the screen give me the shits.

If clicking the bookmarklet doesn't get rid of your stupid modal newsletter sign up or annoying sticky nav, I'm just closing the tab.

Here's the bookmarklet btw:

javascript:(function()%7B(function () %7Bvar i%2C elements %3D document.querySelectorAll('body *')%3Bfor (i %3D 0%3B i < elements.length%3B i%2B%2B) %7Bif (getComputedStyle(elements%5Bi%5D).position %3D%3D%3D 'fixed') %7Belements%5Bi%5D.parentNode.removeChild(elements%5Bi%5D)%3B%7D%7D%7D)()%7D)()

<comment><USER8> You may also be interested in my filterlist[1] project for uBlock Origin which attempts to do this via CSS style overrides for many, many sites.

[1] [https://github.com/yourduskquibbles/webannoyances](https://github.com/yourduskquibbles/webannoyances)

<comment><USER7> holy shit dude.

if this is as awesome as it looks, i'm actually excited.

thank you.

<comment><USER8> No problem, I hope it works out for you! Feel free to spread the word to others as well as provide sites that are causing issues for you so I can add fixes to the list.

<comment><USER9> Probably olark and other chat bot crap can be added too. They are mostly used these days for pushy sales people to hook casual browsers.

</comment></comment></comment></comment></comment><comment><USER10> It is sad that one of the most powerful CSS features ha been abused to the point where it is now going to be blocked in finicky ways. Modal boxes are quite useful in apps. And they are great for notifications.

But they are annoying when they block everything and prevent you from doing anything further. (I'm looking at you WaPo). I used the clearly extension to bypass things like this. And if that did not work I would go into Dev tools and delete things.

I guess a machine learning approach might be a good approach. But would it learn from all of the benign use cases when people are only reporting negative stuff?

<comment><USER11> Modal boxes are generally a bad user experience in every case. I'm not going to advocate for blocking them entirely, but certainly I think web developers are over-using them in general (beyond just the intentionally annoying ones Mozilla is hoping to block), and its funny because desktop developers have mostly _finally_ stopped using modals on Windows and Linux. (macOS feels quirky and outdated here now by somewhat recently doubling down on modals for things that don't need to be and probably aren't modal.)

Even for things like confirmations: a user might likely still want to see (and maybe interact with) the thing they are confirming. For instance, if confirming to delete an object, it's still helpful to be able to scroll to see the entirety of the object to double/triple check that it is indeed the object you plan to delete. A overlaying modal always interrupts the user's focus and often gets in the way of otherwise useful information or actions before confirming.

<comment><USER12> > A overlaying modal always interrupts the user's focus and often gets in the > way of otherwise useful information or actions before confirming.

But an overlaying action-bar with a "confirm" button that otherwise allows you to scroll before you delete would be a great middleground.

But how can a browser tell the difference?

<comment><USER11> In this specific case of what Mozilla is trying to achieve, they are researching the topic and looking for help. Mozilla doesn't sound like they want to ban all overlays, just the obnoxious ones.

When I think "action bars", I tend to think of banners that expand into a flexbox row or rows of my choosing and I don't overlay anything. If it is meant to hide a part of the UI, it's better to hide or replace that UI explicitly rather than cover it up graphically in an overlay.

Another reason to explicitly hide/replace UI instead of covering it graphically is because that doesn't stop someone from interacting with that covered UI, it just makes it more irritating to do so. I'm not just talking about Dev Tools and similar "cheat" options, but not every user is necessarily interacting with your site or application with sight/graphically. An overlay doesn't stop a screen reader, for instance. (A lot of the modal popups that Mozilla is hoping to block are entirely ignored by a browser's "Reader Mode", which is sometimes my first attempt when I see one.)

</comment></comment></comment></comment><comment><USER13> I'm torn on this. On one hand, yes, these modals are some of the most annoying parts of the web and are really ruining the experience on lots of pages. But on the other hand, why should Mozilla (or any browser) get to start fiddling with the content of web pages? If Comcast announced they were doing this, HN would be up in arms about how they were modifying traffic. I'm aware of the browser vs service provider difference, but the end result is the same. Suppose Google decided that it doesn't like websites with bad color schemes so it's going to have Chrome automatically update some websites to use their material design style? Suppose Microsoft decides that websites with small font aren't friendly enough to people with vision problems so they start upsizing all font below size ten in IE? The point is - the browser should render what it's given. If the user wants to modify that, use a plugin.

<comment><USER14> There's a reason that the more generic name for a browser is _user agent_. That is, they are agents serving at the behest of the user, not the server.

> Suppose Microsoft decides that websites with small font aren't friendly > enough to people with vision problems so they start upsizing all font below > size ten in IE?

This is somewhat humorous for me, because one of the first things I do to my Firefox installs is lock the font and set a minimum font size that I can read. The most broken sites by far are internal ones at my company, where no one has given a damn about usability or ADA. Most public sites handle it just fine.

<comment><USER15> Ironically, the MDN (Mozilla Developer Network) description of minimum contrast¹ fails the test it describes: in §1.4.3, the link is #3F87A6 on #F4F7F8 (3.7:1) at 16px. (And the unicorn vomit in MDN's code samples is even worse, sometimes below 3:1.)

¹ [https://developer.mozilla.org/en- US/docs/Web/Accessibility/U...](https://developer.mozilla.org/en- US/docs/Web/Accessibility/Understanding_WCAG/Perceivable#Guideline_1.4_Make_it_easier_for_users_to_see_and_hear_content_including_separating_foreground_from_background)

<comment><USER16> MDN no longer stands for "Mozilla Developer Network", it's now "MDN: Web Docs" [https://blog.mozilla.org/opendesign/future-mdn-focus-web- doc...](https://blog.mozilla.org/opendesign/future-mdn-focus-web-docs/)

</comment></comment></comment></comment><comment><USER17> The most annoying ones for me are the ones that trigger when your cursor leaves the tab. TheHackerNews.com (unrelated to HN) does this constantly. Would it be too drastic to just disallow mousemove events? I see no good use for them outside of needless analytics and bugging users when they try to leave your site.

<comment><USER18> Especially if a button isn't pressed. Allow mousemove between mousedown and mouseup.

<comment><USER19> But what about web games that want to track your mouse cursor? Maybe the browser could restrict mousemove events to handlers on page elements that the user has clicked on? But then web developers would probably add an event handler on the page itself and receive all mousemove events again.

</comment></comment></comment><comment><USER20> Firefox extension: [https://addons.mozilla.org/en-US/firefox/addon/in-page- pop-u...](https://addons.mozilla.org/en-US/firefox/addon/in-page-pop-up- reporter/)

Chrome extension: [https://chrome.google.com/webstore/detail/in-page-pop-up- rep...](https://chrome.google.com/webstore/detail/in-page-pop-up- reporter/dkpphegmeomaffjanagefmejpeebfcmh)

(both for _reporting_ such pop-ups - the blocking hasn't been implemented yet.)

</comment><comment><USER21> >Mozilla wants to make Firefox automatically detect and dismiss the popups.

That would be quite amazing, some newspaper outlets have that annoying inpage popup that nags me on disabling adblocker.

And if you dismiss it, it shows up every 5 seconds. And that's not even exaggerated. It was legit 5 seconds.

<comment><USER22> I hope they're careful with that. Modals could contain legally required waivers such as for upcoming GDPR etc.

Edit: what endymi0n said in another subthread

<comment><USER23> I think those legally required waivers shouldn't be displayed as a modal but as a landing page of sorts - a modal implies that underneath, the page itself, including ads and trackers etc are already loaded. A proper cookie warning thing should not be able to set any cookies or whatsoever before the user has agreed to it. Of course, a properly designed website will grant access to its content regardless of the user accepting or rejecting the cookie thing.

Second, if a user installs a plugin that automatically hides or rejects cookie warnings / gdpr stuff, that's their own fault then.

</comment></comment></comment><comment><USER24> I have had this extension installed for about a day and already reported numerous in page pop ups. Not only does it feel good to help a blocking effort, it's also a good vent for the anger caused by these things.

There will be a few fairly simple ways to block these - probably some libraries or pieces of code reused by almost all websites employing these UX- crimes. As mentioned before, maybe the solution is to just block mousemove events.

</comment><comment><USER25> How about just make a time machine and stop the Netscape from creating JS. I think it was a mistake adding a client side language to the web standards.

<comment><USER26> Then we'd have the web relying on VBScript. If you stop Microsoft from doing that, well… the market was still changing quickly enough some other browser might've done it and got traction.

<comment><USER27> Microsoft would have eventually yanked VBScript, and we'd be coding in C# for the browser now...

<comment><USER23> You know, I think that wouldn't even be such a bad idea. It's got types and it's reasonably static, meaning it can be optimized a lot more than JS can - in fact, Dart was created in part because its more Java / C#-like structure could be run in a much more optimized fashion than Javascript could. And it was invented (iirc) by the guy who made V8, so if anyone knows anything about the limitations of JS's run speed, it was him.

</comment></comment></comment></comment><comment><USER28> I think we need blacklists. When I access a URL, the browser should check if it is present in the blacklist. If present, compare the reason of the blacklist (for example adblock avoidance system) and check the associated action specified by the user (for example, block the site or ask for a confirmation). Users would be able to choose the blacklist he prefers and to report missing sites.

<comment><USER29> I want them filtered out of Google search results. Sick of going to them by accident.

<comment><USER30> I would do that for Google Groups, the UI is so shitty I would like to ban it automatically from all search results.

<comment><USER31> Have you tried the Personal Blocklist extension? [https://chrome.google.com/webstore/detail/personal- blocklist...](https://chrome.google.com/webstore/detail/personal-blocklist-by- goo/nolijncfnkgaikbjbdaogikpmpbdcdef)

</comment></comment></comment></comment><comment><USER32> I'm really curious how this will play along with GDPR, which will pretty much absolutely need forced modals in order to to legally capture tracking consent. It could also create interesting legal constellations: How do you prove you asked for user consent when your client side code was blocked or modified?

<comment><USER33> I don't think GDPR is going to be easily dismissed with modals asking for permissions like cookie notifications were. Someone correct me if I'm wrong, but if the user doesn't give consent (whether explicitly, or via a browser blocking a modal) then unless that information was critical to the application function then you __have __to provide the service anyway without downgrading the functionality.

Its all explicit opt-in/implicit opt-out instead of implicit opt-in/explicit opt-out. There are no consequences for the user if they opt-out, and it is extra-territorial in its enforcement meaning it impacts any businesses in any region handling European citizen data. GDPR seems to mean business from a regulatory standpoint.

<comment><USER34> This is correct except for the cases where a company can show "legitimate interest" in which case it is in fact an opt-out rather than an opt-in [1].

And yeah, I agree - they mean business

[1] [https://www.gdpreu.org/the-regulation/key- concepts/legitimat...](https://www.gdpreu.org/the-regulation/key- concepts/legitimate-interest/)

</comment></comment></comment><comment><USER35> Shitty sites like Reddit hide the scrollbar until you manually click the button that makes the popup disappear, so automatically hiding the popups is going to break them.

I like it.

</comment><comment><USER36> Is this about actual popups, new windows with their own browser chrome, or about modals? The graphics in the article reflect modals.

If Mozilla really wanted to block actual popups could do so directly by directly removing the userland functionality spawns a new browser window.

<comment><USER37> Actual popups not spawned from user interaction have been blocked for like the past 10 years though

<comment><USER36> When I worked at Travelocity we would find ways to prove this wrong as necessary to create those hated popunders. Expedia still uses these.

</comment></comment></comment><comment><USER38> I wish the browser could present a huge screen (2000px high or bigger) to the webpage and render it. After that I would love to scroll this viewport without the page even knowing about it.

This would resolve all problems with position fixed and also block the page from showing real modals once scrolling starts.

</comment><comment><USER39> Float-overs and ridiculous full-width bars are some of the most annoying "innovations" that have appeared in recent years. But I don't see why browsers have to do anything - the publishers clearly like the way their pages work and consider it worthwhile.

Blocking things like this is different from blocking third-party advertising in my mind. I should be able to stop my browser from contacting a third-party site.

If the author of a page wants to see a float-over then so be it. I can choose to close the tab and not come back.

</comment><comment><USER40> Detecting popups like this automatically seems like it will be more of a cat & mouse game with developers trying to find ways around it and then a bunch of legitimate use cases being blocked out.

And Firefox still hasn't fixed their issues with native popups: [http://fan- pages.herokuapp.com](http://fan-pages.herokuapp.com) (WARNING: if you use FF it may crash your browser)

<comment><USER41> It would have been helpful to give a warning that simply going to that site would crash my browser.

<comment><USER40> Sorry, I didn't think it was that effective anymore. Updated.

btw Chrome seems to have some kind of protection against that dialog DoS. From what I've been told Firefox actually downloads the content in the background before you ever approve the dialogs (which is probably great if someone isn't popping an infinite number of them).

</comment></comment></comment><comment><USER42> How is this possible? Real popups windows were mostly blocked by only allowing them in user event handlers (sketchy sites like bittorrent trackers can still create popup windows because you have to click on the site at some point).

But an in-page popup window can be created in loads of different ways. I can't see a general heuristic you could apply to detect them.

<comment><USER23> That's why (if you read the article) there's a browser add-on now which allows you to report pop-ups, so that the creator can use that input as a blacklist. Popular sites' popups should be easily blocked that way. Crowdsourcing the patterns, so to speak.

</comment></comment><comment><USER9> Worst offenders are iZooto guys peddling their crappy web notifications fixed position dialog all over the Indian news sites. Solves no purpose other than steal good amount of space on the screen. Waiting for either their junk product to die or Mozilla to release this blocker soon.

</comment><comment><USER43> Makes me think of what you often hear that browsers are the new operating systems. They definitely are, even in the worst vices: here we go, we also need the antivirus now.

I think it is about time we rethink the whole web to the foundations. In the meantime we can install Lynx.

</comment><comment><USER44> This will be great coupled with Firefox's ability to turn off "get spam right in your browser" (aka site notification) prompts.

</comment><comment><USER12> Hopefully it will allow user triggered overlays.

</comment><comment><USER45> It's sad that this is needed.

</comment><comment><USER46> On a side note my ublock origin went into overdrive on androidpolice. How many trackers does a man need FFS?!

<comment><USER47> I count 38 uBlocks and 13 Badgers. Yay.

<comment><USER48> I count 2 from uBlock. But then again, I have JavaScript disabled on all domains by default; I just whitelist the ones I care about.

Life is infinitely better now.</comment></comment></comment>


news.myspace.com - <AUTHOR> http://news.myspace.com/ <comment><AUTHOR> What appalling design. Looks like something off GM's intranet.

<comment><USER2> If MySpace has proved any point, it is that "Design doesnt counts".

You seem surprised as if MySpace was rivaling Apple in its design concepts

<comment><AUTHOR> Myspace hasn't proved that design doesn't count. It proved that you can make something really popular by letting people with bad taste express it. Though that of course is nothing new.

The difference is that news.myspace is designed by Myspace, not its users. Standards are higher then. People may be amused by their own farts, but they're generally disgusted by other people's.

iPods would not be so popular with Myspace users if they looked like they'd been designed _by_ Myspace users.

</comment></comment></comment><comment><USER3> Finally! Digg for even stupider people!

</comment><comment><USER4> Excuse me? MySpace puts up a news aggregator and the top story is "Fishing for Fellatio"?

I guess I shouldn't be surprised.

</comment><comment><USER5> <http://news.myspace.com/business/entrepreneurship>

It will be interesting to watch this site and see how "good" the aggregator is at finding quality content compared to the aggregation of the news.yc readers.

</comment><comment><USER6> I think people that started newroo <http://www.techcrunch.com/2006/02/03/newroos-real-time-news-aggregator/> are responsible of myspace news

<comment><USER2> Yes there is no doubt about it, but it took them almost an year to launch it, which is quiet a long time

</comment></comment><comment><USER7> The layout for individual pieces breaks in Firefox and IE. When is Facebook launching their news site?</comment>


Moral Machine - <AUTHOR> http://moralmachine.mit.edu/ <comment><USER2> Imagine an autonomous car, driving at 60+ mph at a two-lane road (1) which is blocked on both sides and (2) has a pedestrian crossing. (Not sure about 60 mph, but I guess you need to be that fast to reliably (hah!) kill passengers on impact.)

We can assume its camera is broken, because it failed to reduce speed (or at least blare the horn) upon seeing a giant concrete block in its path. (Okay, maybe the concrete block fell from the sky when a crane operator failed to secure the load, so the car might have had no time.) And of course the brake is broken. Miraculously, the steering wheel is working, but it's out of question to skid on the side blocks for some reason. Maybe it's actually precipice on either side. (Imagine that: a 60+mph two-lane road, precipices on both sides, with a pedestrian crossing appearing out of nowhere.)

Oh, by the way, within 0.5 seconds of seeing the people (remember: the car couldn't see these people until the last moment, otherwise it would have done something!), the car has instant access to their age, sex, profession, and criminal history. The car is made by Google, after all. (Sorry, bad joke.)

Q: What is the minimum number of engineering fuckups that should happen to realize this scenario?

This is to morality what confiscating baby formula at airport is to national security.

<comment><USER3> I couldn't "play" the game for these very reasons. There's no way the player could have all this information.

It's a game of "would you rather" pretending to be about self-driving cars.

The second question which required a choice between killing homeless people and wealthier ones made me too disgusted to continue.

<comment><USER4> > The second question which required a choice between killing homeless people > and wealthier ones made me too disgusted to continue.

I actually didn't give a fuck who the people were, or how many.

I was surprised when by the end I was shown the results including demographics.

<comment><USER5> There are too few questions for it to know _why_ you made a decision. It thought I was trying to save fat people, when actually, I think the car should avoid swerving when all other things are equal.

It does explain this at the beginning - if they asked 500 questions, while they might get more detail per person, their data would be skewed to the opinions of those who would sit and answer 500 questions.

</comment></comment></comment></comment><comment><USER6> Here's the heuristic I'm least uncomfortable with:

\- avoid collisions with things or people if at all possible

\- if collisions are unavoidable, choose whatever option won't harm anyone

\- if harm is unavoidable, select the option that harms whoever is created the unsafe situation by doing something they shouldn't have

\- if harm to law-abiding normally-behaving person is unavoidable and a critical safety feature of the vehicle has failed due to lack of maintenance, prefer harm to whoever is responsible for vehicle maintenance

\- if situation is unrelated to vehicle maintenance or harm to some other party is unavoidable, choose the option that maximizes likelihood of people getting out of the way, minimizes impact speed, and isn't overly surprising (i.e. prefer to stay in the same lane if possible), honk the horn, and hope for the best

So, if someone runs into the street suddenly in front of oncoming traffic, the car should not choose an option that harms someone else due to that person's poor choice. Similarly, if someone neglects the maintenance of their car, they should bear the responsibility for it. (Ideally, a "car no longer responsible for protecting your life" light would come on or the vehicle would refuse to start if regular maintenance is overdue.)

<comment><USER7> If lack of maintenance is creating an identifiable unsafe situation, the automated system should refuse to operate the vehicle at full capacity.

(all the potential objections to that policy are answered by pointing out that the operator of the vehicle has a responsibility to other occupants of the road.)

<comment><USER8> What if (full) use of the car is required? Sometimes things break (or rather, a threshold is crossed), but it won't become known to the car and thus the owner until the car is needed. A wife entering labor, for example.

<comment><USER7> If someone needs high availability, they should adjust their maintenance intervals as appropriate to ensure it. If something literally breaks during the trip, call an ambulance.

That the above is more complicated than ignoring the trade off created by lax maintenance shouldn't become a problem for the pedestrians along their route to the hospital.

</comment></comment></comment></comment><comment><USER9> I ignored any "social value", gender or age concerns in answering. It thinks I had a preference to save the elderly but otherwise ended up precisely on the center-line in most issues.

My rules however were simple: Avoid swerving, kill the people in the car over people outside all other things considered. If pedestrians are running the light they get less sympathy but I'm not going to swerve to hit them.

Forget the pets, why would anyone want to save them? Apparently some people did.

Also: How does a car know if someone is a "criminal" anyway and what does that mean? Does that mean a released felon would be "picked" to be run over if it face-detected them against a database of known persons? Criminals don't run around in stripes with bags of loot!

<comment><USER10> I followed exactly the same line of reasoning except that I did swerve to save people crossing on a green light at the expense of people on a red light. The reasoning being something like: "The passenger of the car should absorb the risk of a car failure, not pedestrians. In the case pedestrians must die, protect those who follow the rules if possible."

Incidentally my answers meant I always killed women instead of men...

<comment><USER9> I wonder if the test is adaptive, did it hone-in to differentiate preferences or present the same scenario set to everyone?

It felt like it was honing in on my preference at the end, but I'm not sure.

</comment></comment></comment><comment><USER11> Fun test to take, but seriously hope they're not drawing any conclusions from the mix of people I "preferred" to save or kill. I didn't consider the age, criminality, or gender of any of the pedestrians or occupants I killed or saved. I just erred toward non-intervention, unless the intervention choice saved bystanders at the expense of occupants. When the potential casualties were animals, they all died.

<comment><USER12> I followed a similar algorithm, considering all lives equal. Injury versus death: prevent death. Uncertainty versus death: prevent certain death, and assume passengers are more likely to survive an accident because they're better protected. Certain pedestrian death versus certain pedestrian death: prefer non-intervention over intervention. _Certain_ passenger death versus _certain_ pedestrian death: protect the passengers.

Justification for that last one: self-driving cars will be far safer than a human driver, such that it'll save many lives to get more people using self- driving cars sooner. Self-driving cars _not_ prioritizing their passengers will rightfully be considered defective by potential passengers, and many such passengers will refuse to use such a vehicle, choosing to continue using human-driven cars. Thus, a self-driving car choosing _not_ to prioritize its passengers will delay the adoption of self-driving cars, and result in more deaths and injuries overall.

<comment><USER13> "Certain passenger death versus certain pedestrian death: protect the passengers."

Pondering that question made me imagine some bad Sci-Fi future where self- driving cars end up being dangerous killer-robots for anybody but the passengers.

If pedestrians have to fear these things, because they are programmed in a "Protect the pilot above all else!" way, it might hamper adoption just as badly.

</comment></comment></comment><comment><USER14> Many of these are what we call "false choices" of the sort that typically arise in hypothetical utilitarian dilemma used in rhetoric and debate. Humans are creative enough to see alternative options that obviate the dilemma, at least to some extent. See Michael Sandel on moral dilemma.

Edit: FYI, Sandel's complete course "Justice" is on Youtube.[1]

[1][https://www.youtube.com/watch?v=kBdfcR-8hEY](https://www.youtube.com/watch?v=kBdfcR-8hEY)

</comment><comment><USER12> This seems drastically oversimplified. For instance, all of the scenarios depicting a crash into a concrete barrier assume the death of everyone in the car, but generally a car has far more protection for its passengers (airbags, seatbelts, crumple zones, etc), than pedestrians have from being struck by a vehicle.

<comment><USER15> For the first barrier question, I choose to "hit the pedestrians".

The probability of hitting the wall if you drive at it is 1. The probability of hitting the pedestrians isn't necessarily 1, since they can react to you. Probably not very well, but perhaps they can jump out of the way or behind the barrier or something.

Also, can this car not also HONK LOUDLY when it makes the decision to drive towards the pedestrians? This would further lower the risk that the pedestrians will actually get hit.

<comment><USER16> Exactly what I came here to say. Activate the horns/car alarm, switch off the engine/disconnect the clutch, avoid obstacles if possible but otherwise go in a straight line, below some speed threshold hitting a solid obstacle is acceptable. Done.

</comment></comment></comment><comment><USER17> If the car has the ability to make these kinds of distinctions in such a simple scenario, surely there are more options than two. "Moral?" It smells like eugenics to me: some bizarre, Ivy League technocratic posthumanism. Somehow the value of a life is determined by age, sex and profession? Says who? The people who are programming dataset via https? This is collapsing nuanced spiritual and ethical intuition onto an extremely narrow, low dimensional set of parameters.

What's the premise? This triggers in me an imagination of naive, optimistic, well-adjusted Germans in the 1930s. I know this was probably created with good intentions, but the premise does not match the research question. The premise is "morality". Yet its asking me to rank the value of human life based on presumptuous, superficial categories.

Is "the moral machine" going to also decide which births have more utility? Which countries to send aide to? Who should have access to educational opportunities or quality food? Based on low dimensional datasets such as this one?

<comment><USER12> Agreed. This has too many axes of differences, and doesn't have sufficiently careful control and consistency to determine which of them are being consistently ignored.

It looks like they were _trying_ to see if people place differing amounts of value on different human lives, but in the process of doing so, they made ridiculously strange value judgments. "Athlete"? "Executive"? "Large"? Why should any of those _matter_? We're talking about _human lives_.

<comment><USER18> I think part of their intent was to show biases in judgement. The small sample size really hindered this though. Apparently I 100% preferred old people to young people, even though I didn't consider age in my decisions at all.

They do have a little disclaimer on the results screen about the sample size though.

<comment><USER17> The bias is generated by the lack of real choice in responses. They are offering an unrepresentative range of choices, then going and telling you that your choices are biased. They're not showing existing bias, they're coercing it out of participants.

This thing irritated me so bad that I couldn't bring myself to answer a single question. I can't stand the idea that my this study is actually happening. If the results are published and receive non-critical media attention, I'm gonna be irate.

<comment><USER19> But then you'd need to answer 100 or more test questions instead of 13. This is necessarily simplistic given how much involvement they can ask of participants.

Also, I don't think they're implying anything nefarious about the resulting biases shown in the final results. For sure a lot of it has to do with the small sample size of the questions. I didn't run the tests twice, but I imagine there is some randomness involved in the way they are generated.

If there are any heuristics at play, the results will indeed show them (in my case there were enough tests to recover the fact that I preferred saving passengers, preferred non-intervention, and preferred saving humans over pets). But it will also come up with some gibberish/noise due to the small sample size.

<comment><USER12> > But then you'd need to answer 100 or more test questions instead of 13.

Or they could design questions designed to more definitively separate different hypotheses in fewer questions.

</comment></comment></comment></comment></comment></comment><comment><USER20> Rule one, save all your passengers. Nobody would buy a car that has the death of its passengers as an acceptable scenario and Jeff from marketing will be on my ass otherwise.

Rule two. Kill the least amount of people outside of the car. Done.

I know this is a thought experiment but this is completely missing the point of self driving cars IMO. Sure a human can be more moral than a car, but all it takes is being distracted for a second and you killed all the babies on the pavement.

<comment><USER4> Close enough...

Rule Two:

Intervene only if it doesn't mean killing a person who otherwise would not die.

Done.

<comment><USER20> How is that for a thought experiment? Say I build a self-driving car, that when faced with such cases does the equivalent of "Jesus take the wheel". This is well known by the owner of the car.

In case of injury or death, who should go on trial?

<comment><USER21> Ooooh... I like that! There's bound to be a large body of case law on it. This argument (a) suggests that the person(s) constructing and/or maintaining a machine are culpable

a. [https://books.google.ca/books?id=p1BMAQAAMAAJ&pg=PA175#v=one...](https://books.google.ca/books?id=p1BMAQAAMAAJ&pg=PA175#v=onepage&q&f=false)

</comment></comment></comment></comment><comment><USER22> I played this without my glasses on, only putting them on after the "results" came up - I didn't even realise there was genders and classes involved, I though it was just adults, kids and animals.

Holy fuck this has nothing to do with machine intelligence, seems more like it exists to push or reinforce someone's social agenda.

</comment><comment><USER23> I now drive for a living. I took the test based on our training (and reinforcement).

1\. "Hit the deer, do not swerve." is one rule.

2 Save your own life: only priority.

3.if you can not avoid an accident, hit a stationary object, Not a moving one.

Hit the barrier instead of people.

Don't swerve for dogs.

</comment><comment><USER24> In a market setting, people will buy the car that prefers killing others to killing its occupant I feel. This matches what human drivers instinctively do in the situation as well. Maybe there will be regulations in place mandating which decisions to make in scenarios like this, but otherwise I think the 'save yourself' option is the most likely outcome.

<comment><USER25> In a market setting, once a car has sufficient sensing capability that it is possible to even write down an algorithm in code, there will probably be very little choice for the manufacturer to make once this goes through the legal dept/the courts/the insurers. If I were an automaker, I'd probably avoid the choice altogether and just stop the car. If the brakes failed, activate emergency brakes, or devise a new kind of emergency stop system; we can imagine extreme measures like jettisoning the wheels.

<comment><USER26> (and you know, blaring the horn at pedestrians, etc)

</comment></comment></comment><comment><USER27> It would be pretty creepy if my self driving car could know that the people in our path have a criminal past

<comment><USER28> It could happen though; with enough cams & facial recog as we already have on the streets in a lot of places and which is , the car 'only' needs to tap into it.

<comment><USER6> Even more creepy would be a national database of citizen value (determined by some unaccountable entity) that devices such as autonomous vehicles are required to query the moment they realize they're about to kill someone, and choose whatever option minimizes the combined citizen value of impacted lives.

</comment></comment></comment><comment><USER29> No one would ever buy a self-driving car that kills its buyer.

<comment><USER30> People buy cars all the time, now, that kill their drivers.

<comment><USER12> The drivers typically feel they have control and agency in their driving, though.

<comment><USER31> Couldn't that be simulated to fool people into thinking the same thing about autonomous vehicles?

<comment><USER32> It should be enough to show people that autonomous cars get into significantly fewer accidents. It's quite contrary to fooling them with agency, but it does support the safety-seeking choice of an autonomous vehicle over a manual one.

</comment></comment></comment></comment></comment><comment><USER33> [https://en.m.wikipedia.org/wiki/Law_of_triviality](https://en.m.wikipedia.org/wiki/Law_of_triviality)

People building autonomous cars don't actually care. Stay on the road, if unavoidable obstacle detected, break.

Someone rebranded the trolley "problem". This has nothing to do with real engineering.

<comment><USER34> This is _supposed_ to be a variant of the trolley problem.

<comment><USER35> The point is that the theoretical problem, interesting as it may be, doesn't matter that much in practice.

The marginal utility you could get by fine-tuning the trade off is low.

It's another type of bike-shedding essentially.

</comment></comment></comment><comment><USER36> Other things being equal (total number of deaths, age/health/profession ignored), I chose for the people in the car to die because "sudden brake loss" indicates that the people in the car are likely not taking care of their car.

This is assuming the status quo of people mostly owning their own car. Ridesharing wasn't mentioned anywhere.

</comment><comment><USER37> The results page would be much improved if instead of presenting a single point in each scale labelled "You" it gave an indication of how much uncertainty there is in its measurements (answer: a whole lot).

It also seems to conflate some things that, in my brain at least, aren't at all the same. E.g., it looks as if it combines "prefer to kill criminals rather than non-criminals" and "prefer to kill people who are crossing where the light is red over people who have legal right of way", which are quite different. And it lumps a bunch of things together under "social value preference", which I suspect makes assumptions about how users view "executives" that may not be reliable in every case.

I find it interesting how many of the comments here take it that the goal is to _promote_ the idea that (e.g.) athletes matter more than fat people, or that rich people matter more than poor people. Rather, the point seems to be to investigate what preferences people actually express. Any single person's preferences are measured incredibly unreliably, as many people have remarked on in their own cases. But in the aggregate I think they're getting some useful information.

</comment><comment><USER38> This is quite tricky. You can kill people in order to save your life, but in my opinion, it would haunt me for all my life and I would suffer psychologically from that. I think if you accept to drive a self-driving car, you assume all the risk it can cause to you. If such a moral system would exist, I must have the choice to configure it. Because morale, I think, is cultural. There is no correct answer.

</comment><comment><USER39> This reminds me of a story by Peter Watts, Collateral, where some medical enhancements cause a soldier to get VERY good at trolley problems.

[http://www.lightspeedmagazine.com/fiction/collateral/](http://www.lightspeedmagazine.com/fiction/collateral/)

It definitely helped me out in quickly choosing the "right" option.

</comment><comment><USER40> Did MIT just asked the Internet to weigh in Morally on situations? god.. I hope that 4chan, youtube commenters, or other generic anonymous troll never reaches this webpage..

GOD, MIT, add a Facebook sign in or something that doesn't make it anonymous please... thanks! (if it's not already there [I didn't get to the end])

</comment><comment><USER41> This was a very neat exercise. There were, however, some situations, where I felt that it does not matter which decision the car makes. In those situations, my moral compass had no clear direction. I decided to go with less intervention in those scenarios. Unfortunately, it happened to result in the death of more women and fat people, which was not the intention.

I think that in reality, when implementing such systems, there should be an option to insert a measure of randomness. Perhaps in certain situations there is no clear "better" outcome, taking into consideration data from simulations such as this. In that case, forcing an engineer to make a clear decision causes undue burden. It should be possible to say: flip a coin. In other situations, the amount of randomness could be less than 100%, to reflect the variance in society's mores and values.

</comment><comment><USER42> I found my results a bit awkward, as the situations are not independent.

My heuristic was:

      - Kill the animals
      - Kill people crossing a red signal
      - Kill the least amount of people
      - Save whoever is inside the car
      - Keep going ahead

Yet my results said that 100% of the time I would value women lives over men.

<comment><USER43> We're in a strange world where animals obey crosswalks.

</comment></comment><comment><USER44> Rhetorical question: if they test for gender preferences, why not for race or nationality preferences?

<comment><USER45> Because they don't want their research to be permanently shackled to the endless rhetoric on racism?

</comment></comment><comment><USER46> The homeless people aren't given genders or pregnancy status.

<comment><USER4> Or net worth.

They might as well have drawn them as generic animals.

</comment></comment><comment><USER47> so, the question set is quite bad at singling out factors.

by always choosing not to kill the passenger, I got strong male preference and extreme older preference, even if I never selected answers with that in mind.

this is a very, very bad test set.

</comment><comment><USER48> The way I voted:

\- prefer to kill those within the car than without

\- prefer to go straight (stay in control) than swerve (lose control)

I did not care for age, fitness, gender, species, good guy vs bad guy... just that those within the car made a choice to be in the car (and, as I saw it, subject to it) and those outside of the car did not make that choice (and, as I saw it, should be not subject to it if possible).

Driverless cars should be a success based on the likelihood of coming out of the vehicle alive compared to manual driving. Not of externalising the issue by increasing collateral damage.

<comment><USER21> I simplified it.... always kill those in the car as they are the ones introducing the danger into the situation for their own perceived convenience.

</comment></comment><comment><USER49> Google's current policy is to save the most vulnerable road users first. Something like wheelchairs, then pedestrians, then bicycles, then cars, then trucks.

<comment><USER50> Interesting. So if a toddler walked into the street it might swerve into oncoming traffic and kill a lot more people than just the baby?

</comment></comment><comment><USER51> I guess one can't assign value to moral dilemma, namely zero (0) and one (1). Zero be the death, one - life.

This kind of moral 'spectrum' is highly biased and forces you to assign 'bigger' value to people that you really know nothing about.

In this case - athletic male would be a preference to save, over elderly woman, but that elderly woman could have been Marie Curie, and in case the vehicle is driving 60Km/h towards the random and unknown crowd, one (or machine) can't know the details.

This is the same as 'Would you kill a jew to preserve great german reich?' question. It's biased and can't be determined by defining a moral compass, or taking statistical example as training set.

</comment><comment><USER52> Mechanical Turk for moral decision making. I like it!

<comment><USER25> What they didn't tell you is you just killed 3 drivers, 5 passengers, and 12 pedestrians.

<comment><USER53> Like that one book series or movie I don't want to name for sake of spoilers!

It's all real life! Not simulations!

<comment><USER54> Which series is that? I'm curious to read/watch, but struggling to find it.

</comment></comment></comment></comment><comment><USER55> Always avoid the intervention. I don't want morals in my machines and I don't want to crash into oncoming traffic.

By the way is a brake failure even a realistic scenario? Electric cars have regenerative braking and normal friction brakes as backup.

</comment><comment><USER56> Seems weirdly reductive the way this is framed rather aggressively as "who do you choose to kill?" (or, really, with the attributes it tags people with, "whose life is worth more?") Surely there are better metrics, like "do people have more time to get out of the way and/or predict the path of the vehicle if it stays on a straight course or swerves" or any number of other, more useful, questions when it comes to actual problems of programming autonomous systems.

</comment><comment><USER57> I don't think that whether the people are in the car or not is relevant. If we assume that everyone uses a self-driving car and that fatal software or hardware problems are random, we cannot discriminate based on the people being inside or outside the car.

This is a horrible exercise but one that will inevitably have to be solved sadly. Because even if you add more variables you'll have to take scientifically usable experiments with only 1 variable each time in order to teach an AI to make a decision.

</comment><comment><USER58> Never thought the trolley meme would pop up on the front page of HN.

</comment><comment><USER59> I think in general self driving cars shouldn't be required to kill their own passengers. Otherwise, people will be unlikely to want to drive them. Or maybe, at least, like a human driver, they should be able to enter their own preferences.

Perhaps this site is a predecessor to that? Everybody will have a moral profile, akin to an organ donor card. It will show the preferences for killing people in accidents ("kill me if the victim would be a baby, but don't brake for fat white men").

</comment><comment><USER60> I'm glad I finished the series of questions because it was fun to see how my values compared to others on the results page.

They were exploring moral relativism scenarios in schools back in the 1960's. The open machine intelligence part seems to be just good window dressing (I clicked after all). It isn't about machines as much as human psychology. I doubt autonomous cars are going to be programmed to take potential fatalities fitness, gender, or profession into account.

</comment><comment><USER61> Will Wright wrote and produced a couple of one-minute-movies about "Empathy" and "Servitude", exploring the morality of how people interact and empathize with robots.

[1] Empathy: [https://www.youtube.com/watch?v=KXrbqXPnHvE](https://www.youtube.com/watch?v=KXrbqXPnHvE)

[2] Servitude: [https://www.youtube.com/watch?v=NXsUetUzXlg](https://www.youtube.com/watch?v=NXsUetUzXlg)

</comment><comment><USER17> Holy shit: [https://www.youtube.com/watch?v=lNOSZ3HijmQ](https://www.youtube.com/watch?v=lNOSZ3HijmQ)

This is out of control.

</comment><comment><USER62> I recommend the book Moral Tribes by Joshua Greene, which treats this topic at book length.

[https://www.amazon.com/Moral-Tribes-Emotion-Reason- Between/d...](https://www.amazon.com/Moral-Tribes-Emotion-Reason- Between/dp/0143126059/ref=sr_1_1?ie=UTF8&qid=1475600859&sr=8-1&keywords=moral+tribes)

</comment><comment><USER63> This isn't hard.

First prioritize the car occupants. The _whole_point_ of the device is to drive them. Second, don't swerve off course to make value judgements on who should live. That is just murder. Third try to minimize loss of life it all else is equal. Save cats and dogs where you can of course but they can't even be the priority.

<comment><USER64> > First prioritize the car occupants.

Morally and legally I'd argue the reverse; the car occupants chose to assume the risk of a mode of transport that can cause death and injury if it fails, while the pedestrians made no such decision. True, the manufacturer has a duty of care to the occupants, but they have a competing duty of care to bystanders.

Otherwise, your reasoning is of course impeccable.

<comment><USER65> I completely agree with you, but also make a distinction between red-crossing and green-crossin pedestrians.

1\. Law-abiding pedestrians are the top priority to save because they opted for the lowest possible risk offered in our society.

2\. Car occupants com second, because they accepted the inherent risk of a faster transport method, but otherwise complied with the rules set to minimize such risks.

3\. Red-crossing pedestrians have willingly taken the risk to be run over. If someone _must_ be hurt, it should be them.

<comment><USER21> I disagree on that distinction. Pedestrians have not introduced the primed- handgrenade of the automobile into the situation. All dangerous consequences that flow from that introduction are the responsibility of the introducer.

Many highway codes explicitly recognize this principle: drivers are supposed to conduct their vehicle as though someone or something may run out in front of them at any stage.

It is true that in practice this implicit morality which reflects the widespread outrage which greeted the introduction of the motor car is now ignored, but that is at the base of many the codes.

</comment></comment></comment></comment><comment><USER66> This is harder on the soul than on the mind.

<comment><USER67> Nah. Just follow the law and protect the medics. It said I preferred to kill females... But I just chose to prefer the law/staying in the lane the car was already in...

<comment><USER68> it's a moral machine, why invoke law?

<comment><USER69> Because someone programmed it, and it is in theory immoral to deliberately violate the law.

<comment><USER66> Yes, good point. Let me add some spark to the fire. What if the machine learns by itself? The base program is still man made but the rest is developed by it. Where does one simple say the machine made a mistake instead of programmer error?

<comment><USER69> If a human engineering team creates a car with adaptive software, and that software does not contain sufficient safeguards to ensure it at all times directs the vehicle in accordance with laws and applicable regulations, then the engineering team is liable. That is how engineering works, outside of the software industry. It doesn't matter how 'smart' the car is; it is not a force of nature or a human being. It is a product, and any catastrophe engendered thereby is the responsibility of the organization that produced it.

<comment><USER66> But no other engineering industry has the same issue. They don't build intelligent machines. The question still stands.

<comment><USER69> You appear to be confusing 'engineering self-driving cars' with 'creating a sentient being'. Programmers are only capable of one of these tasks.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER70> Why not redesign cars to make them safer to pedestrians during collisions? Many have already been introduced: [https://en.wikipedia.org/wiki/Pedestrian_safety_through_vehi...](https://en.wikipedia.org/wiki/Pedestrian_safety_through_vehicle_design)

</comment><comment><USER17> "'Utilitarian' judgments in sacrificial moral dilemmas do not reflect impartial concern for the greater good."

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4259516/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4259516/)

</comment><comment><USER71> While not specific to self-driving cars; I wonder how much it would affect things with a design such as the Tesla where there's no engine in the front and there's a huge crumple zone: It could in effect negate the deaths of passengers in the car hitting the concrete block.

</comment><comment><USER72> It's interesting to make this stuff explicit, but here's my prioritization of the factors measured:

1\. Species Preference

2\. Protecting Passengers (Passengers > Pedestrians)

3\. Saving More Lives

4\. Upholding The Law

5\. Avoiding Intervention

6\. Age Preference

7\. Fitness Preference

8\. Social Value Preference

9\. Gender Preference

"Avoiding Intervention" is an interesting one, because basically after that one, you've given up the opportunity to affect outcomes. I can certainly prioritize after that, but as a car maker, I couldn't do anything about my prioritization without breaking my avoiding intervention choice.

There's also some complication around prioritization of "Species Preference". I chose to put that first because it captures my intent best--I want human lives always prioritized over pet lives, i.e. this situation[1]. But it gets a bit complicated with the interaction of "Saving More Lives" and 4/5\. I'd avoid intervention and uphold the law without regard saving more lives if those lives are pets (I'd go straight here[2]) but I'd always save more human lives without regard to pet lives, upholding the law, or avoiding intervention (swerve here[3]) and I'd always save more lives without regard to upholding the law or avoiding intervention if those lives are not mixed human/pet groups (swerve here[4] and here[5]). This makes sense if you look at this as 3/4/5 applied to human lives are prioritized as a group before 3/4/5 applied to pet lives.

[1] [http://moralmachine.mit.edu/browse/-685441648](http://moralmachine.mit.edu/browse/-685441648)

[2] [http://moralmachine.mit.edu/browse/-1848192482](http://moralmachine.mit.edu/browse/-1848192482)

[3] [http://moralmachine.mit.edu/browse/-194950738](http://moralmachine.mit.edu/browse/-194950738)

[4] [http://moralmachine.mit.edu/browse/-1998475298](http://moralmachine.mit.edu/browse/-1998475298)

[5] [http://moralmachine.mit.edu/browse/-703311316](http://moralmachine.mit.edu/browse/-703311316)

<comment><USER73> My problem is that it didn't distinguish between cat and dog lives, whereas that was a major part of my decision-making. /s

</comment></comment><comment><USER74> Does the other lane have traffic in the same or in the opposite direction? That does matter for me more than if the people to be hit or spared are fit or criminal. I initially thought, the guy with the money bag is the executive.

</comment><comment><USER75> Its stupid but reminds me of something.

If we can build all of these SUVs, skyscraper, AIs, etc., why can't we build structures that separate people from cars so they can't get run over?

<comment><USER21> Because the occupants of the cars want to get to any and all places where there are non-occupants of cars. The conflicts are inherent. Car use is fundamentally an irrational application of technology that appeals to the lazy.

</comment></comment><comment><USER76> Assigning a value of zero to anyone in a car with sudden brake failure provides a relatively (although not completely) self-consistent morality in this sequence.

</comment><comment><USER77> Assuming I have no involvement at all in what the car decides to do, who's going to jail if the car kills somebody?

</comment><comment><USER78> Website doesn't work well on iOS devices. Can't switch between scenarios.

</comment><comment><USER40> I completely missed the visuals of the semaphores... put those in the description

</comment><comment><USER79> It doesn't matter what the self driving car chooses because it's so much safer than having humans behind the wheel instead. I'm concerned that getting caught up in the minutia of these thought experiments threatens to derail actually implementing these technologies.

</comment><comment><USER61> Stanislaw Lem's "The Cyberiad" [1] and "Fables for Robots" [2] explore some of the themes of moral machines.

Here's an interesting part his original Polish version book "Cyberiada" that was left out of Michael Kandel's excellent translation to English in "The Cyberiad":

Trurl and the construction of happy worlds. Trurl is not deterred by the cautionary tale of altruizine and decides to build a race of robots happy by design. His first attempt are a culture of robots who are not capable of being unhappy (e.g. they are happy if seriously beaten up). Klapaucius ridicules this. Next step is a collectivistic culture dedicated to common happiness. When Trurl and Klapaucius visit them, they are drafted by the Ministry of Felicity and made to smile, sing, and otherwise be happy, in fixed ranks (with other inhabitants).

Trurl annihilates both failed cultures and tries to build a perfect society in a small box. The inhabitants of the box develop a religion saying that their box is the most perfect part of the universe and prepare to make a hole in it in order to bring everyone outside the Box into its perfection, by force if needed. Trurl disposes of them and decides that he needs more variety in his experiments and smaller scale for safety.

He creates hundreds of miniature worlds on microscope slides (i.e. he has to observe them through a microscope). These microworlds progress rapidly, some dying out in revolutions and wars, and some developing as regular civilizations without any of them showing any intrinsic perfection or happiness. They do achieve inter-slide travel though, and many of these worlds are later destroyed by rats.

Eventually, Trurl gets tired of all the work and builds a computer that will contain a programmatic clone of his mind that would do the research for him. Instead of building new worlds, the computer sets about expanding itself. When Trurl eventually forces it to stop building itself and start working, the clone-Trurl tells him that he has already created lots of sub-Trurl programs to do the work and tells him stories about their research (which Trurl later finds out is bogus). Trurl destroys the computer and temporarily stops looking for universal happiness.

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

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

[3] [https://en.wikipedia.org/wiki/Michael_Kandel](https://en.wikipedia.org/wiki/Michael_Kandel)</comment>


JScrambler: Obfuscate Your JavaScript, HTML5, Node.js or Mobile Code - <AUTHOR> https://jscrambler.com/en/

<comment><USER2> You can't "defend" your code, period. Not front-end code at least. Go ahead and minify and obfuscate it all you want (or add domain or date protections) ... anyone with minimal knowledge and a little effort will walk right around that in no time...

<comment><USER3> I do not agree completely with "anyone with minimal knowledge and little effort". That is the true with some obfuscators, basically because they suck. However, I dont think that we should put them all in the same bag. Consider this example for instance: [http://jsfiddle.net/JScrambler/5ujp3/](http://jsfiddle.net/JScrambler/5ujp3/) It has anti-tampering and other stuff in it. I REALLY don't think it requires minimal knowledge and little effort to hack it.

</comment></comment><comment><USER4> I don't think this is necessary.

"You invested a lot of time in developing your JS code. Why give it away for free?"

\-- Because its the right thing to do.

<comment><AUTHOR> What if you developed it so you can sell it and you don't want people to steal it from you?</comment></comment>


Plan or build? - <AUTHOR> http://joel.is/post/28001166593/plan-or-build <comment><AUTHOR> I wonder why this was flagged. Do people feel it was wrong, or inappropriate? Not getting any votes and sinking without trace I understand, that's the luck of the draw. But getting flagged is different.

I'm puzzled, curious, and generally a bit confused by HN at times.

Oh well, _c'est la vie._</comment>


Ask HN: Anyone who knows where to learn about designing scalable apps from? - <AUTHOR> I've been meaning to learn (through hands-on) about designing websites like amazon, etc. So I needed to find a course that taught something like that through exercises (note that I could not find a good book that taught something like this through exercises!). I found MIT OCW's 6.171  ( http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-171-software-engineering-for-web-applications-fall-2003/index.htm )
Has anyone completed this course earlier? How would you rate it? Also, this course is from 2003 so I am not sure would if it would be a good fit in today's times? I'd like to know and I'd very much appreciate the thoughts on this and on how to learn about designing such applications through a hands-on course or book. So, please let me know your thoughts on this, any resources you know about!
Any help is greatly appreciated.
Thanking in anticipation. <comment><USER2> [http://highscalability.com/blog/category/example](http://highscalability.com/blog/category/example)

Basically reading how all these scalable systems are built, helped me a lot. Yes they only give you pointers. Then you can research more on those pointers and learn how to actually use these things in your own apps.

<comment><AUTHOR> Yes, thank you for your response. Yes, I know about highscalability.com and such websites but the overview they give is very high level. I am looking to build something similar to the 6.171 MIT course - really hands on and concrete.

</comment></comment><comment><USER3> What are you trying to reach? For something rather general like this i would strongly avoid reading any books older than a few years. 2003 is VERY OLD by it standards.

<comment><AUTHOR> I am trying to reach a point where I can say - "Hey! Look I've designed this highly scalable website" to satiate my own hunger for this knowledge. And I know that one can't possible cover all (and maybe not even a lot) scalability topics while designing such a site but at least it would give me a solid start - something I can build on later on. Yes, I understand 2003 is very old and hence the question - does someone know something similar to MIT 6.171 that's more recent or if that course has been updated. Also, thanks for your reply :)</comment></comment>


Do It Now - <AUTHOR> http://www.aaronsw.com/weblog/doitnow

<comment><USER3> Aaron, you sound like a guy with not enough to do. If you can answer every email without prioritization, then I doubt you are getting all that much email.

I suppose I could go through every email, Seth Godin-style, and fire off a zinger one-liner the day it arrives. But though I might answer a lot of email, I wouldn't be doing the emailers any favors.

I often get emails from users that require some thought or research to answer properly. These people are better served to wait a couple days, than to have me try and be "productive." I agree with the general idea of "Just Do It." But it's just an aphorism, and any aphorism taken to extreme will end up being moronic.

What are you working on these days anyways? I'd prefer to see your software than your thoughts on answering emails or hiring programmers. Reddit and RSS are certainly helping me more than your essays brewed from boredom.

<comment><USER4> "I suppose I could go through every email, Seth Godin-style, and fire off a zinger one-liner the day it arrives. But though I might answer a lot of email, I wouldn't be doing the emailers any favors."

I remember reading not too long ago a heart felt email from a developer to Steve jobs that was several paragraphs long. Jobs' full reply:

"Change your apps name. Not that big of a deal."

[http://www.smh.com.au/technology/technology-news/dear- steve-...](http://www.smh.com.au/technology/technology-news/dear-steve-- 20091125-jppa.html)

From the time stamps, he replied within 3 hours, and probably within a few minutes of when he actually read it.

Maybe he could have taken more time to research and reply, ask a subordinate to research further, etc. But I doubt he could have given a much better response or made his position more clear than those 10 words.

I guess my point is, the "zinger one-liner" might be the most appropriate course of action more often than you think.

<comment><USER5> He could have said "Fuck You" as well - which is basically what he did - <USER2> most people don't consider that positive communication.

I don't think the response he gave was the one that would have the most positive effects.

</comment></comment></comment><comment><USER6> I read this hoping it would be another really cool use of "dot" to make things easier to visualise, and hence easier to prioritize, and hence easier to do, thus making it useful, and a cool pun.

But it's just a mis-spelling.

Things I use "dot" for include:

\- Diagramming links between Paul Graham essays. When I told him about it he suggested I submit it here to HN. That's how I first arrived: <http://news.ycombinator.com/item?id=397408>

\- My site map. It's a real map, not just a list of pages

\- Scheduling. Dependent tasks point to each other, and are set to the same level as the week they're due.

\- Visualizing data structures. I've invented a new one and want to see how it evolves through time.

\- System connectivity diagrams and data flow.

There are more, but that's enough. Dot and neato are incredibly useful tools.

More useful than yet another "Do It Now" page.

<comment><USER7> Just for making it easier to search for on the web: The package that includes dot is called graphviz. (An excellent piece of software.)

</comment></comment><comment><USER8> "We procrastinate because we are afraid." This struck a chord.

<comment><USER9> This is probably my own biggest trigger for procrastination. I avoid writing an email or calling somebody due to fear, or uneasiness. Then over time, I avoid it further due to fear of lateness. Luckily recognizing this is half the way to solving it. The other half is the temporary spike in willpower to overcome the fear.

</comment></comment><comment><USER10> What's new or interesting here? Obviously if he was able to read and handle every every single piece of mail, it didn't matter what system he used, as long as he changed something up to renew his optimism and enthusiasm.

See also: <http://en.wikipedia.org/wiki/Hawthorne_effect>

<comment><USER11> But he didn't renew his optimism or enthusiasm, unless I'm missing something. Rather, he just did the first one anyway, even though he wasn't enthused about it.

This is a lesson I have to learn over and over, because I want to do things I'm excited about doing. There's a lot of things, though, that I want to _have done_ , and for things like that, there's typically no way to make them more exciting or to make me more optimistic about handling them -- I just have to start. Once I've started, continuing is far easier, for whatever reason.

When I programmed mostly for myself (that is, with no set schedule other than a dimly seen deadline), I had quite a lot of trouble getting started, and so I developed a trick to help with that: at the end of the day, I'd make sure to leave some small, quickly-accomplished thing undone, to have something to do when I started again. Sometimes I'd also write a note on how to do it, if it seemed like I might forget. Over months, though, this turned into a problem itself, since I would spend lots of time during the day coming up with tasks that I could do the next day to start, and then I would use that as an excuse not to do them today, because, hey, what if I wasn't able to come up with anything else to start on easily tomorrow? I might lose the whole next day!

Eventually, this got to the point where I'd spend weeks doing only one or two small tasks in the morning, and then being afraid to start on anything bigger lest I not have something easy to start on the next day. Of course, this defeated the purpose...

Actually accomplishing things, whether coding, or writing, or cleaning up email, or just cleaning the house, is something that you have to just do. You might be able to trick yourself into doing a little more of it, but if you focus on the trick, you aren't likely to build the habit of just doing things, which means that you'll easily stop doing them when something happens to make the trick less effective.

People for whom the trick(s) really seem to work have moved into a psychological realm where they have the habit of getting things done; the trick is no longer really the point, I'd guess.

</comment></comment><comment><USER12> Is anyone else puzzled about all this "inbox zero" stuff? My email is very manageable. And I may not be Aaron Swartz, but I'm not a complete loser either.

It's possible I am different, because I assume that any tweet, email, or blog post not directly ONLY at me, or my local work group, is usually ignorable without consequence. I also don't make commitments when I know my interest is only marginal. I may also be more immune to social pressure -- if someone adds me on Twitter or starts commenting on my blog, I feel no obligation to add them back.

Is this rude? Am I a recluse and don't know it? I don't understand how others get anything done without severely throttling the messages they receive.

</comment><comment><USER13> Isn't it "Do It Now" ?

<comment><USER4> Or "Just Do It"?</comment></comment>


How Gödel's Proof Works - <AUTHOR> https://www.quantamagazine.org/how-godels-incompleteness-theorems-work-20200714/ <comment><USER2> For a detailed perspective on how the proof works, I highly recommend Ernest Nagel and James Newman's book _Gödel 's Proof_ [0], mentioned in the article. Alternatively, _Gödel Escher Bach_ by Douglas Hofstader is a classic which serves as a great (and more accessible) introduction to the proof [1].

[0] [https://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/081...](https://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/0814758371)

[1] [https://www.amazon.com/G%C3%B6del-Escher-Bach-Eternal- Golden...](https://www.amazon.com/G%C3%B6del-Escher-Bach-Eternal- Golden/dp/0465026567)

</comment><comment><USER3> Actually, the [Gödel 1931] proof does _not_ work as advertised for Principia Mathematica because the Gödel number of a proposition does _not_ include the order of the proposition.

Consequently, the rules on orders of propositions mean that the [Gödel 1931] proposition _I 'mUnprovable_ does _not_ exist in Principia Mathematica where

                I'mUnprovable <=> ¬⊦I'mUnprovable

For details see the following: [https://papers.ssrn.com/abstract=3603021](https://papers.ssrn.com/abstract=3603021)

</comment><comment><USER4> With today's knowledge, Gödel's theorem should be regarded as a corollary of the impossibility to solve the halting problem.

In my opinion, this is also how it should be taught in order to convey the explanation for its truth in the most straightforward way.

After that, one may of course also note that in the old days, without a good theory of computation, one had to resort to such hacks as Gödel numbers.

A good explanation including all the finer points can be found here: [https://www.scottaaronson.com/blog/?p=710](https://www.scottaaronson.com/blog/?p=710)

<comment><USER3> Yes, this is the way to correctly prove "incompleteness", i.e that there are preferentially undecidable propositions in powerful theories of computer science.

See the following for a proof: [https://papers.ssrn.com/abstract=3603021](https://papers.ssrn.com/abstract=3603021)

<comment><USER3> Of course, I meant to say "inferentially undecidable" instead of "preferentially undecidable".

Being inferentially undecidable means that it is not the case that for every proposition, there is either a proof of the proposition or its negation.

Inferential undecidablity implies "incompleteness" in the sense that it is not the case that every true proposition can be proved.

</comment></comment></comment><comment><USER5> Just finished a book club for Gödel, Escher, Bach, which gives a lay -- but pretty detailed and thorough -- explanation of the proof. Here's how I'd say lay out the key insights as they applied to the parts I didn't understand before.

You want to use pure math to say "this statement cannot be proven". To do that, you:

1) Express the concept of statements following from other strings by the axioms or other theorems.

2) Express the concept of "this is a valid chain of statements, each of which follows from the previous". (GEB calls it a proof-pair.)

3) Express the concept of "Statement A does not have such a valid chain" (there exists no such chain with A at the end).

That allows you to say "Statement A cannot be proven."

From that point, it's a matter of extending it to the statement (call it G): "There exists a statement S such that S has no proof and S statisfies criteria A/B/C."

...and then constructing the criteria A/B/C such that G is the one statement that can satisfy it. The details of how you construct the criteria so that you are specifying G are the Gödel numbering that the Quanta article describes.

<comment><USER3> Unfortunately, the above proof sketch does _not_ work. Mathematics becomes inconsistent if a proposition G is allowed such that G<=>¬⊦G.

For a simple proof that allowing such a G makes mathematics inconsistent, please see the following:

[https://papers.ssrn.com/abstract=3603021](https://papers.ssrn.com/abstract=3603021)

<comment><USER5> The proposition G in the sketch above just says G can't be proven, not that it's false, just like the one in GEB.

</comment></comment></comment><comment><USER6> Charles Petzold's "Annotated Turing" is a book about Turing's article, which provides another approach to this problem. Turing machine, described in the article, is arguably a more - convenient? generalized? - device for similar areas.

Yes, Godel's theorem is mentioned more than once.

<comment><USER3> You might be interested in knowing that there are some nondeterministic computations that cannot be performed by a Turing Machine.

For a simple example, see the following:

[https://papers.ssrn.com/abstract=3418003](https://papers.ssrn.com/abstract=3418003)

[https://papers.ssrn.com/abstract=3459566](https://papers.ssrn.com/abstract=3459566)</comment></comment>


A newbie's guide to scaling AWS - <AUTHOR> http://www.revisu.com/2011/12/23/scaling-aws-how-to-protect-your-servers-from-a-giant-robot-dinosaur/

<comment><USER2> As a large scale AWS user, I'm not sure I can agree with any of these recommendations.

 _Don't use micro instances for real work_

There are some use cases where micro instances work in production environments (such as MongoDb arbitrators etc) but running anything in production on AWS on anything less than a m1.large instance is setting you up for failure.

Micro and small instances can be used for a personal Web site or tiny blog, but nothing else. When I visually think of a micro or small instance, I envision a PC sitting under a desk performing operations that a server in a rack should be hosting.

 _Have servers on standby. Configure a large instance, stick it in an Elastic Load Balancer with your other web servers, and just stop it.... ()_

I really don't consider one server stopped, on standby, as scaling AWS. In the cases of Web servers, you might need to provision 5-10 Web servers, and having a single stopped instance is not going to allow you to accomplish that.

The better approach would be to have a server image prepared that can auto- provision itself (multiple times when needed) into the role defined through user-data passed to the image.

Scaling Web servers is an n+1 operation, not a +1 operation.

 _Seriously, use RDS_

Seriously, if you are doing any real MySQL work on AWS, DO NOT use RDS. The reality is that AWS doesn't nearly do the EBS tuning that you yourself can do (RAID-0, kernel tuning etc) on your own EBS based MySQL implementation. See:

Getting Good IO from Amazon's EBS:

[http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs...](http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs/)

Running MySQL on AWS:

<http://aws.amazon.com/articles/1663>

Finally, for MySQL slaves, use RAID-0 over the ephemeral disks which have dramatically better performance than EBS.

<comment><USER3> _Configure a large instance, stick it in an Elastic Load Balancer with your other web servers, and just stop it._

I agree with allowing AWS to auto-provision N new instances when needed.

But from the article and with my financial hat on, when the large instance is stopped and left in a standby role, are you still paying for it?

<comment><USER4> You do not pay for an EC2 instance that is stopped. If the instance has attached EBS volumes you will continue to pay for the storage costs, but that is pretty minimal.

It is important to remember that a stopped instanced is not guaranteed to be able to be started again. If you have a m1.large stopped, there is a chance that Amazon will not have any m1.larges available in that zone/region when you try to start back up your instance.

Also know that the private dns name will change when a stopped instance is started again, so anything configured to point at that particular instance will have to be reconfigured.

</comment></comment></comment><comment><USER5> I can attest to the unreliability of AWS Micro instances for production environments. Two examples:

Ex 1: We had a request triggering an asynchronous job that would take 3-4 seconds of processor time. Several times, this job was being throttled, so even in a low traffic situation each time one of those requests came, a whole micro instance was consumed on it making it unavailable for anything else. Switching to small instances solved the problem.

Ex 2: When launching a new load balancer, due to some sort of wrong DNS/elastic-ip configuration, it's not uncommon to be hit hard by traffic coming for the last owner of the given ip. We've seen this happen several times in the past. Again, switching from 10+ micro instances to 2 small instances cleared the problem.

There's an interesting post by Greg Wilson addressing the throttling problem better than I could: [http://gregsramblings.com/2011/02/07/amazon-ec2-micro- instan...](http://gregsramblings.com/2011/02/07/amazon-ec2-micro-instance-cpu- steal/)

<comment><USER6> Thank you for the Greg Wilson link.

</comment></comment><comment><USER7> I've been using a Micro Instance for almost a year (the free tier) to run <http://nsfw.in/> successfully. And the traffic on the site is also not bad at all, with 100,000+ pageviews a month on an average. You've to know the right thing you need for your requirement and tweak it.

</comment><comment><USER8> One of our problems in scaling is not starting new instances, but rather to ensure that new instances have the latest version of the platform.

Also, we are running a fantasy soccer game with trading windows, so the server load near the trading window closure time (the last hour or so) is orders of magnitude higher than average load. Ideally we would scale up when the load demands it, but with the platform versioning issue unresolved we need to run our platform at "full scale" almost constantly (or scale manually which is a really bad idea when someone forgets to scale back up again for the weekend).

We're running in a WISC setup.

<comment><USER9> What if every time you did a deploy, afterwards you kicked off a job that wrote a snapshot and brought up instances based off that. Then at any point you'd only ever be at most a deploy behind.

</comment></comment><comment><USER10> Yes RDS, is great for the money considering the ease of backups and replicas, which normally are a pain in the ass for any sysadmin.

Overall this article has little to do with scaling on AWS. Running any sort of production website on a micro instance is pretty foolish, besides a blog or static website perhaps.

</comment><comment><USER11> I think I may have had less idea about what your product does after clicking "See Revisu in Action", three cat pictures does not a demo make.

<comment><AUTHOR> Yeah, we're working on that. Hopefully the upcoming video helps a bit more. It's just one designer and one developer, so we gotta triage some things while we build the product.

</comment></comment><comment><USER12> This should be called "A guide to scaling AWS written by a newbie".

<comment><USER13> zing!

</comment></comment><comment><USER14> Your scaling AWS and you're a newb? You must be terrified!

</comment><comment><USER15> Revisu is pretty sweet, great blog as well.

</comment><comment><USER16> Oh man, Fake Grimlock is the man! Er... Giant bird robot.</comment>