วันอังคารที่ 20 มกราคม พ.ศ. 2552

Adobe Creative Suite

Adobe Creative Suite is a complete family of development tools including Flash, Photoshop,
Dreamweaver, Illustrator, After Effects, and Acrobat. It’s essentially all you will ever need, and then
some, if you work in the field of creative design and web/print/video production!
Since Adobe acquired Macromedia, great advances have been made in terms of product integration—
all of these applications come together to allow for streamlined workflows. For example, a designer
could sketch something using Photoshop, convert it to a vector graphic using Illustrator, and then
import it directly into Flash with any layers left intact.
When should you use it? All of the time!
Any alternatives? There are certainly a host of alternatives, from free software such as GIMP to more
commercial offerings. The downside, especially compared to Creative Suite 3, is that they tend to lack
the same level of product integration.


Cairngorm is an ActionScript 2.0 and 3.0 framework that can be used to build more complex Flash and
Flex applications. It is based upon industry-standard programming design practices and provides a
robust Model-View-Controller (MVC) architecture to build upon.
When should you use it? When you are tasked to build a fairly large application, Cairngorm can help
you build something that is architecturally sound.
Any alternatives? Many open source pattern-based frameworks exist; however, few offer mature Flex
support. Of particular note is PureMVC (http://puremvc.org), an ActionScript 3–based framework
that is emerging as a serious competitor for Cairngorm. For ActionScript 2.0 development, it might be
worth looking at ARP (http://osflash.org/arp), developed by Flash guru Aral Balkan.

Flash Remoting

When developing rich Internet applications, you often need to retrieve data from a web application
server—this is where Flash Remoting comes in, allowing you to integrate with ColdFusion, .NET, Java,
and SOAP services on your server. It simplifies the development of XML-based messaging services and
offers fairly decent performance; in addition, it offers the AMF protocol, which is a way of serializing
data and transmitting it to clients, with significant performance advantages over straight XML.
In many ways, this is the little brother to LiveCycle Data Services—with a much smaller price tag and a
feature set that reflects this.
When should you use it? When you are developing a data-driven rich Internet application but do not
have the volumes of data or requirements to justify the added price tag.
Any alternatives? OpenAMF is a good J2EE-based solution. Libraries are also available for popular languages
such as PHP, Ruby, Perl, Python, and .NET. You can find many alternatives on the open source
Flash website (http://osflash.org).

Flash Media Server

Flash Media Server is Adobe’s solution to the provision of streaming audio and video content, offering
advanced features such as support for interactive and on-demand content. There is also support for
live broadcasts and conferencing.
When should you use it? When you have a need to provide large volumes of streaming media. If you
are simply integrating a few FLV files, then Flash Media Server might not be an economically variable
option when you consider the features that are not being used.
Any alternatives? Red5 (http://osflash.org/red5) is a fully featured open source alternative.

Flex Charting

Builder to provide a library of rich charting components that can be used to provide interactive data
visualizations. These can be styled as required using CSS and extended to create totally new types of
When should you use it? When you have the requirement to present data as a graph or chart.
Any alternatives? You can find some third-party components if you look around; however, few offer
the same levels of customization.

Flex LiveCycle Data Services

This is an optional component that can be used to develop Flex applications that rely heavily on data
stored on an application tier. Flex LiveCycle Data Services can be deployed on a Java 2 Enterprise
Edition (J2EE) application server, and it supports many forms of data synchronization, including remote
data push—where the server sends data to the client, rather than the client polling the server for
updates, which can be very bandwidth intensive. Also included is built-in support for offline applications
and occasionally connected clients.
Flex LiveCycle Data Services is licensed per CPU and can be a pricey option for smaller applications;
however, enterprise customers might find this a more attractive option because they are more likely
to use a selection of features.
When should you use it? When you are building a data-intensive application where performance is a
high priority.
Any alternatives? If performance is less important, it might be worth looking at Flash Remoting
(covered in a moment) or some of the open source alternatives such as Granite Data Services

วันอังคารที่ 13 มกราคม พ.ศ. 2552

Working with the Adobe Flash Platform

Flash and Flex are part of a much bigger picture when it comes to Adobe’s long-term product strategy.
Also part of this strategy is the Adobe Integrated Runtime (AIR), which we will cover later in this book.
This strategy comprises five key elements:
Universal formats, including HTML, SWF, and PDF, with cross-platform reach and extending
across many different operating systems and devices. This is not necessarily confined to the
web browser, with the AIR platform serving as one example of liberating applications from the
confines of the browser and making them available on the desktop.
Platform abstraction, allowing for predictable application behavior and performance across all
platforms, rather than other technologies that place dependencies on particular web browsers
and platforms.
Server-side applications, providing capabilities that can be leveraged by client applications in
order to aid the development of compelling data-driven experiences.
Extensive development tools, which are designed to integrate with design and development
workflows, optimizing the production and development process.
A sizable and enthusiastic community of designers and developers located around the world.
All these elements together go a long way to ensure that the Flash Platform is a stable and lucrative
platform for developers that offers many opportunities to develop great applications and experiences.

Working with Flex

Working with Flex
Flex is a framework for developing rich Internet applications, and it is built around ActionScript 3.0
and Flash Player 9, currently version 3. The object of Flex is to provide functionality that allows developers
to quickly and easily build rich applications that can be deployed on the Internet, while still
allowing access to the expressiveness and visual capabilities of Flash.
The framework supports an XML-based language called MXML that can be used in the specification
and development of user interfaces. To support this, it offers a wide variety of prebuilt UI components
including buttons, text fields, data grids, graphs/charts, and components supporting drag-and-drop.
Other features also allow the developer to consume web services and work with XML data with ease.
This gives the developer a powerful platform upon which they can mash up web services and create
entirely new applications.
On the application architecture side, the move to ActionScript 3.0 and features such as the eventhandling
model allow for the development of much more well-structured and maintainable applications,
leveraging industry-standard design patterns and architectural practices.
Flex applications can be developed either by using freely available command-line tools that are distributed
as part of the Flex SDK or by using Adobe’s commercially licensed Flex Builder (see Figure 2-5)—
an IDE built upon the open source Eclipse platform.

Working with data

Working with data
Flash offers many options when it comes to working with external data sources such as web services.
XML is natively supported in both ActionScript 2.0 and 3.0. In addition, there are many other data formats
that a developer can use when working with data:
LoadVar objects, which consist of variable names and values, can be used when dealing with
simple text strings.
JSON, a method of encapsulating text and numerical data within native JavaScript objects, is
perfectly usable within Flash, and its parsing is straightforward because of the shared
ECMAScript syntax.
ActionScript 3.0 is capable of directly manipulating binary data.
Other techniques, such as SWX, which we will cover later in the book, provide a way of essentially
serializing Flash objects and communicating data as a SWF, eliminating any parsing overhead.
Compared to JavaScript, Flash is also a lot more flexible when it comes to loading cross-domain files
and resources, while also running within a security sandbox that mitigates most security risks. Imagine
a Flash application hosted on www.mydomain.com. During the course of its execution, it makes an
attempt to call a data service located at www.datadomain.com/services/myservice. Before the call is
made, Flash Player makes an additional call to a cross-domain security file, www.datadomain.com/
crossdomain.xml. This is a file that can be used to specify whether requests from a Flash application
hosted on a specific domain are allowed to access resources on the web server.
For example, if you wanted to allow any application to use your service, you would create a crossdomain.
xml file that looked like this:

You could also restrict access to your service so that it could be accessed only from applications on
mydomain.com, like this:

If a crossdomain.xml file does not exist or does not permit access, then any calls to that domain
would not be made.

Under the hood

Under the hood
In early versions of Flash, developers were limited to timeline animation when it came to adding interactivity
to their applications. In more recent releases, increased scripting support has been incorporated
using a language called ActionScript.
Like JavaScript, ActionScript is based upon the ECMAScript specification. Both languages share a similar
syntax, making it easy for developers to alternate between the two.
Within Flash, ActionScript is designed to be asynchronous, allowing multiple lines of code to be executed
concurrently and using callbacks in order to pass data. A developer can define custom events
and assign them to be dispatched during code execution, and listeners are assigned to monitor the
application for events and to execute the appropriate code block.
You can create ActionScript using a simple text editor; however, the Flash integrated development
environment (IDE) offers additional functionality such as syntax highlighting, code autocompletion,
compiler integration, and a language reference. In addition, third-party IDEs such as FDT, FlashDevelop
(see Figure 2-4), and SEPY offer ActionScript-specific support and functionality beyond what’s found in
the Flash IDE.
With the release of Flash Player 9, ActionScript made the jump from version 2.0 to version 3.0. This
represented a major overhaul of the language’s syntax and structure. In addition, ActionScript 3.0 uses
a new compiler that transforms your ActionScript code into byte code and a new virtual machine in
which the byte code is executed.
ActionScript 3.0 can offer developers a massive performance boost, offering performance approximately
ten times faster than the equivalent ActionScript 2.0 code. In addition, it offers support for
runtime exceptions, type checking, data types, and regular expressions—all functionality that aids
developers when creating rich Internet applications and mashups that rely heavily on client-side data
processing and visualizations.
There is also a vastly enhanced XML parsing engine, E4X, which reduces the complexity and lines of
code required to manipulate XML documents.

Working with Flash

Working with Flash
Flash is a platform upon which developers can produce and distribute multimedia content, such as
web applications, games, and movies. Flash has been around for more than ten years and is currently
owned by Adobe Systems following its 2005 merger with Macromedia.
Flash can be a very expressive medium, traditionally being used to create graphically rich movies and
interactive experiences. It is also popularly used to create and deliver online advertising.
More recently, the Flash platform has gained popularity as a means to integrate video into web pages
by using Flash Video (FLV) and also as a platform used to develop rich Internet applications (RIAs).
Adobe is currently shipping version 9 of Flash Player, as well as Adobe Flash CS3—a version of the
developer environment that can be used to create content that takes advantage of the new features
of the player, including the new ActionScript 3.0 scripting language that offers huge performance
gains over ActionScript 2.0.
To view Flash content, users must have Flash Player installed on their systems. This is a fairly small
download by today’s standards and offers support to all major web browsers on Windows, Mac OS,
and Linux platforms.
Unlike other web browser plug-ins, Flash Player has one major advantage—its ubiquity. It is a very
mature platform that has widespread adoption. Statistics published by Adobe indicate that more than
98 percent of computers have a version of the player installed, and more than 90 percent of these are
Flash Player 9, the latest major version.
This means that developers can produce content safe in the knowledge that they are not going to be
excluding a large proportion of their audience. However, as any good web developer is keen to point
out, it is always important to consider the experience that users without Flash Player will have.

วันจันทร์ที่ 12 มกราคม พ.ศ. 2552

Mashing Google Maps using JavaScript

Mashing Google Maps using JavaScript
Google provides a free API that allows developers to embed maps on web pages using JavaScript. Using
this you can create a map of anywhere in the world and overlay it with additional data and functionality.
You can use the Google Maps API for free provided you abide by the terms of service. The terms are
pretty standard and place limits on traffic volumes (50,000 requests per day, per API key) and acceptable
If you want to embed Google Maps on an intranet or nonpublic website, then Google offers an enterprise
option for a fee.
To use the Google Maps API, you must register for a free API key. This is a straightforward process and
is shown in Figure 2-2; you essentially have to agree to abide by the terms of service and also provide
Google with details of the site where you want to use Google Maps.
It is worth noting that the API key is specific to a directory on your web server, so if you register with
the URL www.mysite.com/maps, then the key will be valid only for pages within this directory or its

Working with JavaScript

Today, most websites tend to use JavaScript in order to add client-side interactivity and logic—whether
it is simply to change the appearance of a button when the user hovers over it with their mouse or
whether it is to create something much more complex such as an entire user interface in the vein of
the Fluxiom web application
At the heart of Fluxiom is a scripting language based on the ECMAScript specification, with a syntax that
should be familiar to anyone who has done any Java or ActionScript programming. The ECMAScript
specification itself is an international standard, of which both JavaScript and ActionScript are dialects.
JavaScript is a universal technology, available in every major desktop browser and even on mobile
devices such as the latest Nokia phones and, of course, the iPhone. Despite a spotted past of incompatibilities
and proprietary functionality, the language has reached a point of maturity where it has
become pretty much standardized in implementation, with various frameworks offering up conventions
as to how developers should be using the language. The popularity of common component
frameworks has also helped support its usage by developers across the Web.
Frameworks often provide developers with components and utility classes that can be leveraged when
building more complex applications. They often reduce the amount of headaches that a developer has
to deal with by implementing generic functionality such as object orientation, garbage collection,
visual effects, and rich user interface components, while at the same time providing solutions to common
cross-browser programming challenges (a diplomatic phrase for bugs!). This reduces development
time and negates the need to reinvent the wheel when producing a simple web application.
Many frameworks are available, ranging from fully blown affairs encapsulating all of the utility functions
that you will likely need when building a web application, including data communication and
DOM manipulation, to simple reusable components that might implement a specific user interface
element such as a slider or accordion. Depending on whom you ask, you will often get recommendations
for different frameworks, and often their suitability will vary depending on the project. Of particular
interest are MooTools (www.mootools.net) and jQuery (www.jquery.com); both provide a great
deal of features given their small file size and offer exceptional performance.
In major projects, a framework is often considered essential, whether it be an off-the-shelf one such
as those mentioned here or something homegrown. They often make larger projects more manageable,
standardizing development and encouraging reuse.
The use of JavaScript in mashups is varied, because often it is necessary to augment it with server-side
scripting that performs data aggregation and other pieces of logic/processing—both tasks that could
have performance overhead if performed using JavaScript on the client. In these cases, JavaScript is
used mainly to provide a rich, interactive user interface and to allow asynchronous communication
with the server using the XmlHttpRequest object (a JavaScript object that is used to make asynchronous
calls to a web server).
When developing more complex mashups using an HTML/CSS/JavaScript front-end, a server-side component
to handle the aggregation of data from various sources or to store user preferences often
becomes essential.
JavaScript also runs within a tight security model, restricting access to domains other than the one
from which the script was loaded. There are ways around this; however, this can also impact connectivity
with external application programming interfaces (APIs) and data services.
That said, it is possible to consume external data services using JavaScript as part of a web application
with some creative workarounds. A good example of this is the incorporation of an interactive Google
map within a web page.


Web application development is not a simple task, as many a developer will attest.
Back in the early days of the Web, the main challenge was maintaining page compatibility
between Internet Explorer and Netscape. Over the past decade, we have seen
pages evolve from static experiences to something much richer and more dynamic.
With this evolution comes additional challenges and constraints that need to be considered
when developing web applications.
The key issue to keep in mind is how a user is going to interact with your web application
as you introduce richer functionality and new user interface paradigms. It is
far too easy to get carried away with many of the client-side technologies that are
available to developers, either by visually enhancing aspects of an application or by
introducing dynamic data loading. At all stages, usability should be considered—what
value does feature X add to the user? And conversely, how functional will an application
be if a user is viewing it in a browser or on a device that does not support a
certain technology?
If you look at the technology platforms that are used to deliver these rich web experiences,
you will see two paths. On a foundation of Hypertext Markup Language
(HTML) structure and Cascading Style Sheets (CSS) presentation, developers have
embraced JavaScript as a means of delivering interactivity and rich functionality
within the browser. In addition, plug-in technologies such as Adobe’s Flash Platform are well regarded
when it is necessary to deliver increasingly rich visual experiences to users.
Both of these technologies have their place when it comes to developing mashups and can be used to
produce fantastic results, as evident in the examples you saw in Chapter 1.
Choosing whether to develop a mashup application using Flash or JavaScript is often a decision driven
by the services you are looking to consume and the creative vision of what you are going to build.
Secondary considerations might include the availability of server-side scripting, accessibility requirements,
and usability.
Let’s take a closer look at the available technologies so you can see the differences between them and
what makes one more suitable to a certain requirement than another.

Internal mashups

Internal mashups
Mashups also do not have to be public; instead, they can be inward-facing. By exposing the internal
core services of an organization, you can make it easier for developers to build applications within a
company’s infrastructure and also simply reuse data across the enterprise. This can lead to significant
cost savings and added value.
Yahoo takes this one step further with a concept called Hack Day. Simply put, a hack day is a day
where employees are challenged to develop a prototype of an application and present it to their
peers. Each application must utilize any number of the company’s products, services, feeds, and APIs.
Successful applications could potentially be developed into fully fledged products.
This approach to innovation helps breed creativity within the organization and serves to boost
morale—giving developers the chance to do something fun for a day, outside of their normal duties
and responsibilities.

Moneymaking opportunities
There is nothing set in stone that says an API should be freely available to everyone. If you are the
owner of a data source that people are willing to pay to access, then there is nothing stopping you
from exposing an API and requiring developers to pay for its usage.
In the United Kingdom, companies such as the Royal Mail have been doing this for many years; it
allows other organizations to query its postal-code database for a small fee. Amazon also has adopted
a similar model for its S3 (online file/data storage) service, charging users for disk space and bandwidth
Although the commoditization of data might not always be appropriate, it can be a dependable revenue
source in those situations where it is.
In this chapter, you looked at the history of the Web and also saw how web application developers are
opening their applications and data with APIs and data feeds. You also looked at the motivating factors
behind this approach.
In the next chapter, you will learn about the technology choices you have when developing a mashup,
and you’ll take the first steps in mashup development.

Increased traffic

Increased traffic
A mashup can often be the means though which people will be driven to a website or application. In
fact, it could drive user registrations and ultimately increase the profile of the site in question. For
example, the many mashups built around the Flickr feeds and APIs are a major factor in the site’s popularity.
Mashups help build brand awareness among the online community and often serve to differentiate
websites from their competitors.
Often this can work both ways—if a respected brand launches an API interface to its services, then
developers will be more inclined to check it out, compared to, say, a fledgling start-up. A good example
of this is Amazon, and its various S3 web services, as a company renowned for integrity and reliability;
its brand serves to reassure developers that its services are secure, scalable, and reliable.
In many cases, there are also opportunities for mashups to be embraced by the data provider themselves.
For example, Flickr recently integrated the functionality of Picnik into its site—making it available
to millions of users.

An API can be a way through which to develop a community around a particular web application. Just
as you can see increased traffic by opening your application, you also get mashup developers flocking
to your door. Embracing this can be crucial to the success of a web application because getting thirdparty
developers to support an application can generate massive returns across the board.
If you look at social networking, sites such as Facebook and OpenSocial have been successful in developing
huge communities of developers who are interested in building mashups and applications upon
their platforms. This has really led to an explosion in functionality available to users and has also generated
huge amounts of publicity.
Open data
Often, feeds and APIs serve a primary purpose—to allow access to the underlying data contained
within an application. Offering this functionality promotes the principles of open data, giving the end
user control of the data that is stored within your application. If they want, users can stop using the
service and leave, taking all their data with them.
Alternatively, opening data tends to simplify data reuse across many different applications. If you look
at the recent explosion of social networking websites, you’ll see one major annoyance—the user is
required to maintain the same profile data across multiple sites, so they end up having to spend additional
time updating Facebook, MySpace, Bebo, and so on, each time they come across a new favorite
song, for example!
APIs offer a means of decentralizing this, and already we are seeing examples of this; for example, the
Facebook developer platform allows for easy mashups and integration with other data sources.
At the end of the day, yes, there is a risk that your users are perhaps less tied down to a single application,
but surely this sets a challenge to developers to develop relevant and compelling applications
that ultimately fulfill the needs of the user.

The benefits of being open

The benefits of being open
Many companies and developers open their web applications, using a combination of APIs and RSS
feeds, in order to create a platform upon which mashup developers can thrive. Depending on the web
application, the reasons for this can be very different.
Innovation is encouraged
If you refer to the quote from Vint Cert earlier in this chapter, you can see that Google recognizes that
it does not hold a monopoly on creativity. Many developers out there will, given the chance, find
novel uses for data or functionality that the original programmers of an application may never have
considered. An API gives programmers the tools to experiment and create new applications.
In some cases, this creative output can be fed back into the research and development process, stimulating
new ideas and influencing the overall product direction. These ideas may be totally unexpected—
I doubt that anyone in the Chicago Police Department anticipated seeing police reports
plotted onto a Google Map!—and ultimately add considerable value to the data.
As a mashup developer, a lot of the fun lies in the ability to take different sets of data and create new
views of that data. This could potentially add value; for example, by plotting information on a map,
you add context that would otherwise be missing. Alternatively, combining data could ultimately provide
a form of creative expression and entertainment.
Extended functionality
Following on from innovation, an API allows you to extend the functionality of a given web application,
potentially in areas that might not be of interest to the application developers themselves but often are
desired by a subset of the user base. For example, Housing Maps (http://www.housingmaps.com)
extends the functionality of Craigslist, allowing classified advertisements to be viewed on a map.

วันอาทิตย์ที่ 11 มกราคม พ.ศ. 2552

Opening your web application

Opening your web application
Web application developers have several options when it comes to opening their application functionality
and data to the hoards of mashup developers. Often, one of the simplest ways to facilitate
the syndication and consumption of data is by publishing it as an RSS feed.
RSS stands for Really Simple Syndication and is essentially an Extensible Markup Language (XML) document
that conforms to a specific data schema. An RSS feed contains details of the feed publisher and
can contain any number of items that correspond to web application data. This can include news stories,
photos, listings, and much more.
The following is an example of an RSS feed:

BBC News | Technology | UK Edition


Visit BBC News for up-to-the-minute news, breaking news,
video, audio and feature stories. BBC News provides
trusted World and UK news as well as local and regional
perspectives. Also entertainment, business, science,
technology and health news.

Mon, 25 Jun 2007 17:24:34 GMT

Copyright: (C) British Broadcasting Corporation, see
http://news.bbc.co.uk/1/hi/help/rss/4498287.stm for terms
and conditions of reuse


BBC News



Social sites reveal class divide

Social networking sites are proving a good guide to
socio-economic divisions in the US, reveals research.



Mon, 25 Jun 2007 11:42:15 GMT

Leader of net piracy gang jailed

A Briton who operated a net piracy gang out of his
Australian home is jailed in the US for 51 months.



Mon, 25 Jun 2007 13:56:19 GMT

California landing for Atlantis

US space shuttle Atlantis touches down in California, after
bad weather prevents a Florida landing.



Fri, 22 Jun 2007 20:56:50 GMT

Computers 'can raise attainment'

A study says high levels of computer technology can improve
school results, but the picture is mixed.



Sun, 24 Jun 2007 07:08:51 GMT

Yahoo sees advertising shake-up

Yahoo is overhauling the way it sells advertising in the US,
in an effort to help revive the business.



Mon, 25 Jun 2007 06:45:30 GMT

This is an RSS feed from the BBC News website. The channel node contains information on the feed
publisher including the feed name, description, associated URL, and published date. It also contains.

Examples of mashups

There are many different interpretations on what mashups are and what they mean for the Web, for innovation,
and for creating value propositions for the user. In broad terms, a mashup is an application that
consumes data from different sources and combines them in a single user experience. As you will see
later, this can be in order to add value to the preexisting data or to take a more fun and creative slant.
In many ways, mashups offer a platform for innovation, where developers can demonstrate their talent
and creativity without having to reinvent the wheel by accessing data sources that otherwise
would not be available to them.
Although originally mashups was a term used to describe web applications that were built around one
or more data sources, we are seeing them move from the web to the desktop as widget platforms and
desktop technologies evolve. The concepts behind mashups, such as interacting with data sources, are
being worked into applications that are available to run locally on the desktop.
Mashups present a great opportunity for web developers to innovate and demonstrate their creativity,
with near limitless possibilities.
Data can be consumed from various sources, including the following:
Public APIs
Web services
Data feeds (such as RSS)
Mashups have been embraced by many Internet companies, including Google, Yahoo, and Amazon,
which have all provided various methods for developers to leverage the functionality of their web
applications. Over the next few pages, you will see some of the most novel and innovative examples of
mashups that are available on the Web.

Many users are deserting desktop applications and moving toward web applications for common
functions such as e-mail and document creation.
In the past, this was somewhat limited because the experience that a web application can offer did not
compare to the speed and quality of interaction provided by a desktop application; however, with the
rise of client-side presentation technologies, Buzzword is a shining example of what is possible when
you combine a powerful technology with the social and collaborative nature of the Web.
Recently purchased by Adobe, Buzzword is a web-based word processor written entirely in Flex, with
full support for popular document formats and notable technical achievements such as an advanced
text and document layout engine (see Figure 1-1).
Although not strictly a mash-up, Buzzword embodies many of the emerging social attributes of the
Web, and at the same time sets the bar for client-side applications.
Figure 1-1. Editing a document in Buzzword

A web of data By Adobe Flex

Yahoo’s Tom Coates coined the phrase “a web of data,” using it to describe the current state of
the Internet and the transition from many websites serving as isolated repositories of data to a much
more interconnected model, which allows data to be shared and manipulated throughout the online
Imagine that you are the owner of a database full of restaurant addresses. You can display them in a
list, sort them, filter them, and allow users to search through them; however, you cannot show your
users where they are located on a map because you don’t have any maps stored, and even if you did,
you don’t have the skills, time, or desire to create the logic that takes an address and pinpoints its
exact location on a map.
Now say there’s a second company that owns a wealth of mapping data that can be searched by
address. Separately, you have two moderately useful websites; a user can search one, but in order to
make sense of the data they find, they have to visit the second website.
Obviously, this is not the best experience from the user’s perspective, because they need to visit two
websites in order to find the information they need. When information is arranged in isolated silos,
the user experience usually suffers.
If you examine the same scenario but with open data sources, you will see new possibilities for innovation.
For instance, if the owner of the address data had access to mapping functionality, then they
would be able to provide customers with customized maps for each address in the database.
The user would benefit because the information they are looking for is more readily available, without
requiring visits to multiple websites. The benefits can work both ways, though; the owner of the mapping
data might want to allow users to search for restaurants. A search term could be cross-referenced
with restaurant names from the first database, and if there are any matches, then they could be displayed
on the map.
And that is just the beginning.
Many developers have taken this much further, developing innovative new web applications by mixing
different sets of data and functionality to create mashups.


A brief history of the Web
Before you begin looking at examples of mashups and what they can offer, it often
helps to look back at the growth of the Web and the technological trends that have
been significant in its development.
The origins of the Internet as it is today can be found in the Cold War era, which was
a time when most people were more concerned about the threat of impending
nuclear annihilation than the possibility of watching the antics of a skateboarding
dog on YouTube.
This threat helped drive the development of interconnected computer networks and
a communications infrastructure. During October 1969, the first node of ARPANET,
an initiative by the U.S. Department of Defense and the grandfather of today’s
Internet, went online.
Over the next 20 years, networking efforts continued, with more mainframes and computers around
the world being connected under a single networking infrastructure and with TCP/IP networking acting
as a common communications protocol. At this time, the main users of these emergent computer
networks were mainly the government and academic institutions, and they benefited from the ability
to exchange data and transmit messages instantaneously.

One of the main drawbacks of this early “internet” was of course the technical barrier to entry—there
were no web pages or e-mail clients; there were simply terminals where users typed commands, which
demanded a certain level of technical savvy. This all changed in 1991, when researchers at CERN in
Switzerland unveiled the World Wide Web, an application based on Tim Berners-Lee’s work developing
the Hyptertext Transfer Protocol (HTTP) and the Hypertext Markup Language (HTML).
Nontechnical individuals could now browse through pages of information, with support for text formatting
and images. This first web browser contained many familiar features that are still present in
the browsers you use today, including browsing history and the Back and Forward buttons.
With the technical barrier to entry lifted, academia embraced the World Wide Web like never before.
Sharing research papers and laboratory data was now easier than ever, and communities were brought
together in ways never thought possible. Usenet, for example, brought together people from around
the world with common interests and allowed for free discussion.
Through the early 1990s, the software improved, and interest continued to spread beyond the technical
and academic communities. By 1996, the word Internet had become a household name, with businesses
looking at ways through which they could use this emerging technology as a new medium to
reach their customers.
Some companies simply created a basic home page that was a pointer to their offline operations.
Others provided services—from simple mechanisms to communicate with new and existing customers
to fully blown online shopping operations. And online advertising, in the form of basic banner ads,
started appearing on the Web.
In the late 1990s, a new breed of company started to take advantage of this growth in public awareness—
the start-up. Budding entrepreneurs were drawn to the Web because of the large amounts of
venture capital available. Suddenly the market was flooded by masses of online-only companies that
offered innovative products and services to customers worldwide. Within a few years, though, many
had gone bankrupt.
One of the main reasons the dot-com boom went bust was not a lack of innovation but a lack of a feasible
business model. Dot-com start-ups often operated on the “get big fast” principle, relying on
investment to fund this growth. If the money ran out, then a fledgling company would soon find itself
in trouble.