Created
November 21, 2012 14:18
-
-
Save trek/4125054 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| A. New Movement in Browser Applications | |
| a. Browsers getting better (Thanks MS!) | |
| b. you can start considering the browser a legit environment | |
| for client application development | |
| not just a handy rendering device for documents created by | |
| a robot in realtime on request (kindle photo) | |
| no Flash, JavaApplets, Silverlight required! | |
| c. Bar already raised: customer, client expectations going up: | |
| i. facebook | |
| ii. gmail | |
| iii. rdio | |
| iv. zendesk | |
| v. square | |
| vi. wunderlist | |
| d. CRAZY FUTURE: windows 8, chromeOS, games! http://vim-adventures.com/ crafty.js | |
| B. Patterns | |
| a. Web Applications before-Rails | |
| i. PHP | |
| ii. intermixed view, template, and business logic | |
| iii. best case, business logic split out into helper functions | |
| iv. Java applets? | |
| v. Perl cgi-bin | |
| b. Web Applications after Rails | |
| i. MVC, not new, not new to web apps, but became prominent in a big way | |
| ii. fat-model | |
| iii. REST | |
| c. The value of patterns | |
| i. organizes thought | |
| ii. organizes communication, even just with yourself | |
| iii. removes trivial decisions (and on teams, trivial arguments) | |
| d. Our current patterns suck for building rdio-quality apps. | |
| i. they're great patterns for the DOM. Nobody sane person would arge that we should abandon | |
| separation of concerns and go back to onclick="alert('my life is a living hell')" | |
| or that progressive enhancement/graceful degradation are bad ideas for a | |
| rich document | |
| e. But we're building something new. | |
| C. Browser Apps | |
| a. "browser app" coin a term - client app that targets the browser as an environment. | |
| i. we can't use "web app" because that just means too much. Perennial problem of tech. | |
| b. more in common with other client engineering environments (mobile: iOS/Andorid, desktop: Mac, Windows) | |
| than with "a page" | |
| c. Essentially taking advantage of a universally installed, internet connected, box-drawing toolset | |
| D. Browser App Patterns - Just one I want to cover today, Ember has it: SMs | |
| a. What is a state machine? | |
| i. formal structure and language for organizing and describing complex systems as a series of states | |
| ii. changes betweens states occur via actions | |
| iii. only on currents state possible | |
| iv. nested sets of states allow of nuanced expression | |
| v. turnstile http://en.wikipedia.org/wiki/Finite-state_machine | |
| b. Understanding Applications as a series of states, central pattern to Ember. | |
| i. states (nouns) | |
| ii. actions (verbs) | |
| iii. view hierarchy | |
| iv. {{outlet}} - section of view hierarchy filled in response to a state change | |
| E. Bank Simple | |
| initial state: activity | |
| app template outlets: | |
| at-a-glance | |
| main | |
| - initially filled with transactions | |
| more info | |
| - initially filled with messages | |
| click on a transaction | |
| transition to showing a single transition | |
| more info | |
| - filled with a single transaction | |
| click on 'edit' | |
| transition to editing a single transaction | |
| click 'save', click 'save this transaction' | |
| commit changes | |
| transition back to initial state | |
| as a result the view hierarchy matches that state | |
| click 'cancel', click 'x' | |
| transition back to initial state | |
| as a result the view hierarchy matches that state |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment