Why Our Postwar "Long Peace" Is Fragile (2018) - <AUTHOR> http://nautil.us/blog/why-our-postwar-long-peace-is-fragile <comment><USER2> I'm more optimistic. WWII was the last attempt to capture the wealth of developed nations by invading them. These days such a strategy is a complete non-starter because no developed nation can withstand an invasion.

Think of it like this: Silicon Valley is probably one of the richest bits of America. So imagine that some dictator decides to invade it, and that the US military try to stop him but fail in some improbable way. So this dictator now controls a bunch of ruins with no electricity containing broken computers. His troops are herding the geeks who used to program those computers into internment camps. How does this make him any richer than he was before?

If you conquer a third-world country then you can exploit its raw resources: a semi-literate population, farmland on which they can grow food, and maybe minerals they can dig out of the ground. That was essentially the thinking behind the Heartland Theory (see link). But it just won't work any more. These days the real wealth comes from brainpower, but you can't capture that wealth by pointing a gun at someone.

[https://www.worldatlas.com/articles/what-is-the-heartland- th...](https://www.worldatlas.com/articles/what-is-the-heartland-theory.html)

<comment><USER3> > These days the real wealth comes from brainpower, but you can't capture that > wealth by pointing a gun at someone.

You should rethink your assumptions. Yes, a lot of the new wealth is created by technology, but ask any oil company if they would give up their oil fields, or to mining companies, agro companies, etc. In the US the biggest example is the Koch family that made a fortune by controlling land and natural resources -- the same theme repeating itself over undeveloped countries.

<comment><USER4> You can't run any major resource operation without smart people. Unless you want to do it with shovels, you need smart people to set up the machinery and keep it running. You need trade agreements so you can actually get that machinery shipped in.

<comment><USER5> If history has shown anything, then that smart people wont refuse to work under such a system. There is always someone who is willing to do the job and more importantly, as soon as the system is established, rewards for good work will drive the gross of smart people to work. After all they have to feed their families, too.

</comment></comment></comment></comment><comment><USER6> The findings in this article seem to contradict findings from other reputable sources, e.g.:

* [https://ourworldindata.org/war-and-peace#the-share-of-battle...](https://ourworldindata.org/war-and-peace#the-share-of-battle-deaths-is-declining-even-faster)

* [https://ourworldindata.org/war-and-peace#war-and-peace-after...](https://ourworldindata.org/war-and-peace#war-and-peace-after-1945)

* [https://ourworldindata.org/war-and-peace#counting-world-conf...](https://ourworldindata.org/war-and-peace#counting-world-conflict-deaths-why-do-sources-differ)

* [https://ourworldindata.org/uploads/2013/08/ourworldindata_pe...](https://ourworldindata.org/uploads/2013/08/ourworldindata_percentage-of-years-in-which-the-great-powers-fought-one-another-1500%E2%80%932000.png)

Also:

* [https://stevenpinker.com/files/pinker/files/has_the_decline_...](https://stevenpinker.com/files/pinker/files/has_the_decline_of_violence_reversed_since_the_better_angels_of_our_nature_was_written_2017.pdf)

</comment><comment> temp-dude-87844 Interstate wars are risky to the aggressor, because they require massive production capacity and supply chains to carry out in a way that avoids and immediate and crushing loss in a counterattack. Although the significance of frontline logistics has vastly declined since the role of aerial strikes, the role of countrywide resilience has risen.

Technological advances now allow retaliatory strikes to be aimed in places other than the opponent's advancing forces: you can strike their capital, or airfields, or ports instead, and the stricken state must not immediately devolve into unrest.

It's much safer, then, to wage an indirect war, where you first destabilize the target from within. Various adversaries around the globe can play this long game of instigating civil wars in the target state, or proxy wars in a third state, while they keep their homelands relatively conflict-free. The destructive potential of long-range weaponry can be credited with this "innovation".

Desperation and delusion are still big factors. It's easy to imagine some very populous countries that are resource-poor first devolve into a civil war in a struggle for resources, then be united under a strong leader who redirects their aggression towards an unfortunate neighbor. Lots of historical wars have fit this category. Then there's countries who fight repeated skirmishes over underutilized parcels of land whose realized value is largely theoretical. These countries may not wish to descend into full mobilization against each other, but they're a reliable source of combat deaths year after year.

Today, global trade works fairly well for many states, and the elites who capture most of this value have a vested interest in this arrangement to continue. But if there are no bread and no circuses, the discontent and despondent population will struggle among themselves along make-believe ideological lines, or conveniently preexisting tribal lines, that just mask the underlying economic causes, until some rise to the top. All the while, they'll make tempting beneficiaries of aid from states that want to peddle their influence without putting their own people at direct risk.

</comment><comment><USER7> Am I wrong to think this is wildly euro-centric?

There has been a long peace between developed "western" economies. But the world as a whole since 1945 has continued to be full of violent conflict.

<comment><USER8> It is a useful habit before making an assertion to google and see if there are statistics to be had.

War deaths are down globally, not just in Europe. The middle easy in a recent exception, as they had an uptick starting in the 2010s.

[https://ourworldindata.org/war-and-peace](https://ourworldindata.org/war-and- peace)

<comment><USER9> The middle easy in a recent exception? You lost me.

<comment><USER10> It's probably a typo: "The Middle East is...".

<comment><USER8> Indeed, that's what I meant. The perils of turning off autocorrect.

</comment></comment></comment></comment></comment><comment><USER11> This is remarkably long on time-series statistics ungrounded in underlying causes. Take with a heap of salt.

</comment><comment><USER12> I think it's important to keep in mind the current capabilities of nations to conduct war. A modern war requires preparation. You need advanced equipment and the doctrine to use it, along with well-trained officers. And if you want to fight a war on foreign soil, you will need the infrastructure and logistics to supply your forces. All those things don't pop up overnight.

The fact is that the US/NATO forces are one of the only military force capable of conducting an extended invasion and occupation of another country today. China has a strong military and navy, but it is largely positioned for limited operations in the South China Sea. Which isn't a knock on the Chinese military, it's intentionally how they have positioned themselves.

In short, I think it's unlikely we will see another total war scenario in the current political climate. The only war I could see that unfolding is US/NATO forces attacking a peer or a close ally of a peer (like North Korea), and the US and Europe are so reticent of conducting an all-out war I don't think that will happen.

<comment><USER13> By "US-NATO" you ought to say "US". NATO is underneath its commitments to properly mobilize in the case of invasion. Take Germany for instance:

[https://www.dw.com/en/germanys-lack-of-military-readiness- dr...](https://www.dw.com/en/germanys-lack-of-military-readiness-dramatic- says-bundeswehr-commissioner/a-42663215)

</comment></comment><comment><USER14> Nassim Taleb authored a paper arguing essentially the same thing, only he corrected for population size:

[https://www.fooledbyrandomness.com/pinker.pdf](https://www.fooledbyrandomness.com/pinker.pdf)

</comment><comment><USER15> Related, and highly recommended to watch, both The Fallen of WW2 (the end is about peace) and The Shadow Peace: [http://www.fallen.io](http://www.fallen.io)

</comment><comment><USER16> We are still at war. Just look at the wikipedia list of ongoing wars. They are just in parts of the world we "don't care about" except for their resources. Wars have always been about resources and we still have those wars.

We just choose to ignore those wars because they aren't killing our friends and families. We want our cellphones though, so most of the wars are in Africa. We want our oil so these wars are in the middle east.

USA, China, Russia et al continue to murder millions for their resources.

We are not at peace. That is an illusion.

</comment><comment><USER17> Shower thought: We are all descendants of people who were good at killing.

Have there ever been subsequent generations that were removed from any violent conflict, in any other time in human history?

<comment><USER18> Most of us are probably descendants of people who were good at farming, and surviving the occasional war, famine or natural disaster.

<comment><USER17> Why farm when you make someone weaker farm for you?

And surviving wars (which have been more frequent than occasional), famines and disasters is generally easier for those who are good at killing.

You can't just hide without any weapons and hope marauders don't loot you.

</comment></comment></comment><comment><USER19> There is an article on freakonomics[1] from 2017 analyzing the Wikipedia entries to see how many of the US's years of history the country has been at war.

Regardless of whether you want to agree or disagree. The wikipedia article[2] is pretty accurate on the active/inactive wars. So yes, whoever said this is pretty Euro/Westerncentric is right.

[1] [https://freakonometrics.hypotheses.org/50473](https://freakonometrics.hypotheses.org/50473)

[2] [https://en.wikipedia.org/wiki/List_of_wars_involving_the_Uni...](https://en.wikipedia.org/wiki/List_of_wars_involving_the_United_States)

</comment><comment><USER20> gabage article IMHO.

someone who analyzed 200 years of data is criticizing people who analyzed 50 years of data before. and both think they can extrapolate to events that are assumed to cycle every 900-11,000 years!

all sumarized by a writer who uses star war analogies.

spare your time. don't bother reading this. Go read Foucault instead if you care for this topic.

</comment><comment><USER21> Keep in mind Europe had almost 100 years of peace before WW1; the war to end all wars.

<comment><USER22> It's like the franco-prussian war and German unification just didn't happen!

Have you ever asked yourself why France was _so_ willing to fight Germany?

<comment><USER21> None of those came close to the scale of the Napoleonic wars. Nor did they involve many nations.

<comment><USER23> As far as I can find, the military casualties of the (decade-long) Napoleonic wars were around 3 million.

The Crimean war caused close to 1 million casualties in 3 years.

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

The war involved Second French Empire, British Empire, Russian Empire and the Ottoman Empire.

Perhaps there are other examples of major wars, but this one seems significant.

EDIT: Outside of Europe, consider the Taiping Rebellion, with the highest deaths estimates at 30 million (or even higher!). The British and French got involved as well.

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

</comment></comment></comment></comment><comment><USER24> A quote from a letter from Chairman Khrushchev to President Kennedy during the Cuban missile crisis.

 _I see, Mr. President, that you too are not devoid of a sense of anxiety for the fate of the world understanding, and of what war entails. What would a war give you? You are threatening us with war. But you well know that the very least which you would receive in reply would be that you would experience the same consequences as those which you sent us. And that must be clear to us, people invested with authority, trust, and responsibility. We must not succumb to intoxication and petty passions, regardless of whether elections are impending in this or that country, or not impending. These are all transient things, but if indeed war should break out, then it would not be in our power to stop it, for such is the logic of war. I have participated in two wars and know that war ends when it has rolled through cities and villages, everywhere sowing death and destruction._

I worry that the current nationalist trend that seems to be simultaneously happening in many countries is going to lead down the long path to war. I don't see many leaders today that I think would have the diplomatic resolve to write a letter like this. I feel people are interpreting others actions in the least charitable way which causes all kinds of rifts. The deeper these rifts grow, the more likely we are to see someone ignite the spark of war. I honestly don't know the reasons, or if maybe its just my perception that has changed as I've gotten older.

<comment><USER25> Both Krushchev and Kennedy had gone through World War II. They had _seen_ what war is. It wasn't just stuff in a history book to them. That's why Krushchev could write such a letter, and why Kennedy could understand it as more than just an academic statement.

<comment><USER26> Yes but the Soviets saw by far the worst of that war among the allies and Kruschev was in Stalingrad during the siege. I don't discount the possibility that Kennedy could have seen some horrors in the Pacific but Kruschev saw them visited on the civilians in his homeland. Its a whole different frame of reference.

<comment><USER27> Not to minimize the destruction that Soviet Union (and much of Eastern Europe) had experienced, but Kennedy was not that much of a stranger of the horrors of war. In addition to whatever he saw on the Pacific front (which, if you'll recall, might have included some of the most horrendous atrocities of the war), his elder brother was killed during the war, too -- just like Khruschev lost his son during the war. IIRC, it's a fact that Khruschev himself reminded him of, during their private talks in Viena: they both knew, on a personal level, the kind of toll that war levies.

The "burden" (Kennedy's words, not mine) of avoiding similar destruction was something that he carried every step of the way during the Berlin crisis and then, later, during the missile crisis. Both Kennedy and Khruschev, and others in their immediate circle, had this "more than academic" understanding of the tragedy of war.

(edit: FWIW, my native country was no stranger to destruction in Europe. My grand-grandfather lost a brother and several friends at Stalingrad. I'm not some patriotic 'murican trying to save face for his president :-). I do think that losing a brother qualifies as having a pretty practical understanding of what war means.)</comment></comment></comment></comment>


Bifurcan 0.1, best-in-class functional data structures on the JVM - <AUTHOR> https://github.com/lacuna/bifurcan <comment><AUTHOR> Comparisons: [https://github.com/lacuna/bifurcan/blob/master/doc/compariso...](https://github.com/lacuna/bifurcan/blob/master/doc/comparison.md)</comment>


Tell HN: Save 60% on all O'Reilly E-books - <AUTHOR>

Use the code DDF2H. Today only, as far as I know.<p>Hopefully this is not too spammy, but I figured that others might like to know about the deal. <comment><USER2> Actually mildly annoyed, since I got in on the pragprog 40% off deal for black friday, and now many of their titles are available here for 60% off today.

</comment><comment><USER3> On the topic of eBooks, why on earth is the iBooks Store so useless? The selection seems to be tiny and the only way to browse is through very broad categories like 'non-fiction.' it's like Apple out it up there just for show and don't seriously care about it.

</comment><comment><USER4> Here's the full list:

<http://oreilly.com/store/ebooks-complete.html>

Any recomendations?

<comment><USER5> _JavaScript: the good parts_

</comment></comment><comment><USER6> Oh why don't they have the latest edition of JS The Definitive Guide on sale?? Beware: don't buy the old edition which is on sale (it's four years old). The 6th edition is available for $25 for both online access and pdf version, so I just bought that - <http://my.safaribooksonline.com/9781449393854>.

</comment><comment><USER7> What's the source of this code? Using an unsourced coupon code is is in the least ethically troubling - how do I know it wasn't intended to be private?

More practically, how do I know I'm /allowed/ to use it, and O'Reilly won't be within their rights to bill me the full amount later when they work out what's going on?

<comment><USER8> It's on their homepage. <http://oreilly.com/>

<comment><USER7> Ah. I take back any insinuations I made on anyone's ethics then!

A link to the page in the summary would have been a good thing to have though.

<comment><USER9> Once you've bought something, and assuming you don't opt out, O'Reilly email details of these offers to you - that's possibly where the OP heard about it. They seem always to be generally available via the home page.

</comment></comment></comment></comment><comment><USER10> I just bought "Building iPhone Apps with HTML, CSS, and JavaScript", went to the the download page, and found out that it is available online for free: <http://ofps.oreilly.com/titles/9780596805784/index.html>

WTF, O'Reilly?

<comment><USER11> Yell at the writer for licensing it _Creative Commons._

I'd consider it tribute for putting a worthwhile book into the world as such.

</comment></comment><comment><USER12> Anyone know if the RESTful Web Services book is any good, or know of a good resource? <http://oreilly.com/catalog/9780596801687/>

<comment><USER13> Yes, it's very instructive. It's written in the typical terse cookbook style. Read the Amazon reviews, they nail it pretty well.

[http://www.amazon.com/RESTful-Web-Services-Cookbook- Scalabil...](http://www.amazon.com/RESTful-Web-Services-Cookbook- Scalability/product-reviews/0596801688/)

I preferred it to _RESTful Web Services_ , which is rather long winded.

</comment></comment><comment><USER12> "We're sorry, but your promotional code was invalid."

no joy for me.

Edit: works for ebooks only for me, not for printed versions. I'm outside the US, so that may be a factor?

<comment><USER4> Just bought one and it worked just fine.

edit: it explicitely says it's only for e-books and videos.

</comment></comment><comment><USER14> The coupon is good for there video titles too (according to there homepage).</comment>


Another example of why you shouldn't roll-your-own crypto - <AUTHOR> http://cybergibbons.com/security-2/csl-dualcom-cs2300-signalling-unit-vulnerabilities/ <comment><USER2> Wow, that's kind of shocking. I mean, I know pretty much nothing about security, and even I could tell that coding your own 'crypto' based on a formula cracked about 200 years ago is a bad idea. Let alone the whole 'no way to update the software except by manually upgrading it with an installer' thing.

But honestly, I'd say this the least of anyone's concerns with this company. The linked article also mentions some other security issues in their work when discussing a lack of security 'culture', and one of the most terrifying ones is this:

[http://cybergibbons.com/security-2/terrible-website- security...](http://cybergibbons.com/security-2/terrible-website-security-on- www-apprentices4fs-com/)

They don't seem to hash passwords, they send them across the internet in plain text, ban people with the equivalent of setting a cookie on the PC and then sell software as 'secure'. That's kind of terrifying.</comment>


Show HN: RepoCreator – GitHub Project Scaffolding as a Service - <AUTHOR> https://repocreator.zoltu.io/ <comment><AUTHOR> I will try to monitor this news article and am happy to answer any questions anyone has.

Please also feel free to use the feedback button on the page to report a bug or request a feature. I developed this application mostly in a vacuum to fulfill my own needs, so I'm sure I missed some basic features that are likely obvious to other people.

</comment><comment><USER2> Does this tool only replace the magic string from the source code or will it also replace directory names?

For example if I had a sub-folder in my project named "magic_ProjectName_magic/src" will it prompt me to change the name of the sub- folder?

<comment><AUTHOR> It will replace strings in folder names, file names and in any text file (as identified as text by GitHub).

You can see an example here: [https://github.com/Zoltu/Templates.GradlePlugin.Groovy/tree/...](https://github.com/Zoltu/Templates.GradlePlugin.Groovy/tree/master/src/main/groovy/magic_group_name_magic)

In that case, both the folder name and the file name have magic strings in them, so both will have a replacement prompt.

</comment></comment><comment><USER3> The site looks good. Landing page has good description about the tool.

I don't see many templates except that gradle one, do you have more or is that yet to come?

<comment><AUTHOR> I have written a handful of templates but only 3 are sponsored (which means they show up for everyone) and only one has 2 favorites (the threshold for something being considered "popular" right now).

This comment makes me realize that I should turn the "popular" threshold down to 1 favorite so more things show up for new users until the application starts getting some traffic.

Thanks for the feedback, I'll get that change pushed in a bit!

<comment><AUTHOR> I have pushed the change. Once caches are refreshed you should see ~11 template repositories without having to search GitHub.</comment></comment></comment>


Ask HN: Tips on how to drive traffic to my content? - <AUTHOR>

Hi HN!
About three weeks ago I build my first blog. I started with 0 article and 0 audience. Now I have 4 articles, 300+ followers on twitter, 200+ emails subscribers, and a lot of positive feedback in my inbox.
But I have a really hard time to make people discover my blog. How can I drive traffic to my content?
To make things worst, my website is about trading, so:
- SEO: seems impossible because too much competition from top players.
- Guest posts on blogs: really hard, since most blogs are scams.
- Social sharing: most people don't share this stuff on social networks.
Any advice? Thanks! :-) <comment><USER2> Thomas, I have a blog papablogger.org (9 months older) which is in SEO and blogging field niche.

For your situation, I have to share my experience that when i started my blog, then I also have the same thinking about SEO that there are many high competitor in my niche and it is impossible for me to fight it.

But one thing, I knew that I have to start working on SEO... Otherwise, I was never going to start and i never experienced the power of SEO. SEO does not mean that only authority sites get a best position for a particular keyword. SEO means that a relevant and worthy content deserves the first position in Google SERPs.

So, I started my blog with an article of "Best Free CDN provider for your Blog spot Blog?"

In this article, i took "Free CDN" and "best CDN" as a high competitive keywords and "Free CDN provider", "Best CDN provider" and "Free Best CDN" as a low competitive keywords.

And when i published my article in the web, then i got an astonishing result for all my keywords. I got the 1-5 positions for all my keywords.

So, the moral of this story is that Google is working for users... Not for Authority sites.

Just make your site SEO friendly and see the results.

</comment><comment><USER3> What's the link to your blog?

Even if your blog is 3 weeks old, it generally takes a few months for a domain name to gain reputation. Organic SEO (self-discovery via search terms) requires quality and quantity - you might have the quality right considering you got so much traffic already, but 4 articles is still a long way from 'quantity'.

The trick is to consistently create good quality content for a long period of time (ex. once a week/forever).

What's your motivation for the blog? Hobby? Interest? Work related?

<comment><AUTHOR> Thanks for the answer!

I'm doing this as a hobby/challenge. The blog: www.21pips.com

Yes I plan to write new articles weekly, however if I don't see an increase in traffic I might not have the motivation to continue.

I'm not an expert in SEO, but it seems impossible to me to get a decent SERP (even for long tail search) in this industry. I'm competing against huge banks or websites with crazy pageranks.

</comment></comment><comment><USER4> Register at the top 5 forex forums and start contributing there. Put your website in the signature (Most forums allow this only when you have been there a while and have a large number of posts). Initially, this might just lead to a trickle of traffic, but over time the more you contribute, this will lead to a stable amount of targeted traffic.

</comment><comment><USER5> Get links from influential blogs / newssites and your ranking goes up.

The quantity doesn't count, but the quality of their sites.

Eg. there is a site that got immediatly on rank #1, why? A lot of respected universities (.edu) linked to it before they really launched.</comment>


Ask HN: I can't make the Lean Startup Conference – want to buy my ticket? - <AUTHOR> Hi everybody -
I was planning (and so excited!) to go to the Lean Startup Conference in San Francisco next month (http://leanstartup.co/conferences/lean-startup-conference-2015/). Unfortunately, I've developed a breathing problem that hasn't responded to any treatment, and my doctor recommended I don't go since it would require traveling :(
So, I am looking to transfer my ticket to someone who would like to go to the conference. I have a Bootstrapper pass, which gets you into all the main stuff but not any of the special stuff. I am looking to sell it for $200 (I paid $250), but am up for other offers - I just don't want to be out the full price. If you are interested, please leave a comment and we can figure out how to do the transfer.
PS - I cleared this post with the HN mods, so please don't flag! <comment><USER2> Can someone here comment on how we can take advantage of such conferences. I am a techie...so I am not great at making new friends or approaching people and talking 'business' with them.

How should we get $250 worth value out of it?

<comment><USER3> Attend the talks and learn new things. Conferences are the continuing education of most professions, they're how you keep on top of what's changed since you finished school and went into practice however long ago. You don't have to go for the networking aspect.

[http://leanstartup.co/conferences/lean-startup- conference-20...](http://leanstartup.co/conferences/lean-startup- conference-2015/2015-program-overview/)</comment></comment>


Pipethis - <AUTHOR> https://github.com/ellotheth/pipethis <comment><USER2> Author here, happy to answer any questions.</comment>


Xkcd substitutions - <AUTHOR> https://chrome.google.com/webstore/detail/xkcd-substitutions/jkgogmboalmaijfgfhfepckdgjeopfhk

<comment><USER2> The comments in the Chrome Web Store are hilarious: "Phenomenal! I installed it, removed it from my control bar, forgot it was running, and started editing wikipedia articles to remove references to Pokemon and pokedexes from articles, but they kept reappearing. FANTASTIC!"

</comment><comment><USER3> I implemented several of those with a generic regex-replace plugin. I didn't write the regex properly, though, so replacing "election" for "eating contest" meant that "selection" is now "seating contest", which is not a thing but it should be.

A couple extra replacements: "Senator" works better as "Sith Lord", and "the NSA" as "Glorious Leader" ("those jerks" works fine most of the time, too).

</comment><comment><USER4> I've also created such an extension a while ago, however, it allows you to create your own replacements: [https://chrome.google.com/webstore/detail/regexr/ienlimaajnl...](https://chrome.google.com/webstore/detail/regexr/ienlimaajnldhnffnjmoljnhompleloh)

</comment><comment><USER5> [https://imgur.com/ZGi6NzX](https://imgur.com/ZGi6NzX) Perfect</comment>


Consciousness Is Not Mysterious - <AUTHOR> http://www.theatlantic.com/science/archive/2016/01/consciousness-color-brain/423522/?single_page=true <comment><USER2> Don't waste your time. This article is deeply confused. Even if consciousness is just a brain-created illusion, who is experiencing the illusion? That experience is what we mean by consciousness in the first place, so this explains nothing.

<comment><USER3> The argument of the article is that no one is experiencing the illusion. The entirety of the experience _is_ the illusion itself.

Essentially: consciousness does not exist. We only think it does because the thing we think with is wrong. But because we think with it, we can't tell the difference. So asking "who is experiencing the illusion" is begging the question.

Look at it this way: what evidence can you use to distinguish between an object that is actually conscious, and an object that is merely faking consciousness? This is commonly known as the Chinese Room problem.

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

But whereas the Chinese Room has been used to argue that computers can never be fully conscious, this article reverses the equivalence: maybe the Chinese Room proves that _nothing_ is fully conscious, and it is our concept of consciousness that is mistaken, not the rest of the observable world.

This is conceptually similar to the mental leap behind General Relativity: since we can't find any way to distinguish between gravitational and inertial acceleration, maybe they are in fact physically equivalent and indistinguishable--then build the theory from there.

Starting with the concept that all consciousness is an illusion allows us to side-step a lot metaphysical conversation and just try to figure out the mechanics of the illusion--how it works, not whether it exists.

<comment><USER4> An actual Chinese Room would be unimaginably vast - whole planets, solar systems, devoted to the knowledge we hold implicitly.

To illustrate - imagine you give the room (in Chinese) the text of Lord of the Rings, and then ask it which member of the fellowship corresponds to the "Wise Old Man" archetype. Any reasonably smart human will give the answer, "Gandalf". But the room would need to (in Chinese) make systematic notes of the characters, their relationships, their actions, and then somehow integrate all this into a categorisation under the appropriate archetype.

I'm actually agnostic as to the question of whether such a room could be built -- as I'm agnostic towards the possibility of AI -- but assuming the room would not be inconceivably complex masks the complexity of the ordinary workings of human consciousness.

\---

      Essentially: consciousness does not exist. We only think it does because the thing we think with is wrong. But because we think with it, we can't tell the difference. So asking "who is experiencing the illusion" is begging the question.

As for your essential point, I hold that words like "think", "experience", "illusion" all rest on the more fundamental concept of "consciousness".

<comment><USER3> What if the Chinese Room already exists, and we call it a brain? It's the most complex object we know of in the universe and it collects and processes input for decades. That's a pretty vast amount of stored information from which to produce an answer to your question.

We wouldn't expect a 3-year-old to provide the correct answer, but we would expect a 30-year-old. This is a big hint that the brain does in fact collect and store information for later use. This would be analogous to filling in the books in the Chinese Room. If there hasn't been enough time for all the books to get filled in, we won't expect the room to give correct answers.

In addition, if someone has never heard of Lord of the Rings, we would not expect to get a correct answer either. That page of that book in the Room would be blank.

As for which concepts rest on which, we have to be careful, when discussing consciousness, not to mistake grammar for reality. There is no way in English to express the concept of an illusory "I" in the first person. That doesn't mean it is an impossible concept.

<comment><USER4> Whether the mind is equivalent to the brain is an open question. If someone built an artificial mind, that would massively raise my belief in the possibility that the mind is purely physical. But I hold that this is vastly more difficult than assumed.

My point with the Lord of the Rings was precisely that you give the books to a person who hasn't read them, and give them a few weeks to work through them. A Chinese Room would take vastly longer to "process" the book and it's "understanding" (represented symbolically) would take up vastly more room than the book itself. Even to understand simple word problems (to do with arranging blocks, for example), the algorithm used by the Room would have to explicitly encode our implicit knowledge of spatial relationships, and be able to apply this knowledge to arbitrary problems. To understand literature at a human level, the algorithm would have to encode standard knowledge of human psychology, society, physics, etc.

In principle this could all be performed with a giant lookup table -- but such a table would be the size of several solar systems' worth of matter. So I don't hold that a Chinese Room is impossible in principle, but I do hold that building a practical AI would require great advances in the understanding of our own consciousness.</comment></comment></comment></comment></comment>


The Steve Jobs Premium - <AUTHOR> http://blogs.zdnet.com/BTL/?p=9218

<comment> daniel-cussen Owning an Apple hurts when it comes to hidden costs, that's for sure. I remember a laptop charger cost $200, and seeing that the cheapest item Apple sells is a $20 cable that is pretty generic.

But then, that's planet Apple for you. There's some vendor lock-in, but apart from that, it's ultimately a matter of Steve Jobs owning a monopoly on Steve Jobs.

</comment><comment><USER2> Umm... RCA -> 1/8th inch jack. Picked one up at Radioshack yesterday for 7 dollars. Not that tough.

What happened to a little spitshine and Google use?

<comment><USER3> Isn't that the y cable he mentioned? I assume he just bought a bad one.

</comment></comment><comment><USER3> There are no Apple fanboys in the tech media.</comment>


Show HN: we built a blog platform in Meteor - <AUTHOR> http://blog.percolatestudio.com/2013/2/28/introducing-ground-control

<comment><USER2> I'm honestly not trying to be dismissive, but why?

I would think that meteor is a terrible choice for a blogging engine. Perhaps for the admin tools it would be great, but a blog's main purpose is to disseminate static content. A technology that generate standard HTML is much more suited to the task rather than dynamically constructing the content with Javascript and data.

Also, can google crawl a site made with Meteor? Would this blogging engine be terrible from an SEO point of view?

Meteor looks pretty cool and the possibilities of creating amazingly dynamic web apps is exciting, but a blog is not very dynamic so it doesn't make much sense to me.

Right tool for the right job and all that.

<comment><USER3> Meteor does have plugins to make your site SEO friendly. I would assume that they would work with Ground Control as well.

</comment></comment><comment><USER4> sorry for being cynical ... but , should i be impressed? Blog systems/ CMS are dime a dozen. Can you explain why should I or anyone in fact pay attention to this platform?

<comment><USER5> the key here is Meteor; sure you can go with Jekyll and a bunch others for Rails and Node, for instance, but there is no blogging platform with momentum for folks who want to customize using their Meteor expertise. Granted it's still a young platform, but it's always good to see early, pioneering efforts like these.</comment></comment>


An emergency landing system that small aircraft passengers can activate - <AUTHOR> https://www.economist.com/science-and-technology/2019/11/30/an-emergency-landing-system-that-passengers-can-activate <comment><USER2> At this point I think it is fair to say that pilots are only kept around for passenger comfort. Automated aircraft have been in the skies since the 1940s and as computers became more powerful we have reached a level in which flying without computer aides is not only difficult, but literally impossible for a many new models (aircraft as far back as the F-16 in the '80s are impossible to fly straight by hand).

Given the strict and well defined procedures regarding commercial air travel, I see it as only a manner of time until air traffic controllers are giving commands with keyboards instead of their mouths. That is, until automated air traffic control completes the circle.

Automated air travel is, by almost all accounts, a solved problem. None of the ambiguity that plagues self driving vehicles exists in the air. Not only does the plane have basic location (INS + GPS) and attitude knowledge, but it also has access to synthetic terrain databases and live weather radar combined with hundreds of ground radar stations offering NDB and VOR/DME services, and to top it all off most commercial runways have ILS installations that can bring the airplane within inches of the centerline and perfect glideslope.

It is a bit of a shame as someone who has wanted to be a pilot for a long time. I still want to get my PPL, and I wholeheartedly believe GA will be alive for decades to come even after the Boeing drones come out, but at this point I can't see it as being a valid career option.

Change my mind?

<comment> brian-armstrong Autopilot can't deal with unexpected situations or instrumentation failures particularly well. Take the Sully landing for example - without specifically setting up parameters for that particular case, how could autopilot save all passengers on board?

<comment><USER2> Well, it is called the miracle on the Hudson for a reason. Software is only as capable as the hardware it is running on. If you pulled the brakes off a Model 3 and brake-checked it, you'd be hard pressed to find a human or Autopilot version that could solve that problem. In special cases, you might have a lane open to swerve into - like Sully did with the Hudson - but such maneuvers are rarely available. To be fair, dual engine loss on takeoff is also not really a common occurrence.

Truthfully, Sully's incident represents the peak of human ingenuity, and I concede that it will take us decades if not centuries to reach a level of automation that can match that. But an autopilot that can react appropriately to 99.999..% of cases? I think it could already exist. Certainly, if dual engine loss is on roadmap, proper software could be developed to ensure the best possible scenario. I think that it's never been a consideration for the industry because these incidents are so rare, and also because that effort is better spent in trying to build more reliable engines. An ounce of prevention is worth a pound of cure and all that.

<comment><USER3> If AI can be cheaper than human pilots, then the cost savings can easily be thrown into massive parachutes for cabins like those in smaller private planes. That, or solid state emergency landing thrusters.

</comment></comment></comment></comment><comment><USER4> Previous discussion:

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

Vendor page:

[https://www.garmin.com/en-US/autonomi/](https://www.garmin.com/en- US/autonomi/)

</comment><comment><USER5> One might think this kind of technology will become particularly important if we get to the point of having self-flying planes.

<comment><USER6> I mean, should this technology actually be very reliable in adverse conditions, it's 50% of a self-flying plane. I don't know how much auto- landing currently exists in the commercial airliner industry, but I suspect it'll be much easier to build self-flying planes than self-driving cars.

<comment><USER2> Autoland has existed in commercial airliners since the late '80s. It is really not much more than a mathematical equation given the feedback provided by ILS (which tells the airplane exactly how far off it is from the runway in both lateral and vertical directions).

However, pilots prefer to land by hand mainly because it gives them something to do (and it's fun). Additionally, not much thought was given to comfort when these autoland systems were made, and last I heard nobody recommends actually using them as they have a nasty habit of planting the plane into the runway (apparently, they're not programmed to flare before touchdown, resulting in all of the landing gear hitting the pavement at once). This is not really dangerous, but it does impact the lifespan of the landing gear and also gives the passengers quite a kick.

These problems are relatively minor and can be fixed in software, but we still have planes kicking from the '80s, so it will take a while for those changes to trickle down. Nonetheless, I am confident we can build a comfortable autoland in the present day.

</comment></comment></comment><comment><USER7> Having played many flight simulators I fantasize about landing an aircraft in a emergency situation.

</comment><comment><USER8> Previous submission/discussion (without paywall): [https://www.piper.com/press-releases/piper-announces- new-m60...](https://www.piper.com/press-releases/piper-announces- new-m600-sls/)

</comment><comment><USER9> Interesting topic but a paywalled article.</comment>


Show HN: Like The Onion, But Real - <AUTHOR> http://theon1on.com

<comment><USER2> I'm not sure the I'd go with the name "The On1on". It seems too close to trademark infringement. An alternative off the top of my head is "The Un-ion" (as in "un-" + "Onion") but it's hard to distinguish from "union" (as in "trade union"). "The Garlic", anyone?

Edit: I'd better let you judge what sounds nice.

Edit 2: Hmm. Let's try my Rebrand-O-Matic:

On1on — On-1-on — 1-on-1 — Ioni — iOni.

You can illustrate it with a sleek iPhone-like icon of an oni (a Japanese demon) holding an onion.

<http://ioni.io> is available for $50, which may or may not be too much for this project.

More seriously, though, <http://allium.org> is available for $10.69 from NameCheap. "Allium" is the Latin name of the genus to which onion and garlic belong.

<comment><USER3> Just go with The Garlic if available. Needs to be more obviously than Allium, and should be a .com to mimic The Onion.

</comment></comment><comment><AUTHOR> As a quick backstory: This is a mashup between /r/nottheonion, google image search, and The Onion's CSS. Pretty crazy what a little styling can do to the way your brain interprets information!

<comment><USER4> Um, are you seriously hotlinking to resources hosted by theonion.com? That is a terrible, terrible idea.

      <link rel="stylesheet" href="http://www.theonion.com/static/CACHE/css/2903347c3113.css" type="text/css" media="all">

<comment><USER5> Why is it a terrible idea?

<comment><AUTHOR> For the record this was an oversight in the rush to get this out ASAP -- I'm correcting it now (thanks for calling it out!)

<comment><AUTHOR> Baby steps people baby steps!

<comment><AUTHOR> Don't worry -- we're in their circles ;)

But regardless! As I mention in another place on this thread: The point of this project is the blunt comparison to The Onion -- the copying of the name, look, and feel of a well known and well recognized satirical publication is actually a vital part of the statement about our world and the media.

<comment><AUTHOR> Oh snap!

Sorry I missed the boat on letting you have fun with the CSS (I'd be glad to point it back if you would enjoy it!) But yes, this was built in a few hours and most of that time was spent playing with caching and deployment. Not so much "lazy" as "rushed." (considering this is for the lulz, I'm OK with it being called rushed.)

So yes, to be clear, this was a "lets have quick fun and make a satirical mashup" not a "lets spend a week designing a web site that looks like The Onion." Not sure where scum comes into play given that fact, but I'm sorry if the project pissed anyone off over there. In my experience different people react to détournement in different ways when they are the ones being shifted around.

As for the circles, you're right about not us being in touch with the dev teams over there.

Regarding fonts, noted; I'll wait and see if there is a formal response from The Onion on these fronts but you clearly know the first-hand vibe -- if that's upsetting people I can remove them.

As for the other media we're aware of that and will be making a move soon, THERE ARE ONLY SO MANY FINGERS ON A HAND!

<comment><USER6> I get that this was rushed, etc. But it's not like you did a soft launch to test this thing out, or that you're on some kind of deadline here. You built the site lazily and rudely (in my opinion), and then immediately began promotion of it.

Also, you state that you only spent a few hours, and that "most of that time was spent playing with caching and deployment". If you were spending time making sure that the site was cached and performant, it seems less like the hotlinking was an oversight, and more like it was something you just didn't care about.

If you would have taken another few hours, made sure that your ducks were in a row, and THEN began promoting it, you'd be in much better shape right now, and I wouldn't be commenting here.

As for the circles, if you don't know anyone on the dev team, why are you repeatedly claiming to have a tacit OK from us?

As to the fonts, I want to be clear: your current use of the fonts is infringement. We have paid to license those fonts for use on our site. You have not done this, and so you're now infringing--not against us, but against the owners of those fonts. We're not going to come after you, I'd bet that someone will (eventually).

To summarize my position again: I'm not at all a fan of how you went about doing this, but it's honestly not a huge deal—just a bit rude.

<comment><AUTHOR> Well it sounds like at this point an apology is the best I can offer, as what is done is done -- Sorry! If you or anyone on your team is ever in Boston I'll gladly buy you a beer!

<comment><USER7> You might want to at least fix the font thing. Sounds like you could get in a lot of trouble.

<comment><AUTHOR> I'll be looking into it -- if it is copyright infringement I believe this is fair use (parody, non-profit, academic, etc.). If it isn't fair use than this is actually a really interesting part of copyright law (e.g. using a premium font will make it more difficult for others to perform satire on your work).

<comment><USER7> I'm not a lawyer but I think it only would be parody if you were parodying the font itself. As the onion guys said, they had to license it.

<comment><AUTHOR> It is totally possible! Anyway, fonts have been removed in the name of being on the safe side.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Your site is bad and you should feel bad. ;)

</comment><comment><USER9> Why do the links take me to the actual onion site? Let's say I visit your site. Then I am viewing real news that looks fake (i.e. just poor and sensationalist journalism). But once I click an article at the top, I'm taken to the real onion site - with fake news that looks real. With the sites looking the same, I might not notice I've changed to the real onion...

Very confusing.

Also, as said before, hotlinking to another site's resources is not a good idea. At all.

Execution aside, I don't like the idea. The Onion provides well written fake news. The content that you're linking to is a poor excuse for news; its the low-hanging fruit of the internet. I couldn't see myself browsing this stuff. In fact, the reason I browse HN is to not have to deal with content like this.

</comment><comment><USER10> I'm not ok with this. Watch the trademark. I'm not even talking about litigation -- just not ok with people willing to trade on another company's name.

<comment><USER11> Doesn't this count as parody and thus fair use? Or does parody of parody completes the circle and the site is not a parody anymore?

<comment><USER12> He's not making a parody of the trademark. He's making a parody of their site, and representing it with their trademark. As a random visitor of the site, I could easily mistake this as the 'real onion'.

And it's also questionable whether this is a parody of 'The Onion'. It seems to be a parody of world news, branded with The Onion.

</comment></comment></comment><comment><USER13> This is such troll-fodder. I'm not even a militant atheist, and still just looking at the front page pisses me off. That and the design, which jars my brain and hurts my eyes.

<comment><USER14> It's not a high school essay. Calm yo teat.

</comment></comment><comment><USER15> The Video, Politics, Sports, Business and Entertainment links point to theonion.com. I suggest that you change this. An Onion dev already posted that he had considered screwing with your site when it was using the Onion's CSS. If they did want to screw with your site (or its visitors) it would be easy for them to redirect anyone that clicked one of those links (giving them a referer from your site) to someplace unexpected.

<comment><AUTHOR> But... that would be amazing...

<comment><USER15> The threat of changing their CSS to mess with your site reminded me of something a Web 1.0 trolling site did to people who linked to images on their site, causing an unnecessary load on their server. The images that were linked to were usually put in (a third party's) forum signatures. So the site owners would replace the original image with a copy that had a different file name, and change the image at the original uri to something obscene. This would usually lead to the bandwidth leech being banned from his forum for linking to obscene images.

</comment></comment></comment><comment><USER16> A visual nottheonion is a great idea. I suggest changing the name to something that's not going to violate their trademark.

Also, a quick way to avoid hot-linking the images is to use a service like Cloudinary, it will proxy them for you with little code change.

There's also <http://www.ruddl.com/> as a Pinterest-Reddit mashup, but they only have a few subreddits.

<comment><AUTHOR> Thanks for the feedback, and great tip on the images!

</comment></comment><comment><USER17> You should fix the top links (Video, Politics, Sports, Business, Science, Tech, Entertainment, and Breaking) so that they don't take you to the real Onion.

<comment><AUTHOR> Taking suggestions on places to link to! We've swapped out a few of them, but were waiting for inspiration to strike for the others.

<comment><USER12> Having a site that 50% links to the real onion, and otherwise is a real site branded like the Onion makes this very confusing for the user. It could be easily mistaken as the real Onion rather than being obviously a joke.

<comment><AUTHOR> Yep -- fixed ;)

</comment></comment></comment></comment><comment><USER18> You may want to rid of those sharing links:

<http://i.imgur.com/3EYKseY.jpg>

Generally those are more harm than they're worth, as nobody uses them and they annoy the user (especially since they're in the way of what I'm actually trying to read).

<comment><AUTHOR> Noted, and removed in the next push.

</comment></comment><comment><USER19> This seems childish and a little bit reactionary. Oh, I see, the content is chosen by Reddit. That makes sense.

<comment><USER3> How is it childish and reactionary? They're headlines you can imagine seeing on The Onion, but are legit; it's harmless and a touch amusing. It's just riffing off The Onion's style of presenting content.

I post on HN but don't have an account on Reddit, but I think pigeon-holing an entire community is more likely to be considered childish and reactionary. This isn't "our site vs your site" and some sort of tribal war. What about this site or its content has irritated you?

(Main parts of Reddit I do read are AskScience and AskHistorians and they are, for the most part, excellent. Anything but juvenile.)

<comment><USER20> Looks like trademark infringement to me. Come up with your own identity.

<comment><USER3> Is that "reactionary" though?

Maybe a bit unprofessional. They could easily rework this to host their own CSS/images, come up with a better name (The Garlic?) and tweak the appearance a bit.

Hardly worth the slight on another community. I expect better on HN.

<comment><USER20> What does reactionary have to do with picking a typo url and a very similar logo? If this were bankofamer1ca.com it would be assued to be phishing.

<comment><USER3> The original criticism was that it was childish and reactionary. Likening this to phishing is quite the stretch.

</comment></comment></comment></comment></comment></comment><comment><USER21> So this is this like the onion, only true? Manually curated by you or do you have some magic code to do it?

<comment><AUTHOR> Yep! real headlines -- curation is done by redditors (why re-invent something that already kicks ass)

</comment></comment><comment><USER22> The Science/Tech header tab is great.

</comment><comment><USER23> Hmm I was confused when I saw actual articles from The Onion on there, but that's because the top navigation links point to pages on The Onion.

Aside from that minor confusion, the site's purpose is absolutely hilarious and I applaud the tongue-in-cheek approach.

</comment><comment><USER24> This site reminds me of "News of the Weird":

<http://www.newsoftheweird.com/archive/index.html>

</comment><comment><USER25> This is a reasonably decent idea.

But copying the name and look and feel of an existing site in so casual a manner seems very lazy and is off-putting.

<comment><AUTHOR> The point of this project is the blunt comparison to The Onion -- it is using reality to create a parody of a parody of reality. In other words, the copying of the name, look, and feel of a well known and well recognized satirical publication is actually a vital part of the statement about our world and the media.

<comment><USER26> I think it's mindblowingly effective. The eye just _really wants_ to interpret those headlines as funny... and manages to fail, but just barely.

</comment></comment></comment><comment><USER27> Cool. It's like <http://www.fark.com/> but with a more attractive layout.

</comment><comment><USER28> Excellent! This reminds me of "Daily Rotten News".

</comment><comment><USER29> haha yes

</comment><comment><USER30> Hopefully theonion appreciates the homage, this is fairly textbook trademark infringement and they can take this domain away.

<comment><USER31> I have a feeling The Onion staff appreciates satire.</comment></comment>


Little known iTunes 10 benefit - <AUTHOR> http://www.9to5mac.com/24861/little-known-itunes-10-benefit <comment><USER2> Gee, now I feel like an idiot for buying a portable media player that just mounts as a USB drive.

<comment><USER3> Don't worry, you still can't copy music from a device back into iTunes. I mean, obviously the bits representing the music flow from the iDevice into the computer, but the computer doesn't belong to you anymore, so you don't get access to them. Silly user.

USB devices fail in that they rely on the user to make his own decisions about whether or not to copy his friend's music collection. Apple devices let some music execs representing bands I've never heard of make them for you instead.

<comment><USER4> USB mass storage players also fail nicely at being usable for most normal people. Plug it in, get an Explorer window, now what? Open another Explorer window -- reposition windows so you can see both. Navigate to your music collection. Find the first thing you want to copy -- hopefully your music folder is well organized by filename. Copy (don't move!) files. Make sure there are no incompatible filenames. FAT32 isn't very forgiving about this. When you're done make sure you safely unmount the volume by right clicking on the green arrow in your system tray (the thing by the clock). If you have multiple green arrows just try right clicking on them all until you find the right one. Now enjoy your music and start preparing to repeat the process tomorrow when you want to add a song.

<comment><USER5> I guess you've explained why usb thumb drives have failed to take the market.

</comment></comment></comment></comment><comment><USER6> Is it just me, or did this used to work before? I thought you could always play the music off someone else's iPod without being able to copy it.

<comment><USER7> It worked before, the only change is that now you don't have to set the iPod to Manual Sync. It's not a huge deal but it is much more convenient because after enabling manual sync on one computer the iPod would default to manual sync on all computers and you would have to individually reset it to sync music, movies, tv shows, podcasts, and pictures. It can get to be a pain, especially if it's somthing your doing every day.

</comment></comment><comment><USER8> I'm surprised that people who wanted this feature haven't already enabled manual-sync. Is there really some benefit in having it automatically sync your device to be worth the pain of not being able to plug it in somewhere else?

I went a step further and edited the iTunes DB file's device ids so that they are the same across all 3 of my systems. So my iPhone now recognizes each as the same system allowing me to sync my music with one of my laptops and my videos with my desktop.

<comment><USER9> The downsides which are quite irritating depending on your listening habits are:

1\. Having to manually manage all songs, which gets tiring if you constantly add new music to the library

2\. None of the listening history and ratings are synced over when connecting a manually managed device. This ties in with #1: when listening to a bunch of new albums, it's helpful to preserve the ratings to make knowing what albums and tracks to trash easier later on.

</comment></comment><comment><USER10> That's a pretty big feature change... is that a mistake or did they somehow slip that past the record labels?

<comment><AUTHOR> >"slip that past the record labels"

What does this feature has to do with that?

/curious

<comment><USER11> There's no technical reason to prevent people from getting music back off their devices. So the assumption is it was part of the DRM requirements that Steve Jobs claims the record labels forced him to accept.

</comment></comment></comment><comment><USER9> Note: most bizarrely, it doesn't let you enable shuffling when listening to music this way. Pink Floyd and Sgt. Pepper are delighted and partying but what about all the 80s one-hit wanders?

</comment><comment><USER12> Wow, I guess they listened and I need to eat my hat... Or something.

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

This is good news!

</comment><comment><USER13> Really? The feature's been in iTunes 9, and well, I'm a mac guy but #1 on HN?

<comment><USER9> No, it hasn't.</comment></comment>


Millennials are killing these industries - <AUTHOR> http://www.businessinsider.com/millennials-are-killing-list-2017-8/#casual-dining-chains-like-buffalo-wild-wings-and-applebees-1 <comment><USER2> I can't believe they still write these. These businesses aren't doing a bad job and failing, _the millenials_ are killing them!</comment>


Why learning Haskell makes you a better programmer - <AUTHOR> http://dubhrosa.blogspot.co.uk/2012/12/lessons-learning-haskell.html?m=1 <comment><USER2> This is a great article.

To me, the most powerful example is this: "It forced me to think of every such problem as a chain of the primitive list operations, maps, folds, filters and scans. Now I always think in these terms. I "see" the transformation of a container as a simple sequence of these operations. "

That's a higher level of thinking that is faster and yet at the same time more precise than thinking in terms of imperative loops.

Haskell has taught him to think more powerfully.

<comment><USER3> I recommend people study APL / J / K for the same reason: It has the right primitives that make everything expressible as maps, folds, filters, scans, ranges, and stuff like that.

Even more so than Haskell.

It doesn't have monads and the kind of abstractions that lets you modify control flow semantics. It doesn't even have the facilities to build abstract data types - which makes you work with less-abstract data, and realize that although some abstraction is useful, most of what is practiced today is useless.

APL / J / K promote, at the same time, container abstraction, and concrete down-to-the-metal real work.

<comment><USER4> I've always wanted to dive into these guys. Is there a good introduction for fluent Haskell programmers somewhere?

<comment><USER5> I haven't done anything in Haskell, but I doubt that makes much of a difference.

Maybe more inspiration than introduction, but the "Game of Life in APL" video is a must see ([http://uk.youtube.com/watch?v=a9xAKttWgP4&fmt=18](http://uk.youtube.com/watch?v=a9xAKttWgP4&fmt=18))

The description on YouTube points to a "Game of Life" tutorial at <http://tryapl.org>. I haven't tried it, but it looks nice.

For a more academic (as in "read about, don't play with") introduction, I found Iverson's "Notation as a Tool of Thought" (<http://awards.acm.org/images/awards/140/articles/9147499.pdf>) a good introduction.

</comment></comment></comment></comment><comment><USER6> > Haskell makes your functions pure by default. You have to change the type > signature if you want to do IO

The author seems to be conflating IO and side effects. IO is just one of the many ways that side effects can occur.

> Purity also means you can't read or write global variables, that's just > another type of IO.

Er... what? No, not at all.

Reading global variables is not side effects, much less IO.

Writing global variables is side effects, but has nothing to do with IO.

> Functions that do IO are difficult or impossible to test.

Absolutely not, IO functions are not harder to test than regular ones. Is your function creating a file? Start your test, assert the file doesn't exist, call your function, assert your file exists. Done.

> I now put all my IO in top-level functions that are called directly from > main

This is great for homework, but in the real life, IO needs to be performed throughout your entire application, and unsafePerformIO is just not an option. You have to use iteratees for this kind of operation, which adds a pretty thick layer of complexity to your code base.

> boo :: Map Integer String -> String -> Integer

This syntax is clean but it doesn't tell me anything that

def boo(map: Map[Integer, String], key: String) : Integer

doesn't tell me.

> The point is, you can't confidently reason about a function from its > signature if IO is involved.

Sure, you can: the mention of IO tells me this function operates within the IO monad, so I know _a lot_ of operations and laws that apply to it.

Haskell is a fantastic language but this article is doing a very poor job at explaining why. I suspect its author has only recently started using Haskell and would have been better advised to wait a bit before sharing his enthusiasm.

<comment><USER7> I'm not sure if it's due to a misunderstanding, but many of your comments seem to be incorrect or nonsequiturs.

> > Haskell makes your functions pure by default. You have to change the type > signature if you want to do IO

> The author seems to be conflating IO and side effects. IO is just one of the > many ways that side effects can occur.

Indeed, but that does not refute the OP's statement.

> > Functions that do IO are difficult or impossible to test.

> Is your function creating a file? Start your test, assert the file doesn't > exist, call your function, assert your file exists. Done.

Right, and (in my opinion) that is more difficult than testing something that doesn't create a file.

> > boo :: Map Integer String -> String -> Integer

> This syntax is clean but it doesn't tell me anything that

> def boo(map: Map[Integer, String], key: String) : Integer

> doesn't tell me.

Indeed, but again that does not refute the OP's statement which was simply that the syntax is clean.

> > The point is, you can't confidently reason about a function from its > signature if IO is involved.

> Sure, you can: the mention of IO tells me this function operates within the > IO monad, so I know a lot of operations and laws that apply to it.

You do? Please tell me a law that applies to IO.

<comment><USER8> > > boo :: Map Integer String -> String -> Integer

> This syntax is clean but it doesn't tell me anything that

> def boo(map: Map[Integer, String], key: String) : Integer

> doesn't tell me.

OP's point was not so much that the Haskell syntax is clean, but more that there is a huge difference between

Map Integer String -> String -> Integer

and

Map Integer String -> String -> IO Integer

The latter is allowed to do IO, while the former is not. There are very few languages that allow you to express this difference and have the compiler enforce it (Haskell being one of them). So "Map Integer String -> String -> Integer" tells you a lot more than "def boo(map: Map[Integer, String], key: String) : Integer" does.

For more information about what exactly types tell you, look up parametricity or read Philip Wadler's "Theorems for free".

<comment><USER9> _"Haskell being one of them"_

Also Fortran being one of them (you can mark functions and subroutines 'pure').

</comment></comment></comment></comment><comment><USER10> I've felt the power of Haskell before, through tidbits I've learned and books like Learn You A Haskell. However, Haskell still presents itself as a giant rock in my mind, somewhat impenetrable and obtuse. It's so different from my normal thinking processes that my brain has an incredibly difficult time adjusting. It's like my thinking process turns to goo after the first few layout steps.

Basically, I wish I could understand Haskell so I could harness its power.

<comment><USER11> For what it's worth, I would suggest just writing code as a means of building your intuition. Don't worry about understanding every last detail; just hack away at it and intuition will come as a natural consequence of your persistence. At least that has been my experience. (Honestly, this is probably true of most things that are challenging to learn, not just unusual programming languages.)

I felt much the same way as you when I first decided to dig into Haskell and went through a period of some frustration in which I felt that, although I was more or less understanding the literal text of the books and documentation I was reading, I was lacking a feel for the "big picture" of how it all fit together. I could explain specific details of how the language worked but I couldn't really visualize how to put together a complete, useful program in it.

For whatever reason, something about Haskell really intrigued me despite my frustration, and I kept at it. There was never any major epiphany where everything just clicked, though there were a few minor moments of enlightenment, as when I discovered that the neat pattern I had started using in some of my code actually had a name and a well known type class: "Applicative". I also recall reading a particular article about monads (and manually working through its examples) that made me suddenly realize how utterly simple they were, despite the ridiculous hype.

After writing enough Haskell code, it eventually dawned on me that I "got it". I wasn't struggling anymore. Haskell had, without my noticing it, become my default, natural way of thinking and reasoning about code, and it just made sense in a deeply fundamental way. I could no longer even see why I'd been confused in the first place.

Professionally, I've used mostly Java and Ruby, and have never written a single line of Haskell for pay. But like the author of this article, I've found that it shapes the way I write code in other languages, even those far removed from pure FP, in significant ways. My mental design process when writing new code at work usually takes place in terms of Haskell's data types and abstractions, and then gets translated into whatever language I'm actually using once I feel like I have a good handle on the direction that I'm heading. This usually results in nice, clean designs, consisting mostly of pure, composable functions and immutable data with as little shared state as I can get away with, arranged, when necessary, around an imperative, IO-driven core. Basically the same way I'd structure actual Haskell code.

If you're intrigued enough to keep at it, then patience is all you need, and you'll get there. It's pretty fun when you do.

</comment></comment><comment><USER12> I'm sure the author is right about IO, but these sorts of articles always include such trivial examples that they do the opposite of the intended job. The one code snippet is from a dictionary look-up function. Here it is in Haskell:

        boo :: Map Integer String -> String -> Integer

And here it is in C++ as a standalone function:

        template <class Key, class Value> Key boo (const Map<Key, Value> &, const Value &);

or, more idiomatically, as part of a class:

        template <class Key, class Value> class Map {
           […]
           Key boo(Value &val);
        };

The author's point is that the Haskell code can't do much other than use its parameters, because there is no IO involved, whereas the C++ version could do anything. Well, sure, it _could_ , but let's be reasonable (which is all we can be without reading the code): it's probably gonna map a string to an int. It's just as likely that the Haskell code could do weird stuff (how does it behave if it finds multiple candidates for Value?) as the C++ code, practically speaking.

So this argument actually turns out to be an argument for good containers, or, more generally, for good built-in types. The author could make all those assumptions about his function from the type signature because he/she knew what "Map" meant, not because of anything inherent in Haskell's type system. I mean, I grant that Haskell has a great type system, and great built-in types. It's just that this example doesn't make the argument it claims to make.

Let's look at some code I'm writing now. Here is strstr:

        boo :: String -> String -> Int

Not too helpful really. Here is a function which searches ComplexDataStructure, which contains file and directory names as well as other data, for partial matches of "string", returning a "goodness" value indicating the closeness of the match for the highest-matching candidate:

        boo :: ComplexDataStructure -> String -> Int

I challenge anyone to work out what the function does from that. Sure, you can make more assumptions about the Haskell version, but, practically speaking, IO cleanliness has little to do with it. What matters here is knowing what the data structures do, and using decent types.

<comment><USER13> I think your C++ example corresponds more to the following haskell type.

        boo :: Map a b -> b -> a

since it nowhere mentions int.

<comment><USER14> I think the Haskell example should've used this type signature instead. Compared to the OP's example, this has a much stronger implication. There's very few implementations of this type that would make sense, whereas with the other one - it could be 'count' of the number of times 'string' shows up in the map; Or it could be number of letters in the provided string (ignoring the map entirely); Or it could be (key - 1); or any number of other things.

Here, you can't just magic into existence or modify an unknown 'a' value.

<comment><USER15> I think it's still pretty unclear what this function might do, since the inverse of a map isn't well-defined. I think this is a type signature that makes sense and has a fairly obvious most-likely meaning:

        boo :: Map a b -> b -> Set a

I'm not sure how you would conjure up just an 'a' in general.

<comment><USER16> You also need an Ord or at least an Eq constraint on the b's.

</comment></comment></comment></comment></comment><comment><USER17> Rant: I needed an hour to get pointers and an afternoon to grasp what function pointer is in C. 10 minutes to grok recursion, and OOP (some parts of it) came as a just a sane way to do stuff ... I am hitting my head in the monad brick wall close to a month now.

Aside from that it is an amazing language that really kicks you to think differently.

<comment><USER18> Copied from a comment of mine from a couple of years ago:

"I've recently finished reading Learn You A Haskell For Great Good!, and I think the author's approach to monads works well. I'd read various metaphorical explanations that only served to further cloud the issue, but thanks to LYAH I finally got it.

In short, he has you using monads long before you understand them (Maybe and IO in particular), then slowly introduces monads by first explaining functors and applicative functors.

In retrospect, the mystique seems crazy. Monads are just not that confusing: they're simply values with added context, along with functions that let you interact with those values without losing the context. It's a shame that this powerful idea is so obscured by its supposed difficulty."

\---

I'm not going to give you any more metaphors (a monad is not a burrito). Monads are objects (in the category theory sense) that in some sense "contain" another object, and let you work on both the level of the contained object and the box around it. This can be terribly useful (and necessary in a pure language like Haskell).

It turns out that monads obey the so-called functor laws (which is a just another scary category theory word for a really simple idea) and thus have the function `map` defined on them. What's really cool is that we can map (transform) the boxed data inside the monad without caring whether there's actually anything inside.

Why is this useful? Consider the Maybe monad in Haskell (or Option in Scala). Lets say you want to get data out of a HashMap. You look up a specific key, but there might not be any data there. In most languages, this would be handled by returning a null or throwing an exception. Both solutions break type safety, so we want something better. Using Maybe we don't have to care whether or not the data is present to operate on it:

      // This is Scala because my Haskell is a bit rusty, but the
      // ideas are the same
      val map = new HashMap[String, String]("hello" -> "goodbye")

      // HashMap$get returns, in this case, an Option[String]
      val opt1 = map.get("hello") // => Some("hello")
      val opt2 = map.get("bonjour") // => None

      // What happens when we process these two options?
      opt1.map((x) => x.toUpperCase) // => Some("HELLO")
      opt2.map((x) => x.toUpperCase) // > None

      // Note that `map` here is the ">>=" operator in Haskell
      // It's different than a normal map, which takes in something
      // of type A, a function from (A -> B) and produces something
      // of type B. ">>=" instead takes in something of type M[A],
      // a function from (A -> B) and produces something of type
      // M[B]. The powerful thing about this construction is that
      // it lets us concatenate processing steps:

      opt1.map(_.toUpperCase).map(_ + "!!!").map("!!!" + _)
         //=> Some("!!!HELLO!!!")
      opt2.map(_.toUpperCase).map(_ + "!!!").map("!!!" + _)
         //=> Nothing

      // If we start out with Nothing, we always have Nothing, but
      // we don't need to check for it at every step.

No conditional code checking for nulls, just type-safe processing on possible unreliable inputs.

And Maybe/Option is possibly the simplest monad. You're probably more familiar calling map on lists, and it turns out list is also a monad, with the empty list representing the Nothing value. Things get trickier when we move into the work-horse monads in Haskell: IO and State, but the same principles apply. The IO monad lets us process the results of running IO operations without having to care (until we need to) about whether the options have succeeded or not. It also, crucially, allows us to run IO operations in a determined order by chaining the operations together. The details of all this are too long for a HN comment, so I'll just direct you to Learn You a Haskell [0] if you haven't read it, or Real World Haskell [1] if you have. Both have pretty good chapters on monadic thinking which hopefully will get you over the hump.

My best advice is: don't be scared by the category theory. Contrary to popular opinion, you don't need a PhD to program in Haskell :).

Good luck!

[0] <http://learnyouahaskell.com/chapters> [1] <http://book.realworldhaskell.org/read/>

<comment><USER19> Nitpicking, but:

      // of type B. ">>=" instead takes in something of type M[A],
      // a function from (A -> B) and produces something of type
      // M[B].

The type of ">>=" is M a -> (a -> M b) -> M b, which lets you 'chain' the result of one monadic function (a -> M b) to another monadic function. So, for example:

      return :: String -> IO String
      putStrLn :: String -> IO ()
      getLine :: IO String
      return "foo" >>= putStrLn :: IO () -- prints "foo"
      getLine >>= putStrLn :: IO () -- gets a line of input, then prints it

<comment><USER18> Oops, yeah, the map function above composes its argument with return, giving it the type M a -> (a -> b) -> M b, making it equivalent to the Haskell `liftm` function.

</comment></comment></comment></comment><comment><USER20> I'm also fairly interested in Haskell but I think that studying data structures and algorithms extensively will make me a better programmer. Not learning a whole other way to program... That will not work. I am already very comfortable in C++/Java/D and other imperative languages. I can do the same work faster because I can use global state to get easier solutions to problems. If I want pure functions, I'll write a pure function. If I want shorter, more readable code I'll write a macro. Or maybe not.

<comment><USER21> I'm genuinely curious how you'd prepare for a multicore and cloud computing future.

Using global state is like blowing Gabriel's horn -- everything dies!

Ok, so not everything, but the upshot is that global state plays very badly in the future of computing.

<comment><USER20> I feel very comfortable actually, since I'll program in the same language that the OS uses. I'll feel completely at home. The Haskell language uses the operating system to switch threads and send datagrams. And isn't the OS the biggest user of global state? It's like doing Yoga in a Karate class.

</comment></comment></comment><comment><USER22> I recommend some other functional language like Scheme or OCaml. All I got from my time with Haskell was frustration. I read RWH and worked through tutorials. I never got to a point where it didn't seem like the simplest tasks weren't painful.

<comment><USER19> Real World Haskell isn't a very good introductory text. Some of the early chapters are riddled with errors and confusing, contradictory instructions.

Learn You a Haskell For Great Good! is one of the better introductory programming books I've read, and the author writes in a ridiculously fun and easy-to-read style.

<http://learnyouahaskell.com/>

<comment><USER23> "ridiculously fun and easy-to-read style"

But if you find 'fun' and large amounts of text distracting, then Graham Hutton's 'Programming in Haskell'[1] is a better introduction to what Haskell is about.

[1] <http://www.cs.nott.ac.uk/~gmh/book.html>

</comment></comment></comment><comment><USER24> _You have to change the type signature if you want to do IO... Purity also means you can't read or write global variables, that's just another type of IO._

If you've written so much Haskell that you think of global variables (!) as a form of IO, then perhaps you would benefit from writing in C for a while? Beware internalizing abstractions so completely that you confuse them with the reality.

<comment><USER25> This came up a few times already and it really isn't as wrong as it sounds. In Haskell all "side effects", which include memory stores, are in the IO monad (with a few exceptions).

Writing a global variable is a side effect, because you change something other than the return value of a function. Reading would still break functional extensionality: Calling a function with equal arguments might yield different results in different contexts.

</comment></comment><comment><USER26> Haskell helps you develop your imagination:

> I have no idea what the word "boo" is supposed to mean when used as a > function name. But I can be almost certain what this "boo" does. It takes a > map that has Integer keys and String values, and a second argument that is > just a String, and it returns an Integer. So I'm fairly sure that this > function does a reverse mapping

<comment><USER27> Actually its just deductive reasoning. Because that example is a pure function, you know there is little else it could be doing. The only question in fact would be whether or not it is doing a transformation on the value before returning it.

<comment><USER28> Things it could be doing:

* Counts the values that have the second argument as a substring

* Returns key that, using some fuzzy string algorithm, matches the second argument the closest

* Computes a score from matching the second argument against the map, which tracks document occurrences in a search engine type gizmo

I don't think the meaning is obvious at all. If anything it's a lesson in naming stuff: Don't call your functions "boo".

<comment><USER4> The actual function would be written more like

        invMap :: forall k v. (Eq v, Eq k) =>
                  Map k v -> v -> Set k

The parametricity means that while this function may get specialized to have v ~ String and k ~ Int, we can be sure that invMap isn't using that information. Instead, with the typeclass restriction, we know that the only thing the function can be doing internally to the ks and vs is comparing them for equality.

Intuitively, invMap can either be computing the Set of ks which hold a particular v or, maybe, the set of ks which _don't_ hold that value and not much else.

</comment></comment></comment></comment><comment><USER29> As long as people don't abuse that power and don't write C++ code, full of statefull functors (intellegent fools they are, the worst kind), I'm happy.

<comment><USER3> This.

A lot of Haskell's power comes from it being able to enforce the validity of this style of programming. C++ does not - and when working with C++, you have to reason at both the C++ level like you always do, and at the Haskell level (but without the compiler verifying your work).

That's extra burden without extra benefits.

<comment><USER29> It is just that author in the "Container Operations" says that using functors in C++ is such a good practice.

No. While concept is nice, in practice, with C++ it can result in time waste and unreadable/unmodifiable code with no clear benefits. Cleaning up some statefull functors overdesigned by some intellegent fool can be a gruesome job.

<comment><USER6> > Cleaning up some statefull functors

This makes no sense at all. A functor is a type class, it doesn't contain any state.

<comment><USER30> In Haskell, it makes no sense, agreed.

In C++, it makes sense: <http://www.sgi.com/tech/stl/functors.html>. Functors are function objects, which is to say they're a class/struct with one method, operator().

If this makes you sigh, know that you're not alone.

</comment></comment></comment></comment></comment><comment><USER31> Analogous to this I found category theory gave me a better/different view understanding of modern algebra and set theory.

<comment><USER4> My god yes! Reading through a book or two on category theory is astoundingly useful for improving your deductive chops. I'm not interested in declaring it a new foundation for mathematics, but it's such a useful language!

</comment></comment><comment><USER32> Sure. Instead of learning the power of composition of high-order functions, you will learn that particular composition, with a trendy name, and will start to argue on forums, that this particular function composition is somehow superior to all other compositions and you must do everything using that particular composition, which is called monad..)

There is one question, before you press "down-vote" few times - what is the sequence of machine instructions your monad compiles into?

<comment><USER11> Who is arguing that the monad as a means of composition is superior to all others? Or that Haskell doesn't emphasize the power of composition of high- order functions? Function composition is one of the most important tools in a Haskell programmer's toolbox. Monads are just another one of those.

The thing is, most popular languages these days support higher-order functions. It's nothing to write home about. Monads get a lot of attention specifically because they are a fairly unique idea that is not supported out- of-the-box in other languages. People who are advocating (or evangelizing, if that's your perspective) for a particular thing are going to focus primarily on the specific aspects of that thing that make it stand out from the crowd. For Haskell, that means things like monads, algebraic data types, non-strict evaluation, functional purity, etc.

 _There is one question, before you press "down-vote" few times - what is the sequence of machine instructions your monad compiles into?_

I can't understand what you're getting at here. What difference does it make what code the compiler emits, unless I am trying to aggressively optimize low- level performance? If it does what I intend it to do, and is reasonably fast at doing it, I don't care about the specific instructions. How is that relevant?

<comment><USER32> The question was why should one have to learn some sophisticated, over- engineered type system along with unreadable notation, when the result will be plain, sequential machine code anyway? What is the point besides "I'm so clever"?

<comment><USER16> Your claim that it is over-engineered is unsubstantiated, and from a Haskell user's point of view, plainly false.

The claim that the notation is unreadable is similar.

Haskell's notation is certainly unfamiliar, and that can be frustrating (as all unfamiliar notations are), but it is one of the best designed ones out there.

As for the question: Why learn the type system? Because it helps you encode your program's invariants as types -- allowing them to be verified _cheaply_ and _repeatedly_ by an automated prover (the type checker), rather than being documented and checked by _expensive_ tests.

They are also documentation you can rely on, as it is guaranteed to stay in sync with the program. It means you can get up to speed with other's code much quicker.

They also restrict code in _useful_ ways, encouraging code that is more concurrency-friendly, simpler, and generally better.

<comment><USER32> OK, those are arguments in favor of strong-typing, early-binding and compile- time checks. Java arguments, in other words.

I think, looking at sources of arc.arc or news.arc, that it is, how to say, over-hyped.

<comment><USER16> Strong typing is not nearly as good when the type system is weaker.

Java's "strong typing" doesn't protect you from null dereference errors, as one example out of many.

Also, strong typing is not as good when you have to specify a _lot_ of the types repeatedly. Without good type inference, it loses a lot of the appeal.

Strong typing is not nearly as good when every function has arbitrary effects not specified by its type.

Strong typing is not as good when it is harder to do parametericity, as discouraging it means you get monomorphic types, which are far less effective at preventing errors.

Haskell gives a whole lot more benefits via static types than Java does.

</comment></comment></comment></comment></comment></comment><comment><USER33> OT: why did you post the url with the "m=1" parameter in the end?

</comment><comment><USER34> I swear if I see another gray on white web page, I will throw my own S#!7 at you like a 900 pound gorilla in a zoo!

</comment><comment><USER35> And learning Lisp will make you a better Haskell programmer. Read PG's arc tutorial.

<comment><USER16> Indeed, extending your repertoire is definitely a good thing.

</comment></comment><comment><USER36> I'd also like to see an article about how learning Haskell makes you prone to preaching to other people about how better programmer it made you and why you should learn it too, despite not having much in terms of actual production to show for it...

<comment><USER37> You totally missed the point.

<comment><USER36> I don't care about the point. I've dabbled in Haskell myself. I just hate the preaching, especially when it's unsubstantiated.

<comment><USER38> He gave concrete examples for all of his points, unlike you.

<comment><USER36> Wait, what?

I spoke against a concrete and specific thing, this very article, what more "examples" do you want? Pointing to a particular thing is the very definition of an example.

So, yes, this kind of article is very often seen, and we're very familiar with the genre to need more examples. It even admits so itself, as it starts with: "It's OFTEN CLAIMED that learning Haskell will make you a better programmer in other languages.".

As for the articles' examples: meh. Using Haskell signatures to sketch public APIs in other languages is somehow better that using any other similar notation? Even if it was so, he never proves it better. Just some handwaving. And his other big point is about thinking in terms of maps, sets, filters, reduces and such. How is that unique to Haskell? Lisps beg to differ...

<comment><USER39> I think he fails to mention the very strong static typing in addition to method signatures. There are no nulls, everything is expected ahead of time, you know what you are going to get.</comment></comment></comment></comment></comment></comment>


Show HN: My Virtual Reality Room-Scale RPG - <AUTHOR> https://partner.steamgames.com/apps/landing/488760 <comment><USER2> Gotta fix your link!

<comment><AUTHOR> Aaah, crap! Thank you.

I shall delete this one and re-submit tomorrow.</comment></comment>


Dopamine Labs: Dopamine makes your app addictive - <AUTHOR> https://usedopamine.com/ <comment><USER2> Is this a serious product? Im wondering, since from a user perspective this sounds quite disgusting, and somewhat dystopian...</comment>


Apps bar users from Internet, Facebook—and prove surprisingly popular - <AUTHOR> http://arstechnica.com/gadgets/news/2012/04/apps-bar-users-from-internet-facebookand-prove-surprisingly-popular.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss

<comment><USER2> A bit mean to put an image of a video player. I had to look at the source code to make sure I wasn't having problems.</comment>


Show HN: List of common acronyms for Ruby on Rails - <AUTHOR> https://github.com/thingista/acronyms_and_more <comment><AUTHOR> I could not find such a list. Yet I am sure a lot of us have _some sort_ of file like this lying around in some projects. It would be great to consolidate - it's a pain to build these lists.</comment>


ECJ says Airbnb Ireland should not be restricted by French law - <AUTHOR> https://www.rte.ie/news/europe/2019/0430/1046535-airbnb-euro-court/ <comment><USER2> To clarify: This all relates to business activities in France, not Ireland.

The decision is that Airbnb is not a real estate broker and thus is not subject to the legal restrictions applying to real estate brokers under French law.</comment>


If all DNS went down what would you do? - <AUTHOR> If all of DNS was taken down or the root servers were taken offline in some coordinated attack, how would you manage to get back online? If a new sort of system was to be created in the absence of DNS, how would it be developed and pushed out? How would word spread? <comment><USER2> DNS is hierarchical and extensively cached along a resolver chain, which limits _some_ failure scenarios and allows limited recovery. Each DNS resolver may happen to have some cached entries still good and unexpired. Therefore you could probably recover some known-good IP addresses. This presupposes that a previous cache poisoning attack did not occur or ruin your cache.

Alternative recursive DNS resolvers like Google's 18.104.22.168 (which gets the award for being the most-memorable) and OpenDNS, DNS Advantage, etc. are an option, but they are decidedly downstream of rootservers so they may have been affected.

There exists a non-ICANN-run collection of DNS nameservers [1] (based out of Europe) which are normally synchronized with the ICANN root, but can be operated independently.

If, for some reason, the rootservers become unavailable for an extended amount of time, others may move to establish rootservers, but every downstream DNS resolver will still be configured to depend on the rootservers [1]. Reconfiguring these relationships is a fundamentally human process (as opposed to a machine process), so it will occur out-of-band; then once trust is established the downstream servers will point to the rootservers' static IPs as it is currently done [2].

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

[2] [http://www.internic.net/domain/named.root](http://www.internic.net/domain/named.root)

<comment><USER3> Comcast's is pretty easy to remember as well:

        126.96.36.199
        184.108.40.206

</comment></comment><comment><USER4> 22.214.171.124 :) On more serious note [https://en.wikipedia.org/wiki/Distributed_denial-of- service_...](https://en.wikipedia.org/wiki/Distributed_denial-of- service_attacks_on_root_nameservers)

</comment><comment><USER5> We could establish a temporary database on 220.127.116.11 until a more permanant solution came into being. There's not much I could do personally.

</comment><comment><USER6> I'd take a couple days off to play videogames until the system was restored.

<comment><USER7> And in the meantime, the world economy comes crashing down all around you...

</comment></comment><comment><USER8> /etc/hosts ftw</comment>


Yahoo shuts down BOSS API - <AUTHOR> https://developer.yahoo.com/boss/search/ <comment><AUTHOR> First they raised the prices by 100% ~ 500%, with very little notice, then surprise, surprised, everyone stopped using it (well I'm guessing here, but what else could have happened?). Then they backed off a bit and made it cheaper only for their ad partners. So you could only use their API economically if you display their scummy ads and get their blessing. And now it's just cancelled. The alternative -- YPA -- is a client-side Javascript solution unusable on the server side.

No wonder Yahoo is in such trouble -- lately, they've taken good products, ruin them or stop improving them, then cancel them due to everyone abandoning them (Mail, Maps). Or they just cancel good products without trying to monetize them (Pipes).

I switched my search engine to use the Bing API and never looked back. It's a shame that it is the only top-tier search API available now.</comment>