SlideShare a Scribd company logo
1 of 67
Download to read offline
Web Development with 
Smalltalk 
PhD. Mariano Martinez Peck 
marianopeck@gmail.com 
http://marianopeck.wordpress.com
Mariano Martinez Peck 
Academics 
Software Engineer at UTN-FRBA, Argentina. 
PhD in Computer Science at the Université de Lille. 
Open-Source 
Fuel, Pharo, DBXSuite (OpenDBX and Glorp), etc. 
Industry 
Previously, many years at different companies developing in different 
languages. 
Currently, Independent Software Consultant
Muchas Gracias!
Context
Objective-C
Why Smalltalk?
Things are changing
Smalltalk is powerful 
Pure Object Oriented. 
Dynamically typed and 
reflective. 
Closures. 
Debug and changes “on the 
fly”. 
Everything is an object. 
Runs in a VirtualMachine.
1. Domain specific logic. 
2. Web logic (UI).
Two common possibilities 
Use Smalltalk for domain logic and building UI 
(using a web framework). The server will answer the 
generated HTML + Javascript. 
Write a separate UI (web logic) in another language (a 
fully JS client) that connects somehow (rest/json for 
example) to a Smalltalk server (domain logic).
Web frameworks 
Seaside 
AidaWeb 
Many others…but above are most famous ones.
Quick intro 
Open Source (MIT). 
In production since 2002. 
It is different to most web frameworks. 
Fully written in Smalltalk.
In a nutshell 
It is component based (pure Smalltalk). 
It provides natural flow. 
Components are reusable and statefull.
In a nutshell 
It is component based (pure Smalltalk). 
It provides natural flow. 
Components are reusable and statefull.
We don’t think in pages…
We think in Components 
There are no templates! 
There is no JSP, XML, PHP or whatever. 
You never see HTTP requests or responses (unless you 
want to). 
Simply Smalltalk.
Components 
are c☺☺l
Reuseable
Model 
View Controller 
Model, View, Controller
You can debug!!!!
We can read Seaside code 
and learn from it
Canvas and Brush 
html div id: ‘title’; with: ‘Title’ 
<div id=”title”>Title</div>
html div id: ‘list’; with: [ 
html span class: ‘item’; with: ‘Item 1’. 
html span class: ‘item’; with: ‘Item 2’ ] 
<div id=”list”> 
<span class=”item”>Item 1</span> 
<span class=”item”>Item 2</span> 
</div>
html anchor 
callback: [ self inform: ‘Hello World’ ]; 
with: ‘Show Message’ 
<a href=”/seaside/example1 
?_s=Ru8ZKgqjy0uDX3kf 
&_k=K5EQyqKE 
&32”>Show Message</a>
Demo
Pros: 
• Great learning curve: only one language. 
• Manage all code the same way. 
• We use the same IDE tools. 
• Excellent debugging capabilities. 
• Reusability. 
Cons: 
• More complicated graphic designer 
integration.
Demo
In a nutshell 
It is component based (pure Smalltalk). 
It provides natural flow. 
Components are reusable and statefull.
Natural Flow
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.
Not concerned about HTTP 
No manual request parsing 
No XML configuration files
x := A call: B 
A
x := A call: B 
AB
B answer: 
AB
B answer: 
A
x := 
A
This is thanks to Continuations… 
as we will see later.
Demo
In a nutshell 
It is component based (pure Smalltalk). 
It provides natural flow. 
Components are reusable and statefull.
¿Qué pasaría si todo lo que haces, lo que conoces y 
lo que te cuentan se te olvidara? 
– Memento
¿Qué pasaría si todo lo que haces, lo que conoces y 
lo que te cuentan se te olvidara? 
– HTTP
What happened in the 
movie?
If it is so bad…why it has 
certain success?
Well…. 
Good scalability. 
It seems natural (because it is mainstream). 
The database performs well so…
But…it’s tedious and manual
You must 
juggle to keep 
conversational 
context…
Abusing of databases is not 
good either
Seaside is based on reusable 
statefull components
Continuations 
self call: (AnotherComponent new) 
1. Snapshots current estate. 
2. “Jumps” to another place (.e.g #call:) 
3. Do something. 
4. When it comes back (.e.g #answer:), the state is 
available.
Advantages of Continuations 
It’s call and return. 
Transparent management of the state and the threads. 
It helps with double-request and back-button 
problems. 
You can decide what is considered state.
Is not paradise either…
Using continuations 
I have be heavier!!!
Scalability is a bit different
Other characteristics
Other characteristics 
Very nice integration with JQuery, AJAX, Comet, etc. 
We can use our preferred Web server when deploying. 
It’s not tight to any persistency framework. 
Tons of wrapped libs like Twitter Bootstrap, Highcharts, 
etc…
MIT License
• http://book.seaside.st 
• http://www.seaside.st
Some conclusions 
Very easy to learn, develop and debug. 
Good integration with existing libs. 
Great with web applications with complex logic and 
workflows. 
It could be heavy (statefull) for certain scenarios. 
A bit complicated to build app from graph designer template. 
May not be the best choice for plain web pages.
Write a separate UI (web logic) in another language (a fully JS 
client) that connects somehow (rest/json for example) to a 
Smalltalk server (domain logic).
Thanks! 
Questions? 
PhD. Mariano Martinez Peck 
marianopeck@gmail.com 
http://marianopeck.wordpress.com

More Related Content

What's hot

Unbreaking Your Django Application
Unbreaking Your Django ApplicationUnbreaking Your Django Application
Unbreaking Your Django Application
OSCON Byrum
 
15 expression-language
15 expression-language15 expression-language
15 expression-language
snopteck
 

What's hot (20)

Building Large Scale PHP Web Applications with Laravel 4
Building Large Scale PHP Web Applications with Laravel 4Building Large Scale PHP Web Applications with Laravel 4
Building Large Scale PHP Web Applications with Laravel 4
 
How Symfony Changed My Life
How Symfony Changed My LifeHow Symfony Changed My Life
How Symfony Changed My Life
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails
 
Le Tour de xUnit
Le Tour de xUnitLe Tour de xUnit
Le Tour de xUnit
 
Java presentation
Java presentationJava presentation
Java presentation
 
[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS
 
The Quest for Global Design Principles
The Quest for Global Design PrinciplesThe Quest for Global Design Principles
The Quest for Global Design Principles
 
C:\fakepath\jsp01
C:\fakepath\jsp01C:\fakepath\jsp01
C:\fakepath\jsp01
 
Unbreaking Your Django Application
Unbreaking Your Django ApplicationUnbreaking Your Django Application
Unbreaking Your Django Application
 
15 expression-language
15 expression-language15 expression-language
15 expression-language
 
Java J2EE Complete Syllabus Checklist
Java J2EE Complete Syllabus ChecklistJava J2EE Complete Syllabus Checklist
Java J2EE Complete Syllabus Checklist
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Wt unit 6 ppts web services
Wt unit 6 ppts web servicesWt unit 6 ppts web services
Wt unit 6 ppts web services
 
Java script ppt
Java script pptJava script ppt
Java script ppt
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
django Forms in a Web API World
django Forms in a Web API Worlddjango Forms in a Web API World
django Forms in a Web API World
 
Building search app with ElasticSearch
Building search app with ElasticSearchBuilding search app with ElasticSearch
Building search app with ElasticSearch
 
Backbone JS for mobile apps
Backbone JS for mobile appsBackbone JS for mobile apps
Backbone JS for mobile apps
 
Server-side Technologies in Java
Server-side Technologies in JavaServer-side Technologies in Java
Server-side Technologies in Java
 
Advance java Online Training in Hyderabad
Advance java Online Training in HyderabadAdvance java Online Training in Hyderabad
Advance java Online Training in Hyderabad
 

Viewers also liked

Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
Michele Lanza
 
Pharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source SmalltalkPharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source Smalltalk
Serge Stinckwich
 

Viewers also liked (12)

Action-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVCAction-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVC
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
 
Pharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source SmalltalkPharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source Smalltalk
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?
 
MVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,MobileMVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,Mobile
 
Action-Domain-Responder: A Web-Specific Refinement of Model-View-Controller
Action-Domain-Responder: A Web-Specific Refinement of Model-View-ControllerAction-Domain-Responder: A Web-Specific Refinement of Model-View-Controller
Action-Domain-Responder: A Web-Specific Refinement of Model-View-Controller
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
Scala Days San Francisco
Scala Days San FranciscoScala Days San Francisco
Scala Days San Francisco
 
Fundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-DevelopersFundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-Developers
 

Similar to Web Development with Smalltalk

Intro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate JavascriptIntro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate Javascript
Andrew Lovett-Barron
 
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
Mark Rackley
 

Similar to Web Development with Smalltalk (20)

All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application development
 
Real World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case StudyReal World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case Study
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
Intro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate JavascriptIntro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate Javascript
 
Ruby on Rails from the other side of the tracks
Ruby on Rails from the other side of the tracksRuby on Rails from the other side of the tracks
Ruby on Rails from the other side of the tracks
 
All of javascript
All of javascriptAll of javascript
All of javascript
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
Rails Girls - Introduction to HTML & CSS
Rails Girls - Introduction to HTML & CSSRails Girls - Introduction to HTML & CSS
Rails Girls - Introduction to HTML & CSS
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015
 
Dynamic C# and a New World of Possibilities
Dynamic C# and a New World of PossibilitiesDynamic C# and a New World of Possibilities
Dynamic C# and a New World of Possibilities
 
Building Web Applications Without a Framework
Building Web Applications Without a FrameworkBuilding Web Applications Without a Framework
Building Web Applications Without a Framework
 
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
#SPSEMEA SharePoint & jQuery - What I wish I would have known a year ago..
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
HTML literals, the JSX of the platform
HTML literals, the JSX of the platformHTML literals, the JSX of the platform
HTML literals, the JSX of the platform
 
JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4
 
Implementing the Genetic Algorithm in XSLT: PoC
Implementing the Genetic Algorithm in XSLT: PoCImplementing the Genetic Algorithm in XSLT: PoC
Implementing the Genetic Algorithm in XSLT: PoC
 
Huge web apps web expo 2013
Huge web apps web expo 2013Huge web apps web expo 2013
Huge web apps web expo 2013
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
 

More from Mariano Martínez Peck

More from Mariano Martínez Peck (10)

Object garphs swapping
Object garphs swappingObject garphs swapping
Object garphs swapping
 
Metacello
MetacelloMetacello
Metacello
 
Efficient Proxies in Smalltalk
Efficient Proxies in SmalltalkEfficient Proxies in Smalltalk
Efficient Proxies in Smalltalk
 
DBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database SuiteDBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database Suite
 
Clustered Serialization with Fuel
Clustered Serialization with FuelClustered Serialization with Fuel
Clustered Serialization with Fuel
 
PhD Thesis Defense Presentation
PhD Thesis Defense PresentationPhD Thesis Defense Presentation
PhD Thesis Defense Presentation
 
Building you own Pharo images with Metacello
Building you own Pharo images with Metacello Building you own Pharo images with Metacello
Building you own Pharo images with Metacello
 
Visualizing Objects and Memory Usage
Visualizing Objects and Memory UsageVisualizing Objects and Memory Usage
Visualizing Objects and Memory Usage
 
Object swapping issues and the imagesegment implementation
Object swapping issues and the imagesegment implementationObject swapping issues and the imagesegment implementation
Object swapping issues and the imagesegment implementation
 
SqueakDBX
SqueakDBXSqueakDBX
SqueakDBX
 

Recently uploaded

Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Recently uploaded (20)

Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
微信号购买
微信号购买微信号购买
微信号购买
 
[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
Abortion Pill Prices Jane Furse ](+27832195400*)[🏥Women's Abortion Clinic in ...
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Rustenburg [(+27832195400*)] 🏥 Women's Abortion Clinic i...
 
Abortion Pill Prices Aliwal North ](+27832195400*)[ 🏥 Women's Abortion Clinic...
Abortion Pill Prices Aliwal North ](+27832195400*)[ 🏥 Women's Abortion Clinic...Abortion Pill Prices Aliwal North ](+27832195400*)[ 🏥 Women's Abortion Clinic...
Abortion Pill Prices Aliwal North ](+27832195400*)[ 🏥 Women's Abortion Clinic...
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with Links
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
GraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with GraphGraphSummit Milan - Neo4j: The Art of the Possible with Graph
GraphSummit Milan - Neo4j: The Art of the Possible with Graph
 
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 

Web Development with Smalltalk

  • 1. Web Development with Smalltalk PhD. Mariano Martinez Peck marianopeck@gmail.com http://marianopeck.wordpress.com
  • 2. Mariano Martinez Peck Academics Software Engineer at UTN-FRBA, Argentina. PhD in Computer Science at the Université de Lille. Open-Source Fuel, Pharo, DBXSuite (OpenDBX and Glorp), etc. Industry Previously, many years at different companies developing in different languages. Currently, Independent Software Consultant
  • 6.
  • 9. Smalltalk is powerful Pure Object Oriented. Dynamically typed and reflective. Closures. Debug and changes “on the fly”. Everything is an object. Runs in a VirtualMachine.
  • 10. 1. Domain specific logic. 2. Web logic (UI).
  • 11. Two common possibilities Use Smalltalk for domain logic and building UI (using a web framework). The server will answer the generated HTML + Javascript. Write a separate UI (web logic) in another language (a fully JS client) that connects somehow (rest/json for example) to a Smalltalk server (domain logic).
  • 12. Web frameworks Seaside AidaWeb Many others…but above are most famous ones.
  • 13.
  • 14. Quick intro Open Source (MIT). In production since 2002. It is different to most web frameworks. Fully written in Smalltalk.
  • 15. In a nutshell It is component based (pure Smalltalk). It provides natural flow. Components are reusable and statefull.
  • 16. In a nutshell It is component based (pure Smalltalk). It provides natural flow. Components are reusable and statefull.
  • 17. We don’t think in pages…
  • 18. We think in Components There are no templates! There is no JSP, XML, PHP or whatever. You never see HTTP requests or responses (unless you want to). Simply Smalltalk.
  • 19.
  • 20.
  • 23. Model View Controller Model, View, Controller
  • 25. We can read Seaside code and learn from it
  • 26. Canvas and Brush html div id: ‘title’; with: ‘Title’ <div id=”title”>Title</div>
  • 27. html div id: ‘list’; with: [ html span class: ‘item’; with: ‘Item 1’. html span class: ‘item’; with: ‘Item 2’ ] <div id=”list”> <span class=”item”>Item 1</span> <span class=”item”>Item 2</span> </div>
  • 28. html anchor callback: [ self inform: ‘Hello World’ ]; with: ‘Show Message’ <a href=”/seaside/example1 ?_s=Ru8ZKgqjy0uDX3kf &_k=K5EQyqKE &32”>Show Message</a>
  • 29. Demo
  • 30. Pros: • Great learning curve: only one language. • Manage all code the same way. • We use the same IDE tools. • Excellent debugging capabilities. • Reusability. Cons: • More complicated graphic designer integration.
  • 31. Demo
  • 32. In a nutshell It is component based (pure Smalltalk). It provides natural flow. Components are reusable and statefull.
  • 34. value1 := self request: ‘First Number’.
  • 35. value1 := self request: ‘First Number’. value2 := self request: ‘Second Number’.
  • 36. value1 := self request: ‘First Number’. value2 := self request: ‘Second Number’. self inform: value1 + value2.
  • 37. Not concerned about HTTP No manual request parsing No XML configuration files
  • 38. x := A call: B A
  • 39. x := A call: B AB
  • 43. This is thanks to Continuations… as we will see later.
  • 44. Demo
  • 45. In a nutshell It is component based (pure Smalltalk). It provides natural flow. Components are reusable and statefull.
  • 46. ¿Qué pasaría si todo lo que haces, lo que conoces y lo que te cuentan se te olvidara? – Memento
  • 47. ¿Qué pasaría si todo lo que haces, lo que conoces y lo que te cuentan se te olvidara? – HTTP
  • 48. What happened in the movie?
  • 49. If it is so bad…why it has certain success?
  • 50. Well…. Good scalability. It seems natural (because it is mainstream). The database performs well so…
  • 52. You must juggle to keep conversational context…
  • 53. Abusing of databases is not good either
  • 54. Seaside is based on reusable statefull components
  • 55. Continuations self call: (AnotherComponent new) 1. Snapshots current estate. 2. “Jumps” to another place (.e.g #call:) 3. Do something. 4. When it comes back (.e.g #answer:), the state is available.
  • 56. Advantages of Continuations It’s call and return. Transparent management of the state and the threads. It helps with double-request and back-button problems. You can decide what is considered state.
  • 57. Is not paradise either…
  • 58. Using continuations I have be heavier!!!
  • 59. Scalability is a bit different
  • 61. Other characteristics Very nice integration with JQuery, AJAX, Comet, etc. We can use our preferred Web server when deploying. It’s not tight to any persistency framework. Tons of wrapped libs like Twitter Bootstrap, Highcharts, etc…
  • 63. • http://book.seaside.st • http://www.seaside.st
  • 64. Some conclusions Very easy to learn, develop and debug. Good integration with existing libs. Great with web applications with complex logic and workflows. It could be heavy (statefull) for certain scenarios. A bit complicated to build app from graph designer template. May not be the best choice for plain web pages.
  • 65. Write a separate UI (web logic) in another language (a fully JS client) that connects somehow (rest/json for example) to a Smalltalk server (domain logic).
  • 66.
  • 67. Thanks! Questions? PhD. Mariano Martinez Peck marianopeck@gmail.com http://marianopeck.wordpress.com