Riot.js – A 1kb client-side MVP framework - <AUTHOR> https://moot.it/blog/technology/riotjs-the-1kb-mvp-framework.html <comment><USER2> While I'd usually prefer to be nice in the mornings ... starting off with those benchmarks got my goat. So.

This sort of thing is a _beautiful_ demonstration of marketing, big promises, and bombastic rhetoric in open source. But one of the best things about open source is that you don't have to take such claims at face value. If you actually look at the source, you'll find:

[https://github.com/moot/riotjs/blob/29ae687ca0633b703e124331...](https://github.com/moot/riotjs/blob/29ae687ca0633b703e124331f6395052b051355b/riot.js)

* A funny syntax for string interpolation. (Not templates)

* A strange bug relating to "popstate", ignoring browser support for folks on IE.

* A simple proxy to jQuery's `on`, `off`, `emit`, and `one` functions. (Why not just use jQuery events directly?)

* A simple proxy to "pushstate" and "popstate". (Ditto)

... and that's about it.

Calling this, "The fastest, smallest and most powerful client side framework for building large scale web applications," is pretty funny stuff — but I guess it might also be true. There's almost _literally nothing_ here except for jQuery.

That said, if this were rewritten as a "you don't need a library to do MVC" blog post, then more power to it — it would be right on. But at the moment, it's a pretty spectacular piece of puffery — the sad thing being just how effective this sort of thing can be: [http://cl.ly/SFzy](http://cl.ly/SFzy). "Riot.js" might be a particularly egregious example, but similar tactics can be found all over the place. As a community, it would be nice if we could spend a little more time reading source, and seeing what libraries _actually_ do and what can be done with them, and less time just drinking down the PR.

(And if this is all an elaborate joke, then I'm an ass for falling for it ;) But that's not the sense I get.)

<comment><USER3> You say that like it's a bad thing. I like the idea that riot.js is small enough that it 'outsources' it's meaty functions to jQuery (a library you most likely have in your project already). It means fewer bugs and less work for you! More time to enjoy life. There are tons of very smart developers working on jQuery,why replicate their work on riot.js?

If your project doesn't use jQuery feel free to use the right tool for the right job - I can't remember the last time I worked on a web project that didn't have jQuery.

<comment><USER4> I'm pretty sure Jeremy was not criticising the jQuery dependency, since his framework (Backbone) also depends on it. He is just stating that there's nothing actually _in_ riot.js, it _just_ proxies to jQuery.

The project might as well just be a blog post with what I'd consider the only useful and _non-hyperbolic_ aspect which was:

> What people refer to as spaghetti is in fact a mixture of model and view > code. To avoid it, simply separate your model code from the view with > observables.

Fine. I agree that people shouldn't falsely miscredit jQuery for causing spaghetti code and understanding basic separation is valuable. Unfortunately the following line is one of hyperbole:

> You don't need a framework for that.

Which I have a problem with for 2 reasons:

1\. That is not _all_ frameworks do. They also reduce the amount of boilerplate, repetitive code you have to write. Riot.js does not appear to do so (significantly). Look at the amount of code in the TodoMVC example's model [1]. That would be dramatically less code when using Backbone.

2\. Nobody _needs_ a framework. But frameworks establish conventions and conventions are very valuable for collaboration as well as general discussion of patterns and ideas.

And as for:

> Current frameworks persuade false beliefs with shiny websites and finely > crafted marketing without transparent, scientific analysis. They solve > hypothetical problems and cause new problems instead. Unfortunately, large > communities are dealing with irrelevant issues.

Seriously? I want to swear and throw things, and I'm not even a framework author.

[1] [https://github.com/moot/riotjs/blob/master/todomvc/dist/todo...](https://github.com/moot/riotjs/blob/master/todomvc/dist/todo.js)

<comment><AUTHOR> Riot does templating, routing and separation of concerns rather beatutifully, I would say. Those are the things most frameworks are build for. What do you see missing?

The amount of Todo MVC code in Riot is actually smaller than in Backbone but like I say on the post the focus should not be on the code size but on simplicity – and this is why Riot advocates MVP a lot. Actually Backbone also seems like a MVP framework to me.

<comment><USER5> It seems the Presenter example is pretty broken (unless I'm just stupid). I don't see a `todo` variable defined anywhere, but it's used in several places. Perhaps `var model =` was just missed in a rename?

Also, the "toggle all" function uses a `filter` variable that's undefined AFAICT.

I'm not trying to knock the framework. I like what I see. Just a little hard to follow along when I'm not sure if the code is wrong, or my understanding of it is.

<comment><USER6> I thought the same thing about the `store` variable in the `Todo` object. Not sure what we're missing.

</comment></comment></comment></comment></comment></comment><comment><USER7> There isn't very much to see here, if anything. A few meaningless microbenchmarks, and some "plain old JavaScript objects" that hijack jQuery's event subsystem so they can emit events just like DOM elements. We've been doing imperative, evented programming in the browser for years now.

 _Even if_ you're inclined to argue that this style of programming doesn't lead to a giant mess (and I'm inclined to believe that it does, even if you are _the most disciplined_ of programmers) I still don't see the benefit of adding this 1K of JavaScript to my page at all. I can duplicate $.observable with a vanilla jQuery object.

To call this the "most powerful client side framework for building large scale web applications" is downright laughable.

<comment><USER8> This isn't just 'imperative, evented programming' though. It gives a clear answer on how to separate your code into concerns, although I agree that there isn't much forcing you to follow good practices.

The problem with the typical 'jquery-type' programming was that apps were essentially an ad-hoc collection of (sometimes massive) event handlers. I think the problem boiled down to:

* there wasn't much experience and consensus on how to organise javascript code (split it into module etc.)

* the DOM is global, meaning you can register event handlers to anything from anywhere (To make matters worse events bubble up and down the DOM tree)!

It seems like people immediately resorted to extremes to solve these issue - basically trying to abstract away the DOM and even javascript completely - whereas the solution could be something much simpler and subtler.

</comment></comment><comment><USER9> The current crop of frameworks do feel like they're trying to abstract away the browser a little bit. They have the feel of something like JSF1 (java), they get the job done but the abstraction is so thick that it's difficult to integrate things like jquery without jumping through a few hoops. A lighter framework that achieves the same things without all the fuss would be very welcome. The danger is that the abstraction is too thin and you end up writing half a framework yourself to plug the gaps but maybe riotjs has managed to get closer to the sweet spot.

</comment><comment><USER10> I apologize if I'm missing something, I'm not a data visualization expert, but what the heck is going on with that graph? [http://content.screencast.com/users/sequoia.m/folders/Jing/m...](http://content.screencast.com/users/sequoia.m/folders/Jing/media/4571c9dc-4664-4dd4-9c3f-0c0e86647fd3/2013-11-01_0847.png)

<comment><USER11> The bars are relative to data in it's own category (eg. 200x), you're comparing apples to oranges.

<comment><AUTHOR> Thanks for the short way of explaining how it works. Will add this exact clarification on the site.

</comment></comment></comment><comment><USER12> I think it's rather disingenuous to call this a "1 kb" framework when it depends on jQuery (83,612 bytes as of 2.0.3). I don't know about the other frameworks, but the current stable version of angular is 81,447 bytes and does not depend on jQuery, and is significantly more expressive.

</comment><comment><USER8> I really love the minimal approach and a lot of it echoes my experience as well. One thing that I would love to see (mostly because I haven't found good solutions for it myself) is how CSS fits into the whole thing. The way I see it, CSS touches several aspects in the MVP pattern. There is the view part, which is strictly how things look on the screen but there is also the presenter part, which includes thing like, 'now show this thing', 'animate this, and when it is done, do this'.

</comment><comment><USER13> I love the refreshingly minimal approach, although jQuery dependency ruins some of the excitement, but still, great work guys!

<comment><AUTHOR> Thanks. jQuery dependency is intentional since the library promotes the use of jQuery on the presenter layer.

<comment><USER14> I really like this outlook.

Most developers don't bother about the presentation layer and they think that jQuery is a pain but most front-end designer and developers rely on it.

Great step.

</comment></comment></comment><comment><USER15> This looks really pretty good. I think I would miss things like ng-each, but I guess not that's not -too- hard to re-implement using $.data('each'). Maybe. I will consider using this for a site I'm building right now, see what happens.

</comment><comment><USER2> [Retracted.]

... but, if you're going to test Underscore templates for speed, you need to use the `variable` setting to avoid the `with` block.

<comment><USER16> I don't think that's fair since a templating engine could easily avoid the actual with statement but provide same convenience. Optimization should be done in the implementation (which is fully possible here) and not at the cost of API ergonomics.

<comment><USER2>
        > a templating engine could easily avoid the actual with
        > statement but provide same convenience

I'm afraid that's not possible. If you look at other micro-templating libraries that allow arbitrary JavaScript values, you'll find that there are two options. Either you can support naked variables, and you have to use "with" to bring them into scope ... _or_ you have to prefix all of your variable accesses off a "data" object, which is less ergonomic, but faster. Underscore supports both.

If you've got a patch that is able to do otherwise, I'd love to see it ;)

<comment><USER16> I wasn't aware that the benchmark comparison was about micro-templating, it includes libraries like handlebars.

I am sure you realize you can just walk the AST for what identifiers are being used in the template code and forward declare them in the generated code so that reference errors are not caused.

<comment><USER2> If you allow arbitrary JavaScript, then I'm sure you realize that you can't "just walk the AST" ;)

At compile time, you have no idea which identifiers are incoming data values — to be supplied by the caller of the template function — and which identifiers already exist in scope.

<comment><USER16> Let me put it in code terms. In the following template script:

@hello

The generated code can be like (not including runtime lib):

        var ___html = "";
        var hello = hasown.call(data, "hello") ? data.hello : "";

        ___html += '
' +
                    safeString(hello, HTML_GENERIC) +
                    '
';

        return ___html;

Which gives same effect as `with`.

</comment></comment></comment></comment></comment></comment><comment><USER17> [off topic] i find very distracting that the title in the page changes when "Someone is writing..." a comment.

<comment><USER18> This is the second article I've read on this site, and the second time that I've noticed after about 5 minutes that my computer's fan sounds like it's about to take off. Disconnect gets stuck in some kind of loop on their site and I feel like it's because of that feature (edit: because I've never seen that feature or that Disconnect freakout on any other site).

</comment></comment><comment><USER19> I like how this looks, I definitively want to try it out.

With that being said :

> _Here 's the shocking part: a 1Kb library requires the least keystrokes to > build the Todo MVC application_

I'll decide on my own if it's shocking or not. Also I don't care that much about keystrokes, there's nothing wrong with verbose/expressive languages. I want my code to be readable and maintainable, and then concise if possible. This project looks cool but I wish its creator(s) was/were a bit more humble.

<comment><AUTHOR> I still find it really surprising that I was able to write the Todo APP in least amount of keystrokes by using only 1kb of "framework" code.

And I totally agree that the goal should be readability and maintainability – this is what the post is mostly about.

<comment><USER20> Except, that's not true - the Angular TodoMVC code is smaller and more expressive, and Angular's JS is actually smaller than Riot + jQuery.

I get what you're trying to do here but please don't resort to misleading statements to prove your point. This community sees right through it and every time you say things like this, you lose credibility.

</comment></comment></comment><comment><USER21> I love minimal code. When you try to do minimal, often what you end up doing is stripping away everything you don't need -- extreme YAGNI -- and getting to the core of something. Even if the result ends up being too minimal, it's often extremely educational.

To remove the jQuery dependency I'd suggest looking at this: [http://minifiedjs.com/](http://minifiedjs.com/)

</comment><comment><USER10> It looks like the meat of $.observable is mostly just passing thru to jQuery [https://github.com/moot/riotjs/blob/master/riot.js#L29-L54](https://github.com/moot/riotjs/blob/master/riot.js#L29-L54) I don't really have an opinion on whether this is good or bad but it's worth noting that jQuery is doing the heavy lifting here.

A couple code notes:

* why, in the observable function, are you switching functionality not by the name of the function called ('on','emit', etc.) but by the index of that function name in the array on line 32? This strikes me as brittle because adding to or rearranging that array would cause the whole function to fall apart. It's also harder to read- I'm looking at `if(i == 2)` rather than `if( fnName === 'emit' )`. Does this yield a significant performance gain or is it just to juice the final "weight" of the library (<1kb)? I ask because it sure as heck makes the code harder to read.

* Using `name` & `names` as variable names makes the code harder to read, as it doesn't give any meaningful context about what the variable stores (besides the fact that it probably represents a thing that has a "name"). It looks like in this case it represents event names but more descriptive variable names would eliminate this ambiguity & it would make no difference to the code weight after minification.

I bring these things up because this lib looks cool & I like the "you can easily read the whole source" point, but this obsession with brevity (that's what it looks like at least) causes code readability to suffer & greatly diminishes the benefit of being able to "easily read the whole source." Make the code more readable & more people will use the project & contribute. :)

</comment><comment><USER22> How can someone just beat Resig's or Jashkenas' code performance "that easily"?

<comment><USER2> [https://github.com/moot/riotjs/blob/master/riot.js#L12-L21](https://github.com/moot/riotjs/blob/master/riot.js#L12-L21)

By only supporting simple single property accesses. All that this can do is print values from an object — no loops, conditionals, filters, methods, or anything else — like the others support. Think string interpolation, not templates.

<comment><AUTHOR> Yeah. The idea is to support variable substitution (string interpolation) only. The loops are supposed to be done on the Presentation layer.

<comment><USER23> You should remove the need to wrap the replacement strings in {} so the templates don't need to be rewritten. As it stands now, you're requiring people to write a template once, than rewrite it, and then debug the final result. Better to just use basic HTML.

</comment></comment></comment></comment><comment><USER24> How hard would it be to remove the jQuery dependency? It looks like it really only needs $.on/$.off/$.one/$.emit, which could surely cut the _actual_ size down a _lot_ from 94kb.

<comment><USER25> Someone needs to get started on breaking JQ down into it's component pieces. So much in there that I never use.

<comment><USER26> [https://www.google.com/search?q=jquery+build](https://www.google.com/search?q=jquery+build)

</comment></comment></comment><comment><USER27> Here is the entire source: [https://github.com/moot/riotjs/blob/master/riot.js](https://github.com/moot/riotjs/blob/master/riot.js)

<comment><USER28> * jQuery not shown

</comment></comment><comment><USER29> TL;DR: "You don't need a framework for that"

</comment><comment><USER30> 1kb, plus jQuery's 50. This must be a joke...

<comment><USER31> Indeed. The whole reason for the existence of all these frameworks riot is being compared is to to simplify development.

Angular has no dependancies. Knockout also has no dependancies, so it's actually 13k > than riot.

For anyone who really serious about going minimal, here are some alternatives to jquery to build on.

9.7kb [http://zeptojs.com/](http://zeptojs.com/) 3.4kb [https://github.com/rpflorence/snack](https://github.com/rpflorence/snack) 5.0kb [https://github.com/julienw/dollardom/](https://github.com/julienw/dollardom/) 10kb [http://xuijs.com/](http://xuijs.com/) <1kb [https://github.com/honza/140medley](https://github.com/honza/140medley)

What a riot!

</comment></comment><comment><USER32> It looks like a nice little library. Unfortunately, most of these "micro super fast i can build a todo app in 4 lines of code" things aren't enough anymore.

Most of us aren't building "Todo" apps. We're building bigger apps which require - or are more suitable - for a framework like Angular/Ember. That's just my 2 cents.

<comment><AUTHOR> Moot is a complete discussion system built with Riot / MVP. There is no other app than Todo MVC to make comparisons.

</comment></comment><comment><USER33> Seems really nice, but I would not call this a framework. Just like Backbone, it is more of a library than anything else.

<comment><USER34> The lack of framework-ness is what makes it interesting: you're not handing your _entire app 's architecture_ to a framework and hoping for the best. This library knows its place, and it is happy to be there, instead of spreading itself all over your code and claiming it is helping you.

</comment></comment><comment><USER35> I like this idea, you can in fact build a MVP framework without writing a 1kb library, assuming he's not counting the dependencies (jQuery), you can aswell use Hogan/Mustache/Underscore templates, a router libarary, an observer library and jQuery.

I just dislike the use of "new" in javascript...

</comment><comment><USER36> This is a nice academic exercise but isn't very useful for real world apps. The logicless "views" alone make building anything complex impossible.

One of the reasons this is so light is that it forces you to write boilerplate code for models. I use libs to eliminate boilerplate, not force it upon me.

</comment><comment><USER37> I think 'once' would be a better name for the API function instead of 'one'.

<comment><USER8> +1 to that. I would even suggest 'onceOn'.

</comment></comment><comment><USER38> Completely ignoring the technical aspects of the framework. The branding being used looks like a rip-off of Riot the design and development studio in England. [http://riothq.com](http://riothq.com)

<comment><USER25> THEY'RE BOTH RIPPING OFF OWS [http://occupywallst.org/](http://occupywallst.org/)! Power to the people.

</comment></comment><comment><USER39> I think this looks great. Thought I'd let you know I found a typo though. In the jQuery section, last paragraph, "Riot takes a puristic approach and does not allow you to do mix any logic inside HTML views."

</comment><comment><USER40> Precompilation renders template rendering speeds...moot.

What a weird factor to use for choosing a template engine. Also there already is a popular unit test framework called riot.js

<comment><AUTHOR> > Precompilation renders template rendering speeds.

Not 100% sure what you mean but if you measure the time to render a HTML fragment 100 times the total time is 1 x pre-compilation + 100 x rendering. The pre-compilation has virtually no effect on the total time.

<comment><USER40> I mean that if you do the HTML parsing to JavaScript portion as part of your deploy, instead of in the browser at render time, then all you're measuring is string concatenation and HTML render times, which should always be the same. Template rendering speeds in that case mean nothing.

<comment><USER20> Exactly - with the proliferation of Grunt in most modern webapp builds, it is incredibly simple to pre-compile your templates in your production builds. In fact, it's so fast (and I get useful stacktraces when my tpls have errors) that I started precompiling templates in development, too.

I find the bottleneck is 99% the browser's HTML parser and 1% the actual templating library.

If somebody had any tips on how to bring down the "Parse HTML" time spent in the Chrome inspector (see Timeline), I would be interested to know. Tips other than, of course, "parse less HTML".

</comment></comment></comment></comment><comment><USER41> There's always room for microframeworks, thank you.

</comment><comment><USER42> I'm going to go ahead and assume this is satire.

</comment><comment><USER43> Uh MVP (Minimum Viable Product) vs. MVP (Model View Presenter). That will be confusing.

(still nice project of course)

<comment><USER44> I still find it hard not to think "Most Valuable Player" whenever i read MVP

<comment><USER45> This is the real winner of the confusing acronym debate. Thank you little league for forcing me to think that startups only need an insane athlete to start getting users and feedback to mold the product.

</comment></comment></comment><comment><USER46> Would be nice to have Angular, Backbone and Knockout included in the speed graph.

<comment><USER47> Backbone's Underscore was included.

</comment></comment><comment><USER14> @tipirai Could you please put up more posts on usage and the documentation?

<comment><AUTHOR> I'll do that on my next post. I just wanted to push out the general idea first.

</comment></comment><comment><USER25> key feature of many frameworks is that they break if you don't follow them carefully, limiting damage from 10x developer's hacked together code. does riot provide similar functionality?

<comment><AUTHOR> Developing with Riot is completely different from other frameworks. It's just 3 functions and after 1.0 the API will be hardened. It's more of a design pattern than a framework. The application developer is the biggest culprit for breaking things.

<comment><USER48> Calling this a framework is a bit of a stretch isn't it? I don't see how a few helper functions that rely on a very large library constitute a framework for doing anything at all.

<comment><AUTHOR> Yeah. I guess it's more of an library, but it promotes the use of MVP design pattern / way of coding – and can thus be interpreted as a framework. I might change it to library if it makes more sense.

</comment></comment></comment></comment><comment><USER49> Which tool did you use to make those MVP diagrams? They look gorgeous!

<comment><USER50> Thanks! They were drawn in Adobe Illustrator.

</comment></comment><comment><USER51> _Oh I didn 't know Cristopher Poole is a programmer!_

Okay, he isn't.

</comment><comment><USER24> 1kb (+ 93kb for mandatory jQuery dependency)</comment>


How to lose customers: Remove a feature you thought they weren't using - <AUTHOR> https://community.spotify.com/t5/Live-Ideas/Android-Android-Widget/idi-p/4802473#comments <comment><USER2> They didn't "remove" the feature, they moved the feature.

Instead of a launcher widget only found on the home/lock screen of supported launchers, they instead have a permanent expandable notification widget which is available from the existing places, plus more (Home and Lock Screens like the old widget, plus usable while other apps have focus).

It contains all the same information and controls but now works in more places. It also allows you to control it/disable it directly from the App Info panel. It is also launcher agnostic. This is mostly a user training/education issue. More information:

[https://community.spotify.com/t5/Android/Android-Widget- Remo...](https://community.spotify.com/t5/Android/Android-Widget- Removal/m-p/4800301)

Plus, in my opinion the whole "it is an optional feature, why even remove it!" argument only makes sense when you ignore the maintenance/support required to keep it in. Android Widgets actually require a lot of tinkering to keep working correctly between major versions and across device form-factors.

</comment><comment><USER3> Headline seems overly editorialized.

Granted, I didn't read the whole thread, but I didn't see any indication that Spotify don't have usage statistics on widgets and I also didn't see any indication of actual customer loss.

</comment><comment><USER4> Spotify should allow for 3rd party independent players. It is not possible to make single perfect music app for billions of customers.

I do not like the direction Spotify app is evolving. I understand that they would like to control user experience, promote podcasts, in-house playlists etc but this is not what I like. Multiple competing Spotify players for different user niches would be a better way to go then single app.

</comment><comment><USER5> I once made a simple counter app, and I actually got some very negative reviews on the Google Play store for NOT having a widget for it. Sent my app ratings in the toilet. Android users _love_ their widgets...</comment>


I No Longer Need StackOverflow - <AUTHOR> http://toumorokoshi.github.io/i-no-longer-need-stackoverflow.html <comment><USER2> I no longer need the Internet.

My hamster chewed through a CAT cable last week; it took me three days to notice, so complete was my Zen immersion in creating a period-accurate replica of the first Galilean telescope, using only Haskell lenses.

When it finally dawned on me I had attained a sophistication that transcended the internet, I felt the inessentials fall away from my craft in an instant, and I was left in an affectless state of pure, actualized _creation_.

Now, don't get me wrong, I'm not saying the Internet isn't a great tool- I remember when I, too, used the Internet on a regular basis, daily even, and perhaps even relied on it. If you have no idea about anything whatsoever, it can be a fantastic resource. But when I want to know something, I don't look up the documentation, or download the source code. I _am_ the source code, the documentation, the alpha build, the omega build. The Seraphic gatekeeper of the NANDs. The bit stops here.

So I ask you- are you ready to unplug? Because I already did.

<comment><USER3> how did you post?

<comment><USER4> Butterflies, I imagine

<comment><USER5> I presume you mean this? [http://xkcd.com/378/](http://xkcd.com/378/)

<comment><USER6> Do we really need every reference spelled out explicitly?

</comment></comment></comment></comment></comment><comment><USER7> It's not always a question of "needing" something, it's a question of whether you spend 5 minutes searching for the answer or 50 minutes, or 5 hours.

It's a tool. Use it.

<comment><USER8> Convenience is good but i have to agree with him on this one.

Understanding the technology in a deeper way is a lot more useful in the long run.

And once you understand it answering other questions you may have gets a lot easier and arguably that 5 hour investment in the beginning may be a bargain.

He spends 5 hours to understand it first you spend 5-10 minutes on each question and you may run into dozens if not hundreds of questions depending on what you're doing at the end of the day you may just come out even but do that long enough and you're worse off using SO for shortcuts instead of just learning how it works.

<comment><USER7> Easy solution:

1\. Look up the first 60 questions on StackOverflow. That amounts to 5 hours you would've spent on just the first one.

2\. If you still have more questions, spend another 5 hours learning the ins and outs of the darn thing.

Problem solved: now you're not sacrificing latency for throughput.

<comment><USER9> This is exactly the rent-or-buy problem! [http://en.wikipedia.org/wiki/Ski_rental_problem](http://en.wikipedia.org/wiki/Ski_rental_problem)

You just described the best deterministic algorithm, but it turns out there are even better randomized algorithms, where you "flip a coin" when deciding to look up StackOverflow or keep learning (of course, that may or may not be practical :p).

<comment><USER10> Thanks for the link!

Hmm... given that you stated that the best randomized algorithms we have beat our best deterministic ones, isn't there a place for even better deterministic algorithm?

<comment><USER9> Nope. Thats really the point - if we find the best deterministic algorithm, it means we have found the one with the best deterministic running time. By loosening our criteria of running time to _expected_ running time and allowing randomness, we can sometimes do better than deterministic algorithms.

<comment><USER10> It doesn't square well with my intuition - if we understand how allowing randomness improves expected running time, then surely we must be able to create a deterministic algorithm that is at least as good as the randomized one.

Am I missing some critical piece of understanding here?

<comment><USER9> Well keep in mind that the inputs to the algorithm can vary. Randomization can help avoid a bad input from throwing your algorithm off. A simple example of how randomization helps is quicksort:

if we pick the pivot to always be the first element, then any sorted array will cause worst-case running time. But by randomizing the pivot, we can do well (in expectation) for any input.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Is not using something for a single day a sign you never need it? I sometimes don't refer to SO for weeks, simply because I'm dealing with problems I can figure out without it.

But sometimes I'm dealing with something I'm totally unfamiliar with, and docs and tutorials are badly written, and then some example on Stackoverflow can be a great help.

And more importantly, sometimes I'm stuck on something really obscure. Doesn't happen a lot; once every few months or so, but when it happens, putting a bounty on Stackoverflow is a really nice option to have.

Are there really people who check Stackoverflow every single day of programming?

<comment><USER12> > Are there really people who check Stackoverflow every single day of > programming?

[http://stackoverflow.com/help/badges/83/fanatic](http://stackoverflow.com/help/badges/83/fanatic)

<comment><USER13> Please, that's the easiest gold badge to get and probably not a good indicator of anything. For a user interested in badges, this is the easiest way to get a gold without having interesting content.

</comment></comment></comment><comment><USER14> Some guy in his early 20ies thinks he has it all figured out. News at 11.

<comment><USER15> I'm in my early 30' and I desperately need stackoverflow and anything that shows up in a quick Google search. I need to spend time on deciding what problems to solve and on what's the proper solution. Not how to implement the solution.

</comment></comment><comment><USER16> When SO's down, all the programmers grind to a halt. When HN's down, all of them accelerate to levels normally unseen.

<comment><USER10> So what happens when both SO and HN are down? Where does that spontaneously unleashed energy go?

<comment><USER17> Suicide rate went up or people running in circle very quickly. #ScienceFact

</comment></comment></comment><comment><USER18> I'm capable of debugging stuff myself, but I still always go to SO as my first port of call when I hit a roadblock. If I can find a comprehensive answer in 1 or 2 minutes of searching around, which I normally can unless it's really niche, that's far better than wracking my brains looking through somebody else's unfamiliar code.

</comment><comment><USER19> You have reached the inflection point. This is when you start contributing to StackOverflow.

<comment><USER20> closed as not constructive by VLM Feb 17 '14 at 07:54 EST

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion.

</comment></comment><comment><USER21> Now you've finally matured into the kind of developer who can ask interesting questions - the type that are not easily answered by studying docs or source code. Sometimes because you're not asking the right questions, sometimes because your problem is obscure, sometimes because it's a little bit "subjective" \- but above all, it should be interesting to other people who also know how to read docs and source.

<comment><USER22> So ... the type of question that gets rejected on StackOverflow.

<comment><USER20> There's (click arrows to navigate) always (click arrows to navigate) wiki.answers.com (click arrows to navigate)

I believe that site exists solely to punish me for doing google searches like "wiki something" to find a relevant related topic, and also to make me swear at google for removing the "block results from this site" feature from search, which, however temporarily, was awesome.

</comment></comment></comment><comment><USER23> Well looks like the poster doesn't use SO quite well on a normal day then.

What you describe as a newfound way to program is actually what should be considered normal. SO isn't about getting an answer to some code problem or your homework or something like that.

To benefit from SO you should have an informed question that displays a good degree of personal research. THEN it's time to tap for the collective developer mind and be enlightened.

<comment><USER24> Or you know, you can't remember if Find is find(needle, haystack) or find(haystack, needle) and SO is the first result when you google.

Or any of the other "everyday" queries which are quicker to resolve via google + SO than the "real" documentation.

</comment></comment><comment><USER25> > _Whenever a library behaved in an unexpected way, I started digging into the > code to really understand what was going on. Instead of asking StackOverflow > if an API exists or a library has a particular feature, I read the docs > instead. Instead of asking if my theory will work, I figure out a way to > test it, and try it on my own machine._

Yes. Or you could use Stack Overflow, and also learn something you didn't know by reading the answers.

<comment><USER12> The difference here is the difference between just _seeing_ how something works and _feeling_ how it works. There are a lot of people who are able to just read things and absorb them into their mindspace, but I feel that for the majority the 'click' doesn't happen until you try it yourself.

</comment></comment><comment> V-2 "Instead of asking StackOverflow if an API exists or a library has a particular feature, I read the docs instead."

That's what you're supposed to do :) Ask the question only after you do the homework, not INSTEAD of it

<comment><USER26> In my experience, just googling a (simple) question is much faster than trying to browse any documentation by some other means. One could say that the web is the docs nowadays and Google is just the frontend.

<comment><USER27> You can consider googling as searching the documentation, even if the said documentation is an answer on SO.

What V-2 rightly said is that you should do that before _asking_ on SO, not before looking through it for an answer.

Anyway, this whole article is pointless, and senseless. I fail to see why people would upvote it.

</comment></comment></comment><comment><USER28> On one hand, I don't need SO much either. I mostly go there to answer questions, not to ask them or research them.

On the other hand, SE has some really great sites where I can get really good reviews of stuff I am working on by other people other people who know their stuff (I use dba.stackexchange.com this way).

<comment><USER29> _I mostly go there to answer questions, not to ask them or research them_

2nd. After getting so many good answers from there (which is btw not exactly the same as _needing_ SO, there are other sites and resources out there, SO is just by far the fastest and most convenient way out there), I feel a need to give things back. I admit in the beginning that feel was driven by rep. But once there was more than 10k next to my name I stopped caring that much and just wanted to help people. Especially those with weird hard to figure out problems in some specialized domains.

<comment><USER30> I find that answering questions on SO or some other forum, is actually a good way to get smarter about a topic. Or just keep sharp. So it doesn't have to be an all altruistic effort.

</comment></comment></comment><comment> V-2 The guy hardly ever contributed to StackOverflow anyway - he's linking to his SO profile on his website. He only asked 8 questions and answered 5, in 4 years. Kinda like me and my mother-in-law.

So it's a bit like a bloke who hardly ever has a drink blogging how he "no longer needs alcohol" because he went through a whole weekend without sipping a beer : )

I know that you can use SO passively - only by searching - but the real power of the forum lies in the cases where your problem is original and you have to summon the community to give you a hand.

<comment><USER31> >but the real power of the forum lies in the cases where your problem is original and you have to summon the community to give you a hand.

Every time I have had an original problem, much of SO's value was similar to a stuffed animal that I could explain my problem to, with an occasional tip of something I should look into.

I personally get much more value out of SO by passively reading other peoples' questions/answers. I think that is the real power of the service.

</comment></comment><comment><USER32> I learnt from electronics.stackexchange in the other direction: I applied my fragmentary knowledge to _answering_ questions, as a hobby. A combination of googling, helping the questioner improve their question, and basic thinking has resulted in me getting about 10k rep and broadening my knowledge quite a bit.

My top-voted answers are surprisingly general: [http://electronics.stackexchange.com/questions/97277/when- ca...](http://electronics.stackexchange.com/questions/97277/when-can-fpgas-be- used-and-microcontrollers-dsps-not/97307#97307) and [http://electronics.stackexchange.com/questions/67598/how- are...](http://electronics.stackexchange.com/questions/67598/how-are- integrated-circuits-fabricated/67602#67602) (the top-voted answer by Olin Lanthrop is one of the highest-voted answers on the site and well worth a read). But I got 16 upvotes by translating assembler to English: [http://electronics.stackexchange.com/questions/86744/from-c-...](http://electronics.stackexchange.com/questions/86744/from- c-to-assembly/86746#86746) which I hadn't realised was such a rare skill in this area.

<comment><USER20> The how to make an IC question is a good example of group-think on SO. The question was general and very wide open, but everyone jumped on "how to discourage someone from making a modern processor fab plant in their basement" bandwagon. Or not answering the question in a tangent, or going all snarky. The best 5 minute answer to the actual question is probably just to look it up in wikipedia as at

[http://en.wikipedia.org/wiki/Integrated_circuit#Manufacturin...](http://en.wikipedia.org/wiki/Integrated_circuit#Manufacturing)

The commentary about fab at home was not very interesting, either. The true answer is its very much like making a rocket engine, high performance, cheap, and safe all at the same time requires a nation-state, 2 outta 3 is going to take some engineering skill, only 1 achieved is actually pretty easy at home for an experimenter. Ditto the fab. Twenty people repeating that you're not going to make a ARM proc anytime soon is not terribly insightful, but mentioning the work of the "instruments of amplification" guys and insinuating that once you obtain double digit betas, the logical next step of on die bias networks for a simple class A amp or perhaps a RTL (R, not DTL or TTL) inverter...

SO is notoriously good at groupthink. Sometimes what you need is groupthink, so thats OK. Sometimes not.

<comment><USER32> Note: that question has been edited considerably from how it was originally posted, and some of the author's original comments below deleted, in which the questioner was determined to do it at home.

EE.SO is very negative about "bad" questions, partly because it's small and can be run for the convenience of the dozen or so people who answer half the questions. I don't entirely approve but I see their point.

</comment></comment></comment><comment><USER33> I've been a developer professionally for over 7 years, I still use SO on a regular basis. I can dig through APIs, pull library code apart and do the research, but SO often speeds that process up. The chance of you having a completely unique question is small, but if you do then some incredibly smart developers are there to help. Why delay yourself from solving a problem and moving on?

</comment><comment><USER34> There is nothing wrong in needing SO.

I totally agree with the article that the initial source of documentation should not be SO though. Want to learn something? Yeah, then SO is not the starting place. Grab the tool, read the docs, browse the forums, engage with the community.

But sometimes there is no forums, or they are almost dead. Sometimes you want to know how other people are using that tool. Sometimes you don't find the answer to your question in the tool's forums and sometimes you got into trouble and can't figure out the issue by yourself. Even sometimes you've come up with a wonderful solution and that solution might actually be a mess but you haven't found out yet.

SO is an awesome and thrilling community that can help in all the above situations. So, in my opinion there is nothing wrong in using it to validate what you are doing or to find a solution to that annoying issue you are having or to simply help others. But yes, not really the starting point for learning something in my opinion. I don't think that is its intent either.

<comment><USER35> I agree in that it is nothing wrong, and everything about every aspect of it has been said.

I am a great fan of using SO when I get those "W t f " (ha ha ha I discovered some word completion) moments. So, then I at least get some pointers in the right direction, and if the issue is something to learn more about, then I learn more about it.

</comment></comment><comment><USER36> Maybe I'm weird, but I end up in an SO page perhaps one a week, and maybe 50% of that time is it actually useful. I really had no idea it had taken on such importance (real or imagined) for others.

<comment><USER37> I have a feeling there is a growing number of people that are using it the way we used to use google. Or if you're really that old, books.

As in, there is a number of people out there who literally taught them selves programming with the help of SO. Thats pretty cool imo.

Sure beats wading through forum posts of old, answers dead linking to nowhere, elitist derps claiming OP should just google for the answer (which that same forum post is returned as the top result)

It sounds like this guy just finally figured out how to teach himself without going straight for the answers at the back of the book. Not a bad thing.

</comment></comment><comment><USER38> While I agree with the premise, I think no one has touched on why SO has lost its crowned place among programmers.

Simply put, search has gotten much better, and programmers have mass adopted blogging.

I wasn't aware of StackOverflow's existence when it was first gaining traction; in fact, I think I first discovered it around the time that it ceased to be as necessary as, from what I've gathered, it once was.

Nowadays, when I do a search, 80% of the time there's a blog post that gives me a detailed answer to my question with an in-depth explanation of why. StackOverflow is _often_ useful for answering my questions, but seldom really scratches the itch of _why_ (with exceptionally insightful answers comprising a minority). I think most programmers that have achieved mastery gain more satisfaction by blogging and having their insights centralized, publicized, and monetized to their liking than they do from accruing points on SO.

</comment><comment><USER39> "Instead of asking if my theory will work, I figure out a way to test it, and try it on my own machine." \- this is what you are _expected_ to do before posting on SO.

</comment><comment> andrey-p I often find I spend 20 minutes trying to formulate a good SO question, only to discover the solution just before pressing submit.

Further reading: [https://en.wikipedia.org/wiki/Rubber_duck_debugging](https://en.wikipedia.org/wiki/Rubber_duck_debugging)

<comment><USER40> When learning a new and difficult topic I do this a lot. For the topics I have difficulties with it takes 20 minutes to build a workable test case, and perhaps a lot more than 20 lines of code alone.

It's not always that however. Most recently I spent 4 hours debugging socket.io disconnecting before I remembered nefarious DPI/crawling done by the house ISP [https://nodpi.org/2010/08/07/talktalk-becomes- stalkstalk/](https://nodpi.org/2010/08/07/talktalk-becomes-stalkstalk/)

</comment></comment><comment><USER41> I fail to see how is this somewhat interesting, useful or insightful.

Pretty pointless, senseless article.

</comment><comment><USER42> I've been programming professionally since 1981 and I actually remember having to figure out everything myself. No internet, no SO, no email, I had to go to a library to find algorithms. Sure I succeeded in doing complicated work. But why, today my brain can be expanded by the cumulative knowledge of the entire planet. I'd rather go to a grocery store and buy food than go out each day and hunt for critters. It's a tool and people are tool using, so why knock tools? Hope you enjoy eating skunk every day.

</comment><comment><USER43> Very often Stack Overflow _is_ the documentation. Library recommendations are off topic in Stack Overflow anyway...

</comment><comment><USER44> Some of us remember learning to program before SO existed. Hell, when I started to learn to program the WWW was still pretty new, and still looked on as something of a fad. You had to read books, and man pages to figure anything out.

</comment><comment><USER45> I no longer need Stack Overflow, but I was in Stack Overflow 4 hours ago :-) [http://stackoverflow.com/users/288570](http://stackoverflow.com/users/288570)

</comment><comment><USER46> That's one of the thing that surprises me: how does StackOverflow keep quality answers since people who are knowledgeable enough don't need to be there on the first place.

<comment><USER47> People will do anything for imaginary internet points.

</comment></comment><comment><USER48> And the entire beginner community went to [http://www.downforeveryone.com/](http://www.downforeveryone.com/) at the same time

</comment><comment><USER49> Hmm, this is fine when you really need a deeper understanding of something, but sometimes you just need to get some code out to fix a bug, hit a deadline, etc.

</comment><comment><USER30> I consider my self an experienced programmer, but I would estimate that I use SO at least a few times a day, when programming. It's usually through a Google search, but nonetheless. I also find information in other places of course, but I really think that site heightened the quality of available information remarkably.

</comment><comment><USER50> Hmm, that's a superb piece of self-promotion. Most experienced developers make the cross-over from needing SO to contributing answers on SO, but it never occurred to me to write about it. I envy the marketing chops this dev acquired in the process; it can make a huge difference to your salary / career.

<comment><USER51> Really? It came across very arrogant and elitist to me. The piece seems to presuppose how _I_ write code and that always rubs me the wrong way.

</comment></comment><comment><USER52> Maybe we should run an experiment. Block SO from our routers/browsers (whatever works) and then see how we feel coding without SO. The time frame for this block should at least be a week.

I have a feeling we'd feel better about reading the proper documentations as opposed to trying out random answers from SO.

</comment><comment><USER53> And to think that I was turned down as a candidate for a programming job because I wasn't visible enough on the internet (contribute to trending github projects or write a blog). This is the exact style of blog you see all the time and I couldn't bring myself to even parody it.

</comment><comment><USER54> What a strange thing to say. He is obviously planning to work with his current stack forever. He has decided to be dogmatic at the expense of his project team. Basically, he will be unemployed within 5-10 years.

</comment><comment><USER55> There are downsides of stackoverflow like the high karma bullies who love to moderate & flag at the drop of a hat.

However, it's still an awesome community. Too bad it's not for you.

</comment><comment><USER56> Congratulations!</comment>


Microsoft Faces Fresh EU Probe Over Web-Browser Choice - <AUTHOR> http://www.bloomberg.com/news/2012-07-17/microsoft-faces-eu-antitrust-probe-over-web-brower-choice.html

<comment><USER2> How about the fact that Windows 8 will make it impossible for your favorite browsers to be installed?

Microsoft's deal with EU regulators says specifically that the browser choice screen must be available in future versions of Windows. It is set to expire in 2014, which means that it still applies to Windows 8.</comment>


A call made by computer descends sheriff's helicopter at home - <AUTHOR> http://www.polygon.com/2014/11/7/7172827/destiny-swatting

<comment><USER2> You notice so called "SWATTING" hasn't taken off in other parts of the world, and that certainly isn't down to those parts having less internet trolls or crazies online.

In most other places they will send a normal unit around to check out the report unless they have a credible reason for believing it is legitimate. For example in the UK they will do a drive-by via an unarmed unit, if the lights are off, they will go knock on the door and politely ask the occupant about the call.

In the US they send in ultra-militarized units holding automatic weapons in what can only be described as a tank, break down doors, rustle up whoever is inside regardless of if they did anything and in general make a huge spectacle out of the entire thing.

US police forces have no proportionality. Heck they have no common sense. Plus the general public in the US seems to approve of the "just in case" OTT reaction. For example in the recent White House wall jump the Secret Service got criticised for showing restraint, a US senator asked (paraphrasing) "Why didn't you just shoot him? Your job isn't to show restraint it is to protect the White House!" That's a US senator!

The US is like the wild west sometimes...</comment>


Watch: Hyperloop hits 400 mph in 2 seconds flat - <AUTHOR> http://thenextweb.com/insider/2016/05/11/watch-hyperloop-hits-400mph-in-2-seconds-flat <comment><USER2> Inaccurate title:

Every other source I'm finding has it clocked in at 115 mph.

<comment><USER3> The title matches the article text; this source could be flat-out inaccurate, but its not a titling issue.

<comment><USER2> Ambiguous phrasing.

The title is inaccurate which makes it an inaccurate title [0]. Not that it is an inaccurate title for HN's guidelines of using the article's title. I did not call it a "titling issue" but an "inaccurate title".

[0] I'm now a member of the tautology club.</comment></comment></comment>


Is YC right about solo founders? - <AUTHOR> http://www.brightjourney.com/q/really-hard-solo-entrepreneurs-succeed

<comment><USER2> I started my company single-handedly even though people said it couldn't be done.

It's a scientific laboratory where I needed to continue a tradition of building labs, in this case assaying international petro/chemical commodities in a more reliable high-stakes way than well-funded research labs of major multinationals can usually come up with. And they are using teams led by chemists or engineers having advanced degrees which I do not have.

I always took comfort that I was making more scientific progress than I would have been able to make If I had a PhD at Exxon, Shell, DuPont, or places like that. Plus I own my own technology.

I did not want to stay by myself, I started to build a staff but the business was ruined by natural disaster, then I was back on my own like I was the first few years. I decided not to give up completely, only give up on expansion which would have required capital anyway, so I just worked in the ruins ever since, developed techniques to profit far more per job than the competition, and the best years eventually came. That is how I completed the survival process then.

There was no initial sign that it was sustainable, but on my own again I never had any turnover like there was at my employers where my operational advantages occasionally had escaped the lab and been adopted by commercial competitors worldwide. So I have been fearless ever since, eventually inventing something new every day.

Later, what really hurt was a death in the family where I had to leave town for too long a time.

In a one-man business, if you are not there, there is usually no money being made.

Now I plan to make a comeback starting with just me again, but I've seen this coming, and over the last few years have identified members for an awesome team whose trust has now been well established, and can tap them individually as needed.

It's not easy but you can do it, as long as you are capable of outperforming an actual team whenever needed.

</comment><comment><USER3> Solo's definitely have a chance. For questions, please ask Henry Ford, Dell, or most small businesses.

Startups are with out a doubt a lot of work. That being said, with good time management skills and a lot of drive single person can be successful. Plus, less founders equals less splitting of the company ownership!</comment>


How we break things at Twitter: failure testing - <AUTHOR> https://blog.twitter.com/2015/how-we-break-things-at-twitter-failure-testing <comment><USER2> Seems a lot like the Chaos Money at Netflix. It's a way of testing I always like to share with colleagues, because it's pretty awesome.</comment>


Ask HN: What makes Firefox OS better than webOS? - <AUTHOR>

I don't understand why Mozilla chose to create Firefox OS, rather than pick up development of Palm/HP's webOS?
It seems like a lot of what Mozilla wants to do could be done easily with webOS, since webOS has been open-sourced, it would run great on the hardware Mozilla is targeting, apps are developed with HTML+CSS+Javascript… what am I missing?
If webOS couldn't make it as a platform, why will Firefox OS? <comment><USER2> From a very practical point of view, webOS is/was webkit based, while we obviously wanted to leverage our own rendering engine (gecko). webOS also is not 100% web technologies (the "window manager" is native code iirc), and overall we had different ideas on how to improve the web platform to build an OS.

I don't know much about Enyo, but one important thing is that we think that no framework should be needed to build apps for firefoxOS. But I'd like to know if enyo apps can run on fxos. The UI of the phone itself (called gaia, [https://github.com/mozilla-b2g/gaia/](https://github.com/mozilla-b2g/gaia/)) is pretty much framework-less.

webOS didn't make it as a platform for various reasons: lack of devices, no strong community for instance. Mozilla is in a way better position here.

<comment><USER3> From a practical perspective, it doesn't matter if the window manager is native to the web (and gecko's proprietary iframe solutions are not). Also important is that webOS allows native development (a problem that would go away if w3c would agree to standardize something like LLVM bytecode).

Applications in webOS were not limited to Enyo. You only needed to access the proprietary API appropriately which is the same as with phone gap or the FF API (which isn't an approved standard).

Enyo 2.4 works on IE8+, FF4+ (actually 3+, but not tested), Chrome 10+ (once again, works on earlier, but not tested), opera, Android browser, Safari 5+, etc

You can check out the Enyo project at enyojs.com (it's apache 2 licensed). It currently has both a mobile theme (onyx) and a LG TV theme (moonstone -- for LG smart TVs). The partially finished Mochi theme (see the specs at [https://github.com/enyojs/mochi/wiki/Mochi- Designs](https://github.com/enyojs/mochi/wiki/Mochi-Designs) ) also has a lot of potential.

My personal issue with FF OS is that the UI sucks. With webOS being released under the Apache 2 license (which grants patent use), there was no reason to use a crappy design (except for "not invented here" syndrome). Even today, the core UI and features of webOS are better than iOS, WP, and Android (despite Matias Duarte's best effort to transform Android into webOS).

Only webOS is easy to use on a phone, but still feels natural on a tablet with almost no changes (and Enyo enables this app transition from the ground up which is why developers chose to use it instead of something else). In fact, webOS could even scale up to full-sized desktops with some modifications (as 10GUI shows).

Finally, webOS has a very large community for an OS that was discontinued a couple of years ago. The Preware community continues to release updates and new apps still make the occasional appearance.

<comment><USER2> The difference is that Mozilla is actively working on standardizing the pieces of fxOS that we consider mature enough and for which there is interest from other browser vendors. That's not a fast process, but calling all our apis "proprietary" is unfair.

If you find that our UI sucks, please contribute to improve it!

</comment></comment></comment><comment><USER4> Probably the company behind it. HP dropped the tablets instead of investing in developing some software for it (you could review the whole catalog in an hour or so). WebOS itself was great (still is as Enyo framework) in my opinion. I'd really like it if Mozilla just picked up that project instead.

<comment><USER5> LG bought parts of webOS from HP[0] in 2013 and showcased a smart TV running on webOS[1] at CES this year[2]. HP continues to be involved in the development of Enyo[3].

[0] [http://www.lg.com/us/press-release/webos- release](http://www.lg.com/us/press-release/webos-release)

[1] [http://www.lg.com/us/tvs/lg-55LB7200-led- tv](http://www.lg.com/us/tvs/lg-55LB7200-led-tv)

[2] [http://lgusblog.com/product-news/lg- wins-35-awards-2014-inte...](http://lgusblog.com/product-news/lg- wins-35-awards-2014-international-ces/)

[3] [http://www.webosnation.com/lg-committed-open-source-webos- de...](http://www.webosnation.com/lg-committed-open-source-webos-development- hp-pivot-cloud-services-towards-enterprise)

<comment><USER4> I know they're trying to continue, but neither HP nor Palm when they owned the brand did anything amazing with it. Palm pre was really cool and WebOS on Touchpad was great to use... it just really missed useful apps. I get a feeling that if they invested in getting even a 100 of good apps either written for or ported to WebOS at the time of the first tablet, it could turn out completely differently...

<comment><USER5> The Verge has a great article on the decay of Palm once HP bought it.

[http://www.theverge.com/2012/6/5/3062611/palm-webos-hp- insid...](http://www.theverge.com/2012/6/5/3062611/palm-webos-hp-inside-story- pre-postmortem)

So, coming back to the point of contrast with Firefox OS, one has to acknowledge that Mozilla is pushing Firefox OS very hard. There is a dedicated app store which has more than a thousand apps now. Mozilla also has a passionate community behind it.</comment></comment></comment></comment>


Searchcode | source code search engine - <AUTHOR> https://searchcode.com/

<comment><USER2> This is a handy tool, and better than other code searches I've seen.</comment>


A Holiday Message from Ricky Gervais: Why I'm An Atheist - <AUTHOR> http://blogs.wsj.com/speakeasy/2010/12/19/a-holiday-message-from-ricky-gervais-why-im-an-atheist/#

<comment><USER2> I'm not sure why WSJ thought these old arguments deserved attention.

(It's not even funny. Like this - <http://www.youtube.com/watch?v=_pbEjOH7t0Q.>)</comment>


6 Corporations Control 90% Of The Media In America - <AUTHOR> http://www.businessinsider.com/these-6-corporations-control-90-of-the-media-in-america-2012-6

<comment><AUTHOR> There was this discussion the other day about how to make a message spread throughout a "social network" efficiently (where to start spreading the message).

This article here shows how this kind of sophisticated research would actually not even really be needed to control what the public thinks.</comment>


An Attempt To Use Browserify - <AUTHOR> http://wiredcraft.com/posts/2013/11/13/an-attempt-to-use-browserify.html

<comment><USER2> The title is a bit misleading. Only a small part of the article mentions Browserify. I was hoping for the authors take on the struggles and efficiencies, as I'm at the point where I need to make the decision to use Browserify for my companies client heavy apps.

<comment><USER3> I'd be happy to answer any questions concerns you may have, I've had some decent experience with Browserify and I've loved it.

<comment><USER2> Thanks for the offer!

My main concern is non-CommonJS libraries. I haven't really had any luck with any of the Browserify shim modules out there. Any jQuery plugin that I've used with Browserify I ended up modifying myself to support CommonJS. Even then, I'm not sure I was doing it right.

Any insight?

<comment><USER4> Hmm. I got the same issue while trying to use certain libraries. Not all of them is suitable for using in the client side. I changed some of the code and using the `module.exports` method to export it for browserify to use. Luckily most of the code is exposing an object already, so may not that hard to change it. The best approach may wrapper it and send the author of the lib a pull request. You may also check the video here. [http://www.youtube.com/watch?v=YabwsSq6ASQ](http://www.youtube.com/watch?v=YabwsSq6ASQ)

</comment></comment></comment></comment><comment><USER5> Er ... "I can now grab the user's webcam stream, generate a GIF, and let the user download or share it on an image hosting platform. And all of this is done in the front-end using a lightweight interface!" ... that's 3 lines (sorry: 4) of native JS, we need node-modules for this?

<comment><USER6> you can generate a gif with native js?

<comment><USER5> Not exactly a gif-image, because of license restrictions (which may also be a problem with any OSS library), but image/png, image/jpeg and (Chrome) image/webp and any animations built of these. (This is a political issue and not a technical one.) To have gif, you would have to implement the algorithm by your own and pay fees or ...

</comment></comment></comment><comment><USER7> I can't use this app unless it loses 80kb. Too bloated and heavyweight.

</comment><comment><USER8> This blew my mind. I've been dabbling in Node, but I had no idea this much was possible. The GifMe demo would have been nearly enough, but wow, thanks for posting this.</comment>


Braid Code Cleanup (part 1) - <AUTHOR> http://number-none.com/blow/blog/programming/2016/07/16/braid_code_cleanup_1.html <comment><USER2> The whole section on physics is particularly worth learning from carefully. Don't make your physics timestep depend on your rendering timestep. And if you want to have any hope of reproducible results, don't make your physics have a variable timestep at all. Pick a reasonable quantum of time, run your physics engine on that fixed timestep, and render at whatever rate you want. If the graphics framerate is slower than the physics, repeat the physics step. If the graphics framerate runs faster than physics, just render the same frame repeatedly (or update things that don't interact with physics, like decorative elements).

<comment><AUTHOR> > run your physics engine on that fixed timestep, and render at whatever rate > you want.

I think that works well for parallelizing game subsystems, too. Physics and the renderer can run at their own rates on different cores and then publish (read-only) global snapshots of their state for other subsystems to consume.

<comment><USER2> True. And that's not too hard a version of parallelism to handle: never access the same data at the same time, just run physics on frame N to produce frame N+1 while rendering frame N, and don't publish frame N+1 until after physics finishes, at which point physics never writes to it again.

<comment><USER3> In theory that sounds nice and all, however in practice this leads to jitter, since the delta between the time the physics were done, and the time the frame is shown, keeps changing. In the worst case it skews slowly over time, leading to very ugly frame skips when the counter "flows over", despite the system running at full framerate.

In practice you must always have at least a smaller version of your physics engine, that your rendering loop needs to run before actually creating the frame, to do one of these two things:

\- interpolate between the last and the previous physics state, accepting a constant additional latency between input and result

\- extrapolate forward from the last physics state, accepting that what is displayed will occasionally be slightly wrong for a frame

Both of these come with their own problems, which may be bad enough to completely invalidate their use depending on whatever game type they're being used for.

So even if you decouple and parallelize your loops, you end up with 3 ways to handle the result, neither of them being without disadvantages. There are no silver bullets.

<comment><USER4> Would there be any big issues to rounding the framerate to the nearest number evenly divisible by the physics rate on the fly? I'm meaning run it mostly like how he does but allow any framerate and eat the small changes in speed?

<comment><USER5> Monitor framerates are kinda "fixed". That is, there is no protocol to seamlessly change the framerate.

<comment><USER6> Though newer gaming screens are adding G-Sync (Nvidia) and FreeSync (AMD) to allow flexible monitor framerates. On a compatible GPU and screen you can display at whatever framerate you need, even a varying one, up to the maximum rate. The screen draws a new frame whenever you give it one.

On that sort of hardware (and I'm assuming only in fullscreen mode) you should be able to match your render framerate to a multiple of your physics framerate.

Whether you'd want to is arguable. If people noticed it they'd probably complain that maxing render at 140 Hz (assuming 20 Hz physics) on their 144 Hz screen is wasting their hardware. If you're doing it dynamically as physics perf varies up and down, the abrupt shifts in render framerate might be noticeable.

<comment><USER3> > physics perf varies up and down

That sounds like you're advocating variable-length physics steps. Just a warning that that can be hilariously disastrous. Due to the way physics are simulated on computers, the simulation is never perfect, and the same timeframe simulated in 5 steps can give very different results than 1 step.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> See also part 2 ([http://number- none.com/blow/blog//programming/2016/07/17/bra...](http://number- none.com/blow/blog//programming/2016/07/17/braid_code_cleanup_2.html)) and part 3 ([http://number- none.com/blow/blog//programming/2016/07/18/bra...](http://number- none.com/blow/blog//programming/2016/07/18/braid-cleanup-part-3.html))

<comment><USER8> Jeez, his "day's worth of work" in part 2 sounds more like what I did in the most productive week of my life.

<comment><USER9> I'm pretty sure this is the guy who said in the "Indie Game: the Movie" documentary something akin to: "If my game doesn't succeed I'm going to kill myself" in a sincere fashion.

EDIT: It was the game developer named Fez who made the statement [1].

[1]: 39:00 mark of Indie Game: the Movie .

<comment><USER10> I think that was the guy behind Fez, Phil Fish:

> Fish, meanwhile, is heartbreakingly invested in a game he can't finish for > his own perfectionism. "It's me, my ego. My identity is at risk. It's my > perception of myself," he says of Fez. In the film's most startling moment, > he's asked what he will do if he doesn't finish the game. "I will kill > myself," he replies, meaning it. "That's my incentive to finish it." The > flash of black humour relieves the tension, but it's an alarming vision of a > man in desperate times.

[http://www.eurogamer.net/articles/2012-03-06-indie-game- the-...](http://www.eurogamer.net/articles/2012-03-06-indie-game-the-movie- review)

<comment><USER11> That was especially depressing because the long series of missed deadlines and public demo disasters in the movie (as well as the very buggy eventual release when I later bought the game) gave the impression that his programming skill left a lot to be desired.

<comment><USER12> He wasn't the coder. It was another guy called Renaud Bedard

</comment></comment></comment></comment></comment></comment><comment><USER13> I don't really play games often but I played Braid and loved it. Does anyone have recommendations of other interesting games (probably puzzly, like Braid) that I might enjoy.

Funny story, my 4yo finished (with lots of assistance) her first adventure game (The Lost City [1]) the other day and immediately broke down in tears because it was over. Honestly, for the next couple of days she cried whenever she remembered about it.

Actually, would love to hear of about great tablet games for young kids too.

[1] [https://www.firemaplegames.com/thelostcity.html](https://www.firemaplegames.com/thelostcity.html)

<comment><USER14> Jonathan Blow released The Witness[0] not too long ago. An exploration game based on puzzles and meta-puzzles involving tracing lines. The Talos Principle[1] scratched the same itch. It involves directing laser beams to ... laser beam receptacles :)

EDIT: Disclaimer for The Witness: Go in without reading much about it. It's got plenty of puzzles about connecting paths, but that's all you really need to know. The game is as much about discovery and thinking outside/around/underneath the box as it is solving the explicit puzzles.

[0]: [http://store.steampowered.com/app/210970/](http://store.steampowered.com/app/210970/) [1]: [http://store.steampowered.com/app/257510/](http://store.steampowered.com/app/257510/)

<comment><USER3> Fair warning: The Witness has some unsolvable puzzles for people who're bad of hearing or colorblind.

Additionally the puzzles mostly revolve around moving around in the game world until you can see the "solution" to the board in the surroundings, at which point you then simply input it; while working out the solution based on rules inherent to the puzzle is often impossible.

For example there are two entire sections where the puzzle boards offer zero hints as to the solution and the player has to move around so </comment></comment></comment><comment>----, which one then follows or redraws with the mouse. Other puzzles involve around walking </comment><comment></comment><comment></comment><comment></comment><comment>---- so that </comment><comment></comment><comment>---- form continuous lines which one then traces with the mouse.

I found myself utterly bored because even 10+ hours in i still felt like playing a really elaborate game of "find the easter egg" instead of actually using my brain.

YMMV.

<comment><USER15> Man, that's a lot of spoilers. And also not a fair representation of the content of the game at all.

<comment><USER3> How is it unfair? I made an effort to portray only the truth.

Also, spoilers? In a game that does not have a story?

I'd love to hear which parts of my post you consider spoilers, since i only see "align </comment></comment></comment><comment>--- and trace them" and "walk </comment><comment>----- and trace lines </comment><comment>-----" as possible spoilers, and puzzle-wise they're incredibly mundane.

<comment><USER16> It's not really up to you to decide if a puzzle is mundane for all players. Maybe it was for you, but there was a real aha moment for me on some of those puzzles.

<comment><USER3> In the general case, you are right. However then it becomes hard to even talk about the game and particularly the difference between finding what amounts to an easter egg, or solving a problem. As puzzles you don't spend a lot of time thinking about them, trying to work out the solution. Either you notice them or you don't. That's why i qualified it with the word "puzzle-wise".

</comment></comment></comment><comment><USER17> For anyone reading, this is 1 part of a 4 part series he has on his blog (over around as many days).

And Blow is an animal! I wish this guy was on my team and not an indie developer. His output level (and pragmatism) are insane! Change the fundamental structure of a ~100k loc project in a few days? No problem!

</comment><comment><USER18> >Visual Studio 2015 / Add notelemetry.obj to link line to reduce Microsoft adware potential.

It's quite sad that you need to proactively add a notelemetry.obj to your link line to turn off telemetry when generating your code.

<comment><USER19> It's for ETW. It's not doing any telemetry unless _you_ use it for telemetry. Also I think they removed the initialization code from being linked in by default in the latest update.

</comment></comment><comment><USER20> Is he re-releasing this or something? Curious why he's going back through the code.

<comment><USER21> Maybe doing a sequel or using the tech as a base for a new game?

<comment><USER22> Like the other thousands of people, I absolutely loved Braid. I think this comment gets my hopes up, but wow would I love to see a sequel.

<comment><USER23> The problem with sequels in games this good is that the game is _so_ much better than anything else when it is released, that a sequel can't be anything other than an incremental update, and thus feels lackluster.

The same thing will happen with the Deadpool movie sequel. The first movie was innovative in that it was the first mainstream movie to break the fourth wall, have tons of R-rated jokes, etc, but you can only do that once.

<comment><USER24> > The first movie was innovative in that it was the first mainstream movie to > break the fourth wall, have tons of R-rated jokes, etc,

Check out Naked Gun kiddo.

<comment><USER25> > The first movie _that I care about_ to break the fourth wall, have tons of > R-rated jokes, etc,

What he probably meant to say. So often we forget that literally everything is an "overdone trope" at this point, unless you do it well.

<comment><USER24> True. The first movie I 'care about' that fits this description is probably Austin Powers then. Watch it again if you haven't in years, you'll catch all the jokes that flew over your head as a kid.

<comment><USER26> I loved it as a teenager but watched it again recently (now in my early 30s) and thought it was truly awful. Some things are better left in the past!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> > But then, toward the end of the project, it became clear that the game would > not fit in memory on the Xbox 360 _(which had 512MB of physical RAM, but of > course a game could not use all of that)_

Wow. Less than 512MB. I can't imagine how they fit stuff like Destiny and Halo: Reach into that.

<comment><USER28> I always wonder how saving a few dollars in RAM pays off for the effort game developers have to make to ship games. I mean the consoles sales are tens of millions, but I guess games titles are in the thousands and they spend a lot of money to cope with these limitations.

Interesting reading: How Naughty Dog Fit Crash Bandicoot into 2MB of RAM on the PS1 [https://news.ycombinator.com/item?id=9737156](https://news.ycombinator.com/item?id=9737156)

<comment><USER27> They actually lose money on the consoles and hope to make it back up with games. And to be totally fair, the entire 512MB was made of GDDR3.

That's right. The entire RAM bank was made of chips designed for graphics. So it's no wonder it was so expensive.

Edit: and this was necessary to decrease the latency between graphical operations and processor operations. You can load graphics directly into what is essentially VRAM, rather than having to pull it through regular RAM first. Because there _is no regular RAM._

The tradeoffs made sense at that point in time, because DDR1/2 sucked a lot, and pulling data through multiple stages would drag down performance.

</comment></comment></comment><comment><USER29> > Also, demos are not really necessary today; if people want to find out about > a game, they can look on YouTube or read what many many people have to say > about the game on the internet.

Just no. And the steam refund if played less than 2 hours doesn't help. For most games, 2 hours is not enough.

<comment><USER30> Demos sounds good in theory, but I think you'll find that they adversely decrease sales in the long run. They take effort to put together, and serves only to stop the player from buying.

The reason is that if you are interested enough to try the demo, you'll only be swayed to not buy the game if you're dissatisfied, it obtained enough from the demo that you're no longer interested in the actual game. If you're already going to buy, you won't try the demo. In both cases, it's bad for the developer.

<comment><USER31> I've seen this argument and I strongly disagree. Speaking anecdotally, I've bought plenty of games after trying the demo that I wouldn't have even considered otherwise. (Or would have waited to go on sale.) Also, I think it's just the right thing to do — though with Steam refunds, it's probably not as big of a deal anymore.</comment></comment></comment>


Evolved artificial intelligence can play video games better than humans - <AUTHOR> http://www.randalolson.com/2013/06/09/evolved-artificial-intelligence-can-play-video-games-better-than-humans/ <comment><USER2> I really wish it was true for serious games with a lot of metagame and strategy elements (Think Dota 2 or Company of Heroes), not just simple arcade toys... Usually the AI in those games simply cheats horrendously and still is utterly stupid and having a real challenge in single player would be lovely

<comment><USER3> Well, as with all things game-related, the developers are trying to give you the best experience for the amount of time they were given to develop the game. I don't think spending more time and money on AI is a winning proposition for them.

On the theoretical side, I have a tiny bit of AI research under my belt, so I can make a few comments. The problem is simply that current AI techniques are geared towards solving isolated, "relatively simple" problems. These individual problems can be surprisingly complex, such as creating a very good algorithm for how to "micro" certain combinations Starcraft units. Even though there are ridiculous numbers of combinations, our current AI techniques are good enough to solve these.

The problem comes in when you try to combine multiple elements together. Combine your "micro"-algorithm with a general scouting and build order strategy, as well as having some kind of high-level decision making strategy which ties it all together... essentially this results in the complexity of each part being multiplied together. The number of combinations goes from "barely computable" to "won't happen, ever". What we actually need is something which is able to detect boundaries within the search space, decide where to start up new sub-algorithms, and how to combine them. To my knowledge, this field isn't very mature yet.

I believe we'll be getting interesting clues from how biological intelligences solve this problem within our lifetimes (not to say it will be completed solved by then). It will be very interesting, to say the least!

</comment></comment><comment> 2Pacalypse- There is an AI competition for StarCraft 1, and while having some impressive tricks, it's not even close to beating a competitive player.

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

</comment><comment><USER4> That's quite a broad statement. I assume this is only for some very simple games.

<comment><USER5> I would love to see how _that kind of AI_ plays against person in DotA 2 or Starcraft 2.

<comment><USER6> I think an AI could be made to be pretty good at laning, at least against a static set of 1 or 2 opponents without others coming in.

<comment><USER7> Like the built-in AI in DOTA2, you mean?

<comment><USER5> The built-in DotA 2 AI is no near being good.

</comment></comment></comment></comment></comment><comment><USER8> NoooOHHHooohhh! My high scores!!!!!!!!!!!!!!!!!!!!!</comment>


Ask HN: Suggest code commenting guidelines? - <AUTHOR>

If you google for code comment guidelines, you find a lot of rules about indentation and such, but much less information about the actual content of the comments.
Of course, comments like this are silly:

  # adds increment to height
  height += inc
 But I think we can do better than just not being silly.
Do you use, or have you seen, a good guideline or set of rules for how to write good comments? <comment><USER2> Enabling skim-reading seems a decent goal.

As in, write comments such that someone can quickly get a high-to-mid-level understanding of what's happening in a given unit of code[0], with the unabridged version being the code itself.

0: The smallest unit worth commenting being a logical group of lines within a function, usually padded with newlines above and below.

</comment><comment><AUTHOR> "Function comments should describe the intent of a function, not the implementation" found at <http://stackoverflow.com/a/2357285/98057> is a good start, I guess.</comment>


Wolves don't lose sleep over the opinion of Sheep – Irish Tech News - <AUTHOR> http://irishtechnews.ie/wolves-dont-lose-sleep-over-the-opinion-of-sheep/?utm_campaign=shareaholic&utm_medium=twitter&utm_source=socialnetwork <comment><USER2> The name "Irish Tech News" misled me into clicking on this article, only to find motivational speaker type of content.</comment>


Parallella: Raspberry Pi-like open parallel computing hardware - <AUTHOR> http://www.kickstarter.com/projects/adapteva/parallella-a-supercomputer-for-everyone

<comment><USER2> Sounds awesome, but I have a few comments I'm going to braindump:

$750k seems really ambitious for a kickstarter project with such a niche audience. Is that realistic for 29 days, considering you need to sell 7500 units of the $99 pledge amount? At the end of day 7, Leapmotion had 15,000 applications for a free leap motion device and SDK, and that is a device with a much larger audience.

Do you have any investor lined up that would be willing to maybe match a Kickstarter total pledge amount of something realistic like $375k?

Have you considered approaching a fund like In-Q-Tel? This seems like the kind of project they would fund, since I imagine a lot of the best parallel computing work is being done in government-funded agencies and labs. I also imagine the government is probably the biggest employer of people working on parallel processing devices. With that in mind, getting a device like this into the hands of many, allows more people to get hands on exposure to parallel computing.

Overall, it feels like the funding strategy needs to be diversified, because I imagine it will be difficult to get $750k all from one source, with the exception of a VC fund whose thesis aligns with your goals.

Lastly, it feels like a project like this would be a bit too soon. Many developers who are playing with hardware have been playing around with the arduino for a few years, some are now graduating to the Raspberry Pi, which offers clear benefits over the Arduino because you can run tons of stuff simply not possible on the Arduino. However as the Raspberry Pi just came out, I imagine that most developers are still trying to get their hands on something like it and still don't feel the pain of trying to solve problems with it, that could only be solved with something like the parallella.

As a hobbyist, besides exploring parallel computing for its own sake, what other kinds of problems can I explore/solve with the parallella which simply wouldn't be possible on the raspberry pi? Sell a dream and possibilities here. I'm personally not familiar with what would only be possible on a parallella and I might feel more interested in this project if I know why I'd want it (besides learning pp for its own sake).

<comment><USER3> According to Ars-Technica[0] they already raised $2.5 million from VCs.

[0] [http://arstechnica.com/information- technology/2012/09/99-ras...](http://arstechnica.com/information- technology/2012/09/99-raspberry-pi-sized-supercomputer-touted-in-kickstarter- project/)

<comment><USER4> I've been seeing more Kickstarters after funding lately. I guess it's a good way to test demand and get the word out. But it feels like it's against the spirit of the thing.

</comment></comment></comment><comment><USER5> It is a nice try. Looks quite similar to the Creative Zii (Egg platform) and the Zii Labs' ZMS-05 processor which they marketed as "Stemcell Computing"... and a lot of other attempts.

They use a Zenboard (Xilinx Zync, ARM+FPGA) as a base platform. My first reaction; they claim this being 'open source'. Nothing about the ARM processor or even the core inside the FPGA is open source. What they will deliver is the toolchain and the documentation, but no IP or RTL code for the cores. Another Fauxpen source project... using it merely as a buzzword to get people involved; comparable to the Beagleboard to get usecases and branding out.

When hardware is called "open source", they need to look at how Milkymist does it. PCB design files are offered, but also the RTL verilog is available for the CPU (in fact the whole SoC).

<comment><USER6> They are specific about their open source intentions.

 _Open Source: The Parallella platform will be based on free open source development tools and libraries. All board design files will be provided as open source once the Parallella boards are released._

So we won't be able to fabricate our own derivative silicon. But we will have all open source drivers and tools. We won't have chips full of DSPs that we can't use, or GPUs that work a little bit through some driver that the silicon vendor had to get to MVP for a single version of Linux and can abandon in a year. Sounds good to me.

</comment></comment><comment><USER7> What's wrong with the Parallax Propeller? You can get a starter kit for $25 [1]. Granted, you used to have to program it in its own language, but C compilers are popping up [2]

[1] <http://adafruit.com/products/791> [2] <http://propeller.wikispaces.com/Programming+in+C+-+Catalina>

<comment><USER8> The Propeller doesn't have sixteen cores running at 2+ GHz with a gig of ram. The Propeller can't even run a real, modern OS.

<comment><USER9> _The Propeller can't even run a real, modern OS_

Well... technically neither can this :)

Although they do appear to have got it working really neatly with an ARM-based host board. Which is a step forward.

</comment></comment></comment><comment><USER10> This sounds great, but why is it a kick starter project? If the claims they're making are reasonable, it seems to me that, for instance, Google would be more than a little interested, and could easily cough up $750K. What am I missing?

<comment><USER11> This is a really good question.

Not necessarily Google, they are famous for not investing in other people to do engineering, but it seems like a modest amount of money to get something that should be fairly widely applicable.

Of course if it is widely applicable and this investment gets to company what it needs to take off, well the folks who gave them the money aren't really going to benefit in a leveraged way. (No equity)

Perhaps they were hoping for a 'raspberry pi' like response (which would be hundreds of thousands of units) and be able to do a sort of stealth funding round kinda thing. No idea of course, but it would be a sweet result if it worked out for them right?

</comment></comment><comment><USER12> The "Making parallel computing easy" and "The goal of the Parallella project is to democratize access to parallel computing" lines made me immediately think of the Parallax Propeller.

Turns out their product isn't remotely similar: up to 64 cores at 800mhz, plus a dual-core ARM CPU. I wonder why they are doing a kickstarter instead of harvesting their dollars from server appliances.

<comment><USER13> Because they are not ready to harvest dollars from server appliances, and would like someone to fund their engineering.

</comment></comment><comment><USER14> Hasn't the whole massive multicore thing been floating around the server space for a few years now? I remember HP Project Moonshot and Sea Micro and a few other projects to built multi-chip ARM servers. However, I don't recall seeing ANY benchmarks that demonstrated that they were any more efficient, per watt, in a REAL application, than the x86 competition. I would _really_ like to see such a data point. I guess now it's being sold as a novelty to let people play with such a technology, which is fine I guess.

The CISC vs. RISC days are long over and the battle between the two architectures is a bit silly at this point since the gap between the instruction set and the underlying implementation has gotten quite dramatic. Claims that RISC chips are inherently more efficient may have been true in 1995, but I don't see this holding water today.

<comment><USER15> For Linpack it has been demonstrated that GPUs and MIC are more energy- efficient than server x86, although Blue Gene beats them all. [http://www.green500.org/lists/green201206&green500from=1...](http://www.green500.org/lists/green201206&green500from=1&green500to=100)

<comment><USER14> I'm certainly not going to argue against GPUs (or FPGAs) being used in scientific applications where performance is limited by floating point or vector performance. In certain scientific applications they can hand general- purpose CPUs their butts. I'm talking about ARM/RISC vs x86 CPUs for server applications.

<comment><USER15> Sorry, I went on a tangent there. The benefits of wimpy cores have certainly been elusive. Some good links [http://static.googleusercontent.com/external_content/untrust...](http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/fr//pubs/archive/36448.pdf) [http://research.microsoft.com/en- us/um/people/trishulc/paper...](http://research.microsoft.com/en- us/um/people/trishulc/papers/low_power_cores.pdf) [http://www.seamicro.com/sites/default/files/MozillaCaseStudy...](http://www.seamicro.com/sites/default/files/MozillaCaseStudy.pdf)

</comment></comment></comment></comment><comment><USER16> I'm hardly an expert in this, but doesn't that architecture look similar to Intel's MIC architecture (<http://en.wikipedia.org/wiki/Intel_MIC>) with the upcoming Xeon Phi product? See also [http://semiaccurate.com/2012/08/28/intel- details-knights-cor...](http://semiaccurate.com/2012/08/28/intel-details- knights-corner-architecture-at-long-last/)

<comment><USER17> It's more similar to the Tilera64 chips and ye olde Transputer. Key difference is the reliance of the MIC on cache coherency across all cores.

</comment></comment><comment><USER8> Has anyone here worked with Epiphany chips before? Are there any special APIs required to use them effectively? How hard would it be to get Haskell code running on one?

<comment><AUTHOR> There is a C/C++ SDK available.

<comment><USER8> Is the SDK publicly available right now?

<comment><USER18> [http://www.businesswire.com/news/home/20120822005093/en/Adap...](http://www.businesswire.com/news/home/20120822005093/en/Adapteva- Announces-Availability-OpenCL-SDK-Epiphany-Multicore)

</comment></comment></comment></comment><comment><USER19> What's with the 800GHz operating frequency nonsense? In the 64 core chip, each core runs at 1GHz. I thought a $199 64 core option would have been more interesting.

</comment><comment><USER20> It's an interesting project, the Epiphany chips. For my interests, the alternatives are FPGAs and GPUs. I'm thinking their sweet spot might be in portable, lower power devices that need performance. I have a few applications (mainly DSP and SDR) that require a certain amount of MIPs that is hard to achive in a microcontroller, but is possible in a robust laptop. (But who wants to drag a portable workstation in the field?)

</comment><comment><USER21> _The Parallella project will make parallel computing accessible to everyone._

I think their marketing is a bit off on this one. Does _everyone_ actually need parallel computing on this scale? I don't think so. Those who do need it likely already have CUDA running on GPGPUs. Not that I'm implying stifle innovation but the crowd they're marketing to seems to be way off base.

<comment><USER22> Yes, everyone needs parallel computing on this scale, it's just that they don't know it (yet). In the same way that everyone needed 3Ghz single core CPU when they already had 2GHz single core CPUs.

GPUs are different to CPUs in many ways, not least of which is that they are very difficult to debug, do not support recursion (this might have changed?), need special,non-standard data structures (streams). Multi-core CPUs suffer none of these limitations and developers can use non-proprietary standard build tools to develop software for them.

</comment></comment><comment><USER23> Sorry, but you can't do any serious computation with 1GB of RAM; do it 149$ but with 4GB minimum.

<comment><USER24> Not true. I spent a summer not too long ago doing quantum Monte Carlo calculations for condensed-matter physics, and IIRC Valgrind showed that the whole thing was under 5 MB. Not only did it not require 1GB of RAM, but code + data fit in the L2 cache of each node. (We were seriously CPU bound, not memory bound.) I can't speak to how much of a market there is for something with 1GB RAM, but you certainly can do "serious computation" with far less than that.

<comment><USER23> Well yeah, this is an exaggeration; things like brute force hash reversing can take kilobytes. Yet you must admit that such problems are in minority even in material science. Also note that some Linux distros in GUI mode can take like half of that alone (this is this household-experimentation-with-parallelism use-case they advocate in the proposal).

</comment></comment></comment><comment><USER25> Was all ready to kick in $99 on the off chance I might get an interesting little machine out of it, but when I clicked on their "Epiphany Multicore Accelerator (16 or 64 cores)" link, it came up with a 404 not found page error. That's not exactly reassuring.

<comment><USER19> Seems to be a typo. Looks like this is the correct link: <http://www.adapteva.com/products/silicon-devices/>.</comment></comment>