Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Orbitz Reaches New Heights


Disassembling

The software running on the network of PCs was the result of work that Wertheimer started at MIT in 1992. It's the same software that all of ITA's clients use, but the company had never had a client as big as Orbitz. Fortunately, says Wertheimer, more than 90 percent of what Orbitz needed, aside from routine bug fixes and software updates, had already been completed. ITA never needed to send more than a half-dozen employees to Orbitz.

ITA engineers wrote the entire flight search engine package themselves—there aren't any commercial databases here. (Although, outside the flight search engine, Orbitz does use Oracle 8i and other third-party applications.) The homebrewed system lets Orbitz increase the site's functionality on the company's own schedule. While competitors must wait for an upgrade to third-party software before performing quarterly or twice-yearly updates, says Zoghlin, Orbitz refreshes its code two or three times a week, adding features, fixing bugs, and optimizing algorithms.

Because of ITA's background in computer science and artificial intelligence, the founders weren't afraid to consider languages outside the normal realm of travel technology. For instance, the conventional programming language for building travel software is Assembly—yes, the same Assembly language from the early days of computing that's just one step up from machine code. Because it was building a Web-based system from the start, Orbitz ditched the travel agencies' assembler legacy and went with Java for about 80 percent of its development efforts. Code that touches data is written in C++, which is considered a more compact and efficient language for performing data-handling tasks.

The high-level algorithms are almost entirely in Lisp, one of the oldest programming languages. You're excused for chuckling, or saying "Why Lisp?" Although the language can be inefficient if used without extreme caution, it has a reputation for compactness. One line of Lisp can replace 20 lines of C. ITA's programmers, who learned the language inside and out while at MIT, note that LISP is highly effective if you ditch the prefabricated data structures. "We're something of a poster child for LISP these days," says Wertheimer. "Lisp vendors love us."

The downside of using a sometimes-maligned language is that it's hard to find good Lisp programmers. Today, only half of ITA's coders are Lisp gurus. For its own Web site, ITA relies on server-side Java, partly because of the availability of capable Java programmers.

In addition to being Lisp fans, ITA's employees have a more modern love. Wertheimer describes himself and his colleagues as "serious XML bigots," using the language to communicate with airlines about flight schedules, delays, and gate numbers.

XML is sometimes accused of being inefficient, but ITA thinks the benefits are worth it. When designing XML documents, ITA programmers were able to choose human-readable names for data, like CityorAirportCode (see Example 1). And there's no arguing with the fact that XML beats the travel industry's old method of displaying data: screen scraping. Screen scraping is used to read data formatted for an older terminal and to reformat it for, in this case, a Web browser. In the reverse direction, user input on the new interface must be reformatted for use by the old device.

 <CityOrAirportCode>BOS</CityOrAirportCode>
</Origins>
<Destinations>
  <CityOrAirportCode>LAX</CityOrAirportCode>
</Destinations>
<DepartureTimeRange>
  <EarliestTime>2002-1-15T05:00</EarliestTime>
  <LatestTime>2002-1-15T23:59</LatestTime>
</DepartureTimeRange>

example 1: Orbitz's search engine queries airline schedules by sending XML tags like these within a larger document.

With screen scraping, the formatting is thrown off every time a byte of information changes on the original screen. With XML, the data is transferred separately from the screen design. "When byte six moves to byte eight, you don't have to change your code," explains Wertheimer. "None of your code ever has to change, even as we add feature 4000."

On the front end, the interface for Orbitz Flight Search Engine offers users an easy way to compare flights. This is another way in which Orbitz differs from other travel services. On most airline-ticketing sites, users must scroll down a Web page to view available flight information. With Orbitz, search results are shown in a grid at the top of the page. From there, customers can narrow the search by sorting flights by airline, price, or number of stops.

The interface was the result of extensive usability research. Zoghlin and Malover believe strongly in the importance of human factors and cognitive sciences. They hired experts in these fields and had them design Orbitz's interface with the help of quantitative research. The company performed usability tests with people of various demographics in Orbitz's target market. The scientists and testers both evaluated the site's use of language, text, graphics, and color, and the company refined the interface based on feedback. Customer response has been positive, and Orbitz is in the process of applying the grid display to its car rental and hotel reservation searches.

Carrying the Weight

Orbitz launched its public site in June 2001. From concept to completion, it took the company merely eight months to build the infrastructure and implement the software. Orbitz must be keeping its customers happy, because site traffic is high. According to online-audience measurement firm Nielsen/NetRatings, 6.3 million unique users visited Orbitz.com in October 2001. In November 2001, Orbitz was selling 30,000 to 60,000 tickets per day. Malover says the site sees 750,000 to one million airfare searches per day.

To ensure that the site stays online even in the midst of high demand, Orbitz worked with IBM to develop its traffic management configuration. Orbitz now uses load management tools from Mercury Interactive. Malover notes that the distributed computing system lets the company increase server capacity as needed. Adding new PCs to the network is a quick and inexpensive task.

Today, Orbitz remains focused on maintaining its competitive advantage through technology. Of about 160 employees, nearly 100 work on the software and hardware for the site. In the coming year, Malover says they'll focus on platform decisions, including the transition to more Linux servers.

Company executives seem satisfied with Orbitz's progress so far, but are intent on continuing to innovate. When asked what he learned from the development process, Zoghlin replies, "Don't be afraid to question conventional wisdom." Convention certainly wasn't an issue for Orbitz, and neither was reinventing a wheel or two along the way.


Jen is a journalist based in Hamburg, Germany. She has written for The Industry Standard, Publish, Lycos, and several other publications. You can reach her at [email protected].


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.