2,815 karma · joined August 26, 2011
Slight tangent, but a good way to tackle that is to outline what you want to do (sketch the API you're going to fill in, etc), and run that by a reviewer
In a business setting, I find that this case is often more of the variety of "they are suggesting the problem, and are implying/expecting someone else to solve it" (where someone _may_ be you)
I wonder if its firmware will be open source? The marketing page makes no mention of that
There's a high likelihood that at least some of their work will be of value to the company—or, if everything pans out, they get a fancy new platform. The real motivation is probably somewhere in the middle (retention, product development).
This is a solid bet to make, especially when you are effectively not worried about the cost (thanks, ads!).
A lot of Google is heavily research focused like this: let engineers (mostly) freely explore complicated problem spaces. If it's a product—awesome!—see if there's market fit, and then grow it. If not, no problem; see where it, or parts thereof, can be applied elsewhere within Google.
Source: I worked there.
Nowadays, I hear it's quite different, and much of AWS is more rapidly dogfooded.
Similarly, however that whitelist of identities is specified becomes another vector, without a lot of PKI
Each HTML document describes what it wants to have rendered, but does not describe how it should be rendered.
For example: web UI started as declarative (HTML -> PHP), and then transitioned towards more imperative (jQuery, Backbone, Angular), and is now moving back towards declarative (React, Polymer)
I'd rather have more people working on the problem than fewer. More scrutiny should, at least, improve the work and reduce errors in the models (and, hopefully, that leads to fewer casualties)
I've tried npm out every few months (since npm 3), and have consistently run into infuriating bugs or unexpected behaviors.
Much of it has been fixed over time, but the frequency and duration of these issues is concerning—and, I think, points to architectural deficiencies being the root of the problem. For example:
* npm 5.0.0—5.7.0 didn't play nice with git-based dependencies (https://github.com/npm/npm/issues/17379)
* npm 5.0.0—5.4.1 edits package-lock.json unexpectedly (https://github.com/npm/npm/issues/17979)
* npm 5.0.0—5.4.? doesn't honor incompatible version differences in package.json compared to package-lock.json (https://github.com/npm/npm/issues/16866)
* Take a look at the issues labeled as [big-bug], and how long they've languished: https://github.com/npm/npm/issues?q=is%3Aissue+is%3Aopen+sor...
* and a bunch of others I can't remember off the top of my head; especially nondeterministic behavior in the v2 and v3 era.
---
Btw, I'm not trying to tear down npm contributors here; people have put in a monumental amount of work into the project, and the node ecosystem wouldn't be where it is without npm.
(Plenty do out of love for the product/customers/etc, but man it's soul crushing to not be recognized for it)
There's little to no interop with the front-end world as we know it (aka the DOM), and any briding to it is still quite expensive. You'd have to re-implement lua's garbage collector in wasm, etc.
wasm is great for high performance data crunching—aka why it's so attractive for 3d engines, games, and the like.
It's less great for developing front end apps; unless you feel like building much of a browser within it.
---
It _will_ get to that point, but we've got a while before interop is a realistic thing
* Getting the solution 80% of the way there is often pretty fast (which ends up deceiving everyone depending on it "it's almost done!")
* You are nearly guaranteed to encounter a bunch of bugs that were already solved in the original dependency.
* Due to the previous points, there's a big chance that your initial design had a few fatal flaws, and requires significant refactoring to address (making the project take longer, and if not careful making it much harder to understand & maintain)
Rewriting dependencies can definitely be worth it from a code ownership/maintenance point of view; but more often than not, you'll end up creating a cycle where the new version of the dependency is just as obtuse as the previous—and once you leave, the same problem all over again.
If a dependency is well documented, has a clear architecture, and follows consistent coding practices, it will stand the test of time (including loss of authors/maintainers). Most people/companies aren't willing to put the time/effort into that level of polish.