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