• 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
    • Heavy Light CORBA JSON SOAP 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