JavaScript: The Curious Case of null >= 0 - <AUTHOR> https://blog.campvanilla.com/javascript-the-curious-case-of-null-0-7b131644e274 <comment><USER2> Not to defend JavaScript too much, but I think the three examples seem reasonable when viewed in the right way, and I think it's hard for JavaScript to do much better with its existing design philosophy (dynamic typing and coercion rather than runtime errors to deal with type mismatches).

>= and > are _numerical_ operations, so both sides are interpreted as a number, and null is 0 when treated as a number. That means `null > 0` becomes `0 > 0`, which is false, and `null >= 0` becomes `0 >= 0`, which is true. In contrast, == is a much more general operation that works on numbers as well as objects, strings, and all sorts of other things, so it certainly doesn't make sense to always convert both sides to a number first. I'm certainly happy that `null == 0` is false in JavaScript, and I wouldn't want that changed to be consistent with numerical comparison (which comes up much more rarely than equality checks, at least in my code).

This type of issue isn't unique to JavaScript. In Java, if you have boxed Integers, `==` will do object identity comparison (so two different instances of the same number will compare as not equal), while `>=` etc will unbox them and do numerical comparison, which I think stems from the same issue of equality being more general than numerical comparison.

Also worth noting that it's _not_ always true that `a >= b` means `!(a < b)` in JavaScript. `'a' >= null` and `'a' < null` are both false.

<comment><USER3> Let me agree with you but then turn that on its head.

You've argued that having `null >= 0` is the _best that JS could do_ while having a coercion-based semantics. And I agree: this confusing behavior may be the best you can possibly do with a coercion-based semantics. And it's not just this example, either. JavaScript is filled with gotchas, and a lot of them have to do with automatic coercion. For example, did you know there are number and string values x, y, and z, such that x<y, y<z, and z<x?

But if this is really the best you can do in the presence of automatic coercion, maybe that's an argument against coercion.

<comment><USER4> > having `null >= 0` is the best that JS could do while having a coercion- > based semantics. And I agree

Well, I disagree. You have to add a third condition for this to be the best you can do, and that is that the boolean type has to be two-valued. But that is not a given. Just as numerical types can include infinities and NaNs, a boolean type could include a third value that is neither true nor false. The IF statement would have a third clause to handle this value, something like:

        IF condition
        THEN [code if condition is true]
        ELSE [code if condition is false]
        OTHERWISE [code if condition is neither true nor false]

Like ELSE, the OTHERWISE clause would be optional so this would be a backward- compatible change. By default, existing code that encountered non-true-non- false conditions would do nothing.

<comment><USER5> Are you seriously suggesting that, widgety though JS's implicit type conversions might be, if its booleans had three values then things would be better?

<comment><USER4> Yes. Why would you doubt it? (i.e. why would you doubt that I'm seriously suggesting it, not why would you doubt that what I am suggesting has merit)

(Oh, and BTW, before you completely dismiss the idea that my suggestion might have merit, you might want to look me up. I didn't just fall off the turnip truck.)

<comment><USER6> FWIW, for the downvoters: you really should look 'lisper up. I'm not sure I agree with him but the incredulity shown here is unwise.

<comment><USER7> The down votes are likely for trying to invoke an ad hominem argument. No matter someone's credentials, it's still a logical fallacy and something to be avoided. If he is an authority on the subject, it should show through in his comments. I'm sure he's a very smart and knowledgable person. But there are a lot of smart and knowledgable people here and by invoking his credentials, he's presuming that the people he's talking to are less knowledgable, intelligent or entitled to their opinions. It's insulting and he's earned his downs.

Full disclosure: I downed his 'look me up' post and upped his more substantive posts.

<comment><USER8> > If he is an authority on the subject, it should show through in his > comments.

The comment speculating on the "OTHERWISE" clause is the kind of brilliant off-beat thinking that challenges the level of understanding of the reader.

The people scoffing at and downvoting it are, however smart and knowledgeable they may be, ignorant or foolish. If they thought it through they might learn something.

It's a perfectly valid response to say, "Hey wait a minute, I know what I'm talking about here." It's not appeal to authority, and it is certainly not an _ad hominem_ since the people he's talking to have shown that they don't understand.

<comment><USER7> > brilliant off-beat thinking

Those words must have new meaning since he was citing as an example a language that's existed since the 70s. Ternary booleans are far from a unique or novel concept. The main difference is that for most languages, including Javascript, that third value exists at the variable binding or expression level, not the value level. Other languages that don't allow nulls encode that third value in a Maybe type. SQL, being a thin abstraction over data storage that needs to be able to encode nulls, doesn't make that distinction. That his idea was poorly worded to state that the actual Javascript value would have a third possibility rather than the comparison expression being nullable doesn't add to his credibility. The distinction between an expression evaluation, variable binding and a value isn't exactly a newbie concept, but for someone with the credentials he's claiming, I'd expect him to know it and be more precise.

> since the people he's talking to have shown that they don't understand.

Perhaps you should go back and read the exchange. The comment he was replying to was specifically about the mixture of Javascript and ternary booleans, not just ternary booleans. Also, if you re-read the comment that you're calling ignorant in the context of the authors original confusing of expression evaluations and values there's at least the possibility that he's making a very valid point, albeit in a way that can be read as confrontational. Javascript could already add an otherwise block without adding a third boolean value...all that would be necessary is to allow comparison operators evaluate to null or undefined and then execute the otherwise block in that case. Adding a third value would mean that a boolean variable binding could now have 5 values, true, false, not_true_or_false, null or undefined. That's nonsensical and deserves to be called out. It's bad enough that the language has null and undefined, since it causes a ton of confusion that could have been avoided. Adding some special "not null but sort of null" boolean value would just add more confusion to the language.

<comment><USER4> > Adding a third value would mean that a boolean variable binding could now > have 5 values, true, false, not_true_or_false, null or undefined. That's > nonsensical and deserves to be called out.

FWIW, I actually agree with this. There's no need to add a new value. It would be fine with me (within the context of Javascript's already horribly broken design) to use an existing value (null or undefined) as the third "boolean" value.

The part that really matters is that whatever null>=0 returns it should be different from either 1>=0 or -1>=0.

<comment><USER5> It seems like this thread has gone several different directions. Surely suggesting that that (null>0) should return null or undefined is a separate topic from suggesting that if() statements have three different control branches?

FWIW, I totally buy the former. If (null>0) returned null, then most things would still work as expected, and you could easily check the result of the comparison to catch unintended behavior. One can easily imagine a world where JS was defined this way from the start, and it'd be pretty much the same language.

The latter (three-way IF control structures) strikes me as waaaay more tenuous - much bigger change, more complexity on the programmer, and no benefits I can see that you wouldn't get from the former bit.

<comment><USER4> The reason for the three-way IF would be to avoid conflating null and false. Without that you'd have to write:

        IF (x<y)==null {
          [otherwise]
        } ELSE IF (x<y) {
          [then]
        } ELSE {
          [else]
        }

That seems awkward to me.

<comment><USER5> Yeah, I get that that's the intent, but (per my original comment) I'd think it would surely create more mess than it cleans up.

For example, I suspect that three-way IFs like you describe would only _really_ get used in two ways - often the second and third branches would be identical, and the rest of the time the third branch will be some kind of "console.warn('bad inputs!')" kind of error handling.

For the latter of those two cases, testing for the error case before proceeding to the regular logic (as in your code sample above) seems intuitively like the right thing to do - analogously to how you might check (isNaN(operand)) before doing some math. And in the former case, if the second and third branches are identical you'd almost certainly want some syntactic sugar to avoid writing the same logic twice, like "IF (bool) {...} ELSE-AND- OTHERWISE {...}" \-- which would just be isomorphic to what we have now. You know what I mean?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> This being a result of JavaScript's weapons grade weak-typing, I've always wondered of what benefit weak typing actually brings, once dynamic typing is assumed, over strong typing as in python/Ruby. Or at least strong _er_ typing. Reasonable coercion from 11434 -> "11434" is one thing, but why not throw an exception when anything more ambiguous is encountered? It would seem even for an absolute newcomer to programming, or someone experienced who wants to rapidly prototype, the bugs resulting from this hidden coercion complexity outweigh any gains in productivity. Especially considering the alternative is simply a set of special unambiguous casting functions that could be easily looked up.

<comment><USER2> > I've always wondered of what benefit weak typing actually brings

It makes your code crash less, and I would argue that in many cases that's desirable. I think it's a bit sad that the default behavior for computers is often to completely give up on the sight of any error. If you're running code in development or need to worry about data integrity, it makes sense to fail quickly and loudly, but if the analytics system or the "like" counter or some other non-critical feature crashes for a real user, it's a much better UX to degrade that feature rather than taking down the whole page.

I think the "avoid crashing at all costs" mindset was especially sensible when the web was viewed more as a collection of documents, with JS existing to give light optional enhancements rather than drive the core functionality. Imagine opening a Word doc or a PDF and having it crash because the author made a mistake. These days, I would certainly prefer that JS be more strict by default, especially in development.

I think the right way to handle the situation these days should be to define boundaries where a crash in one part of the code is contained to its boundary, e.g. React error boundaries ( [https://facebook.github.io/react/blog/2017/07/26/error- handl...](https://facebook.github.io/react/blog/2017/07/26/error-handling-in- react-16.html) ). I also think it's useful to have a variant of "assert" that just logs a warning and continues in production, since in many cases that's the desirable behavior.

<comment><USER10> > It makes your code crash less

Wait, can you back this up? What makes you think strongly typed languages crash more than weakly typed languages? What's a scenario where a strongly typed language will crash at runtime, but a weakly typed language won't?

I can see an argument that an interpreter of a weakly typed language will let you run a program with dangerous type conversions without complaining, while a strongly typed language won't even let you execute it - but are you counting that as a crash?

<comment><USER2> To be clear, I'm talking about strong/weak typing and static/dynamic typing as distinct concepts. My comment mostly applies to dynamic-typed languages.

In JavaScript, `1 + {}` gives the string `1[object Object]`. In Python, `1 + {}` crashes. Neither language has a static type system, so neither language is able to disallow an expression like `a + b`; it needs to actually execute the code to find out that you're adding two things that don't make sense. I think most examples of "Python is stronger-typed than JavaScript" are of that form; Python crashes while JavaScript silently does something that may or may not make sense. Accessing a missing property, accessing an array out of bounds, and calling a function with the wrong number of arguments are also examples where Python crashes and JS doesn't.

So "crashing less" is pretty much inherent in my (simplified) definition of weak typing, and not meant to be anything controversial.

<comment><USER11> Why is crashing less often better in these cases? When it crashes, you know there is a problem with the code that needs to be fixed. When it doesn't, you might have nonsensical results that you're not aware of.

<comment><USER2> It depends on the exact context, but I think that in many cases, it's better to present wrong data to the user than to crash the page, since crashing the page makes it useless. Let's say Facebook accidentally introduces and ships some bug when computing the "like" count on about 1 in 5 news feed items. I could imagine two scenarios:

1.) The JS code crashes and the Facebook news feed page breaks for basically everyone. The flood of errors is reported to the error monitoring system and Facebook engineers frantically fix or roll back the problem to limit the amount of time Facebook is unusable.

2.) 1 in 5 news feed items shows "NaN people liked this", but Facebook is otherwise usable. The flood of errors is reported to the error monitoring system and Facebook engineers frantically fix or roll back the problem to limit the amount of time the weird "NaN people" message is shown.

Scenario #1 is a really bad outage, and scenario #2 is a temporary curiosity/annoyance that most people don't notice, and hopefully it's clear that scenario #2 is a better situation for everyone. But it really depends on context; if the bug is "a bank's website shows incorrect account balances", then crashing the page is probably a better user experience.

I'm certainly not saying JS got it right; JS doesn't do the part from #2 where it alerts you if there's a non-fatal error in production. But I think the basic idea of error resiliency has plenty of merit.

</comment></comment></comment></comment></comment></comment><comment><USER12> If you're wondering why JavaScript does this, it's because early versions of the language did not have exceptions. So every operation defined at the time has to return some value for every possible input, even when those inputs don't make any sense.

It's likely that the only way we could get rid of this behavior would be through some `use strict`-like opt-in semantics.

TypeScript helps a lot too: [https://www.typescriptlang.org/play/#src=0%20%3E%3D%20null%3...](https://www.typescriptlang.org/play/#src=0%20%3E%3D%20null%3B%0D%0A0%20%3E%3D%20undefined%3B%0D%0Anull%20%3E%3D%200%3B%0D%0A'10'%20%3E%2010%3B%0D%0A'10'%20%2B%2010%20%3E%2010%3B%0D%0A)

</comment><comment><USER13> Dynamic languages with implicit type conversions are designed to make the easy cases easy (think of JS operating on webpage input, where everything is initially a string; would it have the influence and popularity it does today, if lots of explicit conversions had to be written?), but as a side-effect, the hard cases can become perplexing.

I have no doubt those steps specified in the standard had plenty of thought put into them. It has to handle all the types, as well as those special cases of infinities, NaNs, and +/-0, such that the common cases make sense. However, I think a flowchart or other graphical means of illustrating those algorithms would be far easier to understand.

<comment><USER14> you mean in this blog, or in the spec? (for the spec having the actual step spelled out is pretty much all you need when you're a spec implementation engineer. The flow chart is basically just eye candy for readers)

</comment></comment><comment><USER15> The rule `if null < 0 is false, then null >= 0 is true` seems to rely upon the law of the excluded middle, which is violated by the comparison algorithms. I think this summarizes the issue.

<comment><USER16> More precisely, it relies on the assumption that

(x > y) || (x == y) || (x < y)

is true for all values x, y.

But the semantics of the comparison operators lead to null > 0 || null == 0 || null < 0 being false and the whole house of cards crumbles down.

</comment></comment><comment><USER17> This is what comes from allowing conditionals on undefined values. The result of the relational operators isn't allowed to be "undefined". Nor is it an error to apply "if" to "undefined".

A similar problem comes up at the CPU level with IEEE 754 floating point arithmetic. There's a set of reasonable rules obeyed by FPUs about how results can yield a NaN. NaN values propagate through the math operations; if any operand of +, -, *, / is NaN, the result is NaN. That was well thought out.

But it breaks down at comparisons. Comparisons always return True or False. All comparisons with NaN return False. There's no such thing as "not a Boolean". Logically, there should be "not a Boolean" in compare condition bits, and attempts to use it to control a branch should cause an exception.

For historical reasons, FPUs were designed as add-ons to the main CPU. They were once separate "coprocessor" chips, back when one chip couldn't contain enough transistors to do both jobs. Early microprocessor FPUs had an arms- length relationship with the main CPU, and the x86 instruction set still reflects this. So the FPU comparison results and the branch logic aren't tightly integrated.

(There's also the fact that few languages can handle a floating-point exception well. You usually can't just put a try/catch around your number crunching and get an exception if the computation starts crunching meaninglessly on NaNs.)

</comment><comment><USER18> In a game of code golf, or something where you purposely make your code as hard to read as possible, I can imagine doing something like `if (!(x>0) && !(x==0) && (x>=0))` instead of doing `if(x===null)`.

<comment><USER19> Not as hard, it's as short as possible, i.e. a keystroke is stroke.

The hard to read is a pleasant side effect.

</comment></comment><comment><USER20> Did he seriously claim at the end that that made sense "mathematically"?

<comment><USER21> Yes. For X and Y being of the same type, defining the < operator should be enough to derive all other operators:

Define X < Y, and then derive the rest:

X > Y : X < Y

X == Y: !(X < Y) && !(Y > X)

X != Y: !(X == Y)

X >= Y: !(X < Y)

X <= Y: !(Y < X)

That's why it's the only operator that needs to be defined for std::map/set (which are rb-trees) in C++

Now, if X and Y aren't the same type, the only thing you can expect to get out of the system is a cronenberg.

<comment><USER22> > _X == Y: !(X < Y) && !(Y > X)_

Only for totally ordered sets [1]. Floating-point numbers, for example, are not totally ordered, because !(NaN == NaN).

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

</comment></comment></comment><comment><USER23> bottom line is: if your language allows you to compare apples to oranges, then you are comparing apple to oranges.

</comment><comment><USER24> I thought so when starting to read this article and seeing > and == cases being false. I guess, with some experience one probably has implemented such logical shortcuts as well themselves. And now I am pretty sure this is a question of backwards compatibility and not anymore easily reversible

</comment><comment><USER25> I think a lot of you are drawing overly broad conclusions from this, according to your predispositions.

A good language feature should be intuitive, given a basic understanding of the feature, and this falls within that.

A JavaScript programmer considering what the relative order of null and 0 is (and therefore how an inequality operator between them would behave) would intuitively conclude, "I don't know, 0 and null don't have a natural relative order. I probably shouldn't be doing that or else I need to go to the spec."

Anyway, you can hardly judge a language feature as bad because it alllows you to do things that don't make sense (in an edge cases, no less)... then what language features in any language be good?

<comment><USER26> > then what language features in any language be good?

Those that obey general principles without exception. For example:

(0) "Abstraction clients must not rely on implementation details": parametric polymorphism, abstract data types.

(1) "Case analyses must be exhaustive": algebraic data types and pattern matching.

(2) "Make as few assumptions possible about the intended meaning of programs": principal types.

</comment></comment><comment><USER27> I wish in JavaScript that inequality operators would always return false if either side of the operator needed coercion, at least then this sort of scenario would be predictable (and a little more JavaScripty than throwing an error).

As it stands, it's bad practice to rely on this sort of edge case in your code. If you know that one of the variables can be null, always handle that case before doing the comparison.

<comment><USER28> It does. [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Equa...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Equality_comparisons_and_sameness)

</comment></comment><comment><USER29> See the biggest problem with JS dynamic types isn't "type uncertainty" but coercion. Fail instead of limping along ffs.

</comment><comment><USER30> I think the right response for such an operation would be to throw a runtime error as opposed to coercing it into an integer. That's what a lot of other languages like ruby do. While I understand JS' philosophy of dynamic typing and coercion rather than runtime errors. I think this is taking it too far.

</comment><comment><USER31> Here is a nice investigation on how such curious javascript behaviors can have an impact on a real code base.

[http://stedolan.net/incomparable/](http://stedolan.net/incomparable/)

</comment><comment><USER32> The least favorite things of all developers... Nulls and JavaScript.

</comment><comment><USER33> I had to analyse some javascript malware the other day. It was quite impressive, and reminded me about some of the hateful parts of javascript.

</comment><comment><USER34> Life is too short to understand why JavaScript acts the way it does.

</comment><comment><USER35> It ain't no preorder

</comment><comment><USER36> Dynamic typing is a nightmare.

<comment><USER37> It's not so much dynamic typing, but a lack of typing. Dynamic typing means that type checks are made at runtime.

e.g. in Ruby:

        irb> nil >= 0
        NoMethodError: undefined method `>=' for nil:NilClass

and Python 3:

        >>> None >= 0
        TypeError: '>=' not supported between instances of 'NoneType' and 'int'

Obviously JS (and Python 2!) get this wrong, but to be fair JS was designed in the 90s.

<comment><USER38> I agree with everything you said, except for the part where you said JavaScript was "designed".

</comment></comment></comment><comment><USER39> Forget JS! WebAssembly is coming and you can use nice languages with it, for example C#. and if you need compatibility with older browsers you can still compile WebAssembly to JS and send it to old browsers.

<comment><USER40> That's nice. But also a new attack vector.

</comment></comment><comment><USER28> *or</comment>


Muzzik: Find and listen to any song, anytime, anywhere - <AUTHOR> The App / Site are 100% free, and have zero ads.
https://play.google.com/store/apps/details?id=com.buhane.muzzik
https://muzzik.app/#screenshot
Get millions of songs instantly, top charts, trending songs by all country...
Available for more than 30 countries including;
Arabian, Bulgarian, Chinesee (China), Chinesee (Taiwan), Croatian, Czech, Dutch, English
Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean
Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, Vietnamese...
Material Design
The user interface matches every single detail of the material design guidelines to ensure Muzzik is an eye candy for you.
Easy to Use
No complicated or overblown menus but a familiar and clean interface.
Last.fm Integration
Muzzik automatically downloads additional information about your artists such as their images or biographies. When you install the official Last.fm app, scrobbling will work right out of the box too.
Dynamic Colors
The UI colors change dynamically to match the main contents base color.
Customizability
There is an inbuilt theme engine with many different colors to choose from.
Tag Editor
The tag editor allows you to easily edit the tags of your music files such as title, artist, album name (...) for single songs or whole albums. You can even either let Muzzik automatically download missing album covers for you (powered by Last.fm) or choose one from your internal storage.
And OF COURSE
- Muzzik has all standard features such as:
- Create and edit playlists
- Homescreen widget
- Lockscreen playback controls
- "Go-To Actions" such as jump from a song or an album right to its artist <comment><AUTHOR> We do have Android Auto support now :)

<comment><AUTHOR> Muzzik application how-to videos on our YouTube channel.

Muzzik - How to use search widget on home screen? [https://www.youtube.com/watch?v=PHaJfy6c-3I](https://www.youtube.com/watch?v=PHaJfy6c-3I)

How to download songs? [https://www.youtube.com/watch?v=dSJ4bEiI884](https://www.youtube.com/watch?v=dSJ4bEiI884)

</comment></comment><comment><USER2> What's the back end? As in where does the music come from? Where are the files located? Who's paying royalties? Who's paying for bandwidth? What are the rights on the songs? How does new music come into it?

TANSTAAFL.

[https://en.wikipedia.org/wiki/There_ain%27t_no_such_thing_as...](https://en.wikipedia.org/wiki/There_ain%27t_no_such_thing_as_a_free_lunch)

<comment><USER3> Especially with this type of content! I don't even dare try.

<comment><AUTHOR> i bet you would definitely do it if you are able to do it dude.</comment></comment></comment>


How to create a schedule that fosters creativity | TK's weblog - <AUTHOR> http://www.tawheedkader.com/2010/06/how-to-create-a-schedule-that-fosters-creativity/ <comment><USER2> This is why I like to have "meeting days" - hopefully one, (or less optimally, two) days when people are subject to be asked to attend a meeting. Sure, that can mean that you may end up wiping a whole day to meetings, but at least it allows four days for people to follow the natural rhythm of their work.</comment>


Street-Fighting Math: Educated Guessing and Opportunistic Problem Solving (2010) [pdf] - <AUTHOR> https://mitpress.mit.edu/sites/default/files/titles/content/9780262514293_Creative_Commons_Edition.pdf <comment><USER2> I feel this was a response to this recent submission as perhaps an example of a math text that is less traditional? (Could be interesting to look at the discussion and see how this text holds up?)

 _Why do many math books have so much detail and so little enlightenment? (2010)_

> > [https://news.ycombinator.com/item?id=14338411](https://news.ycombinator.com/item?id=14338411)

<comment><USER3> It's an interesting comparison to be sure, but I'm not sure Street-Fighting Math has a lot to offer graduate-level pure math texts (the subject of that post).

I own and love the book, and did a lot of pure math in my math undergrad degree. But SFM is closer to the tradition of Martin Gardner's long-running "Mathematical Games" column in Scientific American than real higher pure math education.

I think that's because it hinges on giving you tools to "hack" problems in physics, geometry and calculus that leverage intuition about quantities and space. There are branches of pure math where this matters a lot, but frankly it's not going to help you learn about Lie groups or category theory. It's not clear to me that the style and approach of SFM is helpful in this kind of very abstract context where a detailed understanding of unfamiliar sorts of concepts and mechanics is crucial.

<comment><USER2> True. The title alone lets you know it's not teaching you braid theory. But in terms of providing a different perspective to read, teaching, learning mathematics - that is where the comparison or interesting bits could lay. Also, have you (or anyone here) taken the Stanford course "Introduction to Mathematical Thinking"?

> [http://online.stanford.edu/courses/mathematical-thinking- > win...](http://online.stanford.edu/courses/mathematical-thinking- > winter-2014)

</comment></comment></comment><comment><USER4> The other book [1] is even better. Unfortunately, there is no free lunch. Knowing _when it 's ok_ to cut corners is more important than _how_ to cut corners, and there does not seem to be an easy way to learn that.

[1] [https://mitpress.mit.edu/books/art-insight-science-and- engin...](https://mitpress.mit.edu/books/art-insight-science-and-engineering)

<comment><USER5> You can download it from here: [https://ocw.mit.edu/resources/res-6-011-the- art-of-insight-i...](https://ocw.mit.edu/resources/res-6-011-the-art-of- insight-in-science-and-engineering-mastering-complexity-fall-2014/online- textbook/)

</comment></comment><comment><USER6> There was this estimation technique one of the Sixty Symbols professors talked about, where you do all of the calculations, but you only keep one significant digit. It's something you can do quickly in your head while conversing with someone, but tells you pretty reliably if something is feasible.

<comment><USER7> When the first digit becomes 1 keep two digits. A small effort for much higher precision. (Something to do with Benford's Law? Maybe.)

<comment><USER8> Sounds Benford-y, yeah. The biggest relative "error" in [0,99] is going to be at 19, where the estimate (1 * 10^0) at only ~52% of the actual value (1.9 * 10^0). That local minima for accuracy recurs at 199, 1999, etc. From some quick spreadsheet-fu, the mean underestimation for [0,9999] is 88%.

Meanwhile, with the "teens" trick, the local minimum is 29 (68.9%) and then at 299, 2999, etc, and the mean underestimation is boosted to... huh, only 91%?

Then again, I'm assuming a completely even distribution, which probably won't be true in some contexts.

</comment></comment></comment><comment><USER9> This is also available as an online course: [https://ocw.mit.edu/courses/mathematics/18-098-street- fighti...](https://ocw.mit.edu/courses/mathematics/18-098-street-fighting- mathematics-january-iap-2008/)

<comment><USER10> And a self-paced course through edX:

[https://www.edx.org/course/street-fighting-math- mitx-6-sfmx](https://www.edx.org/course/street-fighting-math-mitx-6-sfmx)

</comment></comment><comment><USER11> From the forward, "With rare exceptions, the mathematics that I have found most useful was learned in science and engineering classes [or] on my own".

This has been the case for me too. I never learned this in a class in school, but one of the most important things I've always done when learning some mathematic topic is try to #1 associate it with something in the real world and #2 find a way to "guestimate" without a calculator what the answers will be. For instance, take square roots. The sqrt of 137 will be between 11 and 12 more precisely about 11.7 and I can visualize it in my head as one side of a 2D square shape. Also squares and square roots allow me to easily think about the area covered (size/shape) by N-dimensions in relation to the size of just one dimension. A real world application which is interesting to note is that the time it takes a falling object to hit the ground is equal to the square root of the distance traveled (really 2 times the square root divided by gravity but the general relationship is the same).

</comment><comment><USER2> More math books and discussion:

[https://news.ycombinator.com/item?id=10248651](https://news.ycombinator.com/item?id=10248651)

</comment><comment><USER12> I have tried this book a few times, and I'm awed by it, yet I am not significantly better. I fear the problem is that when Sanjay refers to educated guessing, the level of education and practice is very high indeed. While I can marvel at the examples in the book, I would need a steady stream of work-a-day examples to work through, ala Project Euler.

</comment><comment><USER13> This complaint about the way math is currently taught, and the ensuing new approach, both remind me of "A Mathematician's Lament" [0] by Paul Lockhart.

[0]: [https://www.maa.org/external_archive/devlin/LockhartsLament....](https://www.maa.org/external_archive/devlin/LockhartsLament.pdf)

</comment><comment> time-of-flight Back in 2010 I ran across Sanjoy's method for using the musical scale to perform more complicated arithmetic (mentally calculate pi^6 +/\- 5% within 30 seconds).

Can't wait to read the entire work.

<comment><USER14> pi^2=10 so pi^6=1000?

This is within 5% of the real answer, but does not not involve music!

<comment> time-of-flight I chose a coincidentally easy problem (whoops).

Here's another one, less accessible to attack: Find e^7. Or 25000^(1/8).

The trick to using the musical scale is that it's logarithmic in frequency but linear in key (ABCDEFG). The frequency step between adjacent notes is 2^(1/12); the frequency jump over an octave is 2; the frequency jump over 40 notes is 10. There are other handy ratios to remember, like that going up a whole step is a frequency increase of 9/8, and the more you know the more powerful this method is.

To solve 25000^(1/8) = x, you're looking for an interval x on the keyboard such that if you were to go up 8 of those intervals, the frequency would jump by 25000. Well, 25000 is just 10^5 / 2^2, or in terms of keyboard intervals, "Go up 40 notes (repeat four more times), then down two octaves". This means to represent a frequency increase by a factor of 25000, I need to go up 10 _5-2_ 12 = 176 half steps on a keyboard.

Divide by 8 to find x = 22 steps, which is two octaves minus a whole step on the keyboard. The frequency change over this 22-step interval is thus (2*2) [up two octaves] / (9/8) [down a whole step] ~ 3.5. So that's the final answer: 3.5

The actual value of 25000^(1/8) is 3.546, so this approximation is good to within a couple of percent.

<comment><USER15> A good trick for calculating powers of e is that e^3 ~ 20. So e^7 is roughly 400e, so about 1080, completely without pen and paper. This is only 1.5% off.

Your trick is cool too, by the way.

For your other challenge, I would use the enormously useful 2^10 = 1024 ~ 1000 (which the musical trick implicitly uses too, in the 40 notes is 10 times the frequency mnemonic). So 25000 is close to 5^2 * 2^10, and it's square root is 5 * 2^5 = 160 (we can always keep in mind that 2^10 ~ 1000 is an overestimate by 2.4%, so our 160 ~ sqrt(25000) is an overestimate by 1.2%, so an improved approximation of sqrt(25000) is 158). 158 is very close to the midpoint of 144 and 169, so its square root is not far from the midpoint of 12 and 13. So my approximation of 25000^(1/4) is 12.5. Finally I need to take a sqrt of that. I know the square of 3.2 is 10.24 (our old friend 2^10 = 1024), and that's about 20% too low. Ok, we need to bump our 3.2 up by 10%, that makes is 3.52, and that's our answer. It's only 0.7% off, but it's only by luck. For a more general problem, keeping a tab of your first estimate as an absolute number and your current correction as a percentage gives an error of less than 2%.

</comment></comment></comment></comment><comment><USER16> Sanjoy is rad. This should be a must-read for engineering school.

<comment><USER17> At my local Boeing plant the engineers write WAG (wild a-- guess) on something when they're spitballing and don't want to do the math, I wonder how frequently a WAG can be made more precise if this were more widely read.

</comment></comment><comment><USER18> I've heard good reviews. Have had this downloaded on my mobile for a few _years_ now ... should get around to reading it "soon" -_-

<comment><USER19> I understand your problem :) I've partially solved it by dedicating my lunch hour to (along with eating) reading some good non-fiction book. Bit by bit, you make progress.

Obviously, you could do it some other time, but the important part is to make it a habit, so that it feels almost automatic to do, or that you feel like something's missing/feel guilty if you skip it.

<comment><USER18> Actually I used to read in lunch hour. I used to specifically eat lunch later than my peers so that I don't end up going in a group (I know, I know, I was picking reading over society ...). But of late my workload has increased a lot, so I'm having lunch at my desk.

You're right about making a habit. I am trying to read an hr before bedtime or an hr right after office (when I reach home) nowadays.

</comment></comment></comment><comment><USER20> I took a class with the Sanjoy (the author) this past fall. Awesome guy and a great teacher.

</comment><comment><USER21> I thought this was going to about Street Fighter[1] machine learning

[1] [https://en.wikipedia.org/wiki/Street_Fighter](https://en.wikipedia.org/wiki/Street_Fighter)</comment>


Online Personalization Creates Echo Chamber to Affirm Biases - <AUTHOR> https://www.nytimes.com/2011/05/29/technology/29stream.html <comment><AUTHOR> An alternate perspective is available at [http://glinden.blogspot.com/2011/05/eli-pariser-is- wrong.htm...](http://glinden.blogspot.com/2011/05/eli-pariser-is-wrong.html)

<comment><USER2> I'm not convinced of this rebuttal. The problem is that these systems tend only to improve serendipity _within the comfort zone_. Greg's One True Scotsman argument that a "well-designed" system would of course be better is not convincing either.

Naive systems optimize for things you already like, or variations on things you already like. The system doesn't need to present a broad array of ideas. Presenting you with something that causes a strong negative reaction is considered a bad thing.

Newspapers have the same problem to a lesser degree: I know folk who read the Weekly Standard and who wouldn't touch the NYT with a bargepole, and vice versa.

We just have many more, smaller echo chambers. People will always have to make the conscious effort to give strange views a fair hearing.

</comment></comment><comment><USER3> "[Pariser] went out of his way to "friend" people with conservative politics. When he didn't click on their updates as often as those of his like-minded contacts, he says, the system dropped the outliers from his news feed."

There's the rub. The Internet, among other things, has created a flood of data into people's lives. Filtering is essential. Pariser's built-in mental filter took over. I understand the premise of what's being said here. But it's more complicated than this. If an article/story/data in general is uninteresting or repellent enough to someone that it's ignored, did it really help that it was on the page briefly as it's skimmed past?

I think the problem is that it _automatically_ dropped things from his feed. It might be good to offer a way to turn filtering off entirely and leave it up to the person. I can't imagine anyone would really want this for long, though.

</comment><comment><USER4> Recommendation engines tend to suggest more variety than what your friends would. The whole argument rests upon silly anti-tech fears.

The vast majority of people get more political diversity in their Amazon recommendations than the NYT can produce.

</comment><comment><USER5> I think a big problem here is the scaling of online communities(there was a great article out on this a couple years ago). As homogeneous online communities grow their perceived quality goes down in part due to relatively heterogeneous members disrupting the signal to noise ratio. Sites like facebook(and I assume even reddit) get around this scaling problem by partitioning members off into homogeneous sets. This problem is related to the fact that there is a dialogue happening. Dialogues within heterogeneous populations degrades into culture war. So partition the user base via filters, create structure that mediates the dialogue/interaction, or create niche communities tailored to a homogeneous community.

<comment><USER6> The old article you mention might be "A Group Is Its Own Worst Enemy" by Clay Shirky?

<http://shirky.com/writings/group_enemy.html>

<comment><USER5> That's the one, thanks.

</comment></comment></comment><comment><USER7> There are not black & white opinions.

The issue is that the goal recommendation systems in commercial sites is [generally] profits. So, Netflix will not risk to recommend a film outside some confidence level.

In my experience, closer [taste] friends works better than recommendation systems, since they can see outside the typical statistics.

<comment><AUTHOR> With friends, we learn to accept/reject their recommendations based on our experience with their recommendations in the area they are recommending. We filter the filters.

<comment><USER8> Yeah, I often find myself intentionally stopping this occasionally to allow growth into areas that I don't currently like, but could. This includes odd foods, hobbies, activities, etc.

Usually try to give it 4-5 "goes" at the novel activity to determine if they're good at picking out things that at first aren't interesting.

</comment></comment></comment><comment><AUTHOR> You can watch the TED video here: [http://www.ted.com/talks/lang/eng/eli_pariser_beware_online_...](http://www.ted.com/talks/lang/eng/eli_pariser_beware_online_filter_bubbles.html)

</comment><comment><USER9> This has been a fear since the earliest days of online communities. I don't think actual behavior has confirmed that it occurs more often online than elsewhere; if it did, Pariser would have more hard data (rather than just-so anecdotes and hand-wringing about potential-risks) by this time.

People who want to be insulated could always achieve it; however people also like novelty and (to a certain extent) challenges to their own views. (People even enjoy being outraged; I suspect right-wing-radio has as many listeners thinking 'ohmygod what an idiot' as 'finally someone who tells it like it is'.)

Online forums make it cheaper, easier, and even socially safer to incrementally explore alternative viewpoints without precommitting, via a public show of group-loyalty, to a standard school of thought.

I suspect the net effect is strongly in the direction of more awareness and respect for a wide variety of viewpoints, despite the sturm and drang of certain flamefests and partisan outlets. (And even despite the success of Pariser's own organization MoveOn, and its siblings across the political spectrum, with simpleminded outrage-driven us-vs-them fundraising campaigns.)

However, I'd like to see data or a well-designed experiment; none of the coverage of Pariser's book has yet suggested a qualitatively-rigorous case is made within.

</comment><comment><USER10> On a somewhat related note, I was looking at health insurance the other day. Wanting to make sure I remembered the terms correctly, I Googled, "how do health insurance deductibles work". By the time I typed the word 'insurance' my question was #1 in the suggestions pop-up. I found this strangely reassuring.

Later, I realized that it may well be at the top solely because I searched on the same exact term the last time that I was looking at health insurance, and Google remembered.

</comment><comment><USER11> Surprise, surprise... The largest of traditional newspapers has a problem with one of the biggest drivers behind online media: that you can finally choose what you read.</comment>


Ask HN: What do you use to manage your professional relationships? - <AUTHOR> A tool that doesn't conform to the rigid ATS or CRM models. LinkedIn is a disaster, and most of my relationships are in email. <comment><USER2> I use LinkedIn. I'm not a tech guy and work in tax. Whenever I meet clients, I add them on LinkedIn and leverage that to find more introductions. I know LinkedIn isn't well liked in the tech space, but for global businesses doing infrastructure development, it works exceedingly well.

For relationship management, I try to meet at least 6 clients face-to-face every week.

</comment><comment><USER3> What specifically about LinkedIn makes it a disaster in your eyes? I've recently started using it again and found it to be immensely helpful.

</comment><comment><USER4> Despite its unpopularity on HN, I find LinkedIn to be excellent for my needs.</comment>


The Internet is broken - <AUTHOR> https://www.nytimes.com/2017/05/20/technology/evan-williams-medium-twitter-internet.html <comment><USER2> "I thought once everybody could speak freely and exchange information and ideas, the world is automatically going to be a better place," Evan Williams says. "I was wrong about that."

Great quote.</comment>


Mozilla Firefox - 10 yers olds bug fixed - <AUTHOR> https://bugzilla.mozilla.org/show_bug.cgi?id=39098

<comment><USER2> Yow.

Although I wonder about this being the reason for that many people downloading the Copy Plain Text add-on (I use it to avoid copying formatting info (e.g. font size, style, etc.)).</comment>


Every Thursday I'll work for free - <AUTHOR> http://victorantos.com/every-thursday-i-work-for-free.aspx

<comment><AUTHOR> The project is located here <http://thursday.victorantos.com/>

</comment><comment><AUTHOR> the projects are available for download now <http://victorantos.com/thursday.aspx></comment>


Paris just made all public transportation free to decrease air pollution - <AUTHOR> http://www.businessinsider.com/paris-smog-problem-2016-12 <comment><USER2> I am in Paris at the moment. When we drove from the airport , only odd numbered vehicles were allowed in the city center so all even numbered vehicles had to exit the freeway and were stuck in traffic jam.

This in turn increased the travel time for half of the vehicles and pollution due to the jam

</comment><comment><USER3> Hope they added wagons. Underground experience in Paris was odd few years ago, to say the least.</comment>


Computer scientist uncovers clue to deciphering the Voynich manuscript - <AUTHOR> https://globalnews.ca/news/3984789/voynich-manuscript-computer-decipher-alberta/ <comment><USER2> I attended the ACL talk where he presented this. While the method was reasonably well-justified, it seems clear that the data was flawed, leading to a flawed model, leading to a false result. The author failed to ask himself the question "what if this didn't work?".

Here's what I would identify as the main flaw: To identify the language of a centuries-old document, he trained his model on a _modern_ multilingual text -- the Universal Declaration of Human Rights.

(A questioner in the audience asked "If you needed a document in hundreds of languages, why didn't you use the Bible?", to which he had no real answer.)

So he ran this somewhat anachronistic model and it told him that the text was a good statistical match for being in... Esperanto. He threw this prediction out on the basis that it makes absolutely no sense. You'd think this would be the first sign that the model did not fit the data.

The #2 prediction was Modern Hebrew, which of course did not exist in the 15th century, so he said "that's close enough to biblical Hebrew" and claimed that as the result.

He asked a Hebrew speaker he knew to decipher a couple of sentences based on the model. The Hebrew speaker could not actually decipher them. The author pressed on and the Hebrew speaker obligingly produced some unsatisfying guesses at sentences, which sound remarkably like sentences from unsuccessful attempts to decipher Linear B texts.

And I don't understand why anyone would so confidently report a modification of the #2-ranked prediction of the model. We might as well go ahead and say "AI confirms: the Voynich Manuscript is in ancient Esperanto!"

The much more realistic interpretation is that the Voynich text matches the statistics of _none_ of the language samples that the model was trained to recognize, and the model is overconfident in the probabilities it outputs.

I think the fact that the method was cool must have been part of the paper's acceptance at ACL. But it does not give us a real answer about the Voynich manuscript.

<comment><USER3> I studied that manuscript a bit at university, and the questioner in the audience was definitely on the right track wrt the Bible being valuable as a source of training data. We trained on the pre-15th century translations of the Bible in a number of languages. Off the top of my head, there was Old Church Slavonic, Vulgate Latin, Bibilical Hebrew plus a number of other languages people had proposed over the years, but the statistics from Voynich Herbal A and Herbal B were never very similar to any of the languages. The closest fit we found was for Manchu, trained using a Manchu translation of the 'Dao de Jing' which made us hopeful for Basanik's Manchu Hypothesis or a modified Proto-Manchu hypothesis ([http://www.ic.unicamp.br/~stolfi/voynich/04-05-20-manchu- the...](http://www.ic.unicamp.br/~stolfi/voynich/04-05-20-manchu-theo/)) but as we dug deeper, the n-gram frequencies ended up being wildly off.

Over the years, I have been more and more doubtful that the Voynich Manuscript is natural language at all. Hopefully someone will come along and prove me wrong, but I have stopped hoping that any of these headlines is _the answer_ for quite a while.

<comment><USER4> You might enjoy this: [https://postbarthian.com/2018/01/10/review-david- bentley-har...](https://postbarthian.com/2018/01/10/review-david-bentley- harts-new-testament-translation/)

It's a bit off topic, but in the spirit.

</comment></comment></comment><comment><USER5> This is a bad article like most mainstream media writing on ML/AI. The original is a bit better and has an interview with him: [https://globalnews.ca/news/3984789/voynich-manuscript- comput...](https://globalnews.ca/news/3984789/voynich-manuscript-computer- decipher-alberta/)

He _only_ claims to have potentially identified the document's language as a form of Hebrew using a language detection model trained on UN documents. That let him incidentally decipher a few lines by literally typing them into Google Translate, but he doesn't claim to be an expert on Hebrew or have the ability to translate the whole document. He's looking for Hebrew experts to test his theory.

But by the time the story makes it into it's third re-write on a chain of bad news websites, it's "Man claims his AI deciphers unbreakable code that stumped Enigma codebreakers" or whatever.

<comment><USER6> The articles in the Canadian press are just clickbait. Their paper is [https://transacl.org/ojs/index.php/tacl/article/view/821/174](https://transacl.org/ojs/index.php/tacl/article/view/821/174)

and the claims are somewhat more modest.

The language identification method they use (does it count as AI?) assumes that the Voynich Manuscript text is in a language they check for, the words of which may have been anagrammed. There is no consensus that this is the case. The Voynich Manuscript could be entirely meaningless, or encrypted using a different mechanism, or be written in a language they don't check for. They then find the closest match. The use of anagrams adds an extra degree of freedom, which makes finding spurious matches more likely.

So they identified Hebrew, which is at least plausible. They then translate _one line_ of the manuscript, _using Google Translate_ , into English.

There was no control. They should have applied their method to text known to be meaningless, and questioned their approach if meaning was found. Gordon Rugg (whom they cite) and myself (here: [http://web.onetel.com/~hibou/voynich/generated-voynich- manus...](http://web.onetel.com/~hibou/voynich/generated-voynich- manuscript.html) ) have generated meaningless Voynichese text.

I haven't applied their entire approach, but Google Translate translates the first line of my generated manuscript, when the language is identified as Bengali, as "Do not worry about the fact that the person is very friendly".

<comment><USER7> Brb, writing an article about how Gordon Rugg and Donald Fisk's previously thought-to-be-meaningless text was deciphered by an AI. Did they channel ancient Bengali spirits when writing it? Read more to find out.

</comment></comment></comment><comment><USER8> I'm quite confident in this guys approach: [https://www.youtube.com/watch?v=4cRlqE3D3RQ&feature=youtu.be](https://www.youtube.com/watch?v=4cRlqE3D3RQ&feature=youtu.be)

Even if he's wrong, it's super cool to watch his explanation. It's making so much sense.

I doubt any AI can do better then him here, so much vague clues you have to get to the bottom of and loads of slight matches because it's an old language that only has relatives, but no equivalents today.

<comment><USER9> Yes! I came here to post this. He builds on work by Stephen Bax widely recognized in the "Voynich community" as being the most insightful. As a trained linguist, this guy does the grunt work to build a model, which he then uses (in his "Voynich update" video) to predict an outcome successfully. That is a huge indicator that he's onto something. What a fascinating series of videos!

<comment><USER8> exactly. Stephen Bax was the most promising before Volder Z took it this step further :)

I'm so glad someone finally shares my enthusiasm, I have very high hopes to have a full translation in my lifetime. [SPOILERS:] It sounded like someone just needs to find some old knowledgeable Sinti/Roma.

</comment></comment></comment><comment><USER10> I trained a word2vec model in the past using the EVA transcription if someone is interested: [http://blog.christianperone.com/2016/01/voynich- manuscript-w...](http://blog.christianperone.com/2016/01/voynich-manuscript- word-vectors-and-t-sne-visualization-of-some-patterns/)

</comment><comment><USER11> Unrelated to the content of the story, but interesting nonetheless...

While reading the article (which was low quality with a flawed attention- grabbing headline, as others have pointed out), I noticed 3 consecutive articles linked on the right side were for porn-related stories. I don't know too much about the International Business Times, but the name would have made me think it was a relatively upstanding news source. Plus, the .co.uk always adds a bit of extra class for us Americans.

So, I looked the place up on Wikipedia[1]. Here's what I found...

"In late 2011, Google allegedly moved the outlet's articles down in search results in response to excessive search engine optimization activity."

"Reporting in 2014, Mother Jones claimed that IBT journalists are subject to constant demand to produce clickbait; one former employee reportedly complained that management issued 'impossible' demands, including a minimum of 10,000 hits per article, and fired those who couldn't deliver."

And it goes on...

So, yep, pretty much a click-bait factory. No wonder the story is so mangled.

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

</comment><comment><USER12> Sigh. Call me when there's a translation.

</comment><comment><USER13> TL;DR it didn't.

</comment><comment><USER14> I don't think anyone is going to get further in deciphering this thing than Randall Munroe:

[https://xkcd.com/593/](https://xkcd.com/593/)

<comment> forgot-my-pw Not solved, but this one sounds pretty close: [https://www.the- tls.co.uk/articles/public/voynich-manuscript...](https://www.the- tls.co.uk/articles/public/voynich-manuscript-solution/)

Article: [https://arstechnica.com/science/2017/09/the-mysterious- voyni...](https://arstechnica.com/science/2017/09/the-mysterious-voynich- manuscript-has-finally-been-decoded/)

<comment><USER15> This is my favorite translation: [https://youtu.be/lhtZc- nFNt0](https://youtu.be/lhtZc-nFNt0)</comment></comment></comment>


Linus Torvalds in NSFW Red Hat - <AUTHOR> https://forums.theregister.co.uk/forum/all/2013/02/24/linus_torvalds_rant/#c_1741308 <comment><USER2> (2013)</comment>


Service Workers Must Watch Videos - <AUTHOR> https://changelog.com/must-watch-videos-service-workers/ <comment><USER2> Loved the list. It would be even more awesomer if it had a small blurb description, so if I were to choose to watch, say, 2 videos, I would know which one to pick. But I know this is asking way too much, just having a curated list like this is amazing. It happens to be a subject I'd like to dig deeper in atm, so I'm really pleased to see this.</comment>


Introduction to CUDA C - <AUTHOR> http://www.infoq.com/presentations/Introduction-to-CUDA-C <comment><USER2> CUDA (and OpenCL) C is just like C, with the exception that recursion is not allowed because there is no runtime stack to support it. Instead, there's just a lot of registers.

However, the main difference is the number of different types memories there are available. That makes GPU programming very tricky indeed. There's around 6 different types of memory visible to the programmer, each with it's own distinct access times and restrictions. On the host side (CPU), there's regular memory and page-aligned DMA buffers. On the device (GPU), there's constant, global, local and texture memory. Most of the time it's clear which memory you should use, but occasionally it takes some thinking. Especially deciding whether something should go to texture memory or global memory can be difficult without doing it first and benchmarking.

<comment><USER3> whoa: recursion has been supported since Fermi support was released in CUDA 3.0 (there's a stack pointer and a stack frame and everything). what's not supported until GK110 (Kepler 2) is GPU kernels launching/waiting on GPU kernels.

generally (and especially in the case of the upcoming GK110 chip), you should use global memory. GK110 improves this with LDG, which allows you to get some caching benefits of texture (spatial locality) without having to jump through the API hoops required to use textures.

(full disclosure: I run the CUDA driver team at NVIDIA)

<comment><USER2> > whoa: recursion has been supported since Fermi support was released in CUDA > 3.0 (there's a stack pointer and a stack frame and everything). what's not > supported until GK110 (Kepler 2) is GPU kernels launching/waiting on GPU > kernels.

Oh, cool! This opens doors for applying GPGPU to a whole new class of algorithms. I clearly must update my GPU knowledge.

Global mem vs. texture mem is always the biggest choice. Sometimes it's worth thinking whether there's a potential win in caching texture/global memory fetch results in local memory. So there's still choices to be made, even though the hardware has become better and easier to program.

<comment><USER4> With Fermi and newer (i.e., Kepler) hardware, there's not as much to be gained by using texture memory. On previous hardware, the texture cache helped to speed up some kernels that had non-uniform memory access patterns; the Fermi/Kepler hardware has a larger on-chip L1/L2 cache which serves the same purpose and does so without requiring the programmer to write extra code for working with textures.

</comment></comment></comment></comment><comment><USER5> Just curios, how many here use CUDA / OpenCL on a regular basis ? I usually see GPU related posts come to the top around midnight or in the early hours of the day (off-peak hours to be precise).

Makes me think that there are enough people working on GPUs out there, just not enough to stand out from the web-dev or other related news that usually get voted up..

<comment><USER6> I don't but one of my colleague's job is to port existing data analysis algorithms to GPUs. It seems other research centers like ours also have personnel dedicated to this task. Even if I'm more of a python guy right now, I'm still very interested in this stuff and often upvote stories.

And I'd be interested in seeing who's using GPUs for science!

<comment><USER5> Since you said Python and are interested in GPUs (but not fully immersed in it yet), I want to show you this which can get you started (and also a shameless plug for the product I am the lead developer for)

<http://www.accelereyes.com/arrayfire/python/>

Its a freemium model, should cost you next to nothing to try (as long as you have a gpu).

<comment><USER6> I stumbled upon it a while ago. The whole package looked very nice but it seems to be closed source. Being proprietary is fine but some people here tend to dig into libraries to see what they are doing. I don't know if you plan on offering some kind of source access.

Also I see that the free edition tries to connect to an outside server to a high port, and that would work here. Our network is not really friendly: I cannot even check out a git repo with the git protocol.

I can see the appeal of your product though. Some of my colleagues are trying to use PyCUDA but have to learn C in the process.

</comment></comment></comment></comment><comment><USER7> I use CUDA extensively for porting legacy linear algebra routines in a scientific application for modelling neutron scattering spectra from nanostructures. Depending on the model size, the target platforms are typically medium-sized GPU clusters or large supercomputers. Most of the newer supercomputers have large numbers of GPUs available and it is a challenge to use all resources efficiently.

GPU computing is promising, but given that it is fairly difficult to predict how much of a speed-up to expect before the actual work is done, I find myself asking whether some of the expended effort is really worth the trouble. It seems that there are two classes of applications where this makes sense:

1) Minimising latency/increasing responsiveness for smaller algorithms such as in a user application or service.

2) Doing large volumes of computation in a high-throughput system.

At the moment, the CUDA platform is well ahead of OpenCL in terms of maturity, features, tools and documentation. However, OpenCL runs on CPUs, both NVIDIA and AMD GPUs and work is being done towards targeting FPGAs [1]. Interestingly, Clang also supports compiling OpenCL kernels directly to native code.

In all likelihood these platforms will stay outside the mainstream until better abstraction layers exist to shield programmers from the low-level architectural details without sacrificing performance. Something similar to the directive-based OpenACC standard that is able to perform close to hand- optimised close would go a long way.

[1] <http://www.altera.com/b/opencl.html>

<comment><USER8> Oddly, I have also been using CUDA to port some linear algebra routines for neutron scattering (spinwave calculations) and find it rather useful--but I think better tooling would help. But, overall, the speedups that we've achieved have been worth it and would be cheaper to do these calculations on a GPU or two than on a cluster...

Having embarrassingly parallel problems also helps...

</comment></comment><comment><USER9> Can anyone explain how CUDA compares to OpenCL, both in terms of flexibility/power and openness?

<comment><USER5> 1) OpenCL library support is where CUDA was 2 years ago (but devleopment is picking up quick).

\-- This means, that the devleopment time will be more because you are going to be writing your own primitive functions which are available as a myriad of libraries in CUDA.

2) OpenCL can run on cpus, gpus and more exotic hardware like FPGAs, Cell Processors.

\-- On Large clusters, OpenCL's heterogenous capabilities make it more appealing as opposed to CUDA which will essentially require you to write and maintain two code bases (one in CUDA, the other using pthreads or what have you).

3) OpenCL spec is designed by committee (the Khronos group) as opposed to CUDA (developed by NVIDIA).

\-- This means CUDA iterates much more quickly than OpenCL. They also have control over the hardware meaning they can introduce some hardware optimizations that may not become standardized in OpenCL.

4) NVIDIA has opened up CUDA a little, implementations of OpenCL remain closed.

\-- NVIDIA has thrust which is kind of open source, but their CUBLAS and CUFFT libraries are closed. They recently Open sourced part of their NVCC compiler and hooked it up with LLVM. The OpenCL impelmentations are vendor specific and AFAIK none of them are open.

\</comment></comment><comment></comment><comment>--

Sorry if I am not coherent. Its pretty late and I had to type it forcing myself to stay awake :)

<comment><USER10> I like your summary. I'd like to point out, though, that if you want a unified codebase, you might want to have a look at OpenACC. It's still young and you need commercial compilers (PGI, HMPP or Cray), but the capabilities are interesting. I'm doing some tests and comparisons between OpenACC and CUDA right now.

<comment><USER5> Using OpenACC would just give you some quick benefits in development time, but I think it will not be competitive with pure CUDA in actual time taken for the program to run.

I would be really interested in these results if you can share them with me (email@example.com).

<comment><USER10> My tests haven't finished yet, but I can this this much about the performance: HMPP, while not having a very complete implementation yet, have quite a simple code generation concept (thus generating a low overhead) and the performance is actually very similar to CUDA. In that regard I think OpenACC will do great in reducing the GPGPU software design to pure thinking about algorithms and datastructures, instead of spending lots of time on the mechanics.

</comment></comment></comment></comment><comment><USER11> Here's an additional resource for those who want to learn it. Stanford offers the class and has the material online.

<http://code.google.com/p/stanford-cs193g-sp2010/></comment>


Female suspect dead in YouTube headquarters shooting - <AUTHOR> https://nypost.com/2018/04/03/reports-of-active-shooter-at-youtube-headquarters/ <comment><USER2> Shouldn't have happened given CA gun control, and YouTube's anti gun agenda.</comment>


Coinbase to Send Data from 13,000 Users to the IRS - <AUTHOR> http://fortune.com/2018/02/26/coinbase-irs-user-data/ <comment><USER2> Carrying Gains and Losses Forward

If capital losses exceed capital gains, the filer is entitled to claim a deduction against the loss in the amount of $3,000 or the total net loss, whichever is less. When a net capital loss exceeds the $3,000 limit, it can be carried forward to future years.

In the following year, the loss carried forward would first be used to offset potential capital gains. If capital losses still exceed capital gains, the filer can claim up to $3,000 as a loss and continue doing so year over year until the net loss amount is reduced to zero.

Capital gains, however, cannot be carried forward. Once an asset is sold for more than its original purchase price and a gain is realized, the gain must be declared in full on that year's taxes. For this reason, those looking to sell off assets should do so strategically to minimize any potential tax burden that might ensue.

[https://www.fidelity.com/mymoney/how-do-capital-gains-and- lo...](https://www.fidelity.com/mymoney/how-do-capital-gains-and-losses-carry- over)

</comment><comment><USER3> This seems relevant if you sell crypto on Coinbase/GDAX. Selling (even if you buy some other crypto right away/trade) is the taxable event and it's just normal to pay taxes on that in the USA. Aren't financial institutions required anyway to send that info (especially above 10K) to the IRS? What makes this special? Or is there something else I'm missing? What if someone parks cash in USD at Coinbase. Does Coinbase pay you interest? If so, again taxable and coinbase should send a 1099. Would all seem pretty straight forward...</comment>


Show HN: Unsend, Edit or Delete sent emails - <AUTHOR> http://www.sentmail.co

<comment><USER2> I don't let my mail clients display remote content by default, and if I were to receive an email where the actual body was just a remote image, I don't think I'd show the image.

I don't understand the reasons for someone to use a service like this

</comment><comment><USER3> Not all email clients display images by default, and I could easily see this being bypassed by caching the images.

</comment><comment><USER4> Someone care to elaborate on technology? Obviously it must be sticking some remote content in there somehow eh?</comment>


Show HN: Form endpoints for static sites with Email/Slack notifications - <AUTHOR> https://www.99inbound.com <comment><AUTHOR> Hey all,

I built this to scratch my own itch when I needed Slack and Close.io integration for my static-site webforms. Seemed to be useful so figured I share with others. Nothing else I found online really offered endpoints plus the app integrations I needed.

Would love feedback on other useful app integrations.</comment>


HOWTO: How to make multiple SSH connections to the same host faster - <AUTHOR> http://www.revsys.com/writings/quicktips/ssh-faster-connections.html

<comment><USER2> I'd recommend against putting the socket in /tmp. Anyone can reuse the connection.

<comment><USER3> That's actually a really good point. When I wrote that I was typically using single user Linux systems, but as a general tutorial this issue should at least be explained. I'll update it as soon as I can find a few spare moments. Thanks for thinking of that!</comment></comment>


Police, Computing, and Nationalism - <AUTHOR> http://kamaubobb.com/2019/01/police-computing-and-nationalism/ <comment><USER2> So melodramatic. I'm a black male and I've been pulled over multiple times by small town cops in places like Texas. Do I trust police? No. Do I fear I'll be a victim just because I got pulled over? No. Does injustice occur at times? Yes.

I got pulled over by a small town white Texas cop for speeding (which I was). I couldn't produce my insurance papers. He gave me a ticket for speeding and no insurance. Did I try to reason with him? Of course not! You do not reason with police. That is what the court is for. I took the ticket and went to the courthouse and had my insurer fax the courthouse proof of insurance. Fine removed.

Dealing with the police is a lot like fear of flying. Once you understand how police work, there's not much to fear. The OP really illustrates they don't understand the police, which leads them to believe that everything the cop does is only because they're black. A lot of media wants you to believe all black people in America are nothing but victims. I really hate that narrative. And the OP is also pushing it despite all their success in life. Is there a lot of injustice towards the black American community? Absolutely, but we don't need to live like constant victims.

<comment><USER3> I didn't hear the author encouraging anyone to live like a victim, just vividly recounting a fucked-up situation and I totally empathized with him.

I've seen enough dashcam videos to know that there are racist cops out there looking to escalate situations to the point where they feel justified shooting a black man. How could the author "understand how police work" well enough that he wouldn't be fearful in this situation?

</comment></comment><comment><USER4> It should calm the author to know being black makes him no more likely to be shot by the police: [https://www.nytimes.com/2016/07/12/upshot/surprising-new- evi...](https://www.nytimes.com/2016/07/12/upshot/surprising-new-evidence- shows-bias-in-police-use-of-force-but-not-in-shootings.html)

But if he's worried about being shot regardless of skin color, things look less peachy (compared to other countries): [https://en.wikipedia.org/wiki/List_of_killings_by_law_enforc...](https://en.wikipedia.org/wiki/List_of_killings_by_law_enforcement_officers_by_countries)

<comment><USER5> This is such a bizarre comment. We know that blacks are over-represented 2x in police shootings according to [https://www.washingtonpost.com/graphics/national/police- shoo...](https://www.washingtonpost.com/graphics/national/police- shootings-2016/)

This happens because police have a higher propensity of interacting with black people. So, while LEOs have a consistent rate of shooting people regardless of race, black people are over-represented in police shootings: in 2016 28% of police shootings were against black people, yet they only made up 14% of the population.

It's perfectly legitimate for the guy to feel angst about being shot.

Edit: ignore following piece, I misread what he meant

> But if he's worried about being shot regardless of skin color, things look > less peachy (compared to other countries)

This just reads like "Hey, stop aggravating for a better life, at least it's not as shitty as Brazil." You can't just delegitimize people's real, fixable problems because the same problem is worse elsewhere--in a land far away that the average person has so incredibly little power of ever affecting.

<comment><USER4> > This just reads like "Hey, stop aggravating for a better life, at least it's > not as shitty as Brazil."

Sorry - my intention in linking that chart was to compare the US against other wealthy, Western nations: ~15x more per-capita police killings than France and Germany, and 60x more than Poland or the UK.

<comment><USER5> Ahh, okay. I read the "things look less peachy" to mean it's worse elsewhere. Sorry about that.

</comment></comment></comment></comment><comment><USER6> As a white American that has been fired upon by the police, I find to make these things racial, glosses over the other problems causing so many citizens being killed. From my anecdotal experiance American police are quite racist, especially in a smaller city or town. I was shot at around 10 years ago and the shooting I can reconcile as the "heat of the moment". Five police officer's telling the same lies with the intention of incarcerating me for a long time is much more difficult to process.

</comment><comment><USER7> > _Ironically, I was listening to a story on NPR about Iowa House > Representative Steve King being stripped of his committee seats for saying > that White Nationalism and White Supremacy are essential elements of being > an American Nationalist. There isn't space in the America of White > Nationalists for Black men. I was being stopped by a White man in a uniform > with his hand on his gun who may have been, what Rep. King called, an > American Nationalist._

> _The second officer was Italian and sounded like he was from New York. In > any other world, I would have been equally afraid of him. Now, think Eric > Garner. But, I could tell immediately that he was reasonable and not angry > at me just for being me. His presence, in the absence of the officer with > Rep. King beliefs, deescalated the whole affair. I repeated my case to him, > that the car is new and I could surely sort it out with the insurance > company._

So, the author is making the assumption that the officer must be racist, based on the officer's shared skin tone with another racist (Steve King)? That strikes me as pretty overtly racist itself. Perhaps viewing everything through the lens of race results in seeing lots of racism (confirmation bias).

Also, I'm a white dude and I've had a nearly identical experience with the police in California. This is pretty standard operating procedure. It is definitely nerve wracking, especially when that second cop shows up, but if they are going to tow a car or make an arrest, it is SOP to call a backup.

Cops are people like any other. Some are assholes, and some are cool. I've had both types, and yes it's enraging to be patronized and talked down to. I'm still pissed from years ago when I got a speeding ticket for going 3 over the limit, and got a lecture about how I wouldn't get there faster if I got in a wreck. I wanted to point out how idiotic that argument was, as tho it were a logical certainty that driving 45 I would arrive without incident, but 48 I would definitely experience a collision. The power differential essentially means they can and will say whatever they want, and we just have to take it. Power differentials don't care about your race. Most humans abuse their authority when they have it. Let's reduce that power differential!

I've had black cops be assholes to me. I don't assume without any evidence, that just because they were the same color as Louis Farrakhan, they must be racist against me for my Jewish ancestry.</comment>


Vine Co-Founder Is Leaving To Kickstart A New Project - <AUTHOR> http://go.podd.io/1fbiqIs

<comment><USER2> Why "infamous"?</comment>


Virtual Reality applications and games, next big thing or another bust? - <AUTHOR>

How does the HN crowd feel about the upcoming return of VR? Anyone here order an an Oculus Rift dev kit from Kickstarter like me? Anyone actually try the device out first-hand? <comment><AUTHOR> Some things you guys may find interesting.

Best Oculus Rift Reactions:

<http://www.youtube.com/watch?v=KJo12Hz_BVI>

[http://www.youtube.com/watch?v=uso6vxZ5O4c&list=UUFq6WCd...](http://www.youtube.com/watch?v=uso6vxZ5O4c&list=UUFq6WCd0xcEVA-c7QNLrSgg)

Galvanic Vestibular Stimulation:

This tech is being discussed for use in VR because it stimulates nerves to make your body feel like it's moving. Imagine that roller coaster feeling while playing a flight simulator.

<http://www.youtube.com/watch?v=guaiDZdsDjI>

Sense of Smell

This tech was a little crazy before but people are discussing its possible return if VR becomes popular.

<http://www.howstuffworks.com/internet-odor1.htm>

Interesting Projects in Development for the Oculus Rift:

<https://www.youtube.com/watch?v=pRHVJVgFF38>

<https://www.youtube.com/watch?v=KjtQwk7zg24>

<https://www.youtube.com/watch?v=1O-n-4S0E2U>

<https://www.youtube.com/watch?v=GWRVGlwkAx4>

<https://www.youtube.com/watch?v=V7tm_T6-0-g>

<https://www.youtube.com/watch?v=_I-pGCpl2PE>

<https://www.youtube.com/watch?v=4JdjWhXrq68>

[https://www.youtube.com/watch?v=JCIRkfNES0Y&playnext=1&#...
Possible Peripherals for Rift:
https://www.youtube.com/watch?v=MSTge5IDxF4
https://www.youtube.com/watch?v=40L3SGmcPDQ
https://www.youtube.com/watch?v=_d6KuiuteIA
https://www.youtube.com/watch?v=SKLv8tyL2vU
https://www.youtube.com/watch?v=SBQhyqhuLxw
https://www.youtube.com/watch?v=BvxM-pC7K2U</comment>


Ask HN: Tracking position without satellites  - <AUTHOR>

Does anyone know of a commercial system from tracking someones position without the use of GPS.
Would it be possible to install beacons around a sport centre for example to track to location of the sportsmen more accurately than a gps ever would?
There does not seem to be a readily available product on the market although it exists for the military and it would be very useful for sports. <comment><USER2> I have no personal experience, but the wikipedia pages on Local Positioning Systems[1] and Indoor Positioning Systems[2] list some commercial offerings.

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

[2] <http://en.wikipedia.org/wiki/Indoor_Positioning_System></comment>


East vs. West – the myths that mystify - <AUTHOR> https://www.ted.com/talks/devdutt_pattanaik <comment><AUTHOR> Nice explanation about myths, invention of zero and difference in lifestyle of East and west</comment>


This Is Almost Certainly James Comey's Twitter Account - <AUTHOR> http://gizmodo.com/this-is-almost-certainly-james-comey-s-twitter-account-1793843641 <comment><USER2> James Comey is, of course, the director of the FBI, a Republican appointed to what is customarily (but not necessarily) a 10 year term by Barack Obama.

The fatal chink in Comey's OPSEC armor: he admitted to having an Instagram account with which he kept connected to his family. His son is somewhat high- profile at Kenyon College and his Instagram account was easy to find. If you send a friend request to an Instagram account, Instagram will algorithmically suggest related accounts; the related accounts here included an anonymous account named after Reinhold Niebuhr. From there, it wasn't hard to find a similarly named Twitter account whose metadata fit the profile.

The moral of the story here might be to avoid giving your anonymous accounts distinctive names. If he had assumed the fictitious name "Dave Smith", this article probably could not have been so easily written.

"Liking" tweets from your anonymous account is also probably a terrible idea, with no upside.

</comment><comment><USER3> So doxxing is cool now, as long as it's applied to prominent Republicans?

</comment><comment><USER4> Um stalking much? Just because he's a public figure, it doesn't give this author the right to be a creep. We blast TMZ and the like for being slimy but always give a pass when it's in our own interest. So, I won't do that, this isn't cool, man. All it takes is one person to follow this lead, find the location of someone or their family member, and do something nefarious. No matter if it's anything else, it's inconsiderate and frankly dangerous. Poor show.

<comment><USER2> How is the author being a creep? There is _immense_ public interest in knowing that the director of the CIA is "liking" particular tweets about high-profile investigations his office is conducting.

It's not like the author catfished him.

<comment><USER5> Some TLDR's.

Here's the twitter account in question : [https://twitter.com/projectexile7](https://twitter.com/projectexile7)

Here's a tweet referencing a Breitbart story that was 'liked' back on 19th May 2016 : [https://mobile.twitter.com/ojoscriollos/status/7334081186761...](https://mobile.twitter.com/ojoscriollos/status/733408118676152320)

The Breitbart story itself :

"Will Dem Intimidations of FBI Director Comey Kill Hillary Investigation? | Dem leaders don't inspire confidence"

[http://www.breitbart.com/big-government/2016/05/19/will- demo...](http://www.breitbart.com/big-government/2016/05/19/will-democrat- intimidations-fbi-director-comey-kill-hillary-investigation/)

If it's really Comey, the fact he 'liked' this particular article suggests some pre-existing bias on his decision to break protocol and make public the new FBI investigations into Clinton's email server days before the election.

EDIT - about an hour after this post the twitter account was put into 'protected' mode, so tweets are not viewable.</comment></comment></comment>


Loot'n'leave - <AUTHOR> https://m.signalvnoise.com/lootn-leave-e927451226c <comment><USER2> They really have perfected the "against x" argument as a content marketing strategy. This article is void of any details.

Someone has to believe in the long term to buy your business.

<comment><USER3> No they don't. Your buyer could just be looking to loot'n'leave too: to loot your staff, your customer base, your built-up brand value.</comment></comment>


LingVM is an Erlang VM that runs directly on Xen - <AUTHOR> https://medium.com/@kansi/bare-metal-erlang-hello-world-9cea0ea702ea#.x35llacz4 <comment><USER2> Code running as a VM in the Xen hypervisor is not really the traditional sense of "Bare Metal".

<comment><USER3> Yep. Fortunately, you can also build a RumpRun Kernel using Erlang as of a few months ago. I haven't tried it yet, but it sounds like it could provide true bare metal.

<comment><USER2> Not meant as criticism, but a (maybe fruitless) theoretical discusson:

Even with RumpRun on true bare metal, should that be called "Bare Metal Erlang"? It's not like the erlang code manages the raw memory, contains a driver for the hard disk controller etc.

Clearly there are fewer layers between the erlang code and the bare metal compared to a traditional OS, but still plenty and they do quite a lot of work.

<comment><USER4> I agree, bare metal != a bare vm or some other abstraction layer, bare metal indicates you talk directly to the hardware.

</comment></comment></comment></comment><comment><USER5> Very interesting - might be a great way to setup a sandbox for untrusted code.

On a related note: there is also the nerves project for embedded Erlang/Elixir - [http://nerves-project.org/](http://nerves-project.org/)</comment>


Show HN: Fuzzy Match in Google Sheets with Flookup - <AUTHOR> http://www.getflookup.com <comment><AUTHOR> I'm happy to introduce the HN community to Flookup. I created it to be used to fuzzy match or lookup text based on percentage or sound similarity. It can also be used to highlight or delete duplicate content from your spreadsheet. I hope you enjoy and look forward to receiving your feedback.</comment>


Badlock: Patch your Samba and Windows server now - <AUTHOR> http://www.zdnet.com/article/badlock-patch-your-samba-and-windows-server-now/ <comment><USER2> How underwhelming was this announcement? If you have internet-facing or dmz'd smbd servers you deserve badlock and have no doubt been facing far greater security risks since the time when you initially put your server there. This announcement isn't scary at all for those whom considered or valued literally any sense of security when setting up their Samba server.</comment>


Show HN: Jetson Nano powered Robot research platform - <AUTHOR> https://github.com/JKI757/Robot_c- <comment><AUTHOR> The Jetson Nano is an under used product for a robotics platform, so the goal of this project is to get a platform started to provide a basis for this.

Currently this project is running a custom C++ application on the Jetson, and doing the driver controls through a nodeMCU connected to a servo for steering and a motor driver for propulsion. It's relatively easy to build from readily available parts, and will be even easier once I get the PWM code ported over to the Jetson (in progress now).</comment>


Ask HN: Evaluate my side project please? - <AUTHOR>

I've been working on a side project lately and I'd love to get some basic feedback and marketing advice - randomfreeapp.com.
1. How do you feel about the page? Is it intuitive? What would you change?
2. How would you market it/drive traffic? <comment><USER2> I'd consider applying CSS border-radius to all of the app icon images. Some of them have a beveled edge and the square edge, which looks a little less proffesional.

</comment><comment><USER3> 1\. looks great. I would suggest fixing the next button vertically so that it doesn't get pushed down by apps with long descriptions.

</comment><comment><USER4> 1\. There should be a blurb about the site. But focus on the 'Why' and not the other W's. 2\. Beef up on SEO and spread the word on other sites, blogs

</comment><comment><USER5> Some ideas :

1.Add some kind of copy that describes what the site is doing

2.Include free apps for WindowsPhone and Blackberry

</comment><comment><AUTHOR> Clickable: <http://randomfreeapp.com>

<comment><USER6> kind of stumbleupon for free apps?

Nice idea! Perhaps you should make is clearer what exactly it is all about :-)

Good luck!

</comment></comment><comment><USER7> The ability to go back would be nice, I got a bit click happy and accidentally missed something that looked cool at a first glance.

<comment><USER8> Same here. I think a back button would help a lot.

</comment></comment><comment><USER9> Have some kinda cool HTML5 transition when you hit the next button. The site itself is just a cool site, so people expect nice looking animations. Instead of generating a random integer and passing it in as an 'id' in your php script, you should look into keeping everything static except the main box itself. To do this, you need to use JavaScript (preferably jQuery, also look into CoffeeScript) Keep the logo at the top and the 2 tiles at the bottom for social media the same. Don't make the site reload everytime you hit 'next'.

Design-wise, it's great. Very clean and simple, and the logo's cool.

<comment><AUTHOR> Would love to talk with you more about this if you have time - e-mail in my about.</comment></comment>


Invite only Hacker News. - <AUTHOR>

I think the quality of Hackers News posts has been changing for while now. This is very normal given that the site is growing, and the audience is more diversified. I remember when HN was still a few weeks old, and I can tell you my experience back then and now is completely different. I think they are key players here and people who are really interested in learning/sharing and not just ranting. Thus I proposed a closed for-ever-invite-only HN. The top leaders on this site would be automatically subscribed and given each permission to invite (with limits). I am frankly not sure I will be invited myself, but I would certainly love to and I would be appreciative that a group of smart individuals think I can add value to their "secret" community.<p>Disclosure: This is no attempt to start a New World Order or Some Tech Masons...but it is an attempt to gather like minded highly intelligent intellectuals who love to observe, analyze and resolve different problems using technology <comment><USER2> Going invite-only is a retreat. I'd rather just make/keep the main site good.

It doesn't seem to me the stories are any worse now than they were at first. The quality went down a bit a few weeks ago when we were mentioned on Techcrunch and got a lot of new users, but it seems back up now. I suppose I should write something to display the top stories from the past to make sure this is true.

<comment><USER3> I think everything is just fine. I take away a lot of good stuff from this board everyday, and get good intelligent responses from other users. And this is probably the only place I have ever encountered where people willingly admit their mistakes and change their views if they are intelligently countered. This is a very good thing.

</comment></comment><comment><USER4> People just need to use the down arrow more. Good writing should say something worth saying about something worth saying something about. If you think there is a signal:noise problem then just start downvoting every comment that you're not a better person for having read. This goes more for root comments than for replies deep in a thread, which I don't think need to be held to quite the same standard for a variety of reasons.

<comment><USER5> Most people don't have that option though, do they?

<comment><USER6> I believe everyone over 25 karma can downvote - I would guess that'd be most people.

<comment><USER7> i can't downvote articles. only comments. and i have well over 25 karma.

<comment><USER6> I believe the parent and parent's parent were talking about comments - I don't know if anyone can downvote articles.

</comment></comment></comment></comment></comment><comment><USER8> I'm new here. I don't know anyone. I found HN purely by accident on a google search. I get a lot out of this site and am trying to contribute constructively.

I apologize if I'm pointing out the obvious but a major risk of making HN a gated community is blocking out new ideas and prospective startup hackers.

</comment><comment><USER9> Funny you say this, what made you come up with this idea?

Interestingly, a few members from the old Joel on Software forum started such a closed community to share, interact and keep a much higher signal/noise ratio, and people were usually more honest since it was a closed, invite only forum.

This sure would be an interesting experiment.

</comment><comment><USER10> All the statements about Hacker News quality going down hill I have seen have been anecdotal. I would like to see actual evidence, or at least a list of tens of stories that made the front page that people think are not worthy of being there.

</comment><comment><USER11> I have been rading HN for a while and finally decided to participate after several friends got in YC (07, 08).

I don't agree with invite only but do think there should be greater seperation of topics.

</comment><comment><USER7> /signed</comment>


Ask HN: Help Any way to DIY test/identify Asbestos - <AUTHOR> I just moved to a new place early this month and after expanding a hole through the plaster there was quite a bit of dust and my lungs seem to feel poor since then. Reasons I am concerned:
- 3 bedroom is in rough shape, pulled records it was built in 1860, so unclear how/when renovations were done.
- limited maintenance & tons of coats of paint + poor cludgy fixes seem to indicate they cant fix/remodel without abatement.
- i am a carpenter & was wearing a duskmask. I now have a respetstor with a p100 filter but did not then.
- eyes itch
- kid in apartment downstairs has a racking cough i hear through the floor. Obv he smokes weed, cough does sound horrible & he has lived here 13months.
- the wallpapering in one room is ripped/torn...a lot and wasn't repaired.
I have to live here, I literally just moved in. I have to spend the night unless i call in a favor. I cant get a dept health inspector here for a couple days & the test kits all require 7 days to process. Not sure if i vacate in interim.
Place is in bad shape. I spoke with a 3m tech and have rated gear but i am currently about to be hanging out in my own apartment in close to a fucking hazmat suit. I looked into asbestos & its nasty stuff, hard to get solid info given the value of this keyword search.
Thanks <comment><USER2> This is the landlord's responsibility.</comment>


sci-hub is down - <AUTHOR> .io, .cc, .bz and onion (http://scihub22266oqcxt.onion/) are not responding. <comment><USER2> The URLs listed on Wikipedia are functional: [https://en.wikipedia.org/wiki/Sci-Hub](https://en.wikipedia.org/wiki/Sci-Hub)</comment>