WWDC2001 Session 608

Transcript

Kind: captions
Language: en
good morning thank you for coming this
morning session is solutions for web
objects my name is Ravi I'm a systems
engineer with Apple I services today's
this morning session we're going to talk
about examples and case studies of how
web objects has been used to bring
information to the web streamline
business operations so what do we want
you guys to take away from today's
session well we want you to know that
web objects is being utilized in
extremely innovative ways we also want
you to realize that web objects alls
myriad business problems from
integration intensive portal apps to
visually rich consumer applications to
business to business apps with enormous
returns on investment etc etc we also
want you to realize that web objects
projects have high success rates for
those of you in the audience that are
looking for web object solution when you
pair a great developer with web objects
be prepared for extremely extremely
great things to happen and finally we
want you the web objects developer
community to retell these stories to
your prospective customers and so with
that I'd like to introduce our first
speaker and it's with pleasure that I do
that and Brian Fitzpatrick morning my
name is Brian Fitzpatrick I'm a senior
consulting engineer with Apple I
services I was tapped to head the VR way
project last year for VR way the VR we
international company and my history is
I started doing web programming back in
1994 back in the Paleozoic era of the
internet with shell scripting Perl
scripting and eventually I moved up to
some other two competitors to be
competing technologies such as I can't
really mention the names like active
server pages or cold fusion
I found web objects 4 years ago and I
said wow this is the most incredible
thing I've ever seen I've been rolling
around on a skateboard and I've got this
great rolls-royce to drive around in so
I got my stuff together and came to work
for Apple and July of last year my boss
came to me said Fitz we have a client
for the big project I said well that's
great I said I love big projects he said
they want to do quick time vr tours of
your different cities I said well we can
do that he said we want to do web
objects to do quick time tours of cities
in Europe and image maps we want to do
image maps of Europe of different
countries so that users can click their
way down from a world map all the way to
a street I said well I said we can do
that he said on top of that we want
users to be able to add comments and
reviews of all the VRS that they see is
it and we also want to have it a chat
room I said not just a chat room one
chat room for every VR I said well we
can do that he said oh and we need a
back office application for users for
the people that work in VR way to import
QuickTime VR s image maps tie them all
together tie one city to the next high
one country to the next and we need it
on three 1/2 months I said John using
web objects no problem so this is a
screenshot of the front page of the VR
way experience as it's called this is a
company that's international however
they are based in Switzerland when a
user comes to this page they can by
clicking the VR across the top which is
just a static image
it's a randomly generated image they can
find themselves right there for example
here it would be in Barcelona Spain or
they can click their way down to a
series of image maps Europe is what's
implemented at the moment so starting at
Europe and then they can click their way
into Italy and then down to a city for
example the city of Rome here they'll
see several highlighted blocks they can
click on one of those highlighted blocks
is what you get is a street map with a
bunch of little orange dots that are
numbered and they're described in detail
below whether they're in inside VR or an
outside VR what they describe what kind
of a VR they are whether they're a Plaza
or a street or maybe a shop or something
like that there's also a little white
triangle so you can navigate laterally
sideways up and down if you want to go
look at a near part of the city and
finally you find yourself looking at a
fountain in the square Piazza Navona
from your own house now we used quick
web objects QuickTime Mac OS 10 the old
version of Mac OS 10 an Oracle database
and Apache to make this happen the
client said for our baseline 1.0 release
we want to scale to 600 users so we got
some testing software we stress tested
these applications not only did it see
how the 600 users but we found that for
g4 app servers these are older g4 app
servers not the new screamin dual
processor 3 gigahertz processors for 500
megahertz g4 apps are saturated a 32
megabit per second link the web apps
application tied the VRS together all
navigation is mediated through the
application so when you click on a VR on
a hotspot in a QuickTime VR that hotspot
request is intercepted sent back to the
web objects application which can do
whatever it wants with it in one case it
might be linked to the next part of your
square your going to a link down the
street it might link into a shop the the
VR way experience is being modified as
we speak to add more and more shops and
stores so that when you click your way
down to Piazza Navona in Rome and you
see a shoe store there well you could
click inside the shoe store you could go
into the shoe store look around look at
some shoes maybe even purchase a pair of
shoes the country-region navigation is
it's static images but the image Maps
the image map tags in the HTML are all
built by our web-based application tied
into our model so what that have not
enabled us to do is we can turn on new
parts of a city we could turn on a new
country all from another web objects
application no sweat
the navigation and the VRS are added on
the fly so they send up a photography
crew out to San Jose they go around they
take 360 be ours of all different parts
of the city they come back do a little
post-processing and before you know it
they're in the experience reusability
now
I and some of the previous technologies
I use I wound up doing a lot of love
code reuse which consisted of cutting
and pasting people on my team in fact I
know one one get one of the get my lead
guys is here he knows that my mantra was
cutting and pasting is not reusability
taking HTML and sequin all stuff mixed
up pasting it another page not
reusability web objects component model
where you can have a component as large
as a page or small as a character
enables us tables to factor out parts
that we wanted to reuse from one page to
the next
we had whole widgets that held QuickTime
vrs image maps that were used from our
front a user application to the back
office application so lot less code to
write lot less code to maintain a lot
less headache widgets simple widgets
some of our components were a pop-up
menu for example a list of countries a
list of cities a list of types of vrs
maybe a shop maybe a street that sort of
thing we had this this chat this chat
problem was a particularly hairy problem
to address so we wrote as a framework
that wrapped this procedurally oriented
chat commands into an object-oriented
framework so in our in our application
we just say you know new chatroom this
is the name of the chatroom and go and
that was all there was to it the
object-oriented using object-oriented
design enables us to really come up with
an application that could be maintained
an application that could be changed we
came up with 1.0 and they said wow this
is great we're quite impressed but our
graphic design aesthetics came up with
this new stuff here you know how long is
it gonna take you to get in we said well
you know no problem we handed it off
never had the chance to line of code
change a line of code because of the way
that web objects use templates they came
to us and said we've got this 1.0 thing
we have this VR way experience this is
great we want to add another feature we
want something like MapQuest we want to
go to a hotel and say ok we're gonna put
a link on your page that links back to
us opens a little popup menu and allows
users just to see stuff about your hotel
for example
because of the way we factored down all
of our widgets made things small reuse
components we knocked this out in record
time like a month month and a half
absolutely unbelievable turnaround on
this and it required very little change
to our existing widgets and on top of
that we managed to reuse all the stuff
we'd already done let's code to write
less to maintain that's the way I look
at it less than 10 people knock this
whole thing out in less than 4 months a
series of five applications and four
frameworks and it works great and you
can go there today it's WWD our Wacom
now I'm going to introduce you to the
next presenter which is Bob Frank who is
one of my colleagues in Chicago he is a
senior consulting engineer with Apple I
services Thank You Fitz as he said I'm
Bob Frank I'm going to be talking about
the University of Michigan's student
portal last year they developed a
student portal that gave their student
population and others in their
university system the ability to access
a variety of services through a simple
easy-to-use web page and how does this
guy work this is what it looks like I
think they did a very good job it has a
variety of different services and they
spent a lot of time looking at UI design
issues and I think this is an incredibly
simple clean user interface what their
project involved was a collaboration
between my services and their internal
development peep team
there was a small proof-of-concept in
the spring and a development effort to
produce this in time for the following
spring semester
the basic architecture has I'm sure this
design pattern is fairly familiar to
those of you that have done well work
before there is a few core frameworks
that contain their common AOS and some
other core components and a variety of
separate frameworks that use each of
these core frameworks to produce
individual services and as true from the
UI screenshot each panel was basically a
different service and all of this is
wrapped inside the basic application
this is very flexible and this is a very
powerful design pattern the key features
that they have implemented as I
mentioned was webmail they also have
integrated security through the entire
application I'll talk more about that
and a few slides if you are interested
it's a Kerberos based security system
they have an address book a calendar
system course schedule from their
student information system classified
ads and all of these are their main
features but they were able to deliver
to their students this comes from a
variety of heterogeneous data sources
first and foremost a variety of several
different Oracle databases they have
some data coming in from XML feeds and
some data derived from a Lotus Notes
application their mail is provided via
IMAP and of course outgoing mail is
taking care of via SMTP and directory
information is provided from LDAP all
this is integrated together using that
basic architecture their development
environment in the university
environment they have a variety of
different machines and we had a lot of
different people working on this project
as cross-platform development took place
both majority at the university was on
Mac os10 server and there were some
developers using NT for syncing up all
the developers work effort they use CVS
if you don't know what CVS is you should
learn and if you do know what it is I
recommend that you all use it it'll save
you a lot of pain
the basic application was CVS is a port
source code versioning tool that allows
different developers to work on the same
same code and manage changes the basic
design that I showed you the
architecture slide is a central
application with a few core frameworks
what this really allows in a variety of
different ways in addition to rapid
development of new services it also
allows a lot of parallelism it allows
different developers to work on
different feature sets and to produce
new features I think more quickly and
this is particularly I thought from a
developer's point of view interesting
feature they had an integrated bug
tracking system that they developed and
this was integrated into the entire
application also not that there were any
bugs in the system but when an exception
happened to occur they were able to log
this exception and feed that back into
their bug tracking and feature tracking
system additionally they leveraged these
core frameworks to Bruce this type of
application and several other back
office administrative applications this
was a joint effort the technology
demonstration in the spring was
primarily a a is led effort and then for
the entire development range was
primarily a University of Michigan led
effort with some I asked consultants
some on-site training provided by a s
there was also additionally the
University Michigan took advantage of
some training provided here in Cupertino
I think that was some of their
deployment training and there was a
University of Michigan staff and
students were involved in this project
this allowed them to grow a web object
knowledge base internally and they're
very bright and did a good job
the development environment they have a
development integration server that is
both the application the wall
application and the Apache web server on
the same box and the various data
sources on separate boxes the only
difference between their development
integration server and their staging and
deployment servers is that in the
staging and deployment arena they are on
separate boxes
moment ago I mentioned that they were
able to integrate Kerberos into their
system Kerberos is a very powerful
authentication and security technology
the University of Michigan is using
Kerberos pervasively through all of
their services across the university
this allowed them to leverage a variety
of other services inside the student
portal so for example on the web-based
email system their authentication is
provided using her brows this allowed in
this Kerberos integration with the
portal allowed them to then access the
individual users email and then present
that over the web pages there you I
provided a configurable approach to
providing a different services on the
front page and some of them were in this
mini type of a view the left hand column
allows you to have short summary pieces
of information for example you have a
Wow a lot of unread messages and this
type of UI allows them to provide
summary information on a front page from
a variety of different full-fledged
services additionally a calendar this
calendar view did not lend itself to
being compressed into a narrow column
they provided a wider approach to it
another interesting feature on the
entire application was that they were
able to integrate a help functionality
into the entire application each service
has the option of providing help with
that little question mark with some sort
of small amount of help for the local
features in that mini panel or if you
need more in-depth help to
or so forth they can take you to a
full-blown help system this provides a
great deal of upfront support for the
users of the system and cuts down on the
calls that they receive to their support
lines additionally since its fully
integrated it allows them to easily
augment it when new features are added
another system that I think was very
interesting was a calendar system this
integrated with their student
information system to pull down calendar
and schedule information from their
student information system this means
that if you have a class schedule that's
certain that time and day it will
display in the students calendar
additionally they were able to use this
basic system to have personal calendar
information entered I'm think that this
allows you to have all of your
information available from any web
browser on any system that you can get
access to in the university system a
simple screen that allows you to add
event they spend a lot of time working
on cleaning up the user interface this
web-based personal information system
includes several other features and I
have a few slides to show you what it
looked like for that basically it allows
them to have the calendar which I just
showed you and an address book and the
to-do list the long-term goal of this
system is to provide integration with
other desktop PIMs so you can do in
importing and exporting their mail
system is the I think the most look
forward feature for the students it
allowed them to have simple web-based
access to their email system previously
for the most part they were using text
based systems some of them as far as I
know we're using some desktop clients
but with with a desktop client they were
limited to a situation where they had
their machine that their software was
installed on and with a web-based system
they're able that once again access it
from anywhere in the university
this is a shot of what their UI looks
like for viewing an individual message
and composing a message additionally
another feature that they wanted to add
allow the students themselves not
outside vendors like you would find in a
traditional classified ad in a newspaper
but just the students themselves utilize
the system to exchange exchange products
or sublet apartments or resell books at
the end of the semester this is not an
auction type of a system this is a
simple marketplace for students to
exchange whatever they want to and this
is a screenshot of what the to do system
looks like this basically allows them to
go ahead and keep track of various
events very similar to what you'll find
any other personal information manager
systems portable bookmarks allows them
to be able to keep track of their
favorites from not just one browser one
computer but will actually follow them
wherever they log in in the system and
this allowed the university to insert
links into their students bookmarks as
well
an additional enhancement that might
occur in the future would be on a per
class basis if a professor has some sort
of information that is relevant to the
research for that KLAX
or a particular session of a class
they'll be able to provide it in a
automatics way to the students go ahead
and log on to your home page and here it
is their long-term goal is to
continually add more services as more
areas of the university want the ability
to add specific features and to be able
to integrate on a general level with the
existing course materials that are
already been built in for example with
the calendar there might be desire in
the future to add more services based
around course information or course
materials
and none of this will require rewriting
of much of the system because the
infrastructure is already built into the
core systems and now I'd like to
introduce David black another consultant
with apple eye services to talk about
logistics management's a very good
success story with a large logistics
management company that we can't use
their name today Dave alright thanks Bob
all right welcome to WWDC it's Wednesday
or hump day all right guess hopefully
everyone's gonna watch Star Trek tonight
I'm actually a next-generation fan
myself anyway thank you all right I'm
gonna talk a little bit about a client
that we did quite a bit of work for
we've been at this particular logistics
company for the past five years back
when we were still next so anyway let me
go over real quickly what logistics
management is all about it's basically
what's all right there we go logistics
management it's the business of moving
stuff around it's also the physical
aspect of a supply chain management and
most companies what they'll do is
they'll just outsource all of the
warehousing all the shipping and
everything and they just basically
become the smart brain trust of their
company and then let some other company
do all this other stuff so this
particular company provided all this and
anyways they asked us to come in and do
the work for them so let's hope so what
are the critical requirements of
providing software to a logistics
management company in the logistics
business information is absolutely
paramount it is what gives each company
a competitive advantage if you use some
of the system's out there from various
shipping companies that you might mail
order something from you'll see just how
valuable it is for you to see where your
packages are well when you're trying to
manage a supply chain and you're trying
to get time the delivery of different
products
it's very it's very critical for the
custom the companies who are actually
shipping things to actually be able to
have those views into those and into
that tracking data so anyway basically
these systems had to be accessible and
that's probably the most that's robably
the first reason that they came to Next
when web objects was around cuz it was
really the first solution that gave
web-based access into legacy systems and
excuse me so they were able to at that
point be able to give access into maybe
a shipping dock in the Philippines or to
an import-export desk in Turkey
somewhere
so anyway accessibility was there their
number one reason at that point to go
with web objects when they did secondly
they needed scalability they needed
something that would scale up I mean
these were big big data bases that they
needed an interoperability they had to
tie into the customer systems they had
also tie into their own legacy systems
they also needed rapid development they
did not want the typical you know one
year of planning one year of development
then you know one year to you know
deployment and bug fixing they wanted
the stuff to be turned around in three
months you know two to six months cycles
they also wanted rapid adaptability
these applications needed to basically
be able to be replicated for each
customer that they had some companies
will basically put all their customers
into one database this company actually
wanted to have a separate database for
each company because I guess if I guess
if one company went left they could just
throw the database away so anyway what's
okay so the environment that they had we
use Solaris for tests in our production
applications we used Oracle on hp-ux
development was on Windows NT we did
version control with CVS and while I was
there in the last few months we were
actually trying out CVL which is a nice
graphical user interface for CVS and it
seemed to work really well integrated
with project builder now we don't need
that anymore with a new project builder
its built-in we also had to date
consultants on site and these were
consultants either from Apple I services
or
we also used a variety of subcontractors
all right while we were there we develop
some common frameworks and I'll just run
through these really quickly we had
security authentication personalization
and what we had was called a logistics
kit and so starting off at the very
bottom here we have our web objects in
the FF libraries that you can buy for
six hundred ninety nine dollars at the
Apple Store
we had our security framework which was
basically a framework that we could bolt
on to any of our applications that would
communicate with an authentication
server and basically communicate back to
the application that a person did have
access into this particular application
we also had a personalization framework
so that once the person was in the
application it basically controlled
things like access into certain
administrative screens or gave them
different types of views into things we
were able to store permissions form
fields were turn on and off we're also
able to put things like mathematical
constants variety of things were in this
personalization framework and based on
the customer and some other things in
their particular use case we were able
to really give them a fine granular
level of control in in the way their
application behaved there was also what
we called our logistics kit this was a
this was a collection of common code
utilities widgets we had calendars we
had you know date formatters we had all
sorts of stuff in there and it was just
kind of a grab bag of different things
so on top of these three frameworks we
were able to then build our application
custom application logic for for
whichever application they need us to do
this for and let's get into some of
these shipment tracking this is probably
the most typical application of any kind
of shipment shipping company basically
if someone is shipping something they
enter it in that it's gone out off of
the dock at that point everyone can
start to see where it is in the process
it's tracked through its entire process
from going from point A to point Z and
this particular application that we
wrote
gave it integrated really nicely with
some of their legacy systems they
actually had in some part of their
environments a C++ fat client that would
they would use to enter some of the data
we also did some web integration with
this with barcode scanners a little bit
of JavaScript you just fire the thing a
thing filled the field it's pretty cool
we also were able to customize this
application and put it into new customer
space very quickly if the customer had
no custom requirements we could just
turn it on in a day by creating a new
database for them and our authentication
framework actually told which which
database that the application be
pointing to so within the context of one
session we could actually be going from
one database to another dynamically we
had a return cracking application that
basically managed the whole process of
people sending back merchandise that
that was broken things like RMA's and
what-have-you
we also did what's called a
consolidation management system this was
a this post some really interesting
challenges let me tell you real quickly
what consolidation management is
basically when a company has let's take
a maybe a wireless phone system provider
they give a contract to install 12 cell
sites in a city well the company
installing this needs to be able to
coordinate the delivery of parts from
all over the place into one center and
then immediately have them sent out as
one big package to the cell site so this
system actually it's kind of like
just-in-time compiling sorry anyways so
this system actually allowed them to do
this it actually saved this company
probably millions of dollars in
warehousing costs because they were able
to time in a very precise way when stuff
arrived they're able to hold shipments
back from different vendors and things
and get it all to deliver at the same
time so anyway this was also interesting
because we had to integrate with a
database that was not supported by web
objects they were they wanted to do
build an app server based on a
press and build a fat client interface
for that and so they came to us
something like you know progress doesn't
have a database adapter how are you guys
gonna how are you guys gonna tie into
this well we found a Java API library
for progress and it was just a matter of
hooking into it with the web objects
framework layer and so essentially we
created our own instead of using our
enterprise object framework we were able
to just tie directly into these Java API
so you know when a lot of people are
worried about you know what kinds of
databases web objects support this
actually shows that you can use
libraries from those vendors to be able
to actually get at the data and be able
to talk to other systems without
actually having to use maybe our
database connection layer so that wasn't
a little bit of an interesting problem
so alright we had decision support tools
we had a application that we called
reporting's and this was a web based
application that gave people the ability
to create ad hoc queries against the
database in a variety of systems they
were able to generate HTML text and PDF
reports using a report mill this this
was actually quite challenging because
it had to be able to convert to a
variety of different systems and so
through the use of certain Java
interfaces and things you can actually
factor out a certain piece that could
make it reportable so we had a finance
and billing tool so after all this
shipment process was done we had to
count up the money somehow and this
particular system also posed some
challenges
basically what they wanted to do was
they wanted to be able to have one
person sit down and be able to scroll
through about 9,000 records in a sitting
just to look for things that were
exceptions and for for problems we have
little red status indicators on the on
these pages that they could browse
through and actually if any of y'all
were in the session guess Monday they're
talking someone asked the question about
being able to browse through you know
300 thousand records well this system
allowed that
and some of the default mechanisms and
web objects if you have a lot of data it
you might not want to fetch in you know
300,000 rows of enterprise objects and
and then try to start scrolling through
them while they're in memory that would
just crash the server and actually in
this case it was so what we developed
was a small little framework that gave
us the ability to scroll through each of
these items in an incremental way by
fetching primary keys as a as a kind of
a rose for sequel if for some of you
people have worked with objects you'll
know what that is and then be able to
slice those up into different pieces and
be able to scroll through them so and so
we're also able to use that same
framework in other applications while we
were there and it solved a lot of
problems with big memory spaces but this
application was interesting because it
reduced what was nine man weeks of
people doing these Excel spreadsheets
for all these shipments down into one
day so that was pretty exciting and all
right
so in conclusion real quickly how do web
objects help us there it was it was just
great I mean it was it actually if you
if you look at what I just showed you
compared to some of these other things
you're seeing these applications were
not sexy these things were business
applications they were all about money
they were all about getting visibility
into these systems and so we basically
were able to do this really quickly be
able to meet all the requirements but
the most important thing to me was it
was it was fun
I mean web objects just made this kind
of development great I've been doing
this type of work for probably about
five years now and I well let me digress
here five years ago I was at a Nortel
Networks we were doing some work with a
product that I won't mention cold fusion
and scuse me
so anyway we we were scaling some of
these systems there too really these
systems just kind of get out control
everybody started wanting to use these
things in our databases were getting
huge we're getting a huge user
population we were having to buy
Hardware we were throwing everything we
could at this application and it was it
was just getting insane so it just
wouldn't just stop scaling it we were
getting like four second per page
response times and what-have-you so we
started looking at web objects which was
also considered the standard at Nortel
at that time though our department and
seem to agree with that so we started
playing with it and I mean immediately
out of the box we were just blown away I
mean it was like this does everything
right I mean you know I can forget the
whole user interface thing I can forget
this whole database thing I can focus on
the business and the middle rules and
I'm not really mr. web architect but hey
I'm about to develop a system that's
perfectly three-tiered and maybe I'm new
to this but it's still gonna be pretty
darn good so we started playing with web
objects and it was cool and they came to
us and they said well you can do this
little application and we have objects
knock yourself out so we did and they
say well we also need you to do a little
bit cold fusion you said sorry we're
going to Apple so anyways basically a
mobile web of objects it's a great
application to work with and hope you
guys have an opportunity to play with it
if you already haven't been playing with
this um all right that's it thank y'all
very much
Oh
we got a really cool presentation now I
mean my stuff wasn't sexy this guy stuff
is really sexy this is Ricardo Flores
thanks but thank y'all for coming again
my name is Ricardo Flores and I'm the
consultant Engagement Manager for Apple
I services Southwest and you probably
surmised by now Apple I Services is the
consulting arm of Apple Computer
I'm here talking about built on line by
modern post card modern post card is a
small company located in Carlsbad
California small in size the large in
revenue and what they do is they create
post cards for individuals and for
corporations sounds very simple and kind
of a niche but you'll see that it's much
more than that
what build online is it's the result of
their request for us to build them a web
portal that'll allow their corporate and
individual customers to jump online and
create dynamic web pages that allow a
level of customization that we were
unable to find any place on the web when
they got this idea and I'll show you a
demo in just a few moments we spent
about two weeks showering the internet
trying to find something that did what
we envisioned the way we envisioned it
and we couldn't find it we found a lot
of things online that did postcards but
not really what we intended to do the
goal obviously is to make money and
that's a common thread that all of our
presentations have yeah they're cool
they're sexy and yeah they were fun but
if they're not driving revenue for the
customer we're not there and the project
ends so that's obviously the goal and
from on a postcard market penetration is
the key to actually driving revenue and
they penetrated a number of different
markets individual selling cards is
obviously a key component for them and
there's a big business and people just
printing cards or their dog or their
daughter or what-have-you the real
estate community is really significant
because you probably get a lot of cards
in the mail postcards from Realtors
either pushing themselves
pushing a property pushing Remax or
century 21 what have you and a lot of
those people use modern postcard for
their services the artistic and design
community is one of their biggest focal
points and the reason is if you're an
artist and you create a piece of work
and you pour your life led into this and
you're trying to distribute this to the
masses you want something that really
represents what you've done the look the
feel the depth the tech
sure it's fuzzy if it's jagged it's not
going to work for you and so they have
the highest end technology that can
produce a postcard with whatever you
want however you want it on the front
side and also from a a gallery
perspective if they're actually
presenting something they want to
present example or examples of the
artwork of the artists that's what they
do and so it looks great and so they do
a significant amount of work for artists
for designers and for the artists and
design community but where the real
revenue is and where the real push is is
obviously the corporate community and
the best example I can think of to give
a corporate postcards is when you buy
some software and you crack open the box
and all those cards fall out say
register your software and get support
and look at all these other cool
products that we make those are
postcards and they're not the postcards
on the little revolving kiosks on
Hollywood and Vine that says welcome to
California another home they are revenue
postcards they're postcards that drive
money to businesses for their goods and
their services and that's where the real
money comes and so that's where we were
really focusing doing this effort we had
number of requirements we had to do for
the development of this product some of
them pretty generic some of them very
specific on time a rapid development a
good thing to have application
scalability another good thing to have
but we took it one level further the
demo you're about to see is a 5%
solution we anticipated full community
revolving around this application you're
going to see with a bunch of other
features that we were just trying to
flush out right now but this is minimal
compared to what we're going to have in
three to five years it's also driving a
significant amount of revenue at this
point and we had to make sure that all
the objects all the frameworks all the
code is going to be usable because we're
going to scale this extremely quickly
and we're not going to have time to go
back and reverse engineer or take
component components out we must move
forward so scalability had to be at 100%
so we're really taking the object
approach on doing this to make sure that
all the objects and all the frameworks
are going to be reusable extremely new I
was important because we had an existing
solution that they had online what we
got there wasn't very elegant we need to
do some tracking mechanisms that showed
that their usage was low and also it
wasn't driving people back to the site
for repeat business corporate life
he was very low so really wasn't hitting
their target space and we've been able
to do that and I think you'll see why we
had interfaced with existing back-end
systems again always an important thing
but we had some unique challenges modern
postcard had several disparate databases
and they were all linked together and so
we had actually go and touch these
databases and make sure that we traded
data back and forth in real time as
people go into the order screen put in
their name their address level uh we had
to make sure all that goes into the
database match it with existing records
updates when appropriate and then spawn
to all the other data sources not an
ideal solution but it's the world that
they had when we got there and so that's
what we integrated with very seamlessly
and yes we're trying to get a better
singular solution and that's coming but
that was the world that we had and so we
had to go in through and say we're not
going to tell you what to do we're going
to integrate with what you have and
that's what we did but the real rubber
this whole thing is real time preview
what real time preview is it allows
anybody to go online and create the
postcard and actually get a finished
product online the problem they had was
if I go online and create a postcard and
I say not exactly what I want I want to
move this here move this there do this
do that what I would do is I would jump
on the phone and call one of their
highly paid designed experts and say can
you move that to the left a little can
you change the text to red and this
guy's making dollars per hour going yeah
sure no problem for phone call fifth
phone call and the margin of those
postcards keeps getting driven down
because he's billable to a postcard that
we hope this person eventually purchases
so the margins were very low what this
has allowed us to do is and the
requirement that what we had was 90% of
the time we wanted a customer to jump
online and do the tweaking on their own
dime and their own time and when it's
finally what they want they can hit
order and then it goes to the design guy
and then he makes it camera-ready and
shoots it so it's really streamlined it
increases the margin of every postcard
and it's also kind of cool for the
customer and very quick and easy for the
customer so it drives them back to the
site which was another key component to
that we had so the real-time preview was
the most challenging thing we had to do
and the most important
it's what separated us from the pack so
how do we do that well we had three key
components the first one is I oversee
web objects apples core development tool
second one was flash five we had to do
some very dynamic things which again we
have not been done and we talked to
flash flash said that can't be done but
we did it and I'll show you what and how
and of course the last part of it was
the Apple I services consulting
engineers so this if we can get this to
work properly will be built online okay
this is the log on screen and when you
log on if you don't have the proper
software that being a current version of
ie or communicator it'll tell you if not
you go to this screen note first the
tabs on top you go wherever you need to
and it shows you what tab you're using
what you saw there was the list of
categories we picked faces and you look
at blown-up thumbnails of the faces so
they're not little tiny you can see what
you've got when you select one it gives
you a full size blow-up and we chose the
attractive young lady with the tongue
ring and if you like that you hit select
and it brings you to the the desktop
workspace if not you go back to the
categories and select another face once
you choose the face it puts it on the
workspace and you notice that you have
the control panel there on the left hand
side this is really where the magic of
the application occurs you can go by the
click of a button on any of those
control mechanisms choose what you want
to do we click that we wanted a header
and once the header comes up you have
full word processor capability to
actually go and edit that so we
highlighted it we put in a new text you
can make it say anything you want does
that spell check it's coming in Phase
two but other than that you can do
whatever you want to so here we put in
text with a click of the button we
change it from black to white those the
two colors that the customer required so
that those in the requirements we're
going to go in and we can change the
font and it dynamically changes the font
you'll note that the picture doesn't
change and the response time is
extremely quick we'll go in and change
the font again and boom in a matter of
one or two seconds the text on the text
font has actually changed other control
mechanisms right now the text is up or
left on the header by using the grid
mechanism we click we want it bottom
center and boom it goes to the bottom
center the picture didn't change the
font didn't change the color didn't
change the points I didn't change the
locations the only thing that changed
want a logo click on a logo we want to
change the location of the logo change
the location of the logo the text
doesn't change the font doesn't change
the picture doesn't change
you can actually go and change the whole
back-end picture by selecting there's
two sizes a custom postcard or the
generic postcard and this is the deluxe
one actually blows it up and this
doesn't just increase the picture it's
actually spawning a new file to come in
on the backside take the old picture out
put the new one in but all the
intelligence is kept all the settings
you've been messing with on your control
panel
don't go away when your front sights
done you click on tab 3 goes to the back
side you have much the same
functionality these are templates that
the customer asked us to create it can
be more free format but these were
customer requirements they're orienting
templates to some of those core markets
that I talked about earlier in real
estate etc you have much the same
functionality on the back sided to do on
the front side full word processing
capability on the actual text but
there's one cool feature you'll notice
in a moment we're actually going to
highlight a bunch of text and delete the
text and nothing will move and the
reason is because that's where you
designated you wanted that text to be a
lot of the existing solutions that are
trying to do something like this or
based on business rules so they actually
build in hard-coded logic an example of
which is when you highlight text the
middle section there and delete it it
says there's a bunch of whitespace we
need to Center that so it looks good but
what if you don't want it centered too
bad well we didn't want too bad as an
answer we wanted if you don't want it
centered put it where you want it and
we'll figure out a way to dynamically
take those post part specific values
unique to your postcard and integrate
that into your real time preview result
that you get so you'll notice that the
text there didn't change if you want to
move it just like you did in the front
side you can on this specific template
it's set but a lot of the templates are
much more freeform so we look at the
final postcard in the back and looks to
be okay we're doing some final
modifications on the back side trying to
put a logo on there and the logo pops up
on the bottom and when you're done you
could continue and this tab for is real
time preview 90% of the time this is
going to work you can look at this and
say it's precisely what I want I'm going
to go to the fifth tab and order this
and it goes to the camera and you shoot
it and you're done the bandwidth and the
cycles that the client spends is minimal
the savings that they have devised as a
result of this the sky's the limit and
that's why this is the 5% solution
so that's what we did we think it's kind
of cool the client thinks it's very cool
how did we do it it's a long process but
the easiest way to explained is to kind
of take it from the end and work our way
back to the beginning what you end up
with is what you just saw a postcard
that has a lot of functionality and no
it's not HTML it's actually a series of
dynamically nested flash movies and
flash actually uses a very dynamic
component which allows you to go and
change one element so you want to change
the font you change the font everything
else stays the same and the font command
is contained in a flash movie so
everything else stays the same so the
footprint is very small for that command
it takes just what it needs throws it up
there so it's very quick and then the
rest of the data and the settings the
integrity is intact so you're allowed to
dynamically change whatever you need to
very very rapidly and very freeform so
that was really significant for us so
you have your finished postcard and
again it's a series of dynamic units and
flash movies well flash uses a file
format called Swift SWF much like word
uses the docx format and so we had to
figure out how to get the Swift file
format onto the browser so you could see
these movies and and do the magic well
we used was the web Bob just direct
action which is a call within web
objects there's a lot of different ways
we could have done this web objects'
direct action is cool for two reasons
one is you can actually bookmark those
files and come back to it later and the
second one which is more important for
us it allows a stateless session so
you'll need to spawn a physical session
because that wouldn't give us the minute
the dynamic nature of responsiveness
that we needed we needed a stateless
environment to able to push these
actions very rapidly and so that's why
we use the direct action so that was
really the mechanism that we used to get
the Swift and spun it to the browser but
there's the mechanism what is it getting
well we used the will response to be the
container so to speak that actually
contains the Swift file format so the
direct action is going to go to the will
response and grab what is there and pull
it in the problem we had was the generic
well responds as a is spawned in web
objects wasn't exactly what we need it's
we had to make some changes we created a
brand new well response
and what we changed the first of all the
content-type we had to switch that to
swift so when it actually dumped content
the browser said ah swift this must be
flash and did the appropriate things we
outside to change the mime type to flash
mime types kind of like a header so when
the will response comes to the direct
action it sees it coming and says I see
flash I must be prepared for Swift
content the content types been changed
it receives the content that's what it
needs to on the browser site to spawn
the content properly so we have our
container with the proper content we
have a mechanism to push it to the
browser and that's how the Swift follows
that chain the question becomes how do
we get the Swift file format well we use
XML basically because XML is easier to
deal with and we had to do some rather
unique things to go from the XML side to
the Swift side the first thing we did is
we created an XML re compiler so we
wanted some we have the container over
here that has this gets the Swift but we
needed to put the Swift in there so we
got XML and we actually built a
recompile earth at would take the XML
and compile it into Swift and then dump
the Swift into the container which would
spawn to the browser so the compiler was
a key component but the compiler is only
good as good and as thorough as you make
it and you can only do so much with it
especially my maintenance perspective so
what we did was we knew what woke
components we were going to have to to
create for the majority of the postcard
values because all postcards are going
to have dimension so we created a
library of world components and knowing
what those were we built those into the
XML compiler of the recompile that would
compile that XML that the will
components spit out into Swift but there
are other things that go beyond that you
can do a lot of very custom things with
these postcards and someone's going to
do something along the way that we
didn't account for so we created the tag
tag which is very cool basically you
have your web components they spit out
beautiful XML it gets recompiled to
Swift but what if they do something that
isn't taking them into account in these
well components but the tag tag does is
take anything else parses it to binary
sticks that into the container and then
that is able to be spawned to Swift and
spit and put up on your browser that's
cool for a number different reasons
one is it's very defined we know exactly
what we need to do from the will
component side we know the maintenance
that's required on the compiler side and
so it's a very known world for us so
maintenance is very low also let's say
Flash six comes out and it does some
very cool stuff and we want to use that
now once we have to go and build a bunch
of components in our library do we tweak
the compiler probably a good idea but we
don't have to we can go and say let's
use flash six it does this very cool
stuff and it's gonna get them to the tag
tag and the tag tag will parse this the
binary and it's going to go through the
loop and it'll work so it makes
maintenance very low it allows us to
take advantage of new feature sets very
rapidly recommended you go and actually
do some intelligence behind the scenes
but you can schedule that now because
it's working and it's driving revenue
and you don't have you're not forced to
do something you're controlling your own
world in terms of maintenance in terms
of upgrades but you're still keeping
pace with the market in terms of
functionality so the tag tag was a big
saver for us so that's how we got the
swiff in our container we had a
recompile err that recompile the swift
or the XML to Swift but how do we get
the XML well as I mentioned just a
moment ago the first thing we did it
would be built a number of web object
components known functionality that
every postcard or most postcards are
going to have those spit out beautifully
formed XML gets dumped into the compiler
compiles the Swift because in the
container and on through the chain so
that was the known world the second part
was we had to build the XML frameworks
from flash and the reason is going back
to the beginning you have somebody
online tweaking a postcard in flash in
SWF format and if they say okay it's
great
send it well there's some very specific
values there that we can't anticipate
every single variable so the tag type
takes part of that but there's we need
to know for instance on the grid format
where these headers are going to be the
point size of the font and how it
relates to to the location very specific
information that we can't anticipate so
we took a flash d compiler so when
you're on the screen and you hit submit
it D compiles the flash spits it out
into a huge XML chain we go in and grab
the postcard specific values from that
XML chain plug those into our
pre-existing
components those will components get
recompiled
by our XML to Swift V compiler and spit
those into Swift and in they go into the
container so it's really a big loop
that's how we get the XML specific
values and it goes all around so the
screen your Swift is the ending point of
the loop but it's also the beginning
point of the loop because it's getting
Swift and it's spawning Swift and each
side has to compile or recompile the XML
and the logic of this and the components
and the D compilers were really the
beauty of what we did and at a very high
level that's really what we did we took
our dynamically created xml from the
will components and from the swift
decompiler we converted it to XML or to
Swift with an XML des Swift compiler we
put it into the direct action that were
in the well response it spawns it to
your screen in Swift format so you have
your dynamically nested movies it allows
you the functionality and the
flexibility that you saw and that's it
you can find the site at
and I think
Rob's going to finish up for us here so
we have the web objects lab located in
room K as sexually in the other building
and the roadmap is just some some other
sessions in this the subsequent session
is developing desktop applications with
web objects I highly recommend it
moving to web web objects 5 and in room
a1 and directed Java in room a1 app
immediately following it
you