Early exit is a tail call optimization of procedural languages - <AUTHOR> http://enterprisecraftsmanship.com/2015/12/14/early-exit-is-a-tail-call-optimization-of-procedural-languages/ <comment><USER2> I've been in the "only a single return" and "early return plz" camps at various points in my career.

Right now? I'm early return.

When I wrote C and C++ code with locks and malloc/free? One exit only.

It's all about avoiding bugs.

In C code heavy with locks and memory allocation, you need to make sure your post-conditions are correct. That is near impossible when there is more than one return [1].

In C++, with RAII and Java with "try-with-resources", I can ensure proper cleanup. At that point, it's about making it easy for someone who is reading the code to avoid screwing it up. I need to make it easy for them to flow through the code, keeping the cognitive load as low as possible. Functions do what they say on the box and _only_ what they say on the box. At that point, my goal is to make a decision, act on it and move on. I don't want to carry that state forward - it means I have to keep it in mind for every line after it. I'm even trending towards having the majority of the methods in my classes be static functions with no state.

Finally, if I've got a function that has two different flows and I'm deciding between them with an if? I've probably actually got two different functions pretending to be one. I then try to refactor and get rid of the if.

[1] [http://programmers.stackexchange.com/questions/154974/is- thi...](http://programmers.stackexchange.com/questions/154974/is-this-a- decent-use-case-for-goto-in-c/154980#154980)

<comment><USER3> But in C you usually use `goto Error;` which basically is just a `return` + you can do the cleanup yourself.

<comment><USER4> That means that you have to put all your unlocks and deallocations there AND you have to check them to see if they were allocated/locked in the first place.

</comment></comment></comment><comment><USER5> The error checking example conflates two different things:

• Early returns vs. single return.

• Excessive nesting vs. simpler flatter if/else.

The real problem with the "before" example is the excessive nesting. I do prefer early returns myself, but even if you wanted to use the single-return style, you could simply un-nest the whole thing:

        public string Execute( int integer, string str, bool boolean ) {
            string result;

            if( integer <= 42 ) {
                result = "Error: Integer is too small";
            } else if( string.IsNullOrWhiteSpace(str) ) {
                result = "Error: String is null or empty";
            } else if( ! boolean ) {
                result = "Error: Incorrect boolean";
            } else {
                result = "Success";
            }

            return result;
        }

It's a bit ironic that this is C# code, because ReSharper would offer to un- nest the code for you.

Also, this really has nothing to do with tail call optimization.

<comment><USER6> Frequently the checking is dependent on passing the previous clause. Something like:

        if (x == null)
            return "x is required";
        if (x.length < 3)
            return "too few elements in x";
        if (x[0] == null)
            return "first element missing";

The point here being that each successive check is testing something that is only valid if the previous check passed. This can't be so easily converted to your if/else pattern without re-encoding the early exit in the form of a complex boolean (&& and || have early exit built in).

The concept's applicability to tail call optimization is only by analogy with the mental stack; just as tail call optimization sets up the call such that the current stack frame no longer exists, early exit sets you up to remainder the rest of the code without regard to any potential alternate code paths (i.e. a potential else branch on an early if statement) later; the mental frame of a long if statement no longer exists. The analogy is a little bit stretched; of course it is not a technical isomorphism, but nobody ever said it was.

<comment><USER5> As I mentioned, I prefer early returns as well, and I wasn't recommending the if/else structure as an alternative to early returns.

My only point in showing that code was to illustrate what I see as the bigger problem in the example: the use of nested if and else statements when non- nested ones could be used instead. Personally I would get rid of the nesting by using early returns, but for someone who objects to that for any reason, the non-nested if/else chain is a nice alternative.

Also, the series of returns you show here could easily be written as a chain of if/else for those who prefer that style. I'm not sure why you said it requires a complex boolean expression; this code is equivalent to the series of returns:

        string result;
        if( x == null ) {
            result = "x is required";
        } else if( x.length < 3 ) {
            result = "too few elements in x";
        } else if( x[0] == null ) {
            result = "first element missing";
        } else {
            result = "the real result";
        }
        return result;

Again, I don't particularly like this style, although it is better than the deeply nested if/else. I prefer the series of returns that you listed in your comment.

</comment></comment></comment><comment><USER7> Return statements and "early exit" are not built into functional languages. If the language, like Scheme, supports continuations, we can use callCC to implement an early return[1]:

        (define (example x)
          (call/cc (lambda (return)
            (when (< x 0) (return #f))
            ; more code, including possible more calls to return
            0)))

However, most functional languages do not have callCC built in. Happily we can get a similar effect by writing our code in continuation-passing style (CPS)[2]. (Think Node.js.)

Nominally, CPS has some overhead because of the extra function calls involved. However, a CPS transform also puts every call in _tail position_ , making them eligible for tail call elimination. This means that we can use CPS with no function call overhead in a language with proper tail calls.

What does this mean in practice? It means that calling a callback in CPS style—which, being in tail position, can be eliminated—is effectively _just_ a jump under the hood. Not too different from return!

Putting it all together, we get that tail call elimination lets us write code in continuation passing style with no extra over head which gives us access to continuations that we can use to implement an early return in languages _without_ return.

This turns out to _not_ be what the article was on about, but I think it's more interesting.

[1]: Code from a StackOverflow answer by Nathan Shively-Sanders which goes into more detail: [http://stackoverflow.com/questions/2434294/scheme-early- shor...](http://stackoverflow.com/questions/2434294/scheme-early-short- circuit-return)

[2]: I wrote a brief explanation of CPS on Quora: [https://www.quora.com/What- is-continuation-passing-style-in-...](https://www.quora.com/What-is- continuation-passing-style-in-functional-programming/answer/Tikhon- Jelvis?share=1)

<comment><USER8> Is it possible to use CPS with functional primitives like map? Or do you have to implement CPS-savvy replacements? It doesn't seem like a CPS transform would let you early-exit from map in tail position.

<comment><USER7> Right, you'd need a CPS version of map. Luckily map isn't really a "primitive", it's just a library function, so using a different version of map is not a big deal.

One way to think about it is that languages with callCC built in are just transformed to CPS by the compiler before being run, which includes transforming the definition of map. (In fact, this is a reasonable strategy for compiling Scheme, I believe.)

It's pretty easy in Haskell which wraps CPS into a monad (Cont) because you use mapM from the Control.Monad library instead of having to write a specifically CPSed version of the function.

</comment></comment></comment><comment><USER9> I would rather see more articles like this on hacker news!

<comment><USER10> Anyone who wants to share their preference with us is welcome to email firstname.lastname@example.com. We're interested.

</comment></comment><comment><USER11> Original code seems like really bad way to check validity of parameters. Is this type of programming common in some languages? I have never seen similar code in Java.

<comment><USER2> Some groups have a "Functions can only have a single entry and single exit point" rule, meaning you have to jump through a lot of hoops.

Sometimes it is required. In Java, before try-with-resources, if you had any resource management (locks, file descriptors, sockets), a single exit point made resource management simpler. C code tended to have similar rules (or GOTO's to jump to the exit block in the function). C++ just used RAII, and made it the destructor's problem.

<comment><USER12> Right - that single-exit-point rule is generally a holdover from C.

It is pointless in languages like C# or Java which have GC and 'try' or 'using' blocks. In some cases the single return is _nicer_ , but this is not universal nor is single return "required" in all cases.

In functional languages such as F#, Haskell or Erlang where the method is usually side-effect free and uses pattern-matching, multiple return-points are completely normal and no-one even sees an issue.

</comment></comment></comment><comment><USER13> I think that if the author re-wrote the first method in a cleaner way, composed of lots of smaller methods with descriptive names then the code would be a lot more readable, and you wouldn't even need to debate the whole multiple returns versus single point of return thing because your "mental stack" could handle either option equally well.

For example:

      public string Execute(int integer, string str, bool boolean) {
        string result;

        if (isValidInteger) {
           result = validateStringAndBool(str, boolean);
        } else {
           result = "Error: Integer is too small";
        }
       return result;

}

      private string validateStringAndBool(string str, bool boolean) {
         if (!string.IsNullOrWhiteSpace(str)) {
           return isValidBoolean(boolean)
         } else {
            return  "Error: String is null or empty";
         }
      }

      private string isValidBoolean(bool boolean) {
         if (boolean) {
            return "Success";
         } else {
            return "Error: Incorrect Boolean";
         }
      }

And yeah, I can't see how this has anything to do with tail call optimization other than a fluffy analogy to stacks - mental and programmatic.

</comment><comment><USER14> Would be nice to see more serious study of this for a language like C++. It would take either TCO or Garbage Collection to make reliable, robust persistent data structures a possibility in C++, and more would prefer TCO of these two. That would open a big door into more powerful functional programming idioms for C++ than currently exist, even with the latest language standards.

<comment><USER15> How would TCO help? I've never read anything about the connection between TCO and persistent data structures. GC on the other hand is a known, and often assumed, requirement in the literature. Sounds interesting!

<comment><USER16> TCO can be done more readily if you know for a fact that all the parameters passed into the function were not modified during the execution of the function.

<comment><USER17> More reasons to be aggressive about marking things const.

</comment></comment></comment></comment><comment><USER18> To me, this only makes sense if you always read source code sequentially. Humans are not machines, and most often you will not be reading code (especially code with branches) in a top-bottom manner.

Having multiple return statements in a method actually renders the method LESS readable. I understand the first proposal is also usually implemented with many return statements, but they could be replaced with a variable assignment, variable that is then returned at the end of the method (as in the example). If that variable is final (or whatever the C# equivalent is), that's even better.

<comment><USER19> I don't think I fully understand your comment. Regardless of whether I've read the whole program top-down, it is definitely easier for me to understand early-exit logic in a routine than to keep the mental stack of conditionals going, particularly when (as is often the case) the early exits consist of various deviations from the "main sequence" code (e.g., validations failing or other edge-cases).

<comment><USER20> "Oh... We call function foo. Let's go see what function foo returns. (Scroll to the end of the function)"

With a single return, I can at least follow that thread fairly easily and sometimes it's just a few lines back in a large function. With many returns, I'm forced to start at the beginning of the function.

There a dozen or so other culprits that make this difficult. Assignment in a block can be just as bad, for example, since I can't know which assignment occured without looking at all of them.

<comment><USER21> I like this ergonomics argument, particularly from a reader's perspective. But having had to read some single return value code recently, I found that the return value returned at the end of the function was rather unhelpful; it usually boiled down to "return rv;". I then had to go back up to the top of the function and follow through the nest of passed conditionals and side effects, fall throughs, and failed conditionals to see how "rv" was modified throughout the function. The non-linearity cost me a lot more thought, whereas with multiple return value code the failed conditionals are "tossed" out of my head very quickly. I think, given that you almost always end up reading the whole function anyway (which is probably good), linear is better than non- linear and consistency (bail early) is better than inconsistency (anything goes) when it comes to error handling.

<comment><USER20> I come from an FP background, and so I tend to avoid multiple assignment as well. In such a scenario, there's a single line that assigns rv. Each of the variables used in assigning rv are each assigned just once. I can follow the graph fairly easily until I get to the bit I need. Often its something like "what conversion rate for currency are we using?" and following that chain gets me there quickly.

<comment><USER21> Yeah, I can definitely see how if you're disciplined it can be effective. But in my case, I've seen integer return values hold status codes from multiple modules and libraries, file handles, and enum values all in the same function just to twist everything together so that no matter where it stops executing, "rv" has some kind of value so that the ending "return rv" won't just return success. It was total madness, and it's really hard to do anything as complicated and fragile as that with early returns.

I will admit though that no programming style will sufficiently protect against bad coding :). I'm sure even if this person did everything I advised, they'd still find a way to overcomplicate and confuse things. So maybe the issue is moot, or at least bigger than style.

</comment></comment></comment></comment></comment></comment><comment><USER3> This would be pretty awesome to have as a lint in static code analysis tools.

</comment><comment><USER22> For startups too</comment>


Switching to e-cigarettes could save 6.6M American smokers - <AUTHOR> https://in.reuters.com/article/us-health-ecigarettes/switching-to-e-cigarettes-could-save-6-6-million-american-smokers-researchers-idINKCN1C72UJ <comment><USER2> Our society's tendency to moralize or rationalize issues has made it tough to talk about harm reduction.

Moralizers focus on the corrosive elements of addiction and rationalizers say that e-cigs are still harmful but they miss the point that many people who smoke e-cigs are better off than they would be if they used cigs to get their nicotine.

E-cigs offer a better path to cessation through better control of the nicotine concentrations than cigs do, and e-cigs are probably one of the least harmful ways to get nicotine (and they're certainly cheaper than gum and patches).

I was very disappointed that the Obama administration tried to apply such heavy-handed regulations to the industry, it has its place and I think we'd be better off tolerating e-cigs. Give people an alternative to caffeine.

I think most productive people are dependent on some stimulant or at least most people find their productivity is enhanced through stimulation. Whether it's coffee, nicotine, or amphetamine, we should be honest about why people use it and focus on access that doesn't cause undue suffering.

<comment><USER3> I didn't think the regulations were heavy-handed. Such devices should be tested and certified to make sure they aren't, for example, leaching heavy metals into the liquid and vaporizing it. Devices sold with cadmium-plated heating coils or lead solder joints could easily poison millions of people, so I think it's reasonable to require safety testing.

<comment><USER4> I personally think ecigs are an interesting experiment in free markets.

A bunch of like minded people who had a habbit which was the leading cause of preventable death coming together to figure out a way to kill themselves less.

Have there been things in the industry which were poisonous and could kill you over the course of it's history. Yes. Lots. Have those been slowly fased out as concerned consumers voice opinions, yes. Ni200 wire is a good example. Battery mooch is another.

The lack of regulation has certainly led to it being more dangerous for uninformed consumers, but it has also lead to lots of independent entrepreneurs innovating fast in the space.

Personally I see it as a great example of free markets vs. regulation. I also think it's only been able to exist because it's in a market which of its own is hazardous to health.

Also this entire industry as I understand it came from China.

<comment><USER5> So your argument is that because e-cig users are coming from one harmful product, that we should do nothing to prevent the new product from causing undue harm, and that eventually (decades?) e-cigs will become safer because someone (who?) will eventually phase out the harmful ones?

Why not stop wasting time and lives, and prevent the harmful ones from being produced/released?

<comment><USER4> Because it stops innovation.

Ni200 which is a pure nickel wire was invented for temperature control. Required a specific device and chip to use as it has almost 0 resistance. Some stupid uneducated people or vendors sold it and and used it in non temperature controlled devices and poisoined themselves (not fatally), or blew up their batteries on non-regulated devices.

I just started vaping last month, and while I bought some kanthal wire, I also bought some ni200 and Titanium wire, which is dangerous if not used correctly. I personally didn't know, but also didn't use it until I looked it up.

With that said, ni200 wire did invent temperature control, which is a method of vaping these days.

<comment><USER6> 316L stainless steel is a much safer option than Ni200 or titanium wire, shame it's not more commonly used (Kangertech sells 316L coils, but they're awfully hard to find compared to the Ni200 ones).

<comment><USER4> Personally use SS316L now. Hard to find though.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> I quit smoking a while ago for 4 months using a vape, then Thailand's military junta banned them and most shops closed.

It's been a couple years now and tonnes of online shops started to sell and I'd see lots of local vapers while having coffee, so decided to give that a go.

It's been a month since I've had a cigarette now since I've started vaping. Energy is up and sense of smell is coming back. Used to smoke a pack a day.

I do run the risk of deportation, jail or heavy fines/bribes if caught with the thing, but I feel it's worth it for health reasons.

Also gov just increased tax from 130THB a pack to 150THB a pack.

<comment><USER7> Vaping is illegal, but cigarettes are legal? Vaping is illegal, but also taxed?

<comment><USER8> Surely the taxes refer to cigarettes. Vaping equipment is sold in a variety of ways, but none of them are by the "pack".

</comment></comment></comment><comment><USER9> vaping definitely isn't healthy but it doesn't take much time vaping to determine that it's less bad for you than smoking.

i still want to quit nicotine entirely one day but until that day comes, my vape pen and i are good friends. 9 months ago i tried one out, and that same day was the very last day i ever smoked a cigarette.

<comment><USER10> Is vaping unhealthy because nicotine is inherently unhealthy or are there other harms associated with vaping itself? Need to quit smoking cigarettes myself.

<comment><USER11> Lean over an open fire and take a deep breath of the smoke.

I don't think it takes a huge leap to realize inhaling smoke is not good for you.

<comment><USER12> I might be wrong but I thought the whole point of vaping was you are getting the liquid/material hot enough for it to turn into vapor but not hot enough to burn. Same principle with vaping weed. Sure its not "healthy" but its much healthier than burning. I think your example is extremely wrong.

</comment></comment></comment></comment><comment><USER13> I use nasal snuff, the least damaging and least intrusive form of tobacco use.

I vaped pretty hardcore for 3 or 4 years, it definitely has an effect on your lungs, especially if you're into dual-coil sub-ohm builds and all that jazz.

Nasal snuff has been a God-send and is much more enjoyable, at least to me. I still smoke a nice briar pipe with a few different pipe tobacco blends on occasion, but nasal snuff has definitely curbed my tobacco/nicotine usage.

I could never go back to cigarettes and dip is just kind of gross, although I think it's better than cigarettes.

<comment><USER14> TIL ... about Nasal Snuff. Didn't even know this was a thing - do you get weird looks in public?

<comment><USER4> Called Snus. Banned in EU, but supposedly one of the healthiest nicotine injestion methods. Most people would puke if they tried it :)

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

<comment><USER15> Non-mobile link:

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

</comment></comment></comment></comment><comment><USER16> Ecigs have helped me quit smoking and they are the only thing that worked for me. However, out of all the smokers I know, I only know one other person who managed to quit smoking and stay quit with ecigs. The vast majority of people I know who tried ecigs kept smoking and eventually gave them altogether in favor of cigarettes

</comment><comment><USER17> The number is artificially inflated by multiplying by 10 years. It's 660,000 people a year, which is still a huge number.

<comment><USER18> I'd rather they represented the number a extra days alive. "Switching to vaping would bring XXXXXX more days of life to Americans".

If those 660,000 people were on average 95+ years old and would have died soon later anyway, then "saving" their life has a much lesser meaning. Of course this isn't the case, but the statistic is not very helpful as a measure.

</comment></comment><comment><USER19> Yeah. I hate cigarette smoke with a passion but don't care if e-cigs puff all they want because it has almost no odor and little/no noxious particles. Therefore, it makes sense to tax the heck out of cigarettes and place them in anti-marketing packaging, and perhaps subsidize (no sales tax/VAT) e-cigs. Cigarettes are engineered to be as addictive as heroin, but Prohibition is never a good solution, so the best compromise is something like e-cigs which solves both harm-, litter and nuisance-reduction.

</comment><comment><USER20> For those looking, I believe the actual research article is here:

[http://tobaccocontrol.bmj.com/content/early/2017/08/30/tobac...](http://tobaccocontrol.bmj.com/content/early/2017/08/30/tobaccocontrol-2017-053759)

</comment><comment><USER21> I was a pack a day smoker for quite a few years and a quality e cig finally made my smoking habit much less compulsive.

I almost made the switch 2 years prior but I wasn't allowed to use it in my private office so I figured what's the point?

Call it habit or whatever but I still can't get as much work done at home when I'm not smoking so I consider it my weekend treat.

</comment><comment><USER22> I was disappointed to see that the city I live in (Oakland) had banned the sale of vaping materials and e-cigs, along with menthols and other flavored tobacco products, to "protect the children". I know many people who have stopped smoking real tobacco because of the introduction of gaping, so Oakland's decision just seems ignorant to me.

</comment><comment><USER18> I wonder if this obsession with saving lives will end when we hit the maximum human capacity of Earth, sometime in the next 1000 years. Though perhaps we could be multi-solar-system by then.

</comment><comment><USER23> e-cigs are not the answer: See FDA [1].

An intervention that has proved effective for saving lives from tobacco use is MPOWER from the World Health Organization. Raise the cost of tobacco through taxes, ban smoking in public places, hard-hitting, scary, anti-smoking ads, doctors talking to their patients about quitting, nicotine replacement therapy, telephone counseling support. In NYC the age for purchase is 21 as it is nationwide for alcohol. In NYC, the minimum cost per pack is $13.

[1] [https://blogs.fda.gov/fdavoice/index.php/2016/08/protecting-...](https://blogs.fda.gov/fdavoice/index.php/2016/08/protecting- the-public-and-especially-kids-from-the-dangers-of-tobacco-products-including- e-cigarettes-cigars-and-hookah-tobacco/)

<comment><USER24> _nicotine replacement therapy_

That's what e-cigs are.

</comment></comment><comment><USER25> "Cold turkey is best way to quit smoking, study says"

[http://edition.cnn.com/2016/03/15/health/quit-smoking- cold-t...](http://edition.cnn.com/2016/03/15/health/quit-smoking-cold- turkey/index.html)

Not convinced switching people to a just as addicting, just as nasty way of killing themselves slowly is any better.

<comment><USER26> I sometimes feel like I'm in loony land with all the e-cigarette FUD. It doesn't take a genius to realize that the cancer causing potential of smoking lies primarily in inhaling smoke containing a large number of carcinogenic combustion products. Vaporizers completely eliminate that; it's why "medical marijuana" is a thing, they couldn't prescribe it when the side-effect is cancer.

<comment><USER27> At this point I'm convinced that this e-cig FUD is a combination of intentional misinformation and general population not being able to think clearly about degrees of things. One would think that "a significantly less harmful thing is better than a harmful thing" is a tautology, but apparently it's not obvious to everyone.

<comment><USER4> It would be better if I quit, but wasn't planning on doing that, so I switched to vaping and haven't smoked since.

Best? No. Better? Probably.

One of the funny things with vaping is after two weeks smoking a cigarette becomes disgusting.

I'd say it's also a lot easier to quit vaping than smoking cigarettes. So that as well is a move in the correct direction.</comment></comment></comment></comment>


Many Americans are getting more money from unemployment than  from their job - <AUTHOR> https://fivethirtyeight.com/features/many-americans-are-getting-more-money-from-unemployment-than-they-were-from-their-jobs/ <comment><USER2> _Were_ getting. The article is from May. The CARES Act benefit, which it describes, expired today. [https://www.cnet.com/personal- finance/extra-600-cares-act-un...](https://www.cnet.com/personal- finance/extra-600-cares-act-unemployment-benefit-ends-today-heres-where- things-stand/)

<comment><USER3> And also having an incentive for more people to stay home during a pandemic might even be wise.

</comment></comment><comment><USER4> I hope people are saving their temporary unemployment benefits. State budgets are tapped out and even the most generous states only give ~9 months worth of benefits. Come January/February whatever Congress passes will expire again and so will state benefits. Right in time for what amounts as the worst months for virus contagiousness.

Strap in everyone, 2021 might be worse than 2020.

</comment><comment><USER5> This is a broad generalization, and for most unemployed Americans, wrong.

The New York Times did a very large, good chart about this a few months ago. Only people in about half of the American states might possibly end up getting more while unemployed than they did at work. The way some states' unemployment systems are set up, it's simply not possible.

Further, it can only happen if the unemployed person qualifies for the _maximum_ benefit in their state, which the vast majority of unemployed people do not.

The whole "Americans are making more money from not working" is not only a three-month-old meme, it's only true in a small percentage of cases. The only thing it is good for is getting people like my mother riled up with, "People aren't working because they're getting too much unemployment!" Completely ignoring the fact that there simply _are no jobs_ to be had, and businesses are still shutting down left and right.

But, each to her own bubble.

<comment><USER6> I don't see how having only 50% make more is any less ludicrous.

Should anyone ever make more money while unemployed than when employed?

Won't that completely alter the valuation of work and with that the proper functioning of the economy?

PS I know people that own businesses that can't reopen because people that usually would work for them don't want to come back as the salary he pays is less than the unemployment benefit.

<comment><USER7> Isn't the ultimate goal of technology for _no one_ to have to work unless they want to, while providing utopian material abundance to everyone regardless of whether they work? Of course this isn't possible with our current level of technology, but isn't that what we are striving towards?

I mean, what's the point of building AI and robots and advanced energy sources and bio engineering if they don't fundamentally improve the quality of life for everyone? I certainly don't think there's some _moral_ requirement to force everyone to work.

<comment><USER8> People thrive when they have a purpose in life and problems to solve. Take away their problems and purpose and:

1\. they'll invent problems

I.e. "first world problems". We (in America, anyway) live in an incredible utopia by any historical standard. But I read on the news every day about an endless series of phony crises. (The coronavirus thing is a real crisis, but even so, by historical epidemics it is not that bad. The bubonic plague, for example, killed something like 35%.)

2\. they'll be miserable and self-destructive

This is a well known problem with the offspring of very wealthy people who never had to try at anything.

3\. they die

People often die shortly after their retirement. They don't survive the loss of purpose.

<comment><USER7> Jeff Bezos, Bill Gates and Mark Zuckerburg never need to work another day in their lives. Are you arguing they are miserable, self destructive, have lost purpose and will soon die?

People don't need a Sword of Damocles hanging over their head threatening them with homelessness, loss of medical treatment and hunger solely because they didn't find purpose in life.

How is being miserable and self destructive and losing purpose, as a worst case scenario, worse than homelessness, drug addiction, loss of friendship, family, self respect, health and medical treatment?

I mean, I don't see the connection. Are you saying that unless people are literally threatened with homelessness, starvation and death they won't find purpose on their own?

<comment><USER8> Some people do find purpose on their own. Many do not. I recall a story about a guy in his 90's who got a job as a Walmart greeter. The reporter asked him why not just enjoy his golden years? The fellow said he needed a reason to get up in the morning. He worked at that Walmart until he died, living many more (by all reports happy) years.

<comment><USER7> I don't get it. Why would having his basic needs met stop him from being a Walmart greeter? If someone wants to be a Walmart greeter they can still do that. Basic income and social support doesn't stop that.

<comment><USER8> Imagine your 30 year old son is living in your basement playing video games, which is all he's done since high school. You can easily afford to continue to support him - but how would you feel about it?

<comment><USER7> It's funny you mention that, because using video games as an example says more about the era you were brought up in than anything else.

The top video game streamers in the world today make millions of dollars a year:

[https://www.esportsbets.com/news/highest-paid-twitch- streame...](https://www.esportsbets.com/news/highest-paid-twitch-streamers/)

I'm guessing you wouldn't look down on your son for playing football hard in High School and trying to go pro. Would you berate your child for dreaming of playing for the NFL if they had some talent for the game? Well, nowadays, your son could go pro in video games. Tyler Bevins, for example, from the article, was entertaining over 14 million fans and was making over $500K per month.

If it's between my kids dreaming of going pro in eSports vs being a quiet Walmart greeter for 30 years - you can bet I'd encourage them to get good at those games. Play that Nintendo, son.

<comment><USER8> > football hard

I'd council him that football is a career with a very small chance of success, with a high probability of brain injury and/or other debilitating injuries, and a profession you're forced out of young.

> Play that Nintendo, son.

If he's 30, still living in your basement and hasn't made a dime yet, that ship sailed long ago.

> a quiet Walmart greeter for 30 years

Somehow I escaped being a Walmart greeter :-)

Hey, you can advise or support your son however you wish. But don't ask others to pay for his Nintendo dreams.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I thought that was intentional, to make sure that people stayed home instead of looking for extra work.

<comment><USER10> That'd make sense only if everyone had that option. Right now this led to people who are risking their lives and out there working potentially earning less than the people who are at home not working.

<comment><USER9> Putting my "free market" hat on for a moment, the people who are risking their lives are in an advantageous situation for bargaining. To some degree, it worked too! Lots of stores and delivery services appeared to be paying more.

I think people often look at this with the "glass half empty" viewpoint though. "PERSON A MAKES MORE THAN I DO! THEY SHOULD GET LESS!" Why not think "PERSON A MAKES MORE THAN I DO! I SHOULD MAKE MORE!"

</comment></comment></comment><comment><USER11> Does no one think that these types of articles are a distraction while larger corporate entities get that majority of the bailout monies? Small businesses and the general public are fighting over the scraps of these bailout bills while the lion's share go to the larger corporations and to prop up the stock market (which, according to quite a few has been in need of a correction since Clinton - though economics is not my area and I defer to those who are more knowledgeable). It seems to me a bottoms up approach would work better to stem the tide of oncoming homelessness and broad housing/business market crashes that stem from failing systems, rather than putting our faith in "trickle down economics" during a pandemic where the only viable means of shopping is delivery, thus ridding the service sector which is a major vacuum in the whole "trickle down" web.

Admittedly, I could be wrong on several points and do look forward to correction. Please do point out my mistakes.

</comment><comment><USER12> ...because unemployment checks are the only thing preventing a broader, systemic collapse when millions can't pay for their housing, healthcare, and consumer demand implodes. Now that the extra benefit has expired, we're in for for some real uncharted waters.

<comment><USER13> > ...because unemployment checks are the only thing preventing a broader, > systemic collapse when millions can't pay for their housing, healthcare, and > consumer demand implodes.

One of many necessary things, but not the only thing or sufficient by itself. Eviction protections, etc., are also part of the mix.

</comment></comment><comment><USER14> Maybe, just maybe, this is a good indication that their earnings were criminally low to begin with. Might have something to do with the relationship of exploitation between employers and employees.

</comment><comment><USER15> > The question is whether this will be a problem as the economy starts to > reopen.

Isn't the question whether the economy _should_ reopen?

</comment><comment><USER16> 1\. You also need to take into account non-wage compensation (e.g. healthcare).

2\. This also provides a certain amount of "rough justice" for replacement of unreported wage income. While ordinarily that would not be an appropriate use of the UI system, these are not ordinary times.

3\. Excess UI benefits will not last forever, while the effects to lower wage workers in food/hospitality and other industries will leave financial scarring for years. Giving people a little more upfront, then slowly phasing it out, gives laid off workers a reasonable opportunity to plan on a career change, if needed, or to reduce household expenses going forward. (E.g. finding a cheaper apartment).

</comment><comment><USER17> This is true because a large portion of working people live in poverty in the U.S. This reflects poorly on our human-jackal employers that extract wealth from the labor of the poor (Walmart, Amazon... restaurant chains, etc.).

</comment><comment><USER18> Having just tried to hire some trade persons. The going rate seems to be 1K-3K/per day in Canada.

1) 200 sqft laminate flooring in a square room. Quoted $1500 for installation. One day job.

2) 2 day job to install a minisplit system I bought separately. $6000+

My sister was quoted over 1k for replacing a valve by a plumber, for less than an hours work.

These were not even labour intensive or high skill dependent things. Just basic trade person type of things.

Your $10/hour job can buy you plastic things made in China at the dollar store.

So I think these are the real wages in this economy.

<comment><USER19> That's probably going to the person who is managing it, I would assume? The actual people doing the unskilled work are likely making minimum wage.

</comment></comment><comment><USER20> "The question is whether our totally antiquated systems will be capable of pulling that off."

COBOL anyone?

<comment><USER21> Easiest thing to do at this point would be an excel spreadsheet and a single employee who venmos everyone their unemployment manually.

<comment><USER20> I had a COBOL class and sort of liked it. The debugging wasn't great and the JCL can be tricky, but it wasn't bad.

The real problem is that companies/goverments didn't anticipate the retirement of COBOL resources. Nobody wants to train anyone or give them a career. They all want to hire senior people.

I see a similar trend emerging in other technologies. I see tons of senior positions but very few positions where the company will provide training. Even internal transfers at my company provide _zero_ training.

<comment><USER13> > The real problem is that companies/goverments didn't anticipate the > retirement of COBOL resources.

Yes, they did. What they didn't anticipate was that major system change would not be driven by policy changes that they were free to time (and, if necessary, take the time to make it a replacement of major system components or whole systems with newer technology), but that there would be an emergency causing simultaneous needs across the nation which would exhaust the limited (mostly contract) resources that everyone reliea on for major changes to major systems.

<comment><USER20> That's pretty much the same as what I'm saying - demand has outpaced supply and nobody is willing to train.

Policy changes are never able to be timed more than the duration of the election cycle. And frankly, neither party will pony up the money for a technical upgrade that the constituents could care less about.

<comment><USER13> > That's pretty much the same as what I'm saying

"Didn't anticipate retirement of COBOL resources" is what you said.

That's very different than "anticipated and have been dealing with retirement of COBOL talent with strategies that didn't accommodate an unprecedented black swan event creating a massive simultaneous nationwide demand surge."

> Policy changes are never able to be timed more than the duration of the > election cycle.

Yes, they are; it's very common for new laws that would have system impacts (either to the adopting government, or externally entities, or both) to come with implementation timelines that are long to provide time for system implementation, which certainly often cross election cycles. Sure, intervening elections sometimes change those plans, but almost exclusively to eliminate the requirement or extend the timeline, not accelerate it.

<comment><USER20> The retirement of COBOL resources across the nation, whether anticipated or not, has no difference on the outcome of situation - management did not adequately plan for the scarcity of the resources.

You can only plan based on what you know. You could plan based on implementation timelines in legislation. You can't plan on what may or may not come in the next 2-4 years. Waiting indefinitely for modernization plans is not realistic, although that is what happens in many states.

<comment><USER13> > The retirement of COBOL resources across the nation, whether anticipated or > not, has no difference on the outcome of situation

Sure, but I'm not the one who claimed that the problem was "failure to anticipate the retirement of COBOL resources."

I agree that retirement of COBOL resources is basically irrelevant.

<comment><USER20> LOL ok. I guess resource scarcity is not the primary driver of the lack of COBOL resources (what else could it be?).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> FYI: Americans = Really poor people who will probably never get their job back.

</comment><comment><USER23> The way it's always worked in southern Europe, hence the high unemployment rates.

</comment><comment><USER24> Naval Ravikant (of AngelList) nailed the problem with government pay subsidies on a podcast with Joe Rogan.

"A slippery slide transfer straight into socialism. The moment people can start voting themselves money, combined with democracy it's just a matter of time before the bottom 51 votes themselves into the top 49. By the way, the slippery slope fallacy is not a fallacy; they haven't thought it through."

"The moment you start having a direct transfer mechanism like that in democracy, you're basically doing away with capitalism which is the engine of economic growth. You're also forcing the entrepreneur out, or telling them not to come here."

"People who are down on their luck, they're not looking for handouts. It's not just about money, it's also about status and meaning. The moment I start giving money to you, I've lowered your status and made you a second class citizen."

"You have to teach a man to fish, not to basically throw your rod in and eat the leftover scraps."

<comment><USER2> That sure is a pile of quotes. I love the assumption that the problem is people just not wanting to learn how to fish. What has he, or have you, to back that assumption up? Evidence, please, not more assertions that read as if they fell through a hole in time from the red-baiting 1950s, when you really _could_ just up and get a job that paid a living wage most places.

<comment><USER24> > What has he, or have you, to back that assumption up

I'm not exactly sure what you mean, but Naval does talk about his very modest upbringing, basically coming from nothing. His single mom, being a minority in a tough neighborhood in New York. However, his thirst for knowledge, status, and hard work has built a great amount of peer respect, economic output, and success.

<comment><USER2> Thirst for knowledge, status, and hard work, huh? Sure, those count for something. Do you think having had the good luck to win the dotcom boom lottery might count for more?</comment></comment></comment></comment>


Sometimes, it's not you, but, it's you !! - <AUTHOR> https://notyce.me/resources/sometimes-its-not-you.html <comment><AUTHOR> Are recruiters still relying on keywords? Are we underutilizing the advancement of AI in this space?</comment>


Google's new Verified Calls feature will tell you why a business is calling you - <AUTHOR> https://techcrunch.com/2020/09/08/googles-new-verified-calls-feature-will-tell-you-why-a-business-is-calling-you/ <comment><USER2> non-techcrunch link: [https://developers.google.com/business- communications/verifi...](https://developers.google.com/business- communications/verified-calls) TLDR: Google Ads customers can now customise the appearance of phone app when they call, for a subset of Android users</comment>


"More Flame Bait," or why Charles Stross uses Macs - <AUTHOR> http://www.antipope.org/charlie/blog-static/2010/01/more-flame-bait.html

<comment><USER2> I agree that Apple's attention detail in design is excellent. I would say, however, that they tend to fail miserably in terms of ergonomics. A few examples:

[1]All Apple mice. The latest, Magic Mouse, is like instant carpal tunnel.

[2]All Apple displays. They tilt, but you can't adjust the height...seems absurd to me.

[3]The unibody Macbooks. Sharp edges are extremely uncomfortable for wrists (odd for a company so committed to rounded corners).

Apple often sacrifices ergonomics in favor of aesthetics. That said, most consumers probably don't use the devices enough to notice the ergonomic shortcomings.

<comment><USER3> Agree on [1] -- remember the hockey puck mouse on the old iMacs? Steve Jobs actually said it was "the most wonderful mouse" when he unveiled it at Macworld (see [http://www.thestandard.com/news/2009/01/01/steve-jobs- greate...](http://www.thestandard.com/news/2009/01/01/steve-jobs-greatest- macworld-video-hits-1998-2008?page=0%2C1))

On [2], the old "half-dome" iMacs let you adjust the height and even swivel the display horizontally almost 90 degrees in either direction. I owned one, and really liked how the display could be adjusted to point almost anywhere -- it was great for letting the kids look at the screen.

One problem with the more recent iMacs is it's very easy to pull out the power cord from the back of the monitor if you swivel vertically when the cord is taut.

In terms of iPhone ergonomics, I am curious how Apple will update the body in the next generation. There is a lot of room for improvement, IMHO.

<comment><USER2> yeah, the hockey puck mouse was just pitiful. The head-scratcher for me with the new mouse is the gesture of 2-finger swiping (laterally) while your other three fingers are (presumably) stationary on the mouse. It makes my hand ache just thinking about it.

loved the fully articulating arm on the old iMac--one of the sacrifices they've made in their quest for aesthetic minimalism (which I appreciate, mind you, it just sucks that you can't move the display easily anymore).

<comment><USER4> _one of the sacrifices they've made in their quest for aesthetic minimalism_

I don't imagine it was solely aesthetic. The articulating arm required a huge amount of dead weight in the base to support ever-larger screens. The 20" iMac G4 weighed about the same as the current 27" iMac.

</comment></comment></comment></comment><comment><USER5> "most PC vendors wouldn't know good industrial design if you hit them over the head with it"

I've often wondered about this, surely the PC market is large enough that someone could come in with exceptionally well-designed machines, pre-built, running Windows, that had the "it just works" nature of a Mac. Is Windows really so broken as to prevent that?

I guess I'm thinking something like Alienware used to be only more focussed on overall usability rather than gaming oomph.

<comment><USER6> They could, yes, but it undermines the fundamental basis on which the consumer PC industry is based: cheap, throw-away computers. Well-designed machines require precision and machining that adds to the cost of the computer, and with companies such as Dell, HP, Lenovo, and such operating on such thin margin, high-volume selling, any additional cost adds up quickly.

There is a massive difference in the build quality between a typical Apple product and a typical HP or Dell product. There's an attention to detail that appears to only exist at the higher price point. For those that build their own boxes, you have likely found that a quality case is worth the price differential — and this is only one piece.

</comment></comment><comment><USER7> This seems more likely to incite a flamewar than a useful discussion.

<comment><AUTHOR> Or it could incite a discussion on the relative merits of Apple's industrial design approach, how accurate Stross's assessment is, and what should or shouldn't carry over to the industry at-large.

I realize OS wankery is pretty much standard amongst techies, and that anticipating it is far from unwarranted, but there's always the chance that a discussion might actually pan out alright.</comment></comment>


Ask HN: What mail solution exists like Craigslist's? - <AUTHOR> What mail solution exists that replicates the Craigslist anonymize functionality?  This is the functionality that generates craigslist.org emails for each post and facilitates two parties corresponding through that Craigslist.org account. <comment><USER2> anon.penet.fi</comment>


LiteCoin Payment API - <AUTHOR> https://liteapi.org/ <comment><USER2> PHP example should sanitize params

<comment><USER3> It is acceptable as it shows how it works only. Not a production code.

<comment><USER4> I have mixed feelings about this, but my gut reaction is that it's not acceptable. Mainly because inexperienced programmers tend to cobble together functional apps by leaning heavily on example code, and don't know that those examples have dangerous security issues.

<comment><USER5> Indeed. I've seen security advisories posted that hinge on people copying the "not for production" example code.

</comment></comment></comment></comment><comment><USER6> I wonder why coinbase and coinkite don't implement an API like this.

Kudos.

<comment><AUTHOR> I think it will become a reality once LTC is added to Gox.

<comment><USER7> Seems you could use APIs like this to make your own exchange.

</comment></comment></comment><comment><USER7> Use this to build Litecoin shopping carts. Pretty cool!

</comment><comment><USER8> can you post a php example with sanitized params? [https://github.com/earonesty/liteapi](https://github.com/earonesty/liteapi) ... easy enough to pull the change.

</comment><comment><USER9> great to see, digital currencies need each other.

who will step up next? Namecoin? Dogecoin?

<comment><USER10> Dogecoin already has Dogeapi.com and similar. And since DOGE is a fork of Litecoin, it should be trivial to use this code with DOGE if the authors wanted to.

</comment></comment><comment><USER11> something also being built presently at [http://addressmonitor.com/](http://addressmonitor.com/) but for multiple blockchains.</comment>


Why systems management isn't cloud computing - <AUTHOR> http://siliconangle.net/ver2/sabackchan/2009/10/15/why-virtual-data-centers-alone-arent-real-clouds/

<comment><USER2> Seems to me that @ruv's statement could be refuted by a quick scan of the Wikipedia article on cloud computing.</comment>


The Top 100 Java Libraries in 2018 – Based on 277,975 Source Files - <AUTHOR> https://blog.takipi.com/the-top-100-java-libraries-in-2018-based-on-277975-source-files/ <comment><USER2> Glad OverOps did this report again. It's always so interesting to find that tools I thought were old, outdated, and probably replaced by competitors are still going strong, like Jetty and Netty.</comment>


BitCasa Beta Live - Infinite Storage on your Desktop - <AUTHOR> http://www.bitcasa.com/

<comment><AUTHOR> They are positing invites on their facebook and twitter.

<https://www.facebook.com/Bitcasa> <https://twitter.com/#!/bitcasa>

I personally have 5 invites if you are really struggling...</comment>


Why Google Play Search Results Suck - <AUTHOR> http://blog.intuvio.com/?p=195

<comment><USER2> can't agree more, how can a search giant provide such irrelevant search results in its app search...</comment>


Amazon RDS now supports PostgreSQL 9.6.1 - <AUTHOR> https://www.postgresql.org/about/news/1717/ <comment><USER3> I'm fairly impressed by RDS's turn around time. 9.6 dropped in late September and they're already supporting it in just over a month. I wish Google Cloud SQL supported Postgres at all. Sad that there's limited competition in managed postgres space (most notable competitor being Heroku).

<comment><USER4> There are many options for hosted PostgreSQL.

See for example this staggering list of hosting providers in Europe: [https://www.postgresql.org/support/professional_hosting/euro...](https://www.postgresql.org/support/professional_hosting/europe/)

Yes, most of those are smaller companies. But some of these companies are directly involved in the development of PostgreSQL (just look at the PostgreSQL-hackers mailing list), so they should really know what they are doing!

<comment><USER5> Do people really talk to databases over WAN (which means relatively high latency)? I was under the impression this was a bad idea.

<comment><USER6> Many of the hosting providers provide PG as a service in multiple clouds / hosting providers allowing you to run your applications on your own VMs in the same cloud. So while you would be using the external IP addresses to communicate with the database it'd still be in the same datacenter.

Also, as pointed out in the parent post, some of the hosting providers such as us (Aiven, [https://aiven.io](https://aiven.io)) are directly involved in PostgreSQL development and one of the bugfixes in the latest releases (9.6.1 and 9.5.5) that just came out was contributed by us.

<comment><USER5> Running within the same cloud provider makes sense, I hadn't thought of that.

</comment></comment></comment></comment></comment><comment><USER7> And is it HIPAA certified yet? Because the lack of that is what made me spend a week porting a project to use RDS/MySQL just a little while ago. We've been told it's coming Real Soon Now since last year.

I wanted to use PostgreSQL for a whole host of reasons, but not so much that we wanted to certify our own instances.

<comment><USER8> Another option is to use Aptible: [https://www.aptible.com/](https://www.aptible.com/)

It's basically (a better) Heroku with an emphasis on enabling HIPAA/HITECH compliance. They do both app and DB hosting (including Postgres). And it's on AWS so integrates easily with existing infrastructure/code.

Disclaimer: Biased as I know the founders and we use the product. But they are good people and it's a good product!

<comment><USER9> But aptible doesn't have managed postgres. I still have to do all the work of setting up a database and managing backups, upgrades, etc. The only thing aptible brings to the table is single tenant hardware and encryption by default. I can just get that from Amazon. Am I missing something about aptible? I don't understand the attraction although it does look fancy

<comment><USER10> Aptible absolutely has managed postgres, and it's great. I'm using it at this very second.

<comment><USER9> Where can I find out more? All I see on their marketing site is "database containers" which I interpreted as little more than a container that happens to run a database, not as something that manages backups, point-in-time restoration, multi-az failover, upgrades, and all the other things that RDS has built in that many folks would otherwise prefer to have an (expensive) postgres specialist setup and manage for you.

<comment><USER11> Dang, sorry about that: [https://www.aptible.com/enclave/](https://www.aptible.com/enclave/)

That page needs some love, thank you for the solid comment. I think the features we list cover your comments, but let me know if you have specific questions or other features you'd like to see!

Source: am Aptible CEO

</comment></comment></comment></comment></comment></comment><comment><USER12> Does anyone else have abysmal IO performance on postgres RDS? I have a 200 gb provisioned ssd with 2000 iops and get abysmal bulk read performance - <USER2> panel will report 30 mb/s and query speed is really slow with disk being the bottleneck

<comment><USER13> IIRC there are various tricks you used to have to perform to get it to strip across different disks in the backend. Something along the lines of allocating 20% of your storage and then increasing it 5 times until you had what you wanted. If you provisioned a server immediately to full capacity you'd end up with your data too close together which degraded performance.

That's something I heard that used to be true but not sure whether it's still required with upgrades to S3 over the years...

<comment><USER14> Interesting, I've never heard of striping tricks like that. Do you have any links on that? And I suppose that could be applicable to EBS since it rather than S3 is the backing store for RDS.

<comment><USER13> Sorry I don't have links. But yes, I think it was primarily to improve the performance of EBS, not S3 (been a while since I had to work on that sort of thing).

</comment></comment></comment></comment><comment><USER15> Now they just need to support the Foreign Data Wrapper extension with egress connections. Really wish that was built in because FDW itself is amazing, and AWS RDS is easy to manage.

<comment><USER16> Agree 100%. Would be awesome if you could have RDS with FDW connected to a Redshift instance. (don't know if that's possible given the version of Postgres upon which Redshift is based)

<comment><USER17> It is definitely doable. You can refer to this blog post by AWS ([https://aws.amazon.com/blogs/big-data/join-amazon- redshift-a...](https://aws.amazon.com/blogs/big-data/join-amazon-redshift-and- amazon-rds-postgresql-with-dblink/)) to set up FDW to Redshift.

What is more exciting is you can leverage Redshift MPP architecture with this method.

</comment></comment></comment><comment><USER18> This happened a couple days ago, noticed when spinning up a new RDS instance.

I'm super excited about it. It's great to have more modern managed services on AWS especially since this brings Postgres out of the Stone Age. Lots of good JSON support added in 9.5 and 9.6.

Previously only 9.4 was available.

<comment><USER19> 9.5 was actually added to RDS back in April [0]. There was some serious bugs found that made them wait for 9.5.2 before adding it [1]. As a customer of RDS, I'm really happy that they're taking their time to thoroughly test the releases.

[0] [https://aws.amazon.com/about-aws/whats-new/2016/04/rds- postg...](https://aws.amazon.com/about-aws/whats-new/2016/04/rds- postgresql-9-5-support/) [1] [https://forums.aws.amazon.com/thread.jspa?threadID=240278](https://forums.aws.amazon.com/thread.jspa?threadID=240278)

<comment><USER18> Yeah they only added 9.5 a couple weeks ago, very recently.

<comment><USER20> That's simply not true. We've been running with Postgresql 9.5 since May.

Apparently it was added in April: [https://aws.amazon.com/about-aws/whats- new/2016/04/rds-postg...](https://aws.amazon.com/about-aws/whats- new/2016/04/rds-postgresql-9-5-support/)

<comment><USER21> I think he meant 9.6 which would make more sense.

</comment></comment></comment></comment></comment><comment><USER22> I upgraded - took <10mins and also upgraded instance types. One slow query (that parallelizes) is 3x faster with no SQL changes or new indices.

</comment><comment> enahs-sf On a slightly tangential topic, what is Amazon doing with aurora?

<comment><USER23> Aurora supports MySQL so far, heard lots of good things about it. Hopefully they'll put Postgres on it soon.

</comment></comment><comment><USER24> What's the performance of Amazon RDS like with Postgres? (Curious, never having used it).

<comment><USER25> For small to medium volume apps it's quite good. The security configuration out of the box is quite good. All standard options like changing pgsql port, opening it up to only your main dB instance is supported.

If needs once a week downtime for half an hour for patches. But if you use multi AZ deployment with 2 instances it does this without any actual downtime. Automatically manages the failover for you.

Provisioned IOPS are very expensive. For small loads use bigger general purposes SSD say 100 to 200gb and it works OK. The IOPS are burstable so it works out OK.

<comment><USER26> > If needs once a week downtime for half an hour for patches.

Half an hour downtime once a week? This sounds bad.

<comment><USER25> I checked the FAQ once again: [https://aws.amazon.com/rds/faqs/](https://aws.amazon.com/rds/faqs/)

Here are the exact words from Amazon:

> The Amazon RDS maintenance window is your opportunity to control when DB > Instance modifications (such as scaling DB Instance class) and software > patching occur, in the event they are requested or required. If a > maintenance event is scheduled for a given week, it will be initiated and > completed at some point during the maintenance window you identify. > Maintenance windows are 30 minutes in duration. The only maintenance events > that require Amazon RDS to take your DB Instance offline are scale compute > operations (which generally take only a few minutes from start-to-finish) or > required software patching. Required patching is automatically scheduled > only for patches that are security and durability related. Such patching > occurs infrequently (typically once every few months) and should seldom > require more than a fraction of your maintenance window. If you do not > specify a preferred weekly maintenance window when creating your DB > Instance, a 30 minute default value is assigned. If you wish to modify when > maintenance is performed on your behalf, you can do so by modifying your DB > Instance in the AWS Management Console, the ModifyDBInstance API or the > modify-db-instance command. Each of your DB Instances can have different > preferred maintenance windows, if you so choose.

Running your DB Instance as a Multi-AZ deployment can further reduce the impact of a maintenance event. Please refer to the Amazon RDS User Guide for more information on maintenance operations.

</comment></comment></comment></comment><comment><USER27> Out of interest, do Amazon send anything upstream to the pg team?

</comment><comment><USER28> How does this compare to Heroku PostgreSQL?

It seems to be that it's cheaper but it's hard to compare without knowing what the Heroku instances are.

</comment><comment><USER29> are there any other companies out there that provide hosting with multi- regional failovers? i love RDS and it's fine for mission critical stuffs but sometimes i just don't want to fork so much money on smaller projects and need an alternative.

</comment><comment><USER30> Anyone using Amazon RDS in production and satisfied?

</comment><comment><USER31> I wish Azure would launch hosted Postgres.

</comment><comment><USER32> Does this indicate if it will include a REST API to build some quick applications off of or is it easier to return a JSON from a query?

<comment><USER33> I dont think so but you might look at [https://www.postgresql.org/about/news/1616/https://www.postg...](https://www.postgresql.org/about/news/1616/https://www.postgresql.org/about/news/1616/)</comment></comment>


Apple doesn't want you weighing things with your iPhone just yet - V-2 http://www.theverge.com/2015/10/28/9625340/iphone-6s-gravity-app-digital-scales <comment> V-2 _" It could be that Apple [...] thinks such an app would be used for weighing drugs"_

I don't know who comes up with these ideas ;) Let's hope they don't figure out someone could use an iPhone to call a drug dealer.</comment>


Re-evaluation of the traditional diet-heart hypothesis - <AUTHOR> http://www.bmj.com/content/353/bmj.i1246 <comment><USER2> This is more confirmation that everything the American public has been told about diet and cholesterol for the past several decades has been seriously flawed. Is there any persuasive evidence that cholesterol-reducing diets or medication improves life expectancy? If not, why are > 100k Americans being prescribed drugs with serious side effects and no significant benefit? Isn't the first rule of medicine to do no harm?

Disclaimer: this is not my field of study.</comment>


Konva – HTML5 2d canvas library for desktop and mobile applications - <AUTHOR> https://konvajs.github.io/ <comment><USER2> We are using Konva for simple education games and the game editor at [https://learnplayground.com](https://learnplayground.com) and are mostly happy with it. It is easy to work with, the documentation is good, and so far supports all our use cases. The only drawback is some performance issues with animations on some browsers which we are not sure if we can fix by optimizing our code.

We have been using Konva for 2 years and would probably have chosen it again if we where going to start developing today

<comment><USER3> Do you also target mobile browsers by any chance and, if so, is the lib fast enough?

<comment><USER2> Yes, we target mobile browser and it works good in most. We did get a report that it is slow on Samsung browser for one user, but haven't looked more into it yet. It is also very slow on Firefox on Android, but according to some bug reports we found on Firefox it is because they have problems with performance on Android when using several layers of canvas. So as long as you don't care to much about the 0.5% who use Firefox on Android or don't need to use layers you should be good.

edit: you can go on [https://learnplayground.com/games](https://learnplayground.com/games) and try out free games if you want to test, but know that we are working on optimizing the game engine to work better on mobile so performance and scaling is not as good as it should be

<comment><USER3> Thanks, that's very good to know.

</comment></comment></comment></comment><comment><USER4> Been using this for a new project for a few months [0]. Cannot speak highly enough about it - Thank you Anton [1]!

[0] specifically the react package [https://github.com/lavrton/react- konva](https://github.com/lavrton/react-konva)

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

<comment><AUTHOR> Thank you!

<comment><USER5> You can probably have this changed to a Show HN: since you seem to be the author and are around to comment on it.

</comment></comment></comment><comment><USER6> I have used Phaser to make games using HTML5 + TypeScript. It was my first attempt of doing a browser game and I found it pretty decent to use.

[https://phaser.io](https://phaser.io)

I don't have the final build of the project I made with it publicly visible, but an older build:

[https://total-tetris.herokuapp.com](https://total-tetris.herokuapp.com)

Supports mobile (touch controls) and desktop (keyboard controls). Final version has Facebook leaderboards.

I had one or two issues with Phaser which I supplied fixes for which were merged.

If I made a similar project, I would check out latest alternatives but wouldn't hesitate to use Phaser again.

<comment><USER7> Man, very well done. That's the best html game I've played on mobile. Super addicting, and the radiators are an interesting twist! My strategy was to hold them until I get a heated floor.

</comment></comment><comment><USER8> It's worth mentioning that Konva began as a fork of KineticJS:

[https://github.com/ericdrowell/KineticJS/issues/1061](https://github.com/ericdrowell/KineticJS/issues/1061)

</comment><comment><USER9> I'm curious: How does this compare to something like Pixi?

</comment><comment><USER10> Cool! This is a superset of some things people misuse Literally Canvas[1] for. I look forward to pointing people toward it when they ask about these kinds of features.

[1][http://literallycanvas.com](http://literallycanvas.com)

</comment><comment><USER11> I like the fact that there are plenty of demos!

</comment><comment><USER12> This library is great, it's the basis of a mapping app (think D&D) some friends and I kickstarted[0] a while back.

I also posted some optimizations techniques[1] for this library to Stack Overflow.

[0] [http://coneofnegativeenergy.com/hexkit/](http://coneofnegativeenergy.com/hexkit/)

[1] [https://stackoverflow.com/questions/42729872/optimizing- konv...](https://stackoverflow.com/questions/42729872/optimizing-konva-js-for- many-images/42787941#42787941)

</comment><comment><USER13> Really great, thanks for the resource!

I've had ideas in the past for websites or projects where I would have wanted to use HTML5s canvas, but I haven't ever known where or how to get started. The demo here seemed very straightforward and easy to understand.

EDIT: Upon further consideration, this will actually be perfect for an upcoming project that I've been neglecting for a while due to not knowing how to do the drawing aspect. And it works with React

</comment><comment> wes-k Anyone able to compare this with [http://paperjs.org/](http://paperjs.org/)? In the past I've used Paper.js and have been very happy with it. It looks like Konva has a very similar set of features.

</comment><comment><USER14> I have used Konva to make a 2D map engine in my last job. It was a good dev experience.

</comment><comment><USER15> This is pretty neat, does anyone have any other similar or equivalent libraries to compare this against? It's always nice to see comparisons to gauge the value of a feature or system structure. Thanks!

<comment><USER16> Try [http://fabricjs.com/](http://fabricjs.com/)

</comment></comment><comment><USER17> Can anybody explain this: "High performance event detection via color map hashing"? Any resources that explain this concept?

<comment><AUTHOR> [https://blog.lavrton.com/hit-region-detection-for- html5-canv...](https://blog.lavrton.com/hit-region-detection-for-html5-canvas- and-how-to-listen-to-click-events-on-canvas-shapes-815034d7e9f8)

</comment></comment><comment><USER18> Wondering if Konva could be used for UI rendering (imagine flutter/Skia for web). And if it could be faster then DOM.

<comment><USER19> Flipboard did exactly this with react-canvas[0]. Runs nice enough even on older devices (try this[1]), but it completely decimates accessibility. Looks like there have been attempts with Konva too [2].

[0] [https://github.com/Flipboard/react- canvas](https://github.com/Flipboard/react-canvas) [1] [https://flipboard.com/@flipboard/flipboard- picks-8a1uu7ngz](https://flipboard.com/@flipboard/flipboard-picks-8a1uu7ngz) [2] [https://github.com/lavrton/react-konva](https://github.com/lavrton/react- konva)

</comment></comment><comment><USER20> The demo on the front page says "Try to drag a star", but when I do, nothing happens.

<comment><USER21> That's odd - works well for me on my laptop both click+drag and from the touch screen.

</comment></comment><comment><USER22> Nitpicking: The stars don't do anything when I click them. Only when I start to drag them do I get any kind of visual feedback that something happened (they scale up)

Not sure if that's intentional. I'm on Firefox.

</comment><comment><USER23> Can this be packaged as a single exe and can you make calls outside to like the file system or network?

<comment><USER24> This seems to be purely a visual library; I'm assuming it can be run on Electron or similar platforms, which do allow you to access the file system and network.</comment></comment>


Rootkit on a Brand new Toshiba laptop - <AUTHOR> http://blog.jitbit.com/2011/04/rootkit-on-brand-new-toshiba-laptop.html <comment><USER2> In a defense of Absolute software - I met with them few years ago and they are a fairly large and very technical company, not a bunch of hacks. Their CTO is a guy who wrote QEMM [1] back in 80-90s. Younglings may not know what this is, but it was one of the most impressive and useful bits of software to ever hit MS-DOS.

With regards to the CompuTrace - it _is_ their primary product and it has been in the development for quite a while. From what I remember they have went to great pains to _standardize_ the placement of the tracing software on bootable disks, i.e. create an open standard through RFC process with disk/OS vendors and what not. As I said they are not some random hacks, and they fully understand the importance of being open and transparent.

In other words, if you want to point a finger here, point it at Toshiba that failed to disclose the placement of ComputTrace on their laptops. Also understand that the software is designed to be hard to detect as its primary usage is tracking, recovery and remote wipe of stolen laptops, hence it being very similar to a rootkit.

[1] <http://en.wikipedia.org/wiki/QEMM>

<comment><USER3> I think the point here is that the computer was recording and transmitting information about him and his wife without either of their knowledge or consent. If he had wanted LoJack for his laptop, he could have signed up for one of the services that offers it. Once again, hardware manufacturers seem to think they still own the device once you've bought it.

<comment><USER4> To be fair to Absolute and Toshiba, there are advantages to this sort of tracking/anti-theft software being integrated by the manufacturer. Building it into the BIOS, though scary and rootkit-like, gives the software persistence across re-installs of Windows, a feature I doubt the standalone competitors boast. If I was a laptop thief, the first thing I'd do would be to image then wipe the drive.

But yes, consent is a must. Absolute and Toshiba should have avoided this issue by adding a clear, detailed notice/consent screen on the first boot.

<comment><USER5> It's not even consent. Toshiba should be listing this "feature" as a security feature, letting potential buyers know that there is non-removable software that allows this laptop to be tracked in event of theft. Marketing this has the potential to turn it around from "Toshiba plants rootkits" to "Toshiba has some of the best anti-theft protection"

I don't see this listed in the official specifications, so if it were me that found it, on a laptop that doesn't say it has it, I would also agree that this is malware.

[http://us.toshiba.com/computers/laptops/satellite/T100/T135-...](http://us.toshiba.com/computers/laptops/satellite/T100/T135-S1309)

</comment></comment></comment></comment><comment><USER6> How has Absolute ensured that other malware authors won't be able to piggyback off their system?

Can my malware add a hosts file entry and cause this data to be sent to my servers instead? Could I replace the Absolute software with a botnet node and still use their nigh-irremovable persistence mechanism?

Selling laptops with a pre-installed surveillance framework, however well you meant, is not acceptable. Your software's security is likely no stronger than that of the software you exploit.

Should non-technical buyers of electronic devices simply expect to be subject to malicious behavior?

<comment><USER7> This is an especially important point and should be at the top of this page. Makes me miss the karma indicators...

The problem with arbitrary surveillance isn't just that it's icky, unfair and (hopefully) illegal. It's that it is easily used by criminals.

</comment></comment><comment><USER8> This is fucking outrageous. Imagine what would have ensued if new cars were equipped with concealed GPS tracker, which sends location info to some unknown place, along with pictures taken by hidden camera, without any clue given to owners.

I do not give a shit if it actually helps one to recover a stolen laptop, when I am not even told about this, let alone given the possibility to opt out.

<comment><USER9> I think you haven't heard of OnStar, have you?

<comment><USER10> But it's pretty obvious that your car is equipped with OnStar. Plus, you have to pay for that service.

</comment></comment></comment><comment><USER11> The funny thing is that if I point a video camera at a police officer in a public space, I'll get charged with 'illegal wiretapping,' but if Toshiba implants a spying device without user knowledge/consent will _they_ get charged with illegal wiretapping? Doubtful. Even though they are 'spying' on customers behind their backs, it will get less punishment than openly filming a police officer in a public space.

<comment><USER12> You're a private person, Toshiba is a multinational corporation.

<comment><USER11> Diffusion of responsibility at its finest. As a private individual, I get crushed under the wheels of the system, while Toshiba gets to ride in the backseat.

</comment></comment></comment><comment><USER13> Previous discussion (including a few Blackhat links, though I haven't looked at those).

<http://news.ycombinator.com/item?id=2018703>

<comment><USER14> That page has been removed from Absolute's website; cache here: [http://webcache.googleusercontent.com/search?q=cache:vb0e0b5...](http://webcache.googleusercontent.com/search?q=cache:vb0e0b5bfAkJ:www.absolute.com/products/bios- compatibility+absolute+software+bios&cd=1&hl=en&ct=clnk&gl=us&source=www.google.com)

edit: Or Absolute updated their site map; list here: <http://www.absolute.com/en/partners/bios-compatibility.aspx>

</comment></comment><comment><USER15> It is possible, though not the easiest thing in the world, to rebuild your bios while removing the lojack option rom.

<http://www.freakyacres.com/remove_computrace_lojack>

This article gives an overview, there may be better sources or you could refer to forums people use for bios modification of SLIC tables to get a better introduction to the tools.

</comment><comment><USER16> An incentive to support coreboot/openbios?

</comment><comment><USER17> The Toshiba Satellite sitting beside me is running slackware like a champ. Problem solved ;-)

</comment><comment><USER18> The T135 is a pretty old laptop which explains why it was present after vendors stopped using it - I bought one around January or February last year, it doesn't seem to have the rootkit but it's a Latin American model which might have been exempt.

</comment><comment><USER19> The fault lies with Toshiba. I have a Dell Studio laptop and CompuTrace is an option in the BIOS - once enabled, it can't be disabled (I haven't actually tried wiping the EEPROM) but it's an option nonetheless.

<comment><USER20> This reflects badly on CompuTrace and they could certainly have taken steps to ensure that Toshiba's use of their tools didn't affect their business prospects. That they have a "Hey, do what you want with it. We don't care." approach to sales makes me wonder who else is buying from them. As above it appears IBM is on the list as well (unverified).

</comment></comment><comment><USER21> i understand the frustration, but how else would a laptop tracking software work if not by connecting to the web and listening for commands, etc? It seems that this app is created by: <http://www.absolute.com/en-GB/>

<comment><AUTHOR> Yeah, correct. But what if some Absolute's employee turns out to be dishonest? A non-removable process, not detected by most antiviruses, that listens to the commands from the Net... Seems like a botnet to me.

<comment><USER22> When we asked this question in the context of the laptops at the big enterprise that I worked for, the response from Absolute was "most of our employees are ex-cops, so that isn't a problem".

<comment><USER23> Wow. Even setting aside the question of whether all cops are trustworthy, one does wonder why they are "ex" cops.

</comment></comment></comment></comment><comment><USER24> Found Computrace in my ThinkPad X201's BIOS. However, there's an option to permanently disable it.

</comment><comment><USER25> Blogpost says it actually isn't a "brand new" laptop and Toshiba has since removed the crapware.

<comment><USER26> Where does it say that?

By the way, I purchased a Toshiba T135 last year from Amazon and updated the BIOS several times. I can't find any trace of the CompuTrace backdoor, but I must say that my trust in Toshiba, DELL, and other laptop manufacturers has been severely shaken. This is infuriating.

</comment></comment><comment><USER27> Picking nits here, but this is a trojan (if that, really), not a rootkit, no?

</comment><comment><USER28> I think this adds to the advantages of using linux and scrapping windows,after all with the security features of linux nothing like this would have happened.

</comment><comment><USER29> [http://forums.mydigitallife.info/archive/index.php/t-9213.ht...](http://forums.mydigitallife.info/archive/index.php/t-9213.html)

448675 2011-05-01 Dell.Service.Tag.Editor.iso.rar initial scan seems ok on opensuse LINUX. <http://www.coreboot.org/SeaBIOS>

backup BIOS first

call warantee service. IE is frozen with 100% cpu. install anti-virus?? then get rid of the compu ERASE or lojack problem - then, go to warantteee.

do it at the beginning before your important pictures are on the computer and been sent to outsource india for compu ERASE

</comment><comment><USER30> How do I check this on my laptop?

<comment><USER31> Check your process list for 'rcpnetp.exe'. Just checked my six month old Toshiba Satellite Pro C650, happily it was clean.

<comment><USER32> I see related Google results for 'rpcnet.exe'. Not sure if they are related yet (spelling error?).

Also, I wonder how quickly they could rename the executable to deter removal, given the nature of their 'Persistence Module' and antivirus industry cooperation.

<comment><USER33> rpcnet.exe seems to be essentially same thing as rpcnetp.exe, only without the BIOS persistence hack.

</comment></comment></comment></comment><comment><USER34> Isn't this "unauthorized access to computer systems[1]"?

When buying a laptop on Amazon, is there some sort of agreement/contract between the buyer and the "security" firm where one signs his privacy away?

Especially the screenshot taking would be a concern to me. What if you were working on secret company files while screens are being taken?

[1] <http://www.ncsl.org/default.aspx?tabid=13494>

<comment><USER35> I'm sure they've got it in the fine print somewhere. The (commercial) tracking software almost certainly has an EULA, which I'm sure buyers are required to agree to.

</comment></comment><comment><USER36> You can ask Absolute to remove it: [http://www.ehow.com/how_7683954_disable- computrace-laptop-bi...](http://www.ehow.com/how_7683954_disable-computrace- laptop-bios-toshiba.html)

So, aside from not being informed about it, this isn't a big deal.

<comment><USER37> Personally, I wouldn't trust them to not break things myself. I know they may not be "amateurs" at low level things like they do to make this happen, but I still wouldn't trust it. This is why my suggestion would be to use some kind of disk/filesystem encryption. TrueCrypt should be able to defeat them putting it back on and allow you to restore (from a clean copy) the original files and get your CHKDSK back.

On another note, I don't think I'd have ever noticed this myself, every laptop I've had I end up installing Linux on because of all the crapware that gets included with the OS in the first place.</comment></comment>


Pidgin working on implementation of Facebook Messenger protocol - <AUTHOR> https://hg.pidgin.im/soc/2015/jgeboski/facebook/ <comment><USER2> Pidgin will probably struggle with this because Fb Messenger is quite a moving target. You can currently send audio, video, photos, stickers, and payments. Also it supports audio and video calls. Not to mention messenger platform which enables developers to build just about anything else.

Plus, the dynamics around group chats are tricky. Messenger shows when people are typing and what point everybody has read up until. You can rename group messages, leave them, add people, mute/disable notifications, or mute for a period of time.

Without good compatibility or fallbacks for all of this behavior, Pidgin users are in for a bad time. Most will probably go back in frustration and pin messenger.com in a browser tab.

<comment><USER3> Except that even with a limited feature set, Pidgin has one advantage: it integrates with a lot of networks. It's the same with IRC: Pidgin's IRC support is mediocre compared to real clients like XChat but I still used it. I'd only have to launch Pidgin to log into multiple IRC networks, MSN, two Google Talk accounts and Facebook. It has a single logging mechanism, single interface, it's not a website, there are no ads and I can install/update it using apt-get.

It would be nice if Pidgin would build in all the features you mentioned, but I'd be perfectly happy if it just connected to my chats and allowed me to send and receive text messages. Typing notifications would be nice-to-have, but this is all I ever use anyway. Not such a bad time for me.

<comment><USER2> Agreed, connecting to other networks is huge. But the other features might be more important to others. Personally, I would rather use multiple clients than entirely miss the stickers, photos, payments, and group chats that get sent my way.

That said- I'm sure pidgin can go a long way by implementing sane fallbacks for these features.

</comment></comment></comment><comment><USER4> This really ought to be the other way around. If Facebook wants to be accessed by popular client software, then it should expose its service using standard protocols. So Facebook pulls XMPP and the community reacts by rewarding them with a custom integration? How are we supposed to get ahead here?

I know Pidgin is a pragmatic project, not a political one, but this doesn't sit well.

<comment><USER5> Have you _seen_ XMPP? Chat is so much more than just text now; it's "voicemail", and "photos", and "videos", and "stickers", and "Western Union" and "voice calls" and "video calls" and so much more. Plus, XMPP, is, like, XML.

Open protocols and federation are cool and all, but XMPP is not the protocol that will let someone be competitive in this space.

(Disclaimer: I work at Google. This is my opinion. I do not work on Hangouts.)

<comment><USER6> Why do I feel that "be competitive" is a euphemism for "nailgun users feet to the ground by locking them into everything possible"?

I'll be honest with you my friend. I would prefer to physically mail people coins then use facebook/google/apple pay. As much as I distrust banks, they at least have a record of letting me move to a competitor if I ask.

<comment><USER7> > Why do I feel that "be competitive" is a euphemism for "nailgun users feet > to the ground by locking them into everything possible"?

Then create an open protocol that supports what the users want

<comment><USER8> Users want Snapchat using the Snapchat client without having to maintain a second account or re-find all their friends. Same with Facebook, Hangouts, Skype, etc. the ship for federation sailed when all the big players decided to kill XMPP and not try a new open standard.

</comment></comment></comment></comment></comment><comment><USER9> I implemented a part of a similar Facebook HTTP-based chat protocol in 2009. May be the same one?

I had started in 2001 a KDE multi-protocol messenger client called Kopete. I went inactive later but in 2009 I was using Facebook a lot so I "revived" my Kopete checkout to implement this custom protocol. I got the basics working: send messages and presence.

[https://github.com/dmacvicar/kopete- facebook](https://github.com/dmacvicar/kopete-facebook)

Ironically, I stopped because they added XMPP support and Kopete already supported XMPP.

I now realize they deprecated XMPP it in early 2014, which is probably the reason Pidgin is now implementing the HTTP protocol I was looking at in 2009.

<comment><USER10> I used to use Kopete back in the KDE 3 days often. Thanks for your work!

Now, I don't really use IM like I used to. Back then (middle and high school), mainly with AIM and MSN, I'd spend hours on IM each day. Now it's an occasional Google Talk or Facebook message and using HipChat with my work team. A different world I guess.

I actually recently installed Trinity DE (continuation of KDE 3.5) just for fun and old times sake. One of the first things I did was install Kopete. I tried logging into AIM, but found only one person I barely ever knew online, with hundreds offline.

<comment><USER9> Thanks!. Most of the work, like in lot of opensource projects, was the product of a big team of great people, from which I learned a lot and I owe them a big part of shaping my career.

Completely different world!. Instant Messaging is now done in big part from the smartphone, or from a webpage while visiting a social network or checking email.

</comment></comment></comment><comment><USER11> Lovely, C at its best.

[https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/510e0ad7...](https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/510e0ad7dfea)

<comment><USER12> Explain? I'm not sure whats so bad about that.

<comment><USER11> Commit comment "facebook: prevent potential memory leak "

</comment></comment></comment><comment><USER13> Nice to see this, hopefully we'll get some more involved features like notification support and group chat. Still sad that Facebook never utilized XMPP chat to its fullest.

</comment><comment><USER14> Trillian still works with Facebook chat: [http://www.trillian.im/](http://www.trillian.im/) They wrote a little eulogy when imo dropped 3rd-party chat support, I'm sure they'd be happy to see Pidgin add FB support! [http://blog.trillian.im/?p=2902](http://blog.trillian.im/?p=2902)

</comment><comment><USER15> I don't know how or why, but on my workstation at my job, Pidgin still always connects with Facebook, and I still use it every day to chat with people. But at home, on my own laptop, I get an error 500.

I don't get how it's possible that it still works here. Only difference is that my workstation runs Linux and my laptop runs Windows.

<comment><USER16> > Only difference is that my workstation runs Linux and my laptop runs Windows

Pretty big difference, no?

<comment><USER17> Shouldn't be, in theory.

</comment></comment></comment><comment><USER18> Wonder how long it will take before Facebook attempts to shut this down.

</comment><comment><USER19> That's as long as facebook keeps their protocol open... which can change at a moments notice. I'll keep on using regular old facebook messages, SMS, e-mail, and textsecure.

</comment><comment><USER20> I've had facebook connected to pidgin for years now. What is the difference between this and what I already have?

<comment><USER21> They recently deprecated their chat API (which used to be XMPP)

</comment></comment><comment><USER22> Great. And they could also implement master password, that would be also great.

<comment><USER23> Pidgin supports several keyrings, and they, in turn, support master passwords.</comment></comment>


Coronavirus-tracker-CLI: Track conronavirus cases from command line - <AUTHOR> https://github.com/sagarkarira/coronavirus-tracker-cli <comment><USER2> The README needs to explain if the data is coming from the CDC or some other source. We all know how unreliable this data can be, especially in the USA where testing is woefully inadequate.

<comment><USER3> Seems like data provider is John Hopkins University

[https://github.com/ExpDev07/coronavirus-tracker- api/blob/370...](https://github.com/ExpDev07/coronavirus-tracker- api/blob/370772c79e6bb9d0b68eaf41c6feac828c2bae88/app/services/location/jhu.py#L28)

I followed the breadcrums from here btw:

[https://github.com/sagarkarira/coronavirus-tracker- cli/blob/...](https://github.com/sagarkarira/coronavirus-tracker- cli/blob/44ae662113aa0293015ed3a3ec636c466b93d3a1/lib/api.js#L11)</comment></comment>