The New York Times Has Abandoned Liberalism for Activism - <AUTHOR> https://nymag.com/intelligencer/2019/09/andrew-sullivan-ny-times-abandons-liberalism-for-activism.html <comment><USER2> >"Our democracy's ideals were false when they were written."

This is a very dangerous sentiment. If you look at the movements for abolition and Civil Rights, the most successful appeals were calling America to live up to her founding ideals.

However, it seems that many people are trying to effect change not through encouraging Americans to live up to their county's ideals, but the shame them and guilt-trip them into doing it.

The problem is that guilt is a very poor long-term motivator. Think of you have a someone you are trying to do better. Are you more likely to succeed by telling them how horrible they are and how they have always been horrible and how their parents were horrible? Or do you tell them that they are a fundamentally good person and that they should try to do better in this area as well?

The shaming approach may feel for satisfying, but it is likely to create a strong backlash and and problems down the line.

Think about it, there is no denying that America has been fabulously successful for white people. Now do you tell white people that their success was because of the ideals and open society, and they should cultivate them more, or do you tell them that their success was due to oppression of brown/black people? And if you tell them the later, what will you say when others also come and agree with what you are saying and say that we should get back to oppressing brown and black people in earnest, since that what our success was built on?

<comment><USER3> >Now do you tell white people that their success was because of the ideals and open society, and they should cultivate them more, or do you tell them that their success was due to oppression of brown/black people?

Both are true. Part of cultivating the ideals and open society is being aware of the artifacts of racial prejudice and privilege that still influence it. One can accept that white privilege exists without interpreting it as a blanket condemnation of all white people.

<comment><USER4> So what is the reason of Germanys success? Or Israels or the UK? Oppression of black people?

<comment><USER5> Reason for Germany success were the industries built for war with money and resources taken off others. Combined with reasonable work ethic and being on the right side of USA - Russia debate. (Which included things like Marshall Plan.)

For a time, Italy was successful too, but they slipped. Why they slipped I'm not fully clear on.

Israel got USA support and investment, including military. That's about it. (You can repeat the same for e.g. South Korea, who are an even bigger success. For now.)

UK was a success (for a time) based off a huge empire and consequent innovation needed for war and to adapt for living in weird places, and to look like they own the world and not like a dark smudge of coal. Big cultural exports.

And lately it's only holding to its financial industry, boosted by the position of middleman between EU and US. No idea what will happen to it now. They cannot be industrial powerhouse anymore to rival China or Germany.

</comment></comment></comment></comment><comment><USER6> _It's as if liberal editors reined in radical writers but couldn't do so coherently, and lost the plot at times._

This is a great way to describe it. I usually check the NYTimes front page a few times a week. It's really gone of the rails.

Headlines have gone from slightly biased journalism, to opinion pieces in disguise and it looks like every NYT reporter is trying to outdo each other.

I'm not naive enough to believe that any news source is truly unbiased, but the NYT appears to have given up any attempt to do so now.

<comment><USER7> NYTimes is no longer the "paper of record". It's dominated by opinion pieces. Both explicit and implicit.

Go to NYTimes.com and count the links you see "above the fold". On my monitor there are 7 non-opinion links. But there are 11, yes eleven!, opinion-section articles.

If you want to read "news" and not "opinions" these days it's impossible. Because flamebait opinions get all the clicks and generate all the revenue. I don't blame them for their choices. But I don't respect them either.

:(

<comment><USER8> If the NYTs is no longer America's newspaper of record (in fact it was the first newspaper that term was ever applied to, anywhere), I struggle to think of what is. The other newspaper commonly cited as a newspaper of record in America, the Washington Post, seems little better (or worse) than the NYTs.

In any event, I don't think the term was ever used to indicate a lack of editorial bias. Certainly the NYTs has never qualified if that's the meaning of the term.

<comment><USER8> _[Response to a deleted (but fairly reasonable) comment asserting the NYTs is no longer the newspaper of record.]_

Was there ever one then? And if not, then what did the term ever mean?

Before you answer, please consider the case of Walter Duranty and the NYTs covering up Soviet-lead genocide in Ukraine during the 1930s (the Holodomor, a term many Americans have never heard before.) It wasn't until 1990 that the NYTs came clean ([https://www.nytimes.com/1990/06/24/opinion/the-editorial- not...](https://www.nytimes.com/1990/06/24/opinion/the-editorial-notebook- trenchcoats-then-and-now.html)), more than half a century too late. Were they the newspaper of record in the interim period?

<comment><USER7> I don't know enough about the history of journalism to give a satisfying answer.

I consider "being the newspaper of record" to be an ideal. It is almost certain that anyone striving for the ideal will fail at times. Do I think the NYTimes ideals were lies when they written? No. I believe the organization tried as a whole. Even if individually or collectively they fell short at times.

But I don't think that is their ideal at this moment in time. Their new ideal is one of activism. Which I personally find disappointing.

</comment></comment></comment></comment></comment><comment><USER8> > _" The complexity of history in a country of such size and diversity means > that everything we do now has roots in many, many things that came before > us. You could say the same thing about the English common law, for example, > or the use of the English language: no aspect of American life is untouched > by it. You could say that about the Enlightenment. Or the climate. You could > say that America's unique existence as a frontier country bordered by > lawlessness is felt even today in every mass shooting. You could cite the > death of countless millions of Native Americans — by violence and disease — > as something that defines all of us in America today. And in a way it does. > "_

The way I see it, something as expansive as an entire country is doubtlessly a hyperdimensional matter. From any particular point of view, you can only glimpse one projection of that hyperdimensional mass. The projection you see is factual (insofar as any human perception can be factual) but it's nevertheless one of _many_ factual projections.

Consider if you were a flatlander looking at a 2d projection of a cylinder. Depending on your perspective, that cylinder may appear to be a circle, or a rectangle. Both projections capture factual information about the true form of the object in question, but two flatlanders with different perspectives could perceive radically different projections of the same cylinder and could have a bitter dispute over who was right.

</comment><comment><USER9> It's a pity this submission was flagged very quickly. Agree or disagree, the main idea underlined by the article is something that needs to be very much discussed in the US. Sadly, platforms for this discussion have decreased greatly to near nil. It also seems to be too much for HN.

<comment><USER10> It's hard not to flag this article when it brings comments as absurd as calling the NYT neo-Marxist, the "Fox News of the left" or "far left" to HN.

If there is an interesting idea underlying the linked opinion piece, the author is making a good job hiding it below cheap rhetoric.

<comment><USER11> Thank you. This inarticulate author goes on a long rant about the critical importance of word choice and non-sequiturs...

...and then jumps to a ridiculous, unfounded relationship that somehow a piece about slavery = neo-Marxism. I had to read that sentence three times: "Surely he meant to elaborate. Surely..."

People with double-agendas always fell on themselves.

</comment></comment></comment><comment><USER12> Nytimes is almost Fox News level bad, the comments and bigotry are just hidden under more complex prose. The non opinion section of the WSJ is the best source of news. Nytimes is a far left propaganda rag.

<comment><USER13> I think NYT tried to remain neutral, and discovered the hard way that in 2019, there's no middle ground, or rather, the middle ground gets no voice, which is literally deadly for a media company.

I agree, WSJ seems to have swung back a little. Strange times!

</comment></comment><comment><USER14> It's interesting how this article is trying to convince us that the NYT's argument that racism has "touched" every aspect of US history should actually be interpreted as the NYT is asserting that every aspect can solely be viewed through that lens. I think this type of argumentative magnification and reduction leads to a lot of overblown inter-partisinal argumentative malpractice.

</comment><comment><USER15> In the internet era, opinion "journalism" tailored to certain kool aid drinking demographics is what is profitable and expedient. It is not that much different than supporting any advocacy organization with a membership fee and weekly newsletter.

</comment><comment><USER16> I came to say what I see other commentators saying.

What sells is the bait, the piece that confirms your thinking rather than challenges it.

A fair bit of education (see Yale / Harvard etc) is going down this path as well, especially outside the sciences I think.

We are also getting more articles that never even attempt to explain what the other viewpoint might be. I just read a super long article, some govt agency apparently targeting a local dance crew - without detail or context of the actual targeting of the crew (ie, a regulation calling them out by name?) or comment from the agency (ie, responding to complaints? Motivated by hate of dance? Targeting something else entirely).

</comment><comment><USER17> conservative andrew sullivan writes typical conservative opinion piece that falls in line with his party's political line

HN treats it like it is some sort of objective, academic study

some commenters even use this opinion piece to complain that the NYT runs opinion pieces

</comment><comment><USER18> This has been true of most American "journalism" for at least a decade now. Activist journalism has become so common that editorialization is just taken as normal - I doubt that the average person even understands the degree to which news is editorialized. It's next to impossible to find an objective mainstream source these days - for both left and right leaning media.

Probably related to the modern polarization of the nation, though which is the chicken and which is the egg is hard to say.

</comment><comment><USER19> "But the NYT chose a neo-Marxist rather than liberal path to make a very specific claim: that slavery is not one of many things that describe America's founding and culture, it is the definitive one." Well, the author does know what liberalism is, but definitely does not know what Marxism is!

Marxism does have a good answer to the original question of the piece: "How can an enduring "ideal" — like, say, freedom or equality — be "false" at one point in history and true in another?" \- Marxists argue that ideas can be progressive at one time, and become reactionary at a later stage of history. Ideas do not determine history, but are in general a reflection of class forces. When capitalism was progressive, in the founding days of the country, the ideas that upheld the system of private ownership were progressive ideas! The forces these ideas represent helped defeat monarchies and slavery. Today, advocates of the free market play the opposite role, of holding society back, because capitalism is in a deep crisis and socialism has become socially and technologically possible.

<comment><USER4> Very strange claims. Citation please?

</comment></comment><comment> crooked-v > All that rhetoric about liberty, progress, prosperity, toleration was a > distraction in order to perpetrate those lies, and make white people feel > better about themselves.

Well, quite a bit of it, yes. It takes some phenomenal doublethink to set out 'all men are created equal' as a basic principle during a war of independence, then enshrine slavery in the rule of law when it comes time to write an actual constitution.</comment>


Why your next project should be public domain - <AUTHOR> https://nightweb.net/blog/public-domain.html <comment><USER2> It's not legally possible to dedicate your project to the public domain in many jurisdictions. That's why CC0 exists: [http://creativecommons.org/about/cc0](http://creativecommons.org/about/cc0)

<comment><USER3> Note that there's some argument about the CC0's appropriateness for code; apparently the OSI's lawyers said it wasn't good, but now say it's okay, and the FSF's lawyers say it's not cool.

I'd give you some links but I'm on my phone, and IANAL.

<comment><USER4> This FSF link says it is fine [http://www.gnu.org/licenses/license- list.html#CC0](http://www.gnu.org/licenses/license-list.html#CC0)

The OSI links are here [http://opensource.org/faq#cc- zero](http://opensource.org/faq#cc-zero) the issue is about the patent clause in the fallback.

<comment><USER5> See also [https://creativecommons.org/weblog/entry/27081](https://creativecommons.org/weblog/entry/27081)

</comment></comment></comment></comment><comment><USER6> > I do not regard the LICENSE.txt in your Github project as a serious > abrogation of ethics. It inspires more of a shallow sigh ...

Note: Not having a LICENSE.txt does not make Github projects public domain. They are simply unlicensed. There are many projects which are unlicensed on Github. File an issue for each one you find!

<comment><USER7> Isn't the default "all rights reserved"?

 _(Note: GitHub ToS says if you put copyright code on it, then you are by default allowing others to fork & download it, so the default licence is looser than the legal default)_

<comment><USER8> Nice catch about GitHub's Terms of Service.

From [https://help.github.com/articles/github-terms-of- service](https://help.github.com/articles/github-terms-of-service):

      > ...by setting your pages to be viewed publicly, you agree to allow
      > others to view your Content. By setting your repositories to be
      > viewed publicly, you agree to allow others to view and fork your
      > repositories.

</comment></comment></comment><comment><USER3> Public domain as a concept does not exist in all jurisdictions, so placing something into the public domain doesn't actually do what you intend it to do.

<comment><AUTHOR> What is it that you think I intend to do? I am fully aware that public domain doesn't exist in all jurisdictions; by the looks of it, it may not exist for long in my _own_ legal jurisdiction! Whether it is legally recognized or not is irrelevant to me.

<comment><USER3> I meant 'you' in a slightly broader sense; people who want to put things in the public domain intend their use to be free for anyone to use for any purpose.

You hint at this with suggesting that you're doing MIT but without the last bit of covering your ass. But depending on where in the world you are, you're being significantly _more_ restricted than the MIT, all because of (your words) some 'internet bravado.'

Yes, licenses suck. I'm -1 on most forms of property, and "intellectual property" most of all. But ignoring reality harms more than it helps. Just MIT/BSD and be done with it, or, if you want to be silly, WTFPL.

<comment><AUTHOR> Let's not equivocate on the term "restricted". My software is more restricted _by your government_ if it doesn't recognize the public domain, but that is entirely different from (for example) saying that the GPL is more restricted than the MIT license.

I understand this distinction won't matter to someone in such a country who wants to use my code while remaining legally compliant. My own feeling is that in such a country, I would carry on writing software and stop worrying about legal compliance.

<comment><USER3> Yeah egoism/illegalism is fun and all, but until you can get a significant mass to participate, you're actively harming those who may be sympathetic, yet don't want to violate their own country's laws. This harms the organizing you'd need to do in order to bring about meaningful change.

I am all about direct action, but you have to pick your battles. This one seems to me to be all downside with very, very little upside. Especially, as my sibling states, when you just say 'public domain' without mentioning your politics.

<comment><USER9> I must wonder just how large and self-evident must the mass or movement be before you'd deem it worth joining?

Have a little peek at how much public domain software is already being produced daily on GitHub:

[https://github.com/search?q=%22public+domain%22&type=Code&s=...](https://github.com/search?q=%22public+domain%22&type=Code&s=indexed)

Consider also that the majority of repositories on GitHub contain no license declaration at all, which should be a clear enough indicator of where these trends are going:

[http://www.theregister.co.uk/2013/04/18/github_licensing_stu...](http://www.theregister.co.uk/2013/04/18/github_licensing_study/)

Further, as explained in another comment, when even the most prominent and harshest former critics of public domain software (cf. Larry Rosen) have recently changed their mind and, if not exactly pushing the public domain as yet, at least see no problem with it, how much more could you want?

<comment><USER3> First of all, obviously, this is personal choice.

Secondly, a mass of people _creating_ public domain software isn't the issue: the mass would be of people _breaking the laws of the jurisdiction in which they live by using public domain software as public domain even though it's not recognized_.

Personally, I currently BSD/MIT all of my code, but am considering AGPLing it all from now on. I don't think that the negligible difference between BSD/MIT and public domain is worth _any_ headache at all; they're effectively the same from my viewpoint.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> The author compares PD with MIT/BSD type licences, but does not explain why he/she wants to give everyone the relatively full set of rights that these alternatives represent.

My code, outside the day job, is GPL. Why should I let others commercialize it without giving anything back? But I want to allow noncommercial use for everyone, and commercial use for those who will contribute their changes.

I'm not saying everyone should have these preferences - in fact I admire the generosity of anyone who donates valuable IP to the public domain. It's just that the title is "Why your next project should be public domain", yet the author does not explain the motive for this type of licence over others.

<comment><USER7> _My code, outside the day job, is GPL. Why should I let others commercialize it without giving anything back? But I want to allow noncommercial use for everyone, and commercial use for those who will contribute their changes._

The restrictions for GPL code is nothing to do with whether it's used commerical or noncommerically, the same restrictions apply.

Someone can use your GPLed code commerically without paying you or asking your permission, and someone can use your GPL code noncommerically as well. In both cases they have to abide by the GPL conditions.

<comment><USER10> Correct, I was just using "commercial" as a shorthand for "closed source". It is only commercial users that would use it with concealed changes if it were PD or BSD-type licence. This would enable privatizing public value.

The point is that my motive is giving value to the public, in a way that prevents it "leaking" into private profits without compensation. The effect of the article-author's licensing is giving some of the value to the public and some to private profit-oriented exploiters, while the motive for preferring the latter over the former is not stated.

<comment><USER8> Slapping a copyleft license on your project doesn't mean that people magically won't use it where that use would be "infringing". It only means that you can sue, if you should learn of it.

See this recent talk by Rob Landley, of BusyBox fame, on how casual and widespread GPL infringement is in large corporations, and why he no longer advocates the use of the GPL:

[http://www.youtube.com/watch?v=SGmtP5Lg_t0](http://www.youtube.com/watch?v=SGmtP5Lg_t0)

Landley's the guy who started the infamous BusyBox GPL lawsuits that then spiraled totally out of his control, so he has more skin in the game than most.

<comment><USER3> This is true in theory, but in my experience, every big company asks for all the licenses of the software they use, and if it's GPL, that's a non-starter. Maybe I've only worked for the good ones.

Obviously there will be some that violate the license, as there is with any license. But the point is that you do have _some_ sort of legal recourse if they do, and also, you make your intent clear as an author: this is supposed to be Free forever.

If your anti-argument is "people will just ignore the license," then using a permissive license isn't an argument either. After all, people will just ignore it.

<comment><USER8> It may be a cultural difference. As I recall, Landley's examples are from the East (Sony, for example). Intellectual property as a sacred institution is somewhat less established there than in the West.

The point is that users who would give credit will do so anyway (without needing a gun held to their heads), and those who won't, won't. A license only changes things by giving the recourse to sue in the latter case. If you aren't going to sue anyway (as Landley isn't, anymore), then there's not much point to using a relatively restrictive license.

I recommend watching the Landley talk. He used to be among the most rabid copyleft advocates, before the BusyBox fiasco and GPLv3.

</comment></comment></comment></comment></comment></comment><comment><USER11> D. J. Bernstein (qmail, djbdns, the man responsible for making encryption legal in the United States) places everything into the public domain and has written more about it: [http://cr.yp.to/publicdomain.html](http://cr.yp.to/publicdomain.html)

<comment><USER12> For many years Bernstein explicitly refused to place any sort of license conditions on most of his software on the grounds that he didn't want modified versions floating around and copyright law allowed most of the things he wanted to allow people to do with his programs. (It's unclear whether or not he was right on the latter point. You can dig up Bernstein's flamewars with Theo de Raadt and Rick Moen on the topic and decide for yourself.)

I don't think he gave a reason why he switched to public domain a few years back, but it was clear by that point that he wasn't doing any more work on qmail or djbdns and the non-licensing was holding back further development and adoption by others.

<comment><USER8> On that note, Bernstein on Moen: [http://cr.yp.to/distributors.html](http://cr.yp.to/distributors.html)

</comment></comment></comment><comment><USER13> Use the right license for the job.

If I was making a stand alone program, then it would probably be GPL or AGPL (for anything that could provide a service over the web).

However I would probably avoid it if I could see the potential for it to be made into a library and many stand alone programs can benefit from that (Look at Clang vs GCC). Ideally you make the core meat of your program as a library from the beginning but and just provide a thin frontend but thats not always how projects go. For example if you make a GUI app but now have a save file format that you could allow others to interoperate with.

For a library I look at either MIT style, or CC0. MIT does seem like a silly requirement. Yeh some outsourcing company somewhere can legally dump your code into their project and charge for it, (and with CC0 not tell anyone it was your code but) that doesn't really hurt you. If it's a closed project no one will be looking at the code anyway. And you can always point to the code and prove it's yours (well someone could claim you stole their code and re- licensed it but that can happen with any license).

I tend to avoid the LGPL, the restrictions seem like a massive pita to me. You now have to deal with dynamic libraries rather than static due to stupid legal issues with what should be a technical decision.

I also don't like that GPL'd stuff can take from MIT/CC0 and the reverse isn't true (without converting their codebase). Seems kind of unfair in the opensource environment.

</comment><comment><USER14> I almost don't mind releasing my code public domain (and in fact I often do that) but lately I was thinking about if there is a license I could use which forbids the usage of my code for weapons, and now with all the NSA stuff perhaps even spying or more general "harming humanity" or something?

<comment><USER2> If you do choose to license your code under such a license, it would not be considered open source (according to the OSI) or free software (according to the FSF). Here's the relevant part of the Open Source Definition:

> The license must not restrict anyone from making use of the program in a > specific field of endeavor. For example, it may not restrict the program > from being used in a business, or from being used for genetic research.

<comment><USER15> Or from being used by your usual evil scientist.

</comment></comment></comment><comment><USER16> I don't see how this is at all supposed to be convincing. Furthermore: "In my lifetime, I expect the copyright cancer to complete its metastasis. I expect that old-fashioned physical property rights will decline by the same magnitude. When I reach my deathbed and find myself ready to will that old- fashioned property to my unlikely-to-exist children, I'll be sure that document has a nice big public domain dedication at the bottom."

If he thinks so little of software copyright because it's "old-fashioned" and cancer-ridden, shouldn't he think the same of physical property law? Is this the kind of person that would steal your wallet too?

<comment><AUTHOR> This piece isn't meant to be an indictment of intellectual property in general (I'll save that for another time). I'm arguing that even those who believe in copyright should agree that it should be optional. The fact that it is now encompassing all creative work, regardless of the creator's desires, is what I regard as cancerous.

<comment><USER17> I agree copyright SHOULD be optional, it should NOT be automatic. However, it currently is. Which then means if I use your public domain code in a project, I am probably infringing your copyright because there is no such thing as public domain in my country.

So, I cannot use your code. Many open source projects are developed by volunteers around the world, they will also not be able to legally use your code. If this is your intent, that is fine, it is your choice. Usually that is not what people intend when they try to put their code in the public domain.

<comment><AUTHOR> Understood, but not being able to "legally" use my code is not the same thing as not being able to use my code. Public domain is an important enough principle that I don't think we should be ceding so readily, just so we can appease the dysfunctional copyright regimes around the world.

<comment><USER17> If a project contains code which infringes someone's copyright, then no professional is going to touch that code. Companies with any kind of legal department will not use it, linux distributions will not ship it, etc..

</comment></comment></comment></comment></comment><comment><USER18> Here is quick way to release your project in the public domain.

Add this to your README and to your source files:

        This is free software released into the public domain (CC0 license).

        See the COPYING file or <http://creativecommons.org/publicdomain/zero/1.0/>
        for more details.

Then

        wget http://creativecommons.org/publicdomain/zero/1.0/legalcode.txt > COPYING

<comment><USER19> wget won't do what you think it does; simplest fix is to use curl.

</comment></comment><comment><USER9> Zach, awesome stuff, hadn't noticed that Nightweb was in the public domain. We've added a link to your project just now in the Unlicense.org featured project list:

[http://unlicense.org/#unlicensed-free- software](http://unlicense.org/#unlicensed-free-software)</comment>


Will all programming languages become extinct eventually? - <AUTHOR>

I work in a multi-cultural office and there are many different languages spoken throughout the day. That sparked the question "why are there so many languages in the world?" Because if there had been only one then I would be able to understand everyone without hindrance..
Someone took their time and wrote this article about it, which was a short and good read. TL;DR we speak so many different languages just so we can identify what group a certain individual belongs to  http://www.academia.edu/8652559/Why_are_there_so_many_different_languages_in_the_world
It did make me ponder whether the same is happening to all programming languages but the internet suggests the reason why is because they all do some things better than others. It then made me wonder whether all of the programming languages will become extinct one day and we will have one superior programming language to use throughout all software domain. From web sites to mobile apps, car ECUs to washing machine chips - any programmable electronic device basically.
Does anyone think this is possible? If so, what would the implications be? <comment><USER2> You should clarify what you mean by "extinct".

No one speaks Old English, which became Middle then modern English. But the language changed over time, so there was no one point where it went "extinct."

So, is FORTRAN 66 "extinct"? What about Python-0.9? If so, then K&R C is dying.

It is not the case that there are so many programming languages because "they all do some things better than others". The BASIC interpreter I did in BASIC was a lousy language. But it was fun to write.

Languages also exist for reasons that have little to do with quality. Javascript got its start, and oddities, because of internal political reasons at Netscape. What it does "better" is it's in web browsers, but that's a post- hoc justification, as every popular language is in use in part because people use.

It is hard to know what the future will bring. Perhaps when the Great AI awakens in 2355 there will be no computer languages as the Great AI will do all the work for us.

But until then, no, I see little likelihood of a grand unification. Excel, for example, is a very specialized programming language with its own IDE that is unlike, say, Java and Java development environments. It's so different that most people don't even recognize Excel as a programming language.

<comment><AUTHOR> I see what you mean but try looking at it from this perspective; dinosaurs are extinct but we know they lived. and how do we know it? because we found fossils. So if find fossils, does that mean dinosaurs never went extinct? Or if the birds evolved from dinosaurs is a true statement, then that should mean they never went extinct, right? What I mean by "extinct" is exactly how the dictionaries define it "no longer in existence".

Interesting thoughts though. And you are right, I never thought of Excel as a programming langue if I'm honest.

<comment><USER2> Your point regarding species extinction is a good one. However, in languages, "extinct language" has a more specific meaning. See [http://en.wikipedia.org/wiki/Extinct_language](http://en.wikipedia.org/wiki/Extinct_language) .

I believe that language extinction occurs when it's possible to point to the last living speaker of the language, or more generally, when there is no modern version of a language.

But you are right that the person who asked the question is more likely to think of the more transitional, biological meaning.

You may like this clip where Eddie Izzard goes to Friesland to "buy a brown cow" in Old English. [https://www.youtube.com/watch?v=OeC1yAaWG34](https://www.youtube.com/watch?v=OeC1yAaWG34)</comment></comment></comment>


Ask HN: What software ideas do you have ?  - <AUTHOR>

Here are a couple of mine :
- software to help learn guitar, detect notes played - universal text utility, any text area in any app and it allows you to do regular expression replace - web based data modelling and group ware tool - Website, written stories with music and images.. tell a story, add images and music.
  (other people can create collages, remix your stories) - image viewer with category tagging of images (for artists, designers) <comment><USER2> I want a program that allows the user to play a musical instrument by just thinking about it.

Start small and assign thoughts of moving ones arms to a particular note or chord.

This is completley possible but I haven't really heard of anyone developing it.

<comment><USER2> You could assign particular chords to foot muscles and then play the flute to your own "mind-chord" accompaniment</comment></comment>


Liftoff: a new baseline compiler for WebAssembly in V8 - <AUTHOR> https://v8project.blogspot.com/2018/08/liftoff.html <comment><USER2> This is exciting for the Ewasm team (Ethereum WebAssembly). We're hoping this new single-pass compilation in Liftoff won't be vulnerable to JIT bombs, which are wasm modules that take a lot longer to compile than they do to execute. JIT bombs would be DoS attack vectors on Ethereum clients using JIT wasm engines, and we found some v8 JIT bombs through fuzz testing some months ago.

I gave a talk about it back in June. Slides: [https://docs.google.com/presentation/d/1n75Mo09HmyruV5S7q0cH...](https://docs.google.com/presentation/d/1n75Mo09HmyruV5S7q0cHWuq- UorrvdG1bRAYTNydBcY/edit?usp=sharing) video: [https://youtu.be/2eISBAbT3GM?t=1h22m3s](https://youtu.be/2eISBAbT3GM?t=1h22m3s)

<comment><USER3> Aa EOS is already leveraging WASM, do you know if they implement any hardening against these? I know they use wall clock measurements for some operations.

<comment><USER2> I mention in the talk that our fuzz tester, Guido Vranken, moved on to fuzzing WAVM (the wasm jit engine used in EOS) after v8. He earned some bounties (only some of them were related to WAVM) and several articles were written about it. I believe WAVM has some constants that can be set low enough to prevent JIT bombs, but I didn't follow the details so I'm not sure. Check out this commit, in particular the changes to WASMSerialization.cpp: [https://github.com/EOSIO/eos/commit/af02ebba5d5797b6dcc2f06b...](https://github.com/EOSIO/eos/commit/af02ebba5d5797b6dcc2f06befcfc584b07dc75f)

</comment></comment></comment><comment><USER4> I'm amused by the "Lift" naming trend for code generators. Mozilla's next gen code generator for wasm will be called "Cranelift" [1]. Probably coincidence.

[1]: [https://github.com/CraneStation/cranelift](https://github.com/CraneStation/cranelift)

<comment><USER5> "lifting" is a common optimization -- moving a computation from inside a loop to outside. It can make a huge difference in numerical functions. For instance, consider the JS code:

      for (let i=0; i<a.length; i++) {
        a[i] = a[i]*2
      }

Without lifting, every time through the loop it has to check that a is an array and (i >= 0 && i < a.length). Lifting lets the compiler move all the checks before the loop and do them once. It's nontrivial to check that the truth value of the check can't possibly change during the loop.

<comment><USER6> I may be missing something here. Given that i is incremented in the loop, wouldn't the truth value of (i < a.length) change? Or do you mean the two other checks (a is an array and i>= 0)?

<comment><USER7> For a[i] to be valid, i has to be < a.length. This invariant is never invalidated during the loop body itself.

<comment><USER6> I think I'm following, but I'm not sure I completely understand. From the GP:

> Without lifting, every time through the loop it has to check that a is an > array and (i >= 0 && i < a.length).

It sounds like these checks are being performed once. Does that mean that instead of it checking in the loop, it's checked prior to and outside of the loop body? Otherwise, I'm not sure how the value of (i < a.length) wouldn't change as the loop is performed multiple times, as the increment expression is called after every loop.

Thanks for your help!

<comment><USER8>
      for (let i = 0; i < a.length; i++) {
        a[i] = a[i]*2
      }

Has to be converted into something that can be run onto a machine that won't cause a fatal error if the array `a` doesn't have an item at index `i` (e.g. negative index). It can be converted to the following by a naive compiler:

      for (let i = 0; i < a.length; i++) {
        if (i > 0 && a < a.length) { // safe to access
          a[i] = a[i] * 2
        } else {
          throw('in a safe way')
        }
      }

Or, to avoid repetitive checks to a.length:

      const temp = a.length
      for (let i = 0; i < temp; i++) {
        if (i > 0 && a < temp) { // safe to access
          a[i] = a[i] * 2
        }
      }

A more advanced compiler might realise that the if statement is irrelevant, we've defined it in the loop that we'll never have a negative `i` or one above the length of the array, so we can just avoid those checks entirely and actually revert back to the original code to compile. This is not always the case:

      const temp = a.length
      for (let i = 0; i < temp; i++) {
        a[i] = a[i]*2
      }

This comes up in interesting places, like why it is faster to go through an array backwards than forwards[0].

[0] [https://stackoverflow.com/questions/8689573/why-is- iterating...](https://stackoverflow.com/questions/8689573/why-is-iterating- through-an-array-backwards-faster-than-forwards)

</comment></comment></comment></comment></comment></comment><comment><USER9> I'm very excited to see how wasm is getting 1st class treatment from most browser vendors.

Does anyone know of projects that ship wasm files (preferably via npm)?

I would like to try out the streaming API but I don't want to compile C++ right now

        const module = await WebAssembly.compileStreaming(fetch('foo.wasm'));

<comment><USER10> I would love to see a wasm repl online. Something that's focused on teaching the language, not for people who are going to write compilers that target it, but for people who are confused about what it is and how it works, as a way of demystifying wasm so that they have more confidence in choosing to adopt it. Maybe something that really visualizes the ins and outs of a wasm program, and maybe some kind of dynamic visualization of how the s-expressions transform into stack-based code. Just an idea, but I think it could be useful and fun for someone to make for those of us who want to play around with wasm without installing anything :)

<comment><USER11> The best you can get for now:

[https://webassembly.studio/](https://webassembly.studio/)

It's from Mozilla iirc.

<comment><USER12> It has rust!!

</comment></comment></comment></comment><comment><USER13> It should make chrome on par with Firefox performance.

</comment><comment><USER14> Browsers optimizing wasm and providing a somewhat predictable performance is a major boon for the web.

Love to see liftoff making wasm immediately executable, secure and performant (albeit small delay)

Wasm is the Java applets and flash swf of our generation</comment>


Why Programmers work at night (2011) - <AUTHOR> http://swizec.com/blog/why-programmers-work-at-night/swizec/3198 <comment><USER2> Whilst I don't disagree with the points in the article, I think the primary reason for the increase in productivity at night is the 'soft' deadline - knowing that I really should go to sleep, but perhaps I can just finish off One Last Thing. I find the same effect from working in a cafe (I've been here a while, I really should free up this table), or even just from drinking lots of water and needing to go to the bathroom.

<comment><USER3> My thoughts exactly. "I should really stop now, but i can make an exception for this one last thing, while i am so good at it. [workworkwork] Done. Oh, and then there is this other one last thing [workworkwork]..." is the most powerful kind of flow, because the illusion of the current task being the last one helps focus like few other things.

</comment></comment><comment><USER4> >Because being tired makes us better coders.

This is a far-fetched claim. The argument doesn't hold water and it is less convincing given that the author only uses his own anecdotal example of how he is forced to concentrate given low energy to back up the claim. Willpower needs energy and thus most people need energy to concentrate on difficult tasks.

I like to work at night for his other reason that there is almost zero distraction save the social media feeds. However, I think my well-being in the day time is being compromised as I do so. Haven't found a good solution to that yet.

<comment><USER5> While his claim is anecdotal, the idea is not. There are psych and drug studies that suggest the same. Also, my own anecdotal evidence says that both working late and the Balmer Peak are effective for just this reason.

<comment><USER4> thanks runspired. I think you are referring to the Yerkes-Dodson law - [http://en.wikipedia.org/wiki/Yerkes%E2%80%93Dodson_law](http://en.wikipedia.org/wiki/Yerkes%E2%80%93Dodson_law)

interesting idea

</comment></comment></comment><comment><USER6> This is entirely anecdotal. I'm very very skeptic that "the most productive time" is very late at night (or waking up at 4am). Yes, there's some work done in the evenings (6pm-8pm) or at 6-8am, but that's more an indication of a noisy workplace or with multiple interruptions.

And getting into some sort of "pushing the limits to focus" sounds very daft. Specially if done often, the quality of the work will be very bad.

There are people that like to work by night, that's for sure. But I think that's the minority compared with the ones that like to work at reasonable hours (including the ones that start later than the standard 9-5)

<comment><USER7> > And getting into some sort of "pushing the limits to focus" sounds very > daft. Specially if done often, the quality of the work will be very bad.

I find I'm more productive at certain types of tasks (including programming related ones) when I have a certain level of fatigue. My _brain_ can be noisy even if the workplace isn't, and fatigue reduces that noise.

Even for my own anecdote, however, this absolutely does not generalize to all types of tasks, and absolutely does not mean "pushing the limits", and I'll certainly agree it can be a daft excuse for a daft mistake that will result in some really daftly written code.

<comment><USER8> > I find I'm more productive at certain types of tasks (including programming > related ones) when I have a certain level of fatigue.

For me, reaching that fatigue means going to the gym. I feel like the physical fatigue helps me to get into a form of mental focus and tranquility. Even though I usually hit the gym at 8PM and return circa two hours later, I can keep pushing code for at least three more hours.

I also play competitive video-games with my friends, who keep on saying that they play better during the nights. Most of them are not into sports, but they can still say to be mentally more focused.

Whilst I cannot really prove that I would produce better code during the nights, the matchmaking in the games do turn out to have a trend of win streaks. I succeeded to rank myself to the fourth topmost ELO pool by playing during mere midnights. To reach that rank from the previous one, it requires approximately 12 wins in a row, which is not an easy feat.

About the original post, I also reason staying up late because the time difference between US and my current residency is such that any Github issues, PR's or emails tend to be sent at about midnight my local time. By staying awake an hour or two more, I can deal with those tasks to wake up to a less busy day.

</comment></comment></comment><comment><USER9> I disagree that /all/ programmers can be more productive at 2am rather than 10am.

Indeed, day-to-day Real Life[tm] stuff really does get in the way, and I myself have raged due to the frustration of having my concentration broken by e.g. my wife coming in asking some mundane question outwith the context of the problem I'm working on - it is literally a mental disaster when that happens.

I'm of the opinion that it's more likely that bugs are introduced in your code due to your cognitive functions being affected by sleep deprivation, which potentially offsets time gained via coding at night.

So whilst you /do/ have the time to build that model in your mind during the wee hours, I reckon it's more likely for there to be either en error in your mental model, or errors creep in during the translation from mind to machine.

I don't know what the answer is - choosing to be a coder makes for a very difficult situation, especially if you happen to be one of those coders who also have a wife - even more so if you've fork()ed a child process or two!

I've no doubt that there will be some quite exceptional humans out there who can manage to have a family life, work in a busy place with lots of interruptions, or can code till 4am and are /still/ able to work super- productively - but for the rest of us mere mortals, sleep deprivation == degraded cognitive function, and/or trying to code through normal hours == constant frustrating interruption.

Now, where's my coffee? ...

<comment><USER10> I completely agree. I used to have a fairly strange sleep schedule that moved gradually till I was finally waking up at 2 PM. I'd then spend one night/day without sleep to reset it. While I got plenty of uninterrupted time it wasn't very quality time. These days, I work remotely from Europe while the folks I work with, work in PST. That means most of my mornings/afternoons provide uninterrupted work time. I find that I get a lot more done and I can handle all my meetings post 5:00 PM.

</comment></comment><comment><USER11> As a part-time freelancer who also has a full-time job, I often don't have a choice but to code late at night or early morning.

I honestly hate working at night, simply because I often miss small things that cause silent bugs. On the other hand, coding at early morning (5-6 am, before my wife and kid are up) feels really great.

<comment><USER12> OT, but would you mind sharing how you got your moonlighting gig? I'm looking for something myself, but don't want to participate in the race to the bottom on the usual freelance sites.

</comment></comment><comment><USER13> "I think it boils down to three things: the maker's schedule, the sleepy brain and bright computer screens."

I think a lot of it boils down to being expected to perform in really noisy not-conducive-to-thinking environments (yes, open-plan office, I'm talking about you)

At least, that's been my experience over the last 30 years.

<comment><USER14> Parhaps offtopic, but f.lux ( [https://justgetflux.com/](https://justgetflux.com/) ) adjusts the screen brightness when it's getting night/late...

It's awesome for programmers :)

<comment><USER15> I don't like how it doesn't change the screen brightness. So I hacked together my own tool that uses DDC to control the brightness and color of the screen. However ... the nvidia driver (in Linux) crashes when you use DDC to much. The alternative seems to be pulling the DDC wires out of a DVI cable and using a alternative DDC controller ...

<comment><USER16> Gtk-redshift has gamma and is ime way more stable than flux on Linux

</comment></comment></comment></comment><comment><USER17> My view is that we work at nights / early morning because it's quiet. If I could manage to work in a quiet environment during the day, I would.

<comment><USER18> Yes, even at home, during the day you are interrupted by:

* Phones ringing and other such interruptions

* Lawnmowers or leafblowers

* Seemingly incessant construction with drills, saws, hammering

When the sun goes down, these distractions go away and you can concentrate.

</comment></comment><comment><USER19> I do not like programming at night, but sometimes it is difficult to stop.

</comment><comment><USER20> Swizec's original "Show HN":

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

</comment><comment><USER21> _" Because being tired makes us better coders."_

I've never noticed that being tired makes me code better.

It might also depend on the kind of code you're writing: there could be a difference between how fatigue affects our ability to write straightforward code vs. algorithmically complex code.

But I agree that programming late at night (or at least after everyone else in the office has gone home) makes me more productive because it limits distractions.

<comment><USER22> This is anecdotal, unscientific and has no real basis to it what so ever, but I have one possible interpretation.

I'm overly critical of everything if write, be it code or prose.

I tend to overcomplicate things when I write. I think too far ahead and tend to get paralyzed of by the matrix of things I thing I need to consider. I think I need to understand the problem in its totality before I can write anything.

As I get tired, I get less critical, and possibly my short term memory gets worse. Suddenly I'm in a situation where instead of constantly being critical of my ideas, I have to keep of writing them down just to remember them and to fully formulate them. The part of my brain that tells me it's crap has fallen asleep. And the part that kept taps of EVERYTHING has shrunken down to only hold a few items or ideas at a time.

And suddenly the code is there. Done. I wrote it. Now let's write the next idea before I forget it. I'll go through it all later.

The effect is most obvious for me with prose. I used to get nothing done during the day. I just kept thinking all my writing is worthless. But then at aroun 1-3 AM, I would write a dozen pages. I would barely be awake, but my fingers would fly almost like on auto-pilot.

</comment></comment><comment><USER23> Because nobody's going to talk to you or you're not supposed to be somewhere else doing something else.

</comment><comment><USER24> I developed the habit of working at night due to time sharing on slow computers. I could timeshare a VAX 11/750 or 11/780 with 60 of my closest friends during the day, or with three of them at night, when everybody else had gone home.

</comment><comment><USER25> I am usually up by 4am in the summer and 5 or 6am in the winter. This is my favorite time to code. I used to be a night owl but have found I produce worse code when tired. Interestingly weed seems to help me stay on track during the day.

</comment><comment><USER26> Now im just an amateur programmer so a bucket of salt here, but i prefer early morning before my wife and everyone gwts up on the weekend is the most productive for me.

<comment><USER27> Professional programmer here, totally agree with that, I'm not more productive than between 7am and 12am.

</comment></comment><comment><USER28> This is SPAM!

The original blog post, written by Swizec[0] can be read on his blog: [http://swizec.com/blog/why-programmers-work-at- night/swizec/...](http://swizec.com/blog/why-programmers-work-at- night/swizec/3198)

Can mods please change this submission?

[0][https://news.ycombinator.com/user?id=Swizec](https://news.ycombinator.com/user?id=Swizec)

<comment><AUTHOR> Oops, sorry. It did confuse me why a good article was on an otherwise spammy site, but I didn't reach the obvious conclusion. Thanks for pointing it out, and to 'dang' for switching.

</comment></comment><comment><USER29> I also have the theory that being tired, helps you in that you can't distract yourself. The brain is too tired to jump around.

My q is: Is this ADHD?</comment>


Fastest internet in the world can download everything on Netflix in one second - <AUTHOR> https://tech.hindustantimes.com/tech/news/with-a-speed-of-178-tbps-fastest-internet-in-the-world-can-download-everything-on-netflix-in-one-second-71598083166098.html <comment><USER2> I assume the entire Netflix library is more than 178Tb.</comment>


AdStage Raises $6.3M to Put Digital Ad Management on Auto-Pilot - <AUTHOR> http://blogs.wsj.com/venturecapital/2014/08/13/adstage-raises-6-3m-to-put-digital-ad-management-on-auto-pilot/

<comment><USER3> Congrats on the funding.

I have quite a bit of experience with bid management platforms/DSPs/etc. at a pretty deep level, and I have a few questions:

1\. Are you still just focusing on smaller, less-savvy advertisers with less advanced needs, or are you targeting folks like me who know the strengths and weakness of the various platforms out there, limitations, etc.?

2\. Assuming you are targeting folks like me (which I have a hard time believing given insanely low pricing...), how would you say you differentiate from the leading platforms in the space? For the most part I've found there are few truly differentiating features and a lot of it comes down to usability, integrations, etc. Bid algorithms are so fickle depending on the variables involved that I would never recommend picking a platform based on those alone.

3\. How do you address the challenge of cross-channel attribution analysis and optimization? If you are touching all channels, and have the data from each channel, I would presume some level of deduplication is occuring in the conversion counts and such that you present, but if you are just using a basic last touch model for this, that's...a fairly outdated way of looking at things.

4\. How do you handle multiple conversion goals, such as for SaaS companies with a trial signup, subscription, etc.? Looks like your conversions column in the dashboard is a single value (much like AdWords unfortunately). Along with this, how do you handle logic for things like LTV that could enable an advertiser to bid much more aggressively?

5\. How well do you integrate with other platforms? For example, a search agency might want to use one thing, but might have to nest their tracking links in a DFA link that a display agency sends them.

Thanks!

<comment><USER3> Also, would be really curious to learn your story for why you decided to start AdStage, and what the steps are like for creating a bid management platform (that also handles display) from scratch. I imagine it might be fairly capital intensive up front given the engineering costs and the likely commitments required from networks/exchanges to integrate.

</comment></comment><comment><USER4> _Still in beta, AdStage's software-as-a-service in the past three months has seen $25 million of ad spending flowing through it._

That is very impressive for a beta! Of the 16 employees (and 10 more on the way), what is the breakdown of engineers, sales, support, management?

<comment><USER5> 17 people now, 11 engineers. All on our team page [http://www.adstage.io/company/team](http://www.adstage.io/company/team). Thanks for the kind words! Similar proportion of dev to biz as we grow as well.

<comment><USER4> Quite an impressive team! I expect to see great things from you guys in the years to come!

</comment></comment></comment><comment><USER6> I am looking for a tool that improves on double click search's automatic bidding. It looks like AdStage has some automatic bidding rules. But it is not a as robust as double click search, as far as I can tell from the landing page. I would love to try this, but I would have to continue using double click as back up. Which means to me its not ready yet.

</comment><comment><USER7> I use AdStage for LinkedIn. It adds another way of looking at the data - <USER2> missing some key features for me, like dayparting on LinkedIn. It was nice to be able to serve dark posts before it was allowed on LinkedIn overall, and the ability to exclude geographies is also useful.

<comment><USER8> Thanks for being a user! Dayparting is now available for LinkedIn and other networks through the just released Automated Rules app. More info here [http://www.adstage.io/features/automation](http://www.adstage.io/features/automation)

</comment></comment><comment><USER9> Interesting, would I be correct in saying that this is like Kenshoo / Marin but with more of a IFTTT approach vs. using complicated portfolio bidding algorithms to make decisions? I like the flat fee per month vs. % of budget.

</comment><comment><AUTHOR> Congrats to Sahil and co. Great team, great product.

<comment><USER5> thanks man! just getting started...

</comment></comment><comment><USER10> congrats!

incoming Google acquisition in 3... 2... 1... :)

</comment><comment><USER11> Curious, why not integrate with Rubicon, etc in particular?

</comment><comment><USER12> Wow putting IFTTT capabilities into Ad marketing is huge.

<comment><USER5> We're excited about it! It's a great format.</comment></comment>


You're Lucky Your Boss Doesn't Use Flash Dev Edition - <AUTHOR> http://www.outernet.io/article/341/you-re-lucky-your-boss-doesn-t-use-flash-dev-edition

<comment><USER2> If your boss DOES use Flash Dev edition put try { <code here> } catch(err:Error) { } around all of the large sections of your code whose execution causes these dialogs to better hide your incompetence. Job saved!!</comment>


Swiftification: Drop NS Prefix in Swift Foundation - <AUTHOR> https://github.com/parkera/swift-evolution/blob/parkera/drop_ns/proposals/NNNN-drop-foundation-ns.md <comment><USER2> I am very impressed with the way Apple has handled Swift.

Having started using the language recently for some iOS / WatchKit work.. I am loving it. That said.. this `NS` bit definitely reminded me of Objective-C nightmares and I would love to see it go.

</comment><comment><USER3> Farewell NeXTstep.</comment>


Mother sues over daughter's suicide attempt in school isolation booth - <AUTHOR> https://www.theguardian.com/education/2019/apr/03/isolation-of-children-at-academies-prompts-legal-action <comment><USER2> Any man don't keep order spends a night in –

Luke: – the box.

(Which is to say: they've really doubled down on the idea of schools as a particularly inhumane form of incarceration for children.)</comment>


Kids Say the Darndest Things: Teens In Tech 2.0 Video - <AUTHOR> http://www.readwriteweb.com/archives/kids_say_the_darndest_things_teens_in_tech_20.php

<comment><USER2> You should make clear that it's a fusion reactor; "nuclear", while technically correct, connotes fission.

<comment><USER3> uuuuuuuuuh, what? Wrong thread, perhaps?

<comment><USER2> Yeah, not sure what happened, I was referring to the "Bussard _Nuclear_ Reactor" posting.</comment></comment></comment>


3 caculators = 3 different answers to one math problem - <AUTHOR> http://www.mathmagical.co.uk/Mathematics/CalcPuz.html <comment><USER3> 1 ambiguous notation, 3 different interpretations. The Casios both have reasonable interpretations, but the iPhone should probably give some kind of warning that it is about to ignore entire numbers.

<comment><USER4> How is that ambiguous? PEMDAS and since multiplication and division have the same rank, you go left to right. Pretty clear if the calculators follow the basic order of operations.

<comment><USER5> All infix notations (without sufficient parentheses) require an agreement (implicit or explicit) among all concerned parties. This is nothing new. The same ambiguity occurs with the unary negation operator, as in -5^2.

While I wouldn't choose it, I don't think it's entirely unreasonable to give the "multiplication by juxtaposition" operator greater precedence than the normal multiplication and division operators.

<comment><USER6> If you write the expression as a fraction without anything beside it being multiplied, it is ambiguous as to whether (1+2) ought to go above or below the fraction bar. The fact that parentheses/brackets ought to be resolved before anything else complicates things because 6/2 * 3 could reasonably be interpreted either way. An unambiguous way to write it would be either as (6/2) * 3 or as 6/(2*3).

</comment></comment></comment></comment><comment><USER7> Math PhD student here. The issue is that people are confusing two symbols which are distinct: the solidus (/) and the obelus (÷). The latter is rather obsolete and it's not clear why exactly calculators use it. Anyway, this blog post clears up the issue better than I could hope to in a comment: [http://www.matthewcompher.com/posts/trouble-with- semantics-t...](http://www.matthewcompher.com/posts/trouble-with-semantics- the-obelus-or-division-symbol-%C3%B7/)

<comment><USER8> No, this is not the problem in this case at all. Read the article. Besides, both calculators use the obelus, and still give different results.

</comment></comment><comment><USER9> Mentally, I perform no-written-operator multiplication first, then anything else, so I can see why the calculators (and WolframAlpha, in some cases) are getting the intention wrong:

"6 ÷ 2x" gets parsed as "6 / (2 * x)"

"6 ÷ 2 * x" gets parsed as "(6 / 2) * x"

All that's done in the equation in the article is having a pair of brackets instead of a variable, but the result is the same to my brain.

<comment><USER10> > "6 ÷ 2x" gets parsed as "6 / (2 * x)"

Edit: I'm probably wrong about precedence for 2x, which should be stronger. Which would leave 2(1+2) still really ambiguous. I guess the true lesson here is to always parenthesize explicitly or use over/under notation,

But this is wrong! Division and multiplication have the same precedence and left-to-right application order!

Hence, "6 ÷ 2x" should be parsed as "(6 ÷ 2) * x", which I admit is a bit confusing, so you probably should write out either the parenthesis or the multiplication. But, just because the notation is confusing doesn't mean the rules no longer apply.

<comment><USER11> But this makes almost everybody wrong. Going by this, you would evaluate 6x ÷ 2x to 3(x^2) rather than 3. That is clearly not the intention, so _somebody_ is wrong here, but it's a matter of opinion whether it's the writer (for not precisely following standard notation) or the standard notation (for being counterintuitive) that deserves the blame.

<comment><USER12> Yes, this is correct and is the reason why I set implicit multiplication to a higher precedence in the calculators I've written. Obviously not everyone agrees though, but it's certainly the way it's always been interpreted in written algebra textbooks. Precedence rules are essentially arbitrary. We have to make them up. Going by most common historical use is a reasonable choice.

</comment></comment></comment></comment><comment><USER13> RPN (Reverse Polish Notation) gets things done on a calculator. This article shows one reason why it's not just for finance.

<comment><USER14> You beat me to it. Enter one of

        6 [enter] 2 [enter] 1 [enter] 2 + * /

or

        6 [enter] 2 / 1 [enter] 2 + *

depending on how you prioritize the implicit *, and never have to wonder how your calculator might interpret the input.

<comment><USER15> > depending on how you prioritize the implicit *,

I believe this is the crux if the issue, RPN notwithstanding.

</comment></comment></comment><comment><USER16> I enjoyed the bit at the end where the writer managed to use the wrong (IMO) formula to arrive at the correct answer.

Using BEDMAS as I was taught, so many moons ago:

6 ÷ 2 ( 1 + 2 )

6 ÷ 2 ( 3 )

6 ÷ 2 * 3 // because 2(3) is not an exponent or algebraic construct, it's straight multiplication

3 * 3 // division and multiplication are in left-to-right order, no precedence

9

<comment><USER16> Update: after reading the article at [http://www.matthewcompher.com/posts/trouble-with- semantics-t...](http://www.matthewcompher.com/posts/trouble-with-semantics- the-obelus-or-division-symbol-%C3%B7/) , the writer used the ÷ as a line operator, not a natural division operation.

I would maintain that since this is not taught in any school I've ever attended, it is at least questionable. I've never seen a math textbook use the / symbol for natural division either.

<comment><USER17> I never knew about the distinction either. But if interpreted that way

        6 ÷ 2 (1 + 2)

should then translate to

        6 / (2 * (1 + 2)) = 1

I guess this only reaffirms the fact that the expression is ambiguous.

</comment></comment></comment><comment><USER18> In Microsoft Excel we get:

"Microsoft Excel found an error in your formula you entered. Do you want to accept the correction proposed below?"

=6/2*(1+2)

Which then gives 9.

</comment><comment><USER19> Hm, Calcbot on the iPhone also returns 2 if entered without a multiplication after the first "2". Hitting the open parenthesis key removes the "2" from the calculation. Since Calcbot displays what you've entered below the answer, it's easy to see the mistake with a trivial calculation like this, but if you're not watching for it it's easy to miss. Better than the built-in calculator and PCalc, which provide no feedback and give the wrong answer, but surprising.

</comment><comment><USER20> OK, I get the first two. Strictly speaking, mult and div have the same precedence (6 / 2 * 3 should be the same as 6 * 3 / 2 , both 9), but in one case, the calculator interpreted the multiplication in 2(1+2) as having higher precedence than 2*(1+2). Arguably a bug, but nothing crazy.

But ... the iPhone gives 2? I don't get it.

(FWIW, Android says 9)

<comment><USER21> The iPhone ignores any input before opening a group if you don't give it an operator.

 _5(2) = 2

999(2+2) = 4_

<comment><USER22> So it should have given 3.

<comment><USER23> 'before…within the term or factor":

      2*2455(6) = 12
      2+47435)7 = 14

(according to the iPhone calculator in scientific mode)

<comment><USER24> I'm guessing you meant: 7+47435)7 = 14 for the second example?

I get 9 as written on my iPhone. The correction above gives 14.

The interesting thing to me is that the close parenthesis cause the same behavior. The consistent logic appears to be "an operator entered in error causes input to reset" or something like that. Also errors are silently ignored in the easiest way possible, perhaps internally the value never gets pushed to the stack or something along those lines.

I wonder what other 'errors' could show this behavior?

</comment></comment></comment></comment></comment><comment><USER25> when i was a kid, i was told to use the BODMAS rule i.e Brackets, Orders, Division or Multiply, Addition or Substraction

After you have done "B" and "O", just go from left to right doing any "D" or "M" as you find them.

Then go from left to right doing any "A" or "S" as you find them.

<comment><USER26> I was taught the same, but with strict precedence - division comes first. Having said that, a mathematician would never write those down anyway, as it's too confusing.

</comment></comment><comment><USER27> Multiplication and division have the same precedence, so you do them left-to- right as written. Like addition and substitution.

Or better yet, realise that writing it all on one line is stupid and ambiguous, and write properly.

</comment><comment><USER28> to me, elided multiplication has a higher precedence than the explicit one (and by transitivity, than the explicit division), but I don't remember in which grammar I read that (mathematica, matlab ?).

</comment><comment><USER29> In WolframAlpha 6÷2(1+2) gives 9 but 6÷2x with x=(1+2) gives 1.

<comment><USER16> I might be remembering incorrectly, but 2x and 2(x) are totally different things in algebra.

2x would be expanded as (2 * x), whereas 2(x) expands as 2 * x.

In this case, since the equation is 2(1+2) which results in 2(3), it's final DMAS form is 6 ÷ 2 * 3 = 9, instead of 6 ÷ ( 2 * 3 ) = 1

</comment></comment><comment><USER30> I would have expected an answer of 3 as 2(1+2) cannot mean anything else than applying the constant function 2 to the sum.

</comment><comment><USER31> Anyone have a guess to how the iPhone calculator computed 2?

<comment><USER32> It seems that pushing "(" doesn't push the entered value onto the stack, even though it's still visible on the screen. "6 / 2 (2 + 1)" becomes "6 / (2 + 1)".

<comment><USER33> The calculator on WP7 does the same thing, but is a little more explicit - <USER2> shows the current expression as it is being built, so you see that while the first 2 was entered, the final expression is 6 ÷ (2 + 1)

</comment></comment></comment><comment><USER34> ...about time we start teaching prefix notation on schools.

</comment><comment><USER35> I'm happy to say my mental math and my phone's (Nexus S) math get 9.</comment>


Impossible Escape? - <AUTHOR> http://datagenetics.com/blog/december12014/index.html?

<comment><USER3> Here's a similar puzzle that can be used as a fun bar trick:

Given a standard deck of 52 cards, a third party chooses any five from the deck and hands them to your accomplice. Your accomplice chooses four of the five and gives them to you, with which you identify the fifth card. What's the strategy?

Solution (In Rot-13, [http://rot13.com/index.php](http://rot13.com/index.php)):

N fvzcyr beqrevat bs sbhe pneqf qbrfa'g jbex, fvapr 4! bayl nssbeqf lbh 24 pbzovangvbaf (cyhf gur sbhe lbh unir).

Jvgu svir pneqf naq bayl sbhe fhvgf, lbh xabj bar bs gur fhvgf zvtug or qhcyvpngrq. Lbh pna hfr gur svefg pneq gb fhccyl bayl fhvg vasbezngvba, ohg gur erznvavat guerr pneqf bayl nssbeq 6 pbzovangvbaf (cyhf 1-4 vs lbh unccra gb qenj pneqf zngpuvat gur gnetrg'f fhvg).

Gur frperg vf gb pubbfr juvpu bs gur gjb pneqf gb unaq bire. Jvgu 13 pneqf va rnpu fhvg, gur znkvzhz qvfgnapr orgjrra nal gjb pneqf (nyybjvat sbe jenc nebhaq) vf 6. Ol nterrvat gb nyjnlf unaq bire gur fznyyre/ynetre bs gur gjb pneqf va gur fnzr fhvg nf lbhe fhvg vqragvsvre, lbh pna hfr gur erznvavat guerr gb vaqvpngr gur qvfgnapr hc/qbja sebz gung pneq.

Sbe rknzcyr, tvira: 3,5 Pyhof, 8 Fcnqrf, 10 Qvnzbaqf, X Urnegf

Qhcyvpngr fhvg vf pyhof, fb jr'yy unaq bire gur fznyyre bs gur gjb (3 Pyhof). Gur qvfgnapr orgjrra 3 naq 5 vf 2, fb jr unaq bire gur gur erznvavat guerr va gur frpbaq ybjrfg beqrevat bs gur pneqf (v.r., 132: 8 Fcnqrf, X Urnegf, 10 Qvnzbaqf).

<comment><USER4> Vf lbhe nppbzcyvpr nyybjrq gb beqre gur pneqf gurl unaq lbh va gur jnl gurl pubbfr?

Vs abg, guvf frrzf yvxr vg fubhyq or vzcbffvoyr: gurer ner (52 pubbfr 5) frgf gung gur guveq cnegl pna pubbfr, naq bayl (52 pubbfr 4) frgf gung lbh pna or tvira, fb ol gur cvtrbaubyr cevapvcyr, lbh pna'g znc rirel 4-frg gb n havdhr 5-frg. Ohg lbh _pna_ znc na beqrerq 4-frg gb na habeqrerq 5-frg.

Ohg V serdhragyl svaq gung zl cebbsf bs vzcbffvovyvgl ba guvatf yvxr guvf ner jebat, fb...

<comment><USER3> Yes, they're allowed to/required to do that. Otherwise, I agree with you that it would be impossible.

</comment></comment></comment><comment><USER5> If I understand this correctly (please correct me if I'm wrong) it would imply that one could encode an arbitrary number of bits by flipping only one bit on such a board with a random state, as long as the board is sufficiently large.

You could for example encode book X by flipping one bit on some space, or a different book Y by flipping some other bit instead on another space on the exact same board, which is a fascinating thought to me.

So if I take this description on orders of magnitude from Wikipedia:

"5 000 000 bits – Typical English book volume in plain text format of 500 pages × 2000 characters per page and 5-bits per character."

This would mean that the board would need to have a size of 2^5000000 spaces to successfully do this for texts of up to 500 pages x 2000 chars per page.

<comment><USER6> It's kind of like a counterpart to Martin Gardner's amazing observation in _aha! Gotcha_ that you can store books with a single mark on a stick (assuming you can measure tiny distances with superhuman accuracy):

[http://board.flatassembler.net/topic.php?t=16574](http://board.flatassembler.net/topic.php?t=16574)

It's not physically realizable: people in that particular comment thread point out problems about the size of an atom, but there's also the Planck length, which I believe people theorize is in some sense a minimum size for objects in our universe, and I calculated that there are only around 2¹¹⁶ of them in a meter, so you could only store 116 bits by making a single Planck length-sized mark on a meter stick. :-( :-(

But it's a super-cool idea!

<comment><USER7> Wasn't there some project about trying to find the independent bits of information among all the people in the world? So that if you answered a 33-question (2^33 is about 8.5 billion) true/false survey, your answers would be distinct from anyone else's.

Well I guess you could do it with longitude, latitude, and timestamp of birth, but I think it was supposed to be a personality survey.

<comment><USER6> Arvind Narayanan has made this observation in terms of the difficulty or impossibilities of anonymizing databases:

[http://33bits.org/](http://33bits.org/)

However, he didn't propose a particular list of 33 questions whose answers are maximally statistically independent. Even with things that are totally uncorrelated, you do get some chance overlap where people happen to have the same answers on a small number of them.

For example, if we took the first 33 bits of the SHA256 of one's HN username, you and I happen to agree in positions 7, 8, 11, 13, 15, 17, 18, 19, 21, 26, 27, 28, 29, 31, and 32. (So we could say that each additional bit of that SHA256 value doesn't actually provide a full additional bit of distinguishing power relative to the previous ones.)

</comment></comment></comment></comment><comment><USER8> A minor quibble: the rules imply that you have to flip a coin. If the layout happens to already have all the right parities with respect to the magic square then you're screwed.

[UPDATE: this it wrong, but since three people have already responded explaining why I thought I would try to head off additional replies at the pass.]

<comment><USER9> Nope—just flip the upper left coin (000000), as that has no effect on any of the parities. Flip the bottom right hand corner if you need to switch all the bits.

<comment><USER8> Oh, right. (Duh.)

</comment></comment></comment><comment><USER10> Here's an interesting small extension of the problem: prove that it is not possible to guarantee survival if 64 is replaced by some number that is not a power of 2.

<comment><USER11> Thanks for the interesting question.

Let's take a stab at the case with 3 squares/coins. When the second prisoner comes in she will say that the magic square is 1, 2, or 3 based only on the state of the 3 coins. There are 8 possible states for 3 coins, so whatever strategy is devised must partition the 8 end states into the 3 outcomes. Since 8 is not divisible by 3, that means 1 outcome will be assigned at most 2 states. Those 2 states can only by reached by 6 possible input states (since each input state can only reach 3 output states - one for each possible coin flip). That means there are 2 remaining possible input states that cannot reach the given outcome. So for any possible strategy the jailer can choose the output with only 2 states and one of the 2 input states that cannot reach it to foil the strategy.

<comment><USER11> And to generalize:

There are 2^n possible end states to partition into n outcomes. So there must be at least 1 outcome given by at most 2^n/n end states. If n is not a power of 2, then 2^n is not divisible by n, so there must be one outcome with strictly fewer than 2^n/n states, call it m. However that outcome can only be reached m _n input states. Since m < 2^n/n, we have that m_n < 2^n. That means there are input states which cannot reach the given outcome. So for any possible strategy the jailer can choose the outcome with fewest possible end states, and then an input state that cannot reach that end state making it impossible for the second prisoner to reach that outcome.

</comment></comment></comment><comment><USER12> Pretty awesome, you can change only one bit of information, but you have 64 choices (6 bit selectivity) for which bit to swap and that is what solution utilizing to manipulate up to 6 bits of information at once.

</comment><comment><USER13> I'd tell my friend to feel for the warm coin, and I'd hold the coin I'm intended to flip as long and as tightly as possible before flipping it.

<comment><USER14> Another side effect generated from the experience :

There is no time limit for flipping the first coin, so if the guard choses the first square, I would wait 1 min before flipping mine. 60th square ? I would wait an hour.

If my friend outside is able to know precisely when I enter / exit from the room, he is able to know the correct square.

<comment><USER15> Heh. Timing side-channel for the win. :D

</comment></comment></comment><comment><USER7> For those confused about the parity display number, the two things to keep in mind are:

1) The regions are the blue areas, not the white areas 2) Even though the parity chart displays 2^0, 2^1 etc left to right, the parity number itself is the other direction like normal binary. So, the bottom half region is the left-most number.

</comment><comment><USER16> Pardon my ignorance, but could someone explain the parity aspect of this puzzle to a less enlightened mind?

<comment><USER17> It's a way to reduce a large number of bits to a single bit. Each region defined on the board comes to represent one bit of the answer, and that bit is determined by the "direct sum" (or exclusive-or) of all of the coin positions in the region. A direct sum is basically addition with no carry, and in this case it's done base two (so 1+1 = 0, 0+1 = 1, 0+0=0). You can also think of it as an even/odd relation: if the number of 1's is even, the result is zero. If it's odd, the result is one. If you change any single bit, you flip the result.

Once you can do that, all you need is to be able to cleverly define your regions so that you can find a single square that overlaps with any given subset of them. Flipping the coin in that square would then change the direct sum for each of the overlapping regions, and you have your answer. You first read off the bits as they lay on the board you're given, then you figure out which bits you need to flip to turn that into the pattern you want, then you find the square that overlaps with all of those bits and flip that coin.

The way the regions are laid out in this case makes it possible to do just that - you can find a square that will overlap with any combination of the regions from none of them to all of them.

</comment></comment><comment><USER18> Really interesting. Does anyone knows some literature about solution-finding strategies like this?

</comment><comment><USER19> Nice, but I find the following statement a bit misleading.

> Is it possible to communicate six bits of information by the flip of a > single coin?

Considering the fact that you can choose among 2^6 coins.

</comment><comment><USER20> I think this blog post is also quite a nice write-up of this puzzle, and it includes generalizations:

[https://ocfnash.wordpress.com/2009/10/31/yet-another- prisone...](https://ocfnash.wordpress.com/2009/10/31/yet-another-prisoner- puzzle/)

</comment><comment><USER21> An earlier take on it:

[https://ocfnash.wordpress.com/2009/10/31/yet-another- prisone...](https://ocfnash.wordpress.com/2009/10/31/yet-another-prisoner- puzzle/)

<comment><USER22> Wait, that's my blog post from ages ago! Looking over it now, one thing that might be appreciated here are the generalisations. For example consider a similar puzzle except instead of a chessboard and 64 coins, you have a 6x6 board, with one die on each square. Instead of turning over a coin, you must add 1 (modulo 6) to the value of exactly one of the dice (and reorient it). What is your strategy?

</comment></comment><comment><USER23> whew... I look forward to sharing this one - <USER2>

</comment><comment><USER24> Why not just agree to the coin closest to the top-left corner?

<comment><USER25> The jailer chooses which is the "magic" square.

<comment><USER26> There is also the issue of having the 'top left' when you don't know what orientation the board was in until you enter the room.

</comment></comment></comment><comment><USER27> The description at the beginning doesn't say the two prisoners are allowed to communicate and agree on rules for information transmission before being led into the room.

<comment><USER28> Yes it does "The jailer explains all these rules, to both you and your friend, beforehand and then gives you time to confer with each other to devise a strategy for which coin to flip."

<comment><USER29> Or it could just be assumed that both you and your friend read Hacker News. :)</comment></comment></comment>


Hanzi Writer – JavaScript library for Chinese character stroke order animations - <AUTHOR> https://chanind.github.io/hanzi-writer/ <comment><USER2> Fun fact about stroke orders, many people regard Chinese ideograph as some sort of bitmap, but if you watch calligraphy artists[1] you will discover they are not only some straight lines, but the the speed and acceleration also varies when drawing different part of the line. It's an important factor for distinguish writing styles.

So far we have character as bitmaps, as vector graphics, and vector graphics with stroke order, but we've yet to see a db about the composition speed of the strokes.

[1] [https://youtu.be/8-99YB4iou0?t=45](https://youtu.be/8-99YB4iou0?t=45) as an example. You can find plenty.

<comment><USER3> > speed and acceleration also varies

Also tilt and pressure. But I didn't notice rotation in the sections I skimmed.

With XR coming to unshackle visual output from fixed flat small screens, the question arises: how might we unshackle input? Say one can type while holding a single chopstick. What might one do with 7DOF fingers and brush in 2D and 3D? If a laptop keyboard was also a touch surface, and the space above it were tracked? What does an IDE look like for typing and painting code, where the "paint" is alive? So I'm interested in stylus and brush movement vocabularies, and gesture recognition.

</comment></comment><comment><USER4> This is gorgeous, and it works beautifully on a touchscreen. Incredibly valuable tool for learning mandarin, I bet. It even works with traditional characters!

How did you do this??? Was there a database with stroke orders somewhere?

Love this app. It would be wonderful if this could be included in a spaced repition app somehow!

Thanks for sharing this.

<comment><USER5> >> _Incredibly valuable tool for learning mandarin, I bet._

If someone were actually trying to Mandadin, Prof Victor Mair at Penn tells people to mostly ignore the characters for the first few years.

 _Victor Mair, at Penn, remarks (in an e-mail I quote with permission): "It's a tragedy that so many young Americans spend years stuffing their heads with hundreds of Chinese characters, gaining no usable proficiency, and then forgetting them all by the time they're 25." Mair thinks that "if the Chinese would wake up and permit pinyin to function as part of a genuine digraphia, then I would say it might make sense for maybe 2 percent of the population to learn up to third-year level of Mandarin—strictly romanized, mind you. But there are exceedingly few teachers who are enlightened enough to teach it that way."_

[https://www.chronicle.com/blogs/linguafranca/2012/03/02/more...](https://www.chronicle.com/blogs/linguafranca/2012/03/02/more- on-how-to-argue-for-foreign-language-instruction/)

<comment><USER6> > It's a tragedy that so many young Americans spend years stuffing their heads > with hundreds of Chinese characters, gaining no usable proficiency, and then > forgetting them all by the time they're 25.

There are similar complaints about all kinds of languages, even when they're written in Latin script. (The proverbial "high school French" comes to mind.) I think Mair is mistaken about the characters being the culprit. Most people taking a language class are simply not invested enough to actually practice, and then they forget everything they did learn once they stop using the language.

While it's true that it would be unnecessary to learn the characters if Chinese were usually written in Pinyin, that's unfortunately not the case and so you'd better memorize them if you want to learn the language without remaining an analphabet.

It's also not like you need to know all that many characters right off the bat. The most common 300 make up about 80% of every text; you can get to that level in a month if you learn 10 new characters per day. Most of the effort is in learning words formed by combining those characters, just like learning any other language.

<comment><USER5> French isn't held back by its script, even though its script is far from great.

Chinese and Japanese are definitely held back by their awful script + many people who confuse language with script.

<comment><USER7> Sure, anything non Anglo-Saxon is awful

<comment><USER5> Korea's hangul is pretty neat. As the linguist Geoffrey Pullum says, English has the spelling system that positively stinks, but the Chinese/Japanese writing system is a whole nother level.

</comment></comment></comment></comment></comment></comment><comment><USER8> Awesome. Really well made and open-source, I'll probably use it in the future.

</comment><comment><USER9> This could probably be implemented with an animated flood-fill algorithms.

</comment><comment><USER10> Can this be considered to work with Japanese kanji?

<comment><USER11> There are differences between Chinese and Japanese stroke order. See the animCJK [0] project for support for Japanese kanji and kanas (demo: [1]).

[0]: [https://github.com/parsimonhi/animCJK](https://github.com/parsimonhi/animCJK)

[1]: [http://gooo.free.fr/animCJK/official/](http://gooo.free.fr/animCJK/official/)

<comment><USER6> animCJK is great, but it only covers the most commonly used Kanji and Hanzi. For example, it doesn't have 鱚. If you need a database that also has hyōgai kanji, KanjiVG [1] is a better choice. (鱚 can be seen here [2]).

There's also the Kanimaji project [3] to animate files in the KanjiVG format, which could be used to get results similar to the Hanzi Writer project. If you use it to produce GIFs rather than animated SVGs, the resulting files are somewhat large though, so I wrote my own (ugly) renderer [4] to get better compression.

[1] [https://github.com/KanjiVG/kanjivg](https://github.com/KanjiVG/kanjivg)

[2] [https://kanjivg.tagaini.net/viewer.html?kanji=%E9%B1%9A](https://kanjivg.tagaini.net/viewer.html?kanji=%E9%B1%9A)

[3] [https://github.com/aehlke/kanimaji](https://github.com/aehlke/kanimaji)

[4] [https://github.com/Yorwba/kanjivg-gif](https://github.com/Yorwba/kanjivg- gif)

</comment></comment></comment><comment><USER12> Is there any such thing for European calligraphy?</comment>


PGInsight – CLI tool to easily dig deep inside your Postgresql database - <AUTHOR> http://pginsight.io <comment><AUTHOR> Hi, i'm the author.

If you have any questions or feedback, let me know!</comment>


Apple discontinued the last MacBook Pro with a function row - <AUTHOR> https://twitter.com/ow/status/1148572984912883713 <comment><USER2> What? That was the only one I remotely considered when I had a bit of money to spend earlier this year for running some graphic apps (after working on an XPS for years now). While obviously Apple knows best which models are selling, as a vi user I absolutely have no use for a touch bar, and won't buy one, ever.

What's "pro" with Apple machines these days? If anything, "pro" should stand for having options like non-glare displays, ports, and proper keyboards. My old 2003 PowerBook I used for a long time had an exchangeable battery, exchangeable RAM, PCMCIA, ports, etc. But Apple has kept (or even raised) the prices from the PowerBook times, yet only delivers shiny, super-slim, useless all-inclusive notebooks. It hurts to loose Apple as supplier.

</comment><comment><USER3> Thinkpads are growing increasingly appealing to me. I just feel less and less at home with Apple Computing products.

</comment><comment><USER4> That's a bit of a shame.

</comment><comment><USER5> nooo, I don't want the touch bar</comment>


AppIcon set for iOS, OS X generator - <AUTHOR> http://imageresier-agrastas.rhcloud.com

<comment><AUTHOR> Easy way to create AppIcon set which are used by xCode from one large logo. Supports: iOS 8, 7, 6 for iPhone and iPad. As well CarPlay and Mac apps.</comment>


Dwayne Johnson for President - <AUTHOR> http://www.gq.com/story/dwayne-johnson-for-president-cover <comment><USER2> isnt he Samoan by birth meaning he cant run for president? im no expert on US politics but if memory serves the reason Arnie could never actually run was that you had to be US born to be president (i may be completely wrong here though)

<comment><AUTHOR> He was born in California. From Wikipedia: "Born in California and raised in New Zealand and the U.S. states of Hawaii and Pennsylvania..."

Has US and Canadian citizenships.</comment></comment>


VisPy: Python library for interactive scientific visualization on GPU - <AUTHOR> http://vispy.org/

<comment><USER2> See the demo they gave at SciPy 2015 here: [https://www.youtube.com/watch?v=_3YoaeoiIFI](https://www.youtube.com/watch?v=_3YoaeoiIFI)

</comment><comment><USER3> I use Vispy for a toy project ([https://github.com/colour-science/colour- analysis](https://github.com/colour-science/colour-analysis)) and I'm quite happy with it so far even though the project is still young. The development team is nice and doing a great job. The API offers different levels of abstraction, I'm mainly using the high level layer which is enough for my current needs and doesn't involve a single glsl line.

</comment><comment><USER4> Am I missing the link for installation instructions?

<comment><USER5> thanks for your comment -- we just added the installation instructions on the website: [http://vispy.org/documentation.html#installation- instruction...](http://vispy.org/documentation.html#installation-instructions)</comment></comment>


HP unveils world's first WiFi powered mouse - <AUTHOR> http://www.hp.com/hpinfo/newsroom/press/2011/110512xb.html?mtxs=rss-corp-news

<comment><USER2> They don't mean powered they mean connected, I thought they were charging it based on residual wifi signal (from the title) but it's just a regular mouse that connects over wifi instead of bluetooth or whatever.

Sounds like it would be a pain when your wireless router goes down and you want to navigate to its control panel and click the reboot button on screen.

<comment><USER3> Sigh. Powered by wifi would have been pretty awesome. Oh well.</comment></comment>


Noah: Bash on Ubuntu on macOS - <AUTHOR> https://github.com/linux-noah/noah <comment><USER2> This runs linux binaries on darwin. You know what would be awesome? Running darwin binaries on linux so I can do iOS development without a Mac.

<comment><USER3> Binary compatibility is one path, but another path is source / API compatibility. That's been more or less a dream for a long while, with a fairly far along implementation:

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

But for whatever reason, it's not really caught on. Even Mono managed to chase C# / .Net more impactfully than GNUStep has chased Cocoa.

Had GNUStep ever become more widely used amongst the Free *nixen, I feel like we could have had a credible, open alternative path to macOS/iOS (not to mention Linux) development.

<comment><USER4> ElementaryOS with Gnustep beneath is my daydream.

</comment></comment></comment><comment><USER5> I wonder if this could be used to get Docker running on a Mac without painful file system performance (a la Docker for Mac, running Linux in a VM). Could something like this project work for that? Are there Darwin equivalents for container stuff like namespaces?

<comment><USER6> Maybe it could work. The Mac is odd though in not having bind mounts so it is not going to be easy to fix the filesystem performance using this. Would use less memory though potentially. Maybe you could fake binds in the emulation layer.

(I work at Docker and used to work on Docker for Mac).

</comment></comment><comment><USER7> I think there's an English as a second language problem with the title.

As oautholaf points out, this is a subsystem that runs Linux binaries under Darwin, not a subsystem for Darwin compatibility under Linux.

<comment><USER8> It's presumably modeled after: [https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux)

<comment><USER9> It's wrong because of where the "Subsystem" is, and because you start parsing the sentence with that word.

OK, it's a "Subsystem", which is a subset of a system. What kind of subsystem? A Windows subsystem! This part of the system does Windows... and you're already wrong. The Windows part isn't what the subsystem _does_ , it's what the subsystem is _a subset of_. The subsystem _does_ Linux and it's _part of_ Windows. Saying it's a Windows Subsystem for Linux implies it's something like WINE, only moved into the kernel, if you're old enough to remember the "personalities" concept.

<comment><USER10> An alternative explanation for anyone who's still confused: it's one of Windows's potentially many subsystems -- i.e., it's Windows's _Linux_ Subsystem -- and hence it's the _Linux_ Subsystem for Windows, not the Windows Subsystem for Linux.

That said, I think their interpretation was likely different: it's the =Windows subsystem that is _meant for_ Linux, kind of like how earlier they had SUA, the (Windows) Subsystem (meant) for Unix-based Applications.

</comment></comment></comment></comment><comment><USER11> I've been wondering if something like this could be done, but using actual syscalls - tagging processes as Linux or Darwin and dispatching syscalls differently, as with Linux personalities or (AIUI) Solaris branded zones - instead of with a hypervisor. I think you could do this with a kernel module that hooked the syscall entry point, assuming SIP lets you do such a thing. I'm surprised they used a VMM, but I guess it's not that hard to implement via Hypervisor.framework.

Maybe there's no significant overhead to a VMM if it's hardware-accelerated?

<comment><USER12> With SIP enabled you are still free to load arbitrary "signed with an Apple- approved signature" kernel extensions, so I don't see why your technique wouldn't be possible. You're natively executing most of the code and intercepting syscalls either way, so I doubt there would be much of a difference in performance. I haven't done anything serious with noah but it's been relatively performant.

</comment></comment><comment><USER13> Very cool.

I found this presentation by the authors of Noah that explains more about how it works:

[https://events.static.linuxfound.org/sites/events/files/slid...](https://events.static.linuxfound.org/sites/events/files/slides/Noah%20Hypervisor- Based%20Darwin%20Subsystem%20for%20Linux.pdf)

</comment><comment><USER14> I wonder can this be used as a replacement to XQuartz? Especially, if what I only need is for ssh X11 forwarding.

BTW, XQuartz seems to be dead now.

<comment><USER15> That's for two reasons:

1) Mac users are persnickety about UI and cannot suffer to use the standard tatty UI that prevails in the Linux desktop world.

2) X in general is moribund, as everyone knows Wayland is the future. What's really needed now is a Wayland compositor that can render to Quartz.

Anyway, XQuartz doesn't give you the capability to run Linux binaries -- only to run software commonly available under Linux that's been source-compiled to macOS. Noah allows you to run a full Linux binary distribution under macOS without virtualization.

<comment><USER14> The only use case of XQuartz for me is the ability to ssh into a Linux server with X11 forward so I can remotely control the GUI app running in the server. That's why I ask whether Noah would be good replacement for such purpose.

I agree with you that Mac users are persnickety about UI. In fact, one of my complaints on XQuartz is the lack of retina support. As for wayland, as far as I understand, it does not support network forwarding (yet?)

<comment><USER15> > As for wayland, as far as I understand, it does not support network > forwarding (yet?)

Indeed, because Nobody Uses That.

</comment></comment></comment></comment><comment><USER16> How well does this work in practice? What is compatibility like? I assume most GUI apps don't run?

<comment><USER12> I have used this successfully to demo throwing shellcode at vulnerable (command-line) binaries and getting a shell when I'm too lazy to fire up a VM, and it does a pretty good job of this. Unfortunately ptrace isn't supported, or I'd ditch the VM entirely and be able to use a debugger when writing and testing exploits in addition to just demonstrating them.

</comment></comment><comment><USER17> Why not just use a proper hypervisor? Emulation is fragile, imperfect and not a good use of time.

<comment><USER18> I assume that by "proper hypervisor", you mean a hypervisor that runs a full kernel. This project does use a hypervisor, but apparently only to set up memory mapping and trap the syscalls for translation. Hypervisors that run a full kernel typically end up emulating hardware host interfaces, which leads to its own set of challenges and often introduces overhead that isn't present when emulating at the kernel ABI level (e.g. operations going through both the guest and host VFS/FS/SCSI stacks). I don't think it's obvious that one approach is clearly superior to the other overall.</comment></comment>