Ask HN: Please suggest some good books you have read recently - <AUTHOR> Hi,
Looking for book recommendations. I generally prefer fiction, but any Good contemporary non-fiction would also do.
Thanks. <comment><USER2> Changeling (The Dark Fae Series Book 1)

Faery Tales (The Dark Fae Series Book 2)

By McKenzie Rae

Book 2 was just released last week. I sat down this morning to read and as of this evening I am about 200 pages in. It really sucked me in.

Disclaimer. I am the father of the author. But when she was younger I would read something she wrote and if she asked for my reaction I was honest. I would say, it is really good for a 14 year old. That would drive her crazy. But I would tell her I will always give you my honest reaction.

When she was picked up by a publisher in her early 20s, she was kind of bashful about me reading her work. It was so gratifying to be able to walk in about 2/3 of the way through that first published novel and tell her that even though it wasn't my preferred genre I had started to care about the characters and the plot and I had to finish.

I feel like each book has gotten better. This latest book captured my attention within the first few pages and I spent way more time reading it today than I originally intended.

Sorry if anyone is offended at me promoting my daughter's work.

</comment><comment><USER3> The Witcher Saga by Sapkowski. For the first time in years I felt like I got really "lost" in a book again and it was fantastic. I could do that easily when I was kid/teenager, now it's much harder to achieve for me.

<comment><USER4> Strongly agree. Just started reading it myself. One note for people picking it up: the English translation for 'The Last Wish' is not great but, if you power through it, all the remaining books are fantastic.

</comment></comment><comment><USER5> Wrong: Why Experts Keep Failing Us - and How to Know When Not to Trust Them by David H. Freedman

\- Painfully relevant to the current pandemic. Explains why the experts aren't!

The End of Average by Todd Rose

\- Pulls the curtain(s) aside from education, corporations and the non-science of "scientific management". Why Taylorism continues to dominate corporate and social life today. Explains many features of our lives (both civic and corporate) that were "baked into" society decades ago, are rarely examined (indeed rarely _noticed_ ) and are ripe for replacement.

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

The Miraculous Fever Tree by Fiammetta Rocco

This reads like (and should be made into) a BBC series: story after story of generations of human suffering from malaria, which remains far more deadly than Covid-19. Where else do you read that merely _living_ in Rome before the existence of a cure for malaria was almost guaranteed to shorten your life significantly and end it badly? Imperial Rome, the center of Roman civilization! Rome, the center of the Catholic Church during and after Rome fell and into the Early Middle Ages! And this disease was endemic not only in Rome but to most of southern Europe extending up to Britain.

[https://www.independent.co.uk/arts-entertainment/science- mal...](https://www.independent.co.uk/arts-entertainment/science-malaria-in- britain-1361345.html)

</comment><comment><USER6> This is truly amazing work. All possible shit is included, all art and drawings. Engineering solutions and fresco painting methods recorded and analyzed.

[https://www.amazon.com/Leonardo-Vinci-Walter- Isaacson/dp/150...](https://www.amazon.com/Leonardo-Vinci-Walter- Isaacson/dp/1501139150)

</comment><comment><USER7> The Expanse series is incredibly rich, textured, deep and fulfilling. Highly recommended if you're into sci-fi

</comment><comment><USER8> Fiction:

\- The Expanse series. Long but easy read. Great science fiction. I'm on book 5 so far.

Non-fiction:

\- Bullshit Jobs. Even if you don't agree with the Author's premise in the end I think this book is thought provoking and worth reading.

\- Dying for a Paycheck. This book explores how work affects our health.

</comment><comment><USER9> If it's for web and tech, I'm reading WTF BY Tim. Really good to read for a person who went through tech times. [https://www.goodreads.com/book/show/34017076-wtf](https://www.goodreads.com/book/show/34017076-wtf)

</comment><comment><USER10> A time for gifts by Patrick fermor

I became interested in fermor after reading about his kidnap of a German general during ww2.

This books is about his walking across Europe during the 30s. Well written snapshot of this period

</comment><comment><USER11> check out books by Author Piers anthony

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

and Henry Beam Piper

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

</comment><comment><USER12> A Guide to the Good Life by William B. Irvine

</comment><comment><USER13> Blood Meridian by Cormac McCarthy and Letters to a Young Contrarian by Christopher Hitches. Both terrific writers.

</comment><comment><USER14> Countdown to Zero Day - A must read on Stuxnet which plays out like a spy thriller.

</comment><comment><USER7> Humankind: A Hopeful History by Rutger Bregman.

Absolutely fascinating and refreshingly positive.

</comment><comment><USER15> The Three-Body Problem

</comment><comment><USER16> We Get Confessions</comment>


Lightweight Alternatives to Bootstrap - <AUTHOR> http://www.hongkiat.com/blog/bootstrap-alternatives/ <comment><USER2> The author says 'Skeleton has finally gotten a facelift' yet development stopped 2 years ago when Skeleton's main contributor went to work with Bootstrap. Am I missing something in that statement? Note: I still think Skeleton is fantastic

<comment><USER3> I don't see a date on the post. That and a few other things have me thinking it's a relatively ancient post, maybe?</comment></comment>


Any claim without a URI should be treated as suspicious - <AUTHOR> https://shkspr.mobi/blog/2020/07/any-claim-without-a-uri-should-be-treated-as-suspicious/ <comment><USER2> As many of those who have read academic papers know, even claims with citations are often suspicious. Time and time again I've found cited sources that don't say what was claimed.

Sometimes, citations are not specific enough (e.g., citing a huge book rather than the specific page with the evidence). So, better than giving a URL would be to give a URL with a "fragment" if possible, i.e., #id.

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

Chrome can be even more specific now with this extension: [https://chrome.google.com/webstore/detail/link-to-text- fragm...](https://chrome.google.com/webstore/detail/link-to-text- fragment/pbcodcjpfjdpcineamnnmbkkmkdpajjg)

<comment><USER3> > Time and time again I've found cited sources that don't say what was > claimed.

I've seen that here on HN, too. Person 1 claims X. Person 2 asks for evidence. Person 1 posts a URL, as if it's evidence for X. But when you read the contents carefully, you realize that it doesn't actually provide any evidence for X. It provides evidence for something that's somewhere in the same general topic as X, but that's not what Person 2 asked for.

<comment><USER4> Just as often person 1 says something, providing no citations (but living in a world where we know that anyone can support/debunk with their own searches). Person 2 comes along and posts a retort with a number of citations, properly linked in the footer of their post.

HN upvotes person 2. Downvotes person 1 to the nether. Clearly they were debunked.

Only person 2's citations were noise [1]. They were just marginally connected nonsense [2] to add gravity to whatever else they were claiming as a credibility multiplier. They were playing the crowd [3], knowing that extraordinarily few will ever bother reading anything, and just want to browse past and give passing judgments.

This plays out on HN daily, and is spectacularly effective.

\----CITATIONS-----

[1] - [https://processing.org/reference/noise_.html](https://processing.org/reference/noise_.html)

[2] - [https://www.vanityfair.com/news/2020/06/inside-the-cult- of-t...](https://www.vanityfair.com/news/2020/06/inside-the-cult-of-trump-his- rallies-are-church-and-he-is-the-gospel)

[3] - [https://medium.com/skeptikai/the-real-story-behind-the- quote...](https://medium.com/skeptikai/the-real-story-behind-the-quote-theres- a-sucker-born-every-minute-1db9a7220d34)

<comment><USER5> Is it really so prevalent? I've followed up HN citations on topics I disagree with, and I've rarely found them to be rubbish.

<comment><USER4> I've seen it enough to chuckle when I see it now. In any scientific or medical discussion it is rampant. People will cite things to support claims they are making, but the things they cite don't concur at all. They might be related, but the obligation is on the reader to go through and parse whether that giant research paper supports what they're claiming which is a task that extremely few will undertake.

</comment></comment></comment></comment></comment><comment><USER6> I hate URL fights.

I give little extra value to people providing links with their clams.

I largely given up providing links to information when called out as well. It's not worth the time.

Discussion on the internet is broken in most places (HN is less broken than most). I find little value providing URLs. Much of the time I provide them, few folks seem to read it, fewer actually want to read it in an intellectually honest way and usually they respond with some bonkers links of their own that don't say what they think they're saying.

Much (not all) of the time I've given up providing links to basic information it doesn't change the conversation in any meaningful way. It's usually just an argument where folks who feel like URLs are some sort of scoring device.

I get the idea put forward here, but I don't know if it makes sense in an age where you can find an URL that says anything and discussion on the internet is so bad that nobody is really reading them anyway.

<comment><USER7> The challenge with the link fights is often about the difference between _data_ and _conclusions_.

For example, if I claim that "marriage has a positive impact on men" then cite a bunch of data showing that married men live longer and make more money on average etc... Have I truly proven my _conclusion_ that marriage benefits men? Or does the same data show that healthy men with jobs are more likely to get married? Yet, I will stubbornly say that citation makes the conclusion unequivocal.

9/10 times the disagreement isn't data/citations but conclusions or criteria.

<comment><USER8> > _9 /10 times the disagreement isn't data/citations but conclusions or > criteria._

Or assumptions behind the cited data, and effect size.

What I've seen very often (particularly around sketchy nutrition discussions about "natural" things and "evil chemicals") is that quoted research seems to support a given conclusion, but under assumptions that do not apply to the argument at all, or significance is so low as to make the result useless.

Some study showing that a bunch of mice got cancer after getting injected with more artificial sweetener than you'd drink in a year does not show that artificial sweetener causes cancer in men. A study that says you get 0.003% greater chance of cancer from eating red meat every day has an effect size so small it's probably bullshit, but even if, 0.003% increase is not something worth caring about _at all_.

</comment></comment></comment><comment><USER9> I would've agreed with this a bit more if we hadn't started banning content we don't like from the internet. Here I am without a link, but chasing away groups we don't agree with to the dark side of the web makes it very convenient for the current political saints to shape our views. I take any claim with URIs or without, try to think about who gains from such perspectives, weigh it with past experiences. I'd hate to just see a URI and go "OK, I am convinced ty" and automatically pick up the pitchforks against those without. I doubt even newspapers did this. It sounds like a good idea but only on an open internet and not what we have today.

<comment><USER10> > _I 'd hate to just see a URI and go "OK, I am convinced ty" and > automatically pick up the pitchforks against those without._

Something to particularly consider are circular references. If you make the reference graph large enough then it's easy to fool people into thinking that there is a valid source for a claim when there actually isn't one. All you have are references that refer to one another. It gets particularly bad when some of those references end up as dead links, because then you can't even find out whether the chain ended up at a valid source or not.

Related to this are long reference chains that end up on a shaky source. A poorly done study (or simply a bought one) can end up being referenced in a long chain. The links in the chain might end up giving more credibility to the source.

<comment><USER11> I don't think you even need a large graph! People have observed this happening with just two nodes, where one of the nodes is Wikipedia [1] — some website states information they learned on (or copied from) Wikipedia, and then Wikipedia cites that website as a primary source.

[1] [https://slate.com/technology/2019/03/wikipedia- citogenesis-c...](https://slate.com/technology/2019/03/wikipedia-citogenesis- circular-reporting-problem.html)

<comment><USER12> Then hundreds of websites cite the wikipedia article, some without revealing their source, then become additional citations for the Wikipedia article.

</comment></comment></comment></comment><comment><USER13> Judge me all you want, but I would have clicked on "dirty hippy vibes"...

Honestly, I don't really believe in ubiquitous misinformation being as a large problem as it is made out to be. Everyone arguing for more content regulation had their own motivations or was in some kind of panic.

There will always be people misinformed on the net. Doesn't mean I want a babysitter cleaning everything up, even if I thought they wouldn't just want to suppress dissidents.

I have no facebook account and people say it is really bad there, but I also think major news networks spread bullshit in regular intervals. Doesn't mean everything they report is bullshit, but the normal citizen would be cancelled already.

<comment><USER14> I'm not sure where you got the impression that I wanted people to clean up misinformation from the web. That certainly wasn't my intent.

Perhaps you and I move in different social circles - but I get a lot of forwarded "claims" on WhatsApp and Twitter. Well-meaning people who see an image with some text on it and send it to their friends & family.

My blog post is mostly aimed at them - showing how easy it can be to check sources.

<comment><USER15> I find much of that sort of instant messaging communication is less about informing others and is more about social signalling. The sender is asking for emotional support and social solidarity.

<comment><USER16> What are you basing that on?

<comment><USER15> My understanding is that text messaging is rarely used for knowledge sharing, and is primarily used for social bonding[0]. In my own experience, I never receive such messages from individuals that aren't aware that I already agree with their intended interpretation.

0: [https://www.researchgate.net/publication/221270858_A_large_s...](https://www.researchgate.net/publication/221270858_A_large_scale_study_of_text- messaging_use)

</comment></comment></comment></comment></comment><comment><USER17> Completely tangential, I never understand why people use URI instead of URL. He obviously means URL and goes an abstraction lower. You could also say without the corresponding internet uniquely scheme or whatever.

Sorry for the rant. But I am missing something?

<comment><USER14> I'm the author of the blog post. It's a good question but, yes, you are missing something. Mostly me being an idiot.

[https://shkspr.mobi/blog/2020/03/it-is-spelled- url/](https://shkspr.mobi/blog/2020/03/it-is-spelled-url/)

I usually spell it upper-u upper-r lower-L specifically to annoy both sides of the argument.

(I'm not sure why the submitter substituted the l for I.)

<comment><USER18> > (I'm not sure why the submitter substituted the l for I.)

Sounds like they fell victim to your deliberate trolling. Is that not an expected outcome?

I, for one, am amused at the implication that we should trust an inaccessible file:// link...

</comment></comment></comment><comment><USER19> Any claim _with_ a URI should also be treated with suspicion.

There is plenty of reliable information locked away in offline books and government documents and all kinds of other non Google-able locations. This is true even for brand new information (which is why we continue to have "leaks"). Meanwhile there is plenty of misinformation with URIs.

I would go so far as to say online status is almost orthogonal to accuracy, except that in theory at least online information is more readily disproven.

(Never mind that the whole core example of the article is off. The sketchy unsourced image also has a URI.)

<comment><USER20> > Any claim with a URI should also be treated with suspicion.

Agreed. I've noticed a huge uptick of "here is a random YouTuber's 45 minute rant about X" used as "evidence" in discussions. Opting to not watch it in its entirety is then dismissed as being unwilling to discuss; watching it and picking it apart leads to "oh, but you haven't seen his OTHER videos".

<comment><USER21> Sounds like run-of-the-mill bad faith discussion :/

</comment></comment></comment><comment><USER22> Not a URI -- a citation, which may or may not include a URI.

Not all academic literature has been digitized, you know. (As someone who hunts down a lot of citations, you can trust me on that.)

Also URI's break, while citations include enough information (publisher, title, author, etc.) that the source can be found regardless.

</comment><comment><USER23> I begin to think about how to build a linter/scorecard for this sort of stuff.

Example linter rules:

      This article does not have a source.
      This article has no sources from a known resource [this community] find reputable.
      This article has a source from a source known to this community to be non-reputable.
      This article has a "shallow" source such as a blog (tumblr, medium, blogspot, youtube)

Probably would need a mechanism to build/aggregate/crowdsource reputable source lists.

edit: formatting

</comment><comment><USER24> I can really recommend having a look through the blog _Yesterday 's Print_ that's mentioned in the post [1]. It's an excellent collection of some interesting, relatable, and humorous snippets from ca. a hundred years ago.

This one they posted about a year ago stuck with me [2].

 _The saying, "Life is just one damn thing after another," is a gross understatement. The damn things overlap._ \-- The Cincinnati Enquirer, Ohio, February 21, 1947.

[1] [https://yesterdaysprint.tumblr.com/](https://yesterdaysprint.tumblr.com/)

[2] [https://yesterdaysprint.tumblr.com/post/176557878119/the- cin...](https://yesterdaysprint.tumblr.com/post/176557878119/the-cincinnati- enquirer-ohio-february-21-1947)

</comment><comment><USER25> Can we "pin" this to HN front page in perpetuity?

I'm joking but I'm also serious. It's (IMO) basic hygiene at this point.

The Internet used to be like Burning Man, today it's more like Bangkok.

Flipping it around what this really means is that taking _any_ particular assertion made online seriously _without_ some "certificate" (same root as "certain") as to who stands by it, is wildly, childishly, naive. (Including that one, and this one.)

The real question (as alluded to in TFA) is, "Whom do you trust?"

</comment><comment><USER26> > The whole investigation took me 5 minutes. A Web search, a few clicks, and > some ctrl+f'ing.

Yes, it took you, a person with a blog and the technical know how. I bet you that 99.99% of people that have access to the internet have a very basic understanding of how to use a search engine, in particular the trick of quoting a phrase to match it exactly is not something I would expect the mainstream to be aware of.

What we need is a better education so that it is effortless to the majority, just like it is for you or me.

</comment><comment><USER27> While I agree, what does the URl in this particular case tell us? Is it a true quote? Does the new context change its meaning? Can someone please elaborate, I don't get it.

</comment><comment><USER28> > Treat any claim without a URl as suspicious.

This assumes that the web is the only information source you should be using as a reference. You definitely should cite your sources if you can, but saying they have to be web soruces is a pretty limiting requirement.

The tumblr page that gave the print citation did just fine.

</comment><comment><USER29> I'll start of by saying the author has provided some nice research. However, this particular example is the kind of thing where it doesn't even really matter wether its legitimate or not. The fact that it _doesn 't_ attribute it to any particular source makes it almost meaningless. It's basically just saying that some person 100 years ago said "X".

Does it really matter if I have a source for that? This content is clearly not meant to convince, only entertain.

<comment><USER14> The claim is "even a hundred years ago we had prats who didn't want to wear masks because they were embarrassed."

This citation shows that, yes, this was a trope even back then.

<comment><USER30> It's strange, because a mask can mask identity, so why would you be embarrassed if few can recognize you?

</comment></comment></comment><comment><USER31> I ranted about one of these on facebook yesterday. Attached to a stock photo of an Amish lumber worker:

> I had a conversation with an Amish gentleman yesterday while I was loading > at a mill, and at the end of the conversation he asked me one question that > should really get one thinking. He asked "Do you know why this virus hasn't > affected us yet?" no "well because we don't have television"

The good friend who posted this was like, "this really got me thinking!"

(I presumed the subtext was that this virus is just blown out of proportion.)

My response was -- WHY? Why do we even assume this quote is TRUE? And why would you let fake things like this give you something to think about?

These are no better than the junk faxes people used to pass around claiming Proctor & Gamble worshiped the devil. I was kind of glad I stopped getting them in email from relatives because they moved to facebook instead, but ... so much of our society's ... gestalt? mindset? ... is formed by these junk memes being passed around as truth. (And this isn't unique to one political persuasion.)

The best evidence that Facebook and Twitter are drugs I think is that for some reason brains turn off when consuming media on them.

Where has our critical thinking gone? We're hopeless as a society without it.

</comment><comment><USER32> On a somewhat related note, here's an enjoyable read about how citations in scholarly papers can sometimes mask shoddy thinking and spread "Academic urban legends":

> Many of the messages presented in respectable scientific publications are, > in fact, based on various forms of rumors. Some of these rumors appear so > frequently, and in such complex, colorful, and entertaining ways that we can > think of them as academic urban legends. The explanation for this phenomenon > is usually that authors have lazily, sloppily, or fraudulently employed > sources, and peer reviewers and editors have not discovered these weaknesses > in the manuscripts during evaluation. To illustrate this phenomenon, I draw > upon a remarkable case in which a decimal point error appears to have misled > millions into believing that spinach is a good nutritional source of iron. > Through this example, I demonstrate how an academic urban legend can be > conceived and born, and can continue to grow and reproduce within academia > and beyond.

[https://journals.sagepub.com/doi/full/10.1177/03063127145356...](https://journals.sagepub.com/doi/full/10.1177/0306312714535679)

</comment><comment><USER33> I agree, but even that isn't any kind of guarantee.

I have noticed that many sites simply repost single-origin garbage, so it can easily look like it's multi-sourced.

Scammers and politrolls use this all the time. Marketers work really hard to get talking points pushed out to as many outlets as possible, so the "origin" may be different, but the text all came from one place.

 _" Don't believe everything you read on the Internet."_ -Benjamin Franklin

</comment><comment><USER34> I believe that there are two things at play here: 1. epistemology (a.k.a. ToK - Theory of Knowledge) and 2. emotion vs rationality.

What the author says should be completely natural to a person who is has studied ToK and who is in a rather rational state of mind.

A person who doesn't understand the problem of ToK would simply be oblivious.

A person who is under the influence of emotion, well, would be unable to help themself from believing whatever fits their emotion.

The ultimate evidence of truthfulness need not be a URL, depending on the claim. Nor is a URL necessarily sufficient. After all, how do you know the ultimate URL of origin is trustworthy? All you can do is to recursively ask yourself "how do you know?", either until you accumulate enough doubt or until the question sounds absurd.

</comment><comment><USER35> A lot of the comments here focus on claims made in bad faith. But the biggest value of citations is when one is trying to make or check a claim in _good_ faith. Many times I find that my own long-held beliefs turn out to be incorrect or partially incorrect or misunderstandings when I fact-check them with a reliable expert source.

As for claims made in bad faith? Don't trust these whether they have citations or not. Because there are a variety of primary sources on every topic and most things in life are uncertain, it is frequently possible to cherry pick an expert opinion that aligns with yours if you look hard enough. This makes fact the servant of opinion rather than the other way around.

</comment><comment><USER36> How are citations not the fallacy of "appeal to authority"?

Citations are basically an attempt at X.509 or Certificate Authority "root of trust": follow the certs until you find one we all agree is "trustyworthy".

Except in this case, that "someone" may or may not be provable, because the root of trust could potentially go back centuries.

I'm not impugning the work of historians, I realize this is part of what they do: follow the citations, cross-correlate, and seek "the truth" through painstaking research.

But outside of extensive historical effort, it seems like a pretty flimsy strategy for contentious topics.

<comment><USER37> If the citation contains data then using a citation is not an appeal to authority.

</comment></comment><comment><USER38> This really connects with the "Cool URIs don't change" mantra.

</comment><comment><USER39> If you're curious about what a forum would look like if it required URL citations, you can take a look at [http://old.reddit.com/r/neutralnews](http://old.reddit.com/r/neutralnews). It has pretty strict modding e.g. rule #2

> 2) Source your facts. If you're claiming something to be true, you need to > back it up by linking to a qualified and relevant source. There is no > "common knowledge" exception, and anecdotal evidence is not allowed.

</comment><comment><USER40> I wish this sentiment were even stronger when it comes to screenshots, e.g. screenshots of purportedly deleted tweets/articles. As we get closer to deepfake-video-on-demand becoming a thing, I'm still astonished at how the vast majority of people don't understand how trivial it is to create pixel- perfect fake web content. My default response to a screenshot is to assume it's faked unless there's an accompanying Wayback Machine/archive.today URL.

</comment><comment><USER41> For a few years, I was looking forward to newspapers embedding navigable links to the sources of their reporting. I figured that we just had to wait for the pre-Internet generation of journalists to retire and the next generation would cite better.

But now it is apparent that newspapers have no interest in doing this as it would encourage readers to go to another site and deprive them of advertisement revenue.

I would really love to subscribe to a newspaper that prioritized readers/subscribers.

</comment><comment><USER42> 16 + 26 = 42 [1] [2]

[1] [https://www.wolframalpha.com/input/?i=16+%2B+26](https://www.wolframalpha.com/input/?i=16+%2B+26)

[2] [https://en.wikipedia.org/wiki/42_(number)#The_Hitchhiker's_G...](https://en.wikipedia.org/wiki/42_\(number\)#The_Hitchhiker's_Guide_to_the_Galaxy)

</comment><comment><USER43> Surely "don't trust everything you read on the Internet" is just a given at this point, especially if it originates on Twitter.

<comment><USER44> That was such a great, prescient quote by Abraham Lincoln.

</comment></comment><comment><USER45> This is something more online media outlets should taken into consideration, especially for their own articles. Too many think linking out to potential 'competitors' is a bad thing, or make it too difficult to find the source for their data/conclusions.

Newspapers and magazines are especially bad for this, as are YouTube channels and other video format content creators.

</comment><comment><USER46> I think the key lesson in this story is the author's willingness to do the work. IMO it's not enough to be skeptical; you also should have a set of criteria by which you'll be satisfied, and be willing to go try to satisfy those criteria yourself. I don't think that merely pointing out a lack of citation is sufficient as a counterargument.

</comment><comment><USER47> In general I do agree citations are a good thing. But in this case and ones like it, does it really matter? Someone is making a humorous statement, it's not of particular importance to me if it was made 100 years ago first or not, so why should I care to look it up?

Rephrased: what would change if you found the image was "fake"?

</comment><comment><USER48> A timely quip from the same 1918 newspaper page:

"Why don't you wear your influenza mask?"

"I'm afraid I might look funny."

"Suppose you do. Wouldn't you rather introduce a little comedy into your household than subject it to tragedy?"

</comment><comment><USER49> >The whole investigation took me 5 minutes. A Web search, a few clicks, and some ctrl+f'ing.

Am I the only one who thinks the last phrase sounds weird? I might be used to reading lots of articles that sensor words, but couldn't help reading it as "control-fucking". (Edit: uncensored)

<comment><USER50> I think Ctrl+F seems to be more popular than 'grepping' these days, although I would very much be in favour of bringing 'grepping' back.

<comment><USER38> there's just so few people who still grep through website code directly. :P

<comment><USER51> In Firefox the / key is bound to quick find, so it's there in spirit.

<comment><USER52> Firefox also allows to search without bringing up the search bar first by setting "accessibility.typeaheadfind" in "about:config" to true. Reducing the timeout for the search bar to disappear after the last keypress is very useful as well. This is hidden behind "accessibility.typeaheadfind.timeout".

Caveat: is messes with pages that use normal letters as keyboard inputs, like WASD as movement keys. One might need to disable it temporarily if that happens.

<comment><USER53> I use Firefox developer edition - I assume that's set up by default. Though I've learned to work around it, it has driven me mad for so long - I didn't know you could turn it off! Finally, it's fixed! Thank you!

<comment><USER52> Everyday a good deed - I'm glad I could help ;)

</comment></comment></comment></comment></comment></comment></comment><comment><USER54> Even source data itself is not free from contexts and biases. Just treat everything with suspicion. And treat people with extra suspicion if they always provide a URL, especially if the URL is to somebody's interpretation of an interpretation etc.

</comment><comment><USER55> This should go for almost everything written in a newspaper. We all know about the the intentional spin and unintentional failure to understand technical topics but, when written in a newspaper, hearsay is treated as factual secondary source.

</comment><comment><USER56> And any claim with one, doubly so. \-- Abe Lincoln abe@I-chopped-the-cherry- tree.gov

</comment><comment><USER57> Or perhaps, any claim _with_ a URI and _without_ a physical card in a library card catalog should be treated as suspicious... Just sayin'...

</comment><comment><USER58> Site down... Shows ReCAPTCHA in an infinite loop...

<comment><USER59> >Site down... Shows ReCAPTCHA

I suppose this is cloudflare + their new captcha provider. This behavior is annoying / suspicious. They know the site is down, yet make people solve captcha repeatedly before finally telling them that the site is down.

<comment><USER60> They're incentivised to do this. hCAPTCHA pays them for it.

</comment></comment></comment><comment><USER61> Very soon everything will exist cryptographically on some uncensorable blockchain, and websites & files will exist on the Interplanetary Filesystem[0] and will be impossible to take down. And 'things' will all be categorized and have their own QR code which when scanned, will reveal the context (or even price!) of the item.

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

<comment><USER62> I do not think so. Most of my ipfs bookmarks from 2 years ago are offline now, everything gone because no peer has the content.

<comment> noman-land FileCoin just recently launched and it aims to fix this exact problem.

<comment><USER63> How does adding crypto fix this problem? I presume it's to incentivize peers into retaining and serving the content, but who's going to pay? The author? The viewer? How is either going to work for long tail content that's been abandoned by the author?

<comment><USER64> Wait, hmm... maybe if we use the blockchain here we can solve those problems too?

<comment><USER62> Or machine learning?

</comment></comment></comment></comment></comment></comment><comment><USER65> A great number of people, even smart ones, have been tricked into believing the Truth can be found on the Internet. It can't.

</comment><comment><USER66> To quote a friend of mine: But then I would have to doubt and question everything.

It kept me laughing for many years.

</comment><comment><USER67> Hmmm, I don't see any URI supporting the original claim. I find it suspicious.

</comment><comment><USER68> Every viral social media fake news story spreads from URI to URI ...

</comment><comment><USER69> We're going to need to issue some Verrit cards for this link.

</comment><comment><USER70> I thought this was about all those gpt-3 gifs demos on twitter...

</comment><comment><USER71> Maybe GPT-3 can just do our fact-checking for us...

</comment><comment><USER72> Why isn't the L in uppercase for the URL acronym?

<comment><USER73> [https://en.m.wikipedia.org/wiki/Uniform_Resource_Identifier](https://en.m.wikipedia.org/wiki/Uniform_Resource_Identifier)

</comment></comment><comment><USER74> Isn't this just a submarine post to put a quote about masks and people who don't wear them on top of HN?

</comment><comment><USER75> CitationLint is needed.

</comment><comment><USER76> > The whole investigation took me 5 minutes. A Web search, a few clicks, and > some ctrl+f'ing

I think this is the core issue with this post. There is an intersection between how much this new claim would update my mental model and how much time it will take to prove. The idea of "how much time it will take to prove" is important, because we all have a limited amount of intellectual bandwidth that we use to receive and integrate new information.

Intellectual bandwidth means we need prioritization. Without prioritization we have two suboptimal states that are available. The first is where we are being DDOS'd in bad-faith by low-value claims, that have some amount of work to prove. The second is that whichever claims we do resolve are likely not the set of claims which result in optimal utility; updating our mental model results in utility, assuming that our update function only accepts "good" updates.

One strategy, that I think I use, is to break things into four categories: (1) A claim close to my current mental model (2) A claim not far but not close to my mental model (3) A claim far from my mental model (4) A claim unrelated to my mental model.

If a claim is close to my mental model (1), I'd probably just accept it out of hand. This newspaper clipping is one example, because proving that the clipping is real does not update my mental model (Nor does disproving it, honestly), so it is low value. This is the cheap filter that reduces redundancy.

If a claim is far from my mental model (3), I'll probably just dismiss it out of hand. I'm not going to go to the work to prove or disprove something, insofar. There are exceptions here, wherein the statement is so orthogonal to the mental model that it might have high value and is therefore still with looking into. In my experience, claims of high value that are completely orthogonal from my mental model tend to be rarer than claims of low value. One case I can think of is an article on oil prices I read, where there was a claim that the breakeven oil price was ~$200 a barrel as support for Iran having a broken economy. This didn't make sense, as it would mean Iran is not a viable economy even with oil, but then why are western nations wasting political capital embargoing an unviable product? So I spent time investigating it (Investing intellectual bandwidth). In the end, it seemed like a bad-faith argument as it assumed that the oil price would be the only thing to balance the Iranian national budget and didn't speak to the fact that Iran is subject to artificial export constraints via embargoes. Engaging with claims in this category seems to result in finding a lot of gravel and maybe a piece of gold from time to time.

The medium category (2) is where I think most of us should be spending our time, the frontiers of our mental model where things are both foreign as well as familiar. When you can take different parts of evidence and see that some of it makes sense and some of it doesn't. I think this area is ripe for bad- faith disruption, as I'm much more willing to engage with this type of premise. I remember reading and putting down a book lately because it proposed an interesting question, around what has changed in the America of my parent's and of today. It was asserting, without even worrying about supporting evidence, that traditional family values were the cause.

The last category (4) is not an unimportant one, which is just the area where you might say "I don't know" or "Why does that matter". If someone claims Charles II was born in 1629, I also wouldn't derive much value by looking it up and saying "No, he was actually born in 1630". In that sense, it is low- value information because it doesn't intersect with meaning for me.

Overall, I think the problem with the line of thinking I quoted is that it puts a lot of burden on the individual for what usually has zero or negative value to that individual. That work exists whether or not a URI is included, and is possible exacerbated by there now being "evidence" provided even insofar as the linked context provides no value.

Aside: The phrase "ctrl+f'ing" written out is a bit humorous.

</comment><comment><USER77> We can no longer really know what the truth is, honestly. This is why the political foo-ha about "facts having a liberal bias" and all that was so poignant - it was an admission that the Internet had won.</comment>


Show HN: Should I Send It? Helping you understand your mood in emails - <AUTHOR> http://www.shouldisendit.com/ <comment><USER2> It's a neat idea, but after too many sarcastic, "clever", trying-to-be-funny, defensive, et al emails in my career I have a simpler heuristic. If I have to ask myself "should I send it?", the answer is no. Leave it in drafts (with no one in the to: line!) until either things have cooled down and I delete it, or there's more perspective and it's actually ok to send.

I have too many fails to tell, but the worst ever was an email from a middle manager I didn't know at BigCo, cc: upper management. It blamed an issue on my team at the time, and I took it as an attack. For once there actually was no issue, and in my reply I managed to subtly rub in that they apparently didn't understand how their own dept. worked. CC: upper management still of course. It worked too well, and the person called me crying an hour later because they looked like an idiot to the big cheeses. As soon as we talked on the phone, they became a real person to me, and I felt like the utter dick that I had been.

Moral of the story, there are real people with real feelings on the other end of your words. It's almost never worth it to be a dick, slightly off color, or sarcastic, save that for in-person ;-)

<comment><USER3> The real value of this tool is as an objective measure of how pleasant your communications are.

Now that Codes of Conduct are the norm rude/abusive behaviour is not tolerated, but this can cause problems because one person might see rude and abusive behaviour where another person does not.

Having a tool to objectively measure incorrect words and thoughts would be a great way to protect developers from themselves.

<comment><USER4> > Now that Codes of Conduct are the norm rude/abusive behaviour is not > tolerated, but this can cause problems because one person might see rude and > abusive behaviour where another person does not.

I dare say "abusive behavior" has never been "tolerated", but our individual and societal recognition of "abusive behavior" is different now than earlier.

</comment></comment></comment><comment><USER5> Having written my bachelor's thesis on how negation in sentences affects their sentiment: it is really, really difficult. Even just differentiating between negative/neutral/positive sentiment is successful only about ~65% of the time (depending on the source material). Text based Irony/Sarcasm detection is still an unsolved problem (most of the times even for humans, as it is strongly context dependent, not to mention missing indicators such as tone of voice and body language). Basically, you are way better of listening to your own intuition rather than using a computer to flip a coin.

<comment><USER6> So does this mean something like crowd sourced scoring of sentiment does better than algorithmic detection? Or do people suck just as badly?

<comment><USER5> Short answer: yes, crowd sourcing would work better.

Long answer: It's difficult to determine how good/bad people actually are at detecting the correct sentiment, as data sets containing phrase/sentence <-> sentiment pairs are often created by majority decision of human taggers. E.g. 7 people are given the same training examples and whatever most of them choose is then used as "correct" answer (gold standard). This might not be the real correct answer though. However, even if we accept this gold standard to actually be the absolute truth, most humans only have a correct detection rate of about ~80% (this is a very rough number, as it depends strongly on the source material, e.g. Tweets, product reviews, etc.). Still, this is way better than computers perform at the moment.

<comment><USER7> Then again, I assume those texts are written by humans for humans. So isn't the "correct" sentiment exactly what humans tend to make of it? And if humans aren't very good at detecting the sentiment, maybe the writer is at fault, not the readers.

I think letting a number of people read the text and choosing the majority vote as the text's sentiment might not actually be a very bad way of determining that.

<comment><USER8> It might be correct to say that a group of humans is interpreting the sentiment "incorrectly" if they don't have all the relevant context / information.

</comment></comment></comment></comment></comment><comment><USER9> Completely tangential (but it's HN so that's what we're here for ey): if that video represents what normal people look like when they're having an "off" morning, then I am the actual Antichrist.

There is some real potential for comedy in that video, you're missing out :) Turn up the Grinch factor by at least 10. At 00:16, put a "beat": Change the pace, the colour balance, the framing, everything. Lovey dovey intro, music, la la, then BAM waaa waaa nuclear alarm sound, zombie hand slams on alarm, which breaks, etc. (As a matter of fact, show an actual zombie!)

Right now, that "bad morning routine" to me basically looks like... what I imagine the Dalai Lama does in the morning.

Oh and if you're gonna burn toast; actually burn the toast! Black. Burn the house down black. Smoke everywhere. And the car, just show it completely totalled. Like, just the frame is left, somehow. When the meeting's canceled, idk, the office building is just destroyed and it's this person looking out over rubble.

(I assume you probably cobbled this together from stock footage, in which case you're obviously limited by what's available. Still worth looking if you can find some much darker shots? :) basically try and exaggerate much more.)

[edit: sorry forgot to say well done. it's not bad at all, and I think you did really well on the "upbeat" bits. all the more potential for contrast!]

</comment><comment><USER10> For anyone wondering how it works:

> \- The chrome extension doesn't read the content of your web pages.

> \- The chrome extension only reads your highlighted text when you click the > extension smile icon.

> \- Your highlighted text is passed from your browser to our API where the > sentiment is calculated, we do not store in any way the text you highlight.

[https://www.rarely.io/work/should-i-send- it](https://www.rarely.io/work/should-i-send-it)

<comment><USER11> I appreciate you for saying that you don't store the text, but the fact that it has been sent, processed, and then returned means that this practice could change any time and I'd never know.

If I were to use this for work-related reasons it would need to live in a more on-prem / secured format where I could ensure this via controls.

</comment></comment><comment><USER12> I find gmail's undo send works wonders for me.

30s is usually enough for me to go from "hell yeah, that'll show em" to "fuck fuck fuck, what did I just do"

</comment><comment><USER13> I'm a "tech dude" who have struggled with emotional control. I used to think "I don't have that many emotions, I'm so rational" which many heated emails proved wrong. But I have worked hard at recognizing and naming feelings and emotions and trying to figure out where they come from,and I'm doing quite well now I think. So this is something I would have liked in the past but this is just a glaring symptom of a problem of people acting without knowing what feeling is in control. Sad.

(What workes for me is "non violent communication" btw, google it)

</comment><comment><USER14> IMO add a gif of the system working right on the front page (similar to [https://getstation.com/](https://getstation.com/))

It'll drive more conversions.

Also after working on sentiment analysis for a long time, you should let each user build their own model with tensorflow.js. That may be a down the line kind of thing, but otherwise your model will be fairly inaccurate.

I say this having worked heavily in the space: [https://hnprofile.com/](https://hnprofile.com/)

<comment><USER15> It doesn't seem like HNProfile is particularly accurate. It seems to interpret terse comments as unhappy, and all my interests listed come from a single comment thread a couple months ago discussing Canadian regions instead of anything technical I have talked about.

I will say that I'm unhappy that you've built a chart on what you percieve my mood to be and published it without my consent.

<comment><USER14> It's not particularly accurate, which kind of is my point... I was able to get right around 80%, between myself and others manually tagging the dataset.

Funny thing, even with myself and others tagging the content, there is a high variance in our scoring. Meaning - accuracy is in part the eye of the beholder.

Also, if you think that this is intrusive -- imagine the NSA reading your personal email

<comment><USER16> Yeah.. from them I don't expect adherance to GDPR. You however are commercial, have no Privacy Policy, and collect, analyse and publish to the public user data (which in many cases is not anonymous, or can be easily de-anonymized) without their consent.

The fact it is not particularly accurate makes this even worse.

</comment></comment></comment></comment><comment><USER17> _Great PowerPoint. Really LOVED how it took you 100 slides to explain mood analysis._

Positive mood.

<comment><USER18> "Aye, right".

Author concurs!

</comment></comment><comment><USER19> Sorry but what on earth is this demo video blathering on about? half way through it's still setting the plot to some hypothetic bad day. Get to the point!

<comment><USER20> Exactly what I was going to post. At the very least I was expecting a demo of the product after all the nonsensical "bad day" blabber. But it never came and I still had no idea what I was looking at.

<comment><USER21> This comment and the one above it in the thread are perfect examples of use cases of "Should I send it?"

<comment><USER22> On the contrary they seem like perfectly rational responses to an introductory video that is redundant at best and patronising at worst.

I was dissuaded from installing it because I assume the products quality would reflect how little the founders seem to understand people in thinking that it's necessary to accurately detail what a poor start to the day would look like.

The video should be a simple gif demonstrating how an email with a negative tone is detected and turned into a positive tone. People are smart enough to figure out how that could be useful.

<comment><USER21> The feedback might have been good but the tone of those comments had hint of snark. Considering the product is to help you remove negative sentiment from your responses I would say they were good use cases.

replace blathering and blabber with more constructive words

</comment></comment></comment></comment></comment><comment><USER23> Looks interesting, I'm excited to try it out. I had trouble parsing the "Understanding Mood" paragraph. Consider this a pull request.

> What if you could get a mood score for emails you receive or send? A way to > quickly sense check what you are about to send without your bias emotion or > when receiving an email remove your current mood or maybe a currently > negative relationship with the sender.

ShouldISendIt provides a mood score for emails you send or receive? When sending, quickly get a sense of the mood that your message communicates from an objective algorithm. When receiving messages, our tool can help you see past your current disposition or preconceive notions of the sender's intent.

</comment><comment><USER6> Hey, so I've wondered for some time now how social media sites might benefit from a sentiment analysis score applied to their users, who are then given more or less moderation ability based on the result of that score.

Obviously tons of edge cases, but what do y'all think of this? Combined with Slashdot's "king for a day" moderation style, could this solve some of the lingering issues present in social media?

I'd love to sit down and talk to someone about this concept for awhile, see where the idea goes. I'm _super_ sure it's come up before, I just wonder what the state of the art is.

<comment><USER24> Peepeth.com is experimenting with features like that. Currently, posts get a toxicity score from a Google API before they're even posted, and users are asked to confirm if it's above a certain threshold. Lots of false positives, but it seems to be reducing profanity.

Disclaimer: I'm the founder.

<comment><USER6> Very cool! Looks crypto focused at the moment, but sounds like you're innovating in the community moderation space. I'll definitely check it out!

</comment></comment></comment><comment><USER25> Does anyone else remember that this feature was present in old versions of Eudora on the Mac? It would literally put icons of chili peppers on your emails to say how spicy they were.

</comment><comment><USER26> I've had a conversation about something like this nearly every year that I worked in Corporate America. Interesting to see it get built (I can't speak to the history of other implementations). Those past discussions were around an MS Outlook add-on to disable/gate the send button if the email draft content was too egregious.

A few questions I had about your product:

      * How would you monetize? (If you're thinking of doing so?)
      * Have you considered integrating with other messaging?

<comment><USER27> There have been a few implementations in the past, including tonecheck. [https://techcrunch.com/2010/07/20/tonecheck/](https://techcrunch.com/2010/07/20/tonecheck/)

<comment><USER26> Thanks for that--I concur with TC that "At the very least, their graphics are quite amusing"

</comment></comment></comment><comment><USER28> Cool execution of an idea - congrats on launching!

This could get share traction if users were able to submit a message and make it public. My friends/coworkers had a phase where we did that with this tool:

[https://headlines.sharethrough.com/?headline=a%2520test%2520...](https://headlines.sharethrough.com/?headline=a%2520test%2520headline%2520to%2520share)

(PS - If you're running an adblocker, this website is broken, might need to disable temporarily)

</comment><comment><USER29> Pitch it to Linus. An endorsement like that could be a huge marketing boost.

"With Should I Send It? I don't sound like a huge jerk whenever someone tries to get a patch merged that's fucking braindead^W^Wnot up to kernel quality standards. Thanks, Should I Send It?!"

I'm being lighthearted, but not really joking: Linus is really looking for something like this to help keep the rage down in his correspondemce.

</comment><comment><USER30> As someone who recently switched back to Firefox, I've come to realise how many of these useful Gmail addons are strictly limited to Chrome only.

Firefox has been terrific for everything else, but it's surprised me how much functionality I've built into Gmail through addons and how it's almost a showstopper for me migrating to Firefox.

</comment><comment><USER31> Can you invert it? This makes me think of Decker's wife in Do Androids Dream of Electric Sheep who adjusted her mood organ (designed to dispense psychiatric drugs each morning to stabilize your emotions) to make her depressed and miserable.

"Your message is insufficiently vitriolic. Send anyway? (y/n)"

</comment><comment><USER32> I guess this is an English only tool. Does it account for non native speakers, like an Indian and Ukranian corresponding in English? Either way, while I can see that developing tools like this is fun and engaging, I won't trust the results.

</comment><comment><USER33> I've been using Boomerang's 'Respondable' feature for quite some time and it is absolutely awesome. It's rare that I'm 'off' but it's a nice way to catch when I am.

</comment><comment><USER34> I wonder how it compares to IBM Watson's Tone Analyzer:

[https://tone-analyzer-demo.ng.bluemix.net/](https://tone-analyzer- demo.ng.bluemix.net/)

</comment><comment><USER35> Are they storing your emails?

Meh. It's a simple sentiment analysis, probably even using google brain. Probably not worth giving up the data to this service

</comment><comment><USER36> Let people try it without installing a Chrome app.

</comment><comment><USER37> Oh cool stuff! I was thinking about building something similar, how to get in touch?

</comment><comment><USER38> If you have to ask, the answer is no.

</comment><comment><AUTHOR> Thanks for all the feedback. Will have a look through them all

</comment><comment><USER39> I pretend to be mature enough to understand my mood and the influence coming from it in my mails, thanks.

Beside that I do not use webmails (except rare occasion) nor Chrome...

<comment><USER40> You do know the post wasn't written specifically for you...? It might benefit other users</comment></comment>


Smooth Scroll to Top Using CSS3 Animations - <AUTHOR> http://labs.mitgux.com/smooth-scroll-to-top-using-css3-animations

<comment><USER2> When I press "back to top", I want to go there immediately—not after a few seconds of a fancy effect. Once is cool. More than that is annoying.

It is fancy though—don't let me dissuade you from similar things.

<comment><USER3> Perhaps if the page instantly jumped to the top, it make the user confused for a bit moment, so here where the animation make a sense!

<comment><USER4> Look at it this way, it's globally over writing use preferences. This should at lowest, be a browser feature.

For anyone curious, chrome://flags has a smooth scrolling option to try. There's also browser plugins that do this. For macs this is system behavior right?

</comment></comment></comment><comment><USER5> Here's a usability enhancement: make sure you're overriding the behaviour of an <a> element which would already cause the page to scroll back up, e.g. a link to a named anchor at the top of the page or to the ID of the <html> element itself.

This way if JavaScript or CSS3 animations are unavailable the usability is preserved.

<comment><USER3> Good point mfincham, I'll keep this in mind, Thanks!

</comment></comment><comment><USER6> Haven't got a chance to try it right now, but using transform over margin-top sometimes results in a smoother effect on various devices (I believe it gets offloaded onto the GPU as a separate layer).

That said it's running smooth on my desktop.

<comment><USER3> I think because the CSS3 hardware accelerate, and this is a good point for this trick!

</comment></comment><comment><USER7> Smooth scrolling in other contexts (globally in the browser, or globally in a desktop UI) usually has an off switch. I've turned off smooth scrolling everywhere I could find a switch to turn it off.

It feels like smooth scrolling wastes my time. I know we're only talking about fractions of a second, really, but when I'm concentrating on something that feels like a long and pointless interruption. Smooth scrolling also really does cost CPU (and/or GPU) power, and in today's mobile device world that means it wastes battery power.

</comment><comment><USER8> Cool idea... Only, not sure I'm following he advantage. Both examples use jquery, and the second solutions seems to be more lines of ode. What is the advantage with the CSS method?

<comment><USER3> It rely on the CSS3 transition instead of the jQuery animate function ..

<comment><USER9> To go into more detail, I believe CSS animations will be faster because they are built into the browser, as opposed to calculating animation effects in a Javascript interval.

<comment><USER3> Exactly!

</comment></comment></comment></comment><comment><USER10> It's horrible UX to have this. If anything it HAVE to be fast. So maybe third one would be bearable. And I have to wonder how smooth it would be with tons of flash, resized images and so on.

PS: Only the first animation one works it Opera (but the jump still works, so that's great).

</comment><comment><USER11> FWIW, I like smooth, but this isn't quite smooth, because animating random position properties in WebKit is still slow. If at all possible, please use -webkit-transform instead.

</comment><comment><USER12> Nice hack. In practice, not convinced that CSS animations are that crucial for a scrollTop fn, given that it still depends on jQuery and requires more lines of code.

</comment><comment><USER13> I'm curious if this works well across modern browsers (IE9+, Chrome, Safari, Firefox)?

</comment><comment><USER14> Why do we need this?

<comment><USER6> Animating scrollTop is quite a common effect that some developers/designers add (personally I'm not a fan).

Usually it's done using the jQuery animate function, meaning you can't take advantage of CSS transitions.

As you can't add a CSS transition onto the window scroll, this demo is useful as it shows a workaround that achieves the same effect using CSS transitions.

<comment><USER3> Good answer, Thanks!

</comment></comment></comment><comment><USER15> I saw glitches just after the mouse click.</comment>


Locating Social Entrepreneurship in the Global South: Development Aid (2013) - <AUTHOR> https://www.wilsoncenter.org/event/locating-social-entrepreneurship-the-global-south-innovations-development-aid <comment><AUTHOR> You can safely skip the first 7 minutes or so. Personally I was mostly interested in Paul Collier's portion of the talk, which begins at 40:30.</comment>


The World's Shortcut: How the Panama Canal Works [video] - <AUTHOR> https://www.youtube.com/watch?v=KgsxapE27NU <comment><USER2> One of the surprising things about the Panama Canal is how the sea level can differ between the Atlantic and Pacific sides. This depends not just on tides but on salinity, weather, and even differences in gravity. The Panama Canal has locks to lift and lower boats through the central lake, but even if the entire canal was built at mean sea level, it would still need locks to accommodate the (ever changing) difference between Atlantic and Pacific sea level at any given point in time.

<comment><USER3> Then I'm inclined to believe this would have been a problem when building any canal across a considerably large landmass - such as the Suez Canal. Is it exclusive to the Panama Canal only?

<comment><USER4> According to the second paragraph at [https://en.wikipedia.org/wiki/Suez_Canal](https://en.wikipedia.org/wiki/Suez_Canal), it has a continuous current through the various segments, depending on tide and season. Presumably the water levels in the Mediterranean and Red Seas are close enough that the current isn't a problem in practice.

</comment></comment></comment><comment> dfeojm-zlib Due to climate change, there are now many shortcuts across the Arctic in the summertime.

</comment><comment><USER5> If this is the video I'm thinking of (I can't watch it at the moment), on the "Half as Interesting" (?) channel, I'd suggest checking out the other videos on this channel as well as the "Wendover Productions" channel (both by the same guy, AFAICT) if you found this one interesting.

I just discovered these two channels in the last week or so and there's a lot of interesting (to me) videos on them.

<comment><AUTHOR> This video is a Wendover Productions video. But, indeed, both channels come from the same source! Generally, Wendover videos are longer and more serious, while the 'HAI' videos are more light-hearted.</comment></comment>


"Amazon Tax" Laws May Worsen Short-Term Budget Problems - <AUTHOR> http://www.taxfoundation.org/publications/show/25949.html

<comment><USER2> Key graf:

       Contrary to the claims of supporters, Amazon taxes do not provide easy
       revenue. In fact, the nation's first few Amazon taxes have not produced
       any revenue at all, and there is some evidence of lost revenue. Rhode
       Island has seen no additional sales tax revenue from its Amazon tax,
       and because Amazon reacted by discontinuing its affiliate program,
       Rhode Islanders are earning less income and paying less income tax.</comment>


Swarm: Foursquare's ambitious plan to split its app in two - <AUTHOR> http://www.theverge.com/2014/5/1/5666062/foursquare-swarm-new-app

<comment><USER2> As a foursquare user, I like this move. When you're in new neighborhoods browsing for food, the fact that friends have been to a place and left tips is a much bigger signal than yelp reviews by strangers. But even when I'm in places where I don't know the network, I find check-ins is a better signal than stars.

</comment><comment><USER3> Is this going to be similar to the debacle of Netflix's Qwikster?</comment>


Hacker News: May be the Closest Social Site to the Old Digg - <AUTHOR> http://socialeyezer.com/2011/03/14/hacker-news-may-be-the-closest-social-site-to-the-old-digg/

<comment><USER2> Could we please make it Clojure this time instead of Erlang?

<comment><USER3> This was actually written over a week ago, so if shit was gonna happen it would have happened.

</comment></comment><comment><USER4> my geeky must read timeline:

infoworld > slashdot > early digg > techmeme > hacker news

<comment><USER5> You didn't hit /r/programming on Reddit?

</comment></comment><comment><USER6> Where this article purports that digg's fall was reddit's gain is subjective, article quality has fallen drastically even within subreddits. I no longer read /r/programming or /r/linux as it's full of ignorance that seems to be magnified (more upvotes) by ignorant users. This seems like a great platform to study the change in behavior of an increasing social population as we also see this in the real world with elections and such.

</comment><comment><USER7> Google cache (text only) version in case its down for you too: [http://webcache.googleusercontent.com/search?q=cache:G_NTVYN...](http://webcache.googleusercontent.com/search?q=cache:G_NTVYNshRcJ:socialeyezer.com/2011/03/14/hacker- news-may-be-the-closest-social-site-to-the-old-digg/&strip=1)

</comment><comment><USER8> I suppose it wouldn't help much if I leave a comment there discouraging the very thing the article seems to be suggesting.</comment>


Wasmjit: Kernel Mode WebAssembly Runtime for Linux - <AUTHOR> https://github.com/rianhunter/wasmjit <comment><USER2> The actual problem with this, after you have satisfied yourself about the numerous non-problems, is that practically any real app in wasm has calls to library code implemented in C or C++ and compiled to real asm to implement the extended Javascript runtime, that you would not want running in ring 0. To those are added all the kernel-mode functions that must be used correctly. (If the app can be provoked to use them wrong, boom.)

So, the plausible use is an implicitly trusted app not exposed to untrusted input, that is system-call bound, and that you want to distribute cross- platform without recompiling to targets that have installed this module in a known kernel version. It seems easier just to distribute source for a kernel module; or kernel modules built for the (2? 3 tops) architectures required.

[edit: spelling error.]

<comment><USER3> I'm not sure why linking third party code is a concern, it all must live inside the sandbox provided by the runtime. This reduces the trust requirements from depending on a (software | hardware) solution where the hardware portion cannot be audited, and by 2018 are no longer to be considered trustworthy by default, to only depending on access and bounds checks implemented by a single body of code visible to everyone.

The 'system call interface' available to those buggy libraries need be no more capable than existed previously, that system calls are serviced without switching protection mode need not extend the potency of any possible attacks.

A future implementation of this style of design will have much better security and auditability properties than anything that has ever popularly existed in the past. It may have originated with the web, but I welcome wasm and all the market punch it promises to bear on ancient and long-unquestioned corners of our software stack like this. (Naturally I was also a Microsoft Singularity fan)

<comment><USER4> How does WebAssembly fix hardware issues? For example, take Rowhammer. I don't see how running your code in a VM fixes Rowhammer; surely there would still be some mapping of data in wasm to RAM, and I don't see why a sufficiently motivated individual couldn't determine and subsequently exploit that mapping.

Or what does WASM do about the concerns that major CPU vendors embed a second co-processor running untrusted, unauditable code with ring -1 access alongside the main CPU?¹

¹which may or may not be active, depending on CPU model and configuration. I've never really fully understood when it is, or isn't, but I think it's somewhat moot.

Further, this assumes the runtime (which is not _just_ the WASM runtime: system calls and other functionality will inevitably need access to the actual, underlying hardware in order to do their job) from being buggy, and since the code is now in ring 0, you get all the consequences of that. (Full, unrestricted access to _everything_. At least previously, you'd need to find some root exploit to get that.)

(Also, as another poster hints below, since everything is running inside the same protection layer from the CPU's point of view, what prevents you from just running the same attack, in spirit, as Spectre? Only now, there is no protection — everything is ring 0 — so the CPU is "correct" to speculate a read. Sure, the VM will deny it to the code inside the VM, but that didn't matter in the case of Spectre?)

<comment><USER5> > since the code is now in ring 0, you get all the consequences of that

No you don't. Because WASM does not provide many of the facilities that real assembly provides. So, for instance, there is no way to stack-smash using WASM instructions, regardless of the any security problems in the code itself, or even outright malicious code. It just can't do it.

More generally for VMs, there are secure VMs which provide a mathematical proof that the code will, for instance, observe memory safety. Such a proof is much better than ring-level protection, because :

1) You can verify the proof. Good luck verifying the hardware implementation of ring-level security in processors

2) It doesn't take any resources at runtime

3) the proof can be verified at code load time, so insecure code (accidentally insecure or otherwise) just doesn't start executing, ever

4) It doesn't allow for manufacturers to hide "secure coprocessors" or any other bullshit like that

</comment></comment></comment></comment><comment><USER6> I have seen at least three projects to run WebAssembly in the kernel, but not a single strong attempt at a good userland binary format for WebAssembly: I don't want to run WebAssembly in my kernel, I just want an architecture agnostic binary format for Linux executables.

<comment><USER7> > I just want an architecture agnostic binary format for Linux executables.

What would you use that for, if you had it?

<comment><USER8> I guess like IBM i, IBM z and Unisys ClearPath, have a computer system that you can change whatever you feel like at CPU level and have only the kernel take care of the underlying changes.

Universities should teach more about mainframe architectures.

</comment></comment></comment><comment><USER9> Increasingly I'm becoming convinced that something like this may become the backbone of future computing.

Imagine truly cross platform code that performs well, and can be written in whatever language you care for.

The web illustrated certain advantages to developing software that can be easily delivered and run on other systems. However, the learnings of the web were always coupled to the browser.

WebAssembly, through projects like this, may soon be able to empower cross platform code that delivers small, well performing programs on whatever platform a user desires to use.

<comment><USER10> Genuinely ignorant question, what's the difference with C from this perspective? I thought the whole point of C was to be a common language.

<comment><USER11> Binary compatibility across architectures, no undefined behaviours are the primary ones.

<comment><USER12> Yes of course, here is an example of a well defined, no ub, == overloads.

[https://slikts.github.io/js-equality-game/](https://slikts.github.io/js- equality-game/)

It is all bound to make JS kernel programing a Pilar of OS Stability.

<comment><USER13> You're confusing JS with wasm and undefined behavior with confusing behavior. JS and wasm are strongly defined and the specifications consider undefined behavior a bug.

</comment></comment></comment></comment></comment><comment><USER14> I stumbled across WasmJIT about a year ago and actually used many of the concepts in the project for my own kernelspace implementation of the portable native client (pNaCl). Projects like these are extremely interesting to me because they offer the possibility of a completely architecture-neutral userspace that can be used across multiple devices without recompilation.

<comment><USER15> This goes a step further and could offer an architecture-neutral _kernel space_. If part of loading the module includes validation and external memory access is checked as in browser implementations this could even lead to safer/less exploitable kernel modules with more well-defined failure modes.

<comment><USER16> The problem I see with this is that there are still no 8bit or 16bit data types (or bitfields for that matter) in the wasm spec, which are kind of useful for interfacing with hardware and for protocols (Ethernet, TCP/IP, etc). Sure, you can pack and unpack them with masks and shifts (which I assume clang,LLVM,gcc,etc do), but it seems awfully inefficient when the resulting code ends up running on x86 or other architectures with native 8/16 bit instructions.

<comment><USER17> Unless I'm missing something, this should be pretty easy for the webassembly working group to fix. At a guess they probably just need some clear decisions around how to handle endian issues. But right now they're just focussing on the browser use case.

If kernel module developers become a vocal part of the wasm ecosystem, I'd expect 8- and 16- bit data types to get added before long.

<comment><USER18> > they probably just need some clear decisions around how to handle endian > issues

They are handling endian issues by simply requiring little-endian.

</comment></comment></comment></comment></comment><comment><USER19> My mind boggles at the meta-ness of using this software to (direct from the docs) speed up the operation of a webserver compiled to webassembly.

The paranoid security engineer in me screams "Ring0 is what I always wanted my browser to have access to".

Interesting project!

<comment><USER12> Do not worry, it will be secure. Signed, with verifiable checksums, and gdrp friendly.

Just, erm, load these binaries provided by FB, Google, Microsoft and Netflix. :P

</comment></comment><comment><USER20> This neuters a bunch of the new spectre and meltdown mitigations which are required if you want ring 0 to be a security boundary.

<comment><USER21> How so? WebAssembly can't address memory outside of its sandbox

<comment><USER22> The whole point of Spectre is that you can indirectly access memory outside of your "sandbox" even if you don't have permissions to those pages, using various side channels.

<comment><USER21> Aren't those side channels dependent on addressing kernel memory that you don't have permissions for? You can't address kernel memory in WebAssembly, therefore you can't provoke the speculator into caching those pages.

<comment><USER23> I believe Spectre is driven by processor speculation into a bounds-checked array access, even for when the condition fails (that is, the index is out of bounds). One can get to arbitrary memory in this way using the right index on any array.

<comment><USER24> Why would you need traditional bounds checking with Wasm?

Just use MMU hardware to insert 2GB [0] no man's land below and above Wasm memory and only allow signed 32-bit indexing (-2^31 — 2^31-1).

This way the attacker can only read sandbox memory (and the useless 2 GB no man's land, mapped to pages full of zeroes or whatever).

When there's no speculation involved or the data is simply out of "speculative range", Spectre is toothless.

[0]: 2GB is just a basic example. More may be required if for example something like x86 SIB (Scale Index Base) is used for multiplying the index by 2, 4 or 8.

<comment><USER23> "Just" is never a good word in a technical discussion, especially around security vulnerabilities like Spectre.

That's a good idea, but there's also several reasons that may not be appropriate:

\- WASM explicitly says that it may be extended to 64-bit indexing (more than 4GB of addressable memory is definitely useful for some things)

\- Spending 4GB of (hopefully, virtual) memory on every WASM instance may be undesirable or impossible (e.g. 32-bit processor)

That said, it's very reasonable to impose restrictions on things running in ring-0, and wasmjit could well require a 64-bit machine with 32-bit WASM indices (which I imagine would be okay assumptions for things one would do with it anyway).

<comment><USER24> > \- WASM explicitly says that it may be extended to 64-bit indexing (more > than 4GB of addressable memory is definitely useful for some things)

In that case, just fall back to bitwise AND index clamping. A small performance penalty, but nothing major.

> \- Spending 4GB of (hopefully, virtual) memory on every WASM instance may be > undesirable or impossible (e.g. 32-bit processor)

Just page table entries. Wasting physical memory for that would be pointless. If the entries need to be mapped, on x86-64 it'd incur 4 kB, 2 MB or 1 GB total "wasted" memory, depending on which page size granularity you want to use. Of course, you could also simultaneously use this "wasted" memory for any non-sensitive data.

Well, mapping 2x 2GB memory using 4kB pages does take up hmm... 8 MB of RAM for the PTEs. So perhaps 2 MB pages would be optimal.

<comment><USER23> _> In that case, just fall back to bitwise AND index clamping. A small performance penalty, but nothing major._

Masking the index will break code that is actually using the larger address space: running true 64-bit WASM code (as in, using >4GB of space) won't work, which is what I was referring to.

 _> page table entries_

Indeed, hence the reference to virtual memory. In any case, because both x86-64 and ARM64 only have 48 bits of actually addressable space, that 4GB of overhead (plus, up to 4GB of actual addressable memory) only allows for 65536 (or half that) WASM instances. That's definitely a large number, but not one that is out of reach.

<comment><USER24> > Masking the index will break code that is actually using the larger address > space: running true 64-bit WASM code (as in, using >4GB of space) won't > work, which is what I was referring to.

You can also clamp for example at 33-37 bits, giving 8-128 GB array range.

<comment><USER21> You can do masking in the same way Linux does it. It prevents "branch code bypass" without using an explicit size:

        cmp %bound, %ptr
        jae bad_ptr
        sbb %mask, %mask
        and %mask, %ptr

Just two extra instructions. No need to memory map or hard code the size of bounds.

See `array_index_mask_nospec` in [https://github.com/torvalds/linux/blob/master/arch/x86/inclu...](https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/barrier.h)

<comment><USER24> > Just two extra instructions. No need to memory map or hard code the size of > bounds.

Pretty neat idea! [Although the (register) dependency chain looks a bit nasty. 'and' will need 'sbb' to commit and 'sbb' will need to wait for 'cmp' to commit (flags register). But I guess the few/rare cases where this latency is really an issue can be dealt one-by-one basis.]

> No need to memory map

Well, using MMU can have performance benefits. Less repetitive bounds checking code and better performance in most scenarios. Both solutions have their strengths and issues, there are no silver bullets.

<comment><USER21> Good point on the MMU performance advantage and trade offs involved. When everyone's heads were on fire, made sense to indiscriminately mask off user controlled pointers. Now that the dust has settled a bit I imagine we'll see more usage of memory mapping tricks in performance critical sections.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Related to this, the wasm generated by Go is currently tied to being executed in the browser.

There doesn't yet seem to be a implementable standard to define what a non- browser execution environment looks like. The beginnings of a common spec are here though, which some places have started working with:

[https://github.com/CommonWA/cwa-spec](https://github.com/CommonWA/cwa-spec)

That'll likely need to make it's way into the official specs:

* [https://github.com/WebAssembly/design](https://github.com/WebAssembly/design)

* [https://github.com/WebAssembly/spec](https://github.com/WebAssembly/spec)

At which point implementations will have something to focus on. :)

For the Go, this is the (recent) matching issue:

[https://github.com/golang/go/issues/27766](https://github.com/golang/go/issues/27766)

Kind of guessing it'll turn into a tracking issue to get it done.

</comment><comment><USER26> Prescient [https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

<comment><USER27> Except, WebAssembly isn't even close to Javascript. They're completely different languages. WebAssembly is closer to C than to Javascript.

<comment><USER28> WebAssembly is basically just a binary encoding of asmjs, which is the subset of javascript discussed in the talk.

<comment><USER29> While asm.js was basically just a textual encoding of C in JavaScript... round and round we go! :)

<comment><USER28> I'd say it more a textual encoding of LLVM IR. Which makes the s-expression text format of WebAssembly a text encoding of a binary encoding of a javascript encoding of a compiler intermediate representation of your program. Round and round indeed.

</comment></comment></comment></comment></comment><comment><USER30> >>> results in a significant performance increase for syscall-bound programs like web servers

Reminds me of "Why we use the kernel's TCP stack"? And eternal debate over the performance benefits of "kernel bypass" and "zero-copy" technologies such as DPDK versus full userspace TCP implementations like OpenOnload.

[https://blog.cloudflare.com/why-we-use-the-linux-kernels- tcp...](https://blog.cloudflare.com/why-we-use-the-linux-kernels-tcp-stack/)

Conclusion is that the untapped fruit in kernel TCP gains comes from tuning performance of the network stack itself: optimizing overhead a packet incurs on its path through the stack. A very active area of development.

Netdev 0x13, THE Technical Conference on Linux Networking

[https://netdevconf.org/0x13/](https://netdevconf.org/0x13/)

<comment><USER31> The recent work on AF_XDP seems like it could became established middleground sweet spot almost as efficient as kernel bypass and userspace networking.

</comment></comment><comment><USER31> "Lua support in the NetBSD kernel" (2013) [https://news.ycombinator.com/item?id=6562611](https://news.ycombinator.com/item?id=6562611)

<comment><USER32> Long ago someone stuffed a Scheme(-ish?) interpreter into Linux, but I don't think it went anywhere. I forget the details, but it may have used the SIOD implementation. I'd prefer it in a microkernel's userspace, though...

</comment></comment><comment><USER33> Another step towards Metal[0] becoming a reality.

[0] A (half) joke from Gary Bernhardt's excellent _The Birth and Death of JavaScript_ (pronounced "yavascript"): [https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

</comment><comment> lachlan-sneff nebulet is an implementation of a similar idea, but on a different scale.

[https://github.com/nebulet/nebulet](https://github.com/nebulet/nebulet)

<comment><USER34> How has the work on Nebulet's IPC layer progressed? In theory, a kernel-mode wasm interpreter could make IPC as fast as calling a function in a shared library through a vtable. Of course, this has to be mediated properly to avoid letting processes mess with each others' memory!

<comment> lachlan-sneff Slowly. I've been quite busy with school. What little time I have spent on nebulet has been on the fledgling network stack.

<comment><USER34> I see. I'm excited about nebulet and would be interested in participating in the design process for the IPC layer -- is there a place that discussion is taking place?

<comment> lachlan-sneff Yeah, totally! The gitter is where most conversations about this take place: [https://gitter.im/nebulet/nebulet](https://gitter.im/nebulet/nebulet)

</comment></comment></comment></comment></comment><comment><USER35> Does anybody know if that kernel module can execute WASM generated from Go or Rust too?

<comment><USER36> Unless they're doing something non-standard, wasm doesn't care what language it came from.

That said, this claims it relies on emscripten, I think? You _can_ do that with Rust, though it's not the preferred way. I sure about Go.

<comment><USER21> From looking at high_level.h it can instantiate any wasm file, but it seems to need the host code specially integrated. There is a function to instantiate the emscripten runtime, probably code can be added to instantiate the go or rust runtimes.

<comment><USER36> Rust doesn't have a runtime. Well, at least not in the sense of other languages; it's comparable to C :)

Emscripten provides a libc; I wondered if it required it. I guess not.

<comment><USER37> > it's comparable to C

I think you may want to reassess your definition of what a _runtime_ is ;)

> "crt" stands for "C runtime", and the zero stands for "the very beginning".

[ [https://en.wikipedia.org/wiki/Crt0](https://en.wikipedia.org/wiki/Crt0) | [https://en.wikipedia.org/wiki/Runtime_library](https://en.wikipedia.org/wiki/Runtime_library) ]

Yup. C definitely has a runtime!

<comment><USER36> That's why I said that Rust's is comparable to C. Both have very, very small ones. Which is what most people mean when they say "no runtime", since every non-assembly language has some amount of runtime.

</comment></comment></comment></comment></comment></comment><comment><USER38> Fascinating concept! Wouldn't this pause/block the kernel while the module runs? Can't find anything in the readme. I always assumed kernel modules had to behave politely in terms of returning and not running indefinitely.

</comment><comment><USER39> I'll keep all my apps if possible in user space please. Call me paranoid.

</comment><comment><USER40> Serious question: what's the advantage of something like this over eBPF? As I understand it, you can generate eBPF bytecode from C and Linux already has a JIT compiler for it.

<comment><USER41> Many other modern languages such as Rust and Go are aiming to _officially_ support WASM. I don't know much about eBPF but it looks like it only support C for now.

<comment><USER36> A company just announced some cool eBPF and Rust stuff today: [https://blog.redsift.com/labs/ebpf-ingrained-in- rust/](https://blog.redsift.com/labs/ebpf-ingrained-in-rust/)

</comment></comment></comment><comment><USER42> Finally, full stack engineers live up to their title.</comment>


How Fracking Companies Use Facebook Surveillance to Ban Protest - <AUTHOR> https://motherboard.vice.com/en_us/article/vbj4qb/how-fracking-companies-use-facebook-surveillance-to-ban-protest <comment><AUTHOR> [https://tech.slashdot.org/story/18/07/09/231252/how- fracking...](https://tech.slashdot.org/story/18/07/09/231252/how-fracking- companies-use-facebook-surveillance-to-ban-protest)</comment>


Web sauce: A chrome extension for adding custom CSS and JS - <AUTHOR> https://chrome.google.com/webstore/detail/web-sauce/iacoggchaaaanpjfhagogdknegeadbnp <comment><USER2> How is this different from TamperMonkey ( [https://chrome.google.com/webstore/detail/tampermonkey/dhdgf...](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=cs) )?

<comment><AUTHOR> TamperMonkey is more advanced in terms of scripting but it lacks custom CSS and pattern matching for hostnames.

<comment><USER2> 1\. No. [https://somethingididnotknow.wordpress.com/2013/07/01/change...](https://somethingididnotknow.wordpress.com/2013/07/01/change- page-styles-with-greasemonkeytampermonkey/) 2\. No. [http://stackoverflow.com/a/17228991/19746](http://stackoverflow.com/a/17228991/19746)

<comment><AUTHOR> Adding style through JS is a workaround (pretty inconvenient one). It's not a feature.</comment></comment></comment></comment>


Ask HN: Have you tried a snail-mail-to-web (virtual mailbox) service?  - <AUTHOR>

Dear HN: I'm a hacker currently based in California. I'm looking to take on the on-the-road lifestyle -- travel to Asia, and hopefully try to support myself by building iPhone and Mac apps. I'd like to have a place to receive occasional snail mail while on the road.
Googling a bit reveals some services that will accept your mail via their PO Box, and show scans online, for something like $20 per month. Examples of companies I found are Virtual Post Mail and Earth Class Mail. Unfortunately, it's incredibly hard to tell if they are in fact legitimate or trustworthy. If you have actually tried one, I would highly appreciate your feedback of how it went!
Thanks. <comment><USER2> I've been living overseas for 5 years, and have used both as my primary snail mail service. Both are completely legitimate and trustworthy, I wouldn't worry about that at all. Even my new credit cards and subsequent PIN mailings have gone through these services without any problems (though the separate PIN mailing is a dated concept, obviously!)

I switched from ECM to Virtual Post Mail about a year ago after a big price increase that angered a lot of long time users, and couldn't be happier. In part, ECM has changed business strategies - they're targeting entire postal systems (they have Switzerland, for example), not just average people.

ECM has (or at least had) a slightly clunk interface implemented in PHP, while VPM has an slicker, faster interface written with Google Web Toolkit. I'm even thrilled with their customer service.

</comment><comment><USER3> I used Earth Class Mail for a year or so, a few years back. It worked great and I had no complaints. It's a legit business, though I cant' say with certainty that they weren't stealing all my secrets or anything. (Though if they did, they never did anything malicious with the information, because nothing bad happened.)</comment>


Flow-based Programming - <AUTHOR> http://www.jpaulmorrison.com/fbp/ <comment><USER3> There's a good discussion in the Google group of the ideas that differentiate what we are now calling "classical" FBP (or CFBP) from FBP-like systems, more and more of which are appearing all the time - in particular the topic "Underlying models" \- [https://groups.google.com/forum/#!topic/flow-based- programmi...](https://groups.google.com/forum/#!topic/flow-based- programming/L_E7dEU6sN8) .

If you are interested in the more large volume, data-processing, "classical" FBP implementations, a good place to start is my book, "Flow-Based Programming", 2nd ed., and the web site [http://www.jpaulmorrison.com/fbp/](http://www.jpaulmorrison.com/fbp/) .

<comment><USER4> Hey Paul,

Glad to hear FBP is going strong. You may not remember me but I had a chance to work with you many years ago on getting the Java based FBP framework to input/output HTML (ie like a servlet node). Always loved the paradigm, the parallelism and genericness of the whole concept. I wrote many, many networks and eventually wrote an FBP parser that would create programatic FBP networks from XML files. I was wondering if this sort of thing (interpreter/parser/language) was ever incorporated into FBP itself? If not - are their any plans? Nowadays JSON would be the way to go. Thanks again - <USER2> all is well. Chris S

</comment></comment><comment><USER5> On the topic of dataflow programming I found the book "Dataflow and Reactive Programming Systems: A Practical Guide to Developing Dataflow and Reactive Programming Systems" by Matt Carkci [0] to give a pretty good overview of the different types and implementations of dataflow programming systems. I think that flow-based programming sounds incredibly cool, but I haven't found any project where I could use it well... yet!

[0] [https://leanpub.com/dataflowbook](https://leanpub.com/dataflowbook)

<comment><USER6> I think the biggest problems with flow based or reactive programming are the occurrence of glitches, and, more importantly, the problem of how to compute updates without performing unnecessary work.

I wonder if these problems have been successfully addressed somewhere.

<comment><USER7> My work [1] addresses glitches head on (hence the system is called "Glitch") by tolerating glitches and at least making the extra work functionally benign (via logging and rollback, like a transaction). Glitch is not based on data flow, however, but somewhere in between even if still very reactive.

I've built a few data flow systems in the past (my dissertation work [2] was based on one), but I decided to tolerate rather than avoid glitches early on because I found that way to be more resilient. Flapjax [3] avoids glitching via a topological sort, which I rather see as an optimization (to reduce unnecessary work) rather than as a correctness issue.

[1] [http://research.microsoft.com/apps/pubs/default.aspx?id=2265...](http://research.microsoft.com/apps/pubs/default.aspx?id=226574)

[2] [http://research.microsoft.com/pubs/179366/mcdirmid06superglu...](http://research.microsoft.com/pubs/179366/mcdirmid06superglue.pdf)

[3] [http://cs.brown.edu/~sk/Publications/Papers/Published/mgbcgb...](http://cs.brown.edu/~sk/Publications/Papers/Published/mgbcgbk- flapjax/paper.pdf)

<comment><USER6> Interesting. Do you know of any work that computes a data flow graph as the program runs (i.e. data flow is implicit in the source code), which performs then reactively?

<comment><USER7> Ya, that is exactly how Glitch works, except I just call the data flow graph as a dependency graph :).

Computing the dependency graph dynamically obviously leads to a lot more flexibility. I'm not really sure what you mean by "reactively" here: if you mean does it reactively update computations as state (and even code, if you want to get Bret Victor about it) changes, then ya.

Data flow by itself isn't necessarily reactive; actually the way it was originally defined to work very lazy push things through. Continuous interpretations where changes were propagated non-lazily didn't come until much later.

</comment></comment></comment></comment></comment><comment><USER8> A framework that is similar to this in python (that I am one of the authors of) [1] (and [2] for more in-depth docs/examples). It's used in openstack (which some people may have heard of) where appropriate (and where desirable...) to help in consistent, scalable execution using a flow like methodology to declaratively describe workflows (and execute them using various strategies/engines).

[1] [https://github.com/openstack/taskflow](https://github.com/openstack/taskflow)

[2] [http://docs.openstack.org/developer/taskflow/](http://docs.openstack.org/developer/taskflow/)

<comment><USER9> The one I did know in python was PaPy:

[https://code.google.com/p/papy/](https://code.google.com/p/papy/)

Will have to have a closer look at this one as well, though.

<comment><USER10> Author of PaPy here.

Thanks for giving PaPy a try. Although PaPy [[https://github.com/mcieslik- mctp/papy](https://github.com/mcieslik-mctp/papy)] has never gained traction :(, I have been using it daily for over 5 years (no bugs in the scheduler so far). By now our PaPy based genomics pipelines have probably processed petabytes of data.

</comment></comment></comment><comment><USER11>
        Bandwidth Limit Exceeded

        The server is temporarily unable to service
        your request due to the site owner reaching
        his/her bandwidth limit.

        Please try again later.

<comment><USER12> [https://web.archive.org/web/20141026114453/http://www.jpaulm...](https://web.archive.org/web/20141026114453/http://www.jpaulmorrison.com/fbp/)

</comment></comment><comment><USER9> For anyone wanting to read-up / discuss FBP in depth, don't miss the mailing list, it's a gold mine of information:

[https://groups.google.com/forum/#!forum/flow-based- programmi...](https://groups.google.com/forum/#!forum/flow-based-programming)

</comment><comment><USER13> What specifically differentiates this from functional reactive programming?

<comment><USER9> Matt Carkci's book discusses the different closely related topics of data flow, flow based programming and reactive programming, very clearly and i quite some detail:

[http://dataflowbook.com/cms](http://dataflowbook.com/cms)

Can highly recommend.

<comment><USER5> Wow, we just recommended the same book within seconds of each other. But seriously it's a good book, if you have interest in the topic it's worth reading.

<comment><USER14> I believe the author started [http://www.reddit.com/r/dataflowprogramming/](http://www.reddit.com/r/dataflowprogramming/) It's a bit slow, but there's a lot of good stuff in there already.

</comment></comment></comment></comment><comment><USER9> On a related note, there's a new Apache Incubator project, built on these FBP principles: [http://nifi.incubator.apache.org](http://nifi.incubator.apache.org)

</comment><comment><USER15> This can be done in Clojure with core.async [1] and transducers [2]

[1] [http://clojure.com/blog/2013/06/28/clojure-core-async- channe...](http://clojure.com/blog/2013/06/28/clojure-core-async- channels.html)

[2] [https://www.youtube.com/watch?v=6mTbuzafcII](https://www.youtube.com/watch?v=6mTbuzafcII)

</comment><comment><USER16> We implemented a flow-based programming language in Mozart Oz at github.com/fractalide/fractalide if you're interested.

<comment><USER17> I can testify to the usefulness of Mozart Oz. It is a multi-paradigm programming system. I didn't know it had dataflow as one of its paradigms. Is this something written in Mozart Oz rather than an enhancement to it ?

</comment></comment><comment><USER18> Ask HN: Is Excel a dataflow programming tool?

<comment><USER19> Sure, but it is not "flow-based programming" (which is what this article is about) because there are no named output ports.

</comment></comment><comment><USER20> Is this similar to Flux of ReactJS?

</comment><comment><USER21> ITT: lots of people hawking other (semi-)related content.</comment>