SlideShare uma empresa Scribd logo
1 de 84
Seaside
Why should you care?
~ Dynamic Stockholm 2010 ~
TM
TM
Julian Fitzell
Cincom Systems
Tuesday, November 2, 2010
What is Seaside?
Tuesday, November 2, 2010
A web framework
TM
Tuesday, November 2, 2010
A web framework^
application
TM
Tuesday, November 2, 2010
A web framework^
application
^
Smalltalk
TM
Tuesday, November 2, 2010
A web framework^
application
^
heretical?
TM
Tuesday, November 2, 2010
A web framework^
application
^
heretical?
TM
Tuesday, November 2, 2010
A web framework^
application
^
template-free
TM
Tuesday, November 2, 2010
A web framework^
application
^
open-source
TM
Tuesday, November 2, 2010
WebObjects
Tuesday, November 2, 2010
Ruby
Tuesday, November 2, 2010
Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/
Tuesday, November 2, 2010
The web is a language
equalizer
Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/
Tuesday, November 2, 2010
Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/
I can’t see anything
wrong. Could you try
again?
Tuesday, November 2, 2010
“Why should
I care?”
Tuesday, November 2, 2010
Programming
costs
money
Tuesday, November 2, 2010
Programming
costs
money
lots of
Tuesday, November 2, 2010
Let’s optimize
development
Tuesday, November 2, 2010
Let’s take away the
pain
Tuesday, November 2, 2010
Let’s focus on the
features that make
our products truly
exceptional
Tuesday, November 2, 2010
So what’s
your pain?
Courtesy of stock.xchng user Bubbels
Tuesday, November 2, 2010
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="mailreader-support" namespace="/" extends="mailreader-default">
<action name="Tour">
<result>/tour.html</result>
<interceptor-ref name="guest"/>
</action>
<action name="Welcome" class="mailreader2.Welcome">
<result>/Welcome.jsp</result>
<interceptor-ref name="guest"/>
</action>
<action name="Logout" class="mailreader2.Logout">
<result type="redirectAction">Welcome</result>
</action>
<action name="Login_*" method="{1}" class="mailreader2.Login">
<result name="input">/Login.jsp</result>
<result name="cancel" type="redirectAction">Welcome</result>
<result type="redirectAction">MainMenu</result>
<result name="expired" type="chain">ChangePassword</result>
<exception-mapping
exception="org.apache.struts.apps.mailreader.dao.ExpiredPasswordException"
result="expired"/>
<interceptor-ref name="guest"/>
</action>
<action name="Registration_*" method="{1}" class="mailreader2.Registration">
<result name="input">/Registration.jsp</result>
<result type="redirectAction">MainMenu</result>
<interceptor-ref name="guest"/>
</action>
</package>
XML Files?
Tuesday, November 2, 2010
Tag soup?
Courtesy of stock.xchng user lusi
Tuesday, November 2, 2010
Spaghetti
Templates?
Courtesy of stock.xchng user TouTouke
Tuesday, November 2, 2010
Waiting for
edit,
compile,
run?
Courtesy of stock.xchng user matchstick
Tuesday, November 2, 2010
Code
generation?
Courtesy of stock.xchng users wildiexx and sundesigns
Tuesday, November 2, 2010
Mapping?
Object-Relational
Courtesy of stock.xchng user theswedish
Tuesday, November 2, 2010
Passing around IDs?
Tuesday, November 2, 2010
Security?
Courtesy of stock.xchng user lusi
Tuesday, November 2, 2010
step
Processes?
Multi-
Courtesy of stock.xchng user mexikids
Tuesday, November 2, 2010
Components
Tuesday, November 2, 2010
CBA
Tuesday, November 2, 2010
CBA
Tuesday, November 2, 2010
New Item
Add
Tuesday, November 2, 2010
A B C
Tuesday, November 2, 2010
New Item
Add
Tuesday, November 2, 2010
Demo
Tuesday, November 2, 2010
New Item
Add
?
A B C
Tuesday, November 2, 2010
New Item
Add
?New Item
Add
A B C
Tuesday, November 2, 2010
New Item
Add
New Item
Add
item
item
A B C
Tuesday, November 2, 2010
a := self request: ‘A number?’.
b := self request: ‘Another?’.
self inform: a + b
Tuesday, November 2, 2010
a := self request: ‘A number?’.
b := self request: ‘Another?’.
self inform: a + b
Tuesday, November 2, 2010
Demo
Tuesday, November 2, 2010
ActionAction
WebBrowser
Tuesday, November 2, 2010
WebBrowser
TaskTask
Tuesday, November 2, 2010
WebBrowser
TaskTask
CONTINUATIONS
Tuesday, November 2, 2010
Single Tool-chain
Tuesday, November 2, 2010
“7 Things”
Courtesy of stock.xchng user chux
3
21
4
5
6 7
Tuesday, November 2, 2010
In Smalltalk,
everything is an
object
Tuesday, November 2, 2010
In Smalltalk,
everything is an
object
Seaside+
Tuesday, November 2, 2010
Templates aren’t OO
Tuesday, November 2, 2010
<h1><% print $title %><h1>
Tuesday, November 2, 2010
html heading: title
Tuesday, November 2, 2010
✓Debugging
Tuesday, November 2, 2010
Refactoring
✓
Tuesday, November 2, 2010
Callbacks...
✓
Tuesday, November 2, 2010
<a href=“/deleteItem?id=<% print
$item.id%>”>Delete</a>
Tuesday, November 2, 2010
html anchor
callback: [ self delete: item ];
with: ‘Delete’
Tuesday, November 2, 2010
Security
Courtesy of stock.xchng user julosstock
Tuesday, November 2, 2010
Cross-site scripting
(XSS)
© Mark Miller, from morguefile.com
Tuesday, November 2, 2010
Output is encoded
by default
Tuesday, November 2, 2010
html heading: title
Tuesday, November 2, 2010
Parameter injection
Courtesy of stock.xchng user foxumon
Tuesday, November 2, 2010
Parameter names are
not meaningful
Tuesday, November 2, 2010
IDs are not
passed around
Tuesday, November 2, 2010
Actions are bound to
functions
Tuesday, November 2, 2010
html anchor
callback: [ self delete: item ];
with: ‘Delete’
Tuesday, November 2, 2010
If you don’t expose it,
your users can’t do it!
Tuesday, November 2, 2010
Replay attacks
Courtesy of stock.xchng user ratnesh
Tuesday, November 2, 2010
Tuesday, November 2, 2010
Session (96-bit)
Tuesday, November 2, 2010
Page (96-bit)
Tuesday, November 2, 2010
Tuesday, November 2, 2010
Demo
Tuesday, November 2, 2010
Where can I find out
more?
Tuesday, November 2, 2010
www.seaside.st
Tuesday, November 2, 2010
Tuesday, November 2, 2010
Mailing list
Tuesday, November 2, 2010
Examples
Tuesday, November 2, 2010
Tuesday, November 2, 2010
Tuesday, November 2, 2010
Tuesday, November 2, 2010
In business, there is nothing
more valuable than a technical
advantage your competitors
don't understand.
– Paul Graham
Tuesday, November 2, 2010
Julian Fitzell
jfitzell@cincom.com
blog.fitzell.ca
Twitter: @jfitzell
www.seaside.st
Seaside is a trademark of Avi Bryant and Julian Fitzell
CINCOM and the Quadrant Logo are registered trademarks of Cincom Systems, Inc.
All other trademarks belong to their respective companies.
© 2010 Cincom Systems, Inc.
© 2009 Julian Fitzell
All rights reserved
Tuesday, November 2, 2010

Mais conteúdo relacionado

Destaque (11)

At the Extremities of Extreme (Agile North 2011)
At the Extremities of Extreme (Agile North 2011)At the Extremities of Extreme (Agile North 2011)
At the Extremities of Extreme (Agile North 2011)
 
Hunt International Training & Speaking Overview --- January 2013
Hunt International Training & Speaking Overview --- January 2013Hunt International Training & Speaking Overview --- January 2013
Hunt International Training & Speaking Overview --- January 2013
 
Seaside - Why should you care? (OSDC.fr 2010)
Seaside - Why should you care? (OSDC.fr 2010)Seaside - Why should you care? (OSDC.fr 2010)
Seaside - Why should you care? (OSDC.fr 2010)
 
Appl Phys Lett 96 211103
Appl Phys Lett 96 211103Appl Phys Lett 96 211103
Appl Phys Lett 96 211103
 
Oração do arcanjo miguel para limpeza espiritual em 21 dias
Oração do arcanjo miguel para limpeza espiritual em 21 diasOração do arcanjo miguel para limpeza espiritual em 21 dias
Oração do arcanjo miguel para limpeza espiritual em 21 dias
 
At the Extremities of Extreme (SPA 2011)
At the Extremities of Extreme (SPA 2011)At the Extremities of Extreme (SPA 2011)
At the Extremities of Extreme (SPA 2011)
 
Real-time Collaborative Development (Jazoon 2011)
Real-time Collaborative Development (Jazoon 2011)Real-time Collaborative Development (Jazoon 2011)
Real-time Collaborative Development (Jazoon 2011)
 
The Literary Works Of Alice Walker
The Literary Works Of Alice WalkerThe Literary Works Of Alice Walker
The Literary Works Of Alice Walker
 
IEEE LEOS Optical MEMS
IEEE LEOS Optical MEMSIEEE LEOS Optical MEMS
IEEE LEOS Optical MEMS
 
Comsol2009 Paper
Comsol2009 PaperComsol2009 Paper
Comsol2009 Paper
 
Slide presentasi pmk 249 2011
Slide presentasi pmk 249 2011Slide presentasi pmk 249 2011
Slide presentasi pmk 249 2011
 

Semelhante a Seaside - Why should you care? (Dynamic Stockholm 2010)

Multi dimensional profiling
Multi dimensional profilingMulti dimensional profiling
Multi dimensional profiling
bergel
 
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas KnechtAtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
Atlassian
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
RIA Unleashed - Developing for the TV with litl os
RIA Unleashed - Developing for the TV with litl osRIA Unleashed - Developing for the TV with litl os
RIA Unleashed - Developing for the TV with litl os
ryancanulla
 

Semelhante a Seaside - Why should you care? (Dynamic Stockholm 2010) (20)

Multi dimensional profiling
Multi dimensional profilingMulti dimensional profiling
Multi dimensional profiling
 
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas KnechtAtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht
 
Integrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendconIntegrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendcon
 
Human APIs
Human APIsHuman APIs
Human APIs
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
Productcamp montreal 2010
Productcamp montreal 2010Productcamp montreal 2010
Productcamp montreal 2010
 
ZOMG WHY IS THIS CODE SO SLOW
ZOMG WHY IS THIS CODE SO SLOWZOMG WHY IS THIS CODE SO SLOW
ZOMG WHY IS THIS CODE SO SLOW
 
Poisoning Rubinius: The _why and How
Poisoning Rubinius: The _why and HowPoisoning Rubinius: The _why and How
Poisoning Rubinius: The _why and How
 
HTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit BangaloreHTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit Bangalore
 
Html5 Development
Html5 DevelopmentHtml5 Development
Html5 Development
 
Mobile Future - Mobile Developer Summit Bangalore
Mobile Future - Mobile Developer Summit BangaloreMobile Future - Mobile Developer Summit Bangalore
Mobile Future - Mobile Developer Summit Bangalore
 
04 Reports
04 Reports04 Reports
04 Reports
 
Ajax solr
Ajax solrAjax solr
Ajax solr
 
Flowcon - Mixing Lean UX & Agile Development
Flowcon - Mixing Lean UX & Agile DevelopmentFlowcon - Mixing Lean UX & Agile Development
Flowcon - Mixing Lean UX & Agile Development
 
Introduction to G0V.tw 2013
Introduction to G0V.tw 2013Introduction to G0V.tw 2013
Introduction to G0V.tw 2013
 
Spacebits at Codebits
Spacebits at CodebitsSpacebits at Codebits
Spacebits at Codebits
 
Flash Forward to the Future: Media Innovation: China
Flash Forward to the Future: Media Innovation: China  Flash Forward to the Future: Media Innovation: China
Flash Forward to the Future: Media Innovation: China
 
RIA Unleashed - Developing for the TV with litl os
RIA Unleashed - Developing for the TV with litl osRIA Unleashed - Developing for the TV with litl os
RIA Unleashed - Developing for the TV with litl os
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Seaside - Why should you care? (Dynamic Stockholm 2010)