Meeting Notes - Oct 17, 2001

By: Mikio Moriyasu - Revised: 2006-10-05 devin


What's New by James Reynolds

The information in James' presentation can be found here.

RevRdist Customization by Mike Kimball


More information regarding Mike's presentation as well as RevRdist in general can be found in our primary RevRdist Documentation site. To visit this comprehensive site please click here.

This type of distfile customization is new to the labs maintained by Student Computing (ACLIS) Mac Support. It is based on the use of "expressions" that reduce the number of separate distfiles needed to maintain the number and hardware variations in the labs.

In most instances, the groups of distfiles that are customized generally contain only slight differences. This helps to achieve a balance between 100 separate distfiles vs. 1 distfile that is 1000 lines long and may contain a single point of failure buried in those lines of code.

If/Then Code
RevRdist's built-in code for if-then expressions is fairly simple, though it has specific variable requirements, and of course a particular syntax. I'll start with the structure and then provide examples of how it can be used for things like IP address conditions, dealing with Apps that use License or User ID files, or other custom configurations. Here's how it works:

Variables: Some variables are set by RevRdist, others are available to use in expressions.
  • H - Mac's IP address as a 32-bit integer (can be expressed as a signed decimal number or in a formula explained below).
  • S0 - Name of the RR Helper Extension if present; otherwise, the name of the RevRdist Prefs file.
  • S1 - The name of the startup disk volume.
  • S2 - Model name of the computer.
  • S3 - S9, SA - SF - Available to use (undefined until set by an expression). Can be reused throughout the distfile, their values reassigned through subsequent "set" expressions.
  • T0 - A numeric value that essentially lists the numeric digits that appear in S0.
  • T2 - Numeric index assigned to the Mac by the Gestalt('mach') function. Equivalent to S2 variable but more specific.
  • T3 - T9, TA - TF - Available to use (undefined until set by an expression).

    The primary variables we use are H for the machine IP, S7 for strings of file names, S8 for action lists, and S9 for group assignments. Other variables, expressions, and arithmetic operators are defined and described in greater detail in the RevRdist Administrator's Guide.
Syntax: As with any programming technique using variables, you have a variable declaration, then you call it.
  • The declaration looks like a comment since its line begins with the "#" symbol:

    # {if S9 contains "loner" then set S8 "Ad" else set S8 "A." endif}
  • Calling the variable is then accomplished like so:

    > Lightwave 6.5 :{S8} =RevRdist Monkey:Special Items:Applications:Lightwave 6.5:Applications:Lightwave 6.5
    < Lightwave 6.5 :{S8}

    Remember that the variable declaration must precede the section of code that calls it, or the variable will be "undefined" and RevRdist won't run. This also means that your declarations must always contain an "else" definition, even one that doesn't point to a file or folder or group that exists (unless you want to use undefined variables as a way to catch machines with incorrect IP addresses, for example...). I'll explain this in examples below. One other thing, when reusing temporary variables, keep the declarations close to the calls, otherwise you may end up with conflicting instructions (a common mistake in coding).
Refer to your RevRdist Documentation (download here) for more details. Read on for examples of how variables can be used.

IP Address
We use the individual machines IP addresses to determine what configurations are assigned to what machines. In this fashion, the distfile can be coded to handle all kinds of conditions.
In the example above, we are using the H variable along with a formula for determining the IP address. We use this instead of the signed decimal notation so that we can actually see the address (somewhat) plainly, as above where we have 128.110.27.141, and 128.110.27.122. The S9 variable is used to identify the machine; it mainly gets called in the many if-then expressions as a condition of setting other variables (such as S7 and S8, which we use for file names and action lists, respectively).

This is a typical set of IP declarations for one of our labs, appearing in the top section of the distfile with its identifying comments. Basically we have a room with 21 machines in it, and only two of them are different from the rest. The one we designate as "instructor" has some special appearance and networking configurations, and the one we designate as "loner" is the one machine in the room that doesn't have a Lightwave dongle. We designate the else condition "lab" even though our code never specifically asks if S9 contains "lab" - this is so that the variable won't be undefined when it gets called.

Desktop Configuration


Here's a simple example of how the S7, S8, and S9 variables can be used. We customize the appearance of the desktop by putting specific items there, and also by changing the desktop picture. The sections of code that accomplish this are listed above (assuming the Desktop Folder section is within Root, the Appearance section is within System Folder, and the Prefs are within System Folder:Preferences).

Apps with Licenses or ID Files (e.g., Lightwave 6.5, Final Cut Pro 2.x)
The code examples for these are lengthy, so they follow my comments... Basically with Lightwave 6.5 and Final Cut Pro 2.x, there are files that enforce licensing of the software, which are unique to each particular machine. Luckily, you can copy them to a server and distribute them with RevRdist, without breaking them. I even set the License.key files so they are read-only (as in ReadMe), since they are SimpleText files. This further prevents tampering.

Doing it this way is a better option than using "Ai" as the action list - it is more robust than trusting users not to delete the file, and more convenient than having to reconfigure the file by hand (typing the lengthy serial number manually on each machine, or using the FCP installer CD again...)


As you see above in the License.key line, a variable does not have to contain the entire file name (or action list, etc), it can be used to supply just part of it. On the server, we have a folder full of the License.key files, and each is named with the machine name on the end. The code ensures that it is named simply License.key, once it is on the individual machine. The last declaration merely says that the one machine ("loner") that has no Lightwave dongle, does not get the software.

As for Final Cut Pro, click on the image below to see the example:


Staggering RevRdist Run Times
Our Marriott Library building has over 170 machines running RevRdist from a single RevRdist server. Obviously, it's smart to stagger their run times so there isn't a singular and excessive load on the server or the network. In general we can simply code different groups' distfiles with different run times, but we currently have over 60 machines of the same type in one part of our lab. So, we had to split the 60 machines into two groups, using code in the distfile to distribute different run times to two groups we designate. In addition, one of the machines in this is also a Scanner, so that is part of the declaration. The code for this appears in the example that can be seen below.


The first section is the IP designations - we have specified a range of IP's that belong to "Group 1", with "Group 2" as the else designation. Note that the Scanner machine also contains "Group 1". The second section has to do with Cron, the app we use to trigger our RevRdist run times. Group 1 runs at 3:31am, Group 2 runs at 4:31am.

Differing Video Cards


One machine in our main MMC lab is a G4/466, but an earlier model before they came with nVIDIA cards. So, it uses the same image as the other G4/466's, but the nVIDIA drivers would be inappropriate for a machine with a Rage 128 card (the drivers work but they are slow ;) So, on this machine, it copies the ATI drivers from Special Items, and doesn't copy the nVIDIA drivers.

Mac OS X Utilities By Scott Doenges

The information in Scott's presentation can be found here.

There are probably several more cool utilities that we are not aware of. If you know of one that is not listed here, please contact us here.

Apple WebObjects 5 By Barry Janzen - WebObjects Systems Engineer


What is WebObjects?

From Apple Computer's WebObjects product website:
...WebObjects 5 provides a comprehensive suite of tools and object-oriented frameworks that allow you to quickly develop and deploy scalable, reusable web and Java applications. By leveraging state-of-the-art, integrated frameworks and tools, it delivers the most mature platform for creating modern browser and client/server applications. No wonder it’s the environment of choice for leading corporations that need to create compelling Internet sites on time and on budget.

WebObjects is the original object-oriented application server. Unlike other application servers, it handles all the database access and session management for you, cleanly separating your business logic from the user interface and data model. This three-tiered approach makes it easy to develop flexible, maintainable applications while guaranteeing data integrity. It also greatly reduces the amount of application-specific code you need to write. In fact, the presentation and persistence layers of WebObjects are specified using configuration files, so you don’t even need to maintain tool-generated Java or SQL code.

Because WebObjects 5 uses a pure Java runtime, its application can easily interact with other Java applications. In addition, WebObjects makes it easy for developers to write as much of their application as they wish using standard J2EE APIs, then integrate that code into a complete WebObjects application.

You can build database applications with WebObjects that have either HTML or Java interfaces, depending on your needs. Included are the code-free Direct to Web and Direct to Java Client technologies which use assistants, preconfigured templates, and dynamically generated user interfaces to generate rich Java client interfaces as easily as HTML clients at the click of a button.

Because of its object-oriented design, WebObjects enables developers to leverage a broad range of reusable system and third-party components, as well as create their own corporate component library...
Some Background Information
From the beginning, WebObjects has been a scalable web application deployment platform. It is a mature platform that utilizes powerful frameworks that can handle very large loads. Before it was bought and developed by Apple, WebObjects immediate predecessor was used to set up the Dell Online Store. Dell made 4 billion dollars in profits on two server that cost $50,000

WebObjects 1 debut in March 1995. Version 2 debuted in June of that same year. As the original web application server, it was the first one out there to be widely used in business.

During its development, Steve Jobs asked the Engineers if WebObjects 1 could be done with JAVA. At the time, the answer was no because the performance was just not there and there were memory usage issues. As result it, was written in Objective C.

At the same time, Jobs set up a strategy to look into making WebObjects work with Java. The early result was WebObjects 3 which used a bridge between Objective C and Java. Initially, the Objective C bridge work was faster than pure Java. This bridge is still in use today. Many Mac OS X users working with WebObjects 4 are programming in Java but the objects themselves are referenced across the bridge. Now, with Version 5, Steve Jobs basic question regarding WebObjects and Java can be answered with a resounding "Yes".

Apple's Plans for WebObjects
When first developed, the server software package cost $50,000. Even though the educational price was lowered to $99, the problem of transference from Academia to the Private Sector remained. Students who trained on the $99 version of the application, once in business would still have to convince higher-ups to purchase the $50,000 package.

To better fit WebObjects into Apple Computer's overall product strategy, at the most recent World Wide Developers Conference, Apple announced that it would keep the educational price at $99 but that it would cut the cost of the corporate package to $699. The goal being wider market acceptance or "mindshare" among talented developers and creative hands in both educational & commercial markets.

In addition Apple iServices is providing the following services to insure the successful development and deployment of the product:
  • Onsite training courses are now offered.
  • Consulting services.
  • Deployment problem solving.
  • Development problem solving & training.
  • Enterprise tech support.
The consumer benefits can be seen when examining the competition:
  • Websphere - $7,500 to $10,000 per CPU
  • WebLogic - $10,000 to $17,000 per CPU
Web Objects was more expensive but it delivered more services, development tools, and functionality. Now, with an educational cost of $99 and a commercial cost of $699, the difference can be used for additional hardware training, support, and development.

Currently, WebObjects will run on Windows 2000 as well as OS 9 and OS X but not with Version 10.1. WebObjects worked on the various developers pre-releases but does not work on the finalized version. A patch is in the works.

It is available worldwide via the Apple Stores, the Apple Online Store, and authorized resellers. In addition, free evaluations are available through the Apple Developer Connection.

Success Stories: WebObjects Deployments
Apple Computer -- Most of Apple Computer's online services (Apple Store, iTools, Developer Connections) are all developed managed, an maintained with WebObjects. Those services that aren't, soon will be.


VRWAY Interactive Media -- This site provides an interactive QuickTime VR virtual tour of Europe. One key interactive feature is the incorporation of links to various local and international e-commerce sites through the storefronts that are imaged as part of the QTVR "tour".

The site architecture features the following:
  • "Drill Down" site navigation.
  • Site is operated and maintained using Webobjects, QuickTime and Mac OS X, with an Oracle database, and Apache.
  • Provides dynamic hotlinks in QTVR.
  • Designed to scale to 600 concurrent users.
  • Four G4 Appservers with the ability to saturate a 32Mbps link.



Modern PostCard -- This site allows users to create online customized postcards using an extensive "library" of images, fonts, and layout options. Modern Postcard will then print them out and mail them to addresses specified by the user for a fee. The key feature of Modern Postcard is the ability of the user to edit the content of the postcard master image and see the results in real time. This is done using a series of dynamically nested flash movies for each design element.

The site architecture features the following:
  • Streamlined user interface for postcard creation.
  • WebObjects interfaces with existing backend systems.
  • Finished postcard gets flash content (SWF) from WebObjects.
  • Framework builds XML from components.
  • Custom Framework complies XML into SwF


University of Michigan Student Portal (my.umich.edu) -- This represents the culmination of U of Michigan's "Janus Project". It is a joint development effort between Apple iServices and university.

The portal is a multifunction user interface that allows students to access email, create and use a virtual day planner, create and maintain "to dos" lists, and check their class schedules. Students can post to and receive information from campus bulletin boards and electronic classifieds regarding rooms for rent, merchandise for “for sale”, and general news announcements.

The system can also alert specific students or groups of student regarding curriculum issues, deadlines, or graduation.

The site architecture features the following:
  • Data Sources - Several Oracle databases, XML feeds, & Lotus Notes.
  • IMAP for email.
  • LDAP for directory services.
  • Kerberos for security.
  • Modular design for future growth.
For more information on my.umich.edu, please visit their project information website.

Additional Information
The U of Michigan project had a specific vision and a budget to match. This does not mean that smaller, from-the-ground-up projects or project that must interface with existing systems or databases are impossible.

University Departments or Colleges with an plan can utilize WebObjects just as quickly and easily as U of Michigan because of its flexibility to interface with state of the art or more primitive databases and servers.

I you have any questions regarding the above information, please visit Apple's WebObjects website or you can contact Barry at the information provided below:
Barry Janzen
Apple Computer
WebObjects Systems Engineer
Boulder, CO
720-652-9489
bjanzen@apple.com
Related Links
WebObjects - General Information
WebObjects Main Page
http://www.apple.com/webobjects/


University of Utah - Genetics Department
The University of Utah genetics research facility has developed web-based tools for conducting large-scale analysis of proteins.
http://www.apple.com/scitech/appletech/wo/giddings/


Georgia Tech
Thin clients, fat pipes. Universities learn to run lean and mean on the web. WebObjects helps institutions like Georgia Tech shift to a web-based infrastructure.
http://www.apple.com/education/hed/aua0202/georgia/


Stanford University
Innovations in language instruction are possible through WebObjects. The Stanford Digital Language Assessment Project is a multi-language intranet application that allows students to learn from and be tested through written, audio, video and graphic study materials and exams. Soon students will be able to access the materials from their dorm rooms, allowing greater flexibility in study times. Instructors' time is more effectively used and course materials are more easily shared. Administrators now have a standardized method with which to assess written and verbal proficiency. The application was developed with WebObjects, which was chosen for its ability to support Unicode and Java. Unicode gives the university the ability to teach and examine in more than 1,000 languages.
http://www.apple.com/education/hed/admin/stanford/index.html


State University of New York at Buffalo
The future of the past. Architecture archive goes online at SUNY Buffalo. A multidisciplinary team of IT professionals, librarians, and professors work together to preserve and provide access to a vital teaching and research resource.
http://www.apple.com/education/hed/aua0202/sunybuffalo/


Sydney University, Australia
Online Collaboration Changing Arts Education The result of intranets using Apple WebObjects and Mac OS X Server at Sydney University has been an ambitious new project--Arts Online-- bringing thousands of students and their instructors together in online forums, where education takes place 24 hours a day.
http://www.apple.com.au/edu/hed/casestudies/artsedu.html

Other Issues

A few additional issues were brought up during the course of the meeting:
  • Apple iServices is more than willing to conduct WebObjects workshops for those who might be interested in using it for the creation of modern browser and client/server applications. If you, your college, or your department, is interested in having Apple iServices conduct such a workshop, please contact either Larry Anderson at:
    Larry Anderson PhD
    Apple Higher Education
    1514 Buttercup Drive
    Sandy, UT 84092
    (801) 619-1119
    larry@apple.com
    or Richard Glaser here.
  • Because of the Apple WebObjects presentation and demonstration James' presentation on Customizing Apple Software Restore and Richard's presentation on Mac OS X version 10.1 have been rescheduled for a future Mac Manager's meeting.
  • If there is a topic you would like to see discussed at a future Mac Managers Meeting, please contact us here.