Slide 1

Slide 1 text

Ken Collins metaskills.net _H@

Slide 2

Slide 2 text

Who Am I Again? ? Monday, September 12, 11

Slide 3

Slide 3 text

Who Am I Again? @MetaSkills Monday, September 12, 11

Slide 4

Slide 4 text

Who Am I Again? @MetaSkills Monday, September 12, 11

Slide 5

Slide 5 text

Who Am I Again? @MetaSkills Monday, September 12, 11

Slide 6

Slide 6 text

Who Am I Again? @MetaSkills Monday, September 12, 11

Slide 7

Slide 7 text

Who Am I Again? @MetaSkills ... Monday, September 12, 11

Slide 8

Slide 8 text

Sr. Software Engineer @ Decisiv Monday, September 12, 11

Slide 9

Slide 9 text

Monday, September 12, 11

Slide 10

Slide 10 text

JavaScript Monday, September 12, 11

Slide 11

Slide 11 text

Monday, September 12, 11

Slide 12

Slide 12 text

Blog @ MetaSkills.net Monday, September 12, 11

Slide 13

Slide 13 text

Freetime @ HomeMarks.com Monday, September 12, 11

Slide 14

Slide 14 text

Advocate @ 757rb.org Monday, September 12, 11

Slide 15

Slide 15 text

HTML5 CSS3 Monday, September 12, 11

Slide 16

Slide 16 text

Divitis
27 Dec 2010

My New Blog

...
...
Monday, September 12, 11

Slide 17

Slide 17 text

Semantic

My New Blog

... ... Monday, September 12, 11

Slide 18

Slide 18 text

Dive Into HTML5 http:/ /diveintohtml5.org/semantics.html#new-elements Monday, September 12, 11

Slide 19

Slide 19 text

CSS3 Monday, September 12, 11

Slide 20

Slide 20 text

CSS3 Selectors Monday, September 12, 11

Slide 21

Slide 21 text

CSS3 Selectors Borders (images, radius, shadows) Monday, September 12, 11

Slide 22

Slide 22 text

CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Monday, September 12, 11

Slide 23

Slide 23 text

CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Monday, September 12, 11

Slide 24

Slide 24 text

CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Backgrounds (gradients, clip, origin) Monday, September 12, 11

Slide 25

Slide 25 text

CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Backgrounds (gradients, clip, origin) Media Queries & Fonts Monday, September 12, 11

Slide 26

Slide 26 text

Transitions, Transforms, Animations Monday, September 12, 11

Slide 27

Slide 27 text

Transitions, Transforms, Animations Monday, September 12, 11

Slide 28

Slide 28 text

jQuery “Mobile” Monday, September 12, 11

Slide 29

Slide 29 text

Encapsulate Your JavaScript http:/ /metaskills.net/2011/09/06/how-do-you-encapsulate-your-javascript/ Monday, September 12, 11

Slide 30

Slide 30 text

Leveraging API's In Ruby Monday, September 12, 11

Slide 31

Slide 31 text

Data Format (JSON & XML) Monday, September 12, 11

Slide 32

Slide 32 text

Data Format (JSON & XML) Always Use Object Notation Monday, September 12, 11

Slide 33

Slide 33 text

Data Format (JSON & XML) { "id":8, "email":"[email protected]", "posts":[ {"id":30, "title":"First Post", "body":"Some text..."}, {"id":73, "title":"Second Post", "body":"More text..."} ] } Monday, September 12, 11

Slide 34

Slide 34 text

8 [email protected] 30 First Post Some text... 73 Second Post More text... Data Format (JSON & XML) Monday, September 12, 11

Slide 35

Slide 35 text

Data Format (JSON & XML) Always Use Object Notation Rails has #to_json and #to_xml Define #as_json for obj primitive. Monday, September 12, 11

Slide 36

Slide 36 text

Data Format (JSON & XML) Always Use Object Notation Rails has #to_json and #to_xml Define #as_json for obj primitive. New objects using #from_json and #from_xml methods. Monday, September 12, 11

Slide 37

Slide 37 text

json = '{ "id":8, "email":"[email protected]", "posts":[ {"id":30, "title":"First Post", "body":"Some text..."}, {"id":73, "title":"Second Post", "body":"More text..."} ] }' user = User.new.from_json(json) user.email # => [email protected] user.posts.size # => 2 user.post.first.title # => "First Post" Data Format (JSON & XML) Monday, September 12, 11

Slide 38

Slide 38 text

Representation State Transfer (REST) Monday, September 12, 11

Slide 39

Slide 39 text

Representation State Transfer (REST) CREATE READ UPDATE DELETE DB HTTP INSERT SELECT UPDATE DELETE POST GET PUT DELETE Monday, September 12, 11

Slide 40

Slide 40 text

Representation State Transfer (REST) CREATE READ UPDATE DELETE DB HTTP INSERT SELECT UPDATE DELETE POST GET PUT DELETE Monday, September 12, 11

Slide 41

Slide 41 text

Representation State Transfer (REST) CREATE READ UPDATE DELETE DB HTTP INSERT SELECT UPDATE DELETE POST GET PUT DELETE Monday, September 12, 11

Slide 42

Slide 42 text

Representation State Transfer (REST) GET /users {:controller=>"users", :action=>"index"} POST /users {:controller=>"users", :action=>"create"} GET /users/:id {:controller=>"users", :action=>"show"} PUT /users/:id {:controller=>"users", :action=>"update"} DELETE /users/:id {:controller=>"users", :action=>"destroy"} Monday, September 12, 11

Slide 43

Slide 43 text

HTTP Clients Monday, September 12, 11

Slide 44

Slide 44 text

HTTP Clients In Ruby Monday, September 12, 11

Slide 45

Slide 45 text

HTTP Clients In Ruby Many choices! Monday, September 12, 11

Slide 46

Slide 46 text

HTTP Clients In Ruby Many choices! Ruby’s core lib Net::HTTP looks more like wizardry vs idiomatic Ruby. Monday, September 12, 11

Slide 47

Slide 47 text

HTTP Clients In Ruby Many choices! Ruby’s core lib Net::HTTP looks more like wizardry vs idiomatic Ruby. Research and pick one that works best for you. Monday, September 12, 11

Slide 48

Slide 48 text

HTTP Clients In Ruby http:/ /ruby-toolbox.com/categories/http_clients.html Monday, September 12, 11

Slide 49

Slide 49 text

Typhoeus https:/ /github.com/dbalatero/typhoeus High Speed! Built On Top Of libcurl Simple RESTful Request Parallel Requests Memoization & Caching Monday, September 12, 11

Slide 50

Slide 50 text

hydra = Typhoeus::Hydra.new request = Typhoeus::Request.new("http://localhost/posts/1.json") request.on_complete do |response| json = JSON.parse(response.body) post = Post.new.from_json(json) # Do crazy callback stuff... end hydra.queue request hydra.run # This is a blocking call that # returns once all requests are complete. Typhoeus Monday, September 12, 11

Slide 51

Slide 51 text

SOAP Monday, September 12, 11

Slide 52

Slide 52 text

xml = Builder::XmlMarkup.new(:indent=>2) xml.user do xml.id 8, :type => 'integer' xml.email "[email protected]" xml.posts :type => 'array' do xml.post {...} end end xml.target! # => # # 8 # [email protected] # # # ... # # # Pragmatic Use Of Builder http:/ /builder.rubyforge.org/ Monday, September 12, 11

Slide 53

Slide 53 text

If You Embrace SOAP http:/ /savonrb.com/ https:/ /github.com/unwire/handsoap Savon Handsoap Monday, September 12, 11

Slide 54

Slide 54 text

Thanks! Ken Collins metaskills.net Monday, September 12, 11