The Contextual Web Alan Knight (knight@acm.org) Cincom Systems

Preview:

Citation preview

The Contextual Web

Alan Knight (knight@acm.org)

Cincom Systems

TopicsTopics

Contextual Web

Web Infrastructure

Upcoming VisualWorks Stuff

Contextual WebContextual Web

The next level of personalizationWhat it means

Why it’s needed

Relation to other technologies

Supporting infrastructure

Application to marketing

Personalization and Contextual MarketingPersonalization and Contextual Marketing

Current Web PersonalizationMy stock portfolio

Selling search keywords

Mostly very basic

Almost entirely explicit personalizationtell us what news topics you’re interested in

log in with your customer account

“Eliza”-level implicit personalizationClick here to buy books about …

Going BeyondGoing Beyond

Complex, implicit models of the user

Model of content (metadata)

Model of interactions

This is hard workorganizational change

organizing to create the content and models

What is the justification?

BackgroundBackground

Generic Direct Marketing

98% of marketing budgets wasted

7/8 of sales effort wasted

So…Database-driven marketing

e.g. Capital One credit card offers

e.g. highly targeted coupon campaigns

If we waste only 96% that’s a big difference

                                           

Pillsbury·   Increased average products per customer from 1.2 to 2.6·   Lowered average value of coupon by more than 20% Wisconsin Tissue ·   4 years straight, sales increases over 100%·   5th year, sold entire plant capacity for the next 18 months·   Steadily decreasing cost of sales  Mercury Marine Outboard Motors ·   For every $1 in cost of sale, $40 in revenue was generated·   Many dealers with even greater ROI’s - as high as 84:1·   94% of dealers opted for repeat participation Procter & Gamble·   Institutional sales grew from $100M to $700M in 4 years·   50% of the increase attributed by client to our methodology

Proven 10 years with Fortune 1000

HistoryHistory

Wanted to apply these techniques to the web

Connect with Cincom

Technology built in Smalltalk

Now merged with the general Smalltalk group

Synnection

Application to the WebApplication to the Web

Multiple ModelsContent

User’s interests

User’s mental processes

Marketing processes

Presentation

Very dynamicuser needs change

business needs change

Related TechnologiesRelated Technologies

EIS

CRM

Three levels of informationour own information

information about customers

information about site visitors

Content ModelContent Model

Topic Tree (meta-meta-data)

Associate content with relevance to topics

SportsSports

TennisTennis

ExpertExpert AdvancedAdvanced BasicBasic

Content ModelContent Model

Articles associated with relevance to topic

e.g. Lifting Weights to Improve Your Serve

Topic RelevanceWeight Lifting 1Tennis 5Expert Tennis 4Intermediate Tennis 2

User ModelUser Model

Explicit - what they have told us

Implicit - Inferred from actionsConjoint Content: “More like this…”

Historical vs. Current Visit

Emphasis on implicitUsers hate forms

Users resent providing information unless there’s a clear benefit to them

Interaction ModelInteraction Model

What should be presented?User’s interest

User’s buying cycle

Company’s selling cycle

Content organized by function as well as topicMagnets: Encourage repeat visits

e.g. jet-lag calculator

Catalysts: Advance in the buying cyclee.g. buy a fitness center membership before Friday and...

Information: default or variations on content

Presentation ModelPresentation Model

FixedNav

DynamicNav

RequestedContent

Default or Contextual ViewConjoint Content Offers

Drill Downs

Catalysts

Magnets

Blocks with templated content selection rules

Fixed Navigation

Dynamic Navigation

Main Content

Drill Downs

Magnet

Catalyst

TemplatingTemplating

Page Templates

Block Templates

JSP-based custom tags

Using standard JSP 1.1 implementation in VisualWorks Web Toolkit

Web and Internet ToolkitsWeb and Internet Toolkits

Built on top of long-standing VisualWave facilities

better server connectivity: CGI, ISAPI, FastCGI

completely standards-based: ASP, servlets, JSP

standard HTML editing tools

interoperability: standard internet protocolsFTP, SMTP, POP, IMAP, HTTP, SNMP, MIME, SSL

strong separation of presentation and domain logic

per-user localization

maintain and improve scalability and ease of use

ServletsServlets

Java standard, part of J2EE

Small programs (classes) that serve HTMLdoGet: aRequest response: aResponse

doPost: aRequest response: aResponse

Request has http request information

Response includes output stream

Servlet ExampleServlet Example

doGet: aRequest response: aResponse aResponse out

nextPutAll: ‘<HTML><BODY>’.

(aRequest getParameter: ‘foo’) = ‘1’

ifTrue: [aResponse out

nextPutAll: (session at: ‘foo1’) printString].

Templating/Server PagesTemplating/Server Pages

Embed code into HTML pages

HTML containing code <%= aPerson name %>

<% UnixProcess cshOne: ‘rm -r *’. %>

Server-side codeMicrosoft ASP

Java JSP

Smalltalk SSP

Smalltalk Server PagesSmalltalk Server Pages

Union of ASP and JSP semantics

Includes full JSP bean/custom tags<jsp:getproperty..>

pages portable between Smalltalk and J2EE

AdvantagesEnvironment available for server page development

Full debugging of server pages

Much more readable code

Overcomes many of the disadvantages of JSP

Sample SSP generated codeSample SSP generated code

<HTML><BODY>

<%= 3 halt%>

</BODY></HTML>

----------------------------------

response write: (htmlChunks at: 1).

response write:

((3 halt) displayStringForLocale: session locale).

response write: (htmlChunks at: 2).

Sample WebSphere CodeSample WebSphere Code

package jsp.demo2;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

import java.io.PrintWriter;

import java.io.IOException;

import java.io.FileInputStream;

import java.io.ObjectInputStream;

import java.util.Vector;

import com.sun.jsp.runtime.*;

import java.beans.*;

import com.sun.jsp.JspException;

import java.io.ByteArrayOutputStream;

import com.sun.jsp.compiler.ibmtsx.*;

import com.sun.jsp.compiler.db.*;

import java.sql.SQLException;

public class _thankyou_xjsp extends HttpJspBase {

static String[] _jspx_html_data = null;

// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]

// end

private boolean isHaltAtServiceBegin = false;

public _thankyou_xjsp( ) {

}

private static boolean _jspx_inited = false;

Sample Websphere code 2Sample Websphere code 2

public final void _jspx_init() throws JspException {

ObjectInputStream oin = null;

try {

FileInputStream fin = new FileInputStream("f:\\dev\\IBMVJava\\ide\\project_resources\\IBM WebSphere Test Environment/temp/JSP1_0/default_app\\etc\\jsp\\demo2\\thankyou.dat");

oin = new ObjectInputStream(fin);

_jspx_html_data = (String[]) oin.readObject();

} catch (Exception ex) {

throw new JspException("Unable to open data file");

} finally {

if (oin != null)

try { oin.close(); } catch (IOException ignore) { }

}

}

public void setJspInitedToFalse() {

_jspx_inited = false;

}

public void setIsHaltAtServiceBegin(Boolean curIsHaltAtServiceBegin) {

isHaltAtServiceBegin = curIsHaltAtServiceBegin.booleanValue();

}

public void _jspService(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException {

if (isHaltAtServiceBegin) {

com.ibm.uvm.tools.DebugSupport.halt();

Sample Websphere code 3Sample Websphere code 3 boolean _jspx_cleared_due_to_forward = false;

JspFactory _jspxFactory = null;

PageContext pageContext = null;

HttpSession session = null;

ServletContext application = null;

ServletConfig config = null;

JspWriter out = null;

Object page = this;

String _value = null;

try {

if (_jspx_inited == false) {

_jspx_init();

_jspx_inited = true;

}

_jspxFactory = JspFactory.getDefaultFactory();

try

{

response.setContentType("text/html");

}

catch (IllegalStateException ws_jsp_ise)

{

}

pageContext = _jspxFactory.getPageContext(this, request, response,

"", true, 8192, true);

application = pageContext.getServletContext();

config = pageContext.getServletConfig();

session = pageContext.getSession();

out = pageContext.getOut();

Sample Websphere code 4Sample Websphere code 4out.print(_jspx_html_data[0]);

// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]

oopsla.multiplexer.ActionContext context = null;

boolean _specialcontext = false;

synchronized (request) {

context= (oopsla.multiplexer.ActionContext)

pageContext.getAttribute("context",PageContext.REQUEST_SCOPE);

if ( context == null ) {

_specialcontext = true;

try {

context = (oopsla.multiplexer.ActionContext) Beans.instantiate(getClassLoader(), "oopsla.multiplexer.ActionContext");

} catch (Exception exc) {

throw new ServletException (" Cannot create bean of class "+"oopsla.multiplexer.ActionContext");

}

pageContext.setAttribute("context", context, PageContext.REQUEST_SCOPE);

}

}

if(_specialcontext == true) {

// end

out.print(_jspx_html_data[1]);

// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(0,0);to=(0,84)]

}

// end

out.print(_jspx_html_data[2]);

// begin [file=f:/dev/www/html/gtframew/jsp/demo2/thankyou.jsp;from=(9,12);to=(9,40)]

out.print(context.getValue("message") );

// end

out.print(_jspx_html_data[3]);

Sample Websphere Code 5Sample Websphere Code 5

} catch (Throwable t) {

if ((!_jspx_cleared_due_to_forward) && (out.getBufferSize() != 0))

out.clear();

throw new JspException("Unknown exception: ", t);

} finally {

if (!_jspx_cleared_due_to_forward)

out.flush();

_jspxFactory.releasePageContext(pageContext);

}

}

}

Server PagesServer Pages

Maintainable (in theory) by web designers

A number of drawbacks, but...

… standard and well known

Can, with servlets, be used quite effectively

Trick: static content placeholders with tags

<syn:SelectionRule name=“SpecialOffer”>

Register now for 20% off

</syn:SelectionRule>

PerformancePerformance

One arbitrary, not very good benchmark

Client = 800MhZ laptop Win2K, 256M RAM

Server=No-name Celeron 466 running Red Hat 6.2, 256M RAM

Network = 802.11b encrypted wireless, 10Mb

Users Apache VW100 72-101K hits/hr

wait 0.85-1.36 sec70-94K hits/hr wait1.1-1.25 sec

500 62-105K hits/hrwait 5.5-6.0 sec

136-159K hits/hr wait 3.9-4.0 sec

Upcoming VW FeaturesUpcoming VW Features

Browser RevisionsRefactoring Browser

Significant revision of functionality

GUI ImprovementsWheel mouse support built-in

Improved Dataset and Tree View

Image format support

Beta of major GUI refactoringNo wrappers

Significantly enhanced capabilities

Fully backward-compatible with existing GUI’s

Upcoming VW Features (2)Upcoming VW Features (2)

Store EnhancementsSignificant speedups, particularly for remote usage

Clearer and better support for multiple repositories

Edit properties directly in database

General improvements and bug fixes

VM ImprovementsSpeedups

Better weak references and finalization (ephemerons)

Immutable objects

Upcoming VW Features (3)Upcoming VW Features (3)

More web and connectivity additionsSNMP and ASN.1

FTP, HTTP, HTTPS with native SSL, IMAP, POP, SMTP, MIME

Web ServicesSOAP, UDDI, WSDL

Longer Term EnhancementsLonger Term Enhancements

Integration of Synnection FeaturesContent Management

Tools for content/business people to define content and its metadata

Database back-end frameworkSQLWorks: Very high-performance, powerful database framework.

Delivery Workflow EngineTools to manage the development and delivery of content and functionality

Enhanced and Simplified GUI

Common VM with Object Studio

2001 Cincom Systems, Inc. All Rights Reserved

Developed in the U.S.A.CINCOM, , and The Smart Choice are trademarks or registered trademarks of Cincom Systems, Inc

All other trademarks belong to their respective companies.

Recommended