The Revenge of Smalltalk
       London Geek Nights
          July 6, 2009
Lukas Renggli
Academics
  PhD Student, University of Bern
Open-Source
  Core-developer of Seaside
  Author of Magritte and Pier
Industry
  Independent Software Consultant
Agenda

Flow           Continuations
Components     Objects
Security       Closures
Applications   Debugger
Natural Flow




Source: stock.xchng, Asif Akbar
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>


<form action="result.html">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>


<form action="result.html">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>


<form action="result.html">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>


<form action="result.html">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>


<form action="result.html">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>

<form action="result.html">
   <input type="hidden" name="value1" value="<% value1 %>">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
<form action="second.html">
   <input type="text" name="value1">
   <input type="submit" value="OK">
</form>

<form action="result.html">
   <input type="hidden" name="value1" value="<% value1 %>">
   <input type="text" name="value2">
   <input type="submit" value="OK">
</form>


<p>
   <% value1 + value2 %>
</p>
is different
3 user interactions
3 lines of code
value1 := self request: ‘First Number’.
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
D SL
value1 := self request: ‘First Number’.


     I t’sa
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
It’s j u st
value1 := self request: ‘First Number’.


  S m a l lt a l k
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
No request parsing
No string fiddling
No state machines
Demo
Reusable
                                       Components




Source: stock.xchng, Lynne Lancaster
Reuseable
Persistent
Model




    View           Controller




Model, View, Controller
Valid




Source: stock.xchng, Al Nakib
CSS
Designer
XHTML
Developer & Seaside
DRY
DRY
It ’s   a D S L
It’s j u st
DRY
S m a l lt a l k
Demo
3
Source: stock.xchng, Colin Brough
                                     Default
                                    Secure by
Cross Site Scripting




Source: stock.xchng, Afonso Lima
Output is encoded
    by default
Replay Attacks




Source: stock.xchng, Afonso Lima
Session
_s=Ru8ZKgqjy0uDX3kf

       96-bit
Page
_k=K5EQyqKE

   48-bit
Parameter Tampering




Source: stock.xchng, Afonso Lima
Names are generated
   automatically
Names are bound
  to functions
No manual
request parsing
html submitButton

   callback: [ self inform: ‘Hey’ ];

   with: ‘Click Here’
html submitButton

                   a D S L
     It ’s

   callback: [ self inform: ‘Hey’ ];

   with: ‘Click Here’
It’s j u st
html submitButton


    S m a l lt a l k

   callback: [ self inform: ‘Hey’ ];

   with: ‘Click Here’
Web 2.0




Source: Flickr, Benjamin Jackson
Source: Flickr, psrman's
Comet




Source: Flickr, psrman's
a D S L
It ’s
It’s j u st
S m a l lt a l k
Demo
5                  Applications



Source: stock.xchng, Steve Woods
In productive use
    since 2002
Seaside
MIT License
External Interface Support
                                                                   XML Support enables XML–Smalltalk object
 Platform
   256MB RAM, 400MB disk
                                                                   mapping, includes a server interface via XML
 0MHz PC, 128MB RAM, 400MB disk                                    request handlers and reading of remote resources
  station or server, 64MB RAM, 200MB disk                          via TCP sockets using HTTP requests
m/6000, POWERStation                                               OLE Support enables an application to use OLE
 erver, 128MB RAM, 400MB disk                                      clients and custom control services.
1a Library Manager                                                 Domino Connection allows an application to
4.2 or 5.1                                                         retrieve and work with Domino documents as well
p 4.0 + FP11                                                       as access Notes mail system.
p Server for e-Business
  ME - EMADMIN only
  2000, 2000 Server,
d Server
  XP Professional
  Server 2003                                                         Download a risk-free trial copy:
 Vista Business, Enterprise,                                     www.instantiations.com/VAST/download
te
 is Version 8 or 9
 rsion 11.0 or 11i
on 5.1, 5.2 or 5.3
 inux 9 and Advance Server 2.1
erprise 10
visit www.instantiations.com/VAST
                                                                                                     Build Quality Software

WindowBuilder are trademarks of Instantiations. All other trademarks mentioned are the property of their respective owners.
www.seaside.st
www.seaside.st
www.swa.hpi.uni-potsdam.de/seaside/tutorial/
book.seaside.st

Seaside - The Revenge of Smalltalk