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, N...
“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...
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
Tu...
Julian Fitzell
jfitzell@cincom.com
blog.fitzell.ca
Twitter: @jfitzell
www.seaside.st
Seaside is a trademark of Avi Bryant and...
Upcoming SlideShare
Loading in...5
×

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

10,473

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,473
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Seaside Why should you care? ~ Dynamic Stockholm 2010 ~ TM TM Julian Fitzell Cincom Systems Tuesday, November 2, 2010
  2. 2. What is Seaside? Tuesday, November 2, 2010
  3. 3. A web framework TM Tuesday, November 2, 2010
  4. 4. A web framework^ application TM Tuesday, November 2, 2010
  5. 5. A web framework^ application ^ Smalltalk TM Tuesday, November 2, 2010
  6. 6. A web framework^ application ^ heretical? TM Tuesday, November 2, 2010
  7. 7. A web framework^ application ^ heretical? TM Tuesday, November 2, 2010
  8. 8. A web framework^ application ^ template-free TM Tuesday, November 2, 2010
  9. 9. A web framework^ application ^ open-source TM Tuesday, November 2, 2010
  10. 10. WebObjects Tuesday, November 2, 2010
  11. 11. Ruby Tuesday, November 2, 2010
  12. 12. Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/ Tuesday, November 2, 2010
  13. 13. The web is a language equalizer Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/ Tuesday, November 2, 2010
  14. 14. Photocourtesyofhttp://www.flickr.com/photos/pragdave/173643703/ I can’t see anything wrong. Could you try again? Tuesday, November 2, 2010
  15. 15. “Why should I care?” Tuesday, November 2, 2010
  16. 16. Programming costs money Tuesday, November 2, 2010
  17. 17. Programming costs money lots of Tuesday, November 2, 2010
  18. 18. Let’s optimize development Tuesday, November 2, 2010
  19. 19. Let’s take away the pain Tuesday, November 2, 2010
  20. 20. Let’s focus on the features that make our products truly exceptional Tuesday, November 2, 2010
  21. 21. So what’s your pain? Courtesy of stock.xchng user Bubbels Tuesday, November 2, 2010
  22. 22. <?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
  23. 23. Tag soup? Courtesy of stock.xchng user lusi Tuesday, November 2, 2010
  24. 24. Spaghetti Templates? Courtesy of stock.xchng user TouTouke Tuesday, November 2, 2010
  25. 25. Waiting for edit, compile, run? Courtesy of stock.xchng user matchstick Tuesday, November 2, 2010
  26. 26. Code generation? Courtesy of stock.xchng users wildiexx and sundesigns Tuesday, November 2, 2010
  27. 27. Mapping? Object-Relational Courtesy of stock.xchng user theswedish Tuesday, November 2, 2010
  28. 28. Passing around IDs? Tuesday, November 2, 2010
  29. 29. Security? Courtesy of stock.xchng user lusi Tuesday, November 2, 2010
  30. 30. step Processes? Multi- Courtesy of stock.xchng user mexikids Tuesday, November 2, 2010
  31. 31. Components Tuesday, November 2, 2010
  32. 32. CBA Tuesday, November 2, 2010
  33. 33. CBA Tuesday, November 2, 2010
  34. 34. New Item Add Tuesday, November 2, 2010
  35. 35. A B C Tuesday, November 2, 2010
  36. 36. New Item Add Tuesday, November 2, 2010
  37. 37. Demo Tuesday, November 2, 2010
  38. 38. New Item Add ? A B C Tuesday, November 2, 2010
  39. 39. New Item Add ?New Item Add A B C Tuesday, November 2, 2010
  40. 40. New Item Add New Item Add item item A B C Tuesday, November 2, 2010
  41. 41. a := self request: ‘A number?’. b := self request: ‘Another?’. self inform: a + b Tuesday, November 2, 2010
  42. 42. a := self request: ‘A number?’. b := self request: ‘Another?’. self inform: a + b Tuesday, November 2, 2010
  43. 43. Demo Tuesday, November 2, 2010
  44. 44. ActionAction WebBrowser Tuesday, November 2, 2010
  45. 45. WebBrowser TaskTask Tuesday, November 2, 2010
  46. 46. WebBrowser TaskTask CONTINUATIONS Tuesday, November 2, 2010
  47. 47. Single Tool-chain Tuesday, November 2, 2010
  48. 48. “7 Things” Courtesy of stock.xchng user chux 3 21 4 5 6 7 Tuesday, November 2, 2010
  49. 49. In Smalltalk, everything is an object Tuesday, November 2, 2010
  50. 50. In Smalltalk, everything is an object Seaside+ Tuesday, November 2, 2010
  51. 51. Templates aren’t OO Tuesday, November 2, 2010
  52. 52. <h1><% print $title %><h1> Tuesday, November 2, 2010
  53. 53. html heading: title Tuesday, November 2, 2010
  54. 54. ✓Debugging Tuesday, November 2, 2010
  55. 55. Refactoring ✓ Tuesday, November 2, 2010
  56. 56. Callbacks... ✓ Tuesday, November 2, 2010
  57. 57. <a href=“/deleteItem?id=<% print $item.id%>”>Delete</a> Tuesday, November 2, 2010
  58. 58. html anchor callback: [ self delete: item ]; with: ‘Delete’ Tuesday, November 2, 2010
  59. 59. Security Courtesy of stock.xchng user julosstock Tuesday, November 2, 2010
  60. 60. Cross-site scripting (XSS) © Mark Miller, from morguefile.com Tuesday, November 2, 2010
  61. 61. Output is encoded by default Tuesday, November 2, 2010
  62. 62. html heading: title Tuesday, November 2, 2010
  63. 63. Parameter injection Courtesy of stock.xchng user foxumon Tuesday, November 2, 2010
  64. 64. Parameter names are not meaningful Tuesday, November 2, 2010
  65. 65. IDs are not passed around Tuesday, November 2, 2010
  66. 66. Actions are bound to functions Tuesday, November 2, 2010
  67. 67. html anchor callback: [ self delete: item ]; with: ‘Delete’ Tuesday, November 2, 2010
  68. 68. If you don’t expose it, your users can’t do it! Tuesday, November 2, 2010
  69. 69. Replay attacks Courtesy of stock.xchng user ratnesh Tuesday, November 2, 2010
  70. 70. Tuesday, November 2, 2010
  71. 71. Session (96-bit) Tuesday, November 2, 2010
  72. 72. Page (96-bit) Tuesday, November 2, 2010
  73. 73. Tuesday, November 2, 2010
  74. 74. Demo Tuesday, November 2, 2010
  75. 75. Where can I find out more? Tuesday, November 2, 2010
  76. 76. www.seaside.st Tuesday, November 2, 2010
  77. 77. Tuesday, November 2, 2010
  78. 78. Mailing list Tuesday, November 2, 2010
  79. 79. Examples Tuesday, November 2, 2010
  80. 80. Tuesday, November 2, 2010
  81. 81. Tuesday, November 2, 2010
  82. 82. Tuesday, November 2, 2010
  83. 83. In business, there is nothing more valuable than a technical advantage your competitors don't understand. – Paul Graham Tuesday, November 2, 2010
  84. 84. 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

×