Don't trust default timeouts - <AUTHOR> https://robertovitillo.com/default-timeouts/ <comment><USER2> No! The danger in forcing programmers to pick a timeout is that they will pick the wrong value, most often a too short timeout, because they have been testing their software on a super-fast internal network and haven't considered the poor users in the real world.

Case in point: Google's Waze. If I have a slow mobile connection (e.g. edge or even 3g), Waze will repeatedly fail to load a driving route. It will think for a few seconds at most, then timeout and tell me there was a problem. If it only would wait a few more seconds to load, then the app would be useful. Instead, due to their crappy choice of timeouts, the app becomes useless.

<comment><USER3> Is the argument that a call that could get stuck for a few minutes is better than a "wrong" dozens of second value ? Even as a user I feel it's a waste of precious resource (including my time). It's like waiting at the register until the shop closes down because the employee had to go somewhere, instead of giving up and trying the next open register.

I'd think infinity is not a valid state.

For waze's case, I supposed their priority is not on salvaging the 1% longest request (though critical to you), and instead preserve server resources for the 99% faster clients. That's not a "wrong" value on their side, and probably have been carefully tailored to get the right tradeoff.

<comment><USER4> A too short timeout is more problematic than no timeout because it breaks the application.

Let's say 10 seconds, typical intuitive but bad timeout. This will cause requests to fail for no reason other than users are in Asia or Africa, high latency. This will break the application when it's used or deployed across datacenters because high latency. This will cause requests to fail when the server is a bit busy (couple seconds more to process requests). Worse, it will cause chain reactions under load, creating more retries and even more load, causing other services/servers to timeout too.

Better go for a long timeout. A long timeout doesn't break the application.

<comment><USER5> > A long timeout doesn't break the application.

I'm pretty sure infinite timeout also breaks the application, in a way people rarely realize that it is because of the timeout. People would rather think it "just didn't work, don't know why" instead of being very clever and realized "it must be low timeouts!!!"

<comment><USER4> Yes, go ahead and set a 10 minutes rather than infinite or 10 seconds. That will make it much easier to realize that things are frozen because they will raise exceptions and logs all over the place.

To be pedantic though, infinite timeouts don't break applications except some rare cases of resources exhaustion. If an application is completely unresponsive, it is dead for good, not because of the timeout, need to fix the root cause (often resource exhaustion like swapping or it's waiting on another IO or service that's frozen).

<comment><USER6> Failing because of a too short timeout feels silly, but a stupidly large timeout leads to frustration and hazardous user actions like killing the app with the task manager.

You don't need a timeout, you need a "cancel" button.

<comment><USER4> Funny you mention that, this reminds me of Windows task management. Windows automatically gives a popup to terminate an application when it detects an application is unresponsive.

This happens regularly when I open large files in some app, they take a fair bit of time to load, Windows offers a popup to kill the app after few seconds. Have to carefully wait and not click anything.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I think the opposite. Use infinite timeouts for outbound calls. If you're an interactive application, display progress/activity to the user. Allow the user to manually cancel. If you're a server application or system, maintain an operation wide timeout and, if you do time out, propagate cancellation.

Systems I work with that have a default timeout are a pita. You end up having to make pointless retries when you'd have been happy to wait.

There are exceptions. If cancelling and retrying is has a decent chance of routing around the original problem. In that case, a timeout makes total sense. The other case is if you have a workload where operations tie up a mixed set of resources (e.g. threads + blocked backend calls) and only some of your incoming ops are dependent on the blocked resource. In that case, timeouts make sense in that they at least allow you to make forward progress on the unblocked requests. Although tbh separate queues and thread pools is the safer way to handle this. Because your caller with the timed out calls is gonna keep retrying and eventually these retries will crowd out the requests that can make progress in your incoming request mix.

<comment><USER8> As a user, I prefer short timeouts that pop up an error message with a 'retry' button.

You need the retry button anyway, in case the server is throwing errors. And there's often no good place for a cancel button, without putting up a big 'Loading' animation.

<comment><USER9> Retrying doesn't help on a slow connection... if the best case connections speed of your user is slower than your timeout, you can retry infinite times and it wont help.

Maybe increase the timeout on retry?

<comment><USER10> Exponential backoff but for the timeout instead of the interval, and/or a Wait Longer button, sound useful.

</comment></comment></comment></comment><comment><USER11> Related to HTTP timeouts, I've run into database clients without default timeouts. This meant even though the HTTP request was cut off after the timeout, the database request kept on working causing tons of slow database requests to be running on the server.

With Postgres you can use roles to set timeouts, maybe you want a longer timeout for crons, shorter for HTTP endpoints.

Sadly we were using mongo which doesn't have equivalent functionality. Ended up monkey patching the client library to define a reasonable default timeout.

<comment><USER12> That isn't due to a missing timeout, that is due to not properly communicating aborted requests down the stack which, admittedly, isn't always easy and some clients/languages/etc. are very bad at. A hardcoded timeout, while a fine workaround in some applications, is not a good default and not the proper fix for that.

Default timeouts in the database layers are hidden time bombs that turn operations that just legitimately take a bit longer than some value the library author set that you didn't even know existed into failures that get retried over and over causing even more load than just doing the thing once. Don't get me wrong there are lots of uses for setting strict timeouts and being able to do so is very important, but as a default no thanks.

<comment><USER10> You sometimes won't know a TCP connection has been closed unless you try to write to it (possibly there's a select/epoll/etc way to test), so if you are using blocking I/O, you won't know that the HTTP client went away long ago.

<comment><USER4> Highly advise to turn on TCP keepalive to detect dropped connections.

<comment><USER13> Sure. But the pointer of the parent poster was that you still won't observe the error unless you are interacting with the socket again. If you have a blocking thread per request model and your thread is blocked on the database IO, then it won't look at the original request (and it's source socket) for that timeframe.

There is no great OS solution for handling this. You kind of need to run async IO on the lowest layer, and at least still be able to receive the read readiness and associated close/reset notification that you can somehow forward to the application stack (maybe in the form a `CancellationToken`)

</comment></comment></comment></comment></comment><comment><USER14> "Don't trust timeouts" is a better title and a better approach. The fundamental problem with distributed systems is you can't tell the difference between slow and non-responsive/crashed services. Simple timeouts are rarely the answer. Here are the obvious ones depending on what part of the problem you are trying to optimize.

* Keepalive - Have the server ping back on a short timeout while it's working. Use a very long timeout for the server response.

* Asynchronous queues - Use queues for requests and discard traffic/error out when the queue becomes full.

* Idempotence - Send another request if the first one does not return in a reasonable amount of time.

* Broadcast - Don't fetch the information, have it sent to you through UDP. Great for cumulative metrics. If you miss one, no problem, the next packet has the same data.

* Cancellation - Cancel the request if you don't get an answer.

* Multiple requests - Send requests to multiple services and return the one that gets back first.

Forcing clients to pick timeouts amounts to punting a hard problem over to somebody who has even less idea how to solve it than you do.

Edit: clarity

<comment><USER15> Great list.

That last suggestion (Multiple requests) can be tough to implement correctly, I think it's usually called Happy Eyeballs: [https://youtu.be/oLkfnc_UMcE?t=290](https://youtu.be/oLkfnc_UMcE?t=290)

</comment></comment><comment><USER16> Man! As a Chinese person, I really wish some companies to move their developers who works on network related components to China for a few weeks, because that will improve the stability of their products quite a bit.

You know we have a firewall that randomly disconnects connection and block traffic. A lots of apps just gets confused when that happened. And that happens a lot, once few minutes or shorter maybe.

When I work on my proxy, I had do define a new strategy to detect dead connections, such as to use separated timeout for Dial and Read. The Dial timeout will be a shorter value defaulted at 20 seconds, the Read timeout will be a rather normal one usually defaulted at 120 seconds.

I found many software just don't use any strategy. They just sends the connection and wait, assuming everything will be fine while it's actually hanging forever on user's end, until the OS kick them out. Many download system don't even have retry/resume mechanism: You downloaded 99% of a 600mb package (and it takes about 48 hours), then the connection EOF'ed, the software say "yeah you better download all of it again, hehe".

An example of good strategy can be found in `apt`. The software detects slow network, timed out connection, automatically retry downloads (not sure if it can resume download, could be great if it did). And all of that gives me a strong software that I can trust: I know when I run the command, the command will try it's best to get things done. And usually it did, causing far fewer issues than `npm`, `snap`, `git` and etc.

I suggest everybody give this mindset a try: When your software downloads data and puts it on user's computer, the copy of data is now owned by the user. You remove the data, you're looting the user from what they've got. It's like that you're making a dinner for your user: Everything been made (downloaded) is already on the table, one failed meal (packet) should not cause you to flipping the table. Instead, you retry and retry until it can't be done (For example, the source has changed or wait time is really too long).

</comment><comment><USER17> This is a surprising blind spot for most large tech companies. I'm sure Apple, Google, Microsoft, Facebook, etc. spend a lot of money on their corporate networks but you'd think they have at least one engineer who encounters unreliable wireless on a regular basis. Only Netflix and appears to test for this - I've never had to toggle networking to restore functionality after a dropped packet.

<comment><USER18> Youtube also handles it pretty well, but the twitch player for example, gives up forever if the network is too flakey, who exactly wants that behavior?

<comment><USER19> Youtube Music, however, has the opposite problem. It always tries to load the online version, regardless of whether I have downloaded the file already. Even if I specifically clicked a file in the downloaded list, it will still try the online version when the next song begins.

When I have flaky connections, I get so many pauses (of songs I have downloaded) that I just deleted the app alltogether.

</comment></comment></comment><comment><USER20> One of the main complaints about NFS, one of the original distributed systems - is that client machines hang when the server is unavailable. The problem is that the (Unix) filesystem layer assumes that disks are reliable (spoiler alert: they're not), and NFS stretches disk access across a network.

The concept of a "soft mount" with a timeout was introduced to NFS but it's almost never recommended. This is because client programs have no idea how to handle a timeout from the filesystem. This article shows how every HTTP client has to be configured to handle failures. Imagine if every program that accesses a file, from /bin/cat all the way up, had to have error handling code to deal with timeouts and retries. A sane choice is to wait infinitely if there's nothing more intelligent that you can do.

<comment><USER21> _" NFS server xyz not responding , still trying"_ is still in my head, despite not using nfs for probably a decade.

</comment></comment><comment><USER22> I recently ran into this problem with the popular Python "requests" library, which doesn't have a default timeout set. That's especially annoying as their slogan is "HTTP for Humans" and that doesn't feel very human friendly.

There is a longstanding issue [1] to add a default timeout, but so far that hasn't happened yet.

[1]: [https://github.com/psf/requests/issues/3070](https://github.com/psf/requests/issues/3070)

</comment><comment><USER23> In the AWS builders library they suggest setting the timeout to be at the p99 for the expected latency of the operation (or choose a different percentile if you want to be more or less tolerant of false positives). That methodology seems pretty solid, provided it's something that's continually re-evaluated and tested under load.

Also important to consider what the client is advised to do in the case of a timeout. Retries, for instance should likely have backoff and jitter attached, or a retry budget.

<comment><USER4> That number sounds like really bad advise to me. Should be more like 99.99% in my experience.

Internal services have extremely low response time during normal operation (p99 around a second) but then the database will start a snapshot or a large analytics query hits on the week end (high IO) and the latency is through the roof for a short while. Too bad if services have short timeouts, they're all failing all requests now for no reason.

p99 is normal operation. Services shouldn't be configured to systematically fail for 1% of operations.

<comment><USER23> fair enough, that's why they call out that you need to load test it and actually determine that the value you set meets expectations. Agreed that blindly setting a value is problematic

</comment></comment></comment><comment><USER24> We kept running into this issue at my job. A lot of our original database queries for our Go service called db.QueryRow, not db.QueryRowContext. The former doesn't respect timeouts, the latter does. So I ended up writing my own wrapper around Go's database/sql package. It basically just reexports all the functions that accept Context and hides the ones that don't. Very helpful. Timeouts are important.

</comment><comment> awinter-py > Network requests without timeouts are the top silent killer of distributed > systems.

YES 1000% (I mean maybe not 'top' but it's up there)

languages _must_ move connection pooling, timeouts, and retry semantics into the stdlib

API client libraries have to do a better job of documenting what happens when a request fails

systems need to do a better job of centralizing how timeouts are configured; this can't be left to chance

<comment><USER25> May I introduce you to erlang/BEAM? These issues were solved 30 years ago, and the ecosystem has had plenty of time to solidify best practices around exactly what you're asking for.

<comment><USER26> What actually BEAM protect you against resources consumption ? If you set o timeout all you process will be up and idle.

<comment><USER25> Default BEAM timeout is usually 5s (probably too long, in some cases), if you miss it the default is unhandled exception, which crashes the process that made the call (and only that process, no others). The VM will then recover all of the resources (file descriptors, sockets, data to be GC'd) associated with that process. All in zero lines of code.

Also you can have millions of processes per core, with minimal performance regression, do you're likely to notice it in monitoring before it becomes a problem.

</comment></comment></comment></comment><comment><USER27> I like the idea of increasing the timeout on successive retries. Sort of like backoff exponentially, increase timeout exponentially. Of course, this is only if the reason for retrying could be helped by a larger timeout.

</comment><comment><USER28> I work on the payments industry and this issue has struk our systems several times. One extra piece of advice is to also consider the compound timeout when there are multiple calls to the same service. I still remember having our system comopletely hang because Rabbitmq was unresponsive. We had a 50ms timeout with Rabbitmq, but that didn't protect us since we would hit the service 50 times per request.

</comment><comment><USER29> Different timeouts exist for different purpose. Sometimes _infinite_ is the only sane default. Sometimes the default must be dynamic. And sometimes you just pick something that sort of makes sense with all the other system components in mind.

There are a dozen or more timeouts just for a TCP connection. There's the initialization timeout, the 3-way handshake timeout, the half-closed timeout, the time-wait timeout, the unverified reset timeout, the established connection timeout, the retransmission timeout, the timed wait delay, the delayed ack timer, the arp cache timeout, the arp cache minimum reference timeout, the keep-alive timeout, and more.

Every single person in the world depends upon default timeouts, so of course they matter. When they are picked intelligently, they improve the default behavior of the majority of system interactions. So we can trust default timeouts, when they are useful. But if we're _building_ a system, it makes sense for us to determine what the appropriate timeout is _for our system_.

</comment><comment><USER30> > Javascript's XMLHttpRequest is THE web API to retrieve data from a server > asynchronously.

Uh what? Has he never heard of Fetch:

[https://developer.mozilla.org/Web/API/Fetch_API](https://developer.mozilla.org/Web/API/Fetch_API)

its been around for at least 5 years, and it returns a Promise.

<comment><USER31> He covers fetch() in the section after that, and rightly complains that unlike XHR it doesn't support timeouts at all.

</comment></comment><comment><USER32> There could stand to be more thought in many applications put into timeouts and cancellation and how it should all work in the face of APIs that might be unresponsive or slow sometimes. But I don't think that putting some arbitrary timeout as the default everywhere is really a good idea.

Many of these things are used for one-off scripts, where it isn't worth thinking about. For many APIs, it isn't worth the trouble - if one of your dependent services is unresponsive, there isn't really any meaningful thing your application can do anyways. It doesn't become an issue until there are so many timeouts that it's impacting other resources. Best to leave it off until you know what you want to do with it.

</comment><comment><USER33> Timeouts start to get really funny once you start to create lots of UDP Connections while using NAT somewhere in between. Since UDP is connectionless the NAT has no idea whether it will receive any packets anymore and therefore has to keep the port mapping for a certain amount of time. At some point UDP packets will be dropped since these mapping tables can't be of unlimited size.

<comment><USER34> conntrack timeouts don't just apply to UDP:

      net.netfilter.nf_conntrack_dccp_timeout_timewait = 240
      net.netfilter.nf_conntrack_frag6_timeout = 60
      net.netfilter.nf_conntrack_generic_timeout = 600
      net.netfilter.nf_conntrack_gre_timeout = 30
      net.netfilter.nf_conntrack_gre_timeout_stream = 180
      net.netfilter.nf_conntrack_icmp_timeout = 30
      net.netfilter.nf_conntrack_icmpv6_timeout = 30

and even for TCP, there is a timeout after the connection is closed. The fact that UDP has no state and therefore no 'connection' doesn't mean that just because TCP does, that conntrack only tracks it while the connection is open. Besides, you could sever a cable and TCP wouldn't know that anything happened. So you do need timeouts for anything in a NAT table.

</comment></comment><comment><USER35> Any mention of the Go http package and timeouts ought to also mention "never use http.DefaultClient":

      package http
      var DefaultClient = &Client{}

It is a convenient global variable that uses whatever last settings were set upon it from any bit of code executed in any dependency.

</comment><comment><USER36> Also: set a timeout in your database to stop out-of-control queries from taking a whole system down. Postgres's "statement_timeout" comes to mind; if a statement exceeds the timeout, Postgres can effectively roll back the system to is previous state.

</comment><comment><USER37> > never use "infinity" as a default timeout.

Never say never. What can be tuned in the system (obviously relevant only for server software) is better tuned there unless you really like (re-)negotiating tuning options with ops.

</comment><comment><USER38> After being bitten twice by default timeout values I have the maxim "the defaults will always be wrong" engraved in my heart.

</comment><comment><USER39> XHR does have a timeout right? It's just arbitrarily defined by the browser.</comment>


Show HN: My first iOS app using RubyMotion - <AUTHOR> https://itunes.apple.com/us/app/pl-bodycalc/id571581270

<comment><AUTHOR> Simple app yet fills a need I had when talking with people about fitness/training/health. RubyMotion is awesome and I highly recommend using it if you don't want to venture down Obj-C land.

Gems I used: Bubble-Wrap and Formotion

<comment><USER2> Shouldn't your tab controller have icons? Congrats on the application, I'm really interested in trying out RubyMotion!

<comment><AUTHOR> I'm honestly terrible with photoshop so I don't really know how to make icons (or what they should look like). I thought about text but I think it wouldnt look right with the text right under it. I highly recommend rubymotion, it's absolutely awesome.

<comment><USER3> Check out the icons at <http://www.glyphish.com>. There's a free set, but I think the Pro version is a great deal.

<comment><AUTHOR> Thanks for the link, the ions look great. Now I need to figure out which icons to use for BMI/BMR/BF/etc haha

</comment></comment></comment></comment></comment><comment><USER4> You gave yourself a 5 star rating? Not cool, man

</comment><comment><USER5> I'm very curious to know how this app did its first couple days... I wonder about utilities like this on the appstore.

My hypothesis is that you'd do $50 over the first three days and then less than that each month thereafter (unless you have some sort of marketing, but how would you market an app like this?)

This isn't criticism, it's curiousity. I don't think you've done anything wrong, it's a perfectly decent app and serves a clear need. (Though I'd put icons in the tab bar if you could, even just images of the text BMI, etc, would look better.)

<comment><AUTHOR> It was approved on Saturday and as of today I've sold 8 copies. I wasn't really expecting to sell many as I put the price high and this was more of a simple project to dig into rubymotion. Thanks for the comment</comment></comment>


Parking Lots in the SF Mission Area - <AUTHOR> http://parking.inzain.net/ <comment><USER2> Thanks for pointing out all the wasted square footage in the city. Kill the cars, use the space for more educational facilities, community gardens, and living arrangements for the homeless. Hey, and maybe look into helping the native San Franciscans instead of crying about the bad parking your POS car. That is not a problem worth fighting for.</comment>


Cora – A new way to learn how to program - <AUTHOR> http://www.mitchcrowe.com/cora-a-new-way-to-learn-to-program/ <comment><AUTHOR> I'm creating Cora, a new programming language and environment optimized for learning. I would love to hear your thoughts and suggestions!</comment>


Show HN: HTML5 voice conference up to 5, webcam pic share, loginless and encrpyted - <AUTHOR> https://dropfrog.io/outpost/ <comment><USER2> I don't really get it. How do I create a room? Can I invite people without entering their email? E.g. drop a link in a facebook chat instead. Is this doing the same as [https://appear.in/](https://appear.in/) or something else?

Edit: Okey, this is voice only but with option to send webcam pic. I misread and thought it would be live webcam as well.

<comment><AUTHOR> Not a bad idea at all to display the full link allowing copy/paste into another medium other than email. Can be added easily. The email invitation is nothing more than that very link sent in the body of the email message.</comment></comment>


Why does Stack Overflow scan your resume for viruses? - <AUTHOR> I just uploaded my resume to Stack Overflow, and it shows "scanning for viruses". Is it really necessary to scan a pdf for viruses? <comment><USER2> Yes, because there are ways to trigger a malware install or Viruses using a PDF files.

Example:

* [https://www.welivesecurity.com/2018/05/15/tale-two-zero-days...](https://www.welivesecurity.com/2018/05/15/tale-two-zero-days/) (a remote-code execution vulnerability in Adobe Reader and a privilege escalation vulnerability in Microsoft Windows triggered via PDF)

* [https://blogs.quickheal.com/beware-pdf-attachments-launching...](https://blogs.quickheal.com/beware-pdf-attachments-launching-android-malware/) (PDF's launching Android Malware)

* [https://www.sans.org/security-resources/malwarefaq/pdf-overv...](https://www.sans.org/security-resources/malwarefaq/pdf-overview) (A slightly dated FAQ on PDF Malware)

</comment><comment><USER3> Any file uploaded should be scanned especially when you are uploading something which is then downloadable by someone else such as this example.

</comment><comment><USER4> PDFs have been a major malware vector.</comment>


Ask HN: If you could change one thing on the Web, what would it be? - <AUTHOR>

We often find ourselves in a situation where we notice that things just aren't right. For instance, we believe that CAPTCHAs should not exist on the Web. HTML Newsletters are nasty and ugly, but at the moment we just have to work with them because of the popular email clients out there. What would you change on the Web if you could make a difference?<p>What would it be and how would you change it? <comment><USER2> As long as I'm completely absolved from proving feasibility of implementation... A reputation system for domains that are held for a long time and don't piss off users.

Videolan.org should show a green dot by it's name. Getvlcforfree.com should have a blinking red one. You earn your domain's credibility over time. Browsers and search engines can be set just not to bother with karmas below 0 (or any given value).

Don't put your password or cc number into a red-dot Internet site is advice my mom could handle.

<comment><USER3> Could this be implemented by a third party (e.g., Google) with a browser plugin? In fact, e.g. <http://www.siteadvisor.com/>

</comment></comment><comment><USER4> No more JavaScript. I don't think some transparent bytecode would ever make it, but a simple lisp- or stack-based programming language would be sufficient for a lot of normal tasks and a better target for more advanced systems to compile to.

(That's the "one thing" approach. In an ideal world, I'd replace the whole arcane HTML/CSS/JS/SVG/etc shebang with an improved version/variation of DPS)

<comment><USER5> <http://en.wikipedia.org/wiki/Display_PostScript>

</comment></comment><comment><USER6> Usage and improvement of open standards. We are seeing an increasing number of closed protocols that should be open, such as IP Telephony (video and audio) and instant messaging. All those services could work with each other and increase the size of the market, but instead they work against each other.

If everyone used the same video calling protocol, it would be a lot more popular because the common Joe would be able to use any client they wanted and know it would work with whoever they want to call. Like a telephone. Could you imagine if every telephone network was different and you have to use a Sprint phone to talk to someone who only owned a Sprint phone? It's ludicrous.

</comment><comment><USER7> 1\. Set standards for HTML CSS etc that EVERYONE uses, so things look the same across browsers, screens and geographies.

2\. Get rid of <http://> from all URLs - we dont need it - its pointless, even Tim-Berners Lee says so.

3\. Make it easier for everyone to mark websites as spam and have them taken off easily (im talking about the ones that show up whenever you search anything health related and promise you magical immediate cures).

</comment><comment><USER8> Make all buttons, particularly "next" buttons in photo albums or forums, much much bigger. Every forum, photo album, multi-page news article, and website has a habit of making tiny links/buttons to get to the next page. This makes it incredibly difficult to click on anything but a mouse. Trackpads aren't accurate and trying to press these tiny buttons on a touchscreen is futile.

To UI Designers: MAKE YOUR BUTTONS BIGGER!

<comment><USER9> Same thing for mobile app designers.

10 pixel high text on a Retina display? Really? Can I borrow your bionic eyes?

</comment></comment><comment><USER10> There would be a (mostly) standard keyboard scheme to efficiently navigate and use all sites.

<comment><USER11> Try Vimium: <http://vimium.github.com/>

<comment><USER10> That is cool. I tried it when I used Chrome (and got a feature request added IIRC).

But what I meant would be built in and more structurally aware than a top- level link-clicker / scroller.

</comment></comment></comment><comment><USER12> I would kill all mailto: links. In the age of gmail, how many people does this actually apply to? I always accidentally click these links, and it opens up some default email program that came with my OS that I've never touched before.

<comment><USER13> Depending on what browser you're using, extensions are available to make those mailto links work with Gmail.

Some instructions to get you started here: <http://mail.google.com/support/bin/answer.py?answer=10966>

</comment></comment><comment><USER14> When you visit a webpage to consume some content, such as a written article, a picture, or a video, that should be the main focal-point of whatever you're doing, and nothing else should be allowed to interrupt or delay you from consuming it. This includes pop-up/hover dialog boxes, advertisements which waist your time, webpages animating their skeleton while you're trying to read now-moving text, grouped-content unnecessarily split across multiple pages, etc...

All of these things annoy users, and introduce inefficiency to the entire internet race. How many trillions of seconds are lost every year because of this? Do you think in 2050 people will put up with 30 second commercials before watching a 1 minute Hulu clip?

Obviously a lot of these things exist to fund websites, and getting rid of them would destroy business models. There needs to be a way to de-annoy the internet, and compensate content providers for lost revenue.

The number of solutions are plenty, but finding the best one will be tricky. It would have to be adopted by most of the internet to succeed, after-all.

One idea might be to bill at the ISP-level. Each client pays ~$100/mo (made up number), where $50 of that goes to the ISP, and the other $50 goes into a bucket. Pending on what websites you visit online, and for how long, they earn a certain percentage of that bucket and get paid at the end of the month. Users who only want to pay $50/mo get the annoying internet.

How would you do it?

<comment><USER15> Large, reputable company which people already pay a monthly/annual fee to (such as an antivirus service) offers free no-script and ad-block install to customers; something continually updated and intelligently moderated to remove adverts except on sites the user green-lights. Animated and flash-based adverts are the primary targets, while text and static images are left alone. This encourages websites to use these forms of advertising. If a video requires an unskippable video longer than 5 seconds to play before the feature video, a pop-up box with a list of alternate links to the video is generated; again, to push advertisers into short or static advertising.

The average user knows they need an antivirus program, and one brand in particular is recommended above all others because it helps keep the internet 'clean', in a sense.

</comment></comment><comment><USER16> How about a realistic one that developers could actually do? Take the Google approach and remind/nag everyone to upgrade their browser if it's more than 2 versions old.

<comment><USER3> For people who don't have admin on their own machines (i.e. many large organizations), that would suck.

</comment></comment><comment><USER17> I'd like to be able to browse my favorite sites with a browser as _secure_ , _stable_ and _responsive_ as Emacs or Vim

\-- even if this stable/responsive browser is unable to run 3-D immersive games and other desktop-like software

\-- and even if this browser does not run Javascript very well. (Of course this last part would work only if my favorite sites do not rely heavily on Javascript, which is currently the case.)

</comment><comment><USER18> I think it is hilarious that no one has mentioned how Internet Explorer continues to ruin the web.

It has wasted incalculable hours of time for developers because it is pre- installed and never uninstalled on every little minded client and supporting IT team. I don't know how many times a great web product I have been involved with has been presented to executives who are still using IE7. REALLY IE (in general)!? How can a person make any sort of creative decision when they themselves have the worst internet experience of all?

Ridding the web of that awful browser and allowing technology grow and foster more inspiration is what we need. Without needing to support that god-awful wreck of a browser would allow developers and creatives a better space to work within to bring the web out of this lame web 2.0 era that will lurk around us for even more years.

BAH

</comment><comment><USER19> Reverse the order of domain name components. Most significant should be on the left: com.ycombinator.news/blah/file

<comment><USER17> the Brits wrote them that way into the 1990s.

<comment><USER20> yes! that was the original convention on <http://en.wikipedia.org/wiki/JANET>.

</comment></comment></comment><comment><USER21> I've like SRV records to work correctly. So URLs could be

<http://example.com>

<https://example.com>

ftp://example.com

skype://example.com

mail://example.com

and the correct servers (or aliases) would get pointed to.

<http://en.wikipedia.org/wiki/SRV_record>

</comment><comment><USER22> A relative perspective on print design publishing to internet platform: www.psfk.com/2011/07/cory-doctorow-in-connected-age-what-role-for-a-publisher- today.html

platform agnostic content is losing the relevance. The question- Content platform will bring the change? Does projects like percolate.com prevail against social interaction platforms? Up against: blog.comscore.com/2011/06/facebook_linkedin_twitter_tumblr.html

</comment><comment><USER9> I would deprecate all clear text protocols in favor or their secure counterparts. For example, HTTPS vs HTTP.

</comment><comment><USER23> Some sort of seamless client certificate functionality to help out with authentication and identity.

The "com.google" vs "google.com" is interesting since it obviously should be "com.google" except that "google.com" is better for presentation purposes.

</comment><comment><USER24> Browser error messages and warning dialogs about POST data and mixed encrypted and un-encrypted data are worse than useless.

Browsers need to be silent by default regarding things that users are not equipped to make decisions about.

</comment><comment><USER2> Turn off all of that domain parking and domain sampling nonsense. If you're going to grab a domain and keep it from everyone else on the net who could use it from doing so, you should bloody well pay full price for it every year.

</comment><comment><USER25> The DOM + Javascript manipulations of it. Specifically the zillion ways.

Replaced with something else. Just about anything else, so long as it's a single clear standard.

</comment><comment><USER26> Compliant browsers without any of the subtle differences and hacks. A performant Canvas implementation, available in 2005, would have been neat.

</comment><comment><USER27> The document.cookie API has to be the worst API ever invented. I'd fix that and resolve the differences between JS and HTTP cookies.

</comment><comment><USER28> More websites support SPDY:

<http://www.chromium.org/spdy>

</comment><comment><USER29> I'd make data with a meaning like on listered.com, structured data,searchable and sortable not static text

</comment><comment><USER30> Web Development. HTML and CSS weren't meant to do the things they are being used to now..

</comment><comment><USER31> I envision a world where all browsers have the same CSS capabilities.

</comment><comment><USER32> The DOM. I'd take it out back and shoot it in the head.

</comment><comment><USER33> No more ads

<comment><USER34> sounds like a good way to ruin the web..

</comment></comment><comment><USER35> teach everyone how to speel

</comment><comment><USER36> The day my mother can log on and do what she wants without instruction will be the next generation of the internet. We're nowhere close to that today.

I want Star Trek for Baby Boomer moms : "Computer: send email to Gladys." "Computer: turn the channel to Polyanna" "Computer: calculate 2011 taxes paid to date and print results on the den" "Computer: show me favorite restaurant list with realtime estimated wait. Make reservation for two at 8:10. Charge bill to home account:"

I want "the internet" to be that simple. I want it to stop being called "the internet". I want it to be so ubiquitous that it's just the way you get things done. Not just a way to do things. When it finally is, we'll watch the world kick into a future we've been wastefully squirreling away in fantasy novels.

*Oh, and forced audio on any webpage for any damned reason whatever is more inappropriate than farting at the dinner table.

<comment><USER37> This is isomorphic to artificial general intelligence, which will have implications way beyond making the Internet easier to use.

</comment></comment><comment><USER38> URL as only one word(alphabets) no use of dots, slashes and other funky characters, like while you want to go to google you simply type google

</comment><comment><USER39> Only one, Webkit powered browser by Google.

<comment><USER40> I'm sorry, did you not see what happened when Microsoft effectively "owned" the browser market?

And even if you had to pick a single company to make a browser - why would you pick the one browser maker whose major source of income is whoring out your details?</comment></comment>


What I Saw in the West Bank (Video by Kim Iversen) - <AUTHOR> https://www.youtube.com/watch?v=vDJPf_JY-AE <comment><USER2> Please don't refer to those people comitting those atrocities as Jews. Judaism is a religion not a political movement & the true Jews are part of the Sematic family who don't believe in a statehood. The Kazsrs that adopted Jewdiasim for financial gains & hijacked Judaism are the continuing there quest for personal gains world wide & corrupting the western civilization</comment>


Uninstalling Facebook app saves up to 15% of iPhone battery life - <AUTHOR> http://www.theguardian.com/technology/2016/feb/08/uninstalling-facebook-app-saves-iphone-battery-life?CMP=Share_iOSApp_Other <comment><USER2> I uninstalled FB from my phone about a year ago. The main reason was that I didn't want to install Messenger, and was sick of them limiting the app. I discovered a few other things:

\- Improved battery life, as the article mentions

\- Mobile web is actually much faster than the Android app

\- I spent a lot less time looking, getting notified about crap

If you've got the app installed on your phone, I'd encourage you to give uninstalling it a shot.

<comment><USER3> But if you switch to the web app from the native app, now Facebook is tracking all your web usage.

<comment><USER4> You can dedicate one browser (say firefox mobile) for FB only and use chrome or Safari for regular web viewing.

<comment><USER3> So, instead of one app that sandboxes my FB usage, I would be using a different app (a separate browser) to do basically the same. It might work if Firefox is less of a battery hog then FB app.

</comment></comment></comment></comment><comment><USER5> And about 30% of the users life. No seriously, I wonder how much productivity is gained from using, and how much is wasted, worldwide?

<comment><USER6> Since ancient times it's been fashionable to diss the newest media. "This invention will produce forgetfulness in the minds of those who learn to use it, because they will not practice their memory" \-- Socrates, on writing. Facebook, as a synecdoche for "how the hoi polloi use the internet" is just another example of this. The reality is that my Facebook is a news feed tailored to my interests and reflecting what's happening to the people I care about and as such it's _useful_.

<comment><USER7> Socrates wasn't wrong. The adoption of new media should reflect a rational analysis of its benefits and drawbacks.

Writing enables us to store, transmit, and reflect upon information in ways that surpass speech. One negative consequence is that we get less practice in exercising memory, and we encounter more information than we could commit to memory in any case.

Social media enables us to get current information on the doings of people whose lives interest us. One negative consequence is that the information users encounter is subject to manipulation by those who dictate the content of the website, with the result that most users have reduced intellectual autonomy. What's more, much of the information presented is not relevant to users, which wastes much of the finite attention they possess. Data collected about users can be and is used to advance interests contrary to their own. Some of these issues are intrinsic to social media as a concept, others specific to the platforms that currently dominate.

Either way, it cannot reasonably be presumed that those opposed to the use of social media are simply Luddites.

<comment><USER8> Can you cite that exposure to written material has a negative impact on memory? It seems like an extraordinary claim.

<comment><USER6> One way to test it: there are significant numbers of muslims who as a matter of religious practise, fully commit the Quran to memory for recitation, this is one of the few modern traditions to use the old style of word-perfect oral memory. And there are plenty of "control" muslims from essentially the same backgrounds who don't bother. Comparing them might be interesting.

</comment></comment></comment></comment></comment><comment><USER9> This doesn't seem groundbreaking or mysterious. Battery stats are available for every application in settings > battery. I took a moment to reflect on the background usage for Facebook, and I turned that off. I did not delete the app. You can do the same thing in general > background app refresh. You'll still get notifications, and your newsfeed will refresh only when you open the app.

<comment><USER10> Until facebook forces its app to run in the background again by "accidentally" playing silent audio to get around that setting.[1]

[https://www.reddit.com/r/iphone/comments/3opxhm/facebook_app...](https://www.reddit.com/r/iphone/comments/3opxhm/facebook_app_appears_to_use_silent_audio_for/)

<comment><USER11> To be fair, it's only a matter of time before Apple patches this, or in this case, Facebook "pushes a fix".

Otherwise the advice is sound, disabling backround app refresh is the better approach if you care about the app functionality and don't want to use the sub-par mobile browsing experience.

There's no need to lose out if you don't want to, regardless of the sensational headline.

<comment><USER12> > To be fair, it's only a matter of time before Apple patches this

I don't think that's being "fair" to the consumer. Sure it may get fixed in the future, but it's an issue now. And even if/when this specific issue got fixed, you can bet Facebook and others will look for other ways to get around this "limitation".

</comment></comment></comment></comment><comment><USER13> What's weird is that every time this story gets some traction, facebook apparently claim it's "not true", or admit there was a small "bug" that kept the app active.

This sounds pretty crazy to me. You really have to go out of your way to run in the background on iOS, particularly for more than a few seconds/minutes after being backgrounded, and especially when background processing is turned off. Yet, still I often see "time on screen 1.5hours; time in background 4hours". Even after the admitted "bugs" were "fixed".

It's hard to believe this is an accident.

<comment><USER14> It's not an accident or bug, they're just trying to spin it away. Their apps aren't engineered or architected, they're hacked together and held by miracle glue and it's gone so far that I bet even they aren't sure if they can rewrite it from scratch. That is the reason for all the leaks, bugs and drains they have. They even brag about their hacks.

<comment><USER15> Yeah, it's a really sad culture. Who could've guessed that "move fast and break things" results in lots of broken things?

</comment></comment></comment><comment><USER16> It's bad enough that FB have to offer a "Lite" version for people lacking high-end smart phones. It's basically a wrapper around the mobile site + push notifications. I recently switched to it and don't really miss anything from the original app, and as a bonus I get chat without having to install the equally bloated FB Messenger app.

[https://www.facebook.com/lite/](https://www.facebook.com/lite/)

Signed APKs are available from various sites, the Google Play rollout doesn't seem to include Western countries.

<comment><USER17> I wished this was available on iOS.

</comment></comment><comment><USER18> It goes for other phones as well. I ditched the app a while back as they kept trying to push separate apps for chat and such and generally just because I don't read Facebook that often.

Switched over to a third party app called "Tinfoil for Facebook" which essentially just puts the mobile site in a sandboxed and somewhat optimized wrapper for easy mobile browsing. Battery improved as you'd expect by getting rid of one program that does a decent amount of stuff in the background. Nothing massive but it did make a difference.

That said, I feel like disabling a lot of things would improve battery life but depending on the apps in question, battery life may not matter much if you can't use the app. It's more an overarching effort I've made to only install dedicated apps for things that I really use enough to need a dedicated app. Since I only check Facebook 2 or 3 times during a typical week it didn't seem to be very important for me to keep their app(s). I can still check it out every so often when I'm bored and want to see what people are up to but I don't have yet another background app taking up resources or battery capacity.

<comment><USER19> m.facebook.com works pretty well too. I started using it due to Facebook asking for more and more permissions for its mobile app and never looked back.

<comment><USER20> I'm the same as you. When they started wanting (virtually) total control of my phone I axed the app and made a bookmark on my browser. It works amazingly well, arguably better than the app for my needs since I'm mostly a consumer, it has its issues occasionally when trying to make posts but that's pretty few and far between.

</comment></comment></comment><comment><USER21> A tip for all you Android users out there.

Step 1 : Uninstall both Facebook and Facebook Messenger.

Step 2 (Optional) : Use Metal instead of the Facebook App : [https://play.google.com/store/apps/details?id=com.nam.fbwrap...](https://play.google.com/store/apps/details?id=com.nam.fbwrapper)

Step 3 (Optional) :Use Disa instead of Facebook Messenger : [https://play.google.com/store/apps/details?id=com.disa](https://play.google.com/store/apps/details?id=com.disa)

Step 4 : Enjoy your vastly improved responsiveness and battery life.

<comment><USER22> For iOS there's Friendly: [https://itunes.apple.com/in/app/friendly-for- facebook/id4001...](https://itunes.apple.com/in/app/friendly-for- facebook/id400169658?mt=8)

A review-ish thing: [http://www.guidingtech.com/41701/facebook-ios-app- alternativ...](http://www.guidingtech.com/41701/facebook-ios-app-alternative/)

</comment></comment><comment><USER23> This seems like a roundabout to go about finding the useful data. If a few others could just open Settings > Battery > Last 7 Days, then tap on Facebook, I'd like to see your numbers.

48 min on screen, 13 min background, 2% of overall battery

Note: Background App Refresh for Fb was set to off!

The ratio of background time to screen time is high but Facebook isn't the worst offender. For example:

Instagram - 5.8 hrs on screen, 1.5 hrs background, 18%

Snapchat - 57 min on screen, 1.4 hrs background (whoa), 3%

<comment><USER24> My top few:

* Facebook - 2.7 hrs screen, 4.5 hrs bg, 42%

* Tumblr - 2.8 hrs screen, 27 min bg, 19%

* Safari - 1.1 hrs screen, 11%

Facebook does seem to be a prime offender in my case, but I don't think I have background refresh disabled.

<comment><USER25> Facebook: 14 min on, 1.8 back, 3%. (iPhone 6 iOS 9.2.x)

Overall, those Facebook numbers are fine (for Last 7 days). Nothing like 15%

</comment></comment></comment><comment><USER26> It's one of the shittiest apps anyway. 111MB size? I mean honestly. What exactly does THAT mobile app need 111 Megabytes for?

<comment><USER27> Looking at my phone, a few make me wonder how we got here today.

Skype 149MB, Chrome 134MB, Sheets 122MB, Slides 115MB, Docs 101MB, Outlook 101MB, HSBC 73.97MB, Uber 60.98, Fitbit 79.77 ...

Skpye, HSBC, Uber & Fitbit all seem way larger than they should be

I've never knowingly used the Slides app.

<comment><USER28> I had a look at app sizes on my phone and noticed a "cluster" around 60MB. I wonder if there's some common, huge, framework?

<comment><USER29> Binary serialization definition classes can take a large amount of binary size. Create 100 model types for protobuf with a lot of variables and you can have 3.5MB of C++ binary!

</comment></comment></comment></comment><comment><USER30> Disabling your facebook account saves up to 15% of your life.

edit: Damn, someone already made this joke. Sorry guys. I thought I was being clever.

</comment><comment><USER31> I bet putting my phone in airplane mode would save battery too.. That said its another reason why it was smart to split out messenger. If I had to chose between text and calls or messenger I would have to pick messenger. Facebook I can take or leave but events is pretty important, plus instant articles are great (as an example of something you cant get in the browser).

<comment><USER32> The point is that most of us probably don't use the app all that much anymore, so removing it probably isn't a big inconvenience.

The article also mentions something I noticed a while ago too: mobile Safari is both faster and better on battery life than Chrome or any alternate browser. This makes sense - the alternative browsers are essentially running Safari under the hood anyway - but is still true.

However, I found this to be true on my MacBook Pro as well: Safari uses far less power and is significantly faster than Chrome. And while I think Chrome is far superior to Safari as far as features go, it's also hard to justify why my browser consumes more resources than VMWare Fusion running Windows 10.

<comment><USER31> Very true, although chrome has recently updated to use the new iOS web view and it's much nicer. Chrome does need a lot of work on OS X but I'm too locked into things like devtools at this point

</comment></comment></comment><comment><USER33> I uninstalled Facebook on my iPhone 6 Plus last week, after reading a few of these articles. In my anecdotal experience, it's saving me anywhere from 20-40% of battery a day.

</comment><comment><USER34> The Facebook app is one of the worst out there (among high profile apps), but their mobile website is one of the very best. I just use the latter.

</comment><comment><USER35> > On average I had 15% more battery left by 10.30pm each day.

I wouldn't rely on this study. Why not use a battery measurement tool instead?

<comment><USER36> 15% is a big enough difference that such a coarse methodology is fine to draw preliminary conclusions. Of course you could instrument better, but this is a writer at The Guardian, of whom I don't expect the technical prowess to do so, and the article (or what I skimmed of it) doesn't overstate his findings.

</comment></comment><comment><USER37> Their app also leaks memory like HELL. Just take a look at the storage being used by it in Settings.app under memory usage. I periodically delete the app & reinstall it to free up all that space. Sloppy engineering...

<comment><USER13> It'd be more accurate to say it leaks disk space (probably for cache), not memory. But I agree it's pretty brutal.

<comment><USER37> I took everyone's advice. Deleted the app for good & I'm going to give the mobile web app a try. So far, so good.

</comment></comment></comment><comment><USER38> But at what cost? /s

Joking aside I've got a couple friends who don't use the app and will only use the web version and watching them use it is painful. It's not as easily to move around and do everything you can do on the mobile app. Also they normally take this stance with messenger as well which makes talking in groups with them painful as they are always slow to respond. If we were all on iOS we would probably just use iMessage but with the mix of iOS/Android FB is the best medium normally to plan/talk.

</comment><comment><USER39> The study had a small sample size and no controlled (or even measured) use of the phones. I'm not entirely convinced this effect is real.

<comment><USER40> Agreed, super vague details about the usage, how long the web client was used, who are the users etc. Doesn't mention how drained the battery was with/without the app at the end of each day. Such studies, apart from providing some basic information aren't very good at proving any specifics.

</comment></comment><comment><USER41> I had the same experience months ago, the built in battery usage indicator always had it at the top, and it was a confirmed issue that was "resolved" in future builds. Decided it was best for Facebook and myself to depart for the new year. Too much time, and battery usage wasted. Removed app, deactivated account, 6S lasts for almost two days.

</comment><comment><USER42> The author does not explain whether he turned "Background App Refresh" OFF for the Facebook app.

When this setting is OFF, Facebook should not be able to use CPU when it is not on screen.

Facebook have been caught using dirty tricks in the past to get around the Background App Refresh setting, but my understanding is that those were fixed.

</comment><comment><USER43> I find this on my Android phone also. Fortunately, m.facebook.com works really well for managing a Facebook account.

<comment><USER44> I definitely prefer the m.facebook.com over the actual app, I haven't used the app for a while, so it would be unfair for me to judge it now. But I have no need to download the official app.

</comment></comment><comment><USER45> This is true for lots of apps. For example I don't use the Gmail app nor any other mail app for iOS because the sync traffic kills the battery. I just use Gmail's excellent mobile web site, which also means I don't get interrupted by notifications and I read my email at the time and place of my own choosing. Calendar is another battery killer. I found that I can use calendar apps but I can't sync the calendars of middle managers at work because all they do all day long is attend meetings and fiddle with their schedules, and again the sync traffic clobbers the battery. But if I just sync my own calendars it doesn't seem to matter. I wonder if the Facebook battery usage is proportional to how many friends you have in your network, of if it just uses a lot of energy regardless.

<comment><USER46> > which also means I don't get interrupted by notifications and I read my > email at the time and place of my own choosing

FWIW, you can also turn off notifications with the app, which is what I've done for as long as I've had a smart phone.

</comment></comment><comment><USER47> For other iPhone users: I've gotten quite used to using the Paper app. It's an excellent interface (though it's a lot of gestures, so it has a learning curve) and gets you all the same content with a whole lot less shit in my experience (promoted posts and the like.) Also seems like it doesn't use the background trickiness that the regular app is full of. You get your notifications and messages same as in the regular one too, though a lot prettier.

Also: Speaking as an iOS developer, I can say with certainty that Facebook only gets away with this because it's Facebook. We've had a few binaries rejected for bad optimization, I can't believe Apple is kowtowing to Facebook so hard as to allow such atrocious software into the App Store.

Well, actually I can believe it. Still ticks me off though.

<comment><USER48> Yes, I still use Paper too. Unfortunately it seems like Facebook has given up on it: there hasn't been an update in quite awhile, it's missing some features of the web site (nested replies are the most obvious in my experience), and they've started removing some of the news categories. Hope they come back to it, though considering the main reasons I use it are a) no ads and b) don't have to install separate Messenger app, the app's existence probably goes against all corporate policy, so it's probably being left for dead.

</comment></comment><comment><USER49> Note: if you had location services on for Facebook, and then uninstall the app, Facebook location services remains ON, because it is part of the iOS base install. I'm not sure whether it continues sending info to their servers, but to be certain make sure to disable it after uninstalling.

<comment><USER50> Do you have a citation for that? If you've uninstalled the Facebook app it shouldn't even show up in location services (or the system services).

</comment></comment><comment><USER51> I mainly have the app installed so I can use the "Nearby Friends" feature as I enjoy spying on my wife and random friends.

I think the video calling is pretty good too on the app. Of course the last time I video called someone was in the early 2000's using 320x240 webcams so I might be a little biased quality wise.

I haven't really noticed battery drain but since I normally work at home, I keep my phone on "Airplane" mode so I don't waste battery maintaining a cell connection (the phone has wifi calling which can receive calls and sms).

This is a samsung galaxy core prime. If I don't use it and let it sit there at idle, after 2 days it will have only used 20-30% battery.

<comment><USER52> > I mainly have the app installed so I can use the "Nearby Friends" feature as > I enjoy spying on my wife and random friends.

Creepy.

</comment></comment><comment><USER53> I uninstalled Facebook for iOS a while ago when they started blocking the messenger feature. You can access instant messages using their web client. No need to install either app really.

</comment><comment><USER54> I notice similar improvements after removing Facebook from my phone - it's been gone a year - most people I hang out with rarely use Facebook anymore anyways

</comment><comment><USER55> On Android, there was no way to tell it to not run in the background 24/7\. That's what led me to uninstall it. I've recently replaced it with the mobile site running in Hermit.

[https://play.google.com/store/apps/details?id=com.chimbori.h...](https://play.google.com/store/apps/details?id=com.chimbori.hermitcrab&hl=en)

<comment><USER56> Android 6 does that (killing background apps) by default, so it's probably going to be better there. That said, I never installed Facebook, because it's just not that useful versus the website.

</comment></comment><comment><USER57> It's easily the worst app on the android. I've switched to using a chrome shortcut with notifications enabled, haven't looked back.

</comment><comment><USER58> Not only did it save me battery life, if also made me more productive. I found that Facebook has become just not rally relevant these days?

</comment><comment><USER59> I use the app occasionally, and it's only used 2% of my battery on average over the past 7 days, according to the battery section in my settings. I turned off background refresh.

Strange that the author is going through a guesstimate process when there's a built-in tool that'll tell you exactly how much juice an app uses, and if it's mostly from background activity.

</comment><comment><USER60> What I don't understand is that neither in the privacy/location services or in the facebook app setting can I find a setting to disable access to the gps for the facebook app. I am not naive enough to assume facebook doesn't log gps locations. Does the app have a behind the scene access in iOS?

<comment><USER61> Settings -> Privacy (grey palm icon at the bottom of the 3rd group) -> Location Services. You can block location data gathering at the phone OS level; however, that won't help you against FB attempting geolocate your phone's IP server-side.

<comment><USER60> That's my point. I don't see the facebook app in this list. Despite having it installed and being logged in.

<comment><USER61> In that case, you may not have done anything in the app that asks for location (only then will the app attempt to register itself for location privileges).

</comment></comment></comment></comment><comment><USER62> about 3 years ago, I switched from the FB app to the FB mobile site, and performance on that site skyrocketed. I don't know how you screw up a mobile app that badly, but they found a way.

Shocking to read that 3 years later (today) it's still a horrible app, vastly inferior to the mobile web version.

</comment><comment><USER63> Another point of reference on battery use:

I use the Facebook app for maybe 5 minutes total a week on my iPhone. Under the Battery settings for the past 24 hours, it shows it's used 5% of my battery for "background tasks". I don't recall opening the Facebook app in the past 24 hours.

</comment><comment><AUTHOR> It doesn't get mentioned quite as frequently, but one major benefit of using their mobile site is the capability to use iOS share and content blocking extensions. Find something interesting? Just open it in a new tab so that you don't lose your position in the feed.

</comment><comment><USER64> Probably because the app is constantly scanning for beacons. [https://www.facebook.com/business/a/facebook-bluetooth- beaco...](https://www.facebook.com/business/a/facebook-bluetooth-beacons)

</comment><comment><USER65> The only big issue with mobile app I found is that you can't just "send to" an image into it to create a post. Not sure if web standards are being developed towards that direction, since I am not sure how would that even look like in terms of user-experience.

</comment><comment><USER66> On my admittedly low-end 1st gen Moto E, Facebook gobbles up RAM and limited storage space like the plague. It's web interface for me.

Makes me wonder if they are downloading an entire SQL database onto my phone. It's terrible app in terms of lightness

</comment><comment><USER67> This is one of the poorest executions of an experiment I've ever read about. Read the post and the author obviously has no idea about methodology and then goes on to claim very precise results in his headline.

</comment><comment><USER68> While I don't have quantifiable metrics, I think this is true of Instagram as well. I noticed that, after uninstalling Instagram, I was able to get through a full day on my 2-yr-old Moto X (vs. dying around 8pm).

<comment><USER69> that chimes with my experience. I've got a MotoG 3rd Gen which has a pretty good battery life. I installed Instagram and it was draining much faster and looking at the battery information it had drained about 20-30% of the charge and much more than any other app.

</comment></comment><comment><USER70> Wonder how much battery life removing Twitter saves? I'd have thought that'd update far more often than Facebook, which would kill more and more of the battery every time the news feed refreshes.

</comment><comment><USER71> Interesting talk from Facebook engineers about their iOS efforts over the years: [https://youtu.be/XhXC4SKOGfQ](https://youtu.be/XhXC4SKOGfQ)

</comment><comment><USER72> I installed opera mobile and use it exclusively for FB and use incognito mode while on desktop.. that said some how FB ads still picks up on my amazon shopping trends.. need to dig through more.

<comment><USER73> Unless you use something like Tor and the relevant browser, they still have your IP address and things like browser user agent to "fingerprint" you.

</comment></comment><comment><USER74> Surely it can't be doing anything in the background if you use the task manage to kill the app? If so, uninstallation isn't the only option in order to save battery life.

</comment><comment><USER75> > I accessed Facebook for the same amount of time, and for the same purposes, > using the social network's excellent mobile site within Safari, as I had > done using the app.

He claims this but I'm incredibly skeptical and it doesn't seem like any actual controls were put in place.

The app is a much more addictive experience than the mobile web version, not to mention that it packs in more functionality. Push notifications alone probably double my daily Facebook usage.

</comment><comment><USER23> One unmentioned downside - I'm not sure that it's possible to use Facebook Login without the mobile app.

</comment><comment><USER76> Considering how bad the situation is with some other apps in terms of battery usage (looking at Yik Yak and Snapchat) I'm actually impressed that the Facebook app manages to keep consumption this low.

I'd be interested in seeing more rigorous numbers rather than just comparison to "... a week with the app." That doesn't tell me whether the 15% was from background computation or actual foreground usage.

</comment><comment><USER77> On my Samsung Galaxy S6 Edge, Facebook is preinstalled and cannot be removed. I guess I can always log out.

</comment><comment><USER78> It will also save 40% of your time.

</comment><comment><USER79> Facebook has found this odd niche that involves being utterly creepy and obnoxious but very hard to get rid of. It's like the corporate version of a crazy manipulative codependent "friend" who you can't get out of your life because your friends are into them.

</comment><comment><USER80> Uninstalling Facebook from my life increased productivity by 15% as well.

</comment><comment><USER81> I wonder if its the same for Facebook messenger app.

</comment><comment><USER82> disable background app refresh in the settings?

</comment><comment><USER83> So this is what React Native is for?

</comment><comment><USER84> Perhaps the battery savings are because people stop checking their social network 5-10x per day?

</comment><comment><USER85> You can keep the battery fully charged even longer if you turn the phone off, too.

</comment><comment><USER86> That seems pretty obvious, in that it's the app most users spend the most of their time on. I'm surprised the percentage isn't even higher. If a person spends 30 or 40% of their time using their phone in the Facebook app, it's clearly going to use a large percentage of the battery life. Not being of bad app coding, but rather battery use is based on how much a user spends using different apps or different features.

<comment><USER87> Somebody didn't read the article:

> Testing reveals Facebook iOS app drains battery life, even when it isn't > being used, and that using Safari instead will make an iPhone last longer

and

> I accessed Facebook for the same amount of time, and for the same purposes, > using the social network's excellent mobile site within Safari, as I had > done using the app.</comment></comment>


Ask HN: What is Go really good for? - <AUTHOR> I want to learn Go but I need to visualize a real-world use case. Why should I use it instead of X, Y or Z. What do you use it for? Please supply examples. <comment><USER2> It depends on what X,Y and Z are.

What you may like about go if you come from:

python/ruby: go is faster and allows you to write concurrent code php/js: go is faster, concurrent, and its designers were competent c/c++: go is simpler and prevents some common mistakes, compiles faster java: go is faster and simpler. garbage collection is less of a problem rust: go is simpler, compiles faster, io/task switching might be faster functional languages: go is simpler, for some its faster/more predictable

What you may not like if you are coming from:

python/ruby: go is verbose, you'll need much more code to express the same thing. Many libraries/frameworks are missing. more advanced concepts will be hard/impossible to express in elegant way. Long list of language features is missing. php/js: can't think of anything, everything is better c/c++: no access to c/c++ libraries, many language features missing. You cannot write operating system in go. It has GC java: no access to java libraries, lot of missing language and platform features, verbosity rust: lot of missing language features, verbosity, sloppy attitude to code correctness and safety, GC, slower generated code functional languages: Any functional language features are missing

So you may come for speed or simplicity (meaning low-level primitiveness, not high-level elegance) and no-nonsense design, otherwise its just meh.

<comment><USER3> Formatted:

What you may like about go if you come from:

python/ruby: go is faster and allows you to write concurrent code

php/js: go is faster, concurrent, and its designers were competent

c/c++: go is simpler and prevents some common mistakes, compiles faster

java: go is faster and simpler. garbage collection is less of a problem

rust: go is simpler, compiles faster, io/task switching might be faster

functional languages: go is simpler, for some its faster/more predictable

What you may not like if you are coming from:

python/ruby: go is verbose, you'll need much more code to express the same thing. Many libraries/frameworks are missing. more advanced concepts will be hard/impossible to express in elegant way. Long list of language features is missing.

php/js: can't think of anything, everything is better

c/c++: no access to c/c++ libraries, many language features missing. You cannot write operating system in go. It has GC

java: no access to java libraries, lot of missing language and platform features, verbosity

rust: lot of missing language features, verbosity, sloppy attitude to code correctness and safety, GC, slower generated code

functional languages: Any functional language features are missing

</comment></comment><comment><USER4> Building cli tools... you can build cross platform as well. Major benefit here is, you just need to distribute single binary, no dependency hell.

</comment><comment><USER5> I am writing a queue system for vfx.

<comment><AUTHOR> Queue system? Care to elaborate.</comment></comment>


Bridges Supercomputer Used to Build AI Model for Beating Humans at Poker - <AUTHOR> https://www.top500.org/news/bridges-supercomputer-used-to-build-ai-model-for-beating-humans-at-poker/ <comment><USER2> 30k hands (as opposed to 20k in the first experiment) is usually still not large enough of a sample size from a player's perspective to overcome up and downswings. I suppose a compromise must have been made out of respect for the player's time. I would be very interested in seeing everyone's equity vs actual winnings at the end.

The pay per hand is very good for any normal mid to higher stakes reg player, but I wonder if these guys are taking a pay cut to participate... considering these guys probably charge $500 - $1000 an hour for coaching, and that's aside from their table winnings. I haven't been in the poker scene for some time now, and am a bit out of touch.

I wish we could get some real time player commentary. I would love to see how they adapt with their thought process.

</comment><comment><USER3> >Heads-Up No-Limit Texas Hold'em.

Heads-Up is much easier game than poker against multiple opponents.

The ultimate test for AI is multi-way against 6 to 9 professional poker players. It's completely different game with more layers of complexity.

<comment><USER4> This actually isn't true. Ranges are wider HU which means you need to be more precise.

Proof: Top HU players can crush 6-9 handed but 6max players get killed HU.

<comment><USER3> Precision is easy for computer. You don't need AI or supercomputers to calculate good ranges or pot odds.

In multi-way poker the way you estimate range of another player has effect on how you estimate the range of other players and how you present yourself.

<comment><USER4> What I mean is mistakes are more mostly HU.

<comment><USER5> AIs and humans have different skill sets. Could be that HU is harder for a human but easier for AIs that we can write today -- math is not a problem for a computer but modeling many opponents might be.

</comment></comment></comment></comment></comment><comment><USER6> > more than the number of atoms in the universe

Ah, I was scanning the article looking for this phrase. They delivered.

<comment><USER7> The real news is Michael Feldman should share with us his count of the atoms in the unobservable universe. I'd be interested in methodology, too.

<comment><USER8> This is a fairly well known and common estimate.

[https://en.wikipedia.org/wiki/Observable_universe#Matter_con...](https://en.wikipedia.org/wiki/Observable_universe#Matter_content)

<comment><USER9> You shared the estimate for the number of atoms in the _observable_ universe. afaik, we don't have an estimate for the _unobservable_ universe.

<comment><USER8> But Michael Feldman did not say that he could do that, he merely said the universe. Through context, it is obvious that he is restricting to the observable universe, just like when people say "American" to specifically to refer to people in the United States.

Sorry, I hadn't realized we were arguing about this level of pedantry.

<comment><USER7> I just think you missed my very dry wit highlighting how even such an overused phrase can be technically incorrect, the worst kind of incorrect. Even when the rest of the more-technical-than-an-overused-phrase article could be correct.

My apologies, I didn't realize people would take my original response so seriously.

</comment></comment></comment></comment></comment></comment><comment><USER10> Can you bet on algorithms yet? :)

Should be fun when you're able to look at all the teams that built the algorithms playing each other, the way they think about building their ML etc and then place your bets around that or something. Sounds like actually kinda fun gambling.

<comment><USER11> Will we be naming them like horses? :-)

Someone will come up with an AI that's really good at betting on other AI's..

<comment><USER12> Won't stop me from betting on the one with the best name

</comment></comment></comment><comment><USER13> Can somebody explain why poker is a big deal? I don't play poker and I don't see why is it complex for an AI. I can see why chess/go could be a big deal: there's definitely a solution to the game, but the space is too large for it to be computed, so you have to optimize somehow, which real players somewhat can. When computers were slow, humans did it better than computers.

Poker, I thought, doesn't really have any solutions, it is largely about luck, no one really knows what's going on, so aside from some probabilistic computations it is about guessing what your opponent thinks while not giving up what you think. Choosing and seeing the behavior. I would think that playing against AI is generally pointless, since computers don't worry. I mean, surely there are some general guidelines on strategy, since somebody plays better that the others, but following it shouldn't be harder for a computer than for a human, quite the opposite.

So, what is true?

<comment><USER14> Poker in a sense, is the most realistic game in that it has multiplayer, hidden information and stochastic aspects. While chess and go have huge state spaces (as does no limit poker), they are also fairly straight forward due to their 2 player perfect information nature. If say you took an algorithm key to alphago, something like UCT, and tried to apply it to poker, it would diverge from nash equilibrium. Nash Equilibrium by the way, is the sense in which the game has solutions.

In poker, you're looking at your expected value per decision (good players also do this at a meta-level), you're trying to place a bound on the other players' holdings and trying to bluff at an optimal rate. A good poker bot has to be capable of all this, which has proved extremely difficult. This is why it has proven difficult until just about this year, for researchers to be able to clearly say that at least in the heads up case and given enough compute to train, bots are at expert human level.

What might turn out interesting is the fact that though headsup is more difficult for humans and multiplayer is arguably the simpler, the reverse seems to be true for bots. The state space multiplies such that naive application of equilibrium play and tree search simply do not cut it.

<comment><USER13> I don't understand. Maybe there are some good resources to read, so I could see it better?

Essentially, you are explaining why poker it hard. This is no surprise, and I already included it into my question to an extent. The real question is, why is it _harder_ for computers than for humans? Both seem to be completely oblivious to what is truly going on due to imperfect information nature of poker, and both seem to be able to make simple estimations. Computers are better at multiplying fractions (needed to estimate probability) and computers are better at not-worrying (needed to bluff well). I'd assume it is humans who are at disadvantage, and your post doesn't explain (it seems) why is it the otherwise.

<comment><USER4> As said before because of hidden information the optimal strategy appears to diverge unless you have more (all) the information in the decision tree. Basically you can never make a decision with the specific hand you have in isolation without knowing what you'd do with every other hand (and same for your opponent). This is very different than chess/go!

So while poker may even have a simpler game tree than chess/go you need to have more of it upfront to solve the game, and being "off" means much much greater error. Depth matters less than breadth.

Said another way in chess/go you can brute force get near optimal for the current decision, then reset and do again for the next decision. But with poker you have to solve for ALL POSSIBLE decisions (hands) up front (and inclusive of all possible board situations), and THEN do AGAIN 3 more times (pre-flop flop turn river) plus the numerous times you are raised means this is much more than 4 times total.

Example: Bot is out of position with AdAh on AsKsQc facing a big raise. In isolation its probably best to re-raise and simulations show this makes the most money. But you also need to account for the times you have AT (no flush draw) and need to save AT money.

But this logic doesn't stop here. Typically on the river out of position you will check the majority of your range if your opponent has bet every street (this is one of the few "proven" strategies because you always want the pot smaller out of position on average). So, you literally need to have the entire game solved in order to know HOW TO GET TO THE RIVER in a balanced way with good and bad hands. And, getting to the river to play profitably likely means giving up profitability on every other street - this is the diverging from optimal that default algorithms will be wrong on unless they have the entire game tree in front of them.

<comment><USER13> This again has nothing to do with question in hand. Yes, poker is imperfect information game, everybody knows that. Why does it make it easier for humans than for computers? Humans cannot do these computations in the head any better than computers, quite the contrary.

<comment><USER4> Hard to explain well. Let me try another way.

Thinking through this more right now, it seems like the default way of computers to solve this penalizes them. Every time they get more depth it hurts them unless you account for more breadth.

So lets say the programers know this. This STILL probably doesn't help much because...well idk. What's interesting is Tensor Flow is supposed to be massively parallel (breadth) and abstract the software/algorithms to do this. But if you follow this logic the answer must be gradient decent algorithms also get stuck somewhere... This must have to do with hyper-sensitivity to really having the full decision tree before optimizing.

The answer seems to be if computers are modeling this exactly as humans do, (using neural networks which then simplify this problem with heuristics), it just takes this much computer power to simulate 1 human brain optimizing for this.

Alternatively if they model it in a more brute force way it must take even more computer power because this is proving to be less efficient.

</comment></comment></comment></comment></comment></comment><comment><USER15> "four of the most accomplished professional poker players in the world: Jason Les, Dong Kim, Daniel McAulay and Jimmy Chou"

I am ex-online poker professional and I still follow poker news. These guys do not play online high-stakes NL Holdem, and online is the place for best players wrt strategy.

Last time line-up was better. There was Doug Polk who is one of the very top online players, and he had great results offline too. Btw last time CME held computer-human match he was pissed that 'tie' result was announced because human players only beat computer within 90% confidence interval and 'victory' would be 95% confidence interval as it was explained.

There are dozens of players who play higher stakes, more tournament winnings, more google hits, higher rankings than these 4. It's a shame CME could not bring human players that are actually good.

<comment><USER4> Yea but this is splitting hairs. All of these players are better than the best 3-4 years ago.

</comment></comment><comment><USER16> The best no-limit hold-em players in the world are also presumably quite good at limit hold-em, limit omaha, 7 card stud, etc., not to mention other card games like bridge. Serious question: When these programs are built to beat humans in one very particular task, are they any better at beating humans at similar tasks?

<comment><USER3> Different games have different difficulties for computers. For average human player just counting the odds may be hard.

Just different Texas-hold'em variations have different challenges for computers.

Texas-hold em is very simple if you just play the cards and calculate odds. Limit hold-em is much easier for computer than no-limit hold em. Head's up no- limit hold-em is much simpler than multi-way.

</comment></comment><comment><USER11> I didn't realize they would need a supercomputer to do this.

<comment><USER17> It sounds like the supercomputer was only used to train the model, which consumed ~1700 years of CPU time.

<comment><USER11> Could i cut a few zeros off that if i trained a NN to beat drunk players online at 1am on a Friday?

<comment><USER18> For that, you can just play the pot odds, and don't even need to model the other players very well.

(The challenge is of course to find table that only have drunken humans.)</comment></comment></comment></comment>


Ask HN: Should we raise more money? - <AUTHOR>

I am in my first round of funding and about to close it.
Background: We are working on the project since 1 1/2 years, 4 founders - living in different cities
Status: Prototype - ready for launch approx. may 2012
We have 2 offers from angel investors:
1) 10% - 140.000 EUR Really good Angel, has perfect network and experience in our field of business
2) 3% - 42.000 EUR Is a privat person - medium network and expertise - more "dumb" money
Our expenses for the next 12 months are at least 115.000 EUR
If we would move together and live in a appartment together in berlin, it would be 133.000 EUR
We plan to launch in may 2012 in cooperation with some of our clients for beta testing (no revnues).
We plan to make our first buck in october 2012.
Questions:
1) Whats a good way to calculate the amount of money needed - e.g. expenses of X months + ??%
2) What should be the end of our current runaway and current goal to raise the next round - launching? revenue? growth?
3) is it very negative to have small angels invest in you with just 3% shares for further funding rounds?
4) Is living together worth the money? (2000 EUR/month)
Thank you very much for your opinion! <comment><USER2> Assuming the other terms of the deal are fine, you should accept both offers.

More money will always help. Revenue will appear and grow more slowly than you hope.

There's no reasonable way to calculate expenses because to do so, you need to accurately predict how your team & business will develop for the next 18 months, which can't really be done.

Just take whatever you can get on reasonable terms and move on with building the company.</comment>


AMD CPU Sales Overtake Intel for First Time at Germany's Largest E-Tailer - <AUTHOR> http://wccftech.com/amd-cpu-sales-overtake-intel-first-time-decade-germanys-largest-e-tailer/ <comment><USER2> Great news (hope it continues), Intel has rested on it's laurels for the last 5 years. It's borderline absurd how difficult it is to get an Intel CPU these days, what with the random product segmentation and price gouging for features like more PCIe lanes and ECC RAM. Whichever brand you prefer it's important for AMD to succeed to keep everyone honest. I hope MAD improves on the GPU front so that Nvidia is kept honest as well.</comment>


North Korea Decoders Offer Dire Warnings About Nuclear Program - <AUTHOR> https://www.wsj.com/articles/north-korea-decoders-offer-dire-warnings-about-nuclear-program-1507195803 <comment><AUTHOR> Sorry for the paywall link, but this WSJ article has a fascinating video in it.

A group of private researchers outside the US intelligence community describes the ways they're able to identify sensitive details about North Korea's nuclear capabilities. They analyze propaganda videos and satellite imagery using 3D mapping techniques.</comment>


Ask YC: How important is it that your investors are into what you're doing? - <AUTHOR>

We're just starting to deal with our first couple of VCs / seed investors.  There's quite a bit of contrast between the investors and investors' analysts that we've talked to.  Some are very excited about our technology; some seem to focus mostly on "pure" business.
As a technology-centric early stage startup, how important is it that investors really identify with your pain points?  On one side there's Guy Kawasaki's "all money is green", on the other hand, it seems like at an early stage that having investors that will go out and evangelize for you to their network could be essential.
I'm interested in experiences that others have had here. <comment><USER2> I think the sales analogy works - a good salesman will always have people paying for his products, even if they're garbage. Having an awesome product will make things a lot easier, but the presentation is a huge factor as well.

How long can you scrape by without funding? The longer you wait, the more leverage you'll have, especially if you have a high quality product.

Sam Altman does a great job explaining the funding process:

[http://www.omnisio.com/startupschool08/sam-altman-at- startup...](http://www.omnisio.com/startupschool08/sam-altman-at-startup- school-08)

</comment><comment><USER3> Not speaking from experience but I would go with the guys who are excited about your product. You can always tell when people are sincere about their excitement and when they are faking it to push something.

<comment><AUTHOR> Well, all things being equal, sure. I guess to refine my question a bit, compared to the terms offered or doing a joint vs. solo round, etc. I'm curious how big the role of the VCs being interested in things ends up being.

While we've been fortunate enough to have VCs approach us, they're still not exactly pelting us with term sheets, so it's more trying to see where it's best to concentrate our efforts.

<comment><USER4> Do you have alternatives?

If you're speaking hypothetically to figure things out, maybe keep the (hypothetical) alternatives all on the investors' side of things.

Something like ''brand name' VCs that don't care vs lower tier VCs that are excited about the technology'.

<comment><AUTHOR> If I understand your question -- these aren't hypothetical VCs that we're dealing with -- we're in talks with two different VCs with a couple contacts at each. But deals take a while. I can't say at this point that we'll get a term sheet from either. Statistically, probably not (think of Paul's mantra here: "deals fall through"), but we're trying to think of under what circumstances we would accept investment from these guys or investors we deal with in the future.

We're fortunately in the position of being able to survive for at least a year without investment, but taking investment would allow us to grow faster and specifically to hire a couple of people. Just going with bootstrapping we're probably at least three months out from having revenue enough to hire someone.

<comment><USER4> I was just trying to simplify the comparison for the purpose of valuing a VC's excitement about your technology ( assuming that you are unlikely to be looking at 2 term sheets simultaneously).

Unfortunately, I don't have the experience to offer any useful advice myself.</comment></comment></comment></comment></comment>