Beyond Black and Yellow: The Stunning Colors of America's Native Bees - <AUTHOR> http://www.wired.com/wiredscience/2013/08/beautiful-bees/?pid=7213&viewall=true If you don't look for bees, you probably don't see them. At least not many of them. Sure, you might notice a honeybee, or a bumblebee, the generic names we use for the most well-known species -- but there are more than 4,000 bee species in North America alone. <comment><AUTHOR> more pictures here: [https://secure.flickr.com/photos/usgsbiml/sets/7215763046878...](https://secure.flickr.com/photos/usgsbiml/sets/72157630468783226/)</comment>


An experienced Javascript developer's account of learning React - <AUTHOR> https://email@example.com/things-nobody-will-tell-you-about-react-js-3a373c1b03b4 <comment><USER2> At our company, we have banned React, Angular and other "overengineered" JS frameworks.

Our HTML is rendered from a standard boring Groovy server page, with some vanilla-js for DOM manipulations here and there.

We have hired developers that were React fans, which quickly changed opinion that this old-school way for developing web applications is indeed better. It is faster to code, an order of magnitude easier to maintain, DOM rendering time is faster, so a click to open a new page/view happens instantly. Our web application is so fast, that non tech people and clients always comment how smooth and slick it behaves compared to Facebook or LinkedIn.

Our clients are very happy with our solution too, as it is very simple for their developers to integrate our solution into their web application since it doesn't mess up their existing web framework. It doesn't block their rendering time, and it is easy for them to override changes.

We also have one complex UI part in our application, which can consume some CPU. This part we render with canvas, and it feels like a native app as it runs stable at 60fps. Who wants to run a lot of slow DOM manipulations when canvas is a lot more efficient.

<comment><USER3> Angular/Angular4 is a joy to develop with, so that's too bad you're limiting yourselves artificially.

We have groovy in my stack at work and everyone despises it. Fortunately that's a legacy we're moving away from.

<comment><USER4> But is it joy for customers to use the stuff you wrote in it? So many of these opinions always focus on the developers having fun instead of wondering what experience is for the user and maintainers.

<comment><USER5> It's a valid question that has nothing to do with a tool/framework and everything to do with product goal and time/resources

</comment></comment></comment></comment><comment><USER6> I am confused why people think Redux is complicated. Maybe you were trying to use React-Redux? Redux itself seems incredibly simple to me, so simple that I sometimes wonder if I need a library for the functionality at all.

This "Redux in a nutshell" sums up the simplicity nicely I think: [https://gist.github.com/MarcoWorms/30758235f05faec844b8c06ce...](https://gist.github.com/MarcoWorms/30758235f05faec844b8c06ce2e5bac9)

<comment><USER7> I've had the same experience. It took me about a week to "get" Redux as a new- ish dev back a year or so ago. Why do you think people have trouble with it?

<comment><USER8> > It took me about a week to "get" Redux

You hit the nail on the head. Devs these days get frustrated if it takes more than an hour.

</comment></comment></comment><comment><USER9> Switching to React definitely has a learning curve, especially if you are coming from old-stool JavaScript or just not used to some of the concepts in React or Redux themselves. That said, once you get your head around it things start falling into place.

We're recently built a React Native app and I feel the benefits it brings to cross-platform development make that ramp-up worthwhile. A single iOS and Android codebase is a glorious thing, and helps avoid needing silo's of specialized developers.

I would say that the maturity (or lack thereof) is obvious when using React. The big ideas are solid, but there is a lot of thrashing - you need to watch each new version for backward-compatibility issues and carefully manage your dependencies. Coming from Ruby/Rails, I also feel like React is still at the point where you're spending a lot of time configuring things vs adopting standard conventions - it's getting there, and projects like react-navigation are helping build up that boilerplate, but certainly can be frustrating at times.

<comment><USER10> I saw a fascinating talk on Redux, I like the idea of how it manages state and the whole event sourced approach to that.

I've repeatedly tried to get Redux going with either React or Vue but have found it surprisingly hard. Many outdated seed projects and installation instructions made it somewhat painful.

I've played a bit with React from the more recent create-react-app and that got me started with some of it. I haven't been sold yet, I realize that I want something to cause the events and update the DOM but I haven't been sold on why React is best for that yet.

Always annoying when you try to approach some tech and have a hard bounce off of it.

<comment><USER11> If you've got questions on using React or Redux, please feel free to drop by the Reactiflux chat channels on Discord and ask. I hang out there most evenings, and there's many others happy to help as well. The invite link is at [https://www.reactiflux.com](https://www.reactiflux.com).

In addition, I keep a big list of links to high-quality tutorials and articles on React, Redux, and related topics, at [https://github.com/markerikson/react- redux-links](https://github.com/markerikson/react-redux-links) . Specifically intended to be a great starting point for anyone trying to learn the ecosystem, as well as a solid source of good info on more advanced topics. It includes links for learning core Javascript (ES5), modern Javascript (ES6+), React, and much more. I also published an "Intro to React (and Redux)" presentation at [http://blog.isquaredsoftware.com/2017/02/presentation- react-...](http://blog.isquaredsoftware.com/2017/02/presentation-react-redux- intro/) , which is a good overview of the basic concepts for both React and Redux.

</comment></comment></comment><comment><USER12> Doesn't mirror my experience at all. Most of the post is complaining about the ecosystem, which you don't need at all to use React "properly". React is just the view piece. But in any substantial project, you will have to figure out routing, data storage, networking and cross component communication.

And you shouldn't write large blocks of conditional logic in the markup code. That's bad whether it's PHP, React or Angular.

And complaining about className? Really? Is the author not aware of reserved words?

</comment><comment><USER13> I agree. React is a great rendering library which somehow became the core of a mix and match framework, plagued by backwards incompatibility and maintained by plethora of individuals. As a result upgrading dependencies is never safe and and each of tens of them is quite likely to introduce breaking changes or become obsolete, leaving you having to make unnecessary changes in your app.

Don't get me wrong, I think React is good at what it does, which is rendering. I just don't think the maintenance of a react app, which includes dependency management, is worth the benefits. Similarly the current model of reinventing everything in the "react way" is hardly speeding up development.

<comment><USER14> There are like 13 exposed functions in React: render, componentDidUpdate, componentWillUpdate...It's as simple as it gets. What breaking changes? The core API has changed little. And what they have changed is simple to adapt to. They've added stateless functions and switched to ES6 style classes and removed mixins.

<comment><USER13> I was talking about React ecosystem, rather than the library itself. The latter is solid, the former though... not so much.

</comment></comment></comment><comment><USER15> The best explanation I've seen for why React is such a pleasant experience, is that it's a text-based version of the best parts of Visual Basic - you use React to lay out pre-built UI components, build your own new ones, and the UI behavior is a function of the properties you set.

React, and similar libraries, have the advantage of being parasitic - you can fit them in along with a lot of what's already out there, without necessarily having to rewrite what you've already build. I.e., you can easily use UI frameworks that are agnostic to Javascript library pairings.

As an example of this, I built [https://www.findlectures.com/](https://www.findlectures.com/) with TypeScript + React, starting with no CSS library, then added bootstrap, then replaced Bootstrap with Semantic-UI. This makes me appreciate some of the flexibility of the ecosystem now, even though it comes with the pain of having too many options for a lot of the individual components.

<comment><USER16> This makes a lot of sense. In practice each component can function as a complexity-hiding layer, making integrations with other code a breeze compared to the status quo.

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

</comment></comment><comment><USER17> im going to just say whats on my chest.

it makes me wonder if react devs who thinks react is the greatest thing since sliced bread are somewhat new to web development (less than 2-3 years or so). because im sure those who inherently know, would find that vuejs is just a superior framework (sans native). there will always be new frameworks that comes out and some will be better than the last. and vue to me is leading the forefront and does things that makes sense for web development. once vue releases native, i think there arent many reasons to use react if vue is available.

when ppl say react is the best or that its for complex apps makes me shake my head, as those who believe that may be just naive or dont have much experience to make up their mind.

experience over time, leads you to strive for patterns and elegance, and unfortunately react doesnt have that which makes it feel there is a bit of immaturity in the framework. this is why i wouldnt be surprised if many if the react fans are the way they are in their stance.

its just my two cents from an old js dev who have seen through over 15 years, so your views maybe different from me, but should be similar to those who knows what im talking about.

<comment><USER18> I don't think that years of experience has anything to do with liking vue or react. I know how you feel, because my colleague had similar thoughts on React, he even created something very similar to vue a few years before vue(jade+css+js in one file). While I just use pure virtual-dom (no jsx) and almost nothing else.

The way you put it, some people look for patterns and elegance, while some look for simplicity (no special v-bind or v-if), modularity and deletability. There is nothing more senior about one way or the other, just different personal preferences.

</comment></comment><comment><USER19> This post is misleading throughout.

The article shows snippets from the Redux and React Router docs, implying they are realistic examples of the way that typical React code should look, however, they are clearly snippets which are trying to show the entirety of an API on one screen. If your code is just a bunch of snippets copy-pasted from docs without much thought given to the structure of your code, your choice of UI library isn't the problem.

On React Router, React Router is not React. You don't need to use React Router. There are plenty of stable pure JS routing libraries, which don't release new versions often (or ever, because they are 'done'). Nothing about React requires you to use a React-related routing library.

The author found Redux and MobX too complex for their use case. However, Redux and MobX are not required to use React (there seems to be a theme here), and probably not useful if you don't have a big single page app with a lot of client side state. Implying they are intrinsic aspects of using React is wrong.

The bits at the end:

 _you will need to import in your scripts react-dom and react without never using the last one instance for some wild reason known only by the React team_

The react and react-dom packages are being split so react-native doesn't have to pull in dependencies which are only used on the web. Not that different to Rails splitting up into a bunch of gems.

 _you can render functional components just by using js functions but you will need to wrap all your markup always in a wrapper tag to properly allow the Virtual DOM creation_

This was an architectural limitation which is going away in the next major version.

 _its apparent simplicity is hidden behind a whole toolchain you need to configure before you can even writing 1 line of code_

Why complain about this but refuse to use create-react-app? It literally solves this problem.

 _I started my app with React 15.5.0 knowing that my code is deprecate before even starting because facebook has just announced that for the next major release they are planning a complete rewrite of the framework and this means that they will likely nuke the current source because it can be no longer maintained._

This is FUD. The team has said that the next version of React will have some small breaking changes, but the API will remain almost completely the same. Not sure what they mean by 'nuke the current source' though.

</comment><comment><USER20> The trick is - don't try and learn all this shit at once. Make a react app without any extra state management. Just store your state at the top and pass shit down. Add more stuff until it starts to get annoying passing all the callbacks back up. Now you are ready for redux cos you understand what it is saving you from.

React itself is actually really simple and a nice way to make complicated UI.

<comment><USER13> Yeah, it gets annoying really quickly. You go three components deep and you're ready for redux.

</comment></comment><comment><USER21> Why is mixing HTML into your code in PHP bad? Because it mixes presentation and logic.

Why is mixing HTML into your code in React good? Because it isolates all the view code for a single component in a single file.

<comment><USER22> In his example in the pre-preface there was quite a big amount of logic.. I don't really see the point in your post looking at that code.

<comment><USER23> You can have complex logic and functions in JSX but that doesn't mean that you have to, so the example is very contrived. That way of writing the code is completely discouraged in the documentation and I haven't run across it often or at all in the real world.

<comment><USER24> The example in the article was lifted from the front page of the official React website [0].

[0] [https://facebook.github.io/react/](https://facebook.github.io/react/)

<comment><USER23> It wasn't lifted from the docs. The tutorial is a tic-tac-toe game, while the example in the post is an AddTodo function [edit: there appears to be an add todo section, but the code is completely different]. Furthermore, all the examples in the tutorials show a pattern where you reference functions instead of writing them inside JSX.

<comment><USER24> Check again. On the homepage scroll down to:

> An Application

" Using props and state, we can put together a small Todo application. This example uses state to track the current list of items as well as the text that the user has entered. Although event handlers appear to be rendered inline, they will be collected and implemented using event delegation. "

<comment><USER23> Fair enough - it's a todo app. The code isn't structured in the same manner as the author's, however, so my point stands. It doesn't look like the code was lifted from the docs, as you said, but instead transformed to look like spaghetti.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Regardless of these complaints, the job market for React is just too damn good to ignore. I bit the bullet and began learning. As a newbie, I understand the sentiment of this article. However, it's really not as bad as the author makes it out to be.

Also, className instead of class took all of 3 seconds to learn.

<comment><USER25> Also `class` is a reserved word in JavaScript, author doesn't even notice this.

<comment><USER26> As mentioned in other comments, I don't have this issue of not being able to use `class` in Vue. So it can be done better.

</comment></comment></comment><comment><USER27> I wrote a reply to address some of these points:

[https://medium.com/@dan_abramov/hey-thanks-for-feedback- bf95...](https://medium.com/@dan_abramov/hey-thanks-for-feedback-bf9502689ca4)

Thanks for sharing!

<comment><USER28> I'd love to hear your reply to this:

"what do you expect from a framework with more than 1000 issues on github that will let you install alpha dependencies by default (firstname.lastname@example.com) to develop your native app?!?"

<comment><USER27> Thanks, I missed this one! I added a paragraph:

 _> The version of the the react package is generally not relevant because it contains very little code (Component and createElement). The reconciler code is synced to React Native separately. So this an artifact of the different release cycles of RN and React, and doesn't at all mean that RN apps are using an unstable version of React._

</comment></comment></comment><comment><USER29> The recurring pattern seems to be some new tech gets introduced, preferably by a well known SV company. Usually it matches their use case and is a struggle to adopt generically.

People scramble to learn it anticipating demand for jobs or contracts and become part of the hype cycle. If they can kick start the the cycle then everyone benefits and they are too vested to discuss quality, architecture, design or anything that risks the gravy train.

Things can become haphazard. Technical or complexity issues take a back seat and are hand waved away, apologism thrives. Discussion becomes heated as is wont when it comes to money.

There can be 100 articles like this about React but it won't matter. Because this is not about quality but economics. Even the most hardcore react fans know the ridiculousness of its setup is not tenable technically or otherwise.

Experienced people won't respond to fads and certainly not badly designed one as they have no need to. If the market for work was stable and less heated it would be much more difficult to pull off these hype cycles.

</comment><comment><USER30> I don't think the `className` argument sticks. `class` is reserved so you can't use it. It's annoying but not a difficult concept

The other points are valid though. Mobx/Redux seems like a solution for big applications, but what's the alternative for small-to-medium React applications that still need to store state?

I agree I had issues following the snippets (and for one snippet I would definitely have to check MDN to decipher ES6 syntax), but I wonder if that's not an issue of style. Just like you can write PHP inline with HTML and you can write JS with HTML in JSX storing snippets of logic in a variable increases readability.

<comment><USER31> It's valid. className was a frequent annoyance with React. That's one of the nice things about Vue. I can paste HTML snippets and they just work. I can't say it's the reason I switched, but it was some icing on the cake.

<comment><USER32> What was the reason?

<comment><USER31> A few reasons. The render() functions were unweildly. The ecosystem of router/state libraries were in constant incompatible flux. Difficult transition animations. Complex server side rendering setup. Probably some other things I can't remember.

</comment></comment></comment></comment><comment><USER33> The stampede to React has probably gone too far but it was very much a reaction to the domination of Angular which from personal experience had made web development a nightmare.

React proved you didn't need a huge overbearing framework to get things done Vue and Riot takes this even further (even if Riot predates React)

</comment><comment><USER34> > Things nobody will tell you about React.js

Both HN and article title are misleading - this talks mainly about learning mobx, redux, and react-router, and then has 4 little nitpicks about react at the end.

</comment><comment><USER35> Exactly my experience, but with Angular 2+ instead of React.

To me, in comparison with Vue.js, both of these frameworks are grossly over engineered.

I'm keeping a list of things that are, in my opinion, unnecessary or badly designed in Angular 2+. After around two days of hacking I have seven position and the list will probably keep growing.

</comment><comment><USER36> I have used vue as alternative a lot lately, and I must say it's great. Easy to learn, reactive and fast.

<comment><USER37> Same here. VueJS is a much better version of what Angular 1.x should have been, and so much easier to work with.

</comment></comment><comment><USER16> In general the React approach works best if you are willing to build out a handful of utilities on your own sometimes, rather than always choosing from pre-existing open-source solutions. You don't need React Router. You don't need React-Redux. Heck, you don't always need Redux, you can just throw a state object on the window (or make a state module or whatever you do these days).

Here's a React 15 app in a single HTML file, using ES5 and the old in-browser JSXTransformer:

[https://gist.github.com/guscost/27736c5f0913184695492ac40fd3...](https://gist.github.com/guscost/27736c5f0913184695492ac40fd3a19c)

<comment><USER38> I had high hopes there, but I don't see an app, I just see enough boilerplate to put a <span>Hello, world!</span> into the DOM, which could have been done by just writing that into HTML. I can understand what it's doing, but I don't think it's a good example of how you can write an actual app without the parts people are mentioning.

<comment><USER16> You'd include all the modules as separate script files. Each script file is a revealing module[0] that exports its API to a global variable. If you're interested I could put together a more complete boilerplate. I don't actually use this approach much in front-end work these days, but it can be nice to work with just text editor and browser.

As for building it, you're on your own. You could run jsx from the command line, concat them all together and minify.

[http://stackoverflow.com/questions/5647258/how-to-use- reveal...](http://stackoverflow.com/questions/5647258/how-to-use-revealing- module-pattern-in-javascript)

<comment><USER13> I may be wrong, but I use webpack to remove exactly the the pain point of running jsx from the command line, concatenating files and minifying them. It does good job there and saves me time.

<comment><USER16> It's a good solution, but webpack can be overwhelming to newcomers, and it sometimes can lock you into working with associated dev tools like webpack- dev-server and all the various loaders.

</comment></comment></comment></comment></comment><comment><USER39> Thought I'd post this as a skim reveals no one has discussed testing.

While I am sure it is very possible to achieve this in other ways, the React- Redux structure (dumb components handling presentation and redux handling state) enforces a discipline that makes testing your client-side app far easier than other solutions I've seen where logic and presentation are far too often coupled. Recall that true vanilla ES5 does not even have modules.

There is certainly a lot of cargo-cultism surrounding React, but I'll be always be grateful for it making the vdom and functional style of coding more mainstream.

</comment><comment><USER40> > Then imagine to meet a dev from the future telling you that in 10 years > anyone will be writing their app routers in Javascript in this way

Yeah. The first time I saw JSX presented as something Super Serious and Obviously Fine, We Don't Even Need To Talk About It I thought I was being trolled.

I'd agree that if you'd floated this sort of syntax anonymously, even shortly before React came out, the overwhelming response would have been "LOL what talented but horribly misguided junior high student thought up this nightmare- haunting terror? Lurk moar n00b."

</comment><comment><USER41> I was very intrigued by the title:

 _Things nobody will tell you about React.js_

Immediately had high hopes that someone is going to try and give a well researched, novel critique that maybe can spur out some constructive conversation.

And then, sadly, the author goes on to write exactly what countless other articles have already covered and discussed to the death for years now. "HTML in JS", "JSX is bad", "Redux is complicated", "The tooling is too much". And then here we are again in the front page of HN for some reason.

To me, this is, again, an extremely common case of "trying to learn everything at once".

Still, a couple of points I'd like to try to mention:

JSX: Has been argued about so much it's pretty much useless to try and add anything to this discussion at this point honestly. For whomever likes it, fine, for those who don't, thankfully the JavaScript ecosystem provides with a multitude of alternatives. For new-comers still trying to reason about it, this talk by Pete Hunt is a good start [https://www.youtube.com/watch?v=x7cQ3mrcKaY](https://www.youtube.com/watch?v=x7cQ3mrcKaY)

Redux:

 _> Anytime I work with redux I need to go back to its documentation because its core concepts are so complicate that my mind struggles retrieving them back puking them out as soon as I stop working with it._

While I agree that working with Redux at scale can be complicated, the core concepts are extremely simple: Async Action -> Action -> Reducer -> Connect data to your components -> Display -> Async Action -> enter an extremely simple data flow paradigm (flux).

(state, action) => state

Redux can get complicated when you add to the mix schemas, normalization, selectors et al. My advice and I can't stress this enough: Don't try and learn everything at once, start with simple core concepts, iterate later, add tiny new pieces when it makes sense. You don't always need Redux anyway.

RE: Redux boilerplate: It's a lot, yes, but that's _by design_. Redux is simply a tradeoff between boilerplate and repetitive, dead simple management of your complicated state. I'd rather write a few lines of code more if it means I'd avoid having logic bugs or getting confused where my data comes from.

RE: React Router:

 _[...] the maintainers had the great idea of bumping 3 major versions in 5 months completely not backward compatible to each other_

This is simply not true. React Router has had a single major breaking API change in 2 years. RR 2 and 3 where the same thing and 4 has just now been released after 2 years of stability.

RE: Final complaints:

 _[...] you must use className instead of class to define the DOM css classes_

This is an extremely weak point to complain about.

 _[...] you will need to import in your scripts react-dom and react without never using the last one instance for some wild reason known only by the React team_

You only need react-dom once, to the point where you ReactDOM.render your application. You need React because you're using it implicitly with JSX. I'm not on the React team by the way, it's a simple google search: [http://stackoverflow.com/questions/38206646/do-we-need-to- im...](http://stackoverflow.com/questions/38206646/do-we-need-to-import-react- or-just-component-proptypes-will-do)

 _[...] you can render functional components just by using js functions but you will need to wrap all your markup always in a wrapper tag to properly allow the Virtual DOM creation_

Valid point, although it's a nitpick. In any case, this is going away with the newer version of React's reconciler (Fiber).

 _[...] its apparent simplicity is hidden behind a whole toolchain you need to configure before you can even writing 1 line of code_

create-react-app is great, officially supported, and does everything, is it the fault of the ecosystem that the author is reluctant to try the official CLI?

[https://github.com/facebookincubator/create-react- app](https://github.com/facebookincubator/create-react-app)

<comment><USER10> I've had really bad experiences trying to get going with React but I just found this article ranty. I was also expecting something more interesting. No feeling of depth to the analysis, just "I did not like this and now I will complain about it".

I'm guessing english is not the authors first language so I won't dwell on it but I found it somewhat hard to follow.

<comment><AUTHOR> Thanks for your feedback I have tried to fix some grammar and syntax errors. Please ping me in case you find it still confusing

</comment></comment></comment><comment><USER42> 'skeptical of letting doing my job to cli tools like create-react-app'

I am also uncomfortable with magic boilerplate, reminding me of some enterprise Java and Microsoft tech like DirectPlay.

That said, for some applications large libraries and frameworks can save a lot of development cost, increase speed of development, etc. I find myself using both very high level libraries and also working on stuff where I build most of what I need 'bottom up' style.

</comment><comment><USER43> Things about the React _ecosystem_ pretty much anyone will tell you -- outside of complaining about why you use className. Yea all the libraries and tools get confusing. But, you don't need redux, mobx or react-router for most applications; hell, if you don't like them use some other flux library or router. That's what people like, React is not an all encompassing framework it's just the view piece.

<comment><AUTHOR> I am glad it works for you and you are happy with it I get your point and I agree with it. In this post I don't shout against React.js I just wanted to tell you my experience with it without the need of convincing anyone about using anything else instead

</comment></comment><comment><USER44> His point about React Native at the end is very reductive.

As an experienced (6+ years) iOS developer, my experience putting together a dual platform app in React Native has been very positive. For the majority of content driven apps, it seems to me that React Native is a no brainer.

</comment><comment><USER45> I had similar thoughts when I first learned React. After building several UIs with it, I think the core thing that trips devs up is that it's very easy to make things far more complicated than they need to be. Beginner resources often don't help, either. Many of the boilerplate and starter pack examples you can find online have a ridiculous level of complexity in the file folder structure, component structure, dependencies, etc. - for example, no, you don't need half a dozen components spread across as many files to render a simple header or footer.

If you try to stick to a minimalist approach, it can be a pretty convenient framework. Definitely beats trying to do the same thing the jQuery way.

</comment><comment><USER46> Those are great points, my solution don't use Redux, Mobx and React Router and webpack if you can. React itself is great thought, but for some reason it's surrounded by over-engineered yet popular projects.

</comment><comment><USER47> Contrived example at the beginning of the article makes everything after it suspect. My markup in JSX rarely looks horrible and in fact, it made my life easier as a fullstack engineer.

</comment><comment><USER48> In fact React/JSX seem to have originated from PHP, though not exactly in the way meant by the author. See [https://github.com/facebookarchive/xhp- php5-extension/blob/m...](https://github.com/facebookarchive/xhp- php5-extension/blob/master/README.textile)

</comment><comment><USER49> React popularity seems to me the result of wrongly-headed thinking: that because facebook is popular, any technology behind it must be good, and because react is popular (allegedly), react must be good.

I've always been very sceptical of react, and I'm glad I didn't invest too much time looking into it, as it seems both a time sink and a boilerplate- filled approach. I wonder why some people like it, writing no-framework javascript isn't difficult at all, and you can organise it in a nicer, readable way, plus there are many alternative frameworks that seem better. Is it because of too many choices, people would hang on to the one they think will stick?

<comment><USER50> I am not a js dev, but isn't the issue of no-framework that you have to write a bunch of code to deal for various browsers? And a bunch of more code to deal with basic web patterns that you'll end up copying from project to project?

<comment><USER24> I don't see where the parent suggested no framework. It's likely he or she prefers working a different framework or library, like vue.js or even jQuery.

For me, jQuery is the bare minimum requirement. I would never attempt to write a large app in pure JS, even with babel. You would definitely run into some of the problems you mentioned.

EDIT: I see now where he mentioned no-framework JS

<comment><USER51> I have written relatively large (35k lines) project in pure JavaScript (without even jquery) and have never faced any of the issues mentioned by the parent, (Babel helped). I write native first and then run babel to appease my older browser faring users.

The advantages of native are that it's extremely snappy to use and fast to load. Bears smaller memory footprint (have to use angular.js at work and god it's awful) and with newer things like async await, ES16 classes, etc code management is very good. Can't recall the last time I had to take care of a specific browser quirk.

<comment><USER52> I have no idea what "native" means in this context, care to elaborate?

<comment><USER51> I beg your pardon, poor choice of words, native here means plain js. Nothing more.

</comment></comment></comment></comment></comment></comment><comment><USER53> You don't need to use JSX with react-router and Fiber is not a rewrite of the entire framework.

<comment><USER40> It's being reported like it is.

[https://techcrunch.com/2017/04/18/facebook-announces- react-f...](https://techcrunch.com/2017/04/18/facebook-announces-react-fiber- a-rewrite-of-its-react-framework/)

<comment><USER46> People also reported that Hillary would win. In reality so far I don't see how 15->16 is different than 14->15

<comment><USER40> My point is you can forgive someone for that kind of error when there are articles making the round from semi-reputable sources that include quotes from sources that appear to back up their claims. Especially when it doesn't seem to have a political slant or angle to it (aside, possibly, from someone at Facebook deciding for PR reasons they should frame this as a complete rewrite, in which case you're being lied to _by the people doing the work_ , so where does that leave you?)

</comment></comment></comment></comment><comment><USER54> By the way, the author develops a great web tool called Riot.</comment>


Ask HN: How important is workplace image and perks to you? - <AUTHOR> How much does it matter to you that your workplace has a pool table, beer in the fridge, free food, motivational posters on the wall, an Xbox games room, pinball machines, a chef, beanbags etc etc? <comment><USER2> Not all of those are equal.

* Pool table, Xbox, pinball machines, beanbags: Whatever

* Motivational posters: I don't really care. But, if a company consciously chose not to have posters as a cost-saving measure, run. Again, stuff will be on the walls at any company.

* Beer in the fridge: Again, whatever. You could read a lot into a company's culture depending on their alcohol provisions + alcohol consumption.

* Free food (and a chef): This can be a legitimately useful perk. It saves you time, is more convenient, can be healthier, and grows team unity.

</comment><comment><USER3> None of these things is of any importance to me. I would not consider them when applying for a job.

</comment><comment><USER4> I work at home but if the company gave me a chef that would be rad.</comment>


Texting is old school. Pexting looks cooler! - <AUTHOR> http://www.pext.me

<comment><USER2> So Instagram Direct Message meets MemeGenerator.net. What's special about this? What's the business plan? Where does the income come from? Or is this just another one of those silly things that sell out their users in order to stay alive?

<comment><AUTHOR> It finds the best image for your message. Message with images, way more expressive than plain text. Quite fun to use.</comment></comment>


I Was Taking Pictures of My Daughters. A Stranger Thought Otherwise (2014) - <AUTHOR> https://www.washingtonpost.com/opinions/i-was-taking-pictures-of-my-daughters-but-a-stranger-thought-i-was-exploiting-them/2014/08/29/34831bb8-2c6c-11e4-994d-202962a9150c_story.html <comment><USER2> "I would be remiss if I didn't ask if you were okay" is all he said.

The father _later_ hunts him down and confronts him with, "Excuse me, sir, but you just embarrassed me in front of my children and strangers. And what you said was racist."

He later proceeds to write an _editorial_ about this perceived denigration.

Um, okay. _Somebody_ certainly embarrassed the father, anyway.

Meanwhile, the world becomes, incrementally, less likely to look out for his family's safety.</comment>


How to Kill a Great Idea - <AUTHOR> http://www.scribd.com/doc/80907/How-to-Kill-a-Great-Idea <comment><USER3> Here is a non-stolen link with pictures: <http://www.inc.com/magazine/20070601/features-how-to-kill-a-great-idea.html>

<comment><USER4> Some mods care to fix the main link please?

<comment><USER5> When did this site gets mods? If pg's not around to fix it, it stays broken, I think.

<comment><USER6> There are about 15 editors.

<comment><USER5> Good to know.

</comment></comment></comment></comment></comment><comment><USER7> _The beauty of Friendster was its exhaustively complete network. Every time a homepage loaded, Friendster's servers calculated a single user's connection to other users within four degrees of separation, which could mean hundreds of thousands of individuals._

And nobody had a clue this would not scale in 2003?

When there are 6 billion people in the world who are 7 degrees of separation from each other, they thought it would scale to calculate 4 degrees of separation, forever, each and every time somebody loaded any profile? You mean the creator worked for Netscape, and knew a company could have millions of users in a short period of time? You mean to tell me they didn't even implement alternate ways to display friends just in case they had to, due to sudden growth or multiple server failures, etc?

</comment><comment><USER8> "I want to stress the importance of being young and technical." - <USER2> Zuckerberg

See, if he'd said "you gotta have experienced business guys controlling your product," he'd be crazy, not arrogant.

</comment><comment><USER9> stolen or not, thanks for link. very interesting.</comment>


CertBot: Automatically enable HTTPS on your website with Let's Encrypt certs - <AUTHOR> https://certbot.eff.org/ <comment><USER2> If, like me, you don't want it to modify your configs files for you, and don't want to turn off the webserver everytime you renew certificates, use _Webroot_ mode.

I updated my guide to setup _Nginx + Ubuntu 16.04 + Let 's encrypt_ (Nginx, IPv6, HTTP/2, and A+ rating at SLL Labs):

[https://gist.github.com/cecilemuller/a26737699a7e70a7093d4dc...](https://gist.github.com/cecilemuller/a26737699a7e70a7093d4dc115915de8)

I hope it helps those that hesitate to use Let's encrypt.

<comment><USER3> Another good method is to use [https://github.com/diafygi/acme- tiny](https://github.com/diafygi/acme-tiny) and the ciphers from [https://cipherli.st](https://cipherli.st)

<comment><USER4> I used acme-tiny to secure several domains on my server, including automated renewal via cron, running as an unprivileged user that only has access to the CSR, the ACME auth key, and the directory /.well-known/acme maps to, but _not_ the server private key. Took about an hour to secure three domains, most of which was convincing OpenSSL to produce the right three CSRs with SubjectAltName set (to cover the "www." variants so I can securely redirect them).

</comment></comment></comment><comment><USER5> On AWS, you can also use [https://github.com/alex/letsencrypt- aws](https://github.com/alex/letsencrypt-aws) \- it works great if you're using both Route 53 and ELB. It uses the dns-01 challenge, which is out-of- band - it adds a text record to your DNS instead of needing to inject content into your server. I prefer that approach.

<comment><USER6> On AWS you can get free SSL certificates from AWS. [https://aws.amazon.com/certificate- manager/](https://aws.amazon.com/certificate-manager/)

<comment><USER7> Only free if you have Elastic Load Balancer running for each domain. If you're hosting a dozen micro-sites on a box, the Certificate Manager path gets a little expensive

/me looks at his February bill and remembers the lesson all too well

<comment><USER8> Also free for static sites hosted on Cloudfront. Doesn't solve your problem, just thought I'd mention it in the interest of possible interest.

</comment></comment></comment></comment><comment><USER9> I am yet to try this, but I never liked the idea that it automatically edits my nginx config. Seeing that it's in Jesse Backports makes me more confident that it does something sane, though. However the Jesse instructions don't say anything about it. Is it that you get asked questions about Nginx when you say "letsencrypt certonly"? Also strange that it doesn't even seem to require sudo to run.

<comment><USER10> You can use the --standalone option to get just the certificate files, so you can keep your nginx config files as-is however you configured them and just update the privkey.pem and fullchain.pem files wherever your nginx config points to look for them. And the --standalone option actually requires sudo but I guess that's because it puts the certs in /etc/letsencrypt~.

Caution though, the file paths you get after obtaining the certificates are actually relative symlinks for some reason so if you just copy these symlinks over they will most likely not point to the correct path so copy the original files instead.

<comment><USER11> That's how it should work but even --standalone still inspects your web server config and will refuse to run if any part of that goes wrong. For example, if you have multiple Apache VirtualHosts in the same file[1] (e.g. a port 80 redirect to the HTTPS site in the same file) any attempt to renew a certificate will fail with an error.

1\. [https://github.com/certbot/certbot/issues/1042](https://github.com/certbot/certbot/issues/1042)

<comment><USER12> \--standalone won't inspect your web server configuration. Only the apache (and nginx, if you enabled it manually) plugin would do that.

<comment><USER11> At least for renewals, it does parse Apache config — I was unpleasantly surprised by that last week

<comment><USER12> My best guess is that you have previously issued a certificate using the apache plugin on that system, and the renewal config file for that certificate is still there.

      $ echo "BreakThisConfig" > /etc/apache2/sites-enabled/000-default.conf
      $ ./certbot-auto --apache
      2016-05-16 21:33:31,252:ERROR:certbot.le_util:Error while running apache2ctl configtest.
      Action 'configtest' failed.
      The Apache error log may have more information.
      $ ./certbot-auto certonly --standalone -d example.com
      - Congratulations! Your certificate and chain have been saved at
       /etc/letsencrypt/live/example.com/fullchain.pem.
      $ ./certbot-auto renew --force-renewal
      Congratulations, all renewals succeeded. The following certs have been renewed:
      /etc/letsencrypt/live/example.com/fullchain.pem (success)

</comment></comment></comment></comment></comment></comment><comment><USER13> Previous discussion: "Announcing Certbot: EFF's Client for Let's Encrypt"

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

<comment><USER14> I also don't understand why this is again top in HN. The alternatives of installing certs programs in this linked article are really helpful.

</comment></comment><comment><USER15> For those of us on App Engine, here's a good set of instructions: [http://blog.seafuj.com/lets-encrypt-on-google-app- engine](http://blog.seafuj.com/lets-encrypt-on-google-app-engine)

</comment><comment><USER16> I've found the best tool for getting certs from LE is this:

[https://github.com/hlandau/acme](https://github.com/hlandau/acme)

<comment><USER17> There's something I find really off-putting about a tool that's going to be managing private keys having dependencies that point to the master branch of various third party git repositories.

It also unconditionally tries to listen on ports 80, 402, 443, 552 and 4402 whenever it completes a challenge, even if you have absolutely no intention of using any of these verification methods, so there's a lot of moving parts most of which you don't want.

I made a FreeBSD port, but thought twice about submitting it: [https://github.com/Freaky/ports/tree/master/security/acmetoo...](https://github.com/Freaky/ports/tree/master/security/acmetool)

<comment><USER16> Well, it's written in Go, so it's statically linked. Which helps with the whole master branch thing.

It is weird that it attempts to listen on all of those ports, though.

<comment><USER18> It being written in Go doesn't make "just pull the latest code from master from my dependencies at build time" a good thing. They should use vendoring and pin tagged releases.

</comment></comment></comment></comment><comment><USER19> Has anyone tried this on a site with multiple virtual hosts? That's where I ran into my largest issues with applying the certificates.

<comment><USER20> I had to apply them per-vhost when using Apache. I switched to caddy recently, which does it automatically for every vhost.

<comment><USER21> What's caddy? I had the same problem and just ended up separating all my SSL vhosts into their own files.

<comment><USER22> [https://caddyserver.com](https://caddyserver.com)

</comment></comment></comment></comment><comment><USER23> I just recently re-created my personal wiki: [https://wiki.jradd.com](https://wiki.jradd.com)

using: [https://github.com/JrCs/docker-letsencrypt-nginx-proxy- compa...](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion)

This dockerfile/repo made this incredibly easy to scale with nginx/ssl/docker.

Simply add the desired domain name as environment variable when starting your container, and letsencrypt will register your cert, and re-register it at an interval.

I haven't yet tried the other methods posted in this thread, but not sure I will want to, since this was so easy.

</comment><comment><USER24> It occurred to me that this should probably be integrated with ansible for bringing up servers, and apparently I'm not the first to think so, I found a couple of project, and this one appears to fit the bill quite nicely:

[https://github.com/thefinn93/ansible- letsencrypt](https://github.com/thefinn93/ansible-letsencrypt)

Must say I'm not a fan of web first, then fallback (I mean if stand-alone works, then just use that - because that should work for certs used for eg smtp, imaps etc)?

</comment><comment><USER25> It's interesting OVH just notified all their webhosting customers (I assume VPS & shared hosting) they encrypted all 1.5 million account control panels via Let's Encrypt

</comment><comment><USER26> Correct me if I'm wrong because I really hope I'm wrong. Doesn't no question asked certificates completely undermine certificates and make man in the middle attacks remarkably simple on 'secure' sites?

I played with Caddy a little and had an SSL for a domain I already have one for without even asking for one.

Is this not a problem?

<comment><USER27> You already proved that you have access to it. Why is that no question asked?

Normal DV certs are either "add a CNAME, upload a uniquely named html / txt file, or click a link in an email" \-- you've already done one of those (automatically in caddy)

</comment></comment><comment><USER28> What options do IIS/Windows users have?

<comment><USER29> [https://github.com/Lone-Coder/letsencrypt-win- simple](https://github.com/Lone-Coder/letsencrypt-win-simple)

<comment><USER30> I use this on my AWS EC2 boxes. Works great!

</comment></comment></comment><comment><USER31> Simp_le does the same thing. I use simp_le with Haproxy on one server and nginx sni on another. Works very well.

[https://github.com/kuba/simp_le](https://github.com/kuba/simp_le)

<comment><USER32> No, simp_le does not do the exact same thing. simp_le will also generate certs and get them signed, but certbot will install them in apache for you. certbot is for people who don't know or care how to install a TLS cert and just want the thing to go green

<comment><USER33> Certbot supports both use cases; "certonly" stops after getting the cert; "run" installs it if there's a plugin available for your webserver.

</comment></comment></comment><comment><USER34> Has anyone used this on the FreeBSD servers offered by NearlyFreeSpeech.net? Tips?

<comment><USER35> I haven't, but there are other clients that work nearly as well. I use a modified version of letsencrypt-nosudo [1], and setup.sh should do everything you need.

[1]: [https://github.com/bearbin/nfsn-le](https://github.com/bearbin/nfsn-le)

</comment></comment><comment><USER36> I'm having problems using letsencrypt with domains with multiple dns A-records (round robin). What would be the standard way to issue certificates for a cluster?

</comment><comment><USER37> The webserver Caddy also offers similar functionality

<comment><USER38> Eh, I wouldn't call it "similar functionality", don't get me wrong I use and quite like Caddy but that's like saying a hammer offers similar functionality to fully stocked workbench. This is a tool that only does certs, caddy does much much more.

</comment></comment><comment><USER39> This example script assumes that the server has a running webserver, either Apache or Nginx. Since it doesn't use a package install for Certbot, this script should work on most Linux distributions. It installs Certbot, obtains the certificate, and sets up the cron task for renewal.

\---

      #!/bin/bash
      #
      # This sets up Let's Encrypt SSL certificates and automatic renewal
      # using certbot: https://certbot.eff.org
      #
      # - Run this script as root.
      # - A webserver must be up and running.
      #
      # Certificate files are placed into subdirectories under
      # /etc/letsencrypt/live/*.
      #
      # Configuration must then be updated for the systems using the
      # certificates.
      #
      # The certbot-auto program logs to /var/log/letsencrypt.
      #

      set -o nounset
      set -o errexit

      # May or may not have HOME set, and this drops stuff into ~/.local.
      export HOME="/root"
      export
      PATH="${PATH}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

      # No package install yet.
      wget https://dl.eff.org/certbot-auto
      chmod a+x certbot-auto
      mv certbot-auto /usr/local/bin

      # Install the dependencies.
      certbot-auto --noninteractive --os-packages-only

      # Set up config file.
      mkdir -p /etc/letsencrypt
      cat > /etc/letsencrypt/cli.ini <<EOF
      # Uncomment to use the staging/testing server - avoids rate limiting.
      # server = https://acme-staging.api.letsencrypt.org/directory

      # Use a 4096 bit RSA key instead of 2048.
      rsa-key-size = 4096

      # Set email and domains.
      email = email@example.com
      domains = example.com, www.example.com

      # Text interface.
      text = True
      # No prompts.
      non-interactive = True
      # Suppress the Terms of Service agreement interaction.
      agree-tos = True

      # Use the webroot authenticator.
      authenticator = webroot
      webroot-path = /var/www/html
      EOF

      # Obtain cert.
      certbot-auto certonly

      # Set up daily cron job.
      CRON_SCRIPT="/etc/cron.daily/certbot-renew"

      cat > "${CRON_SCRIPT}" <<EOF
      #!/bin/bash
      #
      # Renew the Let's Encrypt certificate if it is time. It won't do anything if
      # not.
      #
      # This reads the standard /etc/letsencrypt/cli.ini.
      #

      # May or may not have HOME set, and this drops stuff into ~/.local.
      export HOME="/root"
      # PATH is never what you want it it to be in cron.
      export
      PATH="\${PATH}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

      certbot-auto --no-self-upgrade certonly

      # If the cert updated, we need to update the services using it. E.g.:
      if service --status-all | grep -Fq 'apache2'; then
         service apache2 reload
      fi
      if service --status-all | grep -Fq 'httpd'; then
         service httpd reload
      fi
      if service --status-all | grep -Fq 'nginx'; then
         service nginx reload
      fi
      EOF
      chmod a+x "${CRON_SCRIPT}"

\---

<comment><USER40> Unless your whole chain is 4096 bit - which is unlikely - a 4096 bit RSA key just adds a little latency.

<comment><USER41> You will not get an A+[0] without 4096.

[0] [https://www.ssllabs.com/ssltest/](https://www.ssllabs.com/ssltest/)

<comment><USER32> That is not true[0]. I have no idea why you think that's the case, I've never seen that anywhere.

[0] [https://www.ssllabs.com/ssltest/analyze.html?d=finn.io](https://www.ssllabs.com/ssltest/analyze.html?d=finn.io)

<comment><USER40> In defence of davidcollantes I think it used to be the case a year ago.

<comment><USER32> How long ago? I've had an A+ with a 2048 bit cert for years (I think... there's a small chance I used to have a 4096 bit cert before LE came out)

<comment><USER40> OK it's was never required for A+, but it was required for one of the individual scores: straight from the horse's mouth: [https://news.ycombinator.com/item?id=11708830](https://news.ycombinator.com/item?id=11708830)

</comment></comment></comment></comment></comment></comment></comment><comment><USER42> Can this run on Raspbian 7 Apache?

<comment><USER33> Yes certbot-auto should work on Raspbian 7 _but_ note you'll need a large swap file enabled in order for it to succeed at building the recent version of python-cryptography that it depends on:

[https://github.com/certbot/certbot/issues/1081](https://github.com/certbot/certbot/issues/1081)

This is resolved by .deb packages; they're available in jessie-backports, but I'm not sure if/when those will ever make it to Raspberry Pi land.

</comment></comment><comment><USER43> [Edit]: didn't read enough about it, sorry

<comment><USER44> > Certbot is an easy-to-use automatic client that fetches and deploys SSL/TLS > certificates for your webserver.</comment></comment>


Introducing Visabot: Family Sponsored (I-130) Green Card Application Help - <AUTHOR> https://visabot.co/greencard <comment><AUTHOR> My name's Andrew, and I'm happy to introduce you to Visabot. Visabot's newest feature is its ability to help you navigate the Family Sponsored (I-130) Green Card process. For only $149, Visabot will check your eligibility, prepare you for your interview, draft your application, provide guidance on filing, and let you track the application status, among other features. You tell the story, Visabot will do the drafting. Visabot isn't human, so it doesn't mind doing paperwork, but it does care about you and your loved one!

Let me know if you have any questions. I'm here to help get you acquainted with Visabot! Check it out at [https://visabot.co/greencard](https://visabot.co/greencard).

\- Andrew</comment>


Real Games for Windows (1994) - <AUTHOR> https://books.google.se/books?id=PITtFPwTaWwC&lpg=PP1&hl=sv&pg=RA1-PA357#v=onepage&q&f=false

<comment><USER2> Funny thing is I was just looking up info on WinG. It basically provided the same as X's shared-memory pixmap extension: here's an in-memory framebuffer which you can also get as an HBITMAP and fast-blit to the screen without having to round-trip the whole image between CPU and video memory. The emergence of what Amigaheads call "chunky graphics" (all pixel components in memory sequentially) as a default in SVGA hardware is really what enabled this development; DIBs were chunky but on EGA or 16-color VGA the underlying hardware could be planar, necessitating the slow conversion of a DIB into a video-card-friendly format before it could be blitted.

Basic sprite graphics were possible -- and even fast -- on Win16 before WinG if you stored your sprites as HBITMAPs and blitted them with a mask to a back- buffer bitmap, then used double buffering to render this to the display. I created a demo of Mario running around in a window to the amusement of my high school friends in this way.

</comment><comment><USER3> Oh my God, WinG. That lasted for what - a year? I think I was using it seriously at one point. Part of the ultimate quest for a generic graphics library (suitable for gaming, or whatever).

</comment><comment><USER4> Good ol' WinG. Did it even gain any traction before DirectX took over?

More than anything that article reminds me how great PC Magazine was. They had technical articles written by guys like Neil Rubenking, Charles Petzold, and Jeffrey Richter.

<comment><USER5> Heh, no. WinG was a disaster. It took years before game developers trusted Windows again. From [http://www.alexstjohn.com/WP/2013/01/04/the-disnesy- disaster...](http://www.alexstjohn.com/WP/2013/01/04/the-disnesy-disaster/)

"Disney had done a deal with Compaq Computers to ship the Lion King Game pre- installed on a million Compaq Computers destined as Christmas presents for children everywhere across the country. The NEW Presario line had a NEW Cirrus video chip and NEW Cirrus video driver never before tested with WinG."

<comment><USER6> I'm no fan of 90's-era Microsoft, but, come on, that wasn't fair.

Disney (not MS) did a deal with Compaq (not MS) to ship a game (not written by MS) on a PC with a Cirrus (not MS) graphics card whose driver (not written by MS) was apparently never tested.

And somehow, this was Microsoft's fault?

<comment><USER5> I didn't say that it was Microsoft's fault. But the message that game devs got was that you couldn't trust even big names such as Compaq to ship working drivers, and hence you couldn't trust Windows as a platform.

</comment></comment></comment></comment><comment><USER7> Renegades of the Empire: How Three Software Warriors Started a Revolution Behind the Walls of Fortress Microsoft

[http://amzn.com/dp/0609604163](http://amzn.com/dp/0609604163)

TL;DR: the history of WinG and DirectX

The Wikipedia entry is also worth checking out: [https://en.wikipedia.org/wiki/WinG](https://en.wikipedia.org/wiki/WinG)

</comment><comment><USER8> If you find this kind of stuff interesting, GDC Vault hosts back issues of Game Developer back to 1994: [http://www.gdcvault.com/gdmag](http://www.gdcvault.com/gdmag)

<comment><USER9> I'd prefer to download a PDF of PC Mag - this is so full of nostalgia.

I couldn't understand the Swedish language here but I take it this can't be downloaded.

<comment><USER10> You can find a lot of old game/pc/dev magazines on archive.org, downloadable in many formats (including epub and PDF).

They have some PC Mag issues out there. Here is one from Jan 29, 1991: [https://archive.org/details/bub_gb_X_tru4xwJ_sC](https://archive.org/details/bub_gb_X_tru4xwJ_sC)

</comment></comment></comment><comment><USER11> Interesting that page 29 has an article saying flexible displays may be just around the corner. And all the laptops cost $7500, and a digital camera was $10,995.

</comment><comment><USER12> BTW, 1994 saw the release of some of the greatest classics in PC gaming:

X-COM, Doom 2, Warcraft, Colonization, Panzer General

And quite a few others.

</comment><comment><USER13> The Personal NetWare ad is just classic.

That big stretching picture technique- they need to bring that back.</comment>


Ask HN: What do you do to get into the "Zone"... - <AUTHOR>

....and how much time does it take to get there ? Also do you use specific apps or specific processes to recall what you have done before ? <comment><USER2> You have to remove ALL distractions. Set yourself a time to do email, twitter, HN, return client phone calls, then put then phone to answer phone, and turn everything else off. Especially that growl thing. Close all windows that arn't for your immediate bit of work.

An exception to this might be if you work to music. Personally I find a low volume, vocaless music, helps you not get distracted by minor noises like doors slamming in other offices or traffic passing by.

You have to have at least an outline plan of what you want to produce beforehand - not the HOW, but having done some research before your high productivity time definitely helps. Basically, get stuff queued up.

I think it helps to know that your concentrated period will end. For some this would be a 25 minute timer, but I think something more like 2 hours is best. Maybe 11 til 1. Then go for lunch for an hour, then do another 2-4 session. I think knowing you'll stop and being doing something else during a break, concentrates your mind on the job in hand, and it knows you don't have to worry about lifes other things at the same time, as you can do them later.

I think I like the idea of pairing up with someone else who has also removed distractions. Helping each other to keep momentum up, and every time something unknown happens, doing the api lookup before the main coder needs it would be awesome. Then switch the role over regularly.

hth. Just random thoughts really.

In reality most of the time I'm distracted by traffic noise, other people chatting about other projects I've worked on when I'm trying to work on another, people going off on tangents - probably because there's no allocated time in the week for actual research & training. And the bloomin phone. Support is essential, but completely takes me out of the zone.

</comment><comment><USER3> For some coding task, I gently start thinking about [problemX] well in advance, and then forget about it and do other stuff. I don't even think a whole lot about the problem, just note that I have to do such and such, and maybe think a little bit about how I might do it, then forget about it. If it's an important/hard/interesting problem, the rest comes naturally... I go off doing whatever other piddling crap needs to be done, and by the time I'm ready to sit down to attack the problem in question, I usually start to get ideas, seemingly out of nowhere. I've been following this process for some time now. When ideas on how to implement something start to come, that's the zone right there, far as I'm concerned. I can spend a couple hours without looking up from the screen at that stage.

Long story short: for a problem which I think is going to be hard to implement/fix, I briefly think about the problem well in advance of sitting down to work on it.

<comment><USER2> I definitely think even a brief period of thinking about a problem helps. Just seems to start the brain solving the problem subconciously :)</comment></comment>


Aha.io makes it affordable for startups to plan great products - <AUTHOR> http://blog.aha.io/index.php/startups-wanted-new-aha-startup-pack/

<comment><USER2> My company uses Aha! and we're getting a ton out of it. Finally, we have a structured means of clearly communicating product strategy/objectives and demonstrating how it translates into truly necessary engineering effort.

It helps demonstrate that product management is not wizardry, it's a deductive process that can be open to everyone. In the case of a small startup, it seems like it could be an almost automated means of reassuring investors that the team is executing on-plan.

</comment><comment><USER3> As a team lead, this tool provides me with a way of visually follow multiple parallel backlogs and keep everyone in sync with the project goals. It covers the gap between the daily work and the general strategy.</comment>


[Finnish] Jolla temporally laying off 50%; can't quarantee tablet delivery - <AUTHOR> http://yle.fi/uutiset/aamulehti_jolla_lomauttaa_puolet_talousahdingossa__tabletti_vaakalaudalla/8466546 <comment><AUTHOR> A pretty bad google translation: [https://translate.google.fi/translate?sl=fi&tl=en&js=y&prev=...](https://translate.google.fi/translate?sl=fi&tl=en&js=y&prev=_t&hl=fi&ie=UTF-8&u=http%3A%2F%2Fyle.fi%2Fuutiset%2Faamulehti_jolla_lomauttaa_puolet_talousahdingossa__tabletti_vaakalaudalla%2F8466546&edit- text=)

Summary:

Jolla has financial difficulties. The difficulties are related to a funding round that has been delayed. Their spokesperson Juhani Lassila confirms that they are temporally laying off more than half of their staff, and can't quarantee that their tablet will be delivered. The tablet is already behind schedule. They are trying to find a solution to the financial problems.</comment>


Who Will Pay for the Costs of Holding Back Rising Seas? - <AUTHOR> https://e360.yale.edu/features/who-will-pay-for-the-huge-costs-of-holding-back-rising-seas <comment><USER2> I think increased variance in weather is something that's really easy to underappreciate and isn't really being explained well enough to the general population.

Certainly ten or so years ago I was far more skeptical of climate issues than I am now. I knew climate change was coming, sure.

But when you think about a 1c temperature rise - a 2c temperature rise - 2m of sea level rise - etc - put in those terms it doesn't seem like a huge issue, because I would have historically thought (I didn't think about this stuff too much), well, OK, averaged out, it's 36c instead of 34c, or whatever, who cares?

Until you realise things like - oh, there are tipping points right, so if the average temperature in a region is -1c, and it goes to 1c, suddenly a bunch of ice is gone never to come back.

Or there's a climate in which harvesting is sort of viable, and the season becomes slightly shorter, and now it's borked.

Or yeah, one or two bad floods and a city is wiped out. It doesn't matter if the average level only went up by 1 metre in that case, it's gone.

</comment><comment><USER3> In the US, homeowners will pay, as they should. Towns will pay, as they should, as they've had their collective heads in the sand.

</comment><comment><USER4> Places with resources will, many will not. Fortunately we have bankruptcy.

It's pretty obvious that coastal development is beyond unsustainable in many places. Places like Florida and New Orleans are really screwed, and that shouldn't be a big surprise. I remember reading in school in the 80s that the destruction of the delta by flood control doomed New Orleans for example.

</comment><comment><USER5> City planners who approve new housing zones in low lying areas are partially to blame here. If climate change is a known risk, how is it legal to approve housing in such areas?

We should encourage approving city expansion only into regions that are naturally immune to 500-year floods. Otherwise it's a fight against inevitability

</comment><comment><USER6> The people who choose to live near the coast as a luxury? Move inland, problem solved.

<comment><USER7> well said

<comment><USER8> How's that going to work in Bangladesh or Atlantic City?

<comment><USER9> The same way it worked for Atlantis.

Do you have some special method of holding back the tides?

<comment><USER8> Bangkok and Jakarta tried walls, didn't work mostly. Indonesia also tried forced relocation under "transmigrasi" and moved about 3,000,000 people. So it can be done but Bangladesh would be ten times this. Takes time. Better start soon, national guard would come in handy. Best not in an election year maybe.

What do you think? Maybe just sell 'em all stumps to raise the house and anti malarials

</comment></comment></comment></comment></comment><comment><USER10> Occupants of cities that have this problem?

<comment><USER3> Miami Beach and other Fl communities are in for some incrasingly costly flooding.

</comment></comment><comment><USER11> Definitely not FEMA or federal govt! IMO FEMA should be defunded in the wake of climate change and let the private sector factor in the actual replacement cost & risk. I feel this is the fastest way of putting a dollar figure on the cost of climate change and might actually lead to some positive change if cities & individuals are not able to externalize the costs of CC to general public.

PS: I am a liberal democrat & by no means support the rest of libertarian/right-wing agenda.</comment>


An Inside Look at Zhenhua Data, a Chinese Data Collection and Intelligence Firm - <AUTHOR> https://shadowmap.com/security-research/investigating-chinese-intelligence-firm-zhenhua-data/ <comment><USER2> I've only skimmed so far, but insert ::eyes bulging emoji:: here</comment>


Aword (beta) — Web app to find the best place to eat & meet. Beta test it! :) - <AUTHOR> http://aword.reviews

<comment><AUTHOR> We need beta testers! Join us today [http://aword.reviews/signup](http://aword.reviews/signup)

<comment><USER2> Looks cool! You should probably have a more obvious signup link on the login/landing page - it took me a few moments to work out how.

I'm also getting lots of little 'Failed to fetch' errors around the site. I can provide more detail on request :)

<comment><AUTHOR> Hi Jimmed,

Thank you for feedback! We are working to improve user experience all over the app and soon we'll come up with a more neat starting/login page. Now, it's just for beta testers. So, thank you for joining us!

Adding friends will be also reshaped in the next version and FB integration added. But, nevertheless try to add some friends and use meetup to set a meeting with them in a precise location.

Failed to fetch will be gone soon. We promise :)</comment></comment></comment>


Video games are essential for inventing artificial intelligence - <AUTHOR> http://togelius.blogspot.com/2016/01/why-video-games-are-essential-for.html <comment><USER3> Recently having become a father has made me think a lot about general intelligence. Seeing my son getting excited about his 'world state changing' gave me an idea. What if the main thing that holds us back is the reliance on cost functions? Human, and to some extent, animal intelligence is the only intelligence we know about. If that's what we want to emulate, why don't we try modelling _emotions_ as the basic building blocks that drive the AI forward? Until now, the way I understand neuronal nets, we have basically modelled the neurons and gave them something to do. My hunch is that brain chemistry is what's driving us actually forward, so what if we model that as well? Instead of seratonin, endorphin etc. we could also look at it at a higher level, akin to Pixar's Inside Out - joy, fear, sadness, disgust, anger, and I would add boredom.

Let's stay with video games for a bit. What if we look at joy as 'seeing the world change', graded by the degree of indirection from our inputs (the longer it cascades, the more joy it gets). Maybe let it have preference for certain color tones and sounds, because that's also how games give us hints about whether what we do is good or not. Boredom is what sets us on a timer - <USER2> many repetitions of the same thing and the AI gets bored. Fear and disgust is something that comes out of evolutionary processes, so it might be best to add a GA in there that couples success with some fear like emotion. Anger, well, maybe wait with that ;-).

Edit: Oh, and for the love of god, please _airgap_ the thing at all times...

<comment><USER4> Novelty seeking as reward function has been studied before in AI. See for example this:

[http://people.idsia.ch/~juergen/interest.html](http://people.idsia.ch/~juergen/interest.html)

IIRC, DeepMind is also working on such goal functions to get their Atari playing RL-based AI to seek more data about the world even when it does not immediately help achieving the main goal function (achieving a high score).

Novelty seeking behavior probably has evolved because there are just not enough immediate rewards in our world to teach us everything that is nesessarey to reproduce [0]. Thus the brain rewards itself for exploring new things which has a collateral effect that we are interested in art and can find intrinsic motivation in all kinds of things (science, work, hobbies etc.).

[0] which does not mean that we are here to maximize the number of our babies. We aren't fitness maximizers ourselves, but we are just adaptation executors of genetic code that has necessarily been shaped by such goals (since the alternative to reproduction is to not reproduce, i.e. going extinct). In other words: We are free do whatever we want!

<comment><USER5> Yes. " _Exploration_ " is a fairly basic aspect/concept in reinforcement learning, and any decent RL algorithm will try to address this issue.

</comment></comment></comment><comment><USER6> Great summary of current state of the art with links to interesting projects: GVG-AI, VGDL...

Videos games are also essential for AI pedagogy. Creating Pac-Man agents in Stanford's AI class is a great example. Most players can barely get a "strawberry" but to see a trained agent mimicking human expert level play is eye-opening.

Quick reminder: Global Game Jam 2016 starts Jan. 29 and NYU is hosting its annual jam!

[http://gamecenter.nyu.edu/event/global-game- jam-2016/](http://gamecenter.nyu.edu/event/global-game-jam-2016/)

<comment><USER7> To anyone who's never done the Pacman projects: I _highly_ recommend them[1]. They are an absolute blast and incredibly satisfying. Plus, if you don't know Python, they are a great way to learn.

The course I took used the Norvig text[2] as a textbook, which I also recommend.

[1][http://ai.berkeley.edu/project_overview.html](http://ai.berkeley.edu/project_overview.html). See the "Lectures" link at the top for all the course videos/slides.

[2][http://www.amazon.com/Artificial-Intelligence-Modern- Approac...](http://www.amazon.com/Artificial-Intelligence-Modern- Approach-3rd/dp/0136042597/ref=sr_1_1?ie=UTF8&qid=1453167742&sr=8-1&keywords=norvig+artificial+intelligence) Note that the poor reviews center on the price, the digital/Kindle edition and the fact that the new editions don't differ greatly from the older ones. If you've never read it and you have the $$, a hardbound copy makes a great learning and reference text, and it's the kind of content that's not going to go out of date.

<comment><USER8> I'll second the recommendation for Norvig and Russell's text. It's the first textbook I've ever actually wanted to sit down and read outside of assignments.

-edit for spelling

</comment></comment></comment><comment><USER9> This is a cute argument, but I think it falls into a trap of following its own thinking.

Video games are explicitly designed to test and fit within our bounds of conscious control and processing; particularly the retro games, but essentially all games in general have a very limited input control space (a couple keys or joysticks) and usually very rigorously defined action values. Moreover, these were designed by humans with very explicit successes, losses and easily distinguishable outcomes.

None of these descriptions fit the kind of control that an 'intelligent' system needs to handle. Biological systems do not have predefined goal values, very incomplete sensory information and most importantly control spaces that are absolutely enormous compared to anything considered in a video game. At any point in time the human body has ~40 degrees of freedom it is actively controlling - compared to ~5 in a serious video game.

I do not doubt that pattern recognition and machine learning techniques can be improved through these kind of competitions. But the problem is in conflating better pattern recognition with general intelligence; implying or assuming any sort of cost, value or goal function in the controlling algorithm hides much of our ignorance about our 'intelligent' behavior.

<comment><USER10> You have a few good points, none of which deny the argument's conclusion.

Biological systems do have a primary goal, that of maintaining their own organization and reproducing. From this derives common cost function for a video game, i.e. stay alive. Another, finding new information in the environment, also derives from the staying alive goal.

Degrees of freedom is a interesting example: from the movement sciences we know that while humans have in principle many degrees of freedom, when performing a task, the nervous system plays two roles: 1) highly constrain teh degrees of freedom and 2) act within the unconstrained subspace. The latter is what all the various ungeneralizable AIs are doing. The former, contraction of degrees of freedom, is the part which is difficult and constitutes a general AI, but it's essentially a learning problem, where the subspace of important degrees of freedom must be learned through interaction.

</comment></comment><comment><USER11> Really interesting to think about the skills necessary just to play a modern open-world game such as Skyrim successfully.

NLP to understand dialogue and actions that need to be taken based on what NPC's/quests/item descriptions say, strategies for several different enemies with different strengths and weaknesses, exploring the open world in a logical order.

When you think about the difficulties of such a loosely defined problem, it's hard to buy into the real-world fears of AI.

<comment><USER12> > When you think about the difficulties of such a loosely defined problem, > it's hard to buy into the real-world fears of AI.

My belief is that one day, in the not too distant future, we'll be saying that it's hard to believe we ever considered such things difficult for AI.

Consider that an AI can literally keep "reloading the last save file" indefinitely and simply try different commands until it finds one that advances the game successfully. A little bit of guided learning to confirm that its doing well, and suddenly you've got an AI that plays Skyrim.

<comment><USER13> > Consider that an AI can literally keep "reloading the last save file" > indefinitely and simply try different commands until it finds one that > advances the game successfully. A little bit of guided learning to confirm > that its doing well, and suddenly you've got an AI that plays Skyrim.

And if you give a monkey a typewriter he will eventually write the complete works of shakespeare and if you play the powerball enough you'll eventually hit a $1.5 Billion dollar jackpot but there are easier ways to read Shakespeare and more profitable ways to get a billion dollars.

What makes humans (specifically their brains and the brains of other species) so powerful is it doesn't need hundreds at attempts at playing pacman or Skyrim before it wins. There are definitely applications where it's not unreasonable to expect an AI to have the correct answer to most possibilities at its disposable (handwriting detection, for instance) but the most useful applications will be if/when AI can solve problems that rarely have similar inputs (global economics, for instance).

<comment><USER14> > _What makes humans (specifically their brains and the brains of other > species) so powerful is it doesn 't need hundreds at attempts at playing > pacman or Skyrim before it wins._

The average human is _terrible_ at playing Skyrim, Pac-Man, and video games in general. Someone who has never even looked at a computer will have a hard time playing Skyrim or any other video game without many hours of practice. And, most video games draw upon stuff that humans already know, like moving around in a physical world, and a concept of self, which gives them a huge advantage over AI right from the start.

<comment><USER15> You could even say that one of humans' super powers is forgetting just how much practice went into learning something.

I've been walking for 28 years and I still trip sometimes. That's almost 31,000 hours of practice, if we assume an average of just 3 hours of _basic movement_ per day. Even going to the bathroom counts.

And when it comes to image/object recognition, I've had 163,000+ hours of practice. And I _still_ see stuff I don't recognize plenty of times. Hell, optical illusions still fuck me up.

Now just imagine what an AI could do with that much practice/data.

</comment></comment></comment></comment></comment><comment><USER16> AI researchers are trying to make AI smarter. Game AI can already be easily written to win 100% of games but that's not the point. Gamedevs are trying to make AI more human-like. I'm not sure the two overlap.

<comment><USER17> _" Game AI can already be easily written to win 100% of games "_

Name some games where AI can _outsmart_ (opposite to brute forcing all possible combinations or cheating like infinite resources, near zero reaction level etc.) human. I'm not much of a gamer, but I haven't seen any decent AI yet for games that have more freedom of action than some card or board games (i.e. chess). There's a StarCraft AI challange, you can watch it online(0), but AI is still no match for even an intermediate player.

0\. [http://www.sscaitournament.com/](http://www.sscaitournament.com/)

<comment><USER18> Any First Person Shooter - the AI can have perfect accuracy, perfect reflexes etc.

 _I haven 't seen any decent AI yet for games that have more freedom of action_

That's because _decent_ AI is not strong AI - its lifelike AI. Not AI that can beat us, but AI that can _outsmart_ us in a life-like manner. This means that Game AI must be less good that it can be, to keep the illusion of realism/humanity.

Ultimately the goals are different. The goals for academic/industrial AI are intelligent decision making. The goals for game AI is to be _fun_.

That doesn't mean that its always possible to make an AI that can beat a human player. Many strategy games, as you mentioned, are still too complex. I think "100% of games" doesn't mean "you can already write an AI that can win any game", but rather "there exist many games where the AI can win 100% of the time". Because the former is not true, as you demonstrate.

<comment><USER19> In a FPS, AI can have perfect reflexes and accuracy because it's playing in a different playing field than the player. If the AI had to recognize images and operate a mouse, it wouldn't be remotely as good. Although I can imagine that eventually, AI can get good at that too.

But the real test of AI is not in speed and accuracy; it's in planning, outsmarting, figuring out the right tactics and strategy. For a game that's mostly about speed and reflexes, or one that's about calculating through a limited number of options, AI can be great. But even the best AI still sucks at complex strategy games with uncertainty and incomplete information.

</comment></comment></comment></comment><comment><USER20> I don't disagree that video games are a very useful benchmark to evaluate intelligence. But I don't think AGI will evolve from video games. I think that language understanding is the path to AGI.

Language is quite complex and can't easily be beaten by hard coded algorithms or simple statistics. You can do some tasks with those things, but others they will fail entirely. The closer you get to passing a true turing test, the harder the problem becomes. It certainly requires human intelligence, and most of our intelligence is deeply rooted in language.

He mentioned games like Skyrim and Civilization as being end goals. But even a human that doesn't speak English wouldn't be able to play those games. Let alone an alien that knew nothing about our world, or even our universe.

</comment><comment><USER21> > In order to build a complete artificial intelligence we therefore need to > build a system that takes actions in some kind of environment.

This.

"Made up minds:a constructivist approach to artificial intelligence" by Gary Drescher presents a small scale virtual world with a robot embedded in it that figures out the laws of its world by interacting with it, much like what a child does. Need more people thinking like this.

</comment><comment><USER22> "The most important thing for humanity to do right now is to invent true artificial intelligence (AI)"

bollocks

</comment><comment><USER23> Very interesting read, and I always knew about this being an avid gamer since as far as I can remember. It always intrigued me how a computer can play against a human, and as games got more sophisticated, interacting with AI's got more and more human-like.

Aside from using them as benchmarks, they way games are capable of simulating a world will probably be key in creating a true AGI. In the comment section of the article, we're already seeing some theories that involve video games not just a tests, but as a primary component of the intelligence architecture. Very exciting times!

<comment><USER24> If a AI could understand goals, actors, terrain, and navigation in a RPG environment like TES or Fallout, it could navigate our environment pretty well and do tasks akin to the game's quests. It's still a long ways off, but I'm already imagining a future of literal capitalist robots doing chores for points.

</comment></comment><comment><USER25> I always had a feeling that the path to an intelligent system should be similar to that of Google's autocomplete algorithm.

On boot, all surrounding data will be taken in, this step would give everything context. All new data coming in would be processed (referenced to original data to determine what is happening and actions to take), then clustered, and then updated to the original data set, dropping data from the original set determined to be irrelevant, and updating the context to give more relevant perspective of the new data coming in. (And loop)

</comment><comment><USER26> I agree. No free lunch implies no general algorithm for solving random problems from the set of all problems. So what's the practical subset of problems that is useful in the real world? Fingers crossed, we already encoded the useful problems in the different game genres we developed. E.g. RTS pushes the planning vs. reaction dilemma, RPG tests verbal inference and morality, puzzles test logic etc. We already digitized a large claas of problems we care about for the real world in games!

</comment><comment><USER24> The game "Yavalath" [1] in the article looks really neat: A simple little game with only two rules which never really ends in a draw, unlike tic tac toe.

[1] [http://cameronius.com/games/yavalath/](http://cameronius.com/games/yavalath/)

</comment><comment><USER27> So, black-box / integration testing for AI? Neat.

On a related note, I think an official driving test simulation for all the self-driving algorithms, perhaps sponsored by the government, would be really beneficial.

</comment><comment><USER28> I think it is emotions. Teach the car that cracks in the tarmac affect its fitness negatively, and it will drive better avoiding them or passthis ng them with caution in the long run.

At least motorcycle drivers who care are better drivers.

</comment><comment><USER29> I don't think building an AI is the most important task on our plate. We still have those disease, hunger, poverty, and war problems to contend with. If building an AI helps us solve those, then sure, let's build the AI. But I don't think strong AI is necessary to gain traction on the problems that confront the sapient beings we already have around.

<comment><USER30> Along similar lines, since AI is considered to be potentially dangerous, by figures from Elon Musk to Stephen Hawking, I would rather our civilization never open this pandora's box. We can solve Earth's problems and even spread to the stars without AI. We can invent fusion reactors and thus nearly free energy without AI. We can engineer biological immortality into our very genes without AI. Why risk playing with a loaded gun?

<comment><USER31> But strong AI may figure out how to save us.

One argument says AI may become smarter than us and decide to kill us all, either on purpose or by accident.

But why not consider that the AI may be kind, it may help us and give us things. After all, smart humans are generally kind. Most of us wouldn't think to kill a dolphin, why would an AI think to kill a human or a dolphin?

<comment><USER32> _After all, smart humans are generally kind._

?? Smart humans drive cars which splat thousands of insects on their windshields. Smart humans buy clothes imported from third world child working sweatshops, and food from slaughtered pigs and cows and chickens farmed in unpleasant conditions. Smart humans flush their excrement into the rivers they take drinking water from, and the oceans they fish food from, the same places they dump their unwanted plastic. Smart humans dig oil up, convert it into disposable plastic, and then bury it and build homes on top. Smart humans fight other humans to the death for oil instead of funding renewable energy, smart humans bitch at other humans over anything they have impassioned disagreements about.

Smart humans are generally kind: a) to other _humans_ , b) _who they care about_ (or share some world view with).

To quote WaitButWhy.com:

 _if there are two guinea pigs, one normal one and one with the mind of a tarantula, I would feel much less comfortable holding the latter guinea pig, even if I knew neither would hurt me.

Now imagine that you made a spider much, much smarter—so much so that it far surpassed human intelligence? Would it then become familiar to us and feel human emotions like empathy and humor and love? No, it wouldn't, because there's no reason becoming smarter would make it more human—it would be incredibly smart but also still fundamentally a spider in its core inner workings. I find this unbelievably creepy. I would not want to spend time with a superintelligent spider. Would you??

When we're talking about ASI, the same concept applies—it would become superintelligent, but it would be no more human than your laptop is. It would be totally alien to us—in fact, by not being biology at all, it would be more alien than the smart tarantula.

By making AI either good or evil, movies constantly anthropomorphize AI, which makes it less creepy than it really would be. This leaves us with a false comfort when we think about human-level or superhuman-level AI._

\- [http://waitbutwhy.com/2015/01/artificial-intelligence- revolu...](http://waitbutwhy.com/2015/01/artificial-intelligence- revolution-2.html)

<comment><USER33> I agree with true AI possibly being extremely non-human, but according to your examples that could be its most important feature. Us humans don't have the mental capacity to link child sweatshops to our limited world view, but an AI might, exactly because it's not limited by biology.

And even that also depends on upbringing. Our super intelligent spider who's been raised well (and associates with humans) should be friendlier than say a super intelligent dog who doesn't associate with humans.

Basically for me it comes down to how/if it associates with us. If so (or not), what does it stand to gain from exploiting us?

<comment><USER32> You're arguing that it will act like us because it will be intelligent.

That doesn't hold. Dogs have millions of years of evolution of being pack mammals with leaders, spiders don't.

We are superintelligent compared to spiders, we don't care about what spiders care about just because we grow up with spiders nearby. We still kill them, wreck their habitats, and ignore them.

We don't _exploit_ them. They're too irrelevant to be exploitable. We bulldoze them away and put buildings millions of times bigger than them on top.

A superintelligence which is amoral won't care about us just from being near us, like we don't care about wrapping wasps in silk just from being near spiders. We can't associate with spiders, an AI won't _automatically_ be able, willing or interested in associating with us - unless we code that in. It won't exploit us, it will go about its goals without considering us as anything special or interesting.

</comment></comment></comment></comment></comment></comment><comment><USER34> "The most important thing for humanity to do right now is to invent true artificial intelligence"

Maybe the article makes some valid scientific points, but I simply cannot go past this unscientific opening claim to a purportedly scientific article. Not just me, no peer-review journal will accept such frivolity. Passing on the article and hoping for better scientific writing in the future!

<comment><USER35> This is someone's blog, not a peer-review journal. And sure, that someone is a researcher and thus you might want to hold them to a peer-reviewed journal standard in their blog posts.

Personally, I appreciate the amount of time that clearly went into writing this blog post and the information shared therein. Most of what's shared on Hacker News doesn't go into the depth of this article.

<comment><USER34> In a world dominated by hyperboles, opinions, click bait and general Fox newsification, I do realize that demanding unbiased facts can be an alien concept, but generally expected the hacker news community to embrace this thinking. I've been repeatedly surprised by down voting for not being an echo chamber - HN doesn't like dissidents.

<comment><USER35> Where can someone express their opinions then, if not on their own blogs?

<comment><USER34> Anywhere - free speech IS non negotiable, free speech IS essential. However, intelligent speech is what I expect to gain traction on HN. There's plenty of free and inaccurate speech on the internet. I mistakenly expected a democratic, community curated forum to up vote accurate speech. Alas

BTW- it's okay for a stranger on the internet to disagree with one's blog/opinion. Clearly, for every stickler like me, there are hundreds who actually enjoy the baroque writing and opinions. I'm just likely not the target audience - which is just fine by the author and a cursory glancer such as I.

But you see, my speech is drowned out in a sea of upvotes that completely disagree with the me, somehow lending more credence to the author. It's like a town hall meeting where the crowd boos someone because of differing popular opinion - they only want to hear what they already think.

<comment><USER20> What is your problem? What is so unintelligent about the article? How is it biased or inaccurate?

<comment><USER34> What is your problem with my opinion differing from yours?

<comment><USER20> Because your complaints about the article make no sense. The article neither claims to be an academic paper, nor is there anything particularly wrong with it. You even admit you didn't read it so why are you writing comments complaining about it?

<comment><USER34> I'm entitled to my opinion just like you're entitled to yours, and my opinion happens to be negative, the reason for which is spelt out clearly in my opening salvo.

I'm stunned that you think your point of view is somehow the only one. Why are you quelling criticism?

<comment><USER20> I'm not "quelling criticism", I'm saying that you are wrong. And rude for insulting OP.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER36> > Video games are essential for inventing artificial intelligence

And here's why they aren't: First-person Shooters.

Why give AI something that's a goal that involves killing things that look like humans or animals for points? That's a recipe for disaster.

Breakout's not much better either. How often do you need to break a wall to smithereens with a ball? Never.

<comment><AUTHOR> It's hard to create believable AI in a first-person shooter. See: [http://nn.cs.utexas.edu/?botprize2012](http://nn.cs.utexas.edu/?botprize2012)

It's actually really hard to create well-performing AI in a first person shooter, unless you give it explicit access to the internal state of the game. See: [http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=612949...](http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6129491&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6129491)

<comment><USER37> I guess there's a pretty big difference between making AI that is 'perfect' at the game vs AI that is believable / indistinguishable from a human.

I mean do we want all AI endeavors to be towards believe-ability or being best at the job they're designed for?

<comment><USER20> They are different challenges that are both very hard and require similar methods.

They might not even be mutually exclusive. If you give an AI the same handicaps as a human, it would likely behave in a very similar way.

That is handicaps like delayed inputs for reaction time. Fuzzed outputs so it can't time movements absolutely perfectly. Giving it limited amounts of training on the game so it can't get extremely good. And requiring it to play the game through the same user interface. So that it can't see things humans can't or micromanage 50 different things at once.</comment></comment></comment></comment>