Here's Why Firefox is Still Years Behind Google Chrome - <AUTHOR> http://www.howtogeek.com/165264/heres-why-firefox-is-still-years-behind-google-chrome/ <comment><USER4> This article is, in my opinion, not very good. It documents areas where Firefox differs from Chrome, yes, but it fails to make the case why I should care.

* I don't want a multi-process architecture, I want it so one tab can't kill my entire browser. If Firefox can get there in a different way than Chrome, so much the better.

* I don't care whether or not my browser utilizes certain Windows features, since I run Linux. Have we seen an attack against Firefox which would have been stopped if it utilized this Windows feature? The article provides no evidence of this.

* I don't want a desktop app store. addons.mozilla.org is, for all intents and purposes, Firefox's app store. mozilla.org is Mozilla's "app store". This is kind of a silly request.

I use Firefox for the following reasons:

* There are extensions I like which have no equivalent (that I know of) in Chrome

* Inertia

* I like the Mozilla Foundation better than I like Google

I don't expect these reasons to convince you. They are sufficient for convincing me. I'm not going to pretend like they present a compelling argument.

<comment><USER5> > There are extensions I like which have no equivalent (that I know of) in > Chrome

Can you give an some examples of useful extensions you use that are available in Firefox but not yet in Chrome ?

<comment><USER6> vimperator is probably the most useful web extension i've ever used.. and it doesn't have a _good_ chrome equivalent

[http://www.vimperator.org/vimperator](http://www.vimperator.org/vimperator)

<comment><USER7> I've used Vimperator before but I now use Vimium on chromium and very much prefer it.

When you navigate via keyboard (by pressing "f"), Vimperator marks links with numbers, Vimium marks them with letters, from ("a to "zz'). Letters are much nicer when you can touch type and your hands are already on the keys.

Vimperator used to do silly things like hide the address bar and force you into doing everything in a kind of "command mode". It never felt very smoothly integrated with the browser and it was always a pain to try and open a new site via command mode instead of just using <Ctrl>-L and typing it in the address bar. Invariably I would try to type something in a textbox or use some keyboard shortcut, only to find that Vimperator hijacked it and I'm now typing in command mode.

Vimium doesn't give me these problems because it doesn't have a command prompt/mode. Besides that, it's integrated very nicely with chrome, in such a way that I can use normal keyboard shortcuts as far as possible, but have vim- like shortcuts for the things that matter (e.g. "/" for searching, navigation via keyboard etc.)

<comment><USER6> to me vimperator isn't just about having a few vim bindings here and there, it completely redefines the browsing experience... also, when you "f" to find links, you can just enter a piece of the url string and vimperator opens it.. either way, it doesn't matter much..

vimium is a lightweight clone of vimperator, if that's what you want then of course you'll prefer it..

these "problems" you're talking about in vimperator are features once you actually embrace it and use it properly. it's a power user's tool.. and should be recognized as such..

[http://i.imgur.com/vznzJMV.png](http://i.imgur.com/vznzJMV.png)

</comment></comment></comment></comment></comment><comment><USER8> He gives a bunch of "ways" in which FireFox is (in his opinion) behind Google Chrome.

The only "reason" (why) he gives is mentioned very briefly:

> With so many former Firefox developers now working on Chrome at Google, > perhaps it makes sense that the innovation has been happening in Chrome, not > Firefox.

The real question we should be asking is what happened to investment in FireFox? Why has mozilla had a hard time retaining or acquiring talent? If the community values the existence of FireFox, and a real (top to bottom) open- source alternative to the IE-Chrome-Safari triumvirate, what can be done to get Mozilla back on track?

Most importantly, what happened to Mozilla that it stopped being an innovator and became an imitator? Is it something inherent in it's status as a "not for profit"? Is there something wrong with it's values and goals that prevents it from being truly innovative?

Those are intended as mostly rhetorical questions. My point is that the article has a bad title. It should be "Here's How FireFox is Behind Google Chrome" not "Here's Why".

"Here's Why" is a much more difficult conversation to have--and I don't pretend to know enough about Mozilla to have any insights or opinions on the matter.

<comment><USER9> Non-profits find it culturally difficult to pay Google-level salaries to developers perhaps?

<comment><USER8> That's certainly part of it. Non-profits generally cannot compete with Google in terms of cash.

But are there other ways for them to try and attract or otherwise develop talent? Perhaps their current model is insufficient.

It's interesting to see that Mozilla has become more involved with Samsung as a technology development partner. Perhaps that is one model.

<comment><USER9> The Mozilla Foundation gets $300 million annually from Google: They can certainly afford to pay some developers Google level salaries if they choose to.

<comment><USER8> Okay, so if it isn't about the money, then what is the reason for losing so many developers to Google?

Or is the idea that Mozilla has been losing key people to Google (as mentioned in the OP) not legitimate?

<comment><USER10> If I am to hypothesize, I'd say they are tired of Mozilla's way of doing stuff. But I have to ask to put some hard data behind this, because I hear it a lot, and I don't see much evidence for it.

</comment></comment></comment></comment></comment></comment><comment><USER11> We are working on multiprocess tabs (again). We paused our effort a couple of years ago for _Firefox Desktop_. Some other things were more important (we fixed most of our memory issues and improved the global responsiveness of Firefox). And some work was needed before getting multiprocess tabs ready in Firefox Desktop:

\- we managed to get multiprocess tabs working for Firefox on Android and for Firefox OS. The inner architecture is now here. Basically, it was easier to start with mobile.

\- we worked hard on an even-more threaded architecture in Gecko ("Off-Main- Thread everything"). This makes Firefox much more snappier these days, and this will make things easier for a full multiprocess browser.

So now, with all that done, we are restarting our work on multiprocess tabs on Firefox Desktop.

A multiprocess architecture will probably improve the responsiveness of Firefox, but keep in mind that this is not a magic bullet. Improvements can be made in other areas. Firefox 24 is much more responsive than before and will get more and more snappier in the months to come.

Also - on a related note: "we need a more parallel browser" [http://dbaron.org/log/20120827-specification- style](http://dbaron.org/log/20120827-specification-style)

<comment><USER12> It is just Mozilla has far to few resources and doing far too many things at the same time.

I wish Rust and Servo would come faster.

</comment></comment><comment><USER13> Chrome was years behind Firefox, too: [https://code.google.com/p/chromium/issues/detail?id=143](https://code.google.com/p/chromium/issues/detail?id=143) \- from at least 2008 thorough 2012 there was no proper color management in Chrome, while Firefox had it. This was a deal-breaker for some users. Eventually Chrome copied what Firefox had for many years. It goes both ways.

<comment><USER14> > no proper color management in Chrome

Can you elaborate on this? I'm relatively new at it, but I write code for a color science company so I'm curious as to what you mean.

Edit: I'm also reading _halfcamerageek_ 's URL: [http://cameratico.com/guides/web-browser-color-management- gu...](http://cameratico.com/guides/web-browser-color-management-guide/)

<comment><USER15> Take a look at my comment below. Page elements and untagged images are rendered on the full display gamut. If you have a wide gamut display, like my 30" Dell, everything looks super saturated.

The correct behavior would be to interpret all page elements and untagged images as being in the sRGB color space. This is what the W3C recommends and Firefox follows.

</comment></comment></comment><comment><USER16> With all the nice items recently implemented in Chrome and all the lagging behind and alleged slowness of Firefox, I still see "aw, snap! crash!" in Chrome an order of magnitude more frequently on my screen than Firefox crash reports.

However the slowness of Firefox when Firebug is on when loading resource-heavy pages starts really bothering me.

<comment><USER14> I just switched back to Chrome again from Waterfox. It's crazy how even with only a few tabs open(Facebook, a few HN threads, some reddit and YouTube), Waterfox alone will bring my Core i7 with 8GB of RAM to a crawl. Even before I switched to Chrome, I was using IE 10 in tandem with Waterfox so that it wouldn't bog down my system so much.

Edit: Maybe it's just me? I'll have a look at my settings. Thanks!!

<comment><USER17> Browse to about:memory in that bogged down Firefox and find out exactly what's bogging it down. As a web developer, Firefox is my main browser on an i7 8gb Win 8 machine and I can't remember any single time I've seen the browser bogged down.

<comment><USER18> On an 8gb machine, the browsing being bogged down probably doesn't have anything to do with memory usage. To figure out what is making everything slow, you need to use the built-in profiler with Nightly. I was able to use it to track down browser slowness I very occasionally see to a particular line of code on Facebook.

</comment></comment></comment></comment><comment><USER19> I like to use tabs and I usually have lots of tabs open. After getting used to Tree Style Tab [1], using any browser without vertical tab arrangement (in trees) is a PITA. There actually was a crippled vertical tabs feature (named "side tabs") in Chrome, but the developers eventually removed it [2]. One of the best things with Firefox for me is that it allows for these more low level changes of browser behavior and UI.

[1] [https://addons.mozilla.org/sv-se/firefox/addon/tree-style- ta...](https://addons.mozilla.org/sv-se/firefox/addon/tree-style-tab/)

[2] [http://www.techerator.com/2011/11/a-fond-farewell-to- vertica...](http://www.techerator.com/2011/11/a-fond-farewell-to-vertical- tabs-in-google-chrome/)

</comment><comment><USER20> I will say this for Firefox--the recent work to fix memory leaks has created a HUGE improvement. I often have dozens of browser windows or tabs open for days at a time, since I just sleep my laptop between work sessions. Firefox is now as stable and snappy as any other browser over such time frame. It's really a great improvement.

</comment><comment><USER21> Assuming these criticisms are all valid, this quote is important:

>> The fact that we have an open-source browser created by a non-profit organization only looking to make the web a better is great for the web. That's why it's a shame Mozilla has allowed Firefox to fall so far behind.

We should be asking "how can we help make/keep Firefox a strong competitor?"

</comment><comment><USER22> Well, Chrome can't even be installed without being a pig about it -- no way to set the installation location, no option to disable the background updates or keeping the last few versions of Chrome around. I guess it's okay if you don't really do much with your computer though, and don't mind the resources wasted on Chrome being needy. (e.g. I have old school DSL with 100 kb per second; I like to _choose_ when I want a browser update, and it's hardly hi-tech to allow for that)

<comment><USER22> And to the downmodders: granted, I only speak from personal experience, but from that I speak. Since I stopped using Chrome (both regular and canary), and stick to Opera, Firefox and FF Aurora, I can basically do whatever I want. Having 20 websites open in Opera, a bunch more in FF, and a video running in VLC or Renoise playing a song -- while playing L4D2 in a window, _zero problems_ , even with my crappy GPU and otherwise good, but not crazy specs. With Chrome in the picture hard crashes were the norm for me.

</comment></comment><comment><USER23> "If Mozilla can't turn Firefox into a modern browser because of all the legacy code getting in the way, perhaps we need a Phoenix 2.0."

That sounds like Servo [1] to me. That would also be a much more forward- thinking approach to Electrolysis than fully separating the old Mozilla codebase. Firefox is also competing very well with Chrome in JavaScript speed. [2]

[1] [http://en.wikipedia.org/wiki/Servo](http://en.wikipedia.org/wiki/Servo) [2] [http://arewefastyet.com/](http://arewefastyet.com/)

<comment><USER24> Direct link to the Servo wikipedia page: [http://en.wikipedia.org/wiki/Servo_(layout_engine)](http://en.wikipedia.org/wiki/Servo_\(layout_engine\))

<comment><USER12> Oh God... MPL 2.0 again. Why Cant Mozilla just Switch to Apache 2.0

</comment></comment></comment><comment><USER25> According to Snowden's leaked Prism slides, Google was brought into the NSA fold on the 14th of January 2009. So Firefox is well over 4 years behind Chrome in that respect as well. Get your act together, Mozilla!

<comment><USER26> Seriously? Can't there be one discussion on here that isn't about Snowden or Prism?

<comment><USER27> So long at people get karma for lazy low-content references to whatever cause everyone is swept up in they won't stop posting them.

<comment><USER28> As long as they are getting substantial amounts of karma for it, I suppose that's what most of the people want to read.

</comment></comment></comment></comment><comment><USER29> It's nice to see a Firefox vs Chrome article that _doesn 't_ mention memory usage.

The App store idea isn't _that_ dissimilar to the add-ons Firefox has had essentially since it was born (along with a central repository), especially since Firefox add-ons can do so much more with the browser. Admittedly, there's no concept of money with the add-ons, which makes them almost useless as a way to build a business.

</comment><comment><USER30> Here's why I don't care: I like Firefox better.

<comment><USER31> Hear, hear.

</comment></comment><comment><USER32> The first point is odd. I got one of the original Cr-48 Chromebooks, and the current tab would always stutter when other tabs were loading. I installed stock Ubuntu and Firefox on it and I never had that problem. Just lately, in the past year or so, I've noticed the same problem in FF. With all the optimizations they've been making, I can't think what would have changed that behavior.

<comment><USER33> That's probably just Atom being slow as hell.

<comment><USER32> Not that I'm disagreeing :) but it happens on my desktop too.

</comment></comment></comment><comment><USER34> Mozilla are leading the way in other areas. Firefox OS is _entirely_ based on HTML5 - even the UI. Mozilla invented asm.js, an open, backwards-compatible and fascinating alternative to Google's proprietary Chrome-only Native Client technology. They've done a lot with emscripten to compile large native engines to the web, complete with WebGL and Web Audio support. Chrome looks to follow Mozilla's lead by adding asm.js support to V8.

I agree Firefox are overall more behind, but they are still an innovative company coming up with some fantastic tech. The main reason they're behind is probably because their codebase is pretty old, back from the days when they were busy saving us from IE6.

<comment><USER35> > Mozilla invented asm.js, an open, backwards-compatible and fascinating > alternative to Google's proprietary Chrome-only Native Client technology.

Native Client isn't proprietary, its open -- no other browser vendor has adopted it, but that doesn't change the fact that its open. Backward compatible _is_ a real issue with asm.js vs. NaCl, there is no reason to obscure the real issue by throwing a fake one in with it.

<comment><USER34> Oh, fair dos. But I think asm.js is so much of a better idea that there's no reason to support NaCl - asm.js does everything it's supposed to do but better. I think it was a pretty nice move from Mozilla.

<comment><USER35> > But I think asm.js is so much of a better idea that there's no reason to > support NaCl - asm.js does everything it's supposed to do but better.

A key focus of NaCl and asm.js is performance, and IIRC most benchmarks are showing NaCl with somewhere between a 25%-33% additional overhead over native C, and asm.js with somewhere in the neighborhood of 100% additional overhead, so I don't think I can quite agree that asm.js does everything NaCl is supposed to do but better.

That said, the other advantages are there, and the performance gap may close.

<comment><USER36> Those statistics are misleading. The asm.js numbers count compilation time, while the PNaCl numbers don't.

<comment><USER35> If you've got statistics that show asm.js is equal or better including compilation time, I'm sure lots of people would like to see them.

</comment></comment></comment></comment></comment></comment><comment><USER37> "No Multi-Process Architecture"

This is a feature, and I like it.

The rest is just flamebait.

<comment><USER38> And there is a simple solution to that (poor multi-core utilization): go back to a one-window, one process model (go back, as in delete a lot of unnecessary code); forget the browser tabs - let the OS handle multitasking and let the window manager handle the windows.

<comment><USER39> The hard stuff isn't the window system/widget integration, it's having multiple processes open for the same domain (or iframes in different processes) and mediating access to local storage/IDB/cookie jar/network cache/etc.

It was only very recently that WebKit2 handled most of this stuff -- up until then they just had a single WebProcess (I think Safari on Mavericks is the first multi-WebProcess browser Apple have shipped). So it's a hard problem and isn't due to some lack of competence that Mozilla have been slow to adapt. FxOS is fully multiprocess afaik.

Actually getting the rendered page image into a window owned by another process is easy: windows and X let you host HWNDs and Windows from other processes (if you choose to allow your WebProcesses access to the window server) or you could draw into a shared memory segment. The hard stuff is all of the regular browser hard stuff.

<comment><USER38> I can't accept your complicated worldview. Iframes, for example, don't need to be new processes. One process - one window - one DOM. The only new process should be the rendering canvas/window. An iframe, or any nested resources can re-use cookies associated with a window/process, including caching. In order to persist tokens/cookies/cache between processes you hand them their own copy when you spin them up and write them out to a common, re-usable place when you close, but for the most part I consider browser statefulness to be more like a flaw than a feature (I constantly clear my cookies, form data, and history). how about a "save session" button, rather than the default being to cache objects and cookies in some common blocking profile that only allows one session and that, when it crashes, it all comes down... If you really want to share, you wrap those services up in a library - which is closer to the present model - but you have to know that in doing so you are making it harder to isolate things when they fail... And isn't that what's wrong with most browsers?

</comment></comment></comment></comment><comment><USER40> I've been a long-time user of Opera, who switched back to Firefox and then back to Opera a couple of times.

Opera has been consistently _much_ faster and better designed than Firefox. But it has one major, glaring fault: it's closed-source. I just don't trust closed-source software anymore. I also had concerns about privacy-invading directions Opera was taking (such as sending all of one's keystrokes to a search engine as you typed them in an address bar search -- your typing rate could be used to aid the search engines in uniquely identifying you). So I switched back to Firefox and have been using it steadily for a few years now.

With Pentadactyl, Firefox is much more usable in many ways than Opera was. Though even Pentadactyl can't make up for some of Firefox's ingrained faults, such as it's atrocious bookmark manager, or Firefox's incredible slowness.

I refuse to use Chrome on principle, because it spies on its users by default. This behavior can supposedly be disabled, but I have serious ethical objections to any browser that starts out in that state, and is associated with a spyware company like Google. Chromium is better in that at least it doesn't start out by spying on you, but it still lacks addons that are as capable as Firefox's Pentadactyl and NoScript.

Most recently I've started migrating as much as possible away from all of these bloated browsers. On 99% of the websites I visit, I now use w3m embedded in emacs. This integration gives me far more power than even Pentadactyl in Firefox, and it's far faster than any of the popular browsers.

w3m's main weakness is that it can't handle Javascript, but that's a strength too -- as I don't have to worry about Javascript exploits.. and 99% of the websites I care about don't require Javascript to function.

I am happy to get what I care about most: the content -- usually in plain-text format. And for the few sites I care about which annoyingly insist on using Javascript for full functionality, I can always use the other browsers as a backup. This approach might be a bit extreme for most people, but it works well for me.

</comment><comment><USER41> It seems the author is either simplifying things too much in their text or does not know what threads are. Not having multiple processes does not mean a program cannot execute things in parallel, and Firefox uses threads liberally. As far as I know, the multi-process architecture of Chrome is mostly about sandboxing, not performance.

</comment><comment><USER42> >The future is an ever-increasing amount of CPU cores, and computer programs will have to become capable of doing more work in parallel to take advantage of all this processing power.

The idea that multiprocess browsing is somehow related to multicore computers is a myth. In almost all use cases, there is virtually no performance benefit whatsoever to loading separate tabs in separate processes. This is because most web pages do essentially no work while in the background.

</comment><comment><USER43> So I could play the same game and say that Chrome is years behind because it usually shows up as the top memory hog when benchmarked against other browsers, including IE.

</comment><comment><USER44> In theory it might be so but when I open a large number of tabs in Chrome it becomes sluggish. Not so in Firefox.

</comment><comment><USER45> Chrome really needs to add tagging of bookmarks. I know there are many people who say it does not need it, but they are wrong, it does. I know that it does because every time I have to dig, search and poke around looking for a link in Chrome that has something to do with 'x' and 'y', but 'x' and 'y' are not in the url or title of the page, I can't find it. If I had the ability to tag the url with 'x' and 'y' all I would have to do is is type "x y" (like you can in Firefox) and the link would be there. Do any of you know why does Chrome not have this feature already?

</comment><comment><USER46> And yet, despite all that, the following two concerns will probably keep me returning to FF :

1\. Vimperator (neither of the Chrome equivalents comes close, IMHO)

2\. My slowly declining trust in Google

I do wish FF would support multiple tabs a little better, though.

</comment><comment><USER47> Without all the add-ons that make browsing useful, it doesn't really matter how far "ahead" chrome is.

</comment><comment><USER36> "There's no indication that anyone is working on sandboxing the Windows desktop version of Firefox at the moment."

Yes, they are. The comment quoted is from 2012.

"Comments on Firefox's bug tracker indicate that developers will be looking at sandboxing the Windows 8 Modern Firefox app, Firefox OS, and experimental Servo browser on OS X"

"will be looking at" is misleading. Servo is sandboxed, today. Both at the OS level (through the same sandboxing primitives that Chromium uses) and through Rust's memory safety features, for two layers of defense.

</comment><comment><USER48> ...and if open source software is the future, the Firefox is lightyears ahead...

I use Firefox - on Windows. I am not a Gnuist. I use Firefox because there are some areas where my interests and those of Microsoft and Google are not sufficiently aligned to justify using their software in lieu of convienent alternatives. The desktop browser is currently one of them.

As an aside, I don't really want my browser sucking up as much CPU bandwidth as it can.

<comment><USER49> Open source Chrome exists.

</comment></comment><comment><USER50> Firefox still feels a tad slower than Chrome, but it's normally fast enough.

The big problem I have with Firefox is developing extensions. Developing browser extensions in Chrome vs building them in Firefox is like night and day. While I'm not an expert, I've built a few extensions for each browser.

Building one in Chrome has been a very pleasant experience for me - <USER2> documentation is good and up to date and things work very logically.

But developing Firefox extensions is an exercise in complete frustration. Documentation is hard to find and out of date. Functionality that is needed is frequently changed and deprecated. Common things are made difficult and frustrating. There are code examples found all over the web, but most of them are out of date.

Purely speaking with my developer hat, I would not build another Firefox extension if not absolutely required to for a specific project. And I dislike a lot of Google's policies and love Mozilla's nature, but I think Google is clearly much further ahead in terms of offering a pleasant development experience.

I don't know what the answer is, but for me personally Firefox isn't working.

</comment><comment><USER51> I love FF and use FF mainly because of the range of plugins available.

However I agree there are problems with it. One of them is disk access - <USER3> you have a machine (say a netbook) with a slow disk, firefox seems to stop responding for a few seconds every once in a while. This is exacerbated by an ever growing places.sqlite, but still happens even with that flushed regularly (or chattr +i'd)

<comment><USER52> Mozilla's Performance Team is doing a lot of work on eliminating I/O from the main thread which is the cause of many of these problems. We're also assisting other teams with this as well.

In fact, right now I am working on adding a new feature to the Gecko Profiler that identifies such I/O and makes it easy for platform devs to easily pinpoint the offending code.

<comment><USER51> Awesome, glad to hear it, it's been a bit of a bug-bear of mine for ages.

If you're anything to do with the mobile/android team, could you tell them their policy of aggressively unloading background tabs is annoying and that it frequently seems to screw up when you hit the back button, either jumping back too far or going to previous ...err... forks in the history tree.

</comment></comment></comment><comment><USER53> Also: Firefox seems to discourage you from messing with cookies. For example: I can't select cookies by TLD. I have to painstakingly go through the list, clicking each host and clicking "Remove". Compare the cooking management functionality with the next tab over, password management. There you can filter the list as you want. So it is possible.

<comment><USER22> Both Chrome and Firefox utterly loose out against Opera in that department, where you can actually _edit_ the cookies, without jumping through any "expert" hoops. Admittedly I don't think I ever used that for anything but debugging, but I still think it's a nice touch, and I am sure someone out there learned a thing or two about websites and browsing just by studying the Opera config dialog.

</comment></comment><comment><USER54> I use firefox mainly for hierarchical vertical tabs (tree style tab plugin). I often have up to 50 tabs open at once, which is unmanageable in ie/chrome. Also session manager is amazing, never have to worry about losing tabs. I also like how firefox loads tabs on demand, unlike chrome which opens them all when you open the browser.

</comment><comment><USER55> I began using Firefox a long time ago (when it was called Phoenix) but switched to Chrome.

A couple months ago I switched back to Firefox because Chrome lost my open tab session in some cases (hard crashes when loading the old session), due to privacy issues and because it often triggered long swaps (locking the process) when dealing with lots of tabs (I usually have like 50-60 tabs open in several windows). Also because I support Mozilla's values.

Unfortunately I'm not very happy either. Alongside the issues commented here, I noticed these problems:

\- Sometimes it just goes to 25% CPU usage and the browser becomes _really_ slow. The only choice is to close all windows and open Firefox again.

\- Multimonitor and Flash sucks. I'm not sure if this is Firefox or Flash's fault, but it often chooses one window as its parent, regardless of where the tab with the Flash content is located. Clicking/hovering the embedded object fails when the object thinks I'm in the wrong monitor. Also, going fullscreen usually pops the window in the wrong monitor.

\- The JS PDF viewer is slow as hell (I once spent 5 minutes waiting for it to zoom, and I couldn't close it because I feared losing some changes in other tab). Firefox's JS engine is quite slow in and of itself, who thought it would be a good idea to embed a JS PDF viewer?

\- Extensions take _ages_ to be updated in the Addons repository (especially compared to Chrome) which frustrates extension developers and users. I personally know a developer who had to move away from it and tell users to update the extensions themselves.

\- When a JS script is locked, the whole browser locks.

\- If you close a window by mistake, there's no way to bring it back, so say bye to your precious browsing experience. "Undo last tab close" only works in tabs within that window! So frustrating. _EDIT:_ apparently this is possible, check [https://news.ycombinator.com/item?id=5905649](https://news.ycombinator.com/item?id=5905649).

\- The latest contributions seem to focus on how to be more like Chrome, and less about providing users a better product[^1].

\- Did you ever need to mess with _about:config_? Black magic.

\- Tab groups suck. They're useless and there's no way to disable them once you activate it by mistake. You have to mess up with _about:config_ (see above). Talk about a great UI.

They completely lost the track on what users need. We don't need another Chrome clone nor cool UI changes in each new version (especially when they get them so wrong). They probably spend lots of hours tweaking things that didn't need tweaking. What's wrong with the current UI that needed such a big overhaul? We need a browser that works, not one that looks like Chrome.

Mozilla, making Firefox look like Chrome won't make users switch back from Chrome. If people want Chrome, they'll stay in Chrome. Period. Get rid of termites before painting the house.

[^1] E.g. [http://limi.net/checkboxes-that-kill](http://limi.net/checkboxes- that-kill) or the new UI which is a ripoff of Chrome's. I can see his point about the "checkboxes kill", but removing features with perfectly fine use- cases instead of moving them to an advanced config page is never a good idea. How about an usable _about:config_ alternative? "We designed a bad UI for advanced features... lets get rid of those features instead of fixing the issue!"

<comment><USER56> It's the really small things that annoy me about Firefox. For example, in gmail, when writing an email, I can't hit cmd+right arrow to go to the end of a line. And because links are set to open in a new window, I can't cmd+click them to open them in the background.

<comment> olog-hai Agreed about the small things. I'll never understand why they decided to put the ctrl+F find dialog at the very bottom of the window. It trips me up almost every time I use Firefox, which isn't often. The vast majority of computer users are not conditioned to look down immediately after invoking find.

<comment><USER57> Out of interest, where are you conditioned to look? I prefer an in-window find bar to a dialog getting in my way, and I use programs with the find bar at the bottom (Firefox, Libreoffice) more often than ones with it at the top (Chrome, gedit). For me, the position isn't an issue, as I notice the movement wherever it occurs on my screen.

</comment></comment></comment></comment><comment><USER58> > many of its changes have simply been copying the way Google Chrome works

Yeah all car manufacturers copy each other as well. They all got steering wheels and other things that we expect of modern cars.

I don't think the fast release cycle nor the copied UI is an improvement, but they should take from Chrome whatever they think is an improvement. In fact, I believe Opera was the first to use this UI and you could just say that Chrome is lagging behind Opera, if you follow the twisted logic of howtogeek, but I might be mistaken on who was really the first.

<comment><USER58> Oh and nevermind that Chrome uses Firefox' NSS.

</comment></comment><comment><USER59> You can install webapps from the marketplace on firefox desktop now (in nightly at least)

Firefox OS has a multiprocess architecture, I believe the main problem for desktop is plugins / backwards compatibility

</comment><comment><USER12> It has been a long time since I managed to push Firefox down to its kneels again. Ever since i got my Core i5 and a Crucial SSD, Firefox has been ( or any Apps ) snappy. Chrome was still noticeable faster on my machine. But the difference were small enough.

Today i was research on topics and shopping around for price. It has been a long time i have had more then 150 Tabs opened. Many of those has lots of image as well. Firefox nearly slow to crawl. Scrolling was no longer smooth, nothing were snappy.

</comment><comment><USER60> Kind of OT: With the latest Chrome update on Mac OS X, the tabs just freeze if I try to load a JS heavy site like Facebook, Youtube, etc. and as a result, I have to just close the tab. Any pointers on remedying this?

I started using Firefox again and everything works except for some reason, I cannot login to Twitter. After entering the details, and clicking the Login button, I'm redirected back to the login page. I can view tweets just fine (without being logged in).

</comment><comment><USER61> Swapped to firefox when chrome went crazy and completely stopped working on OSX a while ago ([https://code.google.com/p/chromium/issues/detail?id=175341](https://code.google.com/p/chromium/issues/detail?id=175341) I believe; became completely unusable I suppose is a better description) I swapped back to firefox for the first time in like 2 years.

Still there. Loving it. _shrug_

</comment><comment><USER62> My criteria are different from this guy's. My baseline requirements are: OSS, maximum configurability, minimum conflict of interest on the part of the vendor.

A proprietary product of a data-mining company? Seriously? It's comical that the writer even bothers to mention "security" in such an unsecurable context.

Moz + Noscript + Request Policy is not perfect, but a lot closer to my ideal than Chrome.

</comment><comment><USER63> Tree style tabs. That is all.

</comment><comment><USER64> I still use Firefox mainly because of Pentadactyl. If there was a proper alternative for chrome I'd switch back.

That, and the whole privacy thing.

</comment><comment><USER65> Firefox is an excellent browser, but falls behind chrome because (in addition) insists with some poor design decisions.

Three layers on top (buttons, tabs, url-bar), imagine if I enable bookmarks :P

Darker than others... forget the hacker look, come to the light

Simple tasks easy to do with Chrome web inspector are way more complicated in Firefox

Too many buttons, too many options (people like simplicity)

</comment><comment><USER12> Firefox Development speed is slow. Few things that they are working on,

GGC, Generational GC, Hopefully there will be less pauses in Heavy GC Web Apps.

Necko - Their Network Engine that is now causing 30-40% of janks. Will get rewritten.

And there new Graphics Layer that god knows what happen to it.

Sigh..

</comment><comment><USER66> Chrome DevTools are much better. I recently had to use Firefox's devtools, and they're woefully behind both in UI, capability, and speed.

<comment><USER67> This is so true. Compared to Chrome's, Firefox's tools are just so clunky and an eyesore. I love the fact that Google is putting so much work into their tools and constantly improving them. I will give Firefox credit for having 3D view, that's pretty cool.

</comment></comment><comment><USER68> Chrome won me over with their custom window. I'm unwilling to give up a title bar of useless space to go back to Firefox.</comment>


Rainyday.js - <AUTHOR> https://github.com/maroslaw/rainyday.js

<comment><USER2> Some, hopefully, constructive criticism:

The rain drops are too spherical as they traverse the screen. The friction plus surface tension of a water on glass pulls the tail out significantly farther then represented and also varies on whether the drop is following a path that's already been traversed and therefore has less friction. It would be really really cool to see that effect added in.

<comment><USER3> He can't really do that with the present approach. :)

Each 'drop' of rain is really a circle painted using the reflection scaled to the size of the drop. This approach is very fast, but won't scale well with odd-shaped drops and larger drops. With a small enough spherical drop, it's a good enough approximation for refraction.

With larger drops, you'd start to notice that the reflection isn't a refraction (i.e. the reflection is cutout in the shape of a circle, rather than truly refracted as in a drop of water).

Other approaches could be adding more expensive texture transforms, or WebGL + a refraction shader for bigger and/or non-spherical drops.

<comment><USER4> Obviously at this point we should begin ray-tracing.

<comment><USER5> I'll call John Carmack.

</comment></comment></comment></comment><comment><USER6> I always loved Shawn Hargeaves' blog post about the weather effects he did in MotoGP: [http://blogs.msdn.com/b/shawnhar/archive/2009/04/01/motogp-w...](http://blogs.msdn.com/b/shawnhar/archive/2009/04/01/motogp- wet-weather-effects.aspx)

The interesting takeaway for me was that making something look rainy has so little to do with actual rain drops, and everything to do with the secondary effects of bad weather.

<comment><USER7> Looks like the rest of the posts about them are here: [http://blogs.msdn.com/b/shawnhar/archive/2009/04.aspx](http://blogs.msdn.com/b/shawnhar/archive/2009/04.aspx)

</comment></comment><comment><USER8> My favorite part of watching rain on a glass surface is when two raindrops connect with one another and merge together into a larger one. It would take a lot more work (more intensive computation based on the location of the drop, constant checking if another drop is on top of the target raindrop, etc...), but I'd _love_ to see two globules merge with one another. That would be incredible.

<comment><USER9> Well, it's your lucky day, because it _does_ that. There's even a tiny bit of acceleration when it happens it seems. I was curious to see if anybody mentioned that in the comments actually.

I thought that was a very nice touch, since it would be easy to skip that.

<comment><USER10> If it does it, it doesn't do it very consistently as I was specifically looking for that effect only to be disappointed. That being said, this is still a really cool demo.

</comment></comment></comment><comment><USER11> It looks like rawgithub.com is 503-ing. Here's a version of the demos with the JS file pasted straight in:

demo 1: [http://jsbin.com/UFudExe/1](http://jsbin.com/UFudExe/1)

demo 2: [http://jsbin.com/ePidOJe/2](http://jsbin.com/ePidOJe/2)

<comment><USER12> jsbin is 502-ing.

<comment><USER11> Ooh lovely!

</comment></comment></comment><comment><USER13> Should combine this with [http://raining.fm/](http://raining.fm/)

<comment><USER14> Nice work Marek! Neil from raining.fm here, I did a quick mashup after work tonight, check it out here [http://raining.fm/raindrops](http://raining.fm/raindrops)

</comment></comment><comment><USER15> The author of this library wrote an article about how it was built with some new demos at [http://flippinawesome.org/2013/09/23/creating-a-realistic- ra...](http://flippinawesome.org/2013/09/23/creating-a-realistic-rain-effect- with-canvas-and-javascript/)

</comment><comment><USER16> Currently to make it work you have to run it locally after downloading from github: [https://github.com/maroslaw/rainyday.js](https://github.com/maroslaw/rainyday.js) In Firefox it runs fine at the beginning but then the fps decreases (running in 1920x1200), in Chrome it's "better" because it seems to use both CPU cores fully on a dual core while Firefox uses only one. Anyways it should use the GPU more (using WebGL) and not so much the CPUs, but i understand it's one of the developer's "first contact with JavaScript" and using shaders would be a little harder for him but here are some introductions: [http://www.html5rocks.com/en/tutorials/webgl/shaders/](http://www.html5rocks.com/en/tutorials/webgl/shaders/) [http://aerotwist.com/tutorials/an-introduction-to-shaders- pa...](http://aerotwist.com/tutorials/an-introduction-to-shaders-part-1/)

</comment><comment><USER17> Neat! but the coalescence is not right (yet?)... You'll have to increase the volume of a drop when it eats a smaller one! great stuff

</comment><comment><USER18> So I opened this in a tab without looking at it immediately and then forgot about it. When I opened it later I was legitimately worried that water had spontaneously started streaking down my screen, so really good job, you scared me, if even for one second.

</comment><comment><USER19> That is quite slick. If you really want a rainy day in your browser, there's always this one...[http://www.rainymood.com/](http://www.rainymood.com/)

Looks like they even have apps for portable rain now.

</comment><comment><USER20> This is really cool!

There are a few small issues:

* There is a lot of flickering of the raindrops

* When two raindrops collide, they do not always merge correctly - sometimes the size is wrong, or the position is wrong

<comment><USER21> I think the "flickering" is actually intended, I think its quite realistic ... I think its an observed phenomenon: when a drop is in motion down a pane of glass with bright lights behind you often see some fairly drastic changes in which pin-points of lights it's refracting into your eye at anyone time, resulting in a sort of rapid flickering inside the drop.

</comment></comment><comment><USER22> Couple of days ago I discovered [http://www.rainymood.com/](http://www.rainymood.com/) and posted a link to it on HN. Did you get inspired by that or is it just a concidence? :)

</comment><comment><USER23> I actually did something similar to this about 5 years ago with Flash. By applying a complex filter to a flat layer to make the layer behave and look like it was a liquid drop on a glass surface. Essentially I just embossed it with 4 different colors that matched the background and then added a subtle "gloss" on the top to give it a 3D experience.

The blobs merged together seamlessly when they even came close to eachother and were a pretty close impression of real liquid drops.

This technique might also work to make the merging of the blobs appear more realistic.

</comment><comment><USER24> Here's a working version [http://jsbin.com/ixUSEBE/3/](http://jsbin.com/ixUSEBE/3/) I copied the rainday.js into the HTML so it doesn't rely on external resources.

<comment><USER11> here's the second demo (different backdrop, and no horizontal motion):

[http://jsbin.com/ePidOJe/2](http://jsbin.com/ePidOJe/2)

</comment></comment><comment><USER25> I modified this to show the current song, and made it my screensaver with WebViewScreenSaver ([https://github.com/liquidx/webviewscreensaver](https://github.com/liquidx/webviewscreensaver)). Image: [http://imgur.com/woYztL8](http://imgur.com/woYztL8)

</comment><comment><USER26> That's a great demo - demo #2 was a trip for me, because that's just about what I see out my window right now - there's leftover rain from Usagi on the window, and the IFC2 in the background.

This would make a great ambient bg for one of the nighttime podcasts like sleepbot.

</comment><comment><USER27> 503 kills the demo :(

[https://rawgithub.com/maroslaw/rainyday.js/v0.1.1/rainyday.j...](https://rawgithub.com/maroslaw/rainyday.js/v0.1.1/rainyday.js)

<comment><USER28> From Rawgithub.com's website

> Use this for testing and for sharing demo code with friends, but don't use > it for anything production-related. It's slow, it might break from time to > time, and it's intended as a convenience for development, not free static > hosting.

Rawgithub is nice to test something out on but probably not going to hold out against HN traffic. I did get it working with a different link you posted and it looks very cool.

</comment></comment><comment><USER29> Is it just me or does it cover only 3/4 of the screen in full screen mode?

[http://imgur.com/iYpNrfX](http://imgur.com/iYpNrfX)

I use Chrome on Linux Mint.

<comment><USER30> Refresh

</comment></comment><comment><USER31> Would be fun to combine this with this foggy window simulation I once made. [https://github.com/Grepsy/fingers](https://github.com/Grepsy/fingers)

</comment><comment><USER32> Don't the water drops can merge into irregular shaped larger water spots and trails; instead of all moving one direction, the real life drops are actually move around the surface.

</comment><comment><USER33> I just had flashbacks of snow gif's on websites…

</comment><comment><USER34> Great efforts. I don't think it's usually the case that a raindrop is brought to a stop once it overcomes friction, though, right?

</comment><comment><USER35> Ouch to the 503's with rawgithub, but I like this. I'd love to see a rain track/Chell in the Rain version with this on it.

</comment><comment><USER36> It's so awesome. I'm gonna use it for my next impress.js presentation this Thursday. Thanks, Marek! :)

</comment><comment><USER37> Awesome. I would check for devicePixelRatio in order to render it crystal clear on retina display.

</comment><comment><USER38> Cool! Is there a way to turn on anti-aliasing to make it a bit smoother?

</comment><comment><USER39> This doesn't work on Chrome Version 27.0.1453.116?

<comment><USER11> The script is being served up via rawgithub, which is 503ing.

Here's a version with the code pasted straight in:

demo 1: [http://jsbin.com/UFudExe/1](http://jsbin.com/UFudExe/1)

demo 2: [http://jsbin.com/ePidOJe/2](http://jsbin.com/ePidOJe/2)

<comment><USER40> I get 502 for those as well...

</comment></comment></comment><comment><USER41> someoen needs to make a conditional statement based on weather patterns to load this if it is raining in the users area.

</comment><comment><USER42> The demo doesn't work? (Safari)

There's no point in making web stuff if you can't support major browsers..

EDIT: I take it back. mdkess is right.

<comment><USER43> That's pretty harsh. How does one support Safari if they don't have a Mac?

<comment><USER39> You can support Safari by downloading the Windows version of it without having the need for a mac?

<comment><USER44> The latest version is not available for Windows.

</comment></comment></comment></comment><comment><USER45> Wow! This is awesome. Thanks for sharing.

</comment><comment><USER46> Someone please just demo it on their own site already, jeez.

</comment><comment><USER47> This is awesome.

</comment><comment><USER48> Beautiful.

</comment><comment><USER49> amazing. good stuff man :)

</comment><comment><USER50> make it under 1k and i'll be impressed. it's just too darn big!

</comment><comment><USER51> jsbin is up again</comment>


Will 2020 be the year of Rust in the Linux kernel? - <AUTHOR> https://developers.slashdot.org/story/20/07/18/2111236/will-2020-be-the-year-of-rust-in-the-linux-kernel <comment><USER2> > Linus also touched on Rust earlier this month

Linus Torvalds: Well, I don't actually think it's true that nobody writes in C any more. I think C is still one of the top 10 languages easily, if you look at any of the statistics.

Bit too much sensationalism but entertaining.</comment>


Training the Immune System to Fight Cancer Has 19th-Century Roots - <AUTHOR> http://www.npr.org/sections/health-shots/2015/12/28/459218765/cutting-edge-cancer-treatment-has-its-roots-in-19th-century-medicine <comment><USER2> This is interesting, never heard of it.

It reminded me of phage therapy for treating bacterial infections. There was an article about it here on HN not too long ago.

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

It is popular in Georgia (the country, not the state).

<comment><USER3> Phage therapy is also present in Poland. There is a research centre in Wroclaw, they produce and send experimental samples upon request. The numbers look very nice, although it's still experimental - formal clinical trials have not been completed.

[https://www.iitd.pan.wroc.pl/en/OTF/index.html](https://www.iitd.pan.wroc.pl/en/OTF/index.html)</comment></comment>


Old School Color Cycling with HTML5 - <AUTHOR> http://www.effectgames.com/effect/article.psp.html/joe/Old_School_Color_Cycling_with_HTML5#WOW

<comment><USER2> A supreme example of 8-bit artwork. That stuff belongs in a gallery. The care that must have gone into setting up the color palettes and painting the scenes is every bit as impressive as a master painter making the most of a canvas.

</comment><comment><USER3> Worth checking out for HTML5 that works the same in IE and chrome (first for me). But that may be the old Amiga art used, fun times.</comment>


400Gbps: Winter of Whopping Weekend DDoS Attacks - <AUTHOR> https://blog.cloudflare.com/a-winter-of-400gbps-weekend-ddos-attacks/ <comment><USER2> What is the breakdown of the attack types I wonder? Is it NTP and DNS multiplication?</comment>


PINCE – A GDB front-end/reverse engineering tool focused on games - <AUTHOR> https://github.com/korcankaraokcu/PINCE <comment><USER2> Any screenshots somewhere ?

</comment><comment><USER3> Project is in development right now, only a few functions of it work properly. You can read features part of the project to see what has been done for now.

</comment><comment><USER4> What's the best visual debugger on Linux these days?</comment>


The Perfect Product Myth - <AUTHOR> https://medium.com/future-feed/the-perfect-product-myth-6939f1bb3f87 <comment><AUTHOR> Just throwing my opinion out there that we need to treat software as an emergent phenomena that evolves and changes rather than a fixed product that is static once completed.</comment>


All servers flooded by salt water - is it possible to recover data? - <AUTHOR> http://serverfault.com/questions/447092/all-servers-flooded-by-salt-water-is-it-possible-to-recover-data-from-multi-pla

<comment><USER2> We had a flooded rack in New Orleans after Katrina. We had tape backups, but during the evacuation frenzy the wrong tape was pulled from the library (we should've just yanked the entire magazine). Not recovering the data would result in thousands of lost man-hours of work, so when we discovered that the tape we had was blank, it quickly became a do-anything-at-any-cost situation.

Things were dicey post-Katrina and they weren't letting anyone in the city. We had to charter a sea plane and land it in a canal behind our office to gain physical access. We were escorted by mercenaries armed with automatic weapons. Once inside, we grabbed every drive and tape out of every server and array enclosure.

We ended up being able to do a full recovery from tape once we got back. Sometime later, when we were able to get the entire rack over to another data center, I was curious if any of the gear would work so we reconstructed everything. Miraculously, after being submerged for over 4 days, nearly every hard drive and server booted with zero data loss (one or two drives didn't spin up, but they were RAIDed). Perhaps even more impressive is that they stayed running that way for years after in our staging and test environment. It's pretty crazy how well-engineered and reliable the server-grade stuff can be these days.</comment>


Perfect email regex finally found - <AUTHOR> http://fightingforalostcause.net/misc/2006/compare-email-regex.php <comment><USER2> I've accepted that it's best to treat people like grown-ups and if there's '@' and '.' and it's retyped then it passes. Someone can easily submit a fake name or phone number or street address, and e-mail's no different.

If they get it wrong, intentionally or not, then they don't get their receipt, confirmation, validation link, etc. and I believe in most cases the incentive is there for them to get it right.

In the rare case where there's some incentive to circumvent the system and this has some measurable impact on a site, then more validation may be warranted. Otherwise, why worry about it?

Also: HTML5. ;)

<comment><USER3> Retyped!? Grown-ups can read what they write.

Retyping only makes sense for password field, which is obfuscated and doesn't allow copy&paste.

<comment><USER4> I would estimate about 0.25% of people will make a typo like "@homail.com" or "@gmial.com"

Multiply that by say, 130,000 people, and you are dealing with 325 people who don't receive their download, etc. and are not happy!

I think what would be really awesome is a regex that catches these common typos and warns the user immediately.

<comment><USER5> True, but you have to balance that against the small but nonzero number of people put off by an extra text field. Plus, I would find email repetition more annoying if I didn't always do Cmd-A/Cmd-C/Tab/Cmd-V, and in this case the repeated field won't catch any errors.

<comment><USER6> The fact that you know the shortcuts for select all, copy, and paste puts you in the top percentile of users. Most people don't even know that's possible, and certainly not with keyboard shortcuts.

(The point being that for most users the faster approach that requires less thinking is to type it twice. Sometimes I do things the "slow" or "long" way when coding because it doesn't require a mental shift from the task at hand.)

<comment><USER7> _The point being that for most users the faster approach that requires less thinking is to type it twice._

Spoken like a touch-typist with a short email address. I feel confident in claiming that firstname.lastname@example.com will be looking for that copypaste button. It's not like copypaste is a new technological innovation - it's practically the most used feature of personal computing, after backspace.

<comment><USER6> Good point. email@example.com takes me 3 seconds but might take someone else 10 seconds. Thanks for the perspective.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Nothing is finished, nothing is permanent, and nothing is perfect.

In particular, one of the evaluation tests used here is wrong: it requires failure-to-match on a TLD with a digit in it:

firstname.lastname@example.com

In fact, IDN TLDs will have digits in them. An internet-draft is in the works to replace RFC1123's IDN-unfriendly implication that digits in TLDs are illegal:

<http://tools.ietf.org/html/draft-liman-tld-names-02>

<comment><USER9> If you say "will have" and "in the works" means it isn't the standard and the current test is valid.

<comment><USER8> A nice try at pedantry, which I would usually respect, but in the domain of internet standards with which I familiar, you are wrong.

The existing specs are in conflict, with the more recent ones (such as IDN) allowing digits. Internet authorities, including ICANN, have enabled domains with digits in TLDs; software which is far more foundational than any web- app's email validation regex has been updated.

Registration of names in some of these digited-TLDs has begun; you can visit these TLDs with your browser; your users can have functioning email addresses on these TLDs.

If your app rejects such email addresses because of slavish compliance with imprecise language in a 31-year-old RFC, you'd be the one violating prevailing standards, which are a function of more than just formal IETF RFCs.

That the Internet-Draft I referenced may soon become an RFC is just cleaning up loose ends on a change that's already happened. This final step isn't even strictly necessary for the _de facto_ standard to have changed by consensus among practitioners. Plenty of vibrant well-understood standards never reach RFC status, nor pass through any formal standards body. The standard is ultimately what people do, not what someone once-upon-a-time decreed.

</comment></comment></comment><comment><USER3> Not perfect: doesn't support IDN without punycode. Doesn't support IDN TLDs at all.

Users of <http://موقع.وزارة-الاتصالات.مصر> won't be pleased :)

<comment><USER10> At the risk of sounding flip, not supporting punycode sounds like a feature. Getting internationalization right is clearly important, but punycode as a means of doing so? It's one of the many things that make me weep for my industry.

In fact, I often wonder if punycode is a prank that got out of hand.

UTF-8, on the other hand, would have been excellent for this purpose.

<comment><USER3> DNS doesn't allow 8-bit characters, so UTF-8 is not an option. I think punycode is more efficient than UTF-5 would be.

<comment><USER10> True. It doesn't. But as far as I know, there is no deep technical reason why it can't. The dots in domain names are '\0', and a few characters ('@', in particular) need to remain reserved, but other than that, what stops UTF-8 from being used?

</comment></comment></comment></comment><comment><USER11> It does not look like any of these can detect or were tested against quoted- local-part addresses. As I understand it, the local part can be quoted to allow illegal characters to be used, e.g. "John Doe"@example.com

I fully understand that these are not in common use, but they are part of the RFC and may be in use somewhere.

<comment><USER12> His test also considers the % sign invalid, yet I've both sent and received email that required the % for the mail to be routed/relayed correctly (think "in care of" or c/o).

Granted, that was 17 years ago, but who's to say it's not in use somewhere?

</comment></comment><comment><USER13> Uh, what happens if a new TLD has more than 6 characters?

I don't get this preoccupation with making sure addresses _look_ valid. The ONLY way to validate an email address is to send it a message.

</comment><comment><USER14> I never understood the purposes of the "perfectly valid by the RFC" email regex. You may be able to with 100% accuracy say that something _should_ be an email address, but you'll never be able to tell if it's a valid account on the server, or if the server even exists.

</comment><comment><USER15> Email validation is user input validation; you are protecting the user from some cases of erronous input, and yourself from stuff that doesn't even look like an email.

I find these large catch-all email regexps silly for two reasons:

1\. They are hard to write, hard to understand, and hard to maintain.

2\. Most importantly, they are difficult to understand for users. "You entered an invalid email". Now what? the user asks.

This is why e-mail validation should be done in steps. Here is some Rails pseudocode:

      validates_format_of :email,
        :with => /@/,
        :message => "Needs to contain an @."

      validates_format_of :email,
        :with => /\.[^\.]+$/,
        :message => "Has to end with .com, .org, .net, etc."

      validates_format_of :email,
        :with => /^.+@/,
        :message => "Must have an address before the @"

      validates_format_of :email,
        :with => /^[^@]+@[^@]+$/,
        :message => "Must be of the format 'firstname.lastname@example.com'"

Much easier to write, much easier to maintain, and much better error messages to the users.

</comment><comment><USER16> So many web services do this wrong, that it isn't even worth doing it right: no one is going to complain that your service doesn't accept their "wacky! quoted"@email.address

Sometimes, you aren't validating a whole string, you are searching for email addresses in a sea of text, or an arbitrarily delimited, user-entered list of contacts.

Support usernames with alphanumerics, dashes, underscores, periods, and plus signs; Require a single @; Support domains with alphanumerics, dashes, and at least one period. Screw anyone with something more complex than that. Done deal.

<comment><USER17> I see your point. If somebody is using something weird, they probably have problems everywhere.

</comment></comment><comment><USER18> I have an implementation of RFC3696 <http://www.faqs.org/rfcs/rfc3696.html> (which is the spec for validating emails) in Python here - <http://www.acooke.org/lepl/api/lepl.apps.rfc3696-module.html>

That is part of Lepl - <http://www.acooke.org/lepl/> \- and although it's implemented in a recursive decent parser, much is compiled to regular expressions for efficiency. So you get the best of all worlds: regexp efficiency; parser accuracy; standards based.

A blog post on the compilation to regexps is here - <http://www.acooke.org/cute/LEPLOptimi0.html>

</comment><comment><USER19> It's certainly more concise than my previous favorite,

          qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
          dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
          atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-' +
            '\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
          quoted_pair = '\\x5c[\\x00-\\x7f]'
          domain_literal = "\\x5b(?:#{dtext}|#{quoted_pair})*\\x5d"
          quoted_string = "\\x22(?:#{qtext}|#{quoted_pair})*\\x22"
          domain_ref = atom
          sub_domain = "(?:#{domain_ref}|#{domain_literal})"
          word = "(?:#{atom}|#{quoted_string})"
          domain = "#{sub_domain}(?:\\x2e#{sub_domain})*"
          local_part = "#{word}(?:\\x2e#{word})*"
          addr_spec = "#{local_part}\\x40#{domain}"
          pattern = Regexp.new "\\A#{addr_spec}\\z", nil, 'n'

<comment><USER20> This is the same one I've been using the last couple of years, and I wish I could remember where I first came across it.

<comment><USER21> From here maybe? <http://tfletcher.com/lib/rfc822.rb>

</comment></comment></comment><comment><USER22> "Now you have two problems."

Seriously, I can't think of a single good reason why you would want to check whether an email address is "valid". What you should be concerned about is whether or not the address _works_ (and usually, can/does the person who just signed up actually read and reply to email to that address).

Hypothetically, if an invalid address works (due to bugs in mail systems) -- then it works, and the only problem with accepting such an address is that the bugs might get fixed. If an address is valid, there's no reason to assume that it will work or that it belongs to the person who signed up. It isn't even a good way of detecting typos; transpose two characters in an email address and it will most likely still pass your validation.

<comment><USER23> _Seriously, I can't think of a single good reason why you would want to check whether an email address is "valid"!_

Because it's fun.

</comment></comment><comment><USER24> It makes me happy that a contest of this kind is hosted at the domain "fighting for a lost cause" :-)

</comment><comment><USER25> How in the world did this get 172 points?

After this I almost stopped paying attention: "It's my philosophy that it's better to accept a few invalid addresses than reject any valid ones, so I'm shooting for 0 false-positives and as few false-negatives as possible."

But then I looked at the regexps and they miss an absolutely trivial fact: valid email addresses can end in a dot. "firstname.lastname@example.com." is just as valid (more so, in fact) than "email@example.com".

<comment><USER26> >How in the world did this get 172 points?

Things don't have to be well done, nor do you have to agree with them for them to be worth consideration/stimulating.

</comment></comment><comment><USER27> &*=?^+{}'~@188.8.131.52:2000 really looks strange, even though its a valid email.

Good luck trying to register on any site with it though :)

<comment><USER28> What's the deal with using a port number in an e-mail address? I can't imagine many systems supporting that. Anyone got any more info on it that doesn't involve me digging through 101 pages of RFCs? :-)

<comment><USER29> I don't think that's valid. I think they misread the RFC. First of all, an IP address (address-literal) is supposed to be enclosed in [square brackets]. The colon is only allowed to designate address family, as in "foo@[IPv6:XXXXXX]".

</comment></comment></comment><comment><USER30> It thinks firstname.lastname@example.com is valid, and thinks decimaldomain@2130706433 (localhost) is not valid. It also thought user@3ffe:1900:4545:3:200:f8ff:fe21:67cf as invalid.

</comment><comment><USER31> Um, UTF-8? Unicode domains? Regexing email is a waste of time.

</comment><comment><USER32> I assume this breaks with the new non-latin TLDs or IPV6

</comment><comment><USER33> I wrote an article "Validating Email Address in Web Forms - The Hazards of Complexity" that discusses several comprehensive email validation libraries and common problems with complex methods of validation.

[http://www.messagingnews.com/onmessage/ben- gross/validating-...](http://www.messagingnews.com/onmessage/ben- gross/validating-email-address-web-forms-hazards-complexity)

</comment><comment><USER34> As a typical optimizer, I was always trying to reduce my source code a few more bytes or speed up my processes a few nanaseconds here and there. I was so proud of myself. Until I tried to maintain my own slickness.

There's a fine line between clever and practical. Why do I have a gut feeling that this approach is way over that line?

</comment><comment> ryan-allen I think a basic token based parser might be more appropriate for thorough validation of email addresses. I see it similar to trying to match XML or HTML with regexps, very common but so very easy to break. You can't go to wrong parsing an address token by token, can you?

</comment><comment><USER35> AFAIK a naked IP address as domain like email@example.com doesn't work (at least in some mail servers like Postfix they are bounced with a "bad address syntax error). The address has to be like email@example.com and I don't see this case covered.

</comment><comment><USER36> Wow.

      /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?
      ]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|
      biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|
      pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.
      [0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i

I mean... Why do this? Just, why? It's almost unreadable.

Just write a short 20-line function which validates an email address. Use if statements. Write comments. Then verify that your algorithm does in fact handle all corner cases, just like the regexp does. (Your verifications will be in the form of short, simple unit test case functions.)

To encourage regexp abuse like that is to encourage bad programming.

<comment><USER37> (late, but...)

Frequently because Perl's regex library is _insanely_ fast. Faster than if statements + smaller regex / roll-your-own.

(as long as there's no look-ahead / look-behinds. It's still fast then, but custom functions can sometimes do better.)

</comment></comment><comment><USER38> There's a classic email regex from Jeffry Friedl (author of "Mastering Regular Expressions") himself: <http://www.diablotin.com/librairie/autres/mre/chBB.html>

It's 6,598 bytes long.

</comment><comment><USER21> I've often wondered why we don't have any standardized test cases for email validation. A simple list of known good, and known bad addresses to use as test cases would really help.

You could almost make a game out of finding valid addresses that are not matched, or invalid addresses that are false positives, or optimizing candidate regexps. The list could be continuously growing as new variations are discovered, and tested against previously submitted candidate regexps.

</comment><comment><USER39> I've accepted email validation is like security, better left to libraries by people smarter than I am...TMail with over 2000 test cases.

But we know a valid email address when we see it, right?

\--

Edit: Nicely done, HTML5.

</comment><comment><USER40> This one in perl is fun as well:

<http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html>

<comment><USER41> And it is actually mostly correct, unlike the one in the article. (Has anyone tested it with the new tld for egypt?)

</comment></comment><comment><USER42> NOT perfect, FAILS to accept valid addresses

Another know-it-all web developer guy who thinks he got his regex right... These are valid addresses that he rejects: user@ua (.ua = Ukraine) user@km (.km = Comoros) user@ne (.ne = Niger) Many ccTLDs have MX or A records pointing to real MTAs.

</comment><comment><USER43> "Perfect email regex finally found"

Based on the HN title I thought it was going to be an article describing a post-it found on Fermat's dressing table mirror.

Instead it's a list of mostly correct regexes. As Miracle Max might have observed, mostly correct is partly imperfect, and partly imperfect is Not Perfect.

</comment><comment><USER44> Here's one using modern Perl regex features. It's part of the perl regression tests: [http://github.com/mirrors/perl/blob/blead/t/re/reg_email.t#L...](http://github.com/mirrors/perl/blob/blead/t/re/reg_email.t#L13)

</comment><comment><USER45> Well that's one less thing.

Now someone please make the perfect JSON regex decoder :-)

</comment><comment><USER46> How ugly do non-regex based email validation functions look? I've never seen one, but I've always wondered if that was a more elegant solution.

<comment><USER47> Regex is the only real sensible way to validate strings until something better is found. Even if you just wrote code to do it manually, you'd really just be writing a verbose and poorly implemented finite state machine that globbed symbols together, which in the end, would just be inferior to writing a well tested Regex string.

Regex can be easier to read if you have something do a graphical expansion for you. Otherwise, it's write-once, read-never.

<comment><USER48> That's just silly. Depending on what's in the string, writing a parser might be much better than a regex. Lots of parser libraries already out there, too.

<comment><USER19> Especially when the spec itself is in EBNF.

<comment><USER49> True, though it's EBNF with a bunch of explanatory text and annotations.

What would be interesting, but I can't find with some googling: Has someone implemented a parser-generator based on the spec? The ideal would be that the parser specification looks a lot like the RFC, since then you'd have more confidence it was actually correct (and it'd be easier to maintain for future changes).

<comment><USER50> There was a long post on the topic of 'regex-vs-parser' for email on reddit a while back. I hope I'm pointing to the correct person, but he wrote a parser in Haskell that validates against RFC5322: <http://hackage.haskell.org/package/email-validate>

</comment></comment></comment></comment></comment></comment><comment><USER51> I've been surprised at the number of forms that tell me my email address, which has a single-letter local part, is invalid.

</comment><comment><USER52> Great! Now get to work on the perfect HTML regex.

(I know.)

</comment><comment><USER53> Something tells me this might not match admin@παράδειγμα.δοκιμή/Αρχική_σελίδα (a valid UTF-8 domain name).

</comment><comment><USER54> Fascination. Then acid reflux.

<comment><USER55> I believe that the image you're looking for to express your current emotional state is [http://uploads.postfarm.net/public/postfarm/uploads-2.0/i/if...](http://uploads.postfarm.net/public/postfarm/uploads-2.0/i/ifrewup.jpg)

</comment></comment><comment><USER56> I'm so totally gonna steal this!</comment>


MySigMail v1.9.0 Is Out (UI Email Signature Generator) - <AUTHOR> https://github.com/antonreshetov/mysigmail/releases/tag/v1.9.0 <comment><USER2> Just what we need, more bloated HTML signatures with images...</comment>


Apple is under fire for "excessive overtime" and illegal working conditions - <AUTHOR> http://qz.com/767087/apple-is-under-fire-for-excessive-overtime-and-illegal-working-conditions-in-another-chinese-factory/ <comment><USER2> Title is clickbait. Title should be:

"Pegatron is under fire for "excessive overtime" and illegal working conditions"

<comment><USER3> Apple supplier Pegatron is under fire for "excessive overtime" and illegal working conditions.

<comment><USER2> Thanks! Even better than mine.

<comment><USER4> Except that Pegatron has many customers. Including the name Apple at all is pure clickbait.

<comment><USER5> I'd like to know what percentage of their business is from Apple though. I suspect it is their biggest customer by far.

</comment></comment></comment></comment></comment><comment><USER6> From the article:

"Apple stipulates that workers should have at least one day off a week and work no more than 60 hours."

… and yet it is Apple under fire?

</comment><comment><USER7> "Go get more robots, Apple. Humans don't deserve this."

Fine, but how exactly will erasing the jobs help these people?</comment>


Angela Merkel estimates 60% to 70% of the German pop. will contract the virus - <AUTHOR> https://www.businessinsider.com/angela-merkel-estimates-coronavirus-will-hit-large-majority-german-population-2020-3 <comment><USER2> The estimate is from Prof. Drosten* of the Charité in Berlin, a highly regarded virologe. His lab developed the first diagnostic corona test. Before that they also developed the tests for SARS, Zika and MERS.

He also constantly warned to flatten the curve, spreading infection time as long as possible - preferably over multiple years...

For those speaking german - there is a daily podcast update from Prof. Drosten [https://www.youtube.com/playlist?list=PLkKON9te6p3OpxqDskVsx...](https://www.youtube.com/playlist?list=PLkKON9te6p3OpxqDskVsxXOmhfW0uPi1H)

*Head of the Institute for Virology at the Charité

<comment><AUTHOR> > preferably over multiple years...

Reminds me of a tweet I read today:

[https://twitter.com/kurteichenwald/status/123742407086352384...](https://twitter.com/kurteichenwald/status/1237424070863523841)

Even if this outbreak is contained, either because of social policies or seasonal change, governments should prepare for a new wave next year (and the southern hemisphere should be preparing for a hit in a few weeks/months).

<comment><USER3> Exactly what happened with SARS which was contained by the third year and now no longer occurs

</comment></comment></comment><comment><USER4> Christian Drosten, who's likely the origin of these numbers, has explained them a few days ago in a podcast.

The math is incredibly simple. The idea is that right now you have an estimated transmission rate of 3 people infected by one person. (Of course this number has high uncertainties and can be changed by better isolating patients, but let's assume it's roughly correct.) If you want to stop the transmission this needs to go below one. The major thing that can stop transmission is immunity from patients that already had the disease (assuming, which is probably true, that most patients won't get infected twice, even though it may happen in rare cases).

So getting from 3 to 1 means 2/3 of the population need to be immune.

<comment><USER5> The Spanish flu "only" infected about 1/4 or 1/3 of people. Why the higher number for Covid?

<comment><USER6> Probably because people travel much more now.

<comment><USER7> The spanish flu happened during the first world war when many soldiers were traveling significantly.

</comment></comment></comment></comment><comment><AUTHOR> Also, it seems that Germany and France are currently 7 or 8 days behind Italy, when plotting the diagnosed cases...

[https://mobile.twitter.com/henrikenderlein/status/1236748772...](https://mobile.twitter.com/henrikenderlein/status/1236748772455170049)

(Several plots in the thread)

</comment><comment><USER8> Honest question -- I am trying to see how she and others arrive at these numbers. (Believe me, I'm not a burying my head in the sand ... quite the opposite. I'm very concerned.)

Italy has 8,500 who are still sick. And yet, reports are that their medical system (which is good) is completely overwhelmed, to the point where treatable elderly are not even diagnosed [1].

Yet the numbers indicate they have about 3 hospital beds per 1000, or 186,000 beds, which are normally 80% full. So that means, 37,000 beds available.

So, 8,500 cases (not all of whom are in the hospital) should not overwhelm 37,000 beds, right?

Perhaps the number of _doctors and nurses_ are overwhelmed? Anybody know where to get reliable stats on that?

Anybody see what I'm missing? Or do you think I've gotten incorrect info?

I'm trying to arrive at a rational prediction of how bad things could be in the US, and how soon.

[1] [https://twitter.com/jasonvanschoor/status/123714289107769753...](https://twitter.com/jasonvanschoor/status/1237142891077697538)

<comment> semi-extrinsic Yeah, it's not the total number of hospital beds, it's the number of intensive care hosptal beds with associated equipment like ventilators and intubation equipment, chest x-ray capacity, and the number of doctors and nurses familiar with that type of equipment.

In my country we have ~12 000 hospital beds total, but only ~400 intensive care beds. Reportedly our capacity for immediately stretching that number is that we can muster ~1 200 intensive care beds. If the need goes beyond that (and everyone is seriously hoping it will not) then we will be overwhelmed like Italy.

<comment><USER9> Not only that, but these intensive care beds need to be isolated. Ever been to an ICU? Isolation is not a thing. We can't just go in and tape a bunch of plastic drapes to the walls/ceilings/floors and make these ICU beds isolated. 400 ICU beds is to a first approximation zero isolated ICU beds.

<comment> Engineering-MD Well theatres can be used instead which will allow for isolation. In reality the main HDU or ITU will become covid zone and theatres used for non Covid admissions.

</comment></comment></comment></comment><comment><USER10> Seems to be a prediction at the dramatic end in particular if the quick lockdowns and quarantines are kept up. As China has shown it's very possible to bring the numbers down.

Either way though even if it turns out to be a too high a prediction at least she speaks plainly and I guess electing a physicist who understands how these dynamics can work was a good idea.

<comment><AUTHOR> >Seems to be a prediction at the dramatic end in particular if the quick lockdowns and quarantines are kept up.

I've read several epidemiologists that said stuff among the lines that, while the objective is not to generate panic, leaders should not minimize the scale of this outbreak, and the consequences of downplaying it are severe. When politicians say stuff like "this is just another flu", then lots of people continue their lives as usual, and thus, it gets almost impossible to slow down the propagation.

Maybe it's OK to throw those numbers, as a wake up call for society. If the government ordered a full lock-down, many people that still think "it's just a flu" would get mad... but if she first announces this, then maybe the rest of society would be more open to accept the consequences of a lock-down. In the end, it's politics.

<comment><USER11> How long do you propose we maintain this "lockdown"?

<comment><AUTHOR> I would look into China's experience for guidance. I know the costs would be monumental, so it's not an easy decision, and would not like to be in her shoes right now. But if the alternative is what Merkel suggests...

<comment><USER11> But this virus won't go away until a significant fraction of the population gets infected and heals. It'll come back in the fall when it's colder and hit again. I'm afraid the only principled solution here is to develop vaccines and working antivirals in the next few months, which by "normal" standards is completely unprecedented.

<comment><USER12> The best way forward is to flatten the curve as much as possible while other means are worked on.

</comment></comment></comment></comment></comment></comment><comment><USER5> Ireland quoted 50-60% in a CBC article I read earlier today:

[https://www.cbc.ca/news/politics/covid-19-coronavirus- quaran...](https://www.cbc.ca/news/politics/covid-19-coronavirus-quarantine- europe-1.5492967)

</comment><comment><USER13> This is completely unwarranted fatalism. Taiwan and Singapore bent the curve, and Korea is doing it now as well. Learn from them and implement! Really don't understand this logic at all - containment is possible.

<comment><USER14> If you said this last week about Singapore I would agree with you. Have you looked at their graph in the last few days?

<comment><USER15> It's still mostly contained (most cases are connected to existing clusters) but the government is foreshadowing that containment is becoming a major problem without being able to rely on geographic travel screening. Many imported cases (UK, Italy, Thailand) in the last few days.

The curve is still very much bent when we look at how early this started in the country and it will continue to be flatter than in any place not putting distancing and testing in place on time

</comment></comment></comment><comment><USER16> Would it make sense to do controlled infections of younger medical staff to build immunity against the disease so they can do their jobs when masks and gloves become scarce? Ethics aside just from a pure optimal outcome perspective. Italy is already reporting a shortage of masks.

<comment><USER12> There is nothing called a controlled infection outside of a vaccine. As we saw in Wuhan, several youngish doctors and medical staff died as well. When some of the "controlled infections" turn severe, now you have to take care of them as well(probably with a higher priority since they volunteered for the good of the community), which adds to the burden.

<comment><USER17> Well, there is. You infect them and keep them isolated until they recover. If you do that before the problem becomes rampant, you will have more healthy doctors available. However, if the virus mutates significantly, they may just get sick again.

It's possible, but probably not ethical.

</comment></comment></comment><comment><USER18> "Merkel went on to tell lawmakers that more events and large gatherings could be canceled, depending on the severity of the outbreak.

Postponing parliamentary proceedings is also a possibility, Merkel said."

wtf. This is what they are planning to do about it?

<comment><USER18> What's to downvote? I mean they are essentially doing nothing. Allegedly this is also due to the federal system where constituent states get to decide such policies. The federal health minister can only "recommend" stuff but this is not the way to contain the spread of a virus.

Neighbour states such as Austria are closing universities while in Germany they are still playing football matches in arenas with 50.000 people (yesterday).

<comment><USER19> > yesterday

I hate the "it's a dynamic situation" wording but yes, days matter here. Also yesterday, NRW, one of the most affected states put out the official recommendation to cancel major events with more than 1000 persons. Austria closed some universities at this point but many are scheduled to close next Monday.

</comment></comment></comment><comment><USER20> This is the end.

[https://www.youtube.com/watch?v=VScSEXRwUqQ](https://www.youtube.com/watch?v=VScSEXRwUqQ)

<comment><USER21> Maybe so, but please don't post unsubstantive comments to Hacker News.</comment></comment>


List of Swift Tutorials and Resources - <AUTHOR> https://github.com/programmingwithswift/Swift-programming-Tutorials-and-Resources <comment><USER2> Just curious, why isn't swift.org included in this list? Seems like all Swift developers would want to be aware of this site.

[https://swift.org/blog/](https://swift.org/blog/)</comment>


Parents Use Technology to Create Proof of Santa.com - <AUTHOR> http://online.wsj.com/article/SB10001424052748703395204576024141664067226.html <comment><USER2> It's amazing how far a child's mind will go toward believing something they want to believe. I don't think you need a lot of help from technology in this area.

I'm living in Holland now, where "Sinterklaas" (forerunner of our Santa Claus) has already come and gone this year (Dec 5th). I was sitting on a train near a family which was clearly headed to a relative's house to celebrate the arrival of the "Sint" with gifts for all the children.

Riding along with them was a rather conspicuous bag that was, quite literally, overflowing with gifts for the kids. They just didn't see it. They did ask various logistical questions to their parents (Does his horse get tired visiting all of the children? Can he hear us if we sing to him in the train?), the answers to which they gladly accepted as fact with no follow up.

The world is pretty magical to you when you're a child... you're hard-wired to accept even the most ridiculous answers from your parents as fact (probably out of evolutionary necessity).

If your children are at the point where actual evidence is required to keep the myth running (or worse, actually trying to capture Santa), it's probably a good time to transition to the truth...</comment>


High-Performing Team's Checklist - <AUTHOR> https://teamsuccess.io/checklist <comment><USER2> How do you always "assume the best intentions"? In some teams I find it quite hard to do so.

<comment><AUTHOR> I know it's sometimes hard. I try to encourage my teams to give people the benefit of the doubt, rather than assuming something negative. It's a good way to combat defensiveness and important to building trust. In the end, it's a conscious choice to assume the best intent.</comment></comment>


Wikileaks are for-hire mercenaries (Cryptome founder John Young) - <AUTHOR> http://www.theregister.co.uk/2010/12/07/cryptome_on_wikileaks/

<comment><USER2> I'll grant it that the hero here is Bradley Manning, who should really receive more support.

</comment><comment><USER3> Interesting, but if that's true, why doesn't anyone leak some kind of documents proving it?

</comment><comment><USER2> The claim is that Assage is selling some of the secret documents on the side instead of making them public. Is there some proof to that?

<comment><USER4> I think the claim is that Wikileaks is getting a crapton of publicity and hence donations and isn't really a non-profit organization, but in fact is designed to make the Wikileaks founders rich.

I think the solution to this claim is obvious: Wikileaks's budget should be 100% transparent to everybody. Is it? I don't know where it is. If it turns up somewhere, then we can judge for ourselves whether it is a scam; if it is not available, then Wikileaks is a hypocritical organization and the claim is probably true.</comment></comment>


AMD acquires SeaMicro - <AUTHOR> http://sites.amd.com/us/promo/stave/Pages/seamicro.aspx

<comment><AUTHOR> Some additional info here: [http://www.datacenterknowledge.com/archives/2012/02/29/amd-t...](http://www.datacenterknowledge.com/archives/2012/02/29/amd- to-acquire-server-innovator-seamicro/)

 _AMD will acquire low-power server specialist SeaMicro for $334 million_ _The basic building block of the SeaMicro system is a credit card-sized compute block, comprised of a CPU and its chipset, DRAM, and a custom SeaMicro ASIC (application specific integrated circuit). SeaMicro's patented I/O virtualization allows companies to save money by using fewer cables and network interface cards (NICs) to connect to networks and storage._

<comment><USER2> That reminds me, Calxeda was making noises a few months ago about competing in that space using ARM cores. Cruising their site I don't see anything new so I guess they weren't as far along with their development as they were saying.

<comment><AUTHOR> AFAIK they were working together with HP on their labs: [http://www.engadget.com/2011/11/02/hp-and-calxedas- moonshot-...](http://www.engadget.com/2011/11/02/hp-and-calxedas-moonshot-arm- servers-will-bring-all-the-boys-to/)

</comment></comment></comment><comment><USER3> In case you're curious, this is the kind of thing that SeaMicro does: [http://www.datacenterknowledge.com/archives/2011/07/18/seami...](http://www.datacenterknowledge.com/archives/2011/07/18/seamicro- packs-768-cores-into-its-atom-server/)

Last I looked, the price of SeaMicro's servers ran in the low six-figures. Very cool stuff, but not anything I'm likely to get my hands on soon.

<comment><AUTHOR> According to their site, they're powering Mozilla's download cluster: [http://www.seamicro.com/sites/default/files/MozillaCaseStudy...](http://www.seamicro.com/sites/default/files/MozillaCaseStudy.pdf)

</comment></comment><comment><USER4> If anything, this is a loss for Intel. SeaMicro was the company to push Atom servers the most, and may have been even the only one. If they switch to AMD, that means no other other is interested in making Atom-based servers right now, which clears the path for ARM with their Cortex A15 chips later on.

<comment><USER5> Well, AMD has their own low power core, Bobcat, which I'd bet they're going to be combining with Sea Micro's stuff. In fact, given AMD's move to synthesized design for Bobcat I expect that they'll just take the GPU out of a Brazos chip, put in the logic from SeaMicro's special connector chips, and boom you've got a pretty compelling product.

</comment></comment><comment><USER6> Discussion from yesterday: <http://news.ycombinator.com/item?id=3649844>

</comment><comment><USER2> With this I wonder if we will see Bobcat variants which do not have the GPU cores but instead have more CPU cores.</comment>


High Costs Offset an Increase in Revenue at Etsy Inc - <AUTHOR> http://www.nytimes.com/2015/08/05/business/high-costs-offset-an-increase-in-revenue-at-etsy-inc.html?_r=0

<comment><USER2> This should not surprise anyone.

Etsy is a mess. They do pretty interesting engineering work but I have to wonder about some of the business decisions they have made.

I don't think that Etsy has done nearly enough to support their sellers. This isn't a new development either. They need to take a good long hard look at seller tools, and what they have really done to the seller community.

\- Removal of buyer feedback (there are bad buyers out there) EDIT: Etsy removed the ability for SELLERS to leave feedback on BUYERS

\- Poor customer service, I have a list of folks who "etsy trust and safety has wronged"

\- Draconian forum policies. Have a legitimate complaint about etsy, well you can't have a civilized rational conversation on their forum system.

\- Start a conversation that is "negative" about etsy in a public forum elsewhere, if they figure out who you are they WILL close your shop.

\- Their new shipping calculator? It looks to have some markup in it. Who's getting this money? Who is really paying for it (buyers or sellers)?

\- Etsy has a reputation of being "hand made" a lot of that "hand made" is by small children in china now.

Every day etsy looks more and more like a more modern and feminine ebay, but with none of the upside for sellers. Amazon is moving into handmade, and eBay is one redesign away from being a bit more consumer friendly (again). Really how long can they last?

<comment><USER3> I find it amusing that you advocate for increased ability for sellers, who are Etsy's customers, to provide honest feedback to Etsy... in the next breath after you've just advocated for the complete removal of buyer feedback.

<comment><USER2> Sorry, that came across wrong.

Etsy already removed the ability for Sellers to leave feedback on buyers. It isn't a good thing.</comment></comment></comment>


Android Studio 1.0 Released - <AUTHOR> https://developer.android.com/sdk/index.html

<comment><AUTHOR> The original link I wanted to post is : [http://tools.android.com/recent/androidstudio10released](http://tools.android.com/recent/androidstudio10released)

But this is already posted here : [https://news.ycombinator.com/item?id=8718353](https://news.ycombinator.com/item?id=8718353)

But marked as dead so it will never be seen by a lot of people... Is there a proper way to handle this ?</comment>


A 'Brief' History of Game AI Up to AlphaGo - <AUTHOR> http://www.andreykurenkov.com/writing/ai/a-brief-history-of-game-ai/ <comment><USER2> It's a nice historical overview of using search and ML for formal games like chess.

But - this is not the game developer usage of "game AI". Where are wargames, where are artificial characters, where is interactive storytelling, where are realtime control systems, and so on, and so forth? The doc is missing a lot of the _actual_ history of game AI, which is much wider and more varied than presented here (and ML approaches are still in minority).

Anyone interested in game AI history should definitely check out the past proceedings of the AIIDE conference: [http://www.aiide.org](http://www.aiide.org)

<comment><USER3> What are you talking about. Storytelling is not part of game AI. Not for Chess. At best, the storytelling can be considered to be purposely making the AI consider fewer ply of moves, to create a more fun experience for lower leveled players.

<comment><USER2> I can't tell if you're trolling or are just not up to date on game AI, so assuming the latter: you have to think beyond chess. There's much more info on interactive storytelling in the AIIDE proceedings I linked to, it's a very active area of research. Academically it goes back at least to the mid 90s, Oz project at CMU for example, or MIT Media Lab projects. And in commercial production, interactive stories are as old as the industry, probably the best early example is Infocom but back then there wasn't much AI driving it; it's not until the 2000s that people started actually building "drama managers" for shipping games to introduce dramatic conflict dynamically.

<comment><USER3> You can measure research on lots of directions. The purpose of AlphaGo was to win the game, so discussion about AI which are not built to win is largely irrelevant. The difficulty of Go had nothing to do with creating tension (where in many games humans play, AI players can trivially win if the designers wanted them to). In Go this was not the case, as AI lagged behind grandmaster play significantly. Thus, the discussion of research that interests you that has nothing to do with the goals of Go AI, is tangential at best. It's not fair to say the article is faulty just because you wanted them to discuss your favorite research conference.

</comment></comment></comment></comment><comment><USER4> I'm glad that you've mentioned Kaissa, the famous chess program from Soviet Union.

Kaissa was developed in 1972. Before that, in 1963, there was ITEP (ИТЭФ) chess program and in 1965 this program won in the international computer chess match. See details here: [https://chessprogramming.wikispaces.com/ITEP+Chess+Program#S...](https://chessprogramming.wikispaces.com/ITEP+Chess+Program#Stanford- ITEP)

By the way, the first computer game in USSR was made in 1957 on computer Strela-1, the author is Yuri Pervin. It was a variant of Dominoes board game in the player vs computer mode. The game was described in "Problemi Kibernetiki", issue 3, pages 171-180.

<comment><AUTHOR> Very interesting, thanks for the info!

</comment></comment><comment><USER5> Term "Game AI" is usually used in context of game development, where it means something completely different: not an agent that is optimized for top perfomance, but an agent that is optimized for maximum player fun. It's a completely different task, solved with completely different methods.

</comment><comment><USER6> >"since then computers have continued to become exponentially faster, and today humanity's best Chess players are likely no match for programs you can run on your smartphone."

Is this really true? Would a smartphone chess app beat the worlds top ranked player today?

<comment><USER7> >Chess engines continue to improve. In 2009, chess engines running on slower hardware have reached the grandmaster level. A mobile phone won a category 6 tournament with a performance rating 2898: chess engine Hiarcs 13 running inside Pocket Fritz 4 on the mobile phone HTC Touch HD won the Copa Mercosur tournament in Buenos Aires, Argentina with 9 wins and 1 draw on August 4–14, 2009.

[https://en.wikipedia.org/wiki/Computer_chess#Computers_versu...](https://en.wikipedia.org/wiki/Computer_chess#Computers_versus_humans)

<comment><USER6> oh wow! thanks for the link

So, if someone out there can explain, is a program like AlphaGo deterministic? Meaning if the opponent plays the exact same moves in 2 consecutive games will the 2nd game be a replica of the first?

My naive guess is that the MTC search part of the algorithm will necessarily introduce some variation in play, no?

<comment><USER8> I would be surprised if AG didn't start with a randomly generated seed to prevent this from happening. Of course that just moves the question to, if you start with the same seed and do the same moves...</comment></comment></comment></comment>