655 karma · joined June 18, 2012
What does that mean? If it's possible to write x86 that runs linux in JavaScript, why is it not possible to write a parser?
Huh? The data is only accessible to native app after you have installed the app on a device. If you only ever use your own one desktop, then it's probably hard for you to see this. Can you even try to imagine that you cannot just install arbitrary native app on let's say, your friend's device to access your data? But you can easily "install" a web app, since technically it's just a website like this one.
> What do you mean with this?
http://nolanlawson.com/2015/06/30/safari-is-the-new-ie/
> However, one advantage that native apps have when it comes to accessing cloud data, is that you can still access and update that data even when you have no connection to the internet.
https://developers.google.com/web/updates/2015/12/background...
> True, but web apps will always be removed from the underlying OS's "metal" by at least one degree, no?
Not always now that Web Assembly will be implemented by browsers. (Not to be confused with "asm.js", see https://en.wikipedia.org/wiki/WebAssembly)
The look & feel argument is total bullshit at least for me. Every native app I am using is completely different. The only consistent look & feel is with ms office apps like excel, word and powerpoint.
Performance is also a lot about how and who wrote the app rather than if the app is native. It's just harder and requires a lot of knowledge to make javascript app perform well, but it's not some impossibility.
And yes, standards are still creating too high level APIs and it takes forever to gain more and more access to the same things native apps have. But that will get better due to extensible web manifesto.
> Also, a tiny bit of JS and no ajax can solve that easily.
No disagreement from me that JS solves these issues.
> Maybe browsers could even agree on a standard to refresh only part of the pages by querying the server themselves.
Maybe browsers could also agree on implementing all needed applications in the browser. Then you just make <youtube> tag and you have implemented youtube.
No they are not the same.
Here's some key differences:
- If at runtime an execution doesn't even reach the code, then it doesn't matter at all for that particular execution whether the types were "correct". With static typing you need to get it right for all possible executions before you can even compile, regardless of how unlikely or unimportant those executions are. In practice, having to get it all right for all executions before you can even run one is a massive productivity loss in a lot of scenarios.
- Not only might a "type" of something in a dynamic language not be expressible statically (at least in majority of static languages) in the first place, dynamic code is never dependent on any particular type. You might get an unintended "type" in and the code can still work. There is a dependency on infinite amount of unexpressible "types".
You are completely ignoring the point of dynamic typing and you are using it as if it were static typing without annotations, by your own admission. But that's your problem. Similarly I could also use statically typed language as if it were dynamic and then claim that static typing is exactly the same as dynamic except more verbose.
I also don't have time to go into the studies you linked about general differences but similar studies have been debunked before. For example with 1.5 day old infants where the experimenters knew about the sex and their bias subtly corrupted the experiment and it did not reproduce when the bias was truly accounted for.
http://www.sciencedaily.com/releases/2010/09/100915080431.ht...
http://www.researchgate.net/profile/Angelica_Moe/publication...
There's also a study showing the field of neuroscience having a tendency to make unsupported and untested claims to confirm stereotypes http://link.springer.com/article/10.1007%2Fs12152-012-9169-1
In any case, logging error gives you no information anyway. Just try running: `console.log(new Error("..."))`. So at the very least you should do `catch(function(e){console.log(e.stack);})`
Thank you.
I must say the most prominent feature of bluebird has always been "debuggability" (not perf). Long stack traces, unhandled rejection reporting and warnings for many of the mistakes you cover (coming in 3.0, some of them listed at http://imgur.com/a/t3xng) are just priceless, especially when working with people who are not promise ninjas.
Edit: What I mean by "wiring" is that you need to make sure that in all successful code paths `deferred.resolve` is called and that in all erroneous code paths (not always a single try catch either) `deferred.reject` is called.