Silent Circle canary missing declaration? - <AUTHOR> https://canary.silentcircle.com/?new-issue <comment><USER2> This is not difficult or even all that ambiguous. The whole point of a canary is to confirm a negative effect by the lack of an ongoing positive action.

From the site:

 _\- a declaration that, up to that point, no warrants have been served, nor have any searches or seizures taken place._

Any such declaration disappeared at some point. The lack of a positive statement that the canary is valid (and everything's ok) is obviously deliberate, since the news items are both updated and signed.

That's about as clear of an indication as possible given the circumstances. Even this was possibly risky, even though it shouldn't be. Respect their integrity.

<comment><USER3> When you take a canary down into a mine and you notice that something unusual seems to be happening to the bird, the correct response is _not_ to spend a lot of time trying to figure out if the bird is really dead, how the problem started, or how we could interpret the bird's behavior.

When the canary you took into the mine suddenly looks strange, _you run_.

Maybe the canary didn't actually have a problem. Maybe it died due to natural causes and the mine was perfectly safe. There might be reasonable explanations for the canary's behavior that would be obvious if you took the time to perform minimal investigation. None of that matters, because the entire purpose of taking a canary down into a mine is to have an early warning signal that might save your life.

We cannot know the current situation of someone who publishes a warrant canary. What we do know that while _any_ change _might_ be a simple mistake, it could also be an attempt to announce some sort of warning. Just like taking the bird down into a mine, the early warning system _might not be useful_ if you waste time arguing about it.

</comment></comment><comment><USER4> The sole purpose of a warrant canary is to say something akin to: "We have received no warrants or NSLs."

The Silent Circle warrant canary has no such statement. It says the opposite: if "no warrants have been served," such a declaration will appear. The declaration does not appear. The most obvious conclusion is they have been served with some a warrant or similar compulsory legal process.

I think it's unlikely that the wording was accidentally unclear. This came up in the HN thread in December, with <StavrosK> saying: "You're right, it looks like the wording is a bit unclear. I'll talk to the guys to see if we can get it updated, thanks." [https://news.ycombinator.com/item?id=8796912](https://news.ycombinator.com/item?id=8796912)

On the other hand, on January 6, 2015: "There is nothing to report via warrant canary or otherwise because we have never been served with a warrant, subpoena or other legal requirement to provide anything." [https://support.silentcircle.com/customer/portal/questions/9...](https://support.silentcircle.com/customer/portal/questions/9870810-why- did-you-remove-the-number-of-requests-you-recieve-from-the-snoops-law- enforcement-each-month-?b_id=4315)

It's really quite simple to get a warrant canary right and eliminate ambiguity. Look at rsync.net's example:

 _No warrants have ever been served to rsync.net, or rsync.net principals or employees. No searches or seizures of any kind have ever been performed on rsync.net assets..._ [http://www.rsync.net/resources/notices/canary.txt](http://www.rsync.net/resources/notices/canary.txt)

The one we're using at [http://recent.io/](http://recent.io/) is similar, and possibly more explicit:

 _As of [date], we have not received any legal process or demand from any federal, state, or local government. We have received no National Security Letters, civil subpoenas, search warrants, Foreign Intelligence Surveillance Act orders, grand jury subpoenas, or any other form of compulsory process._

As a community, we really need a way to keep track of status changes in warrant canaries. I wonder if [https://canarywatch.org/](https://canarywatch.org/) keeps archived copies.

<comment><USER5> this is somewhat pointless if:

[...] it does not prevent them from using force to coerce us to produce false declarations [...]

so if the declaration is present it's still not guaranteed that no gag order was issued. Looks to me like a desperate attempt to patch a broken system (US policy/law). You could even go that far to assume that it is only a marketing stunt as such statements have no other value otherwise.

<comment><USER4> You are correct that U.S. policy is in some ways broken, but incorrect in assuming that warrant canaries serve no purpose or firms can be compelled to lie. The far better arguments are that such an order would be unconstitutional -- look at the NSL 1A litigation for a good parallel.

That's why CanaryWatch.org is run by the Electronic Frontier Foundation, the Berkman Center for Internet and Society, NYU's Technology Law & Policy Clinic, and the Calyx Institute. I moderated an event at HOPE X last year with Nick from Calyx (and Ladar from LavaBit) and they have spent quite a bit of time thinking through this.

</comment></comment></comment><comment><USER6> Sorry, this makes no sense.

Here's the archive from December 2014: [http://web.archive.org/web/20141226030217/https://canary.sil...](http://web.archive.org/web/20141226030217/https://canary.silentcircle.com)

I don't see the problem.

<comment><USER7> I'd like to see earlier versions of the canary. Because December 2014 is when they (supposedly accidentally) stopped updating their canary for a bit.

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

(Also: hey CanaryWatch peeps, [https://canarywatch.org/](https://canarywatch.org/), I know you're brand new and the archive would not have gone back far enough, but note that keeping a database of earlier canaries would be a very neat feature, for this exact situation.)

<comment><USER8> That's a good suggestion, but if canarywatch provides too much information, could it also be vulnerable to NSLs etc.? (A cursory review of the site did not uncover a canary, but I could be overlooking something. Still, if any site would make this obvious...)

</comment></comment></comment><comment><USER9> According to the Wayback Machine, it's lacked a declaration (as opposed to a statement that it's supposed to contain a declaration) at least since December 2014, the earliest version that was archived:

[http://web.archive.org/web/20141226030217/https://canary.sil...](http://web.archive.org/web/20141226030217/https://canary.silentcircle.com)

<comment><USER10> it would be funny if the initial publication of the canary was _itself_ the disclosure. Like this:

[on my hackernews profile:] "I have decided to start publishing a Canary on whether I have ever been hellbanned. The purpose of the Canary is that it can be 'dead', i.e. I can simply fail to state something, and not saying something surely does not put myself at risk of reprisal. Still, the fact of my not saying something can alert you. If this comment ever FAILS to end with a positive statement that I have not ever been hell-banned, then you can take it as an indication that I have been. For now, I'll be keeping this Canary here, but can remove it at any time."

</comment></comment><comment><AUTHOR> The biggest takeway for me here is, that I have no chance to verify that the canaray looked always like it looked today or if that is the intended state of it.

<comment><USER10> if they were really cheeky about it they would have an archive section or even changelog "Changelog. Removed part about not ever being served. Didn't seem necessary."

</comment></comment><comment><USER11> A lot of commenters seem to be dancing around a fact which seems to me to be obvious: Silent Circle has received a warrant. This is simple. If Silent Circle had not received a warrant, their canary would state as much, as promised. It does not. Ergo, Silent Circle has received a warrant. That much is, in my mind, nearly certain. On the other hand, what follows is speculation (IANAL):

The problems back in December in fact occurred on receipt of a warrant by Silent Circle. The first attempt by Silent Circle of not updating their canary was shot down by a judge. However, said judge did not go so far as to actually order them to make a _false_ statement, as that's clearly unconstitutional (of course, judges might act unconstitutionally, but perhaps "judge" here could be read to mean, "the agreed compromise of the court pending appeal", etc.; it doesn't matter one way or the other). However, the rest of the warrant canary _is not false_ , and therefore it's conceivable that the court could feel justified in ordering SC to update it, and the government could correctly predict that there is value in having the canary updated even without the declaration, since it sows confusion among those watching the canary. If that is the case, then what we would see is a warrant canary just as it existed before, except lacking the (now false) declaration. The updated canary, lack of declaration, and confusion sown by that are in fact precisely what we observe now.

The ambiguous statements by SC after December are consistent with this view. Their legal counsel could feel that even if asked directly "have you received a warrant", it may be necessary to lie in order to guarantee that it does not seem like they've made a speech act stating that they have in fact received a warrant.

If this is all the case, then I feel sorry for the SC guys, since it must be terribly frustrating to be gagged, but to have executed _precisely as planned_ this apparently effective warrant canary strategy, and then to have everyone else, instead of understanding what is going on, quibble over what it means that the declaration is missing and basically claim "the warrant canary didn't work" when _it 's working exactly the way we expected it to work_!

Luckily, assuming all this is true, presumably the people who are in positions to really care about this sort of thing also share this understanding, and (unlike a nobody like me) they're just smart enough to keep their mouths shut for SC's sake, since this is a legal tightrope by any account. If the public/the community seems to understand completely the meaning of the warrant canary, then that would give the gov't leverage to either claim that SC should be punished for it or, worse, to force SC to make a false speech act and put the declaration back in.

Certainly if I ever see that declaration come back, I will assume that a US court has done the unthinkable and ordered citizens to make a knowingly false statement against their will.

</comment><comment><USER12> I don't understand what's missing. It was updated March 6th.

<comment><USER13> The actual declaration seems to be missing. Although it does not appear to have been there in December, either: [http://web.archive.org/web/20141226030217/https://canary.sil...](http://web.archive.org/web/20141226030217/https://canary.silentcircle.com)

<comment><USER14> If it wasn't there before, it is now.

</comment></comment></comment><comment><USER15> Someone should build a repository of these canaries to keep track...

<comment><USER16> [https://canarywatch.org/](https://canarywatch.org/)

<comment><USER17> How come canarywatch.org doesn't have a canary itself?

</comment></comment></comment><comment><USER18> There's a support center question and answer here which might be related to the missing declaration:

[https://support.silentcircle.com/customer/portal/questions/9...](https://support.silentcircle.com/customer/portal/questions/9870810-why- did-you-remove-the-number-of-requests-you-recieve-from-the-snoops-law- enforcement-each-month-?b_id=4315)

</comment><comment><USER19> From the government's point of view the easiest way to handle it is to just issue warrants every month to all the major services with canaries.

Basically make them useless in the eyes of the users. "Oh, the canary, it is always triggired, don't pay attentiont o that".

Anyway, that is what I would do if I was them and had no morals or scruples.

</comment><comment><USER20> I have a hard time believing a warrant canary is something that can be trusted. It seems it would be one of the first things that would be brought up to the judge and the judge would order to continue updating the canary.

These warrant canaries seem amateurish and nothing more than theater.

<comment><USER2> Assuming that a judge would go so far as to compel them to make a false statement, which would be unconstitutional.

<comment><USER21> Are you sure there is a law again making false statements to the general public? I think police lie all the time in sting operations or as undercover ops.

<comment><USER22> It's the compelling that is ostensibly unconstitutional.</comment></comment></comment></comment>


YalerTunnel - generic HTTP tunneling via the Yaler relay infrastructure - <AUTHOR> http://yaler.org/news.html#2010-09-18

<comment><USER2> How is this notable?</comment>


From Miami to Shanghai: 3C of warming will leave world cities underwater - <AUTHOR> https://www.theguardian.com/cities/2017/nov/03/miami-shanghai-3c-warming-cities-underwater <comment><USER2> With all due respect I couldn't care less about multi- millionaries/billionaires who can afford coastal properties in Shanghai, Rio, Miami etc.

I am far more concerned with people in Phillipines, Micronesia, Vanuatu etc who are at risk of losing their homes and livelihoods and literally having no where else to go. Especially with the climate in Western countries e.g. US, Australia being anti-refugee and anti-foreigner.

I really hope our children don't look back and look at this era as being equivalent to the Holocaust. Where we all sat back and watched as millions of people died needlessly.

<comment><USER3> > I am far more concerned with people in Phillipines, Micronesia, Vanuatu etc > who are at risk of losing their homes and livelihoods and literally having > no where else to go.

Wouldn't they be able to reach other countries by boat/ferry? With water levels rising around the world, and the Middle East drying up, one can only wonder how many people in these areas will decide to migrate to other countries. I think it's very possible we'll see some kind of mass migration from MENA countries to Western countries if the water crisis doesn't get solved. And i'm not talking about the kind of mass migration we've seen in the recent years, but on a much larger scale.

<comment><USER4> I'm not sure they'll be accepted happily.

Might lead to kind of "invasion of sea people" scenario but planet-wise.

Middle East has another problem, with their population still growing they're looking towards the future where even without land shrinking it's too much of them, and here they don't have anybody to blame. Same for Africa (which is not drowning, if not in people).

<comment><USER3> They _definitely_ won't be accepted happily, or at all. People have already had enough of immigration and the politics reflect that (the rise of right- wing populists in Western countries.)

My parents migrated from the Middle East in the 80s due to war so I have an insight in what goes on in their country, people leave for Europe in quest of a better life quite often. They spend lots of $$ on it and they still get rejected and sent back, I've had personal experiences with people doing that. I've been thinking about the situation that could arise, and it's worrying.

<comment><USER4> Well, we should be definitely fixing these countries on the spot for 100% of their population - helping top 10% to emigrate doesn't fix any problem for the rest of populace.

Unfortunately, after decolonization Western countries called it a day: The world is saved once more and they don't have to care anymore, except by using it as a bait in internal politics.

</comment></comment></comment></comment></comment><comment><USER5> What's weird is how many people are just planning for life like everything will be the same. Sure, _maybe_ there's some consideration to not buying land 10 meters from the beach 10 cm in elevation, but we're talking about an utterly lifechanging catastrophe that may well kill hundreds of millions (billions?) of people via increased disease, famine, drought, and warfare caused by same, and folks are still putting money in 401k's and talking about southern California like it's always going to have good weather.

</comment><comment><USER6> It's a pity the article doesn't show Den Hague, it wouldn't be as pessimistic. I believe it would be mostly fine - the sea wall protects against surges 8.6m above mean sea level with current strongest storms being 4.5m.

[http://www.flooddefences.org/scheveningen.html](http://www.flooddefences.org/scheveningen.html)

</comment><comment><USER7> This article goes well with the segment John Oliver did on _Floods_ :

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

The program mentioned therein "The National Flood Insurance Program" seems to giving no incentive to the people living near shores to change anything.

</comment><comment><USER4> How is that solar shade coming along? [2]</comment>


New Neanderthal remains associated with the 'flower burial' at Shanidar Cave - <AUTHOR> https://www.cambridge.org/core/journals/antiquity/article/new-neanderthal-remains-associated-with-the-flower-burial-at-shanidar-cave/E7E94F650FF5488680829048FA72E32A <comment><USER2> I wonder with the recent work with polygenic score of intelligence if eventually an estimate could be made for Neanderthal IQ.

<comment><USER3> What leads you to believe that IQ would be a meaningful assessment of Neanderthal intelligence? Are you suggesting that the intelligence of an entire species can be synthesized by IQ? What are your criteria for characterizing intelligence? What are the measurable signifiers for these criteria, and how reliable are they? How would you test or confirm the results?

Why do you prioritize genetic analysis over other forms of evidence that actually provide meaningful and multifaceted views of Neanderthal behaviour?

<comment><USER4> Are you actually asking all of these questions in good faith? Seems more like a passive-aggressive way to say you don't think IQ is a good measure for Neanderthal intelligence. Which is perfectly fair, I don't like compressing the single most sophisticated phenomenon we are aware of in the universe to a simple scalar metric either, but there's a nicer way to go about saying it.</comment></comment></comment>


Rm is dangerous - <AUTHOR> http://parnell.io/rm-is-dangerous <comment><USER2> The unindented, unreadable shell script listing at the end of the linked blog entry shows why the absence of program-list indentation capability destroys its meaning more quickly than "rm ~".

<comment><USER3> Huh, could you elaborate? I found the script written by someone else but decided to run it through a beautifier; you're right that no indentation makes it difficult to understand.

<comment><USER2> > Huh, could you elaborate?

A shell script's structure is lost without indentation, making it necessary to very carefully sort out its meaning. BTW your corrected script still doesn't have the indentation done properly -- here it is, correctly indented:

        #!/bin/bash
        # filename: trash-rm
        shopt -s extglob
        recursive=1
        declare -a cmd
        ((i = 0))
        for f in "$@"
        do
          case "$f" in
            (-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
            tmp="${f//[rR]/}"
            if [ -n "$tmp" ]
            then
              #echo "\$tmp == $tmp"
              cmd[$i]="$tmp"
              ((i++))
            fi
            recursive=0 ;;
            (--recursive) recursive=0 ;;
            (*)
            if [ $recursive != 0   -a  -d "$f" ]
            then
              echo "skipping directory: $f"
              continue
            else
              cmd[$i]="$f"
              ((i++))
            fi ;;
          esac
        done
        trash-put "${cmd[@]}"

> I found the script written by someone else but decided to run it through a > beautifier ...

The beautifier your chose failed to indent consistently -- note that the original doesn't consistently indent the block between "case" and "esac", among other errors.

This might sound like something trivial and after the fact, but beautifying can reveal logical errors that can escape the eye in a program listing that lacks indentation.

To force your beautifier to behave, temporarily comment out all cases of ";;", run the beautifier, then uncomment them.

> I found the script written by someone else ...

What? Your article doesn't say that. Please take some advice and give proper attribution for code that you include in an article but didn't write.

<comment><USER3> Thanks for the input, I also corrected attribution of the script, thanks for pointing that out :)

<comment><USER2> You're welcome, good practice. The listing still isn't indented correctly -- just comment out all cases of ";;", run the beautifier, then uncomment them.

I confess to being rather spoiled by code beautifiers -- it's gotten so I can't follow the logic of a program that isn't indented correctly. :)

</comment></comment></comment></comment></comment><comment><USER4> [http://hasseg.org/trash/](http://hasseg.org/trash/)</comment>


Petition to Repeal the DMCA - <AUTHOR> https://petitions.whitehouse.gov/petition/repeal-digital-millennium-copyright-act-dcma-and-pledge-prevent-legislation-anti-circumvention/4Yy3p2qW <comment><USER2> Title is misleading. It's not a petition to repeal the DMCA, it's a petition to revise it. And surprisingly it actually gets the facts right for once: Revising the law to allow circumvention for non-infringing acts would be a pure win. There is no legitimate reason to prohibit circumvention when there is no infringement, all it does is make criminals out of good people.

That still leaves the issue of whether circumvention should be criminal (as opposed to civil) when infringement does occur, and the related question of whether distributing "circumvention tools" should be illegal in itself, but those are things people can reasonably argue about. (I personally think they're both inane, especially given their demonstrable complete lack of effectiveness at their stated purpose.) But I have never heard any legitimate argument whatsoever in favor of prohibiting circumvention _when there is no infringement_ , e.g. to unlock a phone or make fair use of the copyrighted work. So if anyone can supply any reason whatsoever why that should be prohibited then let's hear it, and if not then let's fix it.

<comment><AUTHOR> While the EFF's position on revising the DMCA is referenced by the petition, the petition itself does actually does ask to "repeal the DMCA", presumably in its entirety (which I personally support).

<comment><USER2> Again, the _title_ is misleading, including the title in the petition itself. The text is talking about a revision, which makes good sense. The DMCA itself is a larger piece of legislation that includes various other provisions not related to circumvention, like the safe harbor for sites that comply with the notice and takedown provisions. (Which has its own set of problems, but _repealing_ that would not be helpful, because then there would be no statutory safe harbor since Sec. 230 of the Communications Decency Act that provides a safe harbor for most other things explicitly excludes "intellectual property.")

<comment><AUTHOR> Okay, I see what you're saying. The petition title suggestion of repeal seems to be downplayed to only anti-circumvention notions.

On the other hand, the safe harbor provisions under the DMCA just protect you from penalties under the DMCA. I'd vote repeal the whole debacle (granted I haven't read the DMCA in a few years, but I don't recall seeing anything I liked save for the self-limiting provisions of the statute).

Edit: I'm wrong. Was thinking of just Title I. Title II and III are indeed worth saving!

<comment><USER2> >On the other hand, the safe harbor provisions under the DMCA just protect you from penalties under the DMCA.

You might want to re-read Sec. 512.

<comment><AUTHOR> Touché. After looking at it, I realize I was thinking of just Title I of the DMCA being the whole thing. You are totally right about Title II & III (Title IV boat vessel hulls... heh)!

Now that I'm better informed... (thanks!) I change my position to repeal of Title I of the DMCA in its entirety, not the entire DMCA.

<comment><USER3> The sad part is this will most likely end up providing us with a history lesson on the DMCA instead of any actual action. Same with the petitions to legalize marijuana and most of the other ones.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> It now has one more vote than my own petition:

[https://petitions.whitehouse.gov/petition/make-alcohol- sched...](https://petitions.whitehouse.gov/petition/make-alcohol-schedule-i- drug-under-controlled-substances- act/hs6KnSGJ?utm_source=wh.gov&utm_medium=shorturl&utm_campaign=shorturl)

Please note that mine is not a joke, but is designed to be rejected by the administration. The goal is to capture on record why a known dangerous substance is allowed to be sold for recreational consumption.

It's been a hard sell, because people:

      - are too lazy to click on a link
      - don't care
      - love their booze and don't understand my proposal
      - don't believe in the petitioning process

edit: formatting

<comment><USER5> Prohibiting alcohol would require an amendment to the constitution.

<comment><USER6> I don't see why. Yes, it was done that way last time; but we currently prohibit substances at the national level, that has been upheld by the Supreme Court, and I don't see any reason at all that should work differently than for alcohol. If I'm missing something, please elucidate.

<comment><USER4> It _is_ being done at the national level by the DEA. They are judge, jury, and executioner.

<comment><USER6> ... are you saying that the DEA currently enforces alcohol prohibition, or did you missread what I said?

<comment><USER4> I was referring to other drugs, specifically cannabis.

This petition was in direct response to the DEA's recent refusal to remove it from Schedule I status. This keeps it in the same class of drugs as heroin and cocaine.

<comment><USER6> Yes, that was precisely my point: we are currently doing it for other substances, no reason I see we _couldn't_ include alcohol. Plenty of reason we _shouldn't_ , of course, but I think most people here agree those reasons apply to things we're currently banning, which is the thrust of the whole discussion.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> DMCA is not bad.

Like patents, it's become a popular punching bag here on HN. Well, I stand loud and proud against "the HN mob" of wanna be's and know it all's. I'm ready to get downvoted to hell on this one, but it's important that someone speaks up. I am pro DMCA! (And patents!)

Generally speaking, DMCA and patents are a pain in the ass for a really young company. Startups want to move fast and break stuff... which is great... except they typically do so at the expense of people who came before you and busted their butt just as hard as you're busting yours. Why should you get to play by a different set of rules then they did? You shouldn't.

When -- if ever -- your startup grows up, DMCA and patents are how you stay in business. It has to be easy and cost-effective to protect your creations, or else the incentive to create is greatly diminished and the ROI for R&D is zero. Intellectual property protection is the keystone of a modern knowledge economy. And if you don't understand why, I'd recommend taking a microeconomics 101 on iTunes U or Youtube. VC, private equity.. hell, even Wall St., wouldn't be in America were it not for our world-class intellectual property laws.

Just because 100,000 people sign a DMCA petition doesn't make it right. 1,000,000 McDonalds hamburgers are sold every day... is that the right thing to eat just because a million people are doing it? My point is: one of the downfalls of voting websites like HN, reddit, or even the whitehouse.gov platform is people who know nothing get their votes counted the same as people who are experts on the subject. Well, I've been litigated for patent infringement, and I work with DMCA at my current company, and I know both issues intimately. DMCA, and patents, work. I know there are other startups out there who depend on DMCA, and if you're one of them, upvote this.

For everyone else, please educate yourself on what exactly DMCA does and the importance of IP laws in the American economy.

(N.B. Yes I am lumping DMCA and patents together a lot here, because the complaints behind both of them stem from a lot of the same entitlement mindset that startups are somehow entitled to implement technologies or host data that is not theirs.)

<comment><USER8> _it's important that someone speaks up. I am pro DMCA!_

The petition isn't entirely anti-DMCA and neither are many people on HN. The DMCA offers a safe harbor for websites that host user submitted content and it gives a mechanism for truly infringing content to be taken down. There are alternative approaches that some might like better but they are unlikely to happen anytime soon. In the meantime, these two aspects are both good for businesses and I doubt that they're as controversial here as you state they are. There are, however, serious issues with the DMCA. One of these is that there's little to no recourse when the DMCA is abused by a company to take down materials that they don't own the copyright to (this happens frequently). Another issue is that circumventing DRM is illegal even if no copyright infringement is taking place (this is the actual point of the petition). It's not impossible to support the positive aspects of the DMCA while simultaneously recognizing that it is far from perfect and in need of reform.

PS - I downvoted you. It had absolutely nothing to do with whether or not I agree with you. You're baiting for upvotes/downvotes with statements like _"I'm ready to get downvoted to hell on this one"_ and _"I know there are other startups out there who depend on DMCA, and if you're one of them, upvote this."_ You're also being unnecessarily insulting and condescending when saying *"I stand loud and proud against 'the HN mob' of wanna be's and know it all's," when this adds nothing to your argument. This behavior is clearly against the Hacker News Guidelines (<http://ycombinator.com/newsguidelines.html>) and more importantly it's both rude and nonconstructive.

<comment><USER7> I agree with your comments on DMCA. Good thoughts here.

As for stating the truth -- how I don't care if people downvote my opinion, observing how HN is filled with a majority of wanna be's and know it all's and very few do'ers, or encouraging startups with similar views to support my comment -- it isn't necessarily "baiting" for votes. That's colorful language meant to incite dissent, and for that I applaud your salesmanship; but, I actually find your PS to be a bit sanctimonious and churlish. But -- we all have a choice to up/down vote based on content or presentation of someone's comment. I guess I just care more about the content.

And for that, I give you an upvote.

</comment></comment></comment><comment><USER9> The DMCA has helped me get knock off websites taken down that consist of nothing but one of my blog posts copy-pasted.

I had a very high traffic blog article copied about a half dozen times with domain names purchased JUST to post the article and replace all the Amazon affiliate tags and advertisements with their own.

Had it not been for the DMCA, I'm not sure what I could have done. But for exactly $0 and 5 minutes of my time, I was able to email their host and the content was taken down in less than a few hours.

<comment><USER10> Doesn't matter. The negatives of the DMCA greatly outweigh the positives.

Why should I not be able to hack my OWN tablet? Why can't I unlock my OWN phone? Why is it that the government exercises near-dictatorial control over digital rights? Sure, it does help with copyright issues, but there's a ton of things in there that have nothing to do with copyright, like the law against jailbreaking tablets.

The point is, the DMCA exists for a good reason, but it was written by people who know nothing about how digital media works while they were in bed with the RIAA and MPAA. It can be revised to eliminate the freedom-limiting aspects while still preserving the good portions of the law.

<comment><USER11> All the laws about things that tend to be only well-understood by the younger half of the population tend to be written by representatives from the older half.

I'm sure there are politicians who don't know how to check their own e-mail, but who have strong opinions on DMCA-esque legislation because they think piracy === theft and overbearing laws like the DMCA are the only way to prevent theft 2.0.

You have to be immersed in technology to understand the nuanced implications of technology law, and most of our representatives have not spent their lives immersed in technology like most of us have.

</comment></comment></comment><comment><USER12> If the DMCA was repealed I have a bad feeling that whatever the current administration and congress/senate would come up with to replace it would be far worse than what we have now. When the DMCA was written the government had more of a hands off approach to the Internet than it does now.

</comment><comment><USER13> Seeing as the president cannot propose his own bills is not this a rather "pious" and pointless exercise - surly would not the effort be better spent finding a sympathetic senator or congressman to introduce a reform the DMCA bill.

</comment><comment><AUTHOR> Text of the DMCA statute, for the curious: <http://www.copyright.gov/legislation/pl105-304.pdf>

</comment><comment><USER14> I would like to see the registered agent registration with the fees go away. And replaced with the free and online 'registration of the point of contact' approach.</comment>


Show HN: Create a simple and clean button with counter - <AUTHOR> http://lolbtn.co.uk/

<comment><USER2> Interesting idea, sort of a "component as a service". The name kind of bugs me but whatever.

If you're like me and automatically hit enter in every text box, you might get confused when the form resets.

Is there a way to get your button's count through some API?

<comment><AUTHOR> Thanks for the feedback!

The name was inspired by a post that gave us the idea, not to say it'll stay as this. I'm not too sure about this issue you're having, I can't replicate it.

If you go to [http://lolbtn.co.uk/YOUR_HASH/stats](http://lolbtn.co.uk/YOUR_HASH/stats) you can use this as an API. Here is an example: [http://lolbtn.co.uk/65h8r9/stats](http://lolbtn.co.uk/65h8r9/stats) Edit: We just created this for you as our first reviewer, as thanks!

<comment><USER2> Ah nicely done, you should add that to the success dialog!

For me submitting the form also clears it, so I can't test or change it anymore. The experience is a bit choppy. Perhaps you can just keep the settings the same so a button creator can create more iteratively.

</comment></comment></comment><comment><USER3> Kind of neat - although the iframe irks me. I wonder if there's a way to do this easily with JavaScript/AJAX...</comment>


Ask HN: Has Google.com ever been down? - <AUTHOR> <comment><USER2> Sure, first hit on Google, certain you can find more yourself if you like: [https://www.cnet.com/news/google-goes-down-for-5-minutes- int...](https://www.cnet.com/news/google-goes-down-for-5-minutes-internet- traffic-drops-40/)</comment>


MIT Technology Review – 50 Smartest Companies - <AUTHOR> http://www.technologyreview.com/tr50/2014

<comment><USER2> Is it just me or does nothing happen when you click on the blocks? This page seems half finished...

<comment><AUTHOR> Works with Chrome 35 on Linux (displays a card overlay).</comment></comment>


Show HN: Turn gifs into slices of wall art - <AUTHOR> https://gif-slice.com <comment><USER2> Cool, looks like it was inspired by:

[https://gifbook.io/](https://gifbook.io/)

</comment><comment><USER3> Cool UI! Maybe share some nice gifs to play with so one can see the appeal easier?</comment>


The Silicon Valley Giant Bankrolling Devin Nunes - <AUTHOR> https://www.thedailybeast.com/the-silicon-valley-giant-bankrolling-devin-nunes/ <comment><USER2> I'll go out on a limb and say Oracle has done almost nothing useful (unless you count commandeering existing tech as useful) for the industry since its inception. Can't wait until that cancerous organization dies.

</comment><comment><USER3> It's Oracle, as the clickbait headline won't tell you.</comment>


These incredible ARKit apps show why iOS 11 on the iPhone X is going to be huge - <AUTHOR> http://bgr.com/2017/09/12/iphone-11-features-arkit-app-demos/ <comment><USER2> Why on the X when they were made today on the 7....</comment>


Q – A Data Language - <AUTHOR> http://www.q-lang.io

<comment><USER2> That's at least the third programming language named Q:

[https://en.wikipedia.org/wiki/Q_(programming_language_from_K...](https://en.wikipedia.org/wiki/Q_\(programming_language_from_Kx_Systems\))

[https://en.wikipedia.org/wiki/Q_(equational_programming_lang...](https://en.wikipedia.org/wiki/Q_\(equational_programming_language\))

<comment><USER3> Also, naming a programming language with a single letter is not very search- friendly.

<comment><USER4> As someone learning and using R I agree 100%

<comment><USER5> With q.js I could feel the same as well.

</comment></comment></comment></comment><comment><USER6> I am surprised that EDN is not making more progress as a data interchange format, especially now that it has fantastic validators and coercion libraries, such as Prismatic's Schema:

[https://github.com/prismatic/schema](https://github.com/prismatic/schema)

This is, by far, the most intelligent data exchange system I have ever seen. It offers a richer language of types than what is offered by JSON, it is as readable as YAML, it is far more concise than XML. And yet it seems unable to break out of the world of Clojure. But it deserves to be taken seriously as a data interchange language.

<comment><USER7> EDN [1] has one flaw. It is not JSON. I will just repost the response [2] I received when I mentioned wanting EDN support in PostgreSQL.

> So the same argument as (say) YAML, Lua tables or TNetStrings. Or, if you > include binary representations, stuff like Thrift, XDR and ASN.1. You can > embed a JVM in PostgreSQL and write the functions yourself (or use PL/Scheme > I suppose), but I would be basically amazed if anyone decides to do it for > you. JSON gets the nod because it's understood by billions of systems. Other > formats are going to struggle.

While I do not agree with his position, it is shared by many people.

[1] [https://github.com/edn-format/edn](https://github.com/edn-format/edn)

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

<comment> dj-wonk Yes, JSON is "understood" in the sense that it is easy to parse, yes. That doesn't mean actually working with the results is any easier. (1) Without a schema, doing so can actually be harder. (2) JSON leaves out many useful data types and it is not extensible. So, perhaps JSON has "succeeded" by lowering expectations of data interchange. :)

</comment></comment></comment><comment><USER8> I really like this. In general, a well-supported non-crappy schema language for modern data exchange formats is long overdue (e.g. JSON Schema is horribly un-human-friendly). The fact that they aim higher and allow for a much more detailed set of validations is great, IMO.

I hope that this becomes a success and gets implementations in many programming languages.

<comment> nevi-me > I really like this. In general, a well-supported non-crappy schema language > for modern data exchange formats is long overdue (e.g. JSON Schema is > horribly un-human-friendly).

I think I'm a bit confused, is Q the actual schema or a validator of the schema? I can also validate a JSON document using JavaScript and respond with a true or false based on whether it meets certain criteria. So I think that there's something amiss with your statement above, specifically that "JSON Schema is horribly un-human-friendly". Doesn't Q take JSON and let the user know if it's correct or incorrect? WOuldn't JavaScript, or any other language at that, do the same?

<comment><USER9> JSON Schema refers to [http://json-schema.org/](http://json-schema.org/)

I don't personally understand what is so "un-human-friendly" about it. It is easy to use and understand in my opinion.

<comment> nevi-me I know what JSON is :)

<comment><USER10> JSON Schema != JSON.

</comment></comment></comment></comment></comment><comment><USER11> I got excited at first - I thought they were referring to the Q language from KDB. This reminds me quite a bit of Google's protocol buffers.

<comment><USER12> Same here. I'm interested in figuring out q/kdb, but it seems a bit opaque.

<comment><USER13> As someone who had to teach myself kdb/Q recently, I can recommend the Q for Mortals book: [http://code.kx.com/wiki/JB:QforMortals2/contents](http://code.kx.com/wiki/JB:QforMortals2/contents)

<comment> jd-uk This is a bit of a _plug_ but anyone interested in learning about kdb/Q can take a look here: [http://www.timestored.com](http://www.timestored.com)

They have some interactive, online kdb/Q tutorials with programming questions and answers to try out the language and get a feel for it.

There is also an IDE for day-to-day users of kdb/Q with lots of convenient features

</comment></comment></comment></comment><comment><USER14> A "data language", in this context, is a language for representing and validating data. I'm not clear on why it's called "Q", or why it calls marshalling/unmarshalling undressing/dressing. The language itself looks alright, it's dependently typed. It doesn't say anything about the speed of the existing JS/Ruby implementations.

<comment><USER15> Perhaps the name is based off the R language (which came from S), a major data/stats language. Data representation comes before analysis, hence Q?

Renaming marshaling, couldn't tell you.

</comment></comment><comment><USER16> It's strange to me how dependent Q becomes on its host language. Instead of defining its own types in order to sit between various serializations and host systems, Q seems to simply augment the Host with a few extra types.

<comment><USER17> I agree. This is something that XMLSchema got both right and wrong. The XMLSchema basic datatypes [0] are well defined and for the most part fit nicely in host languages. However, they really screwed up with the complex types making it difficult to map onto programming languages for multiple reasons (sequence/choice can't be easily modeled in most programming languages without intermediate types, extension versus restriction, derivation versus substitution groups.) For a good write up of the design philosophy behind XMLBeans, see:

[http://davidbau.com/archives/2003/11/14/the_design_of_xmlbea...](http://davidbau.com/archives/2003/11/14/the_design_of_xmlbeans_part_1.html)

[0] [http://www.w3.org/TR/xmlschema-2/](http://www.w3.org/TR/xmlschema-2/)

</comment></comment><comment><USER18> In Clojure you can use schema ([https://github.com/Prismatic/schema](https://github.com/Prismatic/schema)) which does the same thing without needing a separate language.

<comment><USER19> The point here is to _have_ a separate language. Data interoperability is about having multiple languages, not having only one to rule the world.

<comment><USER20> I've done (limited) schema validation in Python. Schema exports reasonably well to EDN (it is just clojure after all). One can read EDN pretty well. I don't have a full-blown Clojure interpreter that would be necessary for arbitrary Schema, but I can handle the core types as well in Python (or random other language) as I could in Clojure/Clojurescript.

</comment></comment></comment><comment><USER21> This is the second project named 'Q' that's been on HN in the last week or so. All cool ideas, but some Googling first by all parties would probably ease confusion.[0]

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

</comment><comment><USER22> It's interesting, but is it powerful enough? There's a great talk by Zed Shaw about implementing authorization code. I think the same issue holds here.

A language might work for simple and more complex type constraints, but at some point the constraints might become so weird that you really need a full blown turing complete language to define them.

And that point might be sooner than you'd like. Why not instead of using expressions in this constrained language, use something like Haskell?

It's got the super powerful typesystem, and you're certain that it will be able to express _any_ constraint you throw at it.

That said, this language does look nice, and I haven't really tried to find out if there's any obviously important constraints you wouldn't be able to build in it.

<comment><USER23> This one?

[http://vimeo.com/2723800](http://vimeo.com/2723800)

<comment><USER22> Yes that's the one :)

</comment></comment></comment><comment><USER24> Given that you use a powerful rdbms, such as postgres, you don't need anything more than sql constraints. For example, the constraint to check the temperature would be something like CHECK(temp between 33.0 and 45.0). To check that no two user accounts share the same alias, a simple UNIQUE(user_alias) will do. More complex constraints can be enforced using plpgsql.

Then name your constraints. Then when the sql layer throws them, it's trivial to remap them to user readable error messages. It works especially well in newer postgres versions where the error reporting is much more detailed and the messages easily machine parsable.

<comment><USER25> SQL constraints are a given; always use them. However, it's best practice to also validate your data before it gets to the database for several reasons.

A) Depending on a database check constraint failure is analogous to using a try/catch when a pre-emptive check would work; it's dirty.

B) You're putting unnecessary load on the hardest system to scale.

C) Users/systems will get instant feedback with a client-side validation. Depending on the data, this could be an enormous bandwidth savings.

<comment><USER26> I am not sure I would say "best practice" but I would rank it as "often useful." I'll explain.

I disagree with your characterization of using exceptions when a check condition behave identically. It's not dirty, it's exception oriented.

I disagree with your characterization of the database as the hardest system to scale. What's hard is fixing a performance problem in the database after an organization has effectively put the schema in a cast by developing 30 apps/scripts directly coupled to the core of the (broken!) schema.

I DO however agree that client-side feedback is important. Validation on the client might include a lot of data used for prompting, or perform validation _only_ the user-interactive application can do. This exceeds the role of the data constraints you might implement in your database for obvious reasons.

I'm not sure Q does more than duplicate the constraints I would put in my database to start with. There's a lot more to collecting input than enforcing closed-form rules.

<comment><USER25> I disagree with most of what you said.

"exception oriented" programming is dirty. It's especially filthy when your expecting exceptions from a database for these reasons

a) Returning errors to the user is asking for a slipup handling the different exceptions, thus returning more info than desired. Cue the injection hacks!

b) Depending on the DBMS and its configuration, an upsert destined to fail may block reads and other writes from executing!

I had a feeling somebody would gripe about duplicated validation rules; it's a problem that needs an elogant solution on your own stack.

</comment></comment></comment></comment><comment><USER27> I like it because you can practically use this to define a grammar for parsing a programming language, because:

1\. Each data type can inline express its own value constraints (not just type constraints, but rather value constraints) which is key to source code parsing

2\. With subclasssing you can combine data types into higher level objects that inherit all of the lower level value constraints. This is similar to how a recursive lexer drills down from a high level statement into the different parts of each statement.

3\. The data type value constraints support sequences, alternatives, and unions, most of what a lexer needs to parse a language based on a grammar spec

With these ingredients you can actually parse code, and thereby write a code interpreter (or parser at least). You begin with a grammar rule (a high level data type) that defines a statement, and a statement is defined as a list of alternatives forms of a statement, and each statement form is defined as a sequence of keywords and supported value types, and so on down the language primitives.

... but I'm not sure if supports recursion, and thereby recursive descent parsing. Can you say something like "Sum = [Sum, Operand, Sum]" If not then you're limited to immediate values only and no nested expressions.

</comment><comment> nevi-me Am I missing something fundamental here? I think in the home page Q shouldn't be compared to just JSON as they are in principle two different things. If I were to write a 'data language' or to extend an existing language to cater for data, wouldn't I write my validators in that said language? If I am correct, then I was expecting Q to be compared to the closest other 'data language', not be compared with a document/schema.

For example, if I was doing it in JS, I'd say: var validDoc = true; var Temp = function (t) {return t >= 33.5 && t <= 45.0};

then when I get the doc, I loop through my conditions, as such:

validDoc = Temp(doc.temperature);

// reject if !validDoc

From here, the benefit of Q becomes that it's much easier to do validations, instead of writing them from scratch, considering that my example above only returns a true || false, as it doesn't have the error handling to let me know what went wrong and where.

One could also achieve some of what Q is doing by using an ORM if said data is going to a database/document store.

So, HN, am I missing something here?

</comment><comment><USER23> Interesting... here is a tool, which is also going twoards data oriented approach.

"Drake - a kind of make for data"

[http://blog.factual.com/introducing-drake-a-kind-of-make- for...](http://blog.factual.com/introducing-drake-a-kind-of-make-for-data)

</comment><comment><USER28> I can't count the number of times I have wanted to set up re-usable model definition and validation, but haven't been able to find a good portable library that isn't part of something much larger I don't need. This definitely addresses a space in need of more options.

My answer was modlr ([https://github.com/jdc0589/modlr](https://github.com/jdc0589/modlr)), which I have been ignoring, but Q looks like it could do well. I'm not super pumped about the name though, conflicts with super popular promise library lots of people already use.

<comment><USER19> I'm not very good at naming things. I'm aware of the name clash with many other tools and would really like to find another name. If you have any better idea, just let me know.

<comment><USER29> How about _Scheme_! ...er, no wait... Or _Grammeme_ , the well-known combination of grammar and meme ([https://en.wikipedia.org/wiki/Grammeme](https://en.wikipedia.org/wiki/Grammeme))?

</comment></comment></comment><comment><USER30> Oh dear, this might conflict with a SQL variant we cooked up at my old company called Q-Lang. Where you could write a SQL statement, leave bits of the WHERE clause "blank" and it would generate a GUI interface with drop downs and calendars and everything to let people fill in those bits without too much effort. Nothing terribly fancy, but it let you go from a working example SQL statement to an integrated query interface in the app in about 10 minutes.

It had lots of limitations, but most of the time it absolutely annihilated some of our competition's multi-month integration engagements.

</comment><comment> dj-wonk Q is trying to do both data and validation, which are very different problem spaces. I think designing for both involves serious tradeoffs for the individual parts.

</comment><comment><USER31> Finally a new language that does something remotely novel. I like the blur between data and code here; (very) vaguely lispy.

</comment><comment><USER32> where is all the theory behind q-lang coming from? are there theoretical principles behind this new schema language?</comment>


Serve rails assets with etags from nginx - <AUTHOR> https://gist.github.com/2348131

<comment><USER2> You'll probably also want to add the following to serve the already compressed assets

        gzip_static on;</comment>


Non-Euclidian World Engine - <AUTHOR> https://youtu.be/kEB11PQ9Eo8 <comment><USER2> I'm wondering how the engine was engineered. Specifically does it just consist of a series of custom hacks, or perhaps is there something more principled going on?</comment>


The de Havilland Comet - <AUTHOR> http://www.greatdisasters.co.uk/the-de-havilland-comet/ <comment><USER2> I _still_ think the Comet manages to look more futuristic than other civil planes. Something about the look of those engines in the wing roots with not a nacelle in sight.

Such a shame it turned out to be doomed due to being first and the now well known metal fatigue story.

The article, as with everything Comet related, ends with noting that lesson is why airliners now have very rounded windows. Yet none ever wonder or look at why cockpit windows remain decidedly rectangular. :)

<comment><USER3> The Comet did go on in a military role as the Nimrod - I once saw an AEW Nimrod parked at the edge of RAF Kinloss - a staggeringly ugly beast:

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

<comment><USER4> They were an amazing example of a legacy system being maintained far beyond any reasonable expectation of life at gradually increasing cost, to a great extent because nobody could agree on a replacement and the one-off cost of a replacement was always a bit more than the endless "maintenance" and "refurbishment".

If I remember rightly the refurbishment project hit the problem that, because the original planes were hand-built to 1950s tolerances, building new parts off the original plans simply wouldn't fit. The only viable approach was _measure the specific plane you wanted to fit_ , and build a custom part for it.

Eventually one simply caught fire in the air: [https://www.telegraph.co.uk/news/1528109/Fire-was- reported-o...](https://www.telegraph.co.uk/news/1528109/Fire-was-reported-on- doomed-Nimrod-just-after-mid-air-refuelling.html)

The destruction of the airframes was controversial: [https://www.bbc.co.uk/news/uk- england-12292390](https://www.bbc.co.uk/news/uk-england-12292390) but I see it as a symbolic driving of a stake through the heart of a project that should have been honorably retired a couple of decades previously but instead took on a vampiric, undead, and ultimately fatal life.

<comment><USER5> The B-52 program is slated to have a 95 year operational time span. Partly as an experiment in maintaining old aircraft.

<comment><USER6> Yes, but Boeing built 744 of the things, and only 78 (or fewer) are still in USAF service (I believe NASA has one …). So the ones being upgraded are from a late production batch (the B-52H) and presumably by that point Boeing had standardized things properly.

Comet production ran to 114 aircraft in four major versions, of significantly different size and engine configuration (they started with a 36 seater, and ended up with 119 passengers in a charter-variant of the Comet 4C). No individual model of Comet got anywhere close to a triple-digit production run.

Oh, and 26 hull loss accidents!

</comment></comment></comment></comment></comment><comment><USER7> One amazing story about this is that the film 'No Highway in the Sky' [1], which (almost) predicts this exact problem, was made a couple of years _before_ these actual events took place.

[1] [https://www.imdb.com/title/tt0043859/](https://www.imdb.com/title/tt0043859/)

<comment><USER8> The film was based on the novel "No Highway" (1948) by Nevil Shute, who had worked as an aeronautical engineer at De Havilland.

<comment><USER3> It's good that not all of Nevil Shute's predictions were so accurate:

[https://en.wikipedia.org/wiki/On_the_Beach_(novel)](https://en.wikipedia.org/wiki/On_the_Beach_\(novel\))

<comment><USER9> How do you know? As far as it goes, this novel might be actually an accurate prediction (except for the year).

</comment></comment></comment></comment><comment><USER10> The foreshadowing was obvious when they called out the square windows in the first few paragraphs. Everyone who's ever slept through an engineering class knows corners cause stress risers.

</comment><comment><USER11> Chester Wilmot, author of "The Struggle for Europe" who was an Australian War Correspondent during the Second World War was one of the passengers who sadly lost their lives in the crash of the Comet over the Mediterranean Sea.

I can recommend "The Struggle for Europe" \- he wasn't just writing about the history, he was actively taking part.

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

</comment><comment><USER12> One story I heard was that one of the production engineers added a rivet in the skin near the corners of the window. This was added because he thought it would strengthen the structure. Unfortunately it actually acted as an additional stress concentrator. I'm not entirely sure there wouldn't have been an issue without that extra rivet. The guy that made that change thought he was doing the right things but in fact made things much worse.

<comment><USER13> According to Wikipedia:

> The accident report's use of the word "window" when referring to the > Automatic Direction Finding (ADF) aerial cutout panel[121] has led to a > common belief that the Comet 1's accidents were the result of its having > square passenger windows. In fact, Comet 1's cabin windows were very similar > in shape, with similar corner radii, to those of the Boeing 377 and Douglas > DC-7[122], both of which were pressurised aircraft. The windows in Northwest > Airlines' B-377 were in fact larger and notably more rectangular[123] than > those of the Comet 1. While stresses in the area of the passenger windows > were significantly higher than de Havilland had calculated, nowhere in the > accident report is it claimed that the fatigue failure of the Comet fuselage > occurred was a result of the shape of the passenger windows, but instead > from excessively high localised stress at bolt and rivet holes, for which > insufficient reinforcing (and therefore structural load distribution) > existed.

</comment></comment><comment><USER14> Such a shame Nimrod is no longer flying. But it replacement(Rivet Joint) makes a mockery of regulations introduced because of Nimrod. Basically the MAA would like more information on adhering to regulations at time of production, they'd like an idea of when things start to fail. The RAF may not have even fully qualified for to fly because they were built in the 60s! They don't want the same mistakes like Nimrod because of fatigue

</comment><comment><USER15> I wonder why all the planes were names in some variation of Yoke [name, including Yoke]? Maybe:

yoke: NOUN; Irish informal; A thing whose name one cannot recall, does not know, or does not wish to specify.

[https://en.oxforddictionaries.com/definition/us/yoke](https://en.oxforddictionaries.com/definition/us/yoke)

<comment><USER16> It looks like it's based on their registration "numbers" written out in the phonetic alphabet in use at the time: [https://www.smithsonianmag.com/history/comets- tale-63573615/](https://www.smithsonianmag.com/history/comets-tale-63573615/)

<comment><USER15> Thanks!

 _Comet 1—registration G-ALYP, dubbed "Yoke Peter," from the phonetic alphabet then in use in Britain (George-Able- Love-Yoke-Peter)_

</comment></comment></comment><comment><USER17> When I first saw the headline I was thinking it was this Komet :-) [https://en.wikipedia.org/wiki/Messerschmitt_Me_163_Komet](https://en.wikipedia.org/wiki/Messerschmitt_Me_163_Komet)

Also an interesting aircraft.

</comment><comment><USER18> My Dad was a riveter in the Vickers Viscount factory in the 50s/60s. Ok, not Comets, but close.</comment>


Ask HN: Grails hosting (or is 100mbit enough?) - <AUTHOR>

For django/rails or python/ruby/php based startups there are plenty of cheap hosting solutions.
What about for grails/java? Are there any just-trying-out-my-startup-idea hosting solutions cheap enough for the just-trying-out part?
I have 100mbit at home and I'd probably be able to scrap together a dedicated server and put in my closet - would you say that would be a better and also cheaper alternative? Is 100mbit enough? <comment><USER2> 100Mbit is way more than enough, unless you are trying to break into the adult industry or similar.

The problem with doing it at home is usually the reliability of network and availability of network, ventilation, and the reliability of power. But if you have some 100Mbps FTTH then sure, buy a UPS and rack up a server at home. Make sure it's in an area that doesn't get much warmer than you would like for yourself (whatever you do, /do not stick it in the closet./ )

Really, the colder you can keep it the better, but you shouldn't have any real problems through 80-85 degrees (I'd like it cooler, but eh.) I've worked in home-made data centers like that where the temp. regularly hit 100 (F, not C) and things mostly worked.

Do the math on your power usage, though; many places have retarded pricing for residential power, meaning you could actually save money by bringing it to a data center.

Me, I'm stuck on a 3m down, 768M up connection or something like that. Wholly unsuitable for actual hosting.

<comment><AUTHOR> Thanks a lot for your informative answer. Really. That was probably mostly what I wanted to know - if 100mbit is enough. In that case I'll use my old pentium something, ubuntulize it and stick it in the store room. Power usage is not really a problem - economically. Unlimited usage, fixed price, included in rent... Also, during my 25+ years I think I've experienced one power failure so power failure is not a problem either. Though perhaps a UPS might be wise to invest in anyways. At least along the road.

Tahnks a lot!

</comment></comment><comment><USER3> 1\. Google App Engine is free to begin with, but you known the cons. 2\. Rackspace Cloud Servers (21$ for 512 MB. Pay for BW separately) 3\. Slicehost (Same as Rackspace Cloud Server, but 40$ for 512 MB. But you get 100 GB BW I think)

I am using 512Mb Slice, with Nginx and Jetty and MySQL on the same slice and its been working pretty well so far.

</comment><comment><USER4> linode or slicehost or rackspacecloud isn't cheap enough?</comment>


Oracle deprecating Java applets in Java 9 - <AUTHOR> https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free <comment><USER2> When they are finally gone that will certainly closes an arc for me[1] :-). The applet concept though still resonates with me. Something to provide all the window framework so you only needed to worry about the logic. I didn't appreciate how powerful servers would get.

[1] When Sun officially announced Java I was the guy who wrote the applet that powered the home page. You needed HotJava or the beta Netscape Communicator to actually see it :-)

<comment><USER3> HotJava was a pretty cool concept.

An empty graphic shell that could download protocol implementations on the fly.

<comment><USER4> The dude who wrote HotJava is an amazing fellow!

Years before Arthur van Hoff wrote HotJava (and the Java version of the Java compiler, and AWT), he wrote something much more powerful than HotJava, called HyperLook (aka HyperNeWS, aka GoodNeWS), which was a rich graphical and dynamically scriptable PostScript shell for the NeWS window system.

HyperLook let users and network clients download protocol implementations and interactive user interfaces on the fly (both locally self contained or client/server). Users could flip running apps into edit mode at any time, to customize, built and script their own user interfaces at runtime.

It was implemented, scripted and rendered in NeWS with PostScript code and graphics, and included direct manipulation GUI editing tools, an Adobe Illustrator like PostScript graphics editor, warehouses of preconfigured customizable components, a client/server networking library, plus an object oriented C to PostScript compiler he wrote called PdB (for Pure dead Brilliant). [1]

(From my earlier post [2], which includes more details and lots of links, screen shots and manuals):

>At the Turing Institute in Glasgow, Arthur and his colleagues created a groundbreaking HyperCard-like PostScript-based networked user interface creation tool called GoodNeWS, later renamed HyperNeWS and then HyperLook, which was the most amazing thing anyone ever did with NeWS.

>HyperLook was so far ahead of its time in 1989, that there still isn't anything quite like it for modern technology. Since we developed HyperLook and SimCity at the same time, that forced us to eat our own dog food, and ensure that HyperLook supported everything you needed to develop real world applications. (Not to imply that SimCity is a real world! ;)

After Arthur left Sun to form Marimba and publish Castanet, he also wrote a little-known and under-appreciated Java scriptable HyperCard-like system called Bongo [3], which distributed interactive content via Castanet "channels", and had the important ability that was present in HyperCard and HyperLook but missing in HotJava: attaching and evaluating scripts on objects at runtime, by virtue of calling the Java compiler at runtime. (Having written the Java compiler himself, it was easy for Arthur to figure out how call it and dynamically link in the compiled byte code at runtime, a feat that is necessary for implementing HyperCard-like interactive programming tools, was unheard of at the time (not even HotJava did that), but is now taken for granted today with JavaScript. ;)

[1] [https://www.youtube.com/watch?v=avJnpDKHxPY&index=30&list=PL...](https://www.youtube.com/watch?v=avJnpDKHxPY&index=30&list=PLX66BqHq0qTCvsWWrjptBUdHnzItlelrE)

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

[3] [https://people.apache.org/~jim/NewArchitect/webtech/1997/10/...](https://people.apache.org/~jim/NewArchitect/webtech/1997/10/note/index.html)

<comment><USER4> Oops, I was mistaken that Arthur wrote Hot Java -- that was Jon Payne and Patrick Naughton, who are also amazing fellows! They also worked together on NeWS, and Jonathan once wrote his "own" version of Emacs. ;)

</comment></comment></comment></comment><comment><USER5> Imagine all of the 1-2 decade old applets that no one will care enough about to update. I'm thinking of little physics simulators you'd find on a professor's web page to simulate projectile motion and such.

<comment><USER6> Actually, a lot of the useful things like ADT illustrations tend to be written as ancient Java applets as well.

On the other hand, the Java bytecode is simple enough that it shouldn't be too much work to write an emulator in JS, and, as most of Java is written in Java, all one really needs to write around that is a shell for the AWT and maybe a bit of class/string functionality to get the viewer working. Threading and I/O would be a truly nasty pain, but you could probably bypass most of that.

I'd be more surprised if there weren't already some attempts to work on this.

<comment><USER7> The problem is that the graphics class allowed you to do things that can only be done in canvas with direct pixel manipulation, which is too slow for interactive programs.

<comment><USER8> You can emulate a 2d canvas in webgl.

<comment><USER7> That requires webgl to be widely available.

</comment></comment></comment></comment></comment><comment><USER9> I like everyone won't be sad to see Java Applets disappear.

However you'd be surprised how many large or giant orgs (inc. governments) are still utilising Oracle Forms and Reports, as a mainstay. We're talking about thousands of these horrible forms going back to the 1990s.

Oracle has announced some kind of vague "way forward" for the technology but as of yet they've been light on details. They have tried to replace Forms and Reports several times but with limited success (partly because of previous investments/sunk costs, and partly because Oracle licensing costs are horrifying).

</comment><comment><USER10> And with the death of plugins, farewell to any chance of someone trying to get the browser to do something new and interesting without having to suck up to one of the big browser makers. Things like SVG started out as plugins, and the web, and the internet as a whole, would have been a lot worse off if we had to wait for years of bikeshedding by browser makers to implement new specifications. The web's a little less open today.

<comment><USER11> I'm not so sure. New image formats can be decoded in JavaScript, without the need even to install a plugin. That, to me, is much more compelling. Not only do you not have to wait for browser makers, you don't have to wait for users.

That said, it has its limitations.

<comment><USER10> SVG does a lot more than just pictures. Yes, you can have javascript parse for simpler uses, but using some of the interactivity in the format would add more difficulty. Also, consider things like video formats or access to physical hardware on the computer. Plugins serve the task of experimentation much better than javascript can.

</comment></comment></comment><comment><USER12> Applets were a grand idea and probably responsible for spawning other (more usable) tech in this space. Or at least showing people what was possible.

Of course they sadly ended as a staggering failure.

Epic loading times of the JVM were the practical death knell. A grand-canyon of a security hole was the deal sealer.

<comment><USER13> Engh. What I'd say really killed Java Applets was that Sun disliked Microsoft giving developers Win32 API access in their JVM (due to fears that people could then theoretically create non-portable "Java" programs) enough to sue them to prevent them from using the technology going forward, leaving the at- the-time most widely-deployed browser, Internet Explorer, forever stuck with a broken stack that was only compatible with the rapidly-limiting Java 1.1 unless the user went out of their way to install what I remember being a little-known and rather finicky package from Sun. In the mean time, Flash stepped in with a runtime that was equally supported on every then-major browser, which had a great IDE, and which was maybe even less complex to install (but certainly no more complex).

<comment><USER14> Not to mention less secure (speaking of Flash)

</comment></comment></comment><comment><USER15> So, how do you interact with connected hardwares, then? For example, the company I'm working on have a interal-only, web application that interact with smart card readers. This one of the cases where Java applet comes in handy...

<comment><USER16> havent looked it up in a while but isnt there a servlet based way to read smartcards?

regardless, using applets to deal with smartcards seems oxymoronic ;)

<comment><USER17> Because smart cards are hardware devices on the client, and nothing in HTML, CSS, or JavaScript gives you access to the client's USB ports.

<comment><USER16> i guess i wasnt clear. i meant java servlets, not js. something like: [http://stackoverflow.com/questions/24351472/getattributejava...](http://stackoverflow.com/questions/24351472/getattributejavax- servlet-request-x509certificate-not-set-spring-cxf-jetty)

<comment><USER17> For some reason actual smartcard applications seem to use proprietary applets rather than the open standards around client certs.

</comment></comment></comment></comment></comment><comment><USER18> Great news!

Off topic: Anyone else think the Oracle blog is overdue for a re-design? Its aesthetics are as outdated as Java Applets.

<comment><USER19> Oracle in general is overdue for a re-design. Outdated thinking and design is present in almost all of their products, but I understand a fair portion of that comes from legacy debt. If Oracle started to pay off that debt, then they might be able to make an about-face over the course of a decade or so, just as Microsoft has managed to do.

</comment></comment><comment><USER20> A dozen years ago the phone frequently interrupted my coding in JBuilder and I patiently explained how to install Java since our website used an applet solely for the purpose of correctly printing small PDF shipping labels on thermal printers. Those were the days. I was really happy when we finally hired a technical support person to handle the majority of the calls.

</comment><comment><USER21> SuperMicro still uses applets and Web Start to run their IPMI client. Surely there's a better way.

<comment><USER22> There are plenty of better ways, and SuperMicro could have been using them all along. Their IPMI client is a PITA that is absolutely not an argument in favor of keeping around the technologies it depends on.

<comment><USER21> Yeah, but I've only got a piddly little pseudo-enterprise grade system [1] that probably won't get any more updates. I still want to retain the _functionality_. Are the protocol extensions that SuperMicro use on top of IPMI (particularly the virtual CD-ROM) documented / supported by any other utilities. I did notice I get booted off the virtual console if I log out of the web interface - I hope the session itself isn't initiated by Java.

[1]: [http://www.supermicro.com/products/motherboard/atom/x10/a1sr...](http://www.supermicro.com/products/motherboard/atom/x10/a1srm-2558f.cfm)

<comment><USER23> It's not too much work to script downloading the webstart file, and then launching that. We did that at work because it was too to get it to run from a browser anyway. (And we run javaws in a VM because it's too hard to run java in the native environment too.. _sigh_ )

<comment><USER21> You have to authenticate to the IPMI address first, right?

<comment><USER23> Yes, the script posts the user/password to the ipmi http(s) server to get the jnlp file (which includes an embedded credential that's tied to the http(s) session)

</comment></comment></comment></comment></comment></comment><comment><USER24> The writing has been on the wall for applets for a few years, as browser developers have become actively hostile toward anything plugin-based and Oracle have shown little appetite for supporting them. However, those plugins, whether Java, Flash, Silverlight or otherwise, have served a valuable purpose for a long time and they have developed a maturity far beyond any of the trendy modern technologies that are supposedly ready to replace them.

So, I have very mixed feelings about this. On the one hand, as someone who's spent significant parts of the last decade developing UIs that included a Java applet, the experience has become horrible as it has become more and more troublesome to actually run Java code in a browser. It sucks for developers, and it sucks for users. None of us will miss that hassle.

On the other hand, except for when browser developers or Oracle have actively changed something, I've had applets doing interesting visualisations in GUIs where the code has worked fine for many years, with no changes needed other than _bona fide_ new development. Such longevity is generally desirable, but it really matters if the GUI in question is served from an embedded device where taking something out of service to update firmware is an exercise measured not in minutes but in months.

Unfortunately, browser-native alternatives such as SVG just aren't ready to replace those Java-based visualisations with the same degree of portability and longevity yet. I could write down a list of confirmed SVG bugs I've run into _just in this week_ while building a new generation of one of those systems, and it would fill half my screen. I could file some bug reports, but it turns out that sometimes people already have, and they've been dismissed with WORKSFORME despite several other people reporting similar problems. And that's just functionality that is theoretically supported, where the browsers tick all the summary boxes on sites like caniuse, before we even get into things like having at least three completely different techniques for doing animation but none that works everywhere. It's also ignoring areas where even though the technology "works", the performance is so bad when you scale things up that some browsers can't cope.

I am not looking forward to the amount of time I'm going to be wasting over the next few years working around the endless browser incompatibilities and breaking updates, where the old plugin-based code would probably have just carried on working if no-one had undermined it. They've done it with Flash giving way to HTML5 media elements. Now they're doing it with Java giving way to the likes of canvas and SVG. And yet I can't help feeling that these are backward steps for those of us whose job is to build working web sites and apps, and will continue to be until these new technologies are a lot more mature and standardised than they are today.

<comment><USER25> Longevity has a cost. It ends up with outdated support and APIs. Software lives and has to evolve. That's why now all software has CI and code coverage test to allow agile development, which was not really the case at the time of applets. IMO, it is a good thing to deprecate things (even to remove them) it forces programmers to be more agile. Some corporate should try to start thinking this way.

<comment><USER24> How is breaking useful, working software ever a good thing?

If being "more agile" means that instead of making software that still does its job several years later, I make something that needs constant attention to stay working, then I'm OK with keeping my uncool, old-fashioned ways of doing things.

</comment></comment></comment><comment><USER26> If in some way I can run transpile / natively run Java bytecode in a browser over DOM, it would be wonderful! A statically typed and no-nonsense language for my browser and HTML5 apps. Just tired of Javascript and its workarounds.

</comment><comment><USER27> I do wonder if back in the day, the JVM had access to the DOM in the same way Javascript did, what would have happened?

<comment><USER13> JavaScript, near if not at its inception, had native access to Java, and apparently at least quite good access in the other direction (though I don't have personal memory of this part). You could import packages and bridge seamlessly between the VMs using LiveConnect. The history of this is that Netscape and Sun were working closely together. That's why it got to be called JavaScript.

[https://developer.mozilla.org/en- US/docs/Archive/Web/LiveCon...](https://developer.mozilla.org/en- US/docs/Archive/Web/LiveConnect)

<comment><USER27> Java / JVM never had access to the webpage like JavaScript. You could not write a program in Java to replace your JavaScript. It was applets or nothing.

</comment></comment></comment><comment><USER28> So now game devs are forced to use JavaScript if they want to make games in the browser? That sucks.

<comment><USER29> Did anybody ever use Java applets for games? It's been a long time since I've seen a Java applet in the wild, and I can't remember any games.

<comment><USER7> Yes. My current employer though we switched new development to html years ago. Dunno why gp complained now, hopefully nobody is doing new applet development.

</comment></comment></comment><comment><USER30> It's about time, they should also get rid of Web Start support. I would imagine those 2 account for a good chunk of the security alerts/updates over the years.

<comment><USER24> People keep bashing Java for its security record. And yet, for example:

Firefox 44: 12 security fixes including 3 critical vulnerabilities

Firefox 43: 16 security fixes including 4 critical vulnerabilities

Firefox 42: 18 security fixes including 3 critical vulnerabilities

On the evidence so far, I'm not sure browsers, as they expand to try to do more of the things we used to use plugins for, will necessarily prove to be significantly safer than what we had before.

<comment><USER31> I think a lot of it is because a lot of the bugs was so easy to exploit.

</comment></comment></comment><comment><USER32> Larry, thanks a lot. I can't wait - even if the majority of websites already dropped every Java applet anyway.</comment>


Ask HN: Best way to learn async development? - <AUTHOR> I'm a relatively novice Python developer. I've dabbled in multithreading and multiprocessing, and am trying to learn more about single threaded async coding. I tend to learn by trying, and my test project is an asynchronous web scraper that doesn't block the i/o thread when parsing.
However, the combination of learning about generators, futures, callbacks, coroutines, and event loops sort of all at once is making my head swim. There are lots of moving parts, and fundamentals I just don't get, like how to run a callback function outside of an event loop, or what the hell is actually happening when I call a coroutine from another coroutine.
Can anyone share any particularly good resources on learning the fundamentals of async development, the kind of thing that explains how all these things fit together and work at a basic level? <comment><USER2> I would recommend this 22-part tutorial on async concepts:

[http://krondo.com/?p=1209](http://krondo.com/?p=1209)

It uses Python's Twisted framework. You don't need to use this for your development, but I would recommend working through and understanding the tutorial. Once you get the concepts, you'll be able to apply them to other libraries/concepts.

<comment><USER3> Very nice and clear. I really like the diagrams on the first page.

</comment></comment><comment><USER4> There is an introduction to asynchronous programming in Python 3, that uses the `asyncio` library and `aiohttp` library: [https://community.nitrous.io/tutorials/asynchronous- programm...](https://community.nitrous.io/tutorials/asynchronous-programming- with-python-3)</comment>


Conquering convolutional neural networks for the curious and confused - <AUTHOR> https://towardsdatascience.com/wtf-is-image-classification-8e78a8235acb <comment><USER2> Thanks, but using "WTF" in a title is unprofessional. If you wouldn't include it in the title of a research publication, you probably shouldn't include it in a TDS article either. After all this isn't your personal blog that you've published it on. I'm writing on behalf of the hundreds of users in my community who follow TDS articles; they expect decorum.

I have seen this in a prior article from you too where you used &%$*# in the title. The same logic applies. You say you "want to help", so please do. I am not a prude. I use swear words too, but only when no one else is listening.

Thanks, BTW, to the person who edited the title for us on HN.

<comment><USER3> I swear a lot irl but I agree the title is not really appealing. Using wtf does not add anything useful over using just what.</comment></comment>


Every "Angular 2 vs. React" article out there - <AUTHOR> https://medium.com/@urigo/every-angular-2-vs-react-article-out-there-cfd4f557be9b#.9v1mtehak <comment><USER2> Sorry, but the very first comment in every single React vs Angular article is always: "React is _not_ full MVC, it is just the View, wheras Angular is MVC so you should not even compare the two."

And then they compare the two.

<comment><USER3> React isn't full MVC but there is a whole ecosystem out there tailored around it and it winds up being full MVC in practice - but you have to do the legwork of figuring out what to add in and how to glue it together.

I've said this before - my personal view on this is that if you would descirbe your self as a JS developer you will probably like React more, and if you're coming from a .NET/Java background Angular will be much more familiar.

Having used both and having experience with both functional/dynamic programming with Clojure and enterprise/OOP/static programming with WPF/Silverlight - I prefer Angular - I think the tooling and approach it leverages fall in to a category that's prooven to scale with "enterprise grade" developers.

I like the simplicity and purity of React architecture - using React wrappers in ClojureScript like Reagent is very "satisfying" \- the entire language/platform just "fits together" from immutable state management being the core of the language to sexpression DSL being a natural thing for lisp. I very much dislike their implementation and tooling like JSX and flow which has 0 community adoption compared to TS. I feel like their design is heavily influenced by the problems of Facebook - for eg. shoehorning this kind of things on to plain old JS is an ugly mess for the sake of being easy to introduce in to existing code - crucial for a huge project like say FB - completely irrelevant to a new project.

And the fact that you have to merge so much different libraries in the hell that is JS ecosystem of build tools, duplicated libraries, constantly obsolete tech, etc. ads a ton of overhead with very low practical value.

If I needed to migrate an existing JS project to a new framework gradually I would not even consider Angular 2, but if starting a new project it would be my go-to choice.

<comment><USER4> >I think the tooling and approach it leverages fall in to a category that's prooven to scale with "enterprise grade" developers.

I think react is proven to scale too and it's being used by a lot more large companies than Angular 2.

Just a few months ago I tried to do the hello world tutorial on the angular 2 web site. I tried to do the javascript version and I couldn't get it to work. I then tried the type script version, still no luck. It wasn't until a while later when I tried again and they had updated the tutorial that I was even able to get hello world to run.

I've programmed some large web apps in angular 1 and while I never fully understood the depths of angular 1 I was still able to leverage the parts of Angular I needed to build fully functional apps.

Now coming from Angular 1 I feel like I'm in a somewhat new world. Then I tried react. It was simple, it didn't require me to completely re-learn everything I know about web dev. I wish I had tried react sooner. If it's good enough for facebook and the hundreds of other big websites that use it, then it's good enough for me.

<comment><USER3> I put "enterprise grade" in quotes on purpose. React stack (not React alone) being used successfully by a 9-5 Java or C# shop is not something I'd be willing to bet on.

Sure it's simple as far as hello world apps go, but once you start adding state management, routing, etc. you start seeing that it diverges from conventional architecture approaches. Not saying that's necessarily bad but it does not mesh well with enterprise development - I hope you understand what I mean by this.

And tools that help ensure consistency/quality in that kind of environment like TypeScript are very unsatisfying with React and various libraries, for eg. look how tedious Immutable.js typed records are, and check out typings for Redux related libs - bunch of any typed parameters and return values. Flux basically has no support outside of React and it wouldn't even run on Windows last time I checked.

So like I said - it depends on the context - if we're talking a bunch of JS frontend devs I'd say go for React if it fits what you're trying to do. If you're a .NET/Java shop Angular 2 is probably going to be a better fit, patterns like DI, OOP, etc. are all at the core and it's a full stack framework you just pick up and follow it's conventions/best practices/design decisions - way less decisions than React and way better docs (for the stuff not included in React I mean, React documentation is decent).

<comment><USER5> Enterprise? Beam me up, Scottie, there's no intelligent life here :-)

I have a pretty good idea of the -- "just following orders", OOP-factory strongly typed except for all the XML and annotations, never heard of FP, idempotent, immutable, nor higher order functions, etc -- kind of developer that "Enterprise" probably implies.

(I understand these people know ways to get some stuff done, and just want to go home, but holy cow it gives me a bad case of "COBOL fingers" and/or eye- strain working on those code bases -- spend some time to learn how to shorten things up, please)

<comment><USER3> That's not fair :) But it's true a lot of people just don't give a shit and will spend more effort avoiding learning than it would take to learn something so you're forced to cater to lowest common denominator.

</comment></comment></comment></comment></comment></comment><comment><USER6> You forgot to say how blatantly superior web code from (Google/Facebook) is to (Facebook/Google). Because of some irrelevant metric!

</comment><comment><USER7> After reading I think the author is probably tired of all articles with clickbait title about these two frontend frameworks where readers may find a lot of marketing gibberish.

Frankly, I must admit he is right. Since React is on the top of the "requirements of the modern JS Developer" [1] the popularity of such articles are really high and mostly there are the same repetitive informations. However I really miss a Ember.js as example of successful story. Is it a a badly designed framework? Or just there isn't any huge company behind it? Personally, I would say it is powerful framework with modern features like server-side rendering (fastboot), ES6-compliant, scaffold-friendly where Flux architecture can be applied [2].

[1]: Based on StackOverflow Jobs (number of occurrences: react: 140, angular2: 1, angular: 220, ember: 38, elm: 3, jquery: 147), LinkedIn, RemoteOk offers for frontend developers.

[2]: [https://emberway.io/ember-js-goodbye-mvc- part-1-21777ecfd708](https://emberway.io/ember-js-goodbye-mvc- part-1-21777ecfd708)

<comment><USER8> > However I really miss a Ember.js as example of successful story. >Is it a a > badly designed framework? Or just there isn't any huge company behind it?

Ember has both. It is not mentioned the purpose of those articles is advertisements, not enlightenment.

</comment></comment><comment><USER9> Angular 2 vs React? Pff.. Haven't you heard, now the cool kids are going with Elm nowadays.

</comment><comment><USER8> >Lots of outdated information about old versions of the frameworks.

I completely disagree. They always have very few and vague info which somehow does not change with time. you know like, angular is slow but has lots of tutorials. etc

</comment><comment><USER10> If people spent as much time building as they do making sure they're using the "hottest" new frameworks, we'd have a lot of cool shit.

<comment><USER11> What if what they're building is a hot new framework? Does that still count as "cool shit"?

<comment><USER12> I would categorize it as "hot shit".

<comment><USER13> Goes well with your name :)

</comment></comment></comment></comment><comment><USER14> something something..."Lot's of magic going on here" something something.

<comment><USER5> So, you'll be our "defense against the dark arts" teacher this year? :-)

</comment></comment><comment><USER15> Might as well jump in here. I started with Angular 1 and am slowly migrating into React while having looked at and played around with a lot of Angular 2's beta releases. And when I say React I guess what I really mean is (React + ReactDOM + Babel/JSX + Webpack + ES6 + Redux) My point being there is a lot of tooling and setup and config you need to do before truly getting into building something great or efficient with it. It seems Angular 2 is going this route as well and they also throw in their special Angular ways of doing things. Their documentation is good but the product right now seems a bit rushed to compete with React and is sort of this weird middle-ground between the ease of use that Angular 1 was and the dependencies/component break-up mess with React. I went into React with a bunch of comments saying it's "simple" and just the view and everything we've heard of already. Well React is "simple" in the way that Arch Linux is the simplest Linux distro. And building the "just the view" part somehow takes two or three times longer than it should compared to building out the entire application using a full MVC or whatever pattern you want (Granted this probably has to do with the complete architectural design pattern shift more than anything else). With React you're encouraged to adopt a sort of top-most level state management with Redux when designing it but I suppose you don't have to do it that way. Maybe it's just the functional reactive programming side of it that makes it so difficult to grasp at first. I'm still sticking with it. I've spent a good chunk of time on it so far and need to adopt it for a large-scale application and with React it does seem like there's going to be a lot of work initially in the design + component breakdown/layout phase before getting into the actual building but I'm just hoping it pays off in the end. I'm keeping an eye on Angular 2 to see how it matures but it does feel a bit limited in scope in a similar way that Angular 1 did in that you have to do things the Angular way and just hope you run into someone who has the same problem or uploaded their sample code for you to look at and adopt into your project or use one of the many popular UIs and addons etc. React has a bunch of those too and it's probably more difficult to find a good component since there's just so many of them out there at this point, but the main takeaway from React is that it's pretty much pure Javascript and you sort of build from scratch there. It's getting pretty frustrating now trying to look up guides or tutorials for React since it's likely to be outdated if they're not using Webpack or ECMA2015 or even ReactDOM since they separated it in version 14 or something so all guides/tutorials prior to around November or December 2015 is pretty much outdated and you're not getting best practices or approaches there. There is no "Angular way" around here it's just a lot of Javascript everywhere. Sorry for the large block of text.

<comment><USER8> I wish there was an edit button, like SO, on HackerNews.

</comment></comment><comment><USER16> I wonder if the answer is "neither".

<comment><USER17> Vanilla.js is the next big thing.

</comment></comment><comment><USER18> If you'd like to spend a lot of time and maybe money (project budget) choose React.</comment>


The Domain Name Game - <AUTHOR> http://pitchandpixel.com/2011/02/the-domain-name-game/

<comment><USER2> mmmm domain game :-)

</comment><comment><USER3> I love this game :)</comment>


Coined: The Story of Cryptocurrency - <AUTHOR> https://www.kickstarter.com/projects/chrishiggins/coined-the-story-of-cryptocurrency

<comment><USER2> Why on earth would someone try to kickstart something like this on a platform which doesn't accept bitcoins?

<comment><USER3> "Do you take Bitcoin or Dogecoin?

Not through Kickstarter & Amazon Payments (which does the monetary side of Kickstarter). That's just how it is in 2014, funding a film with the platform available to us. If you check out our website ([http://coinedmovie.com](http://coinedmovie.com)), we can be tipped using cryptocurrencies, but those are not Kickstarter pledges, and thus they do not give you Kickstarter rewards. We are fully committed to the Kickstarter platform and process, and that means pledging using fiat currency. Honestly, we'd love to see Kickstarter begin accepting cryptocurrency as a payment method, so maybe you can help us demonstrate that there's a need for that."

Presumably because the few cryptocurrency crowdsourcing websites have way too few users to raise the $72,000 they want. Also, I imagine there are plenty of people who don't have bitcoins but might still be interested in this movie. Maybe they want to see a documentary like this before they decide whether to take the plunge.

<comment><USER2> Ok, I had not seen this.</comment></comment></comment>