Waterfox – A fast browser - <AUTHOR> https://www.waterfoxproject.org/ <comment><USER3> Before we give this the traditional Hacker News baptism by fire, keep in mind that this is apparently just one guy's project, and he's very junior:

      Waterfox was started back in March 2011 by Alex Kontos,
      a then 16 year old student. He had a fascination for
      the web and wanted to help expand on the ideals of what
      Mozilla had for a free and open web.

Be constructive, not snarky.

<comment><USER4> Well, he's 20 now. And he's stuck with it for four years? That's pretty impressive.

<comment><USER3> Still young; he's probably still a student. People react differently to negative criticism, of course, but to some it can be devastating.

<comment><USER5> Someone building a web browser for 4 years has definitely come across some negative criticism by now. The best criticism we can offer him is that which is constructive.

</comment></comment></comment></comment><comment><USER6> So this is basically older versions of Firefox compiled with the Intel C++ Compiler?

Given that most of Firefox is in JS so the actual code that you end up running is the JIT output, I'd be very skeptical it's any faster.

They certainly don't provide any objective data that it is.

(And if it were, I'd assume Mozilla would just Intel C for the official builds, too?)

<comment><USER7> > Given that most of Firefox is in JS so the actual code that you end up > running is the JIT output, I'd be very skeptical it's any faster.

Most of Firefox is JS? Almost all of the lines of code are C++, as far as I'm aware. Certainly the UI is drawn using XUL/XBL/web-stuff, but how often is web performance bounded by _UI_ performance? It's bounded by the performance of the rendering engine, and that _is_ C++.

> (And if it were, I'd assume Mozilla would just Intel C for the official > builds, too?)

Seems unlikely, given the output of ICC is crippled for non-Intel x86 chips (which de-facto means AMD nowadays).

<comment><USER6> >Almost all of the lines of code are C++

Significant parts of the functionality are written in JS.

>but how often is web performance bounded by UI performance?

It's often bounded by JS performance. JS performance depends on the JIT _output_ , much less so the speed with which the JIT _itself_ runs.

The rendering engine may be a factor, but there HW acceleration also factors in. It's far from being clear cut.

Media decoding already uses optimized assembler, nothing for the compiler to do there.

I'd suppose most of the gain would be in layout?

>Seems unlikely, given the output of ICC is crippled for non-Intel x86 chips (which de-facto means AMD nowadays).

You can patch that out. I'd hope this Waterfox is doing that...

Even so, Mozilla provides a stub installer that downloads the right binary nowadays. It could check the chip vendor and get the appropriate binary.

<comment><USER7> > Significant parts of the functionality are written in JS.

Such as?

> It's often bounded by JS performance. JS performance depends on the JIT > output, much less so the speed with which the JIT itself runs.

On what? Last I looked, even things like FB & Gmail are largely bound by performance of C++ code. Sure, there's a few hot JS functions high-up in the profiles (esp. in the large data structures they build up when initially loading), but by and large time is spent in C++ code, not JS.

<comment><USER6> >Such as?

Looks for .js and .jsm in the source tree.

Bookmarks, Tab management, all UX, PDF viewer, Search, Prefs, Sync, parts of SafeBrowsing, WebRTC, Update Handling, Login and Form manager, Devtools, Reader Mode, and uh I think I've proven my point.

<comment><USER8> But none of those things will ever really bottleneck the browser except for maybe the PDF viewer. The performance of bookmarks, tab management, search, and basically all your other examples doesn't matter. The parts of the browser that benefit from speed are written in C++.

Not that I'm convinced simply compiling with ICC will actually have a noticeable impact on the day-to-day performance of the browser, but it might speed up layout and other specific CPU-bound tasks. I'd love to see some benchmarks, but I think it's silly to shrug it off by saying that it won't matter because the browser UI is written in JavaScript.

<comment><USER9> Explains why it barely handles my hundreds of bookmarks, though. Maybe I need to rewrite that part in native code haha.

<comment><USER10> It seems a joke but is also, sadly, a fact. Chrome bookmarks manager is lightspeed if compared to Firefox, to not mention total lack of usability on Firefox's part, so 1995.

<comment><USER11> Chrome bookmark manager stores a lot less though.

<comment><USER9> Is there a limit on it or something?

<comment><USER11> I meant meta data, Firefox has tags and more time information IIRC, thus does more and thus is prone to be "slower".

<comment><USER9> Ahh. That makes sense.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> I paused when I read Intel compiler - that thing is a steaming pile of crap, or at least was for godawful number of releases for a long time and I don't expect it to ever work in the real world with a non-trivial amount of C++ code base. And then I read about a Mozilla header causing it to ICE!

Years ago, I was forced to make a company's product faster by "simply" recompiling it with ICC. It was losing in the benchmarks department and they were told by customer to go away until they could compete. Addicted to easy money they blamed the compiler (VC on Windows, gcc on Linux - how conveniently both were bad at optimizing.) I had a hell of a time getting the compiler to be consistent - it would, for example, ICE on code after re-ordering headers! Their support was atrocious too - but that wasn't entirely their fault, at that level of messiness only a complete rewrite of the compilers by non-PhDs might have saved it.

<comment><USER13> I had the exact opposite experience with Intel's "steaming pile of crap" as you put it. We had a computationally intensive app that was sped up by 25% compared to the version produced by MS compiler. This was few years ago though.

<comment><USER12> Yep, I could totally see it speeding up computationally intensive code - <USER2> try downloading it and using it to compile entire code bases with medium to high level of complexity - like ACE/TAO or Qt or any other OSS project. It might compile at low optimization settings but then it's not faster and the moment you try to use optimizations it makes your life hell.

<comment><USER14> Getting a recent qt to make clean with any compiler is a pain.

<comment><USER15> What's sort of problems did you have? I haven't tried since 5.3, but it worked fine just following the directions on the wiki:

[https://wiki.qt.io/Building_Qt_5_from_Git](https://wiki.qt.io/Building_Qt_5_from_Git)

</comment></comment></comment></comment></comment><comment><USER16> Speed is your selling point, but I don't see any benchmarks!

<comment><USER17> I used to have them on the website but I just felt like if they were on there people would think they were biased. A user had some benchmarks a few versions back: [https://www.reddit.com/r/waterfox/comments/2xle7k/browser_be...](https://www.reddit.com/r/waterfox/comments/2xle7k/browser_benchmark_of_google_chrome_canary/)

<comment><USER18> You're much better off putting them up, even if people might think they're biased.

Without any benchmarks, it just seems like you want this to be faster, without providing any evidence that it is.

</comment></comment></comment><comment><USER19> > "Finally found an alternative to @firefox that supports Adobe Flash without > all the errors - @Waterfoxproject works just wonderfully :)"

...no thanks, unless they want to share details of their sandboxing tech.

<comment><USER20> I wonder what "all the errors" are that affect Flash on Firefox. Being derived from Firefox, why would Waterfox have better support for Flash?

<comment><USER21> I think it's just referring to having to manually enable Flash since Firefox will warn you that it's insecure.

</comment></comment></comment><comment><USER22> Even if I don't use Waterfox, I'm glad it exists. Browsers are very close to including DRM content and advertisements. When that happens I don't want to be stuck without an alternative. Thank you (if the developer is reading) for the effort and I hope you continue with this.

</comment><comment><USER23> "What makes Waterfox so fast? It's built with Intel's C++ compiler. One of the most powerful compilers out there. This enables us to make the fastest possible web browser for all the code changes we make."

This is a huge claim to make with no evidence to back it up.

It's also a shallow comment. For one program, a compiler could compile faster code than another. Pick another another program and you may get the reverse result.

Plus I imagine the code is going to trail behind Firefox a bit. Is that worth probably a few milliseconds here and there?

I like your website though.

</comment><comment><USER24> I'm always interested by alternative 'Foxes, but I'm intrigued as to why the installer is about 25MB bigger than Firefox. What's in there that makes it a 50% bigger installer?

<comment><USER17> ICL creates huge libraries, especially with all the flags I use (-O3 -no-prec- div -Qparallel -arch:SSE3 -QaxCORE-AVX2,CORE-AVX-I,AVX,SSE4.2,SSE4.1,SSSE3). XUL generated like this is about 150MB (and for comparison offical Firefox XUL DLL is about 37MB)!

<comment><USER25> I'm pretty sure this is because internally, it has multiple copies of the assembly supporting different instruction sets. So it will have a lib with < SSE3, and then another copy of the same code with the SSE4.x optimizations applied. That way you get the speed benefit of SSE4.x on machines that have it, but it can still fallback to SSE3-only if it doesn't have that ISA.

The Microsoft compiler works similarly. This is why "Release mode" builds with optimization on produce bigger binaries than "Debug mode" builds.

</comment></comment></comment><comment><USER26> I used to use this a year or two ago but quit because it was always lagging behind the official releases. In many cases it wasn't his fault - I remember a few times he had found bugs in the intel compiler that prevented him from releasing new builds - but the reason for the wait doesn't really matter when the advantages are so negligible as they are in this case.

</comment><comment><USER27> Is the Intel Compiler even appreciably faster these days? I thought CLang and GCC had basically caught up...

<comment><USER28> Assuming you compare apples to apples (IE put them both in the same precision modes, tell them both to actually follow the standard[1], etc), it's not appreciably faster for anything except really specialized kernels.

[1] A lot of compilers take "liberties" with the standard by default in the name of performance.

See for example, IBM's qstrict and qstrict_induction.

The default at O2 and above is Qstrict and Qnostrict_induction (IE "change the semantics of my program").

So if you really want to compare performance numbers between compilers, you have to normalize them to something first, be it "go crazy and do what you want to my program" or "follow the standard"

People who compare compiler benchmarks rarely actually do this.

Note that the use cases of the compilers are very different, so it's probably reasonable for IBM/Intel/etc to have these as defaults and GCC/LLVM to have different defaults, but it doesn't change what you would want to compare if you want to compare generated code performance.

<comment><USER29> It took me a while to understand that when you wrote "IE", you did not mean "Internet Explorer", but "i.e." (an abbreviation of the latin phrase "id est", meaning "that is").

</comment></comment></comment><comment><USER30> I'm assuming the largely useless animation on the homepage is meant to make Chrome or Firefox start eating CPU and increase the perceived need for a new browser? I opened the tab, walked away for two minutes and came back to a hot and angry Chrome on my MBP.

<comment><USER31> The actual reason is you're an _Apple_ hipster. On a proper desktop PC, Chrome doesn't get hot and hungry. Ever.

<comment><USER32> My PC must not be "proper".

Aw, snap.

</comment></comment></comment><comment><USER33> I saw the screenshot and was hoping for crapware-free Firefox, but upon downloading it, the damned Hello icon was there in the toolbar. Presumably later versions will add Pocket too, once they start working off a later upstream Firefox version.

Meh.

<comment><USER34> Have you looked at Pale Moon[1]? They're known to be stripping out a lot of components from core browser (no Australis or even Tab Group, though the latter is available as an addon). Biggest weak point is the lack of non- Windows build, but non-official versions are usually available in the forum.

[1]: [https://www.palemoon.org/](https://www.palemoon.org/)

<comment><USER6> They don't have Australis because they're based on an older Firefox ESR.

Stripping out features that are lazily-loaded JS files and in return being stuck with outdated stuff feels like a very weird tradeoff to me.

<comment><USER35> What does "ESR" mean?

<comment><USER6> [https://www.mozilla.org/en- US/firefox/organizations/](https://www.mozilla.org/en- US/firefox/organizations/)

Extended Support Release

They're released on a much slower schedule (once a year) and get security fixes backported. They're intended for big organizations that don't want 6-weekly updates and are willing to live with outdated software.

But obviously its also handy if you want to fork and can't deal with re-basing every 6 weeks. Especially if you don't intend to update your fork a lot. You still get the free security fixes.

<comment><USER35> Ah, same as "LTS" then. Thanks.

</comment></comment></comment></comment></comment></comment><comment><USER36> > _" 4,000,000 downloads and counting"_

This gave me flashbacks to early Firefox download campaigns, and the excitement that surrounded each milestone download count. Seems like such a distant memory now.

</comment><comment><USER37> I didn't find any info on where they compare performance with firefox. Any links?

</comment><comment><USER38> I installed it and it is first firefox on my machine in a long time. It seems fast ... I tried hogs like theverge and they seem to be a tiny bit faster then on chrome, my goto browser.

Thank you Alex, keep up the good work!

</comment><comment><USER39> Looks interesting however the first thing I did after launching it was opening preferences which caused an immediate crash with no error / debugging message or anything.

</comment><comment><USER40> I haven't seen speed benchmarks or anything like that, but out of the six browsers on my computer (Chrome, Vivaldi, Waterfox, Firefox, Tor, IE) I'd be using Waterfox if I wasn't so Google-dependent. It's fast, with a good UI, and somewhat less clunky than Firefox. Plus it's less likely than Chrome to be spying on me.

<comment><USER41> I switched to Opera to escape some of Google's tentacles, and that was a smooth transition. If you want a compromise, it's worth a shot.

I then went the whole hog to Firefox.

uBlock Origin, Self Destructing Cookies, and a VPN (PrivateInternetAccess) and I figure I'm getting as good as I can.

The lack of Flash is a non-issue nowadays for me, especially now the BBC are trialing HTML5.

(Although I generally use get_iplayer anyway.)

My primary issue with Firefox is it seems to be really poorly optimised for multicore CPUs. That's entirely anecdotal, but Opera runs just fine on a low clockspeed quadcore system whereas FF is unusable for me.

On my main machine, I get one core with moderate to high usage, and next to nothing on the other cores. Even if it's maxing out one core and lagging.

</comment></comment><comment><USER42> I have tried Waterfox and Palemoon, but ended up settling on Cyberfox. There are optimized 32 and 64 bit builds for both Intel and AMD CPUs which match the latest version of standard Firefox.

[https://cyberfox.8pecxstudios.com/](https://cyberfox.8pecxstudios.com/)

<comment><USER43> The latest official version of Firefox have windows x64 builds on the beta and dev / aurora channels (and have for well over a year now): [https://www.mozilla.org/en-US/firefox/beta/all/](https://www.mozilla.org/en- US/firefox/beta/all/)

<comment><USER44> There's a project page to make a stable win64 release: [https://wiki.mozilla.org/Firefox/win64](https://wiki.mozilla.org/Firefox/win64)

The goal says before the end of 2015... tick tock

</comment></comment></comment><comment><USER45> "Download for PC"

Hey, I have a PC! It runs Linux. Care to change the above to "Download for Windows"?

</comment><comment><USER46> How does Waterfox compare to something lean and mean such as: K-Meleon ? [https://en.wikipedia.org/wiki/K-Meleon](https://en.wikipedia.org/wiki/K-Meleon)

K-Meleon has been around for a while and does subjectively feel much faster than Firefox and Chrome and passes most tests(Acid etc) out of all the alternative browsers.

Unfortunately, I've grown too used to some Chrome and Mozilla plugins so I haven't switched full time.

</comment><comment><USER47> I almost thought it's their brand new browser with the Rust/Servo engine. Please make it happen, Mozilla.

</comment><comment><USER48> My favorite alternate browser right now is Vivaldi [1]. It's made more for power users with a lot of customization options. It's built by Opera's former CEO.

[1] [https://vivaldi.com](https://vivaldi.com)

<comment><USER49> ? Where did you see more customizable options in Vivaldi. Their technical preview is just basically a Chrome reskin and a very clunky reskin, for that matter.

<comment><USER50> Well they're still doing a better job at it than Opera is and functionality wise it seems fairly close to old Opera releases(Vertical Tab, Sidebar...).

</comment></comment></comment><comment><USER51> I remember Waterfox a few years ago. It made sense to me as I saw it to be an unofficial 64 bit version when Mozilla was offering 32 bit Firefox only. Things changed in the meantime and the current Waterfox offering is not that compelling anymore.

</comment><comment><USER52> What's fast about it? I see a larger download, slower to start, choppy animations, and worse performance on JS benchmarks than Firefox latest.

<comment><USER17> I do apologise about that, now that I'm two revisions behind performance isn't going to keep up with the latest versions of Firefox. Hopefully Intel will release an update to ICL soon so I can catch up :-)

</comment></comment><comment><USER53> I prefer [http://palemoon.org](http://palemoon.org) They offer a 64bit version.

<comment><USER6> PaleMoon is even more outdated, it's an old Firefox ESR.

<comment><USER54> Rumor: "Pale Moon is just a rebranded rebuild of an old Firefox version"

FALSE

Pale Moon has been on a divergent path with its own code for a long time already. It was a rebuild in 2009, yes. It was a rebuild with minor changes in the Firefox 4.0 era, yes. But we've come a very long way since then with an increasing amount of different code being carried over each time it was re- based on later Firefox code. It's a true fork now and has been employing rapid development (as opposed to rapid release) to solidify this independent direction with its own focus and attempt at keeping the browser sane, lean, and offering users choice and stability.

At the same time, Pale Moon's focus on security and evolving networking standards has added features and kept pace with those developments in other browsers, by e.g. adding TLS 1.1/1.2 support a while back, by offering OCSP- stapling, by keeping a close eye on encryption and the browser's security by continuing to port or re-implement security fixes that apply to Pale Moon as a browser. It is neither old nor outdated, it is not a "rebuild" and it does not use obsolete technologies or have security holes.

[https://forum.palemoon.org/viewtopic.php?f=4&t=7818&p=50895](https://forum.palemoon.org/viewtopic.php?f=4&t=7818&p=50895)

<comment><USER6> You should do your own research rather than believing their nonsense claims. Start by diffing their code against various Firefox releases.

</comment></comment></comment></comment><comment><USER55> Genuine question - why is the final file size almost 1/3+ that of Firefox?

</comment><comment><USER56> literally a branded makefile

</comment><comment><USER57> "What makes Waterfox so fast? It's built with Intel's C++ compiler. One of the most powerful compilers out there. This enables us to make the fastest possible web browser for all the code changes we make. This potent combination makes for an unparalleled browsing experience."

Mm-Hm. How's that working out?

[https://www.waterfoxproject.org/blog/](https://www.waterfoxproject.org/blog/) "Just a quick heads up why there hasn't been any news from me in regards to the latest Firefox release. Mozilla have a new tuple header that they've created and gets used fairly frequently and unfortunately, this causes an internal compiler error as can be seen here." [Written by Alex Kontos November 9th, 2015]

Always a pleasure to count the number of clicks needed before you can establish that the only platforms are Mac and Windows.

<comment><USER58> > Mm-Hm. How's that working out?

Why so critical? He's making a bold claim, but you're not even responding to that. You're just attacking him because he's using a different compiler suite? If you know of problems with the Intel compiler suite, how about you let us know what they are instead of passively aggressively pointing to a single recent problem which from the bug report I'm not sure is the fault of Intel's compiler not being conformant or not functioning with a recent feature, or GCC accepting a non-conformant structure, and whether being cross-compiler portable in that way is even a goal of the Firefox team.

> Always a pleasure to count the number of clicks needed before you can > establish that the only platforms are Mac and Windows.

Would you like to guess how many clicks it takes to determine that for Firefox itself when you aren't currently running Linux? It used to be you could easily get to a directory listing of Firefox builds. Apparently it's harder to find now, and Firefox just starts an auto-download for your OS and architecture based on your user agent, and if you search for how to install on Linux, they make it clear that may not be the best way to install ("Use the method that works best for your distro", which may be through the distro package manager).

</comment></comment><comment><USER59> I found this browser to be faster than Chrome and Safari.

</comment><comment><USER60> Already at version 40?? I thought it's new?</comment>


As Deadly as a DDoS: ICANN Unleashes the Whois Accuracy Program - <AUTHOR> http://blog.easydns.org/2014/01/21/icann-unleashes-deadliest-ddos-attack-vector-of-2014/? <comment><USER2> The title is pretty much linkbait.

If you change registrar-level things about your domain, they're now required to confirm your contact info with you. This isn't a "DDoS", or "deadly", or any of that nonsense: it's a new strategy to ensure whois data stays updated.

Whether or not it's an _effective_ strategy for keeping whois data accurate is another debate (I don't think it is), but talking about it like some malicious act is pointless.

<comment><USER3> The end of the article raised a good point though: this is going to train people to click on links in emails that look like they came from their registrar.

That's bad.

The registrar is public information. The registrant's contact information is public (or at least publicly accessible). So, wait a year for people to get accustomed to clicking on links in emails from their registrar, pick a target domain, forge an email from the registrar, send it to owner contact with a link to a phishing page. Congratulations, enjoy your new domain.

<comment><USER4> The email address doesn't seem to be the thing registrars should be "validating" about contact information, anyway. Shouldn't my registrar be calling/texting a code to the included phone number, and sending a letter with another code to the included mailing address?

</comment></comment></comment><comment><USER5> A troll once tried to take one of my websites off-line by reporting to ICANN that the whois info was fake:

[http://www.icann.org/en/resources/compliance/complaints/whoi...](http://www.icann.org/en/resources/compliance/complaints/whois/inaccuracy- form)

That was... interesting.

Good timing on the troll's part as I was migrating from 123-reg to Gandi at just that moment and had to persuade both of them that I was who I said I was and that the info was correct.

If I recall correctly it involved proof that there was a company behind it (company registration documents), proof that the address for the company was correct, and proof that I worked for the company and had the right to represent it.

It's pretty scary to think that your domain might be pulled, and the web properties and email with it, based on a third party report.

At least with this proposal a 15-day window to verify details when you change info is an expected thing.

Oh, and ICANN sent the notification via the registrar to the admin email on the domain... make sure you're monitoring all of those email addresses.

</comment><comment><USER6> This is apparently so the physical mail spammers can send me more physical mail along the lines of "This is the Domain Registry of America! Pay us $1000 to keep your domain!"

Uh, no. Where's the FTC when I need it...

<comment><USER7> I got email from the people who run .us domains demanding a photo of my driver's license to prove I'm American. They did not understand why I might think they were scammers and want them to verify _their_ identity first, nor did they understand _how_ to verify their identity.

<comment><USER6> Are you sure it was them? Having a verified personal identity is not a requirement to have a .us domain. All you need to prove is that you have "a bona fide presence in the United States of America or any of its possessions or territories [Nexus Category 3]."

(It goes into detail claiming that you need to "state" your country of citizenship, but not that you need to "prove" your country of citizenship. An identity document is massively overreaching, IMHO. I never had to prove anything to get jrock.us, and if I have to, I will move the domain.)

<comment><USER7> I ended up thinking it was not a scam but being uncomfortable. It's possible I had originally put a fake address for my whois info, possibly triggering this, I forget. I'm not 100% sure.

Here's the people, i spoke with them on the phone: [http://www.neustar.us](http://www.neustar.us)

here is their first email in april 2011:

Greetings,

As you may be aware, in November 2001, the United States Department of Commerce ("DOC") selected NeuStar, Inc. ("NeuStar") to be the Administrator of the .US top-level domain ("usTLD"), the official top-level domain for the United States of America. As Administrator of the usTLD, NeuStar has agreed to perform random "spot checks" on registrations in the usTLD to endure that they comply with the usTLD Nexus Requirements which can be found at [http://www.neustar.us/content/download/2659/32865/ustld_nexu...](http://www.neustar.us/content/download/2659/32865/ustld_nexus_requirements.pdf) ("Nexus Requirements").

Our records indicate that you are the registrant of the domain name CURI.US.

On April 28, 2011, this domain name was selected for Nexus revalidation and confirmation. According to the information you provided with your registration of this Domain Name, you indicated that you qualify under:

Category 1 - You are a US citizen or permanent resident

As part of our verification process, we ask that you provide to us by no later than ten (10) days after the date set forth above, a written response describing how you qualify under the above Nexus category.

In addition, please verify that the name-servers that you have selected to use are also physically located within the United States as required by the Nexus Requirements.

In some instances, we may request additional documentary evidence from you to demonstrate that you meet the Nexus requirements.

You should be aware that if you either (i) do not respond within the ten (10) days, or (ii) are unable to adequately explain or demonstrate through documentary evidence that you meet any of the Nexus Requirements, NeuStar may issue a finding that your entity or organization has failed to meet the Nexus Requirements. Upon such a finding, you will then be given a total of ten (10) days to cure the US Nexus deficiency. If you are able to demonstrate within ten (10) days that your entity or organization has remedied such deficiency, you will be allowed to keep the domain name. If, however, you either (i) do not respond within the ten (10) days of such a finding of noncompliance, or (ii) are unable to proffer evidence demonstration compliance with the Nexus Requirements, the domain name registration will be deleted from the registry database without refund, and the domain name will be placed into the list of available domain names.

Thank you for your cooperation in this matter. Please let us know if you have any questions.

Kind Regards,

John .US Nexus Compliance ___________________________________________ NeuStar .US America's Internet Address Email: email@example.com

</comment></comment></comment></comment><comment><USER8> I still don't understand why you even need to have an 'identity' to register a domain. They should be happy with a valid email address and leave it at that.

<comment><USER9> Takedowns and law enforcement.

</comment></comment><comment><USER10> How is this different from all the other online services that require you to click a link in an email in order to verify it, and refuse to give you full membership until you do so?

Some of the registrars I use have implemented this policy lately. Turns out it's a non-issue as long as your contact info is valid and up to date (which it should already be).

It doesn't conflict with whois privacy, either, contrary to all the FUD that gets spread around. Any whois privacy service that is worth the cost will forward the verification request to your real email address, and if it doesn't, you should switch to a better service. Using a crappy whois privacy service with no email forwarding is a surefire way to lose your domain anyway.

<comment><USER11> "(which it should already be)."

No, why should domains be required to attached to an individual person?

<comment><USER10> Domains are required to be attached to an email address that can actually receive emails.

An email address is not an individual person.

</comment></comment></comment><comment><USER12> The domain name industry is a dirty scummy dishonest business. There isn't a company one can deal with that at some point won't make you feel like you're forced to work with crooks just to get an online presence.

<comment><USER13> Don't tell my mom I'm a domain registrar! She thinks I'm a webmaster for a cyberporn website.

</comment></comment><comment><USER14> ICANN is a mafia! They did this to actually force some old domains to get back into the market. ICANN as an organization will profit little from this, but the people bribing them (domainers, auction sites, domain escrows, etc.) will vastly profit from it. Imagine what would happen if somebody sends you a letter and they get back a letter saying that you cannot receive the letter as you didn't verify your name with USPS? It's 2014 and things like redemption period and fees are daylight legalized scams. I cannot believe that we allow ICANN to do whatever they want with us for so long!

<comment><USER15> Actually, this whole this was included under pressure from law enforcement agencies (LEAs). Registrars, registries, and ICANN themselves would much prefer we stuck with the old WDRP regime where all that happens is that the registrars periodically ask that registrants verify that the information provided is correct. This new LEA-mandated nonsense is nothing but a drain on registrars (which is a business with thin margins as it is).

Also, redemption isn't a scam, it's a fine to discourage people from making ridiculously late payment! You're given a _45 day_ window after a domain expires to pay for the renewal before the domain ends up in redemption, and registrars are required to send at least three separate reminder emails at specific intervals to tell you the domain is expiring or has expired. If you can't pay your bills within 45 days, ICANN, the registries, and the registrars aren't the problem: you're own incompetence is the problem.

<comment><USER14> No, ICANN is legitimized fraud. You can be 90-day overdue with utilities and you pay a relatively small fee. Phone companies don't give your phone number to your competitor or auction it. This is ridiculous! If the annual fee is $10-15, one shouldn't charge $150 a redemption (i.e. extortion fee)!

<comment><USER15> It's called an 'expiration date' for a reason: that's the date you're supposed to have paid for continued service by. The grace period (and the redemption period) are leeway. It's in no way an extortion fee: you're given plenty of notice before the domain expires, and if it ends up in redemption, you only have your own incompetence to blame.

Also, you don't _own_ the domain, it's a lease. If you let a domain expire and a competitor snaps it up, that's on you, not the registrar. You can initiate UDRP actions to recover it, but it's your fault.

</comment></comment></comment></comment><comment><USER16> Is this supposed to stop people from registering using fake information? That's cute. Any criminal worth their salt will forge that info (including paper scans) in a jiffy. One more inconvenience for 95% of the users.

</comment><comment><USER17> Okay why are we still using a centralized domain name system with authorities? Do we enjoy the crazy keyholders from various countries meeting in secret thing?

We can have many decentralized ways of registering and transferring domains. Namecoin is one, but how hard is it to decentralize the DNS database?

<comment><USER18> To honestly answer your question: the we you refer to isn't in control / power.

The system is centralized because the control over nations is centralized. It will remain that way so long as political power remains centralized. Particularly given the immense importance of the internet economy now to most major nations. The political powers that be are not about to let go of something so important. The domain name system is a huge point of control over national and global economics. If I were a standard issue politician, I'd make you pry it from my cold dead hands.

<comment><USER17> What is to prevent an open source DNS server to be deployed all around the world by various people? And browser makers would just add it to the list of servers once it gets big enough.

Until then, people could download a program or instructions that would add it, similarly to Google's DNS or OpenDNS

Except it would not use the regular DNS system on the back end, but supplement it with its own rules eg not taking a domain offline when registrars do.

<comment><USER19> Nothing except inertia. There are many alternative root operators. It's just that none of them have managed to convince enough people to use them.

</comment></comment></comment></comment><comment><USER20> What is your complaint, exactly? I'd be happy to know that someone cannot transfer my domain out nor change my contact information without verification. 15 days is more than ample time, assuming I initiated the action. And what the hell does DDos have to do with any of it?

</comment><comment><USER21> Can this be done via a "click here to confirm" email, or does this require phone conversations with the registrar? I don't like registering domains using my real name.

<comment><AUTHOR> I got such an email from Namecheap yesterday, and confirmed it with one click.

And unlike the intended trigger for verification ("changes to contact information"), I didn't make any changes to my domain. Either a WHOIS cloak expired, or some other action by Namecheap triggered the verification step.

<comment><USER22> The email Namecheap sends out is very shady looking. I had to google around quite a bit before concluding it was genuine. The verification link leads to the domain raa.name-services.com and is not delivered over https. It looks exactly like I imagine a targeted phishing email to look.

<comment><USER23> That's the same domain they use in the e-mail you get asking you to review the accuracy of your WHOIS data. They send that e-mail for every domain you own, every year, as required by ICANN. For Namecheap customers, the domain should be familiar, after the first mail at least.

The subject line of those mails is: Important Notice Regarding Your Domain Name(s)

The new mails have a stronger subject line: IMMEDIATE VERIFICATION required for [domain]

</comment></comment></comment></comment><comment><USER24> Everyone who's already screwed themselves with domains by proxy is in for a new world of hurt.

<comment><USER15> If you're talking about the GoDaddy service, they're not. If you're talking about WHOIS privacy services in general, then possibly.

If you use a registrar's WHOIS privacy service, then the registrar still has the (supposedly) correct details and are simply masking them in WHOIS. There's no issue there. However, if you're not using the registrar's own WHOIS privacy service, then yeah, you're potentially opening yourself up to a world of pain, as (a) the domain is no longer actually registered to you in a manner verifiable to the registrar and (b) you might not be able to receive important notification emails that the registrar is required to send you (such as expiry notices).

</comment></comment><comment><USER25> Cui bono?

<comment><USER15> Law enforcement agencies. They're the ones that asked for this nonsense.

</comment></comment><comment><USER26> So much linkbait on HN today.

</comment><comment> throwaway-icann This bit me kind of bad yesterday.

I was about to drive out of cell range and got a text that client's site had some strange page displaying.

Unfortunately, they repoint the dns servers of the domain, and the client had the contact email mx records associated with same domain.

The actual site gets 'dns hikacked' by icann until you fill out a captcha on your site's new page and it emails the whois email account on record with the link.

Had to log into the registrar, luckily had the client's account info, changed the email, and got it verified.

That was 3am yesterday.

Says it takes 24 to 48 hours to updated, but it was only like 8.

Still, if you had an ecommerce site or conduct time-sensitive business via email, be careful.

Because, if you do not see the email, your site will be hijacked by ICANN.

<comment><USER6> How do they email you if your contact email is on the domain they just suspended? Time to set a TTL of 100 years, or something, I guess.

<comment><USER27> You should never use a contact email that is on the domain for the DNS record in question. Only bad things can result. I use my most basic fastmail.fm email for that purpose.

<comment><USER6> google.com appears to use a google.com email address in its DNS record.

<comment><USER28> Google probably have a real live person they can call if this gets messed up, or even has the potential to get messed up a few months from now.</comment></comment></comment></comment></comment>


Test Data Generation with Prolog - <AUTHOR> http://jesg.github.io/testing/2014/12/20/test-data-generation-with-prolog.html <comment><USER2> RUGE [1] is another open source PROLOG framework for functional and load testing. Brendon McCarthy originally developed it for testing financial applications at American Express.

Brendon presented it at the 2013 Workshop on Domain-Specific Languages for Financial Systems [2]. One observation made by the Haskellers was that PROLOG approaches such as these are attempting to solve a problem that has already been solved by QuickCheck [3].

[1] [http://bmccarthy.bitbucket.org/ruge/faq.html](http://bmccarthy.bitbucket.org/ruge/faq.html) [2] [http://dslfin.org/](http://dslfin.org/) [3] [https://en.wikipedia.org/wiki/QuickCheck](https://en.wikipedia.org/wiki/QuickCheck)

<comment><AUTHOR> Ruge looks interesting but the last commit is November 2013. Is the project still active?

Ruge is dependent on SICStus Prolog[1] which is proprietary. Has anyone had success running ruge on an opensource prolog such as GNU Prolog, swi-prolog, or yap?

[1] [http://bmccarthy.bitbucket.org/ruge/download.html](http://bmccarthy.bitbucket.org/ruge/download.html)

</comment></comment><comment><USER3> Findall is just a cartesian product...something easily available in pretty much any language out there. Not that I think Prolog is a bad fit for test data generation, just that this example is entirely too simple to show its power.

Where Prolog becomes really powerful for this use case is modeling the underlying business rules and selectively creating test cases that acknowledge those rules. A tiny bit of familiarity with Prolog goes a long way here. I've modeled about 95% of the underlying logic of 50k SLOC Java business rule systems using less than a hundred lines of Prolog. And the ability to infer both forward and backwards is extremely powerful (ex. if you have created F(X,Y) = Z, then you implicitly have a rule for determining X given Y and Z).

<comment><AUTHOR> author here:

Yes, this example is simple. IMO it's best to introduce people to what they are familiar with. I didn't want to write an example that demonstrated the full power of prolog but lost 90% of the crowd. My hope was that this would spark curiosity in how prolog can be used to generate test cases.

At the moment I'm using the technique in the post to generate happy path test cases for an application with lots of buisness rules.

</comment></comment><comment><USER4> so the trick is to use findall? and the problem is that nobody knows prolog?

why not then just implement findall for other languages? it's like 2 or 3 loops anyway, if you don't care about performance. which you don't since this generates test data</comment>


Interview with DuckDuckGo CEO Gabe Weinberg - <AUTHOR> https://www.vox.com/recode/2019/5/27/18639284/duckduckgo-gabe-weinberg-do-not-track-privacy-legislation-kara-swisher-decode-podcast-interview <comment><USER2> Duckduckgo - Based in US / very weak privacy laws

Servers - hosted using Amazon (AWS)

Bangs aren't safe. For example typing "!g kittens in basket" and hitting return, drops you off on the Google website to display your results (thus logging your IP, search term and browser info immediately).

DuckDuckGo is owned by Gabriel Weinberg who is is the founder, current CEO and controlling shareholder. Investors/shareholders include Union Square Ventures and several others. DuckDuckGo generates it's income from advertising (Bing Ads) and collects affiliate revenue (Amazon, eBay).

Duckduckgo and Yahoo partnership [https://web.archive.org/web/20160724030640/](https://web.archive.org/web/20160724030640/)

[https://duck.co/help/results/yahoo-technical- implementation](https://duck.co/help/results/yahoo-technical-implementation)

[https://duck.co/blog/blog/post/311/yahoo- partnership](https://duck.co/blog/blog/post/311/yahoo-partnership)

Duckduckgo has no audit

Duckduckgo gives out a HTTP header field that identifies the address of the webpage.

Both companies were asked "if you were ordered to compromise your service/customer privacy in any way would you"

DuckDuckGo – Gabriel Weinberg said: "No one is preventing me from doing that."

<comment><USER3> As a fan of DDG (I use it daily), I had no idea there was this much risk -- I was surprised enough to find out they offloaded search to Bing a while ago (but also I don't blame them, it's probably pretty hard).

Even with these hangups, I still think any near-viable option to Google should exist.

[EDIT] - just realized it's only been 20 minutes (not a day) -- looking forward to DDG's response

<comment><USER4> There is so much to say.

In practice, DDG revenues depends on tracking visitors.

DDG asks third-parties to track (Yahoo/Bing ads), so if someone asks "do you track? NO! WE DON'T". They don't need to create a user profile, the keyword based ads pay enough.

This is the catch, "we don't track, but we ask our partners to do it for us".

The same with Amazon affiliate revenue. Did you know that DuckDuckGo had access to the whole history of items bought through their affiliate link ?

It's a detailed item list, like "3 x Happy Belly Dried Mango, 500 g" Every, single, item.

No tracking (◠ ‿ ◠)

</comment></comment></comment><comment><USER5> AT&T tried this and it didn't go well. For a time you could get a discount on your internet if you opted into their data tracking programs. From what I heard, there was a lot of complaining and little uptake, which is backed up by the fact that they cancelled the program less than a year later and just started charging everyone the lower price (and claimed that they stopped the tracking).

I think people don't want to be reminded that they're being tracked, which is possibly why it went poorly, but this will be a problem with any company that wants to do opt in tracking.

<comment><USER6> At 13m in, he uses the fact that around 10% have turned on DNT in theri browser as a proof that people actually care about tracking, but haven't multiple browsers started turning on DNT by default?

<comment><USER7> Safari is removing (or removed already?) DNT simply because websites are still tracking visitors regardless if DNT was enabled or not.

<comment><USER8> And because DNT was used as an additional data point to fingerprint the browser and enable more tracking.

</comment></comment></comment></comment><comment><USER9> We use this term "personal data" so much. But what IS data?

If I happen to know that you like cheese sandwiches, is that really data? When did we decide that knowing something about somebody else was such a big deal?

I feel like this whole brouhaha about data has left me behind.

<comment><USER10> It's a huge deal. I didn't tell you I like cheese sandwiches. You found out against my consent. You violated my consent,which is a huge deal for me.

I get to decide who knows whether or not I like cheese sandwiches. If I am a free person,equal with you under the law then how is it ok for you to violate my consent and persistently stalk me to find information about me for your own gain?

<comment><USER11> If you order cheese sandwiches every time you eat out, and your friends observe that you like cheese sandwiches without you telling them, did they "violate your consent"?

If you eat lunch at the same place, and the guy who takes your order notices you like cheese sandwiches, did he "violate your consent"?

If the same guy happens to be in line behind you a few days in a row and notices that you always order cheese sandwiches, did he "violate your consent"?

I agree the behavior is a bit creepy in the same way I (very) mildly dislike it when the sandwich shop guy knows my order, but it is also unreasonable to expect information you share with others to be kept private. It's not "stalking" for someone to observe things about the world that were made available to them. To change that would necessitate some pretty ugly regulations that would infringe on the rights of everyone (including you).

<comment><USER10> I disagree with that. It's nit someone remembering I ate a cheeseburger,they're writing down that I ate a cheeseburger and using that information for profit or to keep tabs on me,you need consent for that. They didn't notice I eat cheeseburgers as a matter of coincidence, they intentionally set out to see what food i eat and use that information. There is a term for that: stalking (which is illegal)

</comment></comment></comment></comment><comment><USER12> Not only should we opt in but there should be a (digitally) signed chain of custody showing the exact derivation of any information held by 3rd parties that in itself, or when combined with others, can identify and reveal information about individuals.

<comment><USER13> Be real. You are saying that data should not be collected at all.

<comment><USER14> I've long dreamed of a contract system in the world that does this. Every contract you're apart of, becomes explicit. We get paid for our data based on our preferences. Let's say the cost of showing me an ad is $51, so be it, it that means I can't read a blog post - fine, at least I agreed to the the terms for a price.

The system would be all encompassing but organized by agreement type - titles, loans/mortgages, insurance, purchases/warranties, ad networks, bets, etc... All managed by an open system but used by private parties. I don't advocate for this to be done by say, etherium, I still think the classic system can be used to decide disagreements, but at least all of what you agreed to will become very explicit. And there can be ways to "break out" of agreements, with whatever very explicit ground rules to be followed after that.

</comment></comment></comment><comment><USER15> The problem for businesses, of course, is that nobody would opt in. Data collection is something literally nobody wants, and the only reason it survives is because most people don't know what these companies are doing, or aren't able to keep up with the ways to decline being included in it.

Data monetization is an inherently harmful and unwanted business practice.

<comment><USER16> No one would partake in something they don't like if they're made aware of it and have a choice... well, good?

</comment></comment><comment><USER17> Let's take it a step further and have AdBuddies from Maniac

<comment><USER18> I loved that part the most about Maniac. I hate ads but at least AdBuddy is entirely more obvious. Its like sponsored living.

</comment></comment><comment><USER19> Or make a kind of asset out of a persons likeness and data. Endow individuals with ownership of their likeness and data. Give them something they can demand payment for storing, using, and selling.

I'm thinking something like the minimum civil court valuation per month of storage or use. Likeness and data would be defined by a jury of their peers.

</comment><comment><USER20> If anyone is convinced what they are doing is good for end users they would let them make the choice. But expending time and energy to design and code deceptive dialogs with misinformation and avoid transparency betrays the opposite. You don't need an ethics course for this, it's willful fraud and deception.

Our societies are shaped as much by technology as by the incessant greed of a few often couched in euphemisms like 'innovation' and 'drive' to justify their value but these only accrue to a few. Behavioral targeting and surveillance have negative externalities for everyone not making money from it, and even for them in the wider societal and long term context.

If this is the behavior we are incentivizing then either we provide strong regulations to counter greedy and unethical behavior or accept these as our fundamental driving values without fabricating a 'feel good' alternative reality as a fig leaf or feigning shock at mercenaries in our midst.

</comment><comment><USER21> TLDR; Most money made from advertising is still contextual, however because it's possible for G/FB to monopolize behavioral advertising and there is no regulation to prevent it, they do it anyway. Opt out is stupid: _I 'd like food that isn't tainted, please_. Filter bubbles are bad news macro- politically. Regulation is rarely effective but still a good idea. Corporate fines should be two orders of magnitude larger. Instagram does evil things to your brain.

</comment><comment><USER22> It's already there. That's one of the European GDPR core rules.

</comment><comment><USER23> we should, but can we? of course not... it need to be a law

</comment><comment> another-dave What a badly copy-edited headline (from the original article). Maybe just me, but my first reaction reading it was "Why is the CEO of Duck Duck Go advocating opting-in to data tracking?

Actually, he was saying we should _have to_ opt in to data tracking, if it's something you want. [/Pedant]

<comment><USER24> This is why this is blatant clickbait

<comment><USER25> The only way to stop this is by starving their hunger for clicks.

It would be nice having a global clickbait variable to be attached to an URL or a domain, so that it can be community updated when titles such as this one are used, then a browser extension reads it and warns before clicking it.

Of course I would expect heavy abuses of such a tool...

</comment></comment></comment><comment><USER26> The irony here is that this article has at least 20 trackers.

PS: Firefox Quantum is great

<comment><USER27> There are at least two possible arguments behind this question.

One (which, to be clear, is not how I interpret your comment) is the tired gotcha "if you hate society, why do you partake in it?", which is simply not substantial enough to answer.

The other argument I've seen is actually worth some thought, though I'm not ready to give a definitive answer in either this case or as a general principle:

 _Entities that play a certain game effectively endorse that game by playing it_.

The devil lies in the corollary to that observation: _whatever prizes are awarded by that game will only go to entities that are willing to play that game_.

<comment><USER26> > There are at least two possible arguments behind this question.

What was the question?

<comment><USER27> "Question" as used here is closer to "matter" or "problem" than to asking.

I just can't find the right word to describe a _point raised about a paradoxical relationship_. When I read it, I find an implicit question, though I cannot put to words the exact inquiry. Maybe "Why?"

In a way, all replies on a public forum are implicit questions. (This is where I get even more hand-wavy, sorry)

</comment></comment></comment></comment><comment><USER28> The opt-in/opt-out arguments is a valid one and DDG IS my primary search engine and I love it. BUT, I must say this pseudo-activisim by DDG has become too much now, they're building this pure and altruistic image whereas obviously they will directly benefit from regulation and hurting Google!

<comment><USER29> What is "too much" and "pseudo" about their activism? Yes, they indeed directly benefit from that. What is wrong with having a privacy-respecting monetization?

<comment><USER28> I think it could hurt their image in the long-term. I've already seen others complain here and there about the pushy narrative, they just need to be more subtle about it. Again, I'm using DDG and want them to expand so I want what's best for them!

<comment><USER30> > I've already seen others complain here and there about the pushy narrative, > they just need to be more subtle about it.

what should they do instead?

<comment><USER31> Have more of a sense of humour about it. I think most complaints I've seen about people on this seem to mostly be tonal.

</comment></comment></comment></comment></comment><comment><USER32> Does anyone remember outcry of advertisers after Microsoft made absolutely useless and toothless Do-Not-Track option opt-in instead of opt-out? They were stinking and whining for months and finally got what wanted. The answer is no, unless some "communists" will regulate this spy community of advertisers they will never agree to lessen data collection (including the switch to opt-in).

<comment><USER33> Personally, I think even without Internet Explorer ruining Do-Not-Track (which I also think Microsoft torpedoed on purpose by making it the default), the tracking companies wouldn't have respected it. They were looking for an excuse not to comply with DNT after promising Congress they would self-regulate, and IE gave them a fig-leaf to go back on their word.

</comment></comment><comment><USER34> I don't think it's up to the user to decide how data about them gets used.

Regulation like GDPR only makes it more difficult (impossible) for competition to emerge. It basically secures the future dominance of big players like Google and Facebook.

Making people pay a monthly fee to get their data collected and analyzed seems like the next big business model. We will soon reach a limit on the usefulness of passively collected data and will need to switch to a more active model.

I would prefer to have complete access to data about myself, but it would be unreasonable to expect a monopoly on it.

<comment><USER35> > I don't think it's up to the user to decide how data about them gets used.

To a certain extent, I'd agree. Specifically in the case of things like analytics data.

The real problem is people not knowing this data is being collected in the first place where you can't make any kind of informed choice on opting in.

<comment><USER36> Under the GDPR,

"the data is not available publicly without explicit, informed consent, and cannot be used to identify a subject without additional information stored separately. No personal data may be processed unless it is done under a lawful basis specified by the regulation, or unless the data controller or processor has received an unambiguous and individualized affirmation of consent from the data subject. The data subject has the right to revoke this consent at any time.... Data subjects have the right to request a portable copy of the data collected by a processor in a common format... violators of the GDPR may be fined up to €20 million ..."

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

Key phrases here: 'explicit, informed consent' ... 'lawful basis' ... 'right to revoke this consent' ... 'fined'

<comment><USER35> I know the regulation. That's not what I'm arguing here.</comment></comment></comment></comment>


Modern textureless deferred rendering techniques - <AUTHOR> https://forum.beyond3d.com/threads/modern-textureless-deferred-rendering-techniques.57611/ <comment><USER2> Disclaimer: I've played with toy deferred renderer a bit, not a graphics guy.

This not about "traditional" deferred rendering, but textureless deferring rendering. No textures, surface normals, material information or other data typical to deferred renderers is baked in the per pixel MRT buffers. Just barycentric coordinates and a "pointer" to the geometry and material data.

In this technique, and texturing (unlike in traditional deferred rendering) is only done at the final texturing and lighting pass (or passes). Thus no texturing or lighting will ever need to be done for occluded objects.

Textureless deferred rendering technique can get away with rendering significantly less and with a tiny 64-bit (8 bytes) per pixel buffer. Only 2x 16 bits for barycentric coordinates and triangle + instance id stored in 32 bits -- as a memory pointer or with some type of packing, like 16 bits for both.

This saves a lot of buffer memory (2-4x), computation (each screen pixel is lit and textured just once) and memory bandwidth.

Traditional deferred rendering is used so that lighting and material calculations (fragment shader) needs to be done just once per rendered screen pixel. It requires a huge buffer, usually either 16 or 32 _bytes_ per each screen space pixel. Or in other words, 128/256 bits.

Deferred renderers bake texturing in the pre-lighting passes as well as information about material, surface normal, etc., which the final lighting pass will use. That's why they have to store so much per pixel data. Just 16-bit per component RGB alone is 8 bytes. That's why they're limited to relatively small number of materials (or at least parameters for them), because the final lighting step fragment shader must get all of the lighting related data from the per pixel buffer.

</comment><comment><USER3> Mozilla Hacks article on deferred shading in WebGL, for anyone looking for some weekend fun ;)

[https://hacks.mozilla.org/2014/01/webgl-deferred- shading/](https://hacks.mozilla.org/2014/01/webgl-deferred-shading/)

</comment><comment><USER4> For people with just some basic computer graphics background that don't know what this "deferred rendering" is: when this technique became popular, these [1] slides were popular and inspired many.

[1]: [http://www.slideshare.net/guerrillagames/deferred- rendering-...](http://www.slideshare.net/guerrillagames/deferred-rendering-in- killzone-2-9691589)

<comment><USER5> It even inspired a WWII plane game to use deferred rendering, which optimizes for having many lights on an object. Even tho they for the most part had only one light source (the sun)...

[https://www.youtube.com/watch?v=UuDPTw_j6zw](https://www.youtube.com/watch?v=UuDPTw_j6zw) (it's somewhere in this presentation, but I'm on mobile ATM)

<comment><USER6> Many lights is not the only advantage. There are some deferred decalling techniques that I could see be very useful to a flight simulator for terrain drawing, for example.

</comment></comment></comment><comment><USER7> In tiling rendering architectures like you usually see them on mobile GPUs you can also use pixel local storage[1] to have G-buffer information never leave the on-chip memory. The Vulkan api also introduces subpasses that implicitly support this.

[1] [https://www.khronos.org/registry/gles/extensions/EXT/EXT_sha...](https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_pixel_local_storage.txt)

</comment><comment><USER8> Deferring a Phong shader gives 'good enough' dynamic lighting for 2D dynamic sprite lighting and is fast.

[https://29a.ch/2010/3/24/normal-mapping-with-javascript- and-...](https://29a.ch/2010/3/24/normal-mapping-with-javascript-and-canvas- tag)

<comment><USER9> The demo on the left (the face) has a disorienting "ripple" effect, at least in FF44. The Buddha appears fine, though.

</comment></comment><comment><USER10> No props to Wolfgang Engel on his Light Pre-pass Deferred Renderer or am I missing something?</comment>


Ask HN: Can Hacker News be considered a social network? - <AUTHOR>

Social networks usually attract a wide range of people. However, LinkedIn is a great example of a social network that targets a more selective audience than other networks that preceded it. The people who use it are usually professionals looking to make connections online. Quora, StackOverflow, and other sites that started out as Q&A services have show potential in the social networking market as well.
So I was wondering if we could start calling Hacker News a social network. While HN has always been a place for inquisitive minds to share links and ideas, it has also become a place for people to connect with others who have the same interests. It may not be the social network most of us are used to, but it does provide the same uses (interacting socially with others) under a different context. One of the reasons why we can consider HN a social network is the fact that many of use use our real identities rather than anonymous ones (a group that I ironically don't belong in).
Anyways, I wanted to hear other people's opinions on naming HN a social network. While categorizing HN as a social network may not have that many applications, the discussion around it can help clarify the true purposes HN serves and new online areas the site can expand in to. <comment><USER2> HN News lacks two features that are predominant in social network site: follow people and like postings. I would not call HN News social networking. I'm hoping HN News can add like/favorite feature so that I can bookmarked posts/discussion right within HN News.

<comment><USER3> wouldn't upvoting a story be considered the same as liking a post. Then go to your profile and view saved, then you can view posts you liked. Also comments in your profile you can view discussions you participated in.

<comment><USER4> I would also suggest that "liking" isn't a feature necessary to call something a social network. ie Myspace, Twitter (favourites perhaps?), Linkedin etc</comment></comment></comment>


French artist submits 3D rendered image of his face for a national ID card - <AUTHOR> http://prostheticknowledge.tumblr.com/post/161821546176/cni-project-by-french-artist-rapha%C3%ABl-fabre <comment><USER2> Yeah, but the photograph of ACTUAL HIM is also a mere representation. So... big whoop.</comment>


Show HN: A tightly coupled set of services designed for startups on a budget - <AUTHOR> https://fancysupport.com

<comment><USER2> Well, users will give you quite some important data, you should at least say who you are and what your story is on the page, no?</comment>


Ask HN: Has anyone taken Google's course on how to use Google? - <AUTHOR> http://www.powersearchingwithgoogle.com/
Thoughts?
I know it's not https, but it is Google's course. It's linked to by a Google domain:
https://edu.google.com/openonline/course-builder/index.html <comment><USER2> Well, it's not asking anything of anyone to view the content, so I guess even if it wasn't Google's, it's fine.

Pretty interesting. It's not specifically about Google. The content seems applicable to any web search engine.

> Verify the credibility of information you find on the web.

> Avoid confirmation bias when conducting searches.

> To verify the source of a piece of information, use the precise information > you have.

> To confirm a fact, use a generic description for what you seek.</comment>


Simple Rule of 72's - <AUTHOR> http://skylarrudolph.blogspot.com/2014/03/rule-of-72s.html?

<comment><AUTHOR> This is an open forum for discussing how to remove yourself from technology using my proven method.</comment>


Reactive Streams for the JVM - <AUTHOR> http://www.reactive-streams.org/

<comment><USER2> This looks very cool and the list of people involved is very impressive. I can see it being useful for apps with web and mobile clients.

What I found to be missing is some comparison to JMS. I can see many differences but also some commonalities. Especially since JMS implementations have some support for slow message consumers [1].

At my previous work we dealt with lots of live data from monitoring and in order to cope with slow consumers we started to look into conflation. Would be interesting to see if this project includes conflation support in the API.

[1] [http://activemq.apache.org/slow-consumer- handling.html](http://activemq.apache.org/slow-consumer-handling.html)

</comment><comment><USER3> This spec is total overkill. First, you don't need to conflate a pubsub interface with async streams. Two totally different problems. Second, async streams are easy:

[http://stackoverflow.com/questions/21143996/asynchronous- ite...](http://stackoverflow.com/questions/21143996/asynchronous-iterator)</comment>


JavaScript is Dead. Long Live JavaScript - <AUTHOR> http://peter.michaux.ca/articles/javascript-is-dead-long-live-javascript <comment><USER3> Great and thorough article. Here's a TLDR:

* Javascript has some warts, and here are some examples.

* It's going to take way too long to get these fixed to the point that we can actually start using new versions of Javascript because of slow browser adoption.

* To get around this problem, people are treating Javascript as a compilation target for other languages, the most prominent example being CoffeeScript.

* Discussion follows of features that would make Javascript better serve its increasing role as a compilation target.

* There is discussion of Harmony throughout.

Sometimes offering a TLDR indicates that the article isn't worth reading "so here are the author's points so you can skip it". That's not the case here. For example, I learned about "Tennet's Correspondence Principle", which helps to give a name to the different ways procs/blocks and methods/lambdas behave in Ruby, as explained in this article[1].

[1] [http://www.robertsosinski.com/2008/12/21/understanding- ruby-...](http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks- procs-and-lambdas/)

<comment><USER4> "It's going to take way too long to get these fixed to the point that we can actually start using new versions of Javascript because of slow browser adoption."

Which isn't true, because you could compile newer versions of javascript to older versions. I see languages like coffeescript as interesting experiments in how the language can evolve, but eventually it needs to come back home to javascript and get deployed natively in browsers.

<comment><USER5> Good point. I hadn't thought of compiling old versions of javascript to new versions - that keeps everyone writing in the same language and seems like a better solution to me.

<comment><USER6> There was an ES4-to-ES3 compiler. The Traceur compiler takes many of the Harmony ideas and compiles to ES3.

</comment></comment></comment></comment><comment><USER7> > If your application uses the let idiom, wouldn't it be nice to have new > syntax for it?

Mozilla introduced this back in Firefox 2, and you can replace var with it, so TFAA's

        for (var i=0, ilen=elements.length; i<ilen; i++) {
            var element = elements[i];
            let (num = i) {
                LIB_addEventListener(element, function(event) {
                    alert('I was originally number ' + num);
                });
            };
        }

becomes:

        for (let i=0, ilen=elements.length; i<ilen; i++) {
            let element = elements[i];
            LIB_addEventListener(element, function(event) {
                alert('I was originally number ' + i);
            });
        }

Of course, since this does not quite seem to be a tight loop you should be using Array.prototype.forEach instead:

        elements.forEach(function (element, i) {
            LIB_addEventListener(element, function(event) {
                alert('I was originally number ' + i);
            });
        });

> The JavaScript idiom that potentially spans the most lines of your program > may be the inheritance idiom.

That's not an idiom. And there are numerous implementations of classes on top of prototypes out there, if there's one javascript "problem" which does _not_ need new syntax it's that one.

<comment><USER8> Actually, the forEach version can end up faster than the let version... especially if you self-host forEach so that the JIT can do its job (e.g. inlining the LIB_addEventListener calls so there aren't actually any function invocations, etc).

<comment><USER7> > Actually, the forEach version can end up faster than the let version...

Theoretically maybe, but I've yet to see that. A regular `for(;;)` is generally 3-5 times faster than using `Array.prototype.forEach`.

Re. JIT, hand-rolling a foreach in javascript can be up to twice as fast as the native one, depending on the features you leave out.

<comment><USER8> > Theoretically maybe, but I've yet to see that

Compare the let version to the code in <https://bugzilla.mozilla.org/show_bug.cgi?id=602132>

</comment></comment></comment></comment><comment><USER9> "Optional Parameters and Default Values"

Since JavaScript will still invoke a function call even if the number of arguments don't match up, parameter defaults will not completely eliminate all the problems he lists.

      function(a = 1, b = "Smith", option = {}) { .. }

Will still break upon trying to invoke it without parameter 'b' since param 'option' will just take its place while option will become an empty object.

Furthermore he argues against "option = option || {};" only to do the same thing in the function header: "function(a, b, option = {}) { .. }"? What difference does that make?

The whole section in my opinion is negated by passing object literals to functions. Stuff like:

      func({ a: 1, b: "Smith", option: { .. });

That makes it easy to read and easier to handle since names are agreed upon by both the caller and the function handling the invocation:

      var opt = config.option || {};

This is a common practice in JavaScript already, and it beats the solutions he wished were added to the language.

<comment><USER10> I'm very much in agreement with objects-as-named-params. Default params just mitigate the problem, ambiguous function calling still rears its head as soon as you have multiple optional arguments of the same type.

As to the "option = option || {}", he was referring to the ultimate "option = {}" assignment if you _passed_ a falsy value (0, "", false), which is different than if you _didn't_ pass a value (undefined). Which is resolved by "option = option === undefined ? option : {}", which is even larger and kinda ugly.

<comment><USER9> Ahh, I see. The thing is, I can't think of a single way to make {} be treated as false in the boolean context, so 1) I don't think you'd ever need anything more than "option = option || {}", 2) I think the example would have been better off using an integer or string where you actually might have to use the ugly long format.

EDIT: Unless of course you get some non object value passed in and you want to be sure to keep it regardless of whether or not it is falsy. Not sure why you'd want to do that -- I am sure I would NOT like to see someone do that if I had to deal with their code.

</comment></comment></comment><comment><USER11> "Do you want to maintain a compiler? Does anyone on your team have the skills to do that? That ulcer is going to get pretty big while you prepare to explain to the CEO that you now need to rewrite the UI in JavaScript."

GWT could be really strong. But it's this single maintainer problem that I think prevents it's penetration into the market.

Sadly when I hear people talk about the "strengths" of GWT, debugging and IDE debuggers is what I hear most. If that is the core reason for using GWT it seems shortsighted.

And for me personally I find that using Java (static typed system) to compile down to JavaScript (dynamic function system) is too big a paradigm switch for developers to maintain. Other languages, specifically functional type languages are far better for maintaining language paradigms in compiler situations.

<comment><USER12> Why isn't the 'single maintainer problem' a concern with other programming languages? What language DOESN'T have a single organization leading its development? Even worse, some projects (incl. coffeescript) seem to be controlled by just a handful of individuals who can easily be hit by a bus, hired away to do something else, lose interest, etc.

I think the only way to defend against that is to have an open source project, and to have a sufficiently large user base such that someone is sure to take over if the owners drop the project.

I think the strength of GWT is that for some languages/teams, a statically typed language is more appropriate than a dynamic language. And isn't more choice a good thing? Avoid the whole 'this is a hammer, everything else is a nail' approach?

I do agree that some teams choose GWT for inappropriate reasons though.

<comment><USER11> Good questions/points.

I would only respond with that in particular, GWT is more than a compiler - <USER2> is as much a JRE as anything. So there is more to it. I personally don't see Google doing much public interaction with the development of the GWT compiler. If it's left to Google and its own time then my point remains.

JavaScript on the other hand really doesn't have a single organization leading it's development. Maybe this is an argument to be made about its perceived slow progress. Language design by committee is pretty slow.

More choice is good. Always. But right tool for the job should always win.

</comment></comment></comment><comment><USER13> He calls inheritance in Javascript a wart. It's one of its major strengths, IMO: the fact that you can directly override methods for a single object. Class inheritance, as he'd like to see, is not all it's cracked up to be. Just look at Java with its anonymous inner classes, for one incredibly ugly construct...

BTW an easy way to produce traditional class inheritance in Javascript is to have a single instance from the class you're trying to inherit from, as the prototype. (To work properly that object should be "abstract": have no ties to any physical resources, like a browser widget, a database handle or a file handle.)

<comment><USER5> Yeah, javascript's prototypal inheritance is flexible enough to simulate classical inheritance. I wouldn't call that a wart.

<http://www.prototypejs.org/learn/class-inheritance>

<http://dojotoolkit.org/reference-guide/dojo/declare.html>

Plus, I tend to prefer prototypal inheritance to classical inheritance. I do agree that the constructor pattern using the new keyword and the prototype object is a bit odd, but that's not the only way to have objects inherit from other objects in javascript.

<comment><USER14> The wart is that since classical inheritance isn't built into the language, we get:

1) Crummy syntax. 2) Everybody doing it a different way.

<comment><USER5> I see your point to some extent. I don't think the functions for mimicking classes provided by libraries like Prototype and Dojo have particularly crummy syntax. But since there isn't a standardized way to create classes, implementations are usually a little different.

Still, according to this logic, any language that doesn't support classical inheritance has warts. I'm not sure I agree with that. JavaScript doesn't have classical inheritance built in, but I haven't seen anything to make me think that it's really needed from a programming standpoint. Your point #2 is valid, but could that can be attributed to the programmers who use the language rather than the language itself?

</comment></comment></comment></comment><comment><USER15> He did mention the GWT Java to Javascript compiler. I have been using GWT (actually SmartGWT) a _lot_ lately because one of my customers uses it. Except for long build times, the GWT Java to Javascript compiler has a lot going for it. Once a project is built and running in test + debugger mode, the client side development experience is pretty good.

</comment><comment><USER16> Why not just have a library in Javascript, for example:

      Q.each(arr, function(i) {
         this.rocks();
         arr.pop(); // watch out doing this in the loop
         arr.push('foo'); // watch out doing this in the loop
      });

      Q.each(obj, function(k) {
         this.rocks();
         delete obj[k]; // should be safe maybe
      });

      var p = Q.pipe(crazy stuff involving pipes and callbacks)
      doSql("SELECT * FROM users", p.fill('users'));

      getUsers = Q.getter(getUsers); // turns it into a really  smart getter

      getUsers = Q.batch(getUsers); // turns into into a batched getter

and lots of other stuff

Why must the language take care of everything for you when libraries can do it? That has been the case with C, C++ and other languages.

<comment><USER6> Features that can be added through libraries should be added that way. You cannot add new syntax which involves scoping of variables through libraries. How would you do destructuring assignments with a library and have it as succinct as it can be done with syntax?

<comment><USER16> Yeah, some features can be pushed into the language, but I like languages which have few rules. Like C and like CHESS :)

My favorite languages are C, Java and Python though. So go figure...

<comment><USER6> If you like minimalistic languages, have you checked out Scheme? Because of its macros, the core language can stay small and the users can expand its syntax.

</comment></comment></comment></comment><comment><USER17> I tend to agree that compiling to JavaScript is the future of browser programming. CoffeeScript seems to be a nice language, but I bet there will be many more to come in the next year or two.

<comment><USER18> I hope someone writes a decompiler for one of these supra-JS languages (not sure if CoffeeScript is Turing-complete) to run against existing Javascript codebases. It could well speed up adoption if a mass-tangle of JS can be boiled down to a more readable and understandable structure.

<comment><USER19>
      > not sure if CoffeeScript is Turing-complete

Wait, why wouldn't it be?

<comment><USER18> Heck if I know, I'm not CS trained.

Point being, CoffeeScript and other compilers would get a big boost if someone came out with a way to convert existing JS codebases into these new, more readable, more maintainable (as the story goes) representations.

<comment><USER20> js2cs - <https://github.com/mindynamics/js2cs>

Though I've found doing the conversion manually is a better way to learn CoffeeScript. Plus, it is a point for optimization and refactoring since CoffeeScript allows for doing certain things more easily or in better ways. The automated conversion only does so much.

</comment></comment></comment></comment></comment><comment><USER21> What happened to the idea of standardising Mono (the open source .NET) bytecode as a new browser language?

Then you can use whatever java-like/basic-like/functional-like language you want, and have it compile to bytecode. Also, with sophisticated JITs for that style of bytecode already lying around, you could probably instantly beat javascript's performance even under the best engines, because of static typing etc. rather than relying on ridiculously complicated static analysis.

It'd have to be supported side-by-side with javascript for the forseeable future, but the earlier you get a change like this in, the better...

<comment><USER22> 1\. JavaScript's speed is actually not far from Mono's now. And constantly getting closer.

2\. I don't think anyone but Microsoft would support .NET bytecode in the browser, simply because Microsoft controls .NET and has patents on it. It would take a lot more to reassure other browser vendors than Microsoft's existing CPs.

3\. Running _dynamic_ languages on Mono is slow. Look at the speed of all the dynamic languages on Mono (or the JVM for that matter), and compare them to native implementations of dynamic languages, in particular JavaScript and Lua. The native implementations beat dynamic languages on Mono by a large margin, simply because .NET is a bytecode made for static languages. Of course you can say that you prefer to have static languages in the browser over dynamic ones, that's a legitimate opinion of course, but not everyone would agree.

4\. Standardizing on bytecode can inhibit innovation. JavaScript doesn't have a bytecode standard, which let JS engines implement very different ways of running it (V8 doesn't have a bytecode interpreter at all, for example). Of course standardizing on syntax also inhibits innovation, just in other ways, it isn't clear which is better.

5\. Static languages compiled to JavaScript (that is, that use JavaScript as their 'assembly') are getting quite fast. Some benchmarks I ran found them to be around 5X slower (on the development versions of SpiderMonkey and V8) than gcc -O3, compared to Mono which is 2.5X slower, <http://syntensity.blogspot.com/2011/06/emscripten-13.html>

6\. There is already Silverlight/Moonlight which does .NET in browsers, and it hasn't been very successful. (Of course it is a chicken and egg thing, if it were bundled in browsers it might be more popular. But the failure of Silverlight is a disincentive to add Mono to browsers nonetheless.)

For all these reasons, I don't think Mono has much of a chance to be included in browsers. Most of the same arguments apply to other static-language bytecodes like NaCl.

<comment><USER9> >> 1\. JavaScript's speed is actually not far from Mono's now. And constantly getting closer.

[http://shootout.alioth.debian.org/u32/benchmark.php?test=all...](http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=csharp) <\- That still looks sort of far to me.

>> 3\. Running dynamic languages on Mono is slow. Look at the speed of all the dynamic languages on Mono (or the JVM for that matter), and compare them to native implementations of dynamic languages, in particular JavaScript and Lua. The native implementations beat dynamic languages on Mono by a large margin, simply because .NET is a bytecode made for static languages.

It's not fair to compare JavaScript, which is already approaching a limit of how fast it can go, with the speed it gets running in Mono. Why? The two implementations have a vast difference of amount of energy and resources thrown at them; had Google, Mozilla, and Microsoft wanted JS to run fast on Mono, it would run fast on Mono.

Also saying that .NET is a bytecode made for static languages is kind of iffy now that the "Dynamic Language Runtime" is a part of .NET

<comment><USER22> 1\. The Alioth results are not necessarily final - they compare a single JS engine, and we have several fast ones now (SpiderMonkey with type inference can be significantly faster on some benchmarks, for example). Even so, the median speed there is 2X, which is fairly close. Admittably there are some bad cases though, in particular pidigits (badly written benchmark code? bug in v8?).

2\. It is true that JS on Mono has had far less work done, and that the DLR exists. However, the fact remains that dynamic languages are a late addition to the JVM/.NET model. For example, one very important thing for dynamic language performance is PICs, and to my knowledge there is no good example of fast PIC performance on the JVM or CLR. In fact, we don't even have a good example of a generic virtual machine that can run multiple dynamic languages fast (Parrot exists, but is not that fast) - all the fast dynamic language implementations are language-specific, so it shouldn't surprise us that VMs built for static languages don't do that well either.

<comment><USER9> In my opinion it makes no difference that we have several fast engines where some are faster at some things than others. When executing in the browser you don't get to pick and chose how and where your application will be executed. If you run into performance problems on one of the engines you can: A) dismiss a subset of your users and their performance problems, telling them to use a browser with a faster engine (they wont), B) only allow certain functionality based on a user agent string, or C) limit your applications scope to one that runs suitably in the slowest of the engines you're willing to support. In essence, if the application runs great in browser A but chokes in browser B, are you willing to say bye bye to your A users to take advantage of performance gains on B? I've been in this situation, and in my experience I've always had to look away from the faster browser rather than the user.

Outside the browser you probably have a little more freedom, but it's not like you get to pick and chose in the style of "Oh, I'll execute this function in V8 since it does this faster, and that function in SpiderMonkey since it's faster there". For this reason, I don't think the fact Alioth only has measures for one engine would make a significant difference in the overall comparison. You'd be, for the most part, gaining performance in one place by sacrificing in another.

Anyway, in my personal experience, I've ran into performance problems in JS a lot more often than with C#. I also have to go through a lot more tedious practices to ensure my JS code runs as fast as it can, where as in C# Some.lookup.with.lots.of.dots.does.not.scare.me(). That's why your claim sort of surprised me. Then again, the last serious JS performance problem I had was 6 months ago (before FF4), so maybe a lot has happened in those 6 months.

By the way, I'm not too informed on how type inference is done in SpiderMonkey, so I may be completely wrong in mentioning this, but it sounds like they're trying to speed up a dynamic language by mimicking static typing. If that's how far they're going to improve performance, maybe soon enough JavaScript will in fact sit better in the Mono/.NET/JVM?

<comment><USER22> I agree with your point about multiple JS engines, indeed you can't pick and choose the best results. What I was trying to say is just that the best results we see are an indication of where things are going. But again, I agree, we are not there yet and right now, each user has just one JS engine, and problems on some benchmarks. Static languages have much more consistent performance.

About the last 6 months: Yes, a lot happened during that time, namely FF4's JaegerMonkey and Chrome's Crankshaft. Both are significant improvements.

About typing, yes, in a way that could let this code run faster inside the JVM or Mono. If you can figure out the types, you can generate fast statically typed code for those VMs. However, type analysis can be both static _and_ dynamic, should integrate with the PICs and so forth. So even with that, I don't expect dynamic languages to be able to run very fast on static language VMs.

</comment></comment></comment></comment></comment></comment><comment><USER9> "In 1997, I collected a list of languages with compilers to JavaScript. There were JavaScript extension languages: the now-defunct ECMAScript 4, Narrative JavaScript, and Objective-J. There were pre-existing languages: Scheme, Common Lisp, Smalltalk, Ruby, Python, Java, C#, Haskell, etc. There were even brand new languages HaXe, Milescript, Links, Flapjax that were designed to address web programming needs."

Am I reading this right? Objective-J (2008), C# (2001), HaXe (2005), etc having compilers to javascript in 1997?

<comment><USER6> You know how on January 10th, 2011 you were still writing 2010 by accident? I was off by a decade. Corrected.

</comment></comment><comment><USER23> The key here might not be implementation but adoption.

</comment><comment><USER24> I maybe wrong but it seems that caterwaul provides a macro system for JS (but I never tested it): <http://caterwauljs.org>

</comment><comment><USER25> I like the prediction, but I think the biggest hurdle to compiled javascript will be mobile browser usage. The javascript interpreters in the mobile browsers right now are dog slow compared to their desktop cousins.

<comment><USER26> Android 2.2 and later uses Google's V8 JIT. iOS 4.3 and later uses Apple's Nitro JIT. Firefox 4 and Opera 11 also have JIT compilers enabled for ARM devices.

Mobile processors are still slower than desktop ones, of course, but JavaScript on mobile today is already faster than JavaScript on desktop just a few years ago. For example, the benchmarks on <http://arewefastyet.com/> show V8 running only about 5x slower on an nVidia Tegra 250 ARM board than it does on an Intel Core 2 Duo Mac Mini.

</comment></comment><comment><USER27> I really hate when "X is dead; long live X!" is misused like this. The original phrase is "The king is dead; long live the king!", used when the OLD king died and the NEW king takes over.

Googling around, I see tons of misuse: Example of bad usage: "White Stripes are dead (long live white stripes)"

Example of proper usage: "Palm is dead; long live Palm!" (this would mean that Palm got acquired or reformed) "Paper is dead; long live paper!" (could be proper if used in an article about how paper for PRINTING is dead but paper lives on in other forms)

REF: [http://en.wikipedia.org/wiki/The_King_is_dead._Long_live_the...](http://en.wikipedia.org/wiki/The_King_is_dead._Long_live_the_King).

<comment><USER6> They didn't say "The King Henry VIII is dead. Long live the King Edward VI". In the JavaScript article, The "OLD king" is "JavaScript the source language". The "NEW king" is "JavaScript the compilation target". So the idea of old and new is in there. Sort of. :-)

</comment></comment><comment><USER28> Improvements to javascript would be great, but none are actually needed, the language is quite functional as is. Learn how to code or use coffeescript or develop your own new language to compile into javascript to support whatever language crutches you need.</comment>