Skip to content

Instantly share code, notes, and snippets.

@trek
Created November 21, 2012 14:18
Show Gist options
  • Select an option

  • Save trek/4125054 to your computer and use it in GitHub Desktop.

Select an option

Save trek/4125054 to your computer and use it in GitHub Desktop.
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