683 karma · joined September 16, 2014
Edit: I see now that it does indeed have "click" listed in the specs.
Yeah, but I can do that. Can it be my turn to be Satoshi now? It's specialized knowledge only insofar as you need to have read how to do it and understand enough to write some commensurate code. This is widely-published stuff. It doesn't take a Satoshi or even an expert.
* Supply the key to the top level list item component. Do NOT have the list item component define its own key in its render method. That is not how it works
* Don't use the array index for the key. Use something that's unique to the VALUE.
* Don't use _.uniqueId() or similar in any render loop. It will trigger a re-render every time, even if your underlying data has not changed.
* If you use _.uniqueId() outside of a render loop, for example to set a temp ID on a brand new data model (what Backbone does by default), and you have an isomorphic setup, make sure that your client and server counters stay in sync. The server version of _.uniqueId() will just keep counting up forever unless you do something about it.
You really need to try to find something unique (or unique enough) about the data itself. In the case of strings, use the string as the key. If the case of objects, if you really HAVE to, if there is nothing else that could possibly work right, you might get desperate and JSON.stringify them to make the key. Hopefully it doesn't come to that but it's still often better than alternatives that force full DOM reconciliation on the whole list.
But... the other problem with _.uniqueId is that in an isomorphic setup your server will just keep counting up and up while your client will start from 0 on every page load. So the first time you reinflate React on the client side the checksums won't match and will cause a full-page re-render.
I'm not about to claim that it's in any way an ideal or better, but isn't this how 90% of the literature, and maybe more often art, that we know hold as sacred parts of history, were created?
Please recall that Phoenix/Firebird/Firefox was born as a lightweight, fast alternative to the bloat of Netscape Communicator/Mozilla Suite. Dropping features from an old bloated application is what launched Firefox to fame in the first place.
I have noticed there appear to be artificially-bumped posts from time-to-time that relate to YC companies. Is HN providing extra clout to YC companies' PR above and beyond organic community moderation, and if so, will HN's extra autonomy in any way change that?
Remember the Aqua Teen Hunger Force "bomb" scare in Boston? The city rigorously pursued legal action to spare their police department the embarrassment of having wasted millions of dollars carefully dismantling DIY Lite-Brites.
Companies like these use up most of the H1B slots such that truly skilled high tech jobs that pay well, and would accept H1B if they could, are going unfilled. This is why you see so many U.S. companies setting up branches in Europe and Canada.
On the other hand, the article deviated so far from the original just-the-facts version, and the "analysis" was so one-dimensional, that it felt like it veered into Fox-News-for-liberals territory. Which should not be worthy of a pre-eminent news publication.
Perhaps "analysis" at a serious news publication should simply not be written hastily just for the sake of mass click appeal.
At any rate, it doesn't seem like it would have been that hard to throw some opinion piece links or an analysis piece link in the suggested/related section.
Why Mac:
* It's Unix-like.
* Homebrew is fantastic for OSS package management.
* It's ubiquitous. (Yeah you could use Arch Linux instead of a Mac with Homebrew, but Homebrew will always get updates first.)
* Great battery life. (Linux often sucks at this.)
Why Retina:
* Text is extremely clear. It may seem like nothing before you've used it for a while, but you'll never go back.
* More real estate for side-by-side viewing of whatever you need.
* The Retina MBPs are actually quite light, enough so that I don't have MacBook Air envy ever.