presentation: A Gentle Introduction to Cocoon.
image-directory: cocoon-images
Author: Warrell Harries
For: Wiley Interscience/SCS
Date: September 2007
Compelling reasons to be cheerful when faced with new Web Publishing
Challenges
slide: Why So?
hint-style: LittleText
img_leftThird: mother.jpg
subtitle: It's too New.
1999, Stefano Mazzocchi, MIT, Apache Board Member
href: http://cocoon.apache.org/2.1/userdocs/concepts/index.html
subtitle: It's strange.
Unix pipelines
subtitle: It's different.
XML++
subtitle: It's compulsive.
My eyesight is deteriorating
subtitle: It's weird, Euro trash
So was Lego, in the beginning
subtitle: They eat their own dog food over there
Mighty nutritious and delicious
img_rightThird: dummies.png
slide: Complexity demands Architecture
hint-style: LittleText
img_rightHalf: pyramid.jpg
subtitle: Pyramid of Contracts
Separate 4 major Concerns with 5 Comprehensible Contracts
subtitle: Mix 'em at your Peril
Functional, Declarative Pipelines enforce side-effect-less-ness
subtitle: KISS
Follow a piece of string
subtitle: Service Oriented
Web, EJB, Internal protocol and External proxy
img_fullWidth: cocoon.jpg
slide: XML at the top of the Stack
hint-style: LotsOfText
img_leftFifth: whiteheat.jpg
img_rightHalf: crunchy.jpg
sound: madeitma.mp3
subtitle: Impedance Mismatch
XML from the top down maintains consistency
subtitle: The Climate Changed
We aren't standing on OO land anymore - afloat on the monster mashup blogosphere
subtitle: Greater Agility Required
Let the framework do the heavy lifting
note: Ruby on Rails vs Grails vs Cocoon
sound: ruby.mp3
subtitle: A developer writes 10 lines of working code a day
subtitle: 10 lines of Java doing something arcane to the business DOM
code:
clientElement = ElementHelper.getElement( updatedRiskData.getRootElement(),
"//client" );
processDataElement.add( clientElement.detach() );
// clear modified flags
modifiedItems = processDataElement.selectNodes( "//*[@modified='true']" );
if ( ( modifiedItems != null ) && !modifiedItems.isEmpty() )
{
Iterator itemIter = modifiedItems.iterator();
while ( itemIter.hasNext() )
{
// remove attribute
( (Element) itemIter.next() ).addAttribute( "modified", null );
}
}
subtitle: A 10 line pipeline that invokes EJB services, builds a view of the results and re-uses a presentation resource
code:
subtitle: Mixing-up mental models
Uniformity of approach costs less in the long run
slide: Pipes
hint-style: LittleText
subtitle: Unix Pipes, Yahoo Pipes, Teqlo, Drain Pipes, Half-Pipes
code:
grep index.html access.log | awk ‘{print $2 }’ | sort | uniq | wc -l
img_leftFifth: pipes.gif
img_rightThird: teqlo.gif
subtitle: Tools to build hosted mashup applications
note: Cocoon patterns are merging into the mainstream. Pipes mashes up data feeds, Teqlo orchestrates the inputs and outputs of widgets
img_leftFifth: paloose.png
note: Paloose is a simplified (much simplified) version of Cocoon using PHP. There are relatively few ISPs who will support Java/Tomcat for web sites and this is the authors solution to that dilemma
img_leftThird: tube_map.gif
subtitle: XProc - An XML Pipeline Language
href: http://www.w3.org/TR/xproc/
subtitle: The Sitemap is a Plan of the pipelines
slide: Pipeline Detail
subtitle: The Pipelines that generate this presentation; dynamically or statically
Produces the Index of available presentations
code:
Produces the Raw ASCII data of a complete presentation
code:
Produces the XML data of a complete presentation
code:
Produces the XML data of a single slide
code:
Produces the Index (list of slides) of a presentation
code:
Produces a Single slide or full presentation in HTML
code:
subtitle: Simple Line Oriented Parser
Yet Another Presentation Tool
subtitle: Stand on the shoulders of Giants and recurse
slide: CLI mode for generating static content
hint-style: LittleText
subtitle: cocoon cli -x query.xconf -n wiley
code:
slide: Components
hint-style: LittleText
img_leftThird: components.jpg
subtitle: Generators
in the Beginning
subtitle: Transformers
there was the Word
subtitle: Serializers
and it was Good
img_fullWidth: pipeline.gif
slide: Next Steps
img_leftFifth: tube.jpg
Generate a static page for each book in collection
Develop workflow applications
Content Management System
note: Presentation wizard to automatically generate complicated flashy layouts with lots of gee-whiz transition effects. Just kidding.