The Triumph and Failure of John Nash's Game Theory - <AUTHOR> http://www.newyorker.com/news/john-cassidy/the-triumph-and-failure-of-john-nashs-game-theory <comment><USER2> _" But one thing led to another, and it was [Nash], rather than von Neumann, who ended up as an intellectual celebrity, the subject of a Hollywood movie."_

Hollywood schmollywood.

From _The Dream Machine_ , Waldrop's account of the history of computing:

 _" Von Neumann! Goldstine was awestruck [. . .] he already knew the legends. At age forty, John Von Neumann held a place in mathematics that could be compared only to that of Albert Einstein in physics. In the single year of 1927, for example, while still a mere instructor at the University of Berlin, von Neumann had put the newly emerging theory of quantum mechanics on a rigorous mathematical footing; established new links between formal logical systems and the foundations of mathematics; and created a whole new branch of mathematics known as game theory"_

[edit: still liked the article]

<comment><USER3> That Waldrop book looks interesting...with a 5-star Amazon review from Leo Beranek.

Yeah, Von Neumann is not exactly unappreciated, "Von Neumann machine," etc.

Pretty good article, he says Nash equilibrium is hard to calculate, not really true, it's one of those things we do automatically, soccer players do it in picking how to shoot penalties, pigs have been found to do it, it's not like you have to think to drive on the right side of the road.

If it's a game you haven't seen before you might not get it right the first time, but if you look at what other players do and can figure out best response, people figure it out and converge to a Nash equilibrium pretty quickly.

It's one of those things that seems pretty simple and it takes a scientist to formalize it.

What's harder is living your life so you create positive-sum games, but that's another story.

<comment><USER3> Also ... another good article on Nash's contribution -

[http://www.voxeu.org/article/economics-john- nash](http://www.voxeu.org/article/economics-john-nash)

</comment></comment></comment><comment><USER4> A popular article that does a good job on a technical subject -- that's rare, but the author pulled it off.

In the late 1970s, I decided to move from mathematics to business and/or public policy. So I wrote a thesis in game theory, extending von Neumann's MinMax Theorem, about a year after learning what the MinMax Theorem even was. So it's safe to say the mathematics of game theory was a bit thin back in those days, and I haven't heard of great progress in the intervening decades either.

As for applicability -- once again, the author got it right.

<comment><USER5> If there's one source of reading material I'd ever recommend whole heartedly it is certainly the New Yorker. Their articles are in depth, well researched, and engaging.

I'm very happy my parents were subscribers and belive the avoricious devouring of each weekly issue helped me develop a rounded and intelligent world view.

Now I'm a happy subscriber myself!

<comment><USER6> And it has good cartoons as well.

</comment></comment></comment><comment><USER7> > Nash, and the many economists who have followed in his footsteps over the > past sixty-five years, can't necessarily provide an answer.

> This is just one of the drawbacks of Nash's approach. Another problem is > that game theory is mentally taxing.

I find those depictions a bit skewed. Nash equilibrium is kind of like Thermodynamic Equilibrium, and that's fine. Why does it have to be a one-stop- solve-all?

Mentally tasking: so what? That's just what assuming that people are superrational means. You must expect assumptions to be made when people behaviour is being studied. I would think "Behavioural Economics" must do some complexity theory pushed down there to see how decisions vs. optimality decision making would interact and finally crack the whole cognitive-economy.

They do give lip service to the fact that an economic theory could not possibly predict the future exactly, but that's not even the point. Economic theory contributions must be valued in more than one way, and it is my impression that Nash equilibrium is specifically about stable-points in a field of possible transitions.

<comment><USER8> One big problem is often _which_ Nash Equilibrium you should go for.

I am not sure there is an equivalent Thermodynamic problem.

</comment></comment><comment><USER9> Very nice article. It gives a good summary of the insights gained by Nash Equilibrium, and the limitations of the concept.

In Economics, it is typical to search for stricter conditions for equilibrium than Nash equilibrium, which avoid the issues of non-uniqueness and other issues. For example, when designing an auction, one might look for an auction with a "dominant strategy equilibrium". In such an equilibrium, there is a best strategy for a given player _no matter what the other players do_. E.g. in a second price auction, you should always bet your true valuation of the object, no matter what the strategies of the other players are.

</comment><comment><USER10> this is a better (written by Myerson, a Nobel laureate), more precise, still fruitfully intuitive picture of Nash equilibrium putting in perspective of economic history.

a good remark of Myerson: non cooperative game theory can roughly be define as a practical calculus of incentives, which came into existence all because of Nash.

[http://www.uib.cat/depart/deeweb/pdi/hdeelbm0/arxius_decisio...](http://www.uib.cat/depart/deeweb/pdi/hdeelbm0/arxius_decisions_and_games/myerson.pdf)

<comment><USER10> I post here my 2 cent summary about game theory, if someone needs reference, i can post later:

In noncooperative game theory, a player is supposed to be rational and intelligent. Being rational at least means that player doesn't use a dominated strategy (like in one-shot PD, cooperation is dominated by defection). Being intelligent means that player can bet in the rationality of opponents (which means one knows that the other will not play a dominated strategy ~ cooperation).

-> Just these two conditions can solve the Prisoner's Dilemma. However, in other games, after iterating away all the dominated strategies, player needs a stronger notion of rationality: player maximizes expected utility given accurate prediction about opponent's strategy. As before, with the intelligent assumption standing, both players' keen consistency in their action will lead to Nash equilibrium (NE).

NE is a broad and fundamental concept. It's broad because it bases only on belief, not necessarily on what's real. Given the convergence of action and belief in equilibrium, what wasn't justified before will become justified. However, too broad is also its inherent issue because game theory loses its predictive power in many games by dictating too many possible Nash equilibria. Speaking of that, this concept is still so fundamental that it becomes the unit test for any kind of stricter equilibrium concept that one would like to build.

-> Many giants have tried to make major refinements built on top of NE. But along this literature, the further they go, the heavier the burden of rationality assumptions on modelling decision makers becomes. Player has to bear an exhaustive rationality in analysing the game in all the nodes that may never happen, or in face of background noise, or in thinking from future back to present.. Even making mistake needs to be justified. That requires ability to do complex optimization and infinite recursive thinking of common knowledge. So they say, what is the point of a theory starting with assumptions about players that are not even close to the statistically real truth? And if the collective reality doesn't matter, what matters?

-> Until now the narrative has substantially shifted from these ideal players to less demanding subjects. Just as applied economics of behavioral, experimental, neuro-economics trying to figure out a reasonable approach to modelling decision makers by adding cognitive and psychological knowledge, theorists bring evolution into game theory. Starting from an amusing observation that nature doesn't assume any rationality of its creatures but its solution many times becomes our definition of perfect, evolutionary game theory (EGT) offers a less pervasive way of thinking into games by replacing strict assumptions by adaptive learning and letting the itera- tive selection process do its job. Surprisingly, sometimes it gives us the perfect equilibrium just like in the classical regime.

</comment></comment><comment><USER11> Is The New Yorker unreadable for anyone else? Keeps jumping me to the start of the page.

<comment><USER12> It does the same thing for me. I actually went looking to see if I had some sort of crazy malware messing with my browser after opening it...</comment></comment>


Brexit will make things worse. Is that why people voted for it? - <AUTHOR> https://www.washingtonpost.com/posteverything/wp/2016/07/01/how-despair-made-voters-opt-for-brexit-even-if-they-didnt-think-it-would-help/ <comment><USER2> The article seems to only look at the economic picture. Also remember that the money Wales retrieves from the EU is contribution payed to the EU by the GB government. After all, GB, like many other North-European countries, was a net contributor to the EU.

Apparently the value of sovereignty is completely out of scope in this article.

I think GB made the right choice in the end. Just last week the Dutch parliament voted to allow the pension funds (the biggest of Europe) to move to other countries, with less strict regulation. Even though all major parties that voted for this deal state in their party programs that they would not allow this to happen. Some suspect in the future this money will be used for bailouts through legislation (e.g. EU regulation could require pension funds to spend a certain percentage on bad bonds from countries like Italy [0]).

\---

[0]: [http://www.wsj.com/articles/bad-debt-piled-in-italian- banks-...](http://www.wsj.com/articles/bad-debt-piled-in-italian-banks-looms- as-next-crisis-1467671900)

</comment><comment><USER3> This makes the second or third piece I've read this week to suggest that the populism we're seeing behind Brexit and the Trump phenomenon is at some level motivated by a desire to actually cause the harm seems so obvious to experts and the chattering classes. Mind you this guy added a new twist that this destructive intent might not have been a conscious.

Just to spell it out, this articles answer to the question posited in it's title is that maybe Brexit was an unconscious act of economic sabotage.

Seriously? Is that where we're at?

If people want to make sense of the populism surrounding Brexit or Trump, the first step is to stop making up bullshit and accept these many voters and activists are sincere, genuine and motivated by the hope of something better.

I think the reason that people don't get this, is because they inhabit an intellectual and an informational world where all those harms mentioned in the article are just freaking obvious.

So, in the UK, the US, and even in Australia we're witnessing these populisms that invite the connections everyone is making, they express the same fears, the same distrust of institutions and expertise, they share the same race- inflected dimension, and belief that Islam is a threat. They even share the same climate denialism, which is curious.

Now, while it may not sound as creative or cool as the masses unconsciously taking down the system. But it's worth mentioning that in Australia, the UK and in the US, our news media is characterised by the dominating reach and profound influence of News Limited / Fox News. Being the news outlet who's reputation is synonymous with its message on those same very fears and issues.

But that's just a coincidence right? No, we don't talk about that. It's not like a divorce between democracy and science, expertise and truth is something we should be worried about.

Yeah, my bad. Brexit was totally an act of unconsciously self-destructive class warfare, that makes much more sense for us to be talking about. That's some next level jungian collective unconscious shit right there.</comment>


Facebook employees speak out on political ads - <AUTHOR> https://www.nytimes.com/2019/10/28/technology/facebook-mark-zuckerberg-letter.html <comment><AUTHOR> There's simply no reason why Facebook, Twitter, or any other social media company needs to be involved in the business of political campaigns. They're completely free to decline such business and refuse to run political advertisements. It's not like they'd lose much: the income they earn from political ads is a drop in the bucket, proportionally speaking.

Given the intense amount of scrutiny they're under, and their apparent inability to make clear, consistent, and sensible rules regarding their content, perhaps it would be better for them to just get out of the business altogether.

<comment><USER3> Are they? In the US radio and TV cannot refuse such ads. I'm not sure how/if this regulation applies to Facebook (radio/tv get there because as a limited space part of their license says that have to support them), but Facebook is too big to try to thumb its nose at politicians like that. There are many ways politics can make life hard for Facebook while staying in the letter of the constitution.

Facebook when it was 100 friends from Harvard could ignore politics. Facebook with millions of users cannot.

<comment><AUTHOR> > I'm not sure how/if this regulation applies to Facebook

It doesn't.

> Facebook is too big to try to thumb its nose at politicians like that.

I don't really see it as "thumbing its nose." Politicians and their backers would still be free to post whatever they want. But they wouldn't be able to use a paid advertisement to force their (potentially false) messages into people's News Feeds.

</comment></comment></comment><comment><USER4> It's not clear to me that one could always decide what constitutes a political ad in the first place. Sure, there is the obvious, vote for candidate X.

But what about issue advocacy ads? Are ads from an industry advocate group political? Say it was funded by the Koch brothers defending fossil fuels? Or what about an ad from the Southern Poverty Law Center to fight for disenfranchised voters? Or what about an anti-vax group looking to mobilize their base?

I don't see how its that clear cut.

<comment><AUTHOR> Why does it have to be clear cut? Why not bias on the side of denial? Facebook doesn't have to be a platform for paid political speech.

<comment><USER4> So if planned parenthood runs an ad inviting people to join their network of supporters to protest in support of a right to abortion - would that be paid political speech in your eyes? How about if the Catholic Church runs an ad for a pro-life YouTube channel?

It's easy to say things like "not be a platform for paid political speech". I'm sure you have a clear cut line in your head and it makes sense to you. But to expect a large corporation - or some thoughtful government committee - <USER2> draw that line with any consistency or articulable principle seems incredibly naive.

<comment><AUTHOR> (Yes to both examples.)

As I've said elsewhere, we can't let the perfect be the enemy of the good. The decision matrix doesn't need to be perfectly consistent or articulable. (As Justice Stewart once said of pornography, "I know it when I see it.") Biasing towards denial will help make Facebook a much more peaceful place.

Besides, as I've said elsewhere, this is about paid distribution, not banning from Facebook. People and organizations should remain free to do and say whatever they like in their own groups and pages, and members or individuals should remain free to share these messages if they like. But that's a different thing from forcing a message into someone's feed.

</comment></comment></comment></comment><comment><USER5> Maybe the government needs to A. bring back the fairness doctrine. B. Update it for ads/propaganda/social media.

Say for instance they created an agency that basically monitors/fact checks news and advertisements.

Or it could just be political ads. I think the government should enforce honesty in political ads, I mean allowing lying in political ads seems to say corruption is allowed. As lying = corruption.

Or no agency and just severe consequences/litigation for publishing/republishing 'fake news' without some sort of byline saying 'this is fake news', and dishonest political ads could also be sued against.

I mean as litigious as we are there's a gold mine for the legal industry here.

</comment><comment><USER6> They don't want to exercise editorial control of their ads because "fact checking" crosses the chasm of media company vs not-a-media company.

They super duper don't want to be called a media company.

They're simply a publisher. ;)

<comment><AUTHOR> As far as I'm aware, no such legal distinction exists. I'm not sure where you got this idea from.

</comment></comment><comment><USER7> I wish there was a way to opt out of political ads on social media

<comment><USER8> There is a really good way!

Opt out of social media that shows stuff you don't want to see.

<comment><USER9> Facebook has major platform lock-in for me, though, since that's where all my friends are. The proper solution is to vote with your ad-blocker.

<comment><USER10> How is Facebooks ad pricing structured? Do people pay Facebook on the amount of users Facebook claims it will reach or by actually views counted by whether or not it loaded or was clicked?

It seems possible that Facebook could charge people claiming it will reach 10 million users even if every single one of those people ends up blocking it.

</comment></comment></comment></comment><comment><USER11> Why Facebook employees are not worried of they customers privacy..? This fake worry talk is weird to me.

</comment><comment><USER12> Anyone have a link to the letter that isn't behind a paywall?</comment>


Neat Chart: Employee defections to and from top tech companies - <AUTHOR> http://www.ritholtz.com/blog/2011/10/the-biggest-talent-losers-and-winners/

<comment><USER2> I really wish this inforgraphic used arrow widths proportional to the ratio sizes. It's very hard to extract the data from a passing glance at the graphic; instead, we have to painstakingly read every single ratio written on the arrows. We have no idea which arrow is in fact the largest.

Disappointing.

(I guess Tufte has taught be a lot already)

<comment><AUTHOR> That's a good idea.

I was using the colors for that purpose (e.g., it's overwhelmingly blue, meaning there's an overall flux into facebook), although as I understand it colors are not great for conveying information.

<comment><USER2> Ah I didn't realize you had made the graphic. I hope I did not come across too disparagingly.

</comment></comment></comment><comment><AUTHOR> Apologies for changing the title; from my stint in finance I have an aversion to the word "talent" as a synonym for "employee".

</comment><comment><USER3> In the steady-state, almost everyone will be working at Facebook ;-)</comment>


Storing Drinking-Water in Copper Pots Kills Contaminating Bacteria (2012) - <AUTHOR> https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3312355/ <comment><USER2> Using copper vessels to store water for drinking is somewhat common in parts of India. Seen it in Maharashtra.

Lead vessels were traditionally used (and may still be) to make certain dishes (like rasam, a watery lentil-based sour soup) in South India. No idea about any benefits or the reverse.

Update: Also, I've seen relatives of the previous generation to mine (in India), sometimes eating from silver plates. Not sure, but I think that may have been for some supposed health reason too (seeing sibling comment about silver reminded me of it).

<comment><USER3> Just as a PSA, lead in any quantity is toxic and particularly so for children. Copper, silver, and gold are in the same family of elements (group 11) and lead is in the carbon family. Very different characteristics.

edit: I should also note (since bringing up families of elements) that - supporting your anecdote - silver has known and studied antimicrobial properties ([https://www.ncbi.nlm.nih.gov/pubmed/16766878](https://www.ncbi.nlm.nih.gov/pubmed/16766878)). Sadly it has been coopted by quacks, so there's also a lot of misinformation out there about it, too.

<comment><USER2> Thanks for the info. Yes, I've read about leaded petrol and its effects on the brain, more so in children. I even read somewhere a while ago (maybe on HN) that crime had come down somewhat over some decades (in the US?), which was partly attributed (in the article I read) to reduced use of leaded petrol (gasoline).

Interesting about the silver study, and agree about quacks.

<comment><USER4> Interestingly, the guy (Thomas Midgley) who thought to add lead to petrol is the same guy who thought of using CFCs for refrigerants.

<comment><USER5> Wow, what a tragic guy:

"J. R. McNeill, an environmental historian, opined that Midgley "had more impact on the atmosphere than any other single organism in Earth's history."

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

</comment></comment></comment></comment></comment><comment><USER6> I will just leave it here in case someone will want to employ copper pots: [https://www.ncbi.nlm.nih.gov/pubmed/10383875](https://www.ncbi.nlm.nih.gov/pubmed/10383875)

<comment><USER7> "Copper content (177±16 ppb) in water stored in copper pots was well within the permissible limits of the World Health Organization. Copper holds promise as a point-of-use solution for microbial purification of drinking-water, especially in developing countries."

<comment><USER8> Yeah but they didn't test waters of different ph levels. I'm not sure if that would be an issue though.

<comment><USER9> It could be an exponential curve and also be influenced by other ions in the water.

</comment></comment></comment></comment><comment><USER10> Silver is also known to have antibacterial/antimicrobial properties and is used both as a coating on handles, surfaces to prevent bacterial buildup and also in typical creams as an antibacterial option (however, I do believe a recent study showed it to be no better than a control when applied topically to burns, which is/was one of its primary uses).

Both copper and silver oxidize unpleasantly very quickly, though.

<comment><USER11> Silver sulfadiazine 1% cream is a highly effective antibiotic for preventing infections in deep burns.

In my experience, while while the wound is open, this was the only cream that had no skin reactions, and that made it far easier keep it on 24/7\. The cream kept air out, greatly reduced pain. Eliminating infection allowed more rapid healing.

I don't know whether it's prescribed today, but it was the only cream that was effective at both reducing pain, and speeding healing.

<comment><USER12> Yup, it is still prescribed. They gave it to me after I had surgery on ingrown toenails on both sides of both big toes [1]. My Podiatrist used acid to burn away part of the nail matrix to prevent the outer quarter of each toenail from growing, reducing my toenail to half width. That prevented the problem from happening again [2]. Silvadine kept my toes from getting infected further and they healed rather painlessly. All in all good medicine.

[1] Genetics and apparently bad grooming habits for the win! [2] A smashing success for ten years and counting. About 1/8 of each side grew back but it's not physically possible for me to get ingrown toenails unless I intentionally try to induce them.

<comment><USER10> Yes, that's all I've ever heard. However: [http://onlinelibrary.wiley.com/doi/10.1002/14651858.CD002106...](http://onlinelibrary.wiley.com/doi/10.1002/14651858.CD002106.pub4/abstract;jsessionid=2C8558BCF7F744704A845EE42ACF309B.f03t03)

[http://www.burnsjournal.com/article/S0305-4179(16)30056-0/fu...](http://www.burnsjournal.com/article/S0305-4179\(16\)30056-0/fulltext)

<comment><USER11> Wow, thanks for the references. My experience was 10 and 15 years ago, and the newer dressings sound great.

Conclusions the first link: "silver sulphadiazine (SSD) was consistently associated with poorer healing outcomes than biosynthetic (skin substitute) dressings, silver-containing dressings and silicon-coated dressings".

Results in the second link: "Many dressings showed superior healing properties compared to SSD, but no dressing was able to show a clear benefit over SSD regarding infection. The number of dressing changes, pain and patient's satisfaction are more favourable in the newer dressings, especially with solid and biological dressings."

These were certainly the critical factors for me -- reducing pain made it easier to keep applied. Reducing number of changes is icing on the cake.

For deep burns, debriding the wound is an extremely painful process. If the biosynthetic or silica materials reduce that, it'd be a huge advantage.

</comment></comment></comment></comment></comment><comment><USER13> "We had also reported the benefit of using a copper-based device, contrived by us, which was as effective as the pot but at a fraction of the cost." [12]

[12] [https://www.ncbi.nlm.nih.gov/pubmed/19230946/](https://www.ncbi.nlm.nih.gov/pubmed/19230946/)

(Device spoiler: Water in glass bottles with copper coils.)

</comment><comment><USER14> I have a copper water bottle that I bought online from India:

[https://i.imgur.com/3k2QBQI.jpg](https://i.imgur.com/3k2QBQI.jpg)

I love the thing, and I was drinking water out of it...

But one time I put alcohol in it... and I took a few sips from it and I almost immediately started feeling nauseous and weird... now I'm scared to use it, even for water.

<comment><USER15> A Moscow Mule is typically served in a copper mug, and I'd think the negative effects from the alcohol would be the primary thing to worry about.

<comment><USER16> The thing to worry about would be poisoning from copper toxicity (by misuse above, or by overuse of copper sulfate), or if made with beryllium, beryllium poisoning. If somehow 30mg/kg of copper were swallowed, it is potentially lethal. And if any food residue is left stuck to a piece of copper cookware, it should be thrown out immediately so it doesn't leech copper out.

If all he ever did was serve a cold moscow mule using his "copper water bottle", maybe the alcohol is the problem. But we only know he used it to drink water and alcohol. We don't know if it's lined, or if the lining was damaged, or if he used a hot or acidic liquid inside it at some point, or whether it has a corrosive residue.

<comment><USER14> only water, and once bourbon.

</comment></comment></comment></comment><comment><USER17> The antibacterial properties of copper are well known, and were proven long ago. I think this is just someone looking for something to research and write a paper on.

<comment><USER18> > and were proven long ago.

Can you back up your claim?

<comment><USER19> Not sure about copper pots specifically, but Wikipedia has a reference suggesting 1893 [0].

[0] [https://en.wikipedia.org/wiki/Antimicrobial_properties_of_co...](https://en.wikipedia.org/wiki/Antimicrobial_properties_of_copper#Mechanisms_of_antibacterial_action_of_copper)

<comment><USER18> Thanks. Should have googled.

However, upon closer inspection, it seems like there was a wave of research during 1960s which looked at Copper ion concentration between 0.02 - 10g/L

In the 2000s there was another wave of research looking at antimicrobial properties, however sampling a few of them, it does seem like they were seen as growing surfaces rather than containers for water purification.

So, I guess it was observed for a long time, scientifically studied fairly recently, and not in particular whether it was viable in a practical setting?

<comment><USER19> > it does seem like they were seen as growing surfaces rather than containers > for water purification.

> So, I guess it was observed for a long time, scientifically studied fairly > recently, and not in particular whether it was viable in a practical > setting?

It's pretty likely that no one really looked into the antimicrobial properties of copper surfaces until the advent of biofilm research (essentially Bill Costerton's paper(s) [0][1]). Without that idea, there wasn't a way to talk about or study what was happening, and there was no funding.

So, yeah, the better studies would've come out around ~2000.

I don't see a very practical use for suspensions of copper compounds as antimicrobials (maybe topical treatments only), but lots of uses for copper surfaces.

[0] [http://www.nature.com/nrmicro/journal/v12/n11/full/nrmicro33...](http://www.nature.com/nrmicro/journal/v12/n11/full/nrmicro3343.html)

[1] [http://jb.asm.org/content/194/24/6706.full](http://jb.asm.org/content/194/24/6706.full)

</comment></comment></comment></comment></comment><comment><USER20> Copper pots have interesting properties. For a long time I had read (and scoffed) that eggs should be whipped in a copper pot for best results. But it turns out that when you do that, striking the side of the pot liberates electrons that bond with the albumin and make the protein stiffer.

As for the comment about silver: it does have some antimicrobial properties. I'm amazed the effect is noticeable at the macro level of eating utensils.

<comment><USER21> > _striking the side of the pot liberates electrons that bond with the albumin > and make the protein stiffer_

Have a source? I'm curious if one can "cook" an egg by submersing it in cold water through which a current is run.

<comment><USER22> I think it's the whole copper atoms[1] that get liberated and bind the proteins.

[1] [https://www.nature.com/nature/journal/v308/n5960/abs/308667a...](https://www.nature.com/nature/journal/v308/n5960/abs/308667a0.html)

<comment><USER20> Thanks for digging this up. I should have guessed it was McGee who figured this out. He's an amazing scientist (and cook).

</comment></comment></comment></comment><comment><USER23> Many families in rural India use copper pots for this reason

</comment><comment><USER24> Makes me wonder, is there a way to make sure that no copper is still present after the microbes are all dead? Like throw some penicillamine in there to chelate the exact quantity of copper dissolved?

</comment><comment><USER25> Copper has been used as a _biocide_ in antifouling paints on boat bottoms for decades. The _USS Constitution_ was copper bottomed in 1797.

[https://ussconstitutionmuseum.org/2015/08/12/copperbottomed/](https://ussconstitutionmuseum.org/2015/08/12/copperbottomed/)

</comment><comment><USER26> Because of copper's antibacterial properties, I investigated putting copper sink faucets in my house remodel. While it's true that it works well initially, over item film builds up on the surface preventing the benefits. You have to clean them constantly to get the benefit.

<comment><USER27> Uh, copper tube is a common supply piping.

<comment><USER26> You aren't touching the inside of your copper pipes, you are touching your faucets.

</comment></comment></comment><comment><USER28> Anyone wanna theorize why? Seeing some of the comments here about silver and gold tells me it might have something to with the high conductivity of these metals.

As electrons flow through them, the germs are dying.

</comment><comment><USER29> Probably a good idea thus to use all copper pipes in your home!! Using copper vessels would've been great in an era where there weren't industrial pollutants like lead or PFOAs or other things...nowadays in India just a copper vessel wouldn't be sufficient.

In the US as well there are various contaminants in water supplies all over the country from PFOAs to lead so it's a good idea to use a water filter or such. I don't think there's much danger of bacteria in US drinking water.

<comment><USER30> There was a problem with scurvy when people stored the lime as juice in copper containers and completely removed the vitamin C in the process.

</comment></comment><comment><USER31> A few years ago GeorgiaTech† created a special anti-bacterial copper alloy (Cu-PANI††), which is now significantly used in the Atlanta Airport drinking water pipings.

[†] [https://www.truepani.com](https://www.truepani.com) [††] [http://pubs.acs.org/doi/abs/10.1021/am507746m](http://pubs.acs.org/doi/abs/10.1021/am507746m)

</comment><comment><USER32> What follow-up has there been on this since the 2012 publication in a rather obscure journal? Most importantly, is there a source of copper vessels in most countries that is as inexpensive as other means of reducing bacterial load in drinking water?

</comment><comment><USER33> So could we also make door handles out of copper, or does it only work for water storage?

<comment><USER34> Yes, some hospitals use copper plated surfaces with good results: [http://mobile.reuters.com/article/idUSTRE76031820110701](http://mobile.reuters.com/article/idUSTRE76031820110701)

</comment></comment><comment><USER35> Sounds like a way more expensive version of SoDis [0] Why use expensive copper when you could instead recycle, otherwise useless, PET bottles to do a similar job?

The only potential drawback I can think off is that some PET bottles seem to leak "hormone-like chemicals" [1]. Tho, reading trough the comments copper pots also seem to have some toxic effect on the water.

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

[1] [http://www.npr.org/2011/03/02/134196209/study-most- plastics-...](http://www.npr.org/2011/03/02/134196209/study-most-plastics- leach-hormone-like-chemicals)</comment>


How Much Longer Can Venezuela Go on Like This? - <AUTHOR> http://www.theatlantic.com/international/archive/2016/10/venezuela-maduro-chavez-protest-caracas/505874/?single_page=true <comment><USER2> Nice to see such a techie post on a generic outlet like the Atlantic.

It might very well be too much between worlds though.

The non-tech readers will be confused by all the terms thrown around (sh, IPv4 scanning, ...), and for the reader in the know there's nothing new or interesting in there.</comment>


Ask HN: The unstoppable rise of the botnets - <AUTHOR>

I consider(ed) myself an experienced sysadmin, however, yesterday I left an Asterisk server on my newly created DigitalOcean droplet open to the public. I thought, on a freshly created machine with a brand new ip, I surely can go to sleep and finish the configuration tomorrow.
Today I woke up to the server making calls to countries I didn't even know existed.
It must be the work of a botnet. The server was brand new and Asterisk had only been running a few hours. I didn't make any outgoing requests which could have tracked that the machine was live. My IP can only have been selected randomly and nmap'd mercilessly for an open port, and it was attacked on the only open port, 5060. Hell, if it were a web or SSH server, I could suppose. But a remotely non-standard service like Asterisk?
Botnets may be the business of the next decade, both for the black market and for security analysts. But what can regular sysadmins do to protect against them, besides being cautious?
This leads to the question, is there any reliable data regarding botnets? What are the most common attack vectors? Is there a known IP database of zombie machines so that we can firewall all requests from them?
I'd like some insights extracted from real data so that we can protect ourselves from this plague. <comment><USER2> It's a fairly common problem unfortunately. Most of the attacks I've experienced have been directed at known ports used by popular control panels (like Plesk, CPanel, etc), they typically hit those ports with brute force attacks, trying to crack admin passwords and such...and yes these attacks can happen only minutes after you create the server. I wouldn't be surprised if Asterisk is on their list. Even if it's a one in a million chance, it's worth it for them to try.

Remember there are only 4 billion or so ipv4 addresses. That's trivial for a serious botnet to scan repeatedly. They hit the ports looking for live ones, and if they catch a bite they double-down on that machine and flood it with attacks. Ipv6 is of course, many orders of magnitude harder for them to fish for.

But as far as best practices go... you just can't be too careful. Keep machines behind a firewall until they're ready to be exposed to the public (if at all). Using non-standard ports doesn't hurt either.

</comment><comment><USER3> I suspect known IP address ranges like DO, Rackspace and AWS are more or less constantly scanned.</comment>


TechStars Demo Day - <AUTHOR> http://dondodge.typepad.com/the_next_big_thing/2007/08/techstars-demo-.html <comment><USER2> That might be because the others did a cut and paste from my blog. I know Mike Arrington did...I told him he could. He felt bad because he couldn't make it to the demo day after earlier confirming he would be there.

Y Combinator had more companies (19) and more variety. I wish I could have written more about specific Y Combinator companies, but we were asked by Paul not to write about them unless they were already launched. Many of them were further along than the TechStars companies.

The good news is I saw several good teams at both Y Combinator and TechStars. Some significant winners will emerge.

</comment><comment><USER3> This reads like a cut and paste of the other TechStars summaries.</comment>


Show HN: 2D Tilemap on Top of Jitsi Meet - <AUTHOR> https://github.com/capnmidnight/lozya <comment><USER2> We had a really similar idea!

[https://town.siempre.io/](https://town.siempre.io/)

Leaned in way more on the 2d game aspect of it, and have video drop-off too, but the place it came from: "being able to have multiple conversations in the same shared space without hearing everyone at the same time" is the same.

<comment><AUTHOR> I had a very nice conversation with one of your developers in your app. I hope you folks can build on your tool and find a path to success. Good luck in your endeavors!

</comment></comment><comment><AUTHOR> I had a lot of really great conversations with completely random people tonight. It was a lot of fun chasing them around the little map, screaming "YOU BETTER RUN!" And then talking about VR and open source and projects and even foreign language learning. It's weird, I didn't set out to have "open office hours for the internet at large", but it's now kind of feeling like a thing, and I'm kind of liking it. Maybe that's the take-away with this stupid project. Maybe everyone should have their own, private voice chat server where anyone else can hop in at any time.

</comment><comment><USER3> This is really neat. I logged in for a few seconds to check out the interface (should have taken a screenshot). The center of the meeting shows a large white square window and smaller colored squares indicating other meeting participants. You can drag your square (avatar) around the window to place yourself next to others.

I have a standing virtual happy hour with some friends every week. If I can figure out how to get this to work with my docker/traefik deployment, I'll have to try it with my friend group and see how it works.

Thanks for creating and sharing this!

<comment><AUTHOR> Jitsi Meet itself is really easy to setup. My "game" is just a static HTML file that uses the Jitsi Meet web API, _except_ for the volume control. Because Jitsi Meet's Web API installs through an iframe, I had to modify the web files for my install slightly.

It's one additional line in `/use/share/jitsi-meet/index.html` to include a very small JS file that sets up a RPC pipe between my window and the Jitsi Meet window.

Other than that, I wore everything in vanilla JS and HTML5, so there aren't any other dependencies to manage, no build systems to run. Just dump the files somewhere (I'm running the front end in Azure CDN right now) and go.

</comment></comment><comment><USER4> Would be cool to have a podium that a user can step up to and speak to all with no falloff. Perhaps with some sort of permission or nomination.

<comment><USER5> TSaaS (Talking Stick as a Service)

<comment><AUTHOR> I got a phone call after posting this today that makes me think you might be able to find a VC in SV willing to pay for that.

</comment></comment></comment><comment><USER6> Cool idea! Positional audio is something IMHO underused in todays conference solutions. (Mumble supports it out of the box, but as far as I know its position sources are all game plugins)

<comment><AUTHOR> Thanks. Positional audio teleconf in the browser was something I hacked on back 5 years ago when WebVR first came out. Unfortunately, Google broke positional audio, then WebVR, then changed a lot of how WebAudio worked.

Lately, I'm involved with a few meetups that miss the dynamic of a real meetup. So I threw this together to hopefully get some semblance of the meetup space again.

It's really simple. Jitsi Meet has a web app API that basically loads a standard Jitsi Meet install in an iframe, with some inter-window communication setup using Window.postMessage. I add a small hack on Jitsi Meet's default install to take my own postMessage calls to sniff out the HTML audio elements Jitsi Meet creates and modifies their volume.

For the position of participants, I use Jitsi Meets inter-user text messaging system to send data packages. Then I just scale each user's audio volume based on a linear scale. Anyone closer than 3 squares is rendered in full volume, and anyone further than 14 is muted. And of course, settings in the scripts to scale these values. They could even be per-user, if they wanted to scale how well they can hear.

There's no stereo pan or ambisonics, but hopefully the volume level scaling is enough to make for useful meetups.

</comment></comment><comment><USER7> This is great! I was toying around with the idea of building some sort virtual comedy stage. It would be a web conference with one person streaming audio and video and everyone else is audience with audio only to have audience/laughter track. Anyone build something similar on jitsi?

<comment><USER8> I made a prototype a week ago with a face recognition engine on the frontend, connecting into the Jitsi JavaScript API, running my own Jitsi server on DigitalOcean.

The result: the video conferencing only showed faces! Imagine the possibilities of moving those faces around a stage, or using virtual cutouts where the faces would appear, etc.

It was very very fun, I have screenshots of 10 people connecting at once -- hit me up if you want to pursue something :-)

</comment></comment><comment><USER9> Awesome! I was thinking along these lines the other day, and picturing a "virtual conference" game where you could walk around and join ad-hoc circles of conversation. Maybe you'd see profile photo avatars for the people near you, and the further away ones would be generic avatars. I think it'd be a cool way to bring some of the serendipity of walking around a conference to online meetings. Maybe introduce a limit to the size of a circle too, so you don't get 50 people crowded around the 1 famous person.

</comment><comment><USER10> It made me quite happy to be able to leave the meeting entirely. Do you think you could turn this into an Ad-hoc D&D dungeon so that when you leave, you could take a party out into the rest of the "office" and fight mutated paperclips, overstuffed file cabinets, and disorganized supply closets?

<comment><AUTHOR> Make the tileset and I'll make it happen :)

</comment></comment><comment><USER11> Reminds me a little of genvid.

They make tech that takes data from streamed games and lets you use that data to make interactive client side overlays on the stream that sync to the game.

[https://www.genvidtech.com/](https://www.genvidtech.com/)

</comment><comment><AUTHOR> Open for contributions! I just wanted to prove out the core concept of scaling the audio. Now that I know that works, really want to dig into making art assets and interactions for people.

</comment><comment><USER12> Thanks, this is really cool.

I am also working on my own Jitsi Hack, trying to add feature for Agile meetings -> [https://meet.retrolution.co/?utm_source=HN](https://meet.retrolution.co/?utm_source=HN)

I was thinking to add some features similar to yours in order to implemented Liberating Structures [http://www.liberatingstructures.com/](http://www.liberatingstructures.com/)

</comment><comment><USER13> I think this is great. Thanks! I'm new to jitsi, so is this audio only or can you get a video to work as well? Lots of interesting things. Great work.

<comment><AUTHOR> Jitsi does video by default. I turned it off because... The map is in the way, you won't see it. Plus, I plan to do customizable avatars.

I'm generally of the opinion that the video feed is useless in 90% of teleconferencing situations.

<comment><USER13> I 90% agree with your opinion. A video does add some useful information, but 90% of the benefit could come from a small window of the person(s) you are talking to- maybe 90px by 90px.

<comment><AUTHOR> Unfortunately, not going to work with how Jitsi does their Web API through an iframe. Ol' OpenTok, before they got bought out by Vonage, could have been used because they inftected new DOM elements into the current page. But with the Jisti Meet interface timing in an iframe, I just don't have enough access to composite things like that.

<comment><USER6> They also have a more low-level API! (There is an example app in the /doc folder, it looked reasonable to use)

[https://github.com/jitsi/lib-jitsi-meet](https://github.com/jitsi/lib-jitsi- meet)

<comment><AUTHOR> Cool, I was looking for something like this but didn't find it.

Also, reminds me that I need to submit a pull request for their iframe API, because I stumbled on some missing information in it. Luckily, was pretty easy to guess at the right values.

</comment></comment></comment></comment></comment></comment><comment><USER14> Cool! I recently tried Mozilla Hubs [1], which is a similar concept but in 3D. Worked pretty well, although it was a bit awkward to not be able to see facial expressions on your avatar. And I got a bit nauseous after some time.

[1] [https://hubs.mozilla.com/](https://hubs.mozilla.com/)

</comment><comment><USER15> Really interesting idea!

Screenshots in the readme would do wonders for getting the point across.

Now if only Zoom had a robust plugin system...

<comment><AUTHOR> Got it in there now!

</comment></comment><comment><USER16> to anyone working on such hacks, I love this. It reminds me a little bit on how Sococo lays out its UI[1][2] in case you're looking for inspiration.

[1] [https://socialmediaexplorer.com/wp- content/uploads/2014/07/S...](https://socialmediaexplorer.com/wp- content/uploads/2014/07/Sococo-1024x617.png)

[2] [https://windows- cdn.softpedia.com/screenshots/Sococo_17.png](https://windows- cdn.softpedia.com/screenshots/Sococo_17.png)

<comment><AUTHOR> Love those layouts

</comment></comment><comment><USER17> Does this hack keep the location of users synced between each other?

If so, this seems like it could "easily" be expanded into something like Roll20 where tokens are on a gridded map with an image background.

<comment><AUTHOR> Each user basically sends a text message through Jitsi Meet to update each other on their locations.

</comment></comment><comment><USER18> This looks super rad and inspires me to whip up my own Jitsi hacks.

I had a Jitsi Meet server kicking around months before coronavirus and now it's seeing more use. I'll give this an install!

</comment><comment><USER19> We are 2 or 3 cool projects like these away from the McGuffin tech in Neal Stephenson's REAMDE.

<comment><AUTHOR> I'm not familiar with the book

<comment><USER19> The backstory to REAMDE is that an MMORPG turns out to also be a really good platform for teleconferencing. Gradually more and more business moves into this MMORPG until the company releases a "business version" and a significant proportion of the world economy is run through what is essentially a professional version of WoW.

<comment><USER20> Sounds like ready player one before the contest. When did it come out?

<comment><USER6> 2011

</comment></comment></comment></comment></comment><comment><USER21> Got any screenshots?

<comment><AUTHOR> In the readme now!</comment></comment>


Vitamin D, part 2: Shannon's story - <AUTHOR> https://www.devaboone.com/post/vitamin-d-part-2-shannon-s-story <comment><AUTHOR> This is part two of my wife's (a parathyroid surgeon, devaboone on here) blog series on Vitamin D - it generated a good amount of interest last time and she's following up on some of the issues raised last time "what dose should I take". The first part is here [https://news.ycombinator.com/item?id=24138590](https://news.ycombinator.com/item?id=24138590) and some previous discussion here [https://news.ycombinator.com/item?id=24061164](https://news.ycombinator.com/item?id=24061164).</comment>


IBM and Nazis - <AUTHOR> http://www.forbes.com/2001/02/12/0212global.html <comment><USER2> From 2001.</comment>


Raymond Chen explains what the Y2K was like at Microsoft [video] - <AUTHOR> https://www.onmsft.com/news/semi-official-windows-historian-raymond-chen-explains-what-the-y2k-was-like-at-microsoft <comment><USER3> One thing that I found interesting was the various media coverage of the time describing Y2K as a 'non-event'.

The media - and consequently the public - was generally unaware that it was a non-event _because_ of the massive resources poured into making it so. Instead they wrote it up as a bunch of hype and paranoia over nothing.

IMO it's one of the greatest unsung engineering success stories of our time.

<comment><USER4> Yes, indeed! As someone who also sat in a room (with many other people) watching the clock tick until the stroke of midnight I still get pissed off if people remember y2k as the event that "did not happen". Nothing happened because most of 1998 and 1999 was spent running around customer sites checking & patching software.

I work with industrial control systems and the oldest code comment that was found about the year 2000 problem was in code from the early 80s. The programmer long retired but that code was still running oil refineries.

There were very little large chemical installations in the pacific so we waited for updates from sites in New Zealand. After those sites rolled into the new year without problem everybody relaxed and we knew that our software installed in middle east oil&gas sites would work ok so people would have petrol and diesel in the new millennium. Then the rollover in the EU and US region were easy after that.

<comment><USER5> "I still get pissed off if people remember [it] as the event that "did not happen""

Welcome to the life of any operations engineer, my friend. If we're doing our job right, no one notices that the insanely complex and down-to-the-wire maintenance goes smoothly.

<comment><USER6> I run OPS and Tech at a startup. A very thankless job I must say.

<comment><USER7> Ever tried cleaning a school? Students can even be heard saying things like "It's their job to pick up after me so it doesn't matter that I throw garbage on the floor".

</comment></comment></comment></comment></comment><comment><USER8> Y2K at Microsoft was boring as hell. What _wasn 't_ boring as hell was the long period of time leading up to it. But everyone here knows that. New Year's Eve 1999 and the hours following was probably the most Age of Empires I've ever played in one sitting.

EDIT: "for an estimated issue programmers were not taking into account when applying the Gregorian calendar rule to software."

First, what the hell does that even mean? Anyway, no, it was taken into account. What, you think programmers didn't know what would happen when 2000 rolled around? What _wasn 't_ taken into account was that the software would still be running ten, twenty years later.

<comment><USER9> And most of the programmers who assumed that their software wouldn't be around that long were probably right. It was just a few who had the misfortune of creating successful software that ran into the problem.

</comment></comment><comment><USER10> I worked Y2k by myself in the Noc at an ISP in New Zealand ( aka UTC+1300 )

* Got paid $1000 bonus

* Called up by local reporter asking if any problems - <USER2>

* Called by several of our vendors/providers in the US just to say "Hello", and to casually ask how things were going.

* One ISP in Australia took themselves offline for the evening

* Rumors were going around Australia that all the power and the phones in NZ had died.

* The one little problem with a provider on the evening got a lot of people closely looking at it.

* There was fog and I didn't get to see the fireworks down town.

<comment><USER11> The weather was truely awful. I went up One Tree Hill and just saw clouds light up with the fireworks.

</comment></comment><comment><USER12> Raymond Chen is the tech writer who has influenced me the most. His blog has really helped me understand how large long-running software projects work (or at least, how they work at Microsoft), and how apparently strange features can come into existence in a sensible way.

One interesting evolution over time is how Windows moved from basically trusting all applications (which they had to do in Windows 3.X anyway, as any badly behaving app could crash the whole system) to treating applications as bad actors.

<comment><USER13> I haven't seen anything from him on the whole Windows 10 forced update fiasco. I'm curious how that played out internally.

<comment><USER14> I think he writes his blog posts a year or so in advance. [https://blogs.msdn.microsoft.com/oldnewthing/20090227-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20090227-00/?p=19003/)

</comment></comment></comment><comment><USER15> About Y2K: during that time my family kept hearing that really bad things could happen at midnight with the coming of the new millennium. One of the main things that could happen, I think, was the lost of electrical power. So, a couple of seconds before the new year I strategically positioned myself next to the light switch and when the clock hit midnight and everybody started yelling "happy new year" I turned the light off and yelled "we lost power". I wish I could have recorded the faces of shock and fear in some of my family members. It was funny as hell.

</comment><comment><USER16> I'm sure it's not how the whole Y2K process was running, it's just how the exact New Year's Eve event was planned.

I was personally also on ready-to-go-to-office stand-by, even not working in Microsoft, but in much, much smaller company. And my team did do a serious work in making the code we were responsible be Y2K proof, we've spent good part of 1998 with that.

In short, we've worked for almost a year to make that "nothing serious happened" result possible, in our own domain of responsibility. The highest management understood the problem and the process was properly planned. That "nothing serious happened" for our code is a success story of the quality of the tests we've did and used to fix the real problems. And they did exist. I'm sure there are other HN readers who can tell the similar stories.

The computer-related risks are a serious subject.

I remember following the news on the New Year's Eve to see what's happening in Japan and Australia. As also "nothing serious" happened there, I was ready to bet that everything will be fine, and that enough other companies also took the subject seriously and acted early enough.

<comment><USER17> I'll admit to a pause for reflection around 9pm UK time (Midnight Moscow time). After that, no worries. ADA has robust time and date libraries.

<comment><USER18> I hadn't thought of that as a serious possibility, but a friend and I considered writing a novel on it.

The basic idea was that a bunch of US weapons systems wouldn't work due to Y2K - things like ballistic missile navigation. So the US was frantically trying to get all this patched so that they would have a credible defense after Y2K. The Chinese knew this, and launched on New Years Day...

... and completely missed, because they had used borrowed Russian code for their ballistic missile navigation. The Russians had stolen US ballistic missile navigation code, which had the Y2K issue in it.

<comment><USER16> > I hadn't thought of that as a serious possibility

Not serious?

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

[http://arstechnica.com/tech-policy/2013/12/launch-code- for-u...](http://arstechnica.com/tech-policy/2013/12/launch-code-for-us-nukes- was-00000000-for-20-years/)

"Launch code for US nukes was 00000000 for 20 years"

[http://foreignpolicy.com/2014/01/21/air-force-swears-our- nuk...](http://foreignpolicy.com/2014/01/21/air-force-swears-our-nuke-launch- code-was-never-00000000/)

So it was not actually eight zeros but apparently 6 zeroes and the "key under the doormat" (in the safe, but not really something you needed the president to access, the opposite of what was claimed then).

<comment><USER18> That's all _very_ different from "launch because of a Y2K bug", though...

<comment><USER16> No technology is perfect, it's always a process.

And effectively every computer-related technology has undiscovered bugs.

[https://around.com/ariane.html](https://around.com/ariane.html)

""The board wishes to point out," they added, with the magnificent blandness of many official accident reports, "that software is an expression of a highly detailed design and does not fail in the same sense as a mechanical system." (...)

(...) really important software has a reliability of 99.9999999 percent. At least, until it doesn't. "

The statistics is against that generous number of nines.

</comment></comment></comment></comment></comment></comment><comment><USER19> I wonder when the wind up for the 2038 problem (32 bit signed int and unix epoch) starts.

<comment><USER19> If you're thinking it's already largely resolved, this is from 64 bit mysql. I assume similar issues exist in other software.

      mysql> SELECT UNIX_TIMESTAMP('2037-11-13 10:20:19');
      +</comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
      | UNIX_TIMESTAMP('2037-11-13 10:20:19') |
      +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
      |                            2141742019 |
      +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
      1 row in set (0.00 sec)

      mysql> SELECT UNIX_TIMESTAMP('2039-11-13 10:20:19');
      +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
      | UNIX_TIMESTAMP('2039-11-13 10:20:19') |
      +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
      |                                     0 |
      +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+

<comment><USER20> Well, we still have 21 years to solve it

<comment><USER19> A bit pedantic, I suppose, but Y2K problems showed up well ahead of Y2K. Things like credit cards with expiration dates well in the future, and validation code making comparisons.

<comment><USER7> Yes, our system doesn't work on some operating systems because we for some reason use dates after 2050 as a flag for something. And that breaks together if we testrun on windows but works fine on Linux.

</comment></comment></comment></comment><comment><USER21> My first professional programming job was to fix a Y2K bug in 1995 in an embedded system that hadn't shipped yet

</comment><comment><USER22> I was born on January 1, 1960.

So January 1, 2000 was going to be either my 40th birthday, or else my -60th. :)

</comment><comment><USER23> Where I worked after college, Y2K was the land of honey. It was a .gov that essentially was able to get unlimited overtime funds for Y2K. Everyone participated and my understanding is that people were "working" 18-20 hours a day in preparation for Christmas 1999.

</comment><comment><USER24> y2k was a massive deal that was totally solved by great engineering. The full range of engineering approaches, the full range of talents, the full range of management interference brought to bear in every country, company, department etc. and _all_ of it worked out equally well so there was _no_ problem. Us engineers, we're amazing, we should take a bow.

Or maybe, just maybe it was just a teensy weensy bit overblown so consulting companies could charge really big fees especially to government departments and banks. Easiest way to sell is to scare the s __t out of people then show them "the solution." I bought an invasion like that once, regret it now...

</comment><comment><USER25> We spent the two years prior to Y2k replacing our client's old mission critical servers and services with new 'Y2k certified' hardware and software.

I personally think this contributed significantly to the dot.com era growth.

<comment><USER26> Yep, and subsequent bust.

Many many companies getting not significant cash inflows in the run up to 2000 which made their balance sheets look great, until the end of the 2000 tax year in 2001 when they didn't look so great any more.

<comment><USER27> That's a great point that I had forgotten.

In terms of y2k effort, it seemed to me to be a small amount of code change and a disproportionately high amount of testing. The ramp up in hiring for those changes and certification, combined with the lost opportunity cost, did contribute to a later contraction.

Here's one thing that puts it in perspective though. The amount of code in the world that was Y2K-affected was considerably less than the total amount of code that exists today. And stepping outside the HN startup bubble (where code is relatively young and modernized) and into the types of companies affected by Y2K, there are _many_ efforts that are as bad or worse occurring all the time. Stuff like regulatory changes (SarbOx or various banking reforms), technology uplift (e.g., 32bit --> 64bit, Win32-->.NET, platform ports, etc.) are as bad or worse based on the amount of legacy code it affects.

But what Y2K did is teach a lot of these companies how to solve sweeping, codebase-wide problems.

</comment></comment></comment><comment><USER20> Now that I realize, problems caused by Y2K were much fewer than problems caused by leap seconds or "unexpected" leap days

<comment><USER16> Only because the former was widely known, discussed and the measures taken, and the later was typically badly understood and almost nobody cared.

Quick, do you know, does your computer system ever display the 61st second? And do you think it should?

<comment><USER28> It most likely does, but blink and you'll miss it.

<comment><USER16> The answer is: it _is_ complicated.

POSIX:2001 specifies:

"As represented in seconds since the Epoch, each and every day shall be accounted for by exactly 86400 seconds."

And that's typically no problem for normal use. The specialists know that there are different time standards and that for "real" number of seconds one has to use TAI, not UTC.

The problem in Unix world with NTP and the datetime algorithms was that some programmers believed that they have to actually _see_ the leap second on their own computers _in the kernel timestamps_ , up to the kernel intentionally producing discontinuities for kernel times (behavior which never had sense for timestamping purposes but implemented as such anyway). So now we have the configuration variations like this:

[https://access.redhat.com/articles/15145](https://access.redhat.com/articles/15145)

and, to avoid Linux kernel discontinuities:

[https://developers.google.com/time/smear](https://developers.google.com/time/smear)

In fact, the smoothing of UTC and using TAI for those who need the "real number of seconds" since point x was known as the reasonable approach long ago:

[https://www.cl.cam.ac.uk/~mgk25/time/utc-sls/draft-kuhn- leap...](https://www.cl.cam.ac.uk/~mgk25/time/utc-sls/draft-kuhn- leapsecond-00.txt)

Now it's clearer why it's complex: too much people locally "assumed" what was not to be assumed and didn't understand the effects of their local decisions and the global context.

Hopefully "smearing" will get standardized and accepted and nobody will have to care, except the specialists who really need TAI. The leap second corrections should be invisible for normal uses, just like nobody cares for correcting the clocks for much bigger differences.

</comment></comment></comment></comment><comment><USER29> This hacker-fiction y2k is fun (if quite dated now): [https://www.amazon.com/Wyrm-Mark- Fabi/dp/0553578081](https://www.amazon.com/Wyrm-Mark-Fabi/dp/0553578081)</comment>


In leaked video, Google co-founder said Trump's Election was "Deeply Offensive" - <AUTHOR> https://arstechnica.com/tech-policy/2018/09/google-cofounder-called-trumps-election-deeply-offensive-in-leaked-video/ <comment><USER2> This is a post about a post. Here's the discussion of the Breitbart source post with many more comments and upvotes: [https://www.breitbart.com/tech/2018/09/12/leaked-video- googl...](https://www.breitbart.com/tech/2018/09/12/leaked-video-google- leaderships-dismayed-reaction-to-trump-election/)</comment>


Paul Ehrlich Predicts Cannibalism, Plot Finally And Irretrievably Lost - <AUTHOR> http://www.forbes.com/sites/timworstall/2014/05/23/paul-ehrlich-predicts-cannibalism-plot-finally-and-irretrievably-lost/ <comment><USER2> I don't think you can completely discount radical Malthusianism. While such a scenario is unlikely at this point, it isn't impossible. If we were to head into the final fossil fuel depletion tail spin with no real alternatives, it would happen... but it's starting to look like we do have alternatives.

<comment><AUTHOR> The question is will it happen everywhere or be localized, I doubt that it could happen world-wide, but in some parts it could happen it happened before and could happen again.

Anyway a lot of scientist become extremist and can become scary. If history can tell something is that even the besto of scientists are bad prophets.</comment></comment>


Ten Years of Funding - <AUTHOR> http://followgen.com/funding-10-years

<comment><USER2> Missing a ton of data, no? This is just what Crunchbase has? Hard to imagine there were so few deals in the early years. I think it paints a misleading picture because of all the missing data.

<comment><AUTHOR> I imagine it is.</comment></comment>


Deaf preschooler asked to change the sign for his name due to weapons policy - <AUTHOR> http://www.1011now.com/home/headlines/Grand-Island-Preschooler-Forbidden-Sign-Language-for-His-Own-Name-167394325.html

<comment><USER2> Old story from Aug 24, 2012, and the school district completely reversed itself Aug 28, 2012. Link at bottom of page: School District Says Deaf Student Not Required to Change Name [http://www.1011now.com/home/headlines/School- District-Says-D...](http://www.1011now.com/home/headlines/School-District- Says-Deaf-Student-Not-Required-to-Change-Name-167784235.html)

</comment><comment><USER3> What, it's not The Onion?

</comment><comment><USER4> typical bureaucrat completely throwing all common sense and decency all in the name of "protecting our children". fucking ridiculous.</comment>


Bevel - A Better Shaving System - <AUTHOR> https://getbevel.com/ <comment><USER2> nothing new here. i've been applying shaving soap with a badger hair brush and using a safety razor for years.

i guess startups are at the point where reintroducing "old" technology is the new thing? this market is FLOODED with competition, good luck.

</comment><comment><USER3> This is a huge problem for me. Excited to see how this works!

</comment><comment><USER4> $60 for a high quality kit seems good. $30/monthly? I don't know if I shave enough to justify that personally. I just remember having like 5 unopened cases of Proactiv back in the day... as the postman delivered the next shipment lol.

Btw, Tristan Walker (guy behind this venture) was one of Foursquare's 1st employees. Nice guy and smart as hell. The launch campaign he's rolling out seems to be well executed. Wish them the best...

</comment><comment><USER5> $60 for a starter kit for the safety razor, brush and some cosmetics. $30/month thereafter for... I dunno. More cosmetics and some spare blades, I guess.

$60 for the starter kit doesn't sound insane, to be fair...

For what it's worth, I got a perfectly good safety razor and some blades shipped from Hong Kong via eBay for $10-$12. Works like a charm.

<comment><USER6> $30/month is insanity. You can get high quality creams for much less.

</comment></comment><comment><USER7> It's a safety razor?

[http://en.wikipedia.org/wiki/Safety_razor](http://en.wikipedia.org/wiki/Safety_razor)

<comment><USER8> I was thinking the same - no real information on the site, but I did notice that the guy flipped the razor when performing a second pass? Probably just the video showing it is double sided just like a safety razor.

<comment><USER7> Yeah, I normally do two swipes then rinse to get rid of my manly beard deposits.

</comment></comment></comment><comment><USER9> Needing an email address or watching a video before you get information about why this is better? Pass.

<comment><USER10> Better shaving system? Tristan isn't offering anything new with Bevel or his umbrella co., egomaniacally named Walker Brands. I cannot believe that this guy got $2.4M in funding without proving the concept first. In fact, he barely had a deck when he was fundraising. So ridic. He plays the race card and is mostly fluff. He has no prior experience as a founder, no ecommerce experience, no consumer especially personal care/grooming experience. It's fucked up that someone like him got funding only because of his social connections and because he plays the race card - there are definitely other more qualified founders getting dissed who have better business models, proof of concept, relevant experience, etc.

<comment><USER4> LoL your post is funny...

Naming a company with your last name automatically makes you an egomaniac now? How is this any different from the thousands of other companies and charities named after founders? I never hear any of them criticized for their names.

What race card is he playing by looking to provide solutions to a group under served by an industry? Black men do have some unique hair/skincare/health challenges. Seems like a good vertical... but I can also understand why vc's may not see that upfront. That can be solved with execution.

No experience? Killed it at Foursquare, didn't he? That's gotta count for something. Plus, plenty of first time founders come right out of undergrad, sometimes not even finishing. You usually don't hear the "no experience" thing in those cases though.

The "he used his social connections" thing is pretty hilarious being that the majority of founders make and use relationships to increase chances of getting funded or getting introduced to vc's and angels. Since when is this considered a bad thing?

There's always going to be a better idea and a more qualified guy doing xyz around the corner. What else is new?

</comment></comment></comment><comment><USER11> I thought there were rules against spam? This is a pretty version of the safety razor.

Yes, they work well. Yes, they cause fewer ingrown hairs. No, they don't last as long as multi-blades. No, they don't work on as scruffy a beard. No, this isn't the only place that sells them you can get any number of these at Walgreen's.

<comment><USER12> > No, they don't work on as scruffy a beard

I really like safety razors for scruffy beards. The only more effective alternative would be a straight razor.

> you can get any number of these at Walgreen's.

FWIW, Not sure this is actually true. I'm pretty sure no mass market retailer sells safety razors anymore in store. It's been that way for many years. In fact, the last time I checked, none of my local walgreens, CVS, or walmarts, even sell DE blades in store. That could change if this becomes popular again.

<comment><USER11> You'd be wrong. [http://www.walgreens.com/search/results.jsp?Ntt=safety+razor](http://www.walgreens.com/search/results.jsp?Ntt=safety+razor)

<comment><USER13> All out of stock, all not sold in stores. He's right.

</comment></comment></comment></comment><comment><USER14> Who is this "we" that the website and the video reference? It might be nice if they more precisely defined their target customer.

I got into safety razor shaving in high school. It feels pretty nice, looks classy, and is a lot cheaper than Mach5 or whatever they are selling now. Now I just use an electric shaver because it's so much faster.

<comment><USER15> My assumption is their target market is the African American community. It looks like a razor specifically designed for the face of an African American man.

<comment><USER2> wow, you're ignorant. it's a safety razor.

<comment><USER12> Yes, but the language of the ad pretty clearly targets black people. Maybe the razor itself isn't particularly innovative, but perhaps the rest of the "system" offers some benefits. There already exist many "black" shaving products that claim to help reduce razor bumps and ingrown hairs.</comment></comment></comment></comment>


Evidence grows of cord-cutting acceleration - <AUTHOR> http://www.usatoday.com/story/tech/2015/08/13/evidence-grows-cord-cutting-acceleration/31616345/

<comment><USER2> We cut the cord in 2008-- tired of paying for linear programming which consisted of 33% ads.

We switched to Netflix soon thereafter, but now even Netflix isn't delivering the type of programming I like. I prefer good quality documentaries and non- fiction programming. I'm especially fond of BBC and PBS programs stuck up on Youtube (probably without the content owner's consent). If it wasn't for my wife who likes a lot of the fiction programming on Netflix, I'd cancel it and use Youtube exclusively.

<comment><AUTHOR> We've watched a ton of documentaries on Netflix, give it some time, good ones popup now and again.

<comment><USER2> With the exception of PBS, most of the documentaries on Netflix are dumbed down shows from Ad-supported cable networks. Every time they break for ads, they have to go back and repeat half the information. This is annoying. They just don't have the depth and quality of the PBS and BBC programming.

One hour programs intended to be shown with ads have a 38-44 min. run time. The programs on BBC have a 55-59 minute run time, and those on PBS have a 51-55 minute run time. More material can be covered in the longer run times.

Also, you don't have Advertisers dictating what types of documentaries to produce (e.g. UFO/Alien abduction, psychic, ghosts, political, etc.) Apparently programming with borderline non-truths attract more viewers who spend money on the advertisers products than real factual programming.

</comment></comment></comment><comment><AUTHOR> We went OTA and in 2 years have had zero issues except the occasional dropout downstairs in one channel due to it being a small indoor antenna. We live about 25 miles from the city.

We get ABC, CBS, NBC, Fox, PBS and CW and several Spanish stations if we spoke that language.

We miss Fox News and CNN but catch their clips on Roku or on the web.

For movies, Netflix, M-GO and Google Play.

We may buy some sort of DVR, not sure yet.

<comment><USER3> You can get CNN, Bloomberg and Fox News, among other channels with SlingTV. It's approx $19.99/month but for us it beats the $200 we were spending.

<comment><AUTHOR> I like Fox News as well as CNN but what I just read from three sources is that it's not included in SlingTV's price:

[http://cordcuttersnews.com/fox-says-no-to-sling-tv-and-to- fr...](http://cordcuttersnews.com/fox-says-no-to-sling-tv-and-to-free-online- sports-streaming/)

Love Fox News but they also did not broadcast the debates on TV either recently and my wife is sure they are reducing the clips on Roku. Fox need to get their act together and stop being so greedy.</comment></comment></comment>


Flask 0.11 Released - <AUTHOR> http://flask.pocoo.org/docs/0.11/changelog/#version-0-11 <comment><USER2> One tip if you are about to write your first large (well, larger than 500 lines of code) Flask application: check some example applications for ideas of separation/architecture and some popular modules.

The minimalist nature of Flask, not forcing you to do things in one way and one way only, gives lots of power, but also lots of chances to mess it up and end up with a totally unmaintainable crap. Great power comes with great responsibility. Personally, I quite liked [https://github.com/mattupstate/overholt](https://github.com/mattupstate/overholt) (although some dependencies are out dated!). Also, having some starting point with the boilerplate code already in place helps you to prototype faster, etc.

Speaking of modules, the Flask modules ecosystem is pretty great and familiarizing yourself with it might save plenty of time you'd spend on re- implementing them. Some popular modules that are worth mentioning:

1) Flask-assets [https://flask- assets.readthedocs.io/en/latest/](https://flask- assets.readthedocs.io/en/latest/) allows to easily integrate processing of the assets (JS minification, SASS compilation, etc) into your development pipeline;

2) Flask-login [https://github.com/maxcountryman/flask- login](https://github.com/maxcountryman/flask-login) simple users management (roles, authentication, etc.);

3) Flask-SQLAlchemy [http://flask-sqlalchemy.pocoo.org/2.1/](http://flask- sqlalchemy.pocoo.org/2.1/) simple integration with SQLAlchemy

4) Flask-Script [https://flask- script.readthedocs.io/en/latest/](https://flask- script.readthedocs.io/en/latest/) makes it easy to write command line tools which run in the context of Flask application (e.g. some cron jobs).

<comment><USER3> I've used some example architectures in the past while making a relatively small but very detail-oriented Flask app. I found that testing was a nightmare because my errors were only triggered on runtime. So I ended up having to manually test each code path in order to make sure I didn't have something as simple as a type error in my code. Static analysis helped a bit, but it's not as rigorous as a proper type system. Do you have any advice for this situation? It turned me off of web development in Python almost entirely.

<comment><USER4> Are you unit testing?

<comment><USER3> I wasn't, but I guess this is the only solution. The biggest reason I didn't unit test was that most of my functions were dependent on a significant amount of internal state. I suppose I should have spent more time coming up with mock models to use during unit tests. Also separating functionality would have made things easier.

<comment><USER4> It sounds like you were doing two things that don't really work well in Python + framework environments in my experience:

1\. Depending on internal state: I've always had a harder time working with state, regardless of language. I usually try to structure my code so that most of my business logic is encoded in functions that have inputs and outputs and don't modify any state. Only the toplevel functions modify the state, and they do so by applying database queries or updates that were generated functionally. This also can often drastically simplify or even eliminate your mocks.

2\. Not unit testing. Without static types, it's pretty necessary to unit test. Think of it as that you test whether the types are correct by trying to use them in a trivial case. This is a double edged sword: on the one hand, unit tests give you more than static types: a type checker can tell you if the two things you're adding aren't numbers, but it can't tell you that you're adding _the wrong numbers_. The flipside is that nothing will tell you if you didn't test something, or didn't test it correctly.

I don't know if you'll have opportunity to try it again, but maybe next time try a test-driven development (TDD) approach where you define your function's interface (inputs and outputs) write failing tests that test those inputs and outputs, and then implement to make those tests pass. I don't encourage dogmatic TDD, but it can be a good starting point. Once you get a good feel for what kinds of interfaces are testable and where tests are helpful, you can scale back your testing a bit and test more pragmatically as needed.

</comment></comment></comment></comment></comment><comment><USER5> They should really name it Flask 1.0 at this point, as it's a very mature library and lots of people (including me) use it in production settings. In my humble opinion, the 0.11 version number tends to shy people away from the library as it conveys the impression that it's still heavily evolving or not well-tested, which is not the case.

In any case: Congrats :)

<comment><USER6> When I decided to learn web dev (coming from a native background), the lack of updates to Flask was more of a concern than the 0.11 version number. Everything I read online said that Flask was rock solid, so getting stuck with an abandoned framework in production was my main concern.

Glad to see Flask's development is back on track, and under formal management!

<comment><USER7> Flask development has never not been on track, there have been plenty of commits and bug fixes in the last 3 years, theyve just never made a official release until now.

<comment><USER6> I'm aware, but a web framework going 3 years without a release renders the distinction between "no releases" and "no development" more or less meaningless from an end user's point of view.

<comment><USER8> Or it means the APIs are stable, and the feature set is sufficiently limited to avoid bloat.

<comment><USER9> And new releases could be 0.10.2, 0.10.3, ..., with fixes included! And I'm ok with that from user point of view. But Flask package stuck with 0.10.1.

Glad to see 0.11!

</comment></comment></comment></comment></comment></comment><comment><USER10> This is a big deal. For those unfamiliar with Flask, it's a great library but has been sitting on 0.10 for three years now.

Blog post about it: [https://www.palletsprojects.com/blog/flask-011-released/](https://www.palletsprojects.com/blog/flask-011-released/)

<comment><USER2> Why is it a big deal?

It's been sitting for three years because it was just working and given it's minimal nature, there were not many things that should be changed. So not much point to make a release.

<comment><USER11> For one thing, it means contributors' work sat there for up to three years – not something that would make me want to contribute.

For another, any bugfixes/improvements that had been requested by the community were inaccessible on a release branch, even after they were committed – this sounds extremely frustrating.

Most libraries out there are "just working" – doesn't mean they can't ship improvements, and most do – typically no more irregularly than every 6mo.

<comment><USER12> Sometimes sth. is done and no immediate improvements are needed. Furthermore, the repo is out there.

<comment><USER13> >Sometimes sth. is done and no immediate improvements are needed.

That's a very weird thing to say in response to somebody saying, "improvements were needed and made but not released".

> Furthermore, the repo is out there.

Now that's just ridiculous. If somebody wants to not have releases, that's fine. E.g., rbenv plugins just seem to be "pull latest from git". But if somebody is going to have releases, then it's absurd to say: "Hey, if you want this to actually work, don't use the release that all the docs tell you to use; instead build the thing we have explicitly not given to you."

Having releases: good. Not ever having releases: good. Having them but not using them: worst of both worlds.

<comment><USER12> A release is a logical point in a software projects history. Sometimes you have a bunch of stuff on the head waiting a release, but that point is not reached yet. The maturity of the features are not well tested, the API is not fixed, etc. Now IDK this specific case of Flask, but there is no one single release cadence that fits all, nor do the releases need be periodic.

<comment><USER13> Yes, I think the problem here is that you're opining without understanding the specific case, a case that the rest of us are talking about.

The general discussion of release philosophy could be interesting. If you would like to talk about that, you should start a new topic, or at the very least make it clear you're changing the topic. When you reply to somebody's specific statements with sweeping generalities, as you did here, it looks like contradiction.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Love Flask. I don't do it anymore for other reasons but flask is what got me started with web frameworks that are minimal but powerful. What I love about flask is that it does not do too much magic like django even though this is not meant to demean django of course. It makes me think and make some choices. Since the core is minimal, you still have to learn a few things to really understand how to put together a decent web app or an API but I really feel that is the strength of flask.

My belief is that when you are learning, start with a minimal framework so that not everything is already done for you a.k.a magic. That will make you think and make some choices. Sure it may be amateur choices in the beginning but you will become a better developer. So if you want to learn python for web, go with Flask.

<comment><USER15> "What I love about flask is that it does not do too much magic like django"

So having used both, I'd nitpick you on this assertion.

        from flask import request

to get at the individual request objects is sooooo much more magical than

        def my_view(request):

(IMO)

Nevertheless, it's a good framework!

<comment><USER16> I agree on that. The magical globals are also my biggest problem with flask. Other than that, it's a very solid framework that obviously has had lots of thought go into it.

<comment><USER17> I think this is just a design choice to avoid confusion between request / session parameters in the view functions versus path parameters.

It's quite nice that you can just do

@route("/<post_id>")

def my_view(post_id):

       ....

never having to register anything and just decorating your functions with these path decorators gets you started really really fast. That's how a flask hello world is just 6 LOC and `python ./my_server.py`.

</comment></comment></comment></comment><comment><USER18> I just released my first Flask extension called Flask-Ask for developing Amazon Echo skills [https://github.com/johnwheeler/flask- ask](https://github.com/johnwheeler/flask-ask)

Flask is a fantastic, minimal framework, and Mitsuhiko did so much to help new developers integrate into the ecosystem he created. For example, I was able to use his documentation templates [https://johnwheeler.org/flask- ask/](https://johnwheeler.org/flask-ask/), and he had multiple versions for small and large projects. When you dive in it's pretty amazing what they've accomplished over the last 5 years.

</comment><comment><USER19> This is nice to see. I don't use anything but [http://bottlepy.org](http://bottlepy.org) these days because I find the decorator approach to be more elegant, but I do have a few Flask-based tools I adopted, and (for instance) patching them to serialize datetimes was a pain.

<comment><USER20> Switch to use Bottle for rest API as Flask has dependencies such as Jinja2 that I don't need.

<comment><USER21> There's also the Falcon framework that claims to be faster and is meant for REST APIs.

[http://falconframework.org/](http://falconframework.org/)

<comment><USER22> Falcon is great for making API's! I've used it on a few production sites. The main downside is the lack of middlewares for common tasks (e.g. jwt decoding) but you gain in other areas such as being able to use class inheritance to abstract out utility stuff in an elegant way.

<comment><USER23> Take a look at Hug - it's built on Falcon and adds all the API niceties :-) [https://github.com/timothycrosley/hug](https://github.com/timothycrosley/hug)

</comment></comment></comment></comment></comment><comment><USER24> Someone might find this project helpful:

[https://github.com/level09/enferno](https://github.com/level09/enferno)

This is a Flask based framework designed with best practices in mind, it comes with many nice preconfigured modules and modern features:

* Gulp integration (sass, minify etc ..)

* Fully configured flask security out of the box (register/login/reset etc ..)

* Cache, Blueprints, Mysql/Nosql, Mail, Background tasks, ORM etc ..

* Debug toolbar

* Command line (Flask script) to help you control your app

* A deployment script that fully configures your server in minutes (Ubuntu):

[https://github.com/level09/enferno- ansible](https://github.com/level09/enferno-ansible)

edit: I'll get this project upgraded to 0.11 to integrate the nice new features, any recommendations/notes are welcome.

</comment><comment><USER25> Tests ported to py.test. I never got a full understanding on which python unit test lib I should use ..maybe that's a hint.

ps: well thanks for the hints below guys.

<comment><USER10> I would highly recommend pytest. It's very simple, very pythonic.

Here is for example my Hearthstone simulator, with ~600 pytest-compatible tests: [https://github.com/jleclanche/fireplace/tree/master/tests](https://github.com/jleclanche/fireplace/tree/master/tests)

It's just plain asserts. You run it with `py.test`. Nothing simpler.

<comment><USER26> Man, I never understood the love for py.test.

People say "it's Pythonic, you just use asserts", but asserts aren't Pythonic. For one, asserts are removed when you run Python with "-O", so, uh, good luck running your test suite in that configuration. Secondly, crawling up the stack to inspect the bytecode to figure out what condition was actually asserted so you can print a nice error... that's the _opposite_ of Pythonic.

Sure, the unittest module in the standard library is a bit Java-ish, but it's much less magic, and I feel like keeping per-test state in a class that gets instantiated multiple times is more Pythonic than having everything be top- level functions.

And of course unittest is in the standard library, which means that most apps and libraries are going to use it, most people are going to be familiar with it, so your app or library will be more approachable to co-workers and/or contributors if it's tested the same way. Heck, a lot of Python frameworks have their own test helpers built on top of unittest (hello, Twisted and Django!) so you don't get to choose anyway.

You _could_ write Python code with three-tab indents, but you should use 4-spaces like everybody else. You _could_ write your own custom packaging and dependency management system, but you should use setuptools like everybody else. You _could_ any number of custom test harnesses, but you should use unittest like everybody else.

<comment><USER27> > For one, asserts are removed when you run Python with "-O", so, uh, good > luck running your test suite in that configuration

Which is not something anyone has ever wanted.

> Sure, the unittest module in the standard library is a bit Java-ish, but > it's much less magic, and I feel like keeping per-test state in a class that > gets instantiated multiple times is more Pythonic than having everything be > top-level functions.

It's really really unpythonic. It looks horrible and leads to messy tests. With pytest you get dependency injection via fixtures which cuts down on so much repetitive initialisation code.

We've got both kinds of tests in our codebase, and the pytest ones are a lot nicer to write and refactor.

<comment><USER28> "Unpythonic" must be something positive. Whenever someone uses that word, I like the code or the application in question.

"Pythonic" seems to mean using magic until an application works in 99% of the cases, satisfies some superficial criteria of readability to those intimately familiar with it and is utterly un-debuggable for those who aren't.

<comment><USER27> > Whenever someone uses that word, I like the code or the application in > question.

Then either they are not describing something unpythonic or you can't visualize how better the code would look if it was pythonic.

> "Pythonic" seems to mean using magic until an application works in 99% of > the cases, satisfies some superficial criteria of readability to those > intimately familiar with it and is utterly un-debuggable for those who > aren't.

Not at all, it's usually exactly the opposite. Open a python shell and type "import this", if Python code satisfies a large enough number of those then it's Pythonic.

The first six pretty much sum it up:

> Beautiful is better than ugly.

> Explicit is better than implicit.

> Simple is better than complex.

> Complex is better than complicated.

> Flat is better than nested.

> Sparse is better than dense.

Words to live by. They all help improve debugging and readability.

<comment><USER29> Hardly anyone writes code like that in the Python world. It's all about features and gross hacks.

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> Didn't expect a new flask release because i had the feeling the author moved to rust development. did anything change recently ?

<comment><USER31> I think you were mistaken.

<comment><USER32> I remember him saying that on a podcast. maybe talk python to me.

</comment></comment></comment><comment><USER33> I used Flask a few years ago to write a rather large api server (20k lines) for a video sharing app. I learned that they give you a lot of control but it can get messy quickly if you're not careful about properly architecting first.

I ended up getting the Flask Cookbook from O'reilly which helped me understand how to structure a Flask App.

I also recommend Flask-SQLAlchemy as it made writing and manipulating MySQL queries really straightforward.

</comment><comment><USER34> Who's got two thumbs and has already deployed Flask 0.11 to production? This guy.

</comment><comment><USER35> I know that version numbers don't necessarily mean anything. Wine took 15 years to get to 1.0, while Chrome and Firefox increment major version numbers every few weeks. But it still seems odd to have a major web framework at 0.11 after six years.

<comment><USER36> If it is working like it is supposed to, I don't see what the problem is.

<comment><USER37> No real problem. But I think many can have an subconscious bias that any software at 0.x is unstable. This is how semver[0] treats 0.x releases and it was a common convention long before that.

[0] [http://semver.org/](http://semver.org/)

<comment><USER38> Each project may have a different versioning scheme and that's just fine. Not everyone follows "semver" (although it sounds sensible to me).

<comment><USER37> Sure. Nothing wrong with whatever (sensible) versioning scheme a project decides to use. But I think version numbers do bias the perceived stability. If I had never heard of Flask and I saw that version 0.11 was released after three years of no new releases, my gut reaction would probably not be overly positive. That said, Flask is indeed a great piece of software :)

</comment></comment></comment></comment></comment><comment><USER39> I wanted to mention Flask-Diamond in this thread because it can be used to scaffold large applications quickly, sortof like Django.

[http://flask-diamond.org](http://flask-diamond.org)

One reason you might use Flask-Diamond instead of Django is because you might not need everything Django provides, so you want to remove libraries one at a time. Or, perhaps, you want to upgrade libraries one at a time. I've found it's easier to start with a full-blown Flask app, then remove things, rather than starting with a barebones app that I add to.

</comment><comment><USER40> Are there any plans to integrate the flask-failsafe functionality into flask proper so that flask reloads automatically after a syntax error is corrected and the file saved?

<comment><USER41> I believe the Flask development server does that already?

<comment> ju-st No, the dev server can only handle runtime exceptions

</comment></comment></comment><comment><USER42> I love flask. web.py used to be my "go-to". But as its development has not been as active, I moved over to Flask for the community.

When I know I need an admin and lots of built in items out of the box, I choose Django.

But a quick prototype, always start with Flask.

</comment><comment><USER43> Are there any high traffic web pages using Flask? I'm interested but when I look at job listings it's really rare I see anything for flask compared to React/Angular/RoR.

If I was a python dev it seems like it might be worth learning but since I'm a web dev and already know a few frameworks I'm struggling to find a reason to teach my self flask.

Does Flask have any advantage over something like Angular?

<comment><USER44> Not sure what kind of traffic they get, but httpbin.org uses it. Also this one site named Pinterest.

<comment><USER45> I am sorry, but it seems that Pinterest is written using Django.

[https://www.djangoproject.com/start/overview/](https://www.djangoproject.com/start/overview/)

<comment><USER46> Moved off Django to Flask.

[https://www.quora.com/What-challenges-has-Pinterest- encounte...](https://www.quora.com/What-challenges-has-Pinterest-encountered- with-Flask)

<comment><USER47> That page does not support the statement that they moved off Django to Flask.

<comment><USER48> But it supports that they do use Flask.

> Presently, the API does over 12 billion requests per day, all in Flask.

Wow, that is 138kqps. Not something that would strike me as your typical Python workload.

<comment><USER49> Whacking great big CDNs in front of your infra will do that.

<comment><USER48> What exactly a CDN can do to increase the qps throughput of your backend? I thought it's used to reduce it...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER50> moving too slow...</comment>