{"action":"created","comment":{"url":"https://api.github.com/repos/meteor/guide/pulls/comments/46510505","id":46510505,"diff_hunk":"@@ -0,0 +1,514 @@\n+---\n+title: User Interfaces and User Experience\n+---\n+\n+After reading this guide, you'll know:\n+\n+1. How to build re-usable client side components in any templating language\n+2. How to build a styleguide to allow you to visually test such pure components\n+3. Patterns for building front end components in a performant way in Meteor\n+4. How to design responsively across device sizes, accessibly for different users, and universally across languages.\n+5. How to build components that can cope with a variety of different data sources\n+6. How to use animation to keep users informed of changes\n+\n+## Reusable components\n+\n+Regardless of the rendering library that you are using, there are some patterns in how you build your User Interface (UI) that will help make your app's code easier to understand, test, and maintain. These patterns, much like general patterns of modularity, revolve around making the interfaces of your UI elements very clear, and avoiding using techniques that bypass these known interfaces.\n+\n+In this article, we'll refer to the elements in your user interface as \"components\". Although in some systems, you may refer to them as \"templates\", it can be a good idea to think of them as something more modular like a component which has an API, rather than a template which is usually seen in a looser way.\n+\n+To begin with, let's consider two categories of components that are useful to think about:\n+\n+### Pure Components\n+\n+A \"pure\" component is a component which doesn't rely on anything apart from it's inputs (it's *template arguments* in Blaze, or *props* in React) to render. \n+\n+In Meteor, specifically this means a component which does not access data from any global sources (typically either Collections or Stores). For instance, in the Todos example app, the `todosItem` template takes in the todo that it is rendering and does not ever look directly in the `Todos` collection.","path":"content/ui-ux.md","position":26,"original_position":26,"commit_id":"e90a5058b5d735ed9767f60993cbc7c20cbd45d0","original_commit_id":"e90a5058b5d735ed9767f60993cbc7c20cbd45d0","user":{"login":"tmeasday","id":132554,"avatar_url":"https://avatars.githubusercontent.com/u/132554?v=3","gravatar_id":"","url":"https://api.github.com/users/tmeasday","html_url":"https://github.com/tmeasday","followers_url":"https://api.github.com/users/tmeasday/followers","following_url":"https://api.github.com/users/tmeasday/following{/other_user}","gists_url":"https://api.github.com/users/tmeasday/gists{/gist_id}","starred_url":"https://api.github.com/users/tmeasday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmeasday/subscriptions","organizations_url":"https://api.github.com/users/tmeasday/orgs","repos_url":"https://api.github.com/users/tmeasday/repos","events_url":"https://api.github.com/users/tmeasday/events{/privacy}","received_events_url":"https://api.github.com/users/tmeasday/received_events","type":"User","site_admin":false},"body":"Hmm. I guess people in the react world tend to use \"pure\" synonymously with functional components.\r\n\r\n[Dan Abramov calls](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.d1fok0hhn) what I'm talking about \"dumb\" (he says \"rarely use state\", which I'd agree with rather than never).\r\n\r\n@zol + I (or was it you and I?) decided at one point we didn't like \"dumb\" as it sounded negative, thus the \"smart\" vs \"pure\" split. But I don't like redefining something that has a definition already.\r\n\r\n\"smart\" vs \"reusuable\" could work I guess. What do you think?","created_at":"2015-12-03T03:58:30Z","updated_at":"2015-12-03T03:58:30Z","html_url":"https://github.com/meteor/guide/pull/105#discussion_r46510505","pull_request_url":"https://api.github.com/repos/meteor/guide/pulls/105","_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments/46510505"},"html":{"href":"https://github.com/meteor/guide/pull/105#discussion_r46510505"},"pull_request":{"href":"https://api.github.com/repos/meteor/guide/pulls/105"}}},"pull_request":{"url":"https://api.github.com/repos/meteor/guide/pulls/105","id":51864690,"html_url":"https://github.com/meteor/guide/pull/105","diff_url":"https://github.com/meteor/guide/pull/105.diff","patch_url":"https://github.com/meteor/guide/pull/105.patch","issue_url":"https://api.github.com/repos/meteor/guide/issues/105","number":105,"state":"open","locked":false,"title":"Ui ux content","user":{"login":"tmeasday","id":132554,"avatar_url":"https://avatars.githubusercontent.com/u/132554?v=3","gravatar_id":"","url":"https://api.github.com/users/tmeasday","html_url":"https://github.com/tmeasday","followers_url":"https://api.github.com/users/tmeasday/followers","following_url":"https://api.github.com/users/tmeasday/following{/other_user}","gists_url":"https://api.github.com/users/tmeasday/gists{/gist_id}","starred_url":"https://api.github.com/users/tmeasday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmeasday/subscriptions","organizations_url":"https://api.github.com/users/tmeasday/orgs","repos_url":"https://api.github.com/users/tmeasday/repos","events_url":"https://api.github.com/users/tmeasday/events{/privacy}","received_events_url":"https://api.github.com/users/tmeasday/received_events","type":"User","site_admin":false},"body":"<a href='#crh-start'></a><a href='#crh-data-%7B%22processed%22%3A%20%5B%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46458411%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46458453%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459186%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459387%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459448%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459678%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459708%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460017%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460347%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460459%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460582%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460682%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460771%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460946%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460970%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461168%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461355%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461445%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461562%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461815%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462060%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462547%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462969%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46509841%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46509971%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510051%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510121%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510143%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510170%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510321%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510322%22%2C%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46510389%22%5D%2C%20%22comments%22%3A%20%7B%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2038%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459708%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Extra%20space%20breaks%20formatting%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A12%3A17Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2014%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46458411%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Maybe%20%5C%22Your%20UI%20is%20built%20out%20of%20components%5C%22%20or%20just%20%5C%22UI%20components%5C%22%3F%20I%20feel%20like%20the%20word%20%5C%22reusable%5C%22%20implies%20pure%2C%20so%20it%27s%20a%20bit%20confusing%20for%20a%20first%20heading.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A02%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A53%3A47Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2034%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459448%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20wouldn%27t%20use%20%5C%22styleguide%5C%22%20as%20a%20verb%20-%20probably%20more%20like%20%5C%22easy%20to%20put%20in%20a%20style%20guide%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A10%3A27Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2036%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459678%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20think%20this%20can%20be%20phrased%20as%2C%20you%20know%20exactly%20what%20they%20do%20and%20what%20dependencies%20you%20need%20to%20provide%20for%20them%20to%20work%20in%20different%20environments.%20%5C%22Flexible%5C%22%20is%20quite%20vague%2C%20as%20is%20%5C%22re-working%5C%22.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A12%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20117%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460771%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22This%20sentence%20feels%20like%20kind%20of%20a%20copout%20%3AP%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A19%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20397%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462547%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Should%20we%20call%20out%20that%20the%20generated%20ID%20is%20guaranteed%20to%20be%20the%20same%3F%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A30%3A42Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2085%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460347%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27d%20say%20in%20the%20meantime%2C%20we%20should%20like%20to%20some%20other%20blog%20post%20about%20this%20-%20I%27m%20sure%20there%20are%20many%20since%20a%20lot%20of%20companies%20seem%20to%20be%20switching%20to%20this%20approach.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A16%3A21Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20111%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460682%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27d%20switch%20the%20order%20of%20these%20two%20-%20first%2C%20places%20to%20translate%2C%20then%20how%20to%20use%20the%20specific%20API.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A18%3A38Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2026%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459387%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Actually%20this%20is%20interesting%3A%5Cr%5Cn%5Cr%5Cn1.%20Smart%20components%20have%20internal%20state%20and%20access%20global%20data%5Cr%5Cn2.%20Reusable%20components%20have%20internal%20state%2C%20but%20don%27t%20access%20global%20data%5Cr%5Cn3.%20Pure%20components%20don%27t%20have%20state%20and%20don%27t%20access%20anything%5Cr%5Cn%5Cr%5CnI%20feel%20like%20this%20article%20refers%20to%20%282%29%20as%20%5C%22pure%5C%22%2C%20which%20isn%27t%20consistent%20with%20the%20React%20terminology.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A10%3A00Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2024%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46459186%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22For%20future%20reference%20-%20ownership%20is%20%5C%22its%5C%22%20not%20%5C%22it%27s%5C%22.%5Cr%5Cn%5Cr%5CnAlso%2C%20inputs%20is%20pretty%20vague%20-%20I%20would%20say%20something%20like%20it%20doesn%27t%20have%20internal%20state%2C%20or%20doesn%27t%20rely%20on%20global%20properties%20of%20the%20system%3F%20I%20guess%20you%20explain%20it%20below%20a%20bit%20but%20I%20dunno%20if%20this%20sentence%20is%20actually%20helpful.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A08%3A31Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3E%20For%20future%20reference%20-%20ownership%20is%20%5C%22its%5C%22%20not%20%5C%22it%27s%5C%22.%5Cr%5Cn%5Cr%5CnHaha%20you%20wouldn%27t%20believe%20how%20much%20I%20struggle%20with%20this.%20My%20instinct%20is%20wrong%20like%20every%20time.%20I%20know%20rationally%20what%27s%20correct%20but%20if%20I%20don%27t%20catch%20myself%20I%20get%20it%20wrong%20every%20time.%20It%27s%20annoying.%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A42%3A05Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3E%20Also%2C%20inputs%20is%20pretty%20vague%20-%20I%20would%20say%20something%20like%20it%20doesn%27t%20have%20internal%20state%2C%20or%20doesn%27t%20rely%20on%20global%20properties%20of%20the%20system%3F%20I%20guess%20you%20explain%20it%20below%20a%20bit%20but%20I%20dunno%20if%20this%20sentence%20is%20actually%20helpful.%5Cr%5Cn%5Cr%5CnI%20kind%20of%20feel%20it%27s%20a%20useful%20sentence.%20Is%20this%20better%3F%5Cr%5Cn%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A55%3A44Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2049%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460017%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%3E%20Of%20course%20sometimes%20you%20do%20need%20to%20access%20the%20global%20data%20sources%20to%20feed%20data%20into%20your%20application.%5Cr%5Cn%5Cr%5Cn%5C%22While%20most%20of%20the%20components%20in%20your%20app%20should%20be%20pure%20and%20reusable%2C%20they%20need%20to%20get%20their%20data%20passed%20in%20from%20somewhere.%20This%20is%20where%20%5C%22smart%5C%22%20components%20come%20in.%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A14%3A10Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2020%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46458453%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27d%20list%20both%20in%20the%20sentence.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A02%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A53%3A50Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20400%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462969%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22This%20is%20more%20like%20%5C%22Indicating%20that%20a%20write%20is%20in%20progress%5C%22%2C%20no%3F%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A33%3A37Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22That%27s%20fair%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A49%3A43Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20184%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461562%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Does%20this%20stuff%20belong%20more%20in%20the%20data%20loading%20article%3F%20Or%20maybe%20we%20should%20cross-link%3F%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A24%3A27Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20think%20we%20do%20cross%20link%20pretty%20heavily.%20It%27s%20subtle%20--%20the%20data%20loading%20chapter%20talks%20about%20what%20the%20pubs%20should%20look%20like%20and%20where%20you%20should%20subscribe%2C%20this%20chapter%20talks%20about%20how%20you%20should%20build%20your%20UI%20based%20on%20the%20complexity%20of%20information%20you%20get%20back%20from%20it.%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A48%3A29Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20145%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461168%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22If%20you%20_really_%20want%20to%20be%20sure%20the%20UI%20isn%27t%20updating%20while%20the%20user%20is%20typing%2C%20%60debounce%60%20is%20more%20appropriate%20since%20%60throttle%60%20will%20still%20end%20up%20firing%20during%20the%20typing%20in%20many%20cases.%20I%20found%20this%20while%20coding%20the%20search%20for%20the%20docs.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A21%3A47Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20149%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461355%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%27m%20not%20sure%20what%20this%20section%20is%20meant%20to%20demonstrate%20-%20how%20to%20use%20jquery%20waypoints%3F%20I%20see%20any%20throttling%20behavior%20in%20the%20code%20snippet.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A23%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%2C%20I%20guess%20I%20thought%20we%20hand%20coded%20it%20in%20the%20sample%20app%20but%20we%20don%27t%20there.%20We%20do%20some%20hand%20coding%20but%20not%20in%20any%20open%20source%20apps...%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A46%3A36Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2099%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460582%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22So%20I%20ran%20into%20an%20issue%20-%20tap%3Ai18n%20actually%20depends%20on%20React%2C%20and%20doesn%27t%20work%20well%20with%20our%20current%20situation%3A%20https%3A//github.com/TAPevents/tap-i18n/issues/115%5Cr%5Cn%5Cr%5CnMaybe%20not%20relevant%20to%20the%20current%20version%20of%20the%20guide%2C%20but%20perhaps%20a%20code%20item%20if%20we%20want%20most%20of%20the%20guide%20to%20be%20relevant%20for%20React%20and%20Blaze.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A17%3A57Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22You%20mean%20it%20depends%20on%20Blaze%3F%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A44%3A50Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20125%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460946%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Do%20we%20want%20to%20recommend%20one%2C%20or%20specify%20which%20is%20better%3F%20I%20bet%20a%20lot%20of%20people%20won%27t%20really%20get%20the%20difference%20between%20the%20two.%20I%20feel%20like%20this%20is%20a%20relatively%20important%20concept.%5Cr%5Cn%5Cr%5CnAlso%2C%20maybe%20this%20would%20go%20in%20a%20%5C%22performance%5C%22%20guide%3F%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A20%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20168%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461445%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20think%20there%27s%20some%20kind%20of%20typo%20in%20the%20sentence%3A%20%5C%22These%20patterns%20relate%20heavily%20to%20the%20way%20the%20data%20they%20are%20allow%20the%20user%20is%20interacting%20with%20is%20subscribed%20to%20and%20published%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A23%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20128%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460970%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22events%2C%20not%20helpers%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A20%3A36Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20268%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46462060%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22This%20is%20awesome%20-%20I%27m%20really%20glad%20these%20concepts%20come%20together%20like%20this.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A27%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A49%3A09Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%20223%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46461815%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Probably%20should%20put%20a%20screenshot%20or%20a%20link%20to%20some%20article%20here%2C%20since%20we%20don%27t%20have%20it%20in%20the%20example%20app.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A26%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%2C%20%22Pull%20e90a5058b5d735ed9767f60993cbc7c20cbd45d0%20content/ui-ux.md%2094%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/105%23discussion_r46460459%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22That%27s%20fair%20-%20they%20aren%27t%20Meteor%20specific%2C%20we%20can%20remove%20them.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A17%3A04Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/ui-ux.md%3AL1-515%22%7D%7D%7D'></a>\n<a href='https://www.codereviewhub.com/'><img src='http://www.codereviewhub.com/site/github-bar.png' height=40></a>\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 24'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46459186'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> For future reference - ownership is \"its\" not \"it's\".\nAlso, inputs is pretty vague - I would say something like it doesn't have internal state, or doesn't rely on global properties of the system? I guess you explain it below a bit but I dunno if this sentence is actually helpful.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> > For future reference - ownership is \"its\" not \"it's\".\nHaha you wouldn't believe how much I struggle with this. My instinct is wrong like every time. I know rationally what's correct but if I don't catch myself I get it wrong every time. It's annoying.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> > Also, inputs is pretty vague - I would say something like it doesn't have internal state, or doesn't rely on global properties of the system? I guess you explain it below a bit but I dunno if this sentence is actually helpful.\nI kind of feel it's a useful sentence. Is this better?\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 26'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46459387'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Actually this is interesting:\n1. Smart components have internal state and access global data\n2. Reusable components have internal state, but don't access global data\n3. Pure components don't have state and don't access anything\nI feel like this article refers to (2) as \"pure\", which isn't consistent with the React terminology.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 34'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46459448'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I wouldn't use \"styleguide\" as a verb - probably more like \"easy to put in a style guide\"\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 36'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46459678'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I think this can be phrased as, you know exactly what they do and what dependencies you need to provide for them to work in different environments. \"Flexible\" is quite vague, as is \"re-working\".\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 38'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46459708'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Extra space breaks formatting\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 49'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460017'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> > Of course sometimes you do need to access the global data sources to feed data into your application.\n\"While most of the components in your app should be pure and reusable, they need to get their data passed in from somewhere. This is where \"smart\" components come in.\"\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 85'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460347'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'd say in the meantime, we should like to some other blog post about this - I'm sure there are many since a lot of companies seem to be switching to this approach.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 94'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460459'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> That's fair - they aren't Meteor specific, we can remove them.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 99'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460582'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> So I ran into an issue - tap:i18n actually depends on React, and doesn't work well with our current situation: https://github.com/TAPevents/tap-i18n/issues/115\nMaybe not relevant to the current version of the guide, but perhaps a code item if we want most of the guide to be relevant for React and Blaze.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> You mean it depends on Blaze?\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 111'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460682'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'd switch the order of these two - first, places to translate, then how to use the specific API.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 117'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460771'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> This sentence feels like kind of a copout :P\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 125'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460946'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Do we want to recommend one, or specify which is better? I bet a lot of people won't really get the difference between the two. I feel like this is a relatively important concept.\nAlso, maybe this would go in a \"performance\" guide?\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 128'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46460970'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> events, not helpers\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 145'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46461168'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> If you _really_ want to be sure the UI isn't updating while the user is typing, `debounce` is more appropriate since `throttle` will still end up firing during the typing in many cases. I found this while coding the search for the docs.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 149'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46461355'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'm not sure what this section is meant to demonstrate - how to use jquery waypoints? I see any throttling behavior in the code snippet.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah, I guess I thought we hand coded it in the sample app but we don't there. We do some hand coding but not in any open source apps...\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 168'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46461445'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I think there's some kind of typo in the sentence: \"These patterns relate heavily to the way the data they are allow the user is interacting with is subscribed to and published\"\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 184'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46461562'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Does this stuff belong more in the data loading article? Or maybe we should cross-link?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I think we do cross link pretty heavily. It's subtle -- the data loading chapter talks about what the pubs should look like and where you should subscribe, this chapter talks about how you should build your UI based on the complexity of information you get back from it.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 223'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46461815'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Probably should put a screenshot or a link to some article here, since we don't have it in the example app.\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 397'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46462547'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Should we call out that the generated ID is guaranteed to be the same?\n- [ ] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 400'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46462969'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> This is more like \"Indicating that a write is in progress\", no?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> That's fair\n- [x] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 14'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46458411'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Maybe \"Your UI is built out of components\" or just \"UI components\"? I feel like the word \"reusable\" implies pure, so it's a bit confusing for a first heading.\n- [x] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 20'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46458453'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I'd list both in the sentence.\n- [x] <a href='#crh-comment-Pull e90a5058b5d735ed9767f60993cbc7c20cbd45d0 content/ui-ux.md 268'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/105#discussion_r46462060'>File: content/ui-ux.md:L1-515</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> This is awesome - I'm really glad these concepts come together like this.\n\n\n<a href='https://www.codereviewhub.com/meteor/guide/pull/105?mark_as_completed=1'><img src='http://www.codereviewhub.com/site/github-mark-as-completed.png' height=26></a>&nbsp;<a href='https://www.codereviewhub.com/meteor/guide/pull/105?approve=1'><img src='http://www.codereviewhub.com/site/github-approve.png' height=26></a>&nbsp;<a href='https://github.com/meteor/guide/pull/105'><img src='http://www.codereviewhub.com/site/github-refresh.png' height=26></a>\n<a href='#crh-end'></a>","created_at":"2015-11-26T01:46:08Z","updated_at":"2015-12-03T03:58:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"83910933ce74e9a1fca3fd7f449a81687c253709","assignee":{"login":"stubailo","id":448783,"avatar_url":"https://avatars.githubusercontent.com/u/448783?v=3","gravatar_id":"","url":"https://api.github.com/users/stubailo","html_url":"https://github.com/stubailo","followers_url":"https://api.github.com/users/stubailo/followers","following_url":"https://api.github.com/users/stubailo/following{/other_user}","gists_url":"https://api.github.com/users/stubailo/gists{/gist_id}","starred_url":"https://api.github.com/users/stubailo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubailo/subscriptions","organizations_url":"https://api.github.com/users/stubailo/orgs","repos_url":"https://api.github.com/users/stubailo/repos","events_url":"https://api.github.com/users/stubailo/events{/privacy}","received_events_url":"https://api.github.com/users/stubailo/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/meteor/guide/pulls/105/commits","review_comments_url":"https://api.github.com/repos/meteor/guide/pulls/105/comments","review_comment_url":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}","comments_url":"https://api.github.com/repos/meteor/guide/issues/105/comments","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/e90a5058b5d735ed9767f60993cbc7c20cbd45d0","head":{"label":"meteor:ui-ux-content","ref":"ui-ux-content","sha":"e90a5058b5d735ed9767f60993cbc7c20cbd45d0","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor?","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-02T22:23:55Z","pushed_at":"2015-12-03T03:29:13Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"","size":3811,"stargazers_count":386,"watchers_count":386,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":26,"mirror_url":null,"open_issues_count":68,"forks":26,"open_issues":68,"watchers":386,"default_branch":"master"}},"base":{"label":"meteor:master","ref":"master","sha":"d033de3bac10c2ee68c7a644bb8537da4d9468d1","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor?","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-02T22:23:55Z","pushed_at":"2015-12-03T03:29:13Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"","size":3811,"stargazers_count":386,"watchers_count":386,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":26,"mirror_url":null,"open_issues_count":68,"forks":26,"open_issues":68,"watchers":386,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/105"},"html":{"href":"https://github.com/meteor/guide/pull/105"},"issue":{"href":"https://api.github.com/repos/meteor/guide/issues/105"},"comments":{"href":"https://api.github.com/repos/meteor/guide/issues/105/comments"},"review_comments":{"href":"https://api.github.com/repos/meteor/guide/pulls/105/comments"},"review_comment":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/meteor/guide/pulls/105/commits"},"statuses":{"href":"https://api.github.com/repos/meteor/guide/statuses/e90a5058b5d735ed9767f60993cbc7c20cbd45d0"}}}}