Type checking in Python - <AUTHOR> http://senko.net/type-checking-in-python

<comment><USER2> This module doesn't seem to make it possible to type-annotate map and filter, which are Python builtins.

I believe that dynamic typing results from frustration over generics, rather than over static typing in general. (Type stuttering is another problem, but modern languages solve it with local type inference.) I mean, annotating non- generic functions is always straightforward doesn't introduce much complexity:

        # s should be str
        # returns nothing
        def print(s):
            ...

        # just becomes (using Py3 annotation syntax)
        def print(s: str) -> None:
            ...

However, it's much harder to write a type annotation of generic functions. Worse, remember that Python's map is _variadic_.

        # for any types t0, t1, t2, ... tn:
        # fn is a function that takes arguments of types t0, t1, ... t(n-1)
        # and returns a value of type tn;
        # seqs are iterables of types t0, t1, ... t(n-1);
        # returns a list of type tn.
        def map(fn, *seqs):
            ...

        # How to write this signature is non-obvious

Many mature static typing systems would allow you to express such types (usually called parameterized types). But any one of them would require more than those trivial notations in print.

That's when the dynamic typing people get annoyed and go "fxxk static typing systems, I can handle this in my mind". Which is about 65% (totally random estimation) the point of dynamic typing in my opinion.

Any type checker for dynamic typed languages that doesn't seriously try to solve the generics problem is not genuinely interesting.

<comment><USER3> It's not hard to imagine an extension to ML-style types that could cover variadicity:

        map : ('a... -> 'b) -> ('a list)... -> 'b list

Where <type>... denotes <type1> -> <type2> -> ... -> <typeN> spliced into the type signature, with each type variable 'a in <type> replaced with 'a1, 'a2, ... 'aN. You could cover tuples too:

        zip : ('a list)... -> 'a,,, list

Bit ugly, and writing a type checker for it could be fun, but it seems workable.

<comment><USER4> Take a look at Typed Racket for a variation on this.

<comment><USER3> [http://docs.racket-lang.org/ts- guide/types.html?q=typed#%28p...](http://docs.racket-lang.org/ts- guide/types.html?q=typed#%28part._varargs%29)

Right, looks very similar.

</comment></comment></comment></comment><comment><USER5> As a somewhat new python programmer (~2 years) coming from statically compiled languages like C#, C++ and Pascal this is something I have thought about a lot. My initial impulse was to wish I had static type checking. But I have come to the conclusion that I just hadn't fully appreciated the differences between interpreted and compiled languages.

The article says that the lack of type checking "lets through" a certain class of errors. However, let's be specific here: there is no build-time static analysis phase in the transformation of python source to executable code. So "lets through" means the same thing whether you have strong typing or not: the error is going to be found at runtime. What we're really talking about, then, is converting AttributeError ("YourObject has no attribute 'startswith'") into something more specific ("Hey, this is supposed to be a string!"). Honestly, that seems to me to be a pretty minor increase in diagnostic information.

So the bottom line for me is that I feel I didn't really understand duck typing. I used to joke that the term actually meant "no typing," and that is in some respects true. But what it really means is "the thing can do what the method expects it to be able to do." If the thing can't serve in the expected role, then the existing errors that result are sufficiently explanatory, imo.

<comment><USER6> Sure, but you have to wait until runtime to detect those errors. Which means your codebase can have a nasty bug that you might not even notice if you don't run a particular test case. Static typing detects the same thing, but statically at compile time.

<comment><USER5> Yes, but there is no compile time in python. Are we discussing type checking in python, or another language, or some ideal hybrid? I don't need to be convinced of the value of static type checking in compiled languages.

<comment><USER6> Sure there is. When do you think parse errors happen? All languages are compiled in one way or another.

<comment><USER5> Yes, but that's not a very useful observation. I think most developers understand that there is a process to transform source code into executable format. The distinction between interpreted and compiled languages, as commonly understood, is precisely about when that happens. There is a "compilation" step in python, but it happens when the code is executed, and therefore there is not a distinct "compile time" step during which a programmer has an opportunity to detect errors and prevent them from occurring at runtime. In any case, we're slicing hairs here, so in defense of my position I'll simply note that if your definition is sufficient, then there is no need to distinguish between interpreted and compiled languages at all.

<comment><USER6> That's simply not true. There is a compilation step in python that is completely distinct from the runtime (i.e. when the bytecode files are compiled). There's nothing special about python that prevents static compile time analysis from happening.

<comment><USER6> Oh, and to address your other point: the line between compiled and interpreted languages has been blurry since day one, and it's only getting blurrier. No modern, highly-used interpreted language gets by these days without compilation to bytecode. Rather than "compilation vs. interpretation", the battle should be "interpretation vs. native execution", which is more meaningful, but the line there is actually still pretty blurry (see JIT compilation, which straddles that line).

<comment><USER5> I understand your point. There is a step that compiles python source to bytecode, and it does take place before the bytecode is executed. I just think this is a somewhat pedantic observation. A large part of the value of the language lies in the immediacy of its "interpreted" nature (I'll put that in quotes from now on, thanks to you :)). You run the script and it either fails or executes. In the version of python I use on Ubuntu scripts aren't compiled to bytecode for the first time until they are imported, so other code in the project has likely already run before the compiler would have a chance to review the use of types in the imported module. There isn't a project-wide process of compiling all the files and making sure everything is used correctly before any code executes. Maybe it could be made to work that way, but wouldn't that alter the language and the way it is used? In the end I come back to: is AttributeError really not descriptive enough? You can have the last word here.

<comment><USER6> Okay. AttributeError is good enough, except when it's not. Python is designed in such a way that makes you actively seek out AttributeErrors, rather than having them diagnosed at compile-time. If that works for you, then that's great, but it doesn't always work. Whether it's in the main branch of CPython, or some sort of experimental fork, or some completely distinct static analysis tool, Pythonistas should support efforts to add (potentially optional) increased static checking to the Python interpreter, because it's a good thing.

Will it fit in with the current Python ecosystem? Will it have to change the way the language is used? Maybe, but that doesn't mean we shouldn't experiment with static analysis. We're hackers, after all, and this is something that probably deserves to be hacked on.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I've been checking types in Python dynamically for years now. My library, Obiwan [https://pypi.python.org/pypi/obiwan/1.0.2](https://pypi.python.org/pypi/obiwan/1.0.2) uses type annotations, which I think nicer than decorators.

<comment><USER8> As the article mentions - the big advantage of decorators is Python 2.x compatibility. (not that I want to start another discussion of THAT topic)

EDIT - looks like obiwan will allow decorators as well as annotations. I do prefer the syntax of typedecorator though. It seems less cluttered.

<comment><USER9> It's a matter of taste. I think the decorator approach looks more bolted-on and ad hoc. I prefer C style declarations over annotations, though, because they have the least amount of noise.

</comment></comment></comment><comment><USER10> There's one thing that doesn't sit well with me about adding type-checking to the CPython implementation of the Python language. Type-checking is generally used at compile-time to check that your program won't do nasty things, and then run-time checks are done only when you do something overly dynamic that the compiler couldn't check (i.e. casting an Object to some concrete class in Java). However, all type-checking implementations for CPython work purely at runtime! And type-checks are invoked each time your function is called! This seems not only wasteful, but also defeats the purpose of type-checking before running your program.

I would rather see a more generic pre/post-condition contract system, to be used in select top-level functions, that gives a lot more flexibility in expressing what is supposed to happen (i.e. I expect to be given a not-None value with a __str__ method that doesn't throw and will return an iterator yielding consecutive not-empty, not-None strings), including what assumptions you're making when you call a function that you got from a random object (i.e. here I'm calling a function that I got somehow as a parameter and I'm going to assume it can take a string of the format "ipv4 address:port" and returns an object that is a database connection), together with a mechanism for recovering from broken contracts - we are doing runtime checks, so there's no reason to restrict ourselves to Java-style type constraints, which don't even work for Python in general. Or, alternatively, a lighter system that can be checked at import time once before the program is started "for real". Preferably both of those.

</comment><comment><USER11> This is the single biggest thing I miss coming from modern Perl. Pythonistas seem very anti-type validation/checking, but with Moose classes the type stuff simplifies a lot, is declarative, self documenting, and vastly reduces certain classes of bugs.

The closest I've seen is the traits thing from Enthought, but there doesn't seem to be much buy-in from python users.

<comment><USER12> Former Enthought employee here, I always liked programming with Traits. Although nowadays I use the similar but much for light weight atom[0], which was created by another former Enthoughter.

[0]: [https://github.com/nucleic/atom](https://github.com/nucleic/atom)

<comment><USER11> Awesome pointer, thanks!

</comment></comment></comment><comment><USER13> I recently wrote this post "statically type checking python" [http://renesd.blogspot.de/2014/05/statically-checking- python...](http://renesd.blogspot.de/2014/05/statically-checking-python.html)

Turns out with modern tools you _can_ statically type check python :)

</comment><comment><USER14> Appreciate that it has a "logging only" mode.

I wish there was something like this, but parsing the docstrings with the same format as pycharm: [http://www.jetbrains.com/pycharm/webhelp/type-hinting-in- pyc...](http://www.jetbrains.com/pycharm/webhelp/type-hinting-in-pycharm.html)

<comment><AUTHOR> I'm currently entertaining the idea of it _outputting_ docstrings (adding :param:, :rtype: and other applicable tags if they're not already there).

</comment></comment><comment><USER15> I wrote a similar python typechecker some time ago ([https://github.com/cabalamat/ulib/blob/master/debugdec.md](https://github.com/cabalamat/ulib/blob/master/debugdec.md)). My syntax is somewhat less verbose so this:

        @returns(int)
        @params(a=int, b=int)
        def add(a, b):
            return a + b

becomes:

        @typ(int, int, ret=int)
        def add(a, b):
            return a + b

I was inspired to do it like that by Haskell's very clean type syntax.

Senko's version has the advantage that you can compose types in it, e.g. {str:int} is a dictionary whose keys are strings and values are integers.

</comment><comment><USER16> For Python 3, I've added optional type checking based on function annotations and decorators to the Ensure library: [https://github.com/kislyuk/ensure#enforcing-function- annotat...](https://github.com/kislyuk/ensure#enforcing-function-annotations).

        @ensure_annotations
        def f(x: int, y: float) -> float:
            return x+y

        f(1, 2.3)
        >>> 3.3
        f(1, 2)
        >>> ensure.EnsureError: Argument y to <function f at 0x109b7c710> does not match annotation type <class 'float'>

I think it works better than other approaches mentioned here because it (1) doesn't repeat the contents of the function signature, (2) doesn't install any magic system-wide hooks (and the attendant performance issues), and (3) is completely optional.

</comment><comment><USER17> Didn't know Guido thought of static type checking such a long time ago. I'm thinking now that one solution to two problems (this one, and slow python 3 adoption) would have been to include optional static typing (like in dart) in python 3.

</comment><comment><USER18> Having seen many type-checking initiatives for Python come and go over the years, I've come to believe that type-checking is like security in that it is difficult to add after-the-fact and works best when designed-in from day one.

When function annotations were introduced, I ended up removing all their uses from the standard library because every early attempt to use it was too simplistic and failed to support any type-system use case except for extra documentation.

</comment><comment><USER19> Too bad that this isn't type checking in the traditional sense though. That's just runtime tag checking.

</comment><comment><USER20> Union types would be an incredibly useful extension of this.

<comment><USER13> Indeed! pysonar2 uses them with success.

</comment></comment><comment><USER21> This is neat, but why not just use Go!

<comment><USER22> Go is neat, but why not just use Haskell? (etc.)

<comment><USER23> Monads

Or more specifically, how non-intuitive it is to use the IO stuff

I don't care what it uses, or what is it called, I care about being able to use it with what I know

So yeah, I'll go for Go instead of Haskell

<comment><USER24> The IO stuff has almost nothing to do with monads.

It is unfamiliar, but if you use static typing, at least reap the benefits of better error checking, no runtime null dereferences, etc.</comment></comment></comment></comment>


The Personal Software Process (2000) [pdf] - <AUTHOR> http://www.sei.cmu.edu/reports/00tr022.pdf <comment><USER2> I'm interested to know if anyone here has used this over an extended period of time. Does it work for you? Have you become better at estimating? Have you lowered your defect rate? Have you increased your pace?

I'm skeptical that something this prescriptive could be effective, but it'd be great if there was evidence (anecdotal or a study) that shows this is effective.

<comment><USER3> I went through a personal anti six-sigma period in the early 90s. And adopted a slimmed down version of this for myself. Rather: it had the same name and came from CMU, but I don't recall it being quite so cumbersome looking, and I adopted a slimmed down "personal-only" version of it for myself. I didn't work that hard at it, and I was able to bring alternative data to a larger meta- drama I was somehow participating in.

Later - I spun out of there and started a company and we did that slimmed down version, based on the this Y2K document's predecessor. It didn't seem to cumbersome because it was inline with a lot of things we were already doing. And we had were using this light-weight measurement practice embedded in a modified dev-team wide process based on the spiral (we were all from waterfall-world, and this fit us well).

I've gotta say: it worked very very well. Especially after a few iterations through a few spirals. Skeptics came around pretty quickly. (Well, except one guy - but he hated everything)

I can't imagine doing 100% of what's written in this document, as a dedicated, in parallel, side-car type activity - but it might still be well worth it.

</comment></comment><comment><USER4> A senior recommended this to me when I was a junior. My attitude at the time was that things would take as long as they would take and I wasn't sure how long that would be because I had never done it before. Obviously as a junior you tend not to be very fast or very good at getting things done.

His recommendation was that this was a good way to get better at estimating so that you could manage other people's (your manager, the sales people) expectations better.

This seemed like good advice.

In practice, I'm terrible at logging time and recording details of what I have worked on and tend to rely on version control as a work log (hey, I aim to have multiple commits per day and record reasonably good commit messages which link to defect tickets etc)

So for what it's worth, I don't use PSP, but am kind of interested in it. My estimations, defect rates, and speed have increased over time anyway because experience.</comment>


Show HN: Golf Tradr – fantasy golf with a stock market overlay - <AUTHOR> https://golftradr.com <comment><AUTHOR> Hi HN.

Just wanted to share my little side-project that I've been having some fun with over the last 6 months. Was tired of how the Daily Fantasy Sports (DFS) sites have handled golf. It doesn't really "fit" well into the draft model.

Anyhow, I'm a huge golf nut and came up with a new idea for a golf fantasy game. I've been the solo coder on the project. It's using Django on the backend along with Celery/Postgres and a myriad of libraries and other technologies.

Would certainly appreciate any feedback the community has. It's currently alpha-quality. Oh, and you don't need to pay a dime to play. That's only for folks who want to be eligible for the weekly prize pool.

Thanks in advance for any feedback!</comment>


Jawzrsize Before and After – Do Jawline Exercises Work? Eric West Review - <AUTHOR> https://www.youtube.com/watch?v=9xMt8-yGkX8 <comment><USER2> Answer is right there at the top of the comments.

Commenter: "Anyone else having a hard time finding peer-reviewed scholarly articles saying that this is a safe and effective method?"

Video creator replied: "It's simply a piece of exercise equipment and does not warrant medical studies like some type of a pharmaceutical drug"

The answer is no. In all likelihood it does not work. Also the video thumbnail clearly uses different camera setups for the before/after, and the difference could be due entirely to perspective. Not to mention photoshop editing etc.

As well as there being no scientific _evidence_ , I also doubt if there's any proposed _mechanism_ by which this would work. Without mechanism or evidence, it's 99% chance quackery.</comment>


New Study Challenges a Genetic Link to Stress, Depression - <AUTHOR> https://psychcentral.com/news/2017/04/10/genetic-link-to-stress-and-depression-questioned/118890.html <comment><USER2> The lack of a link to depression has been known since 2009

[https://jamanetwork.com/journals/jama/article- abstract/18410...](https://jamanetwork.com/journals/jama/article- abstract/184107)

What remains interesting is a plausible effect on placebo

[https://www.ncbi.nlm.nih.gov/pubmed/19052197](https://www.ncbi.nlm.nih.gov/pubmed/19052197) [https://www.ncbi.nlm.nih.gov/pubmed/26272535](https://www.ncbi.nlm.nih.gov/pubmed/26272535)

</comment><comment><USER3> Completely anecdotal, but many of my friends that are of Asian descent have a tough time putting a finger on or grasping what depression is. It almost seems like it's not something that they have been wired to be able to feel or experience.

I was wondering if there was any research to back up that tendency....

<comment><USER4> The discipline of Psychology is regional. It's only a bit over 100 years old and (basically, work with me here) originated in Austria.

As I read just the other day from, I think, Linda Tirado, many cultures have no concept of mental illness. Either you're normal or you're retarded, and normal people are expected to power through whatever problems on their own. If you can't, then you must be developmentally disabled.

<comment><USER5> Warning: personal, not medical opinion: I've always subscribed to the theory that depression is an indicator that you need to make changes in your life.

I've been more-or-less depressed for probably 10 years. If I have nothing else that I _have_ to do I'm very likely to spend the day in bed. I hate weekends because there's no work/office routine to distract me. I know (or think I know) what the cause is, and I could pull up stakes and make major changes and get away from it, but I've chosen not to for reasons that are complicated. If I'm right, it will resolve itself in about another four years.

<comment><USER6> > I've always subscribed to the theory that depression is an indicator that > you need to make changes in your life.

Depression is an umbrella term that covers several different forms of the illness.

But most people treating depression talk about the "bio psycho social" model - that people may needs meds for the biological stuff; a talking therapy for the psychological stuff; and lifestyle changes and interventions for all the rest.

</comment></comment></comment></comment><comment><USER7> Original articla: [http://www.nature.com/mp/journal/vaop/ncurrent/full/mp201744...](http://www.nature.com/mp/journal/vaop/ncurrent/full/mp201744a.html)

</comment><comment><USER8> Interesting, I wonder if studies that find a negative, like this one, are more likely to stand the test of time than ones like this study rebutted.

</comment><comment><USER9> The press release is misleading. Indeed, press releases about scientific studies are almost always misleading, which is why they are not the preferred source for stories about new scientific findings.

I participate most weeks during the United States school year in a "journal club" about human behavior genetics. The meetings include researchers who research genetic influences on depression and other mental disorders. It has been known for a LONG time that depression runs in families in a way that demonstrates genetic influence on depression. (In other words, adoption studies and twin studies, and especially studies on the rare monozygotic twins who are brought in separate households, make clear that genetic similarity of human individuals is linked to their similarity in risk for depression.) It has also been known for a LONG time that environmental influences, including the vague set of influences called "stress," matter for development of depression, so sometimes monozygotic ("identical") twins are discordant for depression, because they have different life experiences.

What the press release is about, and what scientists have been trying to figure out during my adult life, is what the nature of genetic influences on depression might be. It has also been known for the better of a decade, and suspected much earlier by the more astute researchers on human behavior genetics, that MANY genes influence any one human behavior trait of interest. Depression is SURELY, as we can now say by the results of massive genome-wide association studies (GWASs), influenced by hundreds of genes, each of which has only a small effect on risk. So the press release reports that an early finding that was expected to show that one gene variant had a lot to do with developing depressing has rather shown that that gene variant, as is true of all other gene variants, sometimes has no detectable effect on a patient's having depression or not.

The human mood regulation system is just that, a SYSTEM, so perturbations of many different aspects of the system can cause clinical signs that are identified as "depression." What helps depression, in general, is a both-and approach of prescribed medicine under the supervision of a physician and talk therapy provided by a psychotherapist. Most patients these days with diagnosed depressed do MUCH better than patients did a generation ago. Some patients are helped a lot by one or another of the selective serotonin reuptake inhibitors (SSRIs), and some are not helped by those medicines at all. And that's all because depression is a clinical condition with a diverse set of underlying biochemical causes, as we know for sure from GWAS studies.

Further study of genetic relationships to depression should help develop new drugs that help some patients who are not helped by current drugs or that help patients who are already helped by existing drugs but with fewer side effects. But we are NOWHERE near being able to use genetic test results to decide which drug to use first: patients have to talk to their doctors about how they are feeling as they undergo treatment. Your best bet for finding good treatment if you feel depressed is to find out what has helped a NEAR relative who has also suffered depression.

</comment><comment><USER10> Can I get a shaman in here for some verification?

<comment><USER11> Context:

Meta joke to [https://news.ycombinator.com/item?id=14102532](https://news.ycombinator.com/item?id=14102532)</comment></comment>


ChartBeat hits 2m concurrent users - <AUTHOR> http://techcrunch.com/2011/01/14/chartbeat-2-million/#asf

<comment><USER2> Sorry to sound like an ad, but this is the best service ever. I wish they had an affiliate program because everyone I explain it to signs up.</comment>


ReviewMeta.com – Amazon Review Checker - <AUTHOR> https://reviewmeta.com/ <comment><AUTHOR> Just heard about this on Planet Money: [https://www.npr.org/templates/transcript/transcript.php?stor...](https://www.npr.org/templates/transcript/transcript.php?storyId=623988370)

I have no relation to the co. I just think overall the Internet desperately needs information intermediaries who can honestly advise us on trust & quality. otherwise fraudsters / marketers can destroy it all.

Trust is the foundation of a healthy civilization.

Unfortunately, being such an intermediary often just does not pay. We could vastly improve the future health of society, if we can devise better business models for such intermediaries.</comment>


Neutral Money Network - a business idea - <AUTHOR> http://userpage.fu-berlin.de/~roehrigw/suhr/nngengl.html

<comment><AUTHOR> Bit of a dense read but I think there's something here. The business idea starts with Chapter 5. I've been studying the case for demurrage (carrying costs for money, <http://en.wikipedia.org/wiki/Demurrage_%28currency%29>) for a while now and I think it could be the beginning of an idea for a startup.</comment>


ChevronWP7 jailbreak/sideload tool yanked - <AUTHOR> http://arstechnica.com/microsoft/news/2010/12/windows-phone-7-jailbreak-tool-comes-goes-within-a-week.ars

<comment><AUTHOR> Followup and correction to this thread from Monday:

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


Ask HN: HN like site for hacking startups - <AUTHOR> I realize this is the site for this but news flow has been growing more generic, diverting from original how I got first 100 users etc. <comment><USER2> Try looking for startup news websites, it's for a more non-technical segment. I like it here because it's technical :).

<comment><AUTHOR> Well there is devstash.io for pure code and I was hoping there'd be something centered about bootstrapping and getting a company going. struggles etc(technology included and related to business struggles) where I can discuss with likeminded people who are going from 0 to 1 or getting first group of fans going.

<comment><USER2> You should try angel.co linkedin.com www.producthunt.com www.venturebeat.com www.techcrunch.com

</comment></comment></comment><comment><USER3> most of the time I feel like it's crickets here when I ask a question about an idea or view on things. Of course Quora is more oriented to that. But it feels more factual and not opinions.</comment>


Austria to make basic face masks compulsory in supermarkets - <AUTHOR> https://www.reuters.com/article/health-coronavirus-austria/austria-to-make-basic-face-masks-compulsory-in-supermarkets-idUSV9N286016 <comment><USER2> Masks _do_ protect the wearer! And you do not need an N95 mask to do this. Even a simple homemade mask offers some degree of protection. This[0] was a good explanation of both of these ideas.

tldr: There is reason to believe that large droplets, not the tiny droplets that N95s are designed to filter, are the primary threat, and any sort of physical barrier between those and your mouth/nose will help.

[0]: [https://medium.com/@Cancerwarrior/covid-19-why-we-should- all...](https://medium.com/@Cancerwarrior/covid-19-why-we-should-all-wear- masks-there-is-new-scientific-rationale-280e08ceee71)

<comment> rv-de I think the idea that larger droplets are required for an infection is congruent with an R0 of about 3. If super small droplets would be sufficient then a single person would easily infect pretty much everybody taking a bus with her/him together. R0 would be much larger.

</comment></comment><comment><USER3> It really doesn't help that the WHO and various governments lied to people about masks... many people already distrust these authorities and think it's a hoax/conspiracy. Good luck now that we know they lied about the masks! I get why that was done, but maybe there would have been a better way like explaining hospitals need the masks but you can make some yourself at home or use a scarf to mitigate the effects.

</comment><comment><USER4> Ironically there's a law against wearing masks in public in Austria

[https://en.wikipedia.org/wiki/Anti- mask_law#Austria](https://en.wikipedia.org/wiki/Anti-mask_law#Austria)

<comment><USER5> Masks are explicitly allowed. They cleared that up right aftre the law come to effect.

""" kein Verstoß gegen das Gesichtsverhüllungsverbot vor:

Mund- und Nasen-Schutzmasken, Atemschutzmasken; Gesichtsverhüllung zum Schutz vor Frost """

Roughly translates to:

""" It is no violation of the ban on face covering:

Mouth and nose protective masks, respiratory masks; Face covering to protect against frost """

Source[1] [https://www.oesterreich.gv.at/themen/leben_in_oesterreich/au...](https://www.oesterreich.gv.at/themen/leben_in_oesterreich/aufenthalt/Seite.120251.html)

</comment></comment><comment><USER6> To everybody complaining about shortage: You really don't know anyone with basic sewing skills?

Here in Slovakia masks or similar face-covering measures are semi-mandatory for 2 weeks already (mandatory since today) and it's non-issue. Many people know how to sew a decent-looking one using instructions from internet and some leftover cloth.

<comment><USER7> I do know people with sewing skills but I can't go visit them during social distancing :-/

<comment><USER8> Sew one yourself, it doesn't need to be perfect.

</comment></comment></comment><comment><USER9> We (people in Austria) are under lockdown now for 15 days. Allowed to go to the supermarket and short walks with the live-ins. It is clear that it will not be enough to get rid of the virus. To get R<1 we need addition restrictions and actions. This is just one of the next steps.

<comment><USER10> Yes. Countries that have managed R<1 have their population wearing masks in public.

</comment></comment><comment><USER11> I'm in Thailand right now and everyone even the expats are wearing them. Why? Because the law in our local jurisdiction has mandated that if you are outside you must wear a mask. And if you don't, the police will fine you and can arrest you. They even set up checkpoints a couple of days after it was announced and now everybody wears a mask. It's great, actually

<comment><USER12> How has Thailand handle production? In America, masks are nowhere to be found, and ordering the online takes a month or longer.

<comment><USER13> Asian countries already have a culture of wearing face masks in public. I imagine they already have the supply chains set up whereas America is needing to either import or build up the production capacity.

</comment></comment></comment><comment><USER14> About time. The purpose of covering your face, even with a simple mask was misunderstood for too long: It's not protecting you, but others.

<comment><USER15> Sure, but how are people supposed to wear masks if they can't buy them anywhere?

<comment><USER16> They will be provided at the doors of the supermarkets

</comment></comment></comment><comment><USER17> This seems like such a no-brainer. 3Blue 1Brown did a video on epidemic simulation, and central markets, places where people in the region congregate, are major factors in the the rate of disease spread. Limiting the transfer coefficient in these places has the key to reducing this impact, assuming you can't prevent people from going there.

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

</comment><comment><USER18> All of this confusion regarding the usefulness of masks simply because of WHO's misinformation.

Lex Fridman made this research.based video about masks that you might find useful [0]. Take a look at the data; even a lousy scarf can provide _some_ protection against virus particles.

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

<comment><USER19> I think the important part of the discussion is to separate the concept of protecting others from the concept of protecting yourself. As a population we can likely protect each other somewhat by wearing poor/basic masks. If it reduces spread by a few percent it's worth it _so long as masks are available without starving supplies in healthcare_.

Healthcare staff must protect themselves as well, so need real protective masks. So long as those masks aren't available to healthcare, we should avoid buying them in the rest of the population. In the meantime perhaps a lousy scarf can be used.

</comment></comment><comment><USER20> Are there masks for sale then? Here in The Netherlands there are no n95 masks available for the average person. I understand that hospitals and 1st aid responders need them now, but in the short term I would like to be able to get some.

<comment><USER21> JFYI, the N95 masks are NOT intended for the average person anyway. (in EU they are called FFP2/FFP3)

They need face fitting and some basic usage instructions.

If not correctly fitted they won't be effective, as air (like in more common "surgical" masks) will enter (and exit) from the sides.

<comment><USER22> These masks are fairly standard consumer use in the UK for various DIY activities in the home and supplied by hardware stores as such. Note P3/FFP3 are higher standards than N95.

<comment><USER21> They are just fine if the idea is to protect oneself from dust, but here we are talking of protecting from a virus (and to protect others, so valved masks are not suitable).

Rough correspondence:

FFP2 is 94%

N95 is 95%

FFP3 is 99%

Source (an UK firm):

[http://www.ashsafety.com/tips/filterClass.htm](http://www.ashsafety.com/tips/filterClass.htm)

> Finding a suitable respirator is not just a matter of choosing a model you > like or by the cost of it. You may need to try different makes or sizes to > find one that fits without leaking around the seal and letting dust in. A > respirator that depends on face fit is ineffectual if you have a beard or > thick beard stubble. The only way you can know if the seal is good enough is > by having a proper respirator fit test. At present this is also the only way > of meeting legal requirements.

And here is (again UK firm) how a fitting test works:

[https://www.xamax.co.uk/blog/how-to-respirator-face-fit- test...](https://www.xamax.co.uk/blog/how-to-respirator-face-fit-test- guide.html)

</comment></comment></comment></comment><comment><USER23> They also said that "the medium-term goal is to wear masks everywhere".

</comment><comment><USER24> Are there any companies in America mass producing basic cloth masks right now, or at least distributing them at scale?Trying to buy one online seems to be quite challenging right now (either back ordered from Amazon, or purchasing from Etsy are the only options I have found). To be fair, I have not searched too hard. I guess I can learn to sew as well.

</comment><comment><USER25> Supermarkets in South East Asia countries like Vietnam would not even let you go in without a face mask. Similar to how lottery is a game of chance and to win it requires you first buying a ticket, if life and death are too a matter of luck then to cheat death due to this virus at least mandatorily you must first be wearing a face mask.

</comment><comment><USER26> I applaud this measure. Please stay safe, wear the mask and think of the elders!

</comment><comment><USER27> It's already compulsory in neighboring Czechia and Slovakia, not only in the supermarkets, but at all public places

</comment><comment><USER28> The good thing according to the article is that supermarkets will hand them out - I assume, for free.

</comment><comment><USER29> Homemade masks made of a double layer of tea towel cloth are not only protecting others but also protect yourself nearly as effectively as N95 masks.

The original research was made by PHE - Public Health England and the results are:

 _B atrophaeus - ~1um :_

Surgical mask 96.35% filtering

Double layer tea towel 96.71% filtering

 _Bacteriophage MS2 - 23nm :_

Surgical mask 89.52% filtering

Tea towel one layer 72.46% filtering

The full paper is on researchgate, title: "Testing the Efficacy of Homemade Masks: Would They Protect in an Influenza Pandemic?"

Also every super market should have the use of hand sanitizer obligatory at the entrance.

There is a pretty good video for simulations of the epidemic spreading [1] - it is not going to stop until we either have a vaccine or ~60% of the population have antibodies. So the choice is to sit the next 12-18months at home or we fight the transmission of the virus.

Masks cost nothing compared to the economic disaster that we are running into. The virus spreads via mouth and nose and secondary via the hands. So just stop it at the source.

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

<comment><USER30> [deleted]

<comment><USER29> As I wrote:

Bacteriophage MS2 - 23nm :

Surgical mask 89.52% filtering

Tea towel one layer 72.46% filtering

-> Thus still ~70% filtering of 23nm particles for the one layered towel. They didn't put the number for a two layered towel in there, I wonder if it did beat the surgical mask.

<comment><USER30> >As I wrote:

>Bacteriophage MS2 - 23nm :

oops, misread the units!

</comment></comment></comment></comment><comment><USER31> so late? neighboring Czechia has mandatory masks (or anything covering your nose and mouth) in every public space at least for a week, I think Slovakia also already for quite long time

<comment><USER32> Czechia made it mandatory because government made really huge mistakes in first 2 weeks* and they are scared and panicking because health care system is underfunded for long time. There is no reason to wear mask in every public space as everything except centers of big cities is empty during lockdown. It makes sense inside but not in parks and empty streets. It just forces people to waste masks which are not in huge supply globally.

* In February prime minister forbid hospitals to buy face mask and decided that he will buy them centrally and than distribute them to hospitals. In the begining of March when coronavirus appeared in Czech republic he also sent finacial control against face mask importers to ensure that they are not selling anything. He wanted to look as savior of the country but he wasn't able to buy any masks so for 2 weeks there were only 10 000 mask from reserves for the whole country. People started to sew mask at home and partially saved situation. After that prime minister made wearing mask mandatory which in my opinion is mainly PR to make the home made masks look like his own initiative. He also spreads fake news about Germany, Austria and other west European countries saying that they are not responsible and that they just copy Czech measures when it is too late. But in reality his administrative is really struggling without any plan and his main efforts go to PR.

<comment><USER31> the point with wearing masks at all times in public space is you don't have to take it off and put it on all the time you pass around someone, you never know when there will be someone around you and even if you are alone you can still cough the virus on surfaces where it can survive at least for few hours touched by other people

I agree it's quite pointless for healthy not coughing person, but it's just easier to order everyone to wear them than checking one by one who is sick and who is not.

not sure how is mask wasted, if it's cloth mask you can just microwave it or boil it, if it's medical mask you can just leave it on sunny surface until it's for sure clean again or microwave it, same applies to respirator

<comment><USER32> Doctors in television told us that we should always throw away used medical masks and respirators as they might contain viruses and you are risking infection if you use them again.

<comment><USER31> TIL virus in Czechia lives on surface infinitely

in rest of the world maximum 9 days

</comment></comment></comment></comment></comment><comment><USER33> An obligation to buy something once you've touched it seems sensible too.

<comment><USER32> It is enough if you do not touch your face and clean your hands at home. It will not go into your body through skin.

<comment><USER33> Ok, but theoretically the virus could end up on a box of cereals if someone didn't wash their hands. At that point, having breakfast could be hazardous.

</comment></comment></comment><comment><USER34> Right during a global mask shortage.

So how does that work? No mask, sorry no groceries for you.

<comment><USER16> This is the basic cloth masks that are easily manufactured, wearing them can protect -or reduce the chance- others in the same space from catching the virus.

<comment><USER34> >This is the basic cloth masks that are easily manufactured

I get that. Just saying I don't think I could easily obtain one without going to a couple of shops (I'd need to try a few - no idea who stocks masks). People running around without masks to obtain masks sorta defeats the point.

<comment><USER16> Not really, they will be available at the doors of the supermarkets / locations that are allowed to stay open.. so no worries of anyone looking around for them.

</comment></comment></comment></comment><comment><USER35> Are the masks available in Australia? They aren't in Canada

<comment><USER36> The thread is about Austria, not Australia; the article states that supermarkets will be providing masks free of charge.

<comment><USER35> Whoops. Still ..</comment></comment></comment>


Apple vs. Saga #12 - <AUTHOR> http://fionastaples.tumblr.com/post/47554250280/annoying-press-release-thing-apple-vs-saga-12#_=_

<comment><USER2> Is it just the actual "buying" part that's banned? Wonder if I can buy it from the Comixology website, then sync to iOS via the app.</comment>


Haskell improves log processing 4x over Python - <AUTHOR> http://devblog.bu.mp/haskell-at-bump

<comment><USER2> The work sounds very cool (and they are hiring), but (only) a factor of 4 speedup over Python is (to repeat a phrase from elsewhere today) like boasting that you're the tallest midget ;o)

<comment><USER3> Hi, article author here.

It's important to note that this particular job is largely bound on a.) I/O and b.) format serialization tasks. Both Python's BSON and JSON libraries are mature and have their critical sections written in C, so a speedup of 4x is still noteworthy. The Haskell version, on the other hand, is pure Haskell.

<comment><USER2> Neat - thanks.

</comment></comment></comment><comment><USER4> Sounds great. I'm a very big Haskell fan.

I'd love to point people to this when trying to convey some advantages of Haskell. To make it more compelling, can you expand some on the downsides and maybe obstacles you encountered?

The thing I'm unsure about, is how difficult it would be for (very) talented developers to just jump in. We have really talented developers, and everyone is super time-constrained, so many are wary of diving into a language as different as Haskell. Was it hard for your developers to figure Haskell out? Did your previous use of Scala help? How long did it take them to dive into Scala?

<comment><USER3> I would say the two real barriers to writing effective Haskell projects are a.) "getting" monads, and b.) understanding the implications of laziness, especially with regard to space leaks and unconsumed thunks. Everything else isn't that big of a deal.

It's all much easier to digest, though, even for "really talented developers", if they have some experience with another functional language first. OCaml is a nice stepping stone before digging into the abstractions involved in understanding Haskell's powerful type system. Scala is good too, but having the object stuff mixed in there can lead you to rely on some patterns that aren't going to be available in a non-OOP language. I think the scheme/clojure path isn't bad either, but it's probably ideal to spend some time in the "statically typed" wing of the functional universe before going to Haskell.

<comment><USER5> Could you say more about why "getting" monads was needed?

I came to Haskell with no understanding of monads, started writing code, and eventually used my knowledge of Haskell to learn about monads. Not understanding monads just meant I was lacking a useful design pattern, and found certain API docs confusing, but it didn't stop me from writing reasonable code in most circumstances.

On the other hand what you describe in your (awesome) blog post is a more significant Haskell project than any I've worked on, so I'd be interested to hear your experience.

I've not really written my _own_ monad, or properly looked into monad transformer stacks, and I'm aware that I could probably clean up a lot of code using them - is that the sort of thing you mean?

<comment><USER3> Sure, I can say more--put bluntly, and despite anything you might hear to the contrary, you basically _do_ need to grok monads and monad transformers to tackle any nontrivial project in Haskell. Even if only to understand the code and APIs of libraries your application will interact with.

Basically, you can't swing a dead cat without hitting monads in the Haskell library ecosystem; therefore, you'll need to know what they are.

<comment><USER6> Catch phrase thief!

<comment><USER3> You're just jealous I worked it in so naturally.

</comment></comment></comment></comment></comment></comment><comment><USER7> The author is mostly write about the usage cases of Haskell, but simply "systems" is a bit misleading because there are certain performance characteristics of lazy programs which make them bad choices for some systems programs. Any type of real-time system, for example, can suffer unpredictable performance in critical sections, which is pretty undesirable.

<comment><USER8> Not to argue the example, but Python's garbage collection disqualifies it for real-time systems as well. In fact, I'm having a hard time find a "system" task for which Python (as a language) is qualified by Haskell is not.

<comment><USER7> Python is not a systems programming language.

<comment><USER9> Maybe not, but it is certainly used as one. Everything from package managers (yum) to operating system installers (Anaconda) have been written in Python.

Besides that, the grandparent is right: possibly every situation where Python was used as a systems programming language, Haskell could fit in (and more).

<comment><USER7> I think you're confused to what "systems" programming entails. User-space packaging with a bunch of scripts is not systems programming. OS installers is not systems programming.

To give you an example of what is systems programming, I have helped developed operating systems kernels, virtual machine monitors, and distributed networked systems. All of these things would be considered systems programming.

See <http://en.wikipedia.org/wiki/System_programming> for more information.

<comment><USER9> That's just one definition. Read up on Ousterhout's dichotomy:

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

<comment><USER7> You should just read <http://home.pacbell.net/ouster/scripting.html> (his original paper) because all his statements about systems programming languages reinforces my claim that Python is not a systems programming language.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Are the logs being read from disk? In my experience, python is highly optimized for reading (possibly compressed) files from disk. If your infrastructure keeps logs in memory, python will lose this advantage and compete on computational performance where Haskell has the advantage. This is important for those of us who grind logs on disk and might be considering a language switch.

<comment><USER11> What do you mean by optimized? Python makes the same read and write syscalls everyone else does.

What you're probably observing is Python's slow code generation being masked by the inherent slowness of I/O.

<comment><USER10> _Python makes the same read and write syscalls everyone else does_

Except, when python's pants are on, it makes gold records.

I haven't looked to see if there are any explicit optimizations, but your statement is ridiculous; an effective IO strategy can have an enormous effect on performance.

<comment><USER11> I'm sorry, what? Just being disagreeable is not an answer. What does "IO strategy" mean? You are being incredibly vague and unhelpful.

Reading data from a file handle into a buffer is a trivial operation. It's what you do with that data afterwards that is important. In C (or Go) you have complete control over what happens next. As for Python, I don't know what happens, but I don't see how it could possibly be more efficient than any other sane language.

<comment><USER10> _Reading data from a file handle into a buffer is a trivial operation._

If that is all you're doing, then yes; there isn't a much more efficient way of doing that.

 _In C (or Go) you have complete control over what happens next._

It is up to the programmer to know what to do next. Does haskell strike you as a language of micromanagement? Python can sometimes be multiples faster than command line grep. I haven't looked into why, but I have some ideas.

 _You are being incredibly vague and unhelpful._

If you don't understand what I'm talking about, it doesn't make /me/ wrong. And just saying so is also not an appropriate response. I had a specific question that was answered by the OP, and was useful to me.

Hacker News comment threads are rarely a place of education, but I will reinterpret what you said as a question.

An IO strategy is how and when you make those system calls. Reading from disk takes a vast amount of time, during which you can be doing computation. To be fast, you should be asking for the appropriate amount of lookahead, at the correct offset. Is that 4k? 1Meg? 100Megs? 1GB? Do you use threads for this? Can you skip any of the input stream? Do you let the operating system, programming language, library, or program code decide how big the read is? Where that data is stored after being read from disk is also important. Especially fast strategies use mmap to avoid copying from kernel space into user space. And of course everything is always chunked at specific intervals, so knowing where those are can sometimes reduce the number of calls. The ability to optimize for these is one thing that makes dedicated database software so successful.

It is a dark art, and it is not expected that the average person know these things. If you happen to be the kind of person working on a programming language, it could be useful to be aware of them. Here are some quick links, but there is a vast amount written on the subject.

[[http://lists.freebsd.org/pipermail/freebsd- current/2010-Augu...](http://lists.freebsd.org/pipermail/freebsd- current/2010-August/019310.html)] [<http://tangentsoft.net/wskfaq/articles/io- strategies.html>]

</comment></comment></comment></comment></comment><comment><USER12> I'd be interested in hearing more about how the author is using the resulting data set. Doing extractions at event generation time can be very useful if you know what you are after in advance, but not so good for adhoc analysis.

Any reason why you didn't use Hadoop for this, then run batch jobs to extract summaries?

<comment><USER3> Yeah, the whole pipeline is actually quite more faceted than can be deduced from this summary. This stage actually just persists the events into a consolidated transaction log. Then, there are secondary processes that scan these transaction logs (in batch) and distribute data into various databases for system, business, and user analytics. I can't go into too much detail there, but the actual digesting and reporting side is more involved.

<comment><USER12> I'd like to hear more about the use case if you have time, and can talk about it. I'm kordless at loggly dot com.

</comment></comment></comment><comment><USER13> Awesome work. If you haven't heard about Tim Bray's WideFinder challenge, it was really interesting.

[http://tartarus.org/james/diary/2008/06/17/widefinder- final-...](http://tartarus.org/james/diary/2008/06/17/widefinder-final- results)</comment>


SpaceX's Falcon 9 explodes on Florida launch pad - <AUTHOR> http://www.theverge.com/2016/9/1/12748752/spacex-launch-site-explosion-cape-canaveral-florida <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=12405006](https://news.ycombinator.com/item?id=12405006)</comment>


Aardvark launches Social Search on the Web - <AUTHOR> http://blog.vark.com/?p=229

<comment><USER2> So they've created a Web front-end for the existing Q+A service? I seem to remember this already existing, but I could be mistaken. Perhaps this is more of a marketing move.</comment>


Australia's Entire GPS Navigation Is Off by 5 Feet - <AUTHOR> http://www.atlasobscura.com/articles/australias-entire-gps-navigation-is-off-by-5-feet <comment><USER2> Previously: [https://news.ycombinator.com/item?id=12188144](https://news.ycombinator.com/item?id=12188144)

</comment><comment><USER3> But GPS is using WGS84 datum (usually). And they're changing their own local datum. Nothing will be changed for GPS. It will still use WGS84.

Or there are weird Australian upside-down phones and navigators where GPS calculates position in their local datum?

<comment><USER4> Official local datum is GDA94, which is usually within about a metre of WGS84. /me pats pocket protector

I think the idea here though is that the underlying terrain has scooted around a bit in the last twenty years, so a new datum would save on the need to print new maps and update the databases containing trig points and such. New coordinates can be labelled as explicitly aligned to the new datum, get some versioning happening.

Unfortuately it seems impossible to confirm this, because the Geoscience Australia website does not appear to make any reference to this purported new effort that's been making the rounds of late. New website layout, maybe their CMS is broken.

<comment><USER5> This is similar to the difference between WGS84 and NAD83 (North American Datum 1983). WGS84 is defined by the average of stations world wide while NAD83 is defined in a way that it is relatively constant across North America. NAD83 initially matched WGS84 but their difference increases each year by a small amount (negligible for most consumer use). Of course there are other differences between NAD83 and WGS84 as well (reference ellipsoids) and often they are treated as the same by non-cartographers.

</comment></comment></comment><comment><USER6> ""We're fast approaching the day when people will expect accuracies of centimeters in real time out of their handheld devices and then we'll see a lot of head scratching as things no longer line up," Smith told Scientific American three years ago. It looks like that day has arrived"

Has that day really arrived?

I doubt, given the fact that most consumer navigation systems are reliable (directions on Google Maps, pick up on Uber and alike) as long as they are not being blocked by major hurdles.

<comment><USER7> Think AR applications. Anything that requires accuracy that is not a "Pokemon Go" game would need that.

</comment></comment><comment><USER8> Ugh, all the recent articles I've seen on this are subtly or entirely wrong about the reasons for a datum change (though this article is a lot better than most).

It's possible to account and correct for most of the 1.5 meters when transforming between GDA94 (the current Australian national datum) and ITRF2008 (effectively what's used by GPS), and the transformation published by Geoscience Australia is particularly simple, having only 14 parameters.

If you want to know about this from a reliable source, the ICSM site is the place to go. They actually know what they're talking about, and their faq in particular explains a lot of points of jargon and convention rather clearly: [http://www.icsm.gov.au/gda2020/faqs-2.html](http://www.icsm.gov.au/gda2020/faqs-2.html)

</comment><comment><USER9> and shifting about 7cm per year. I did the math last night and realized that Australia has moved further than I am tall since my birth. For some reason that messed with my head.

<comment><USER10> Wait until it shifts underneath you while you're standing on it and see how _that_ messes with your head. The first time I experienced a very minor earthquake the feeling did not leave me for weeks.

<comment><USER9> I grew up in California...it has to be a big one to even wake me up nowadays.

<comment><USER10> Here's to hoping you sleep soundly then!

</comment></comment></comment></comment><comment><USER11> I wonder if google maps and OSM will be more accurate before or after the change. (I guess after, be because the maps are probably based on satellite images)

<comment><USER12> It depends on how that imagery has been rectified. If they were aligned to match up with the previous system, then any info derived from them would show the offset.</comment></comment>


The Science of Addictive Junk Food (2013) - <AUTHOR> http://www.nytimes.com/2013/02/24/magazine/the-extraordinary-science-of-junk-food.html <comment><USER2> Reading this I look up to see a Domino's pizza truck, on the side is just a lush, deep red fresh tomato and the slogan: "Enjoy our fresh ingredients". The whole thing reeks of fresh, healthy food. Yet, The pizza feels fatty, makes you thirsty from the extreme salt content and the amount of sugar is crazy for something that is normally considered savory [0].

[0] [http://www.nourishinteractive.com/system/assets/general/free...](http://www.nourishinteractive.com/system/assets/general/free- printables/Menus/Dominos/dominos_nutrition.pdf)

<comment><USER3> The sugar content didn't look so bad to me, but I found the table in the upper left corner humorous:

        Recommended Pizza Serving Sizes:
        </comment></comment><comment></comment><comment></comment><comment>+</comment><comment></comment><comment>-
                          |    Small
        </comment><comment></comment><comment></comment><comment>+</comment><comment></comment><comment>-
        Thin crust        |  1/4 pizza
        Hand Tossed       |  1/6 pizza
        Deep Dish         |     n/a
        Brooklyn          |     n/a

How can the "recommended serving size" (aka "portion size", right?) be not applicable? Are they telling me it's not fit for consumption? Pretty sure I'm not getting it, not a native speaker, etc.

<comment><USER2> If you have bbq sauce on a small pizza (who eats a small pizza?) you already have 22 grams, add some ingredients and you get another couple of grams making a woman pass her daily allowed intake for added sugar (25 grams [0]). That means you shouldn't have any desert or soft drinks with it. No cereal that day, no muffin, nothing.

Actually, a medium pizza crust + bbq sauce puts even a man over his limit of 30 grams per day. For a large pizza? Better not eat any bbq sauce at all.

[0] [https://www.healthline.com/nutrition/how-much-sugar-per- day](https://www.healthline.com/nutrition/how-much-sugar-per-day)

<comment><USER4> To me the fact you'd eat a pizza with bbq sauce is already disturbing. It has to be one of the biggest sources of sugar in existing savoury sauces.

What's wrong with tomato sauce ?

<comment><USER2> Nothing imho, but still it's not good enough and they add sugar. Probably more and more because people get used to the sweetness of it.

</comment></comment></comment></comment><comment><USER5> Previous discussion, from 2013: [https://news.ycombinator.com/item?id=5279307](https://news.ycombinator.com/item?id=5279307)

<comment><USER6> That's one of the more hotly debated comment threads I've seen on this site. Lots of "You are wrong" and "You don't understand". People take their food seriously!

<comment><USER7> I think this is one of the major problems with the food and nutrition industries. Most don't have a factual understanding of what they're talking about and are willing to spout off whatever they were told by this or that person. There's no real consensus. The situation honestly feels worse than global warming. Everyone just takes their own stances on it or the one that aligns with them and then doesn't bother actually looking into why they are right or wrong. It's worrying.

There are also just so many variables it's hard to keep track of what _is_ right or wrong anymore.

</comment></comment></comment><comment><USER8> Wow.. Surprised to see no mention of "fiber"! The whole problem with processed foods is stripping off of essential dietary fiber. When you take fiber off of food, it digests quick rising blood sugar levels and feeling hungry quick - reason why they are called junk foods.

So many scientists suggesting to fix fiber in the diet to address the issue and yet no single mention of it in the entire article! No wonder Americans are misled.

[https://youtu.be/EtnTuTX4L24](https://youtu.be/EtnTuTX4L24)

</comment><comment><USER9> Old article, should have a (2013) on it, BUT a great article, and in fact, this is adapted from an excellent book I can highly recommend called "Salt, Sugar, Fat"

[https://www.amazon.com/dp/B00985E3UG/ref=dp-kindle- redirect?...](https://www.amazon.com/dp/B00985E3UG/ref=dp-kindle- redirect?_encoding=UTF8&btkr=1)

<comment><AUTHOR> whoops. I also missed a word in the title. Can't seem to edit once submitted.</comment></comment>


The Weight of Guilt: Competitive bass fishing cheaters - <AUTHOR> http://grantland.com/features/bass-fishing-cheaters/

<comment><USER2> Interesting article, but the anachronic/non-linear ordering of events really increased the cognitive load for me, for seemingly no good reason.vIt just seemed like the temporal leaps occurred too frequently and didn't contribute to the story-telling aspect of the story. I suppose it didn't help that a lot of the people in the story had 'last names as first names', which had me checking back to see if I was being introduced to a new person or referencing something already introduced.

Interesting subject matter though. Now I need to research more into anti- cheating measures for fishing competitions and see what is done...</comment>


The arXiv of the future will not look like the arXiv - <AUTHOR> https://dx.doi.org/10.22541/au.149693987.70506124 <comment><USER2> The DOI always struck me as a scam. Instead of just keeping the document available, you have to keep the document available AND keep the DOI pointed at it.</comment>