• Save
Os Bowkett
Upcoming SlideShare
Loading in...5

Os Bowkett






Total Views
Views on SlideShare
Embed Views



1 Embed 2 2



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Os Bowkett Os Bowkett Presentation Transcript

  • (thanx xkcd.com)
  • SEASIDE Smalltalk Enterprise Application Server/IDE
  • SEASIDE Squeak Enterprise Aubergines Server/IDE
  • >
  • 2007 goto?
  • href considered harmful?
  • href == goto?
  • Seaside • Web app framework in Smalltalk • Web app IDE in Smalltalk • No hard-coded HTML links • No pretty URLs
  • w hy s m a l l t a l k ?
  • f un
  • Power
  • powerful continuations
  • Turtles all the way down
  • e di t smal l t al k i n smal l t al k
  • con t i nuat i on se r ve r
  • continuations?
  • continuations? preserve all state ! go somewhere else ! do something else ! all the state is there when you get back !
  • Time Machine
  • State Handling In Web Apps
  • Normal Method • Store state in the session • Store state in the database • Store state with flat files • Obtain state from cookies • Obtain state from CGI params
  • Seaside Method • Application stores state in memory • URLs have unique identifiers • Implemented with continuations
  • How is it different for the programmer?
  • Normal Method • Access database • Open flat files • Read CGI params • Read cookies
  • Seaside Method
  • Don’t think about state at all
  • Just think about your program
  • It kicks ass
  • To t a l l y d u d e
  • Rails makes Java and PHP look like training wheels
  • Seaside makes Rails look as if it has a speed limit
  • tedious
  • Seaside: ide = IDE Debug your Web app in your Web app
  • explicit HREF statements
  • discouraged in Rails
  • impossible in Seaside
  • impossible in Seaside (nearly)
  • href is goto
  • too much work
  • what does goto do?
  • s e n d yo u t o c o d e
  • what does href do?
  • s e n d yo u t o c o d e
  • why is goto considered harmful?
  • p r i m i t i ve f l o w c o n t ro l
  • why is href considered harmful?
  • p r i m i t i ve f l o w c o n t ro l
  • don’t be primitive
  • be advanced
  • impossible
  • Desktop app developers don’t have to track state
  • Their frameworks do it for them
  • Their languages do it for them
  • Ours should too
  • Seaside does
  • Seaside has an answer
  • Not the answer
  • Rails has an answer too
  • Replace goto with method dispatch
  • Replace href with active resources
  • REST
  • supports
  • obsessed
  • REST
  • REST
  • ?
  • ...
  • Smalltalk: Old School
  • Better Late Than Never
  • useless
  • funky
  • out there
  • weird
  • mind expanding
  • nearly the same language
  • very similar syntax
  • ver y different contexts
  • Smalltalk Ruby Unix Virtual Machine Windows
  • Turtles all the way down
  • e di t smal l t al k i n smal l t al k
  • “Postmodern language”
  • “Postmodern language” (glue language)
  • connect it to anything
  • have your cake and eat it
  • ru b in iu s . . .
  • Still just one of many possible futures
  • Ruby vir tual machine
  • Turtles all the way down
  • e di t ru by i n ruby
  • Seaside ported to Ruby...?
  • ...
  • REST
  • Light always wins.
  • people get involved
  • quot;Every developer working with the Web needs to read this book.quot; - David Heinemeier Hansson, creator of the Rails framework
  • REST
  • REST architectural style
  • REST
  • REST Addressability Statelessness Connectedness Uniform Interface
  • REST Small, simple URLs
  • what if the Web was one gigantic virtual machine?
  • <a href=“railsapp.com/controller/action”></a>
  • <a href=“railsapp.com/controller/action”></a> monkeys.com/monkeys/feed monkeys.com/monkeys/wash monkeys.com/monkeys/elect
  • <a href=“railsapp.com/controller/action”></a>
  • <goto=“location/resource/action”></goto>
  • <invoke=“location/object/method”></invoke>
  • auto-generated goto statements
  • the Web is a virtual machine
  • Rails is a component compiler
  • (almost)
  • Seaside:
  • Seaside: no almost about it
  • Seaside: Web apps with state
  • Seaside: no http gotos at all
  • ?
  • Giles Bowkett gilesbowkett.blogspot.com giles.tumblr.com