Welcome
-----------------------------------------------------------------
I want you to leave
-
with a nose for a good Internet service idea, in particular the power of
computer support for purposeful community
-
knowing what you need to know in order to realize an idea
-
unafraid of people spouting buzzwords and acronyms
-
how to build an online community that is sustainable
-
how to build an online community that is as good as it can be
-
understanding the dimensions of building an ecommerce system
-
ready to contribute to the future
-----------------------------------------------------------------
Publishing: the simplest Internet service
-----------------------------------------------------------------
The world would be a better place if people simply wrote down what
they know and stuck it on the Web. What are the challenges when building
this kind of simple site?
Killer use of technology: giving users a progress bar showing how much
of the important content on the site they've read so far and suggesting
something to read next.
-----------------------------------------------------------------
Usability for a straightforward publishing site
-----------------------------------------------------------------
-
screen space
-
speed (0.1 second for real-time interaction; 1 second for flow; 10
seconds and the user tries to read a magazine)
-
accessibility (see http://www.w3.org/WAI/)
More: see http://www.arsdigita.com/asj/nielsen/
-----------------------------------------------------------------
Navigation for a publishing site
-----------------------------------------------------------------
-
the home page should offer three or four features:
-
a navigation directory to the rest of the site
-
news
-
search
-
(if applicable) a quick form that target the most popular dynamic service
available on the site, e.g., on an airline site a quick fare/schedule finder
-
include a logo or site name in the upper left-hand corner of each
-
ensure that interior navigation answers the following questions:
-
Where am I? (logo upper left; site structure map or Yahoo-style navbar;
clear headline)
-
Where have I been? (don't break the Back button; Yahoo-style navbar; no
custom link colors)
-
Where can I go? (links in standard colors, no rollovers, no select boxes)
-
let the information be the interface
-
flat instead of sequential (fewer clicks)
More: pages 146 to 149 of Visual
Explanations: Images and Quantities, Evidence and Narrative (Tufte
1997; Graphics Press)
-----------------------------------------------------------------
Being user-centered is not enough
-----------------------------------------------------------------
The real power of the Internet for Web publishing is collecting
and redistributing multiple perspectives.
-----------------------------------------------------------------
Being a Web publisher might not be enough
-----------------------------------------------------------------
We have to also build services!
-----------------------------------------------------------------
How to build your dream Internet service
-----------------------------------------------------------------
-
decide what it will do -- what will a user be able to accomplish
-
figure out for whom the site will be the killer app -- better to
have 100% appeal to 1% of the people than 50% appeal to 100%
-
decide when to use Web, voice, and WAP
-
assemble the team
-
develop a publishing system that will let you divide responsibilities
-----------------------------------------------------------------
If it is so easy, why do most sites suck?
-----------------------------------------------------------------
Jakob Nielsen states that what users want are HOME RUN Web sites:
-
High Quality content
-
Often Updated
-
Minimal download time
-
Ease of use
-
Relevant to users' needs
-
Unique to the online medium
-
Net-centric corporate culture
-----------------------------------------------------------------
Step 3: interface
-----------------------------------------------------------------
In the old Web world, you had to think about:
Now you have to think about
-
when does it make sense to encourage users to visit via Web browsers (setting
preferences)
-
when is voice good? (when is VXML good enough and when do you need
something more natural like JUPITER?)
-
when you have the option of mixing voice and WAP decks (General Packet
Radio Service or "GPRS", currently being rolled out in Europe), how should
the system work?
More on GPRS: http://www.rysavy.com/Articles/GPRS2/gprs2.html;
on WAP: http://www.arsdigita.com/asj/wireless/;
on i-Mode: http://www.arsdigita.com/asj/imode/.
Drawing below is from http://www.voicexml.org/Review/features/Jan2001_what_is_voicexml.html.
-----------------------------------------------------------------
Step 4: Assemble the Team
-----------------------------------------------------------------
We're experts most on the tech stuff. Our best advice is to outsource power
and IP to AboveNet, outsource sysadmin and
dbadmin if you can find experts that you trust (good luck), and for the
tech team make sure that you have
-
at least one person who is a great engineer (MIT CS nerd)
-
at least one person who has a great feel for the end-user and the
overall site experience
-
at least one person who is organized and likes to communicate with
the publisher
(two or three of these may be combined into one physical body)
You can add a few more programmers to a project but if you've got these
three roles covered the extra people can be used as raw labor.
-----------------------------------------------------------------
Step 5: Publishing System
-----------------------------------------------------------------
WYSIWYG tools solve the wrong problem; FrontPage has made the average
site worse. You need a system to divide labor among
-
authors
-
editors
-
publishers
-
information designers
-
graphic designers
-
programmers
You also need version control and scheduling of content. Is it tough to
build? No. Our students do it in Problem
Set 3. ArsDigita distributes a reasonably complete content management
system with ACS. But it is tough to conceive the right workflow for any
given organization, which is why almost everyone ends up with partially
custom software, even those who spend $millions on packaged "solutions"
(only those who start with an open-source system are able to avoid rewriting
from scratch).
"As Internet technology advances, new things become suddenly
possible. Take content management. Just five years ago, it was almost impossible
to waste a million dollars building a Web site. But modern, twenty-first
century Internet technology means that any medium-sized organisation with
Web ambitions can now pour a seven-digit sum of money straight down the
hole almost instantly.
"And one of the easiest and most efficient ways to do this is to buy
the wrong Web content management system, or CMS."
-- David Walker (Australian tech journalist)
Forrester report on commercial content management systems estimates the
cost for "basic CMS" is $650,000 and concludes by predicting that "Owner
satisfaction will be short-lived".
Bottom line: if you start with an off-the-shelf CMS, make sure that
it is open-source so that you can adapt it as your required workflow changes.
-----------------------------------------------------------------
Software Engineering for Internet Applications
-----------------------------------------------------------------
-
develop a data model
-
specify the legal transactions
-
structure the site into directories of URLs that call each other
-
implement those individual URLs
The last step is the easiest but it is the only one where your choice of
tools matters. We'll talk about it a bit in the tools course but for now
concentrate on the important stuff: the first three steps.
Data model + page flow = everything important.
-----------------------------------------------------------------
Database Management Systems
-----------------------------------------------------------------
-
multiple users simultaneously updating
-
the ACID
test
-
declarative versus procedural
Relational databases dominate the market because of good concurrency performance
and isolation of important data from programmers' mistakes.
-----------------------------------------------------------------
Intro to SQL: The Mailing List
-----------------------------------------------------------------
create table mailing_list (
email varchar(100) not null primary key,
name varchar(100)
);
insert into mailing_list (name, email)
values ('Philip Greenspun','philg@mit.edu');
alter table mailing_list add (phone_number varchar(20));
insert into mailing_list (name, email)
values ('Michael O''Grady','ogrady@fastbuck.com');
select * from mailing_list;
EMAIL NAME PHONE_NUMBER
------------------------- ------------------------- ------------
philg@mit.edu Philip Greenspun
ogrady@fastbuck.com Michael O'Grady
-----------------------------------------------------------------
JOINs: The mailing list again.
-----------------------------------------------------------------
drop table mailing_list;
create table mailing_list (
email varchar(100) not null primary key,
name varchar(100)
);
create table phone_numbers (
email varchar(100) not null references mailing_list,
number_type varchar(15) check (number_type in ('work','home','cell','beeper')),
phone_number varchar(20) not null
);
SQL> insert into phone_numbers values ('ogrady@fastbuck.com','work','(800) 555-1212');
ORA-02291: integrity constraint (SCOTT.SYS_C001080) violated - parent key not found
insert into mailing_list (name, email)
values ('Philip Greenspun','philg@mit.edu');
insert into mailing_list (name, email)
values ('Michael O''Grady','ogrady@fastbuck.com');
insert into phone_numbers values ('ogrady@fastbuck.com','work','(800) 555-1212');
insert into phone_numbers values ('ogrady@fastbuck.com','home','(617) 495-6000');
insert into phone_numbers values ('philg@mit.edu','work','(617) 253-8574');
insert into phone_numbers values ('ogrady@fastbuck.com','beper','(617) 222-3456');
ORA-02290: check constraint (SCOTT.SYS_C001079) violated
SQL> select * from mailing_list, phone_numbers;
EMAIL NAME EMAIL TYPE NUMBER
---------------- ---------------- ---------------- ------ --------------
philg@mit.edu Philip Greenspun ogrady@fastbuck. work (800) 555-1212
ogrady@fastbuck. Michael O'Grady ogrady@fastbuck. work (800) 555-1212
philg@mit.edu Philip Greenspun ogrady@fastbuck. home (617) 495-6000
ogrady@fastbuck. Michael O'Grady ogrady@fastbuck. home (617) 495-6000
philg@mit.edu Philip Greenspun philg@mit.edu work (617) 253-8574
ogrady@fastbuck. Michael O'Grady philg@mit.edu work (617) 253-8574
6 rows selected.
-----------------------------------------------------------------
JOINs: Once more with constraints
-----------------------------------------------------------------
select *
from mailing_list, phone_numbers
where mailing_list.email = phone_numbers.email;
EMAIL NAME EMAIL TYPE NUMBER
---------------- ---------------- ---------------- ------ --------------
ogrady@fastbuck. Michael O'Grady ogrady@fastbuck. work (800) 555-1212
ogrady@fastbuck. Michael O'Grady ogrady@fastbuck. home (617) 495-6000
philg@mit.edu Philip Greenspun philg@mit.edu work (617) 253-8574
3 rows selected.
SQL> delete from phone_numbers;
3 rows deleted.
-- better: delete from phone_numbers where email = 'philg@mit.edu';
rollback;
SQL> update mailing_list set name = 'Phil-baby Greenspun' where email = 'philg@mit.edu';
1 row updated.
SQL> select * from mailing_list;
EMAIL NAME
-------------------- --------------------
philg@mit.edu Phil-baby Greenspun
ogrady@fastbuck.com Michael O'Grady
2 rows selected.
-----------------------------------------------------------------
Software Engineering for Nouvelle Internet Applications
-----------------------------------------------------------------
Which is more advanced, photo.net
or the Wealth Clock?
-
An object has state (storage) but won't let external programs directly
modify state variables; they can only be touched via advertised methods
(URLs) with associated arguments (form variables)
-
It is nice when data come back in machine-readable rather than human-readable
form (XML)
-
It is even nicer if data, e.g., arrays, are represented in an XML
format agreed up by lots of people (SOAP, see http://msdn.microsoft.com/soap/)
-
It is nicer still if objects are self-describing (WSDL, see http://msdn.microsoft.com/xml/general/wsdl.asp)
-
You can reach distributed computing nirvana if you have a way to
discover resources and services (see UDDI
for example)
-----------------------------------------------------------------
Brave New World: J2EE
-----------------------------------------------------------------
What does Java 2 Enterprise Edition (J2EE) do that a standard Web programming
environment does not do?
-
EJB + container-managed persistence + WebLogic = programmers don't write
SQL anymore
-
$1000 Pentium can do 200 million updates per second of an object's
instance variable
-
$100,000 RDBMS server can do 200 updates per second
result: application runs 1 million times slower than expected
How much better is spending $millions on J2EE than just using the stuff
that comes bundled with Windows NT/2000? Check jobpost.deere.com
(one of Sun's advertised success stories) versus www.netflix.com)
Check out http://www.jargonfreeweb.com/
and http://fury.com/aoliza/.
How much better is spending $millions on J2EE than just using whatever
free open-source stuff comes with a RedHat Linux CD-ROM? Compare www.delta.com
to www.slashdot.org or http://www.lpi.usra.edu/research/lunar_orbiter/.
More: http://www.arsdigita.com/asj/j2ee/
and http://www.arsdigita.com/asj/enhydra/.
Using J2EE without selling your soul to a vendor: JOnAS
and JBOSS.
-----------------------------------------------------------------
Braver Newer World I: Microsoft .NET
-----------------------------------------------------------------
What are the good things about Java compared to really primitive languages
such as C?
-
automatic storage allocation and garbage collection (no memory leaks)
-
secure execution environment for mobile code
-
(Enterprise) Java Beans supposedly permit plugging together lots
of unrelated software components
-
better support for modularity and abstraction
Microsoft .NET gives you these things with any computer language.
Plus you can create subclasses across languages. For example, a component
developer can build a class in C#. A service developer can create a subclass
in Visual Basic that inherits from the C# superclass.
Plus "custom attributes" on methods, combined with comprehensive security
architecture: "Nobody can call this otherwise public method unless it is
code signed by me"; "Nobody can call this method unless it is code with
write permission to /foo/bar.txt".
Plus metadata for each software component loaded:
-
Description of deployment unit (assembly)
-
Identity: name, version, culture[, public key]
-
What types are exported
-
What other assemblies it depends on
-
Security permissions needed to run
-
Description of types
-
Name, visibility, base class, interfaces implemented
-
Members (methods, fields, properties, events, nested types)
-
Custom attributes
-
User-defined
-
Compiler-defined
-
Framework-defined
(Plus a a new computer language to piss off Sun: C# (it is a bit better
than Java; no int/Int distinction.))
Using the .NET system without being tied to Microsoft: http://msdn.microsoft.com/net/ECMA/.
-----------------------------------------------------------------
Braver Newer World II: Do computer languages matter?
-----------------------------------------------------------------
-
We're in Year 7 of the Java revolution... aren't computers working great?
(Java does not create opportunities for new programs or programmers)
-
Visicalc and its successors (Lotus 1-2-3, Excel)
-
Scripting languages enabled the Web explosion
-
Contracts may give us more reliable code (see Eiffel; www.eiffel.com;
invariants, preconditions, and postconditions)
-
ML-style reasoning about types may well become dominant (http://cm.bell-labs.com/cm/cs/what/smlnj/;
don't need all the String declarations; procedures are first-class)
-----------------------------------------------------------------
Ecommerce: Would you go into a store where nobody else shops?
-----------------------------------------------------------------
-----------------------------------------------------------------
Ecommerce: keeping track of what the customer already has
-----------------------------------------------------------------
Consider ikhakis.com:
-
remembers what customer already owns
-
computes lifetime value of customer to Levi Strauss
-
real-time interface with factory IT (10 minutes from order to cutting
in factory)
-
real-time billing of credit cards via CyberCash
-
10 weeks from handshake to launch
Hardest part? Coordinating the purposeful community of customer
service folks with a system that integrated phone/email/fax/web interactions
into a single database table.
Another example: toyota.arsdigita.com.
-----------------------------------------------------------------
Collaborative Commerce (GE)
-----------------------------------------------------------------
Consider GE Medical Systems:
-
sells big diagnostic equipment (eg., CAT scanners, MRI's)
-
sells remote diagnostic service
-
aggregates diagnostic information into benchmarking service
-
and offers associated consulting services to improve performance
by laggards
(Note which division GE's new CEO comes from.)
-----------------------------------------------------------------
Collaborative Commerce (Cyrano)
-----------------------------------------------------------------
Cyrano Sciences:
-
makes an artificial nose (the Cyranose
320, see Wired, December 1999)
-
one application: process control sensor in petrochemical plants
-
complementary killer web app: collaborative filtering
-
"your plant has begun to smell like five others that blew up shortly after
producing such a heady bouquet. Perhaps you should:
-
open a window
-
notify PR to expect complaints from the server at scorecard.org"
-
cross-institution instrument calibration
-----------------------------------------------------------------
Planning a Collaborative Commerce Service
-----------------------------------------------------------------
Key questions:
-
"What does each user have/ what could each user do that other users would
find useful?"
-
(could be a thing, an action, information, or an idea)
-
"How valuable would this be?"
-
(useful for prioritizing)
-
"How would we structure the interaction required to produce it?"
-
(collaboration is more than a bboard -- remember the Binge-o-Matic!)
-----------------------------------------------------------------
Required elements for a successful public online community
-----------------------------------------------------------------
-----------------------------------------------------------------
What makes a good community?
-----------------------------------------------------------------
The sociologists (Amitai Etzioni at least) say that to have a community
you need
-
A web of affect-laden relationships among a group of individuals, relationships
that often crisscross and reinforce one another (rather than merely one-on-one
or chainlike individual relationships)
-
A measure of commitment to a set of shared values, norms, and meanings,
and a shared history and identity-in short, to a particular culture
-
Access -- people have to be able to get to each other
To have a good community you need
-
some bonds of affection rather than pure instrumentality (but not too many
bonds; look at Japan and women in the old days)
-
exclusion; you can't bond with everyone so you have to exclude some
-----------------------------------------------------------------
Online Community Shibboleths
-----------------------------------------------------------------
-
online is anonymous
-
online is inauthentic (13-year-old girl may be a 40-year-old guy
in disguise)
-
online is uncivil
-----------------------------------------------------------------
Face-to-Face versus Computer-Mediated Communities
-----------------------------------------------------------------
http://www.hfni.gsehd.gwu.edu/~ccps/E31.html
-
CMC have better access in some ways (anytime, anywhere, no risk of crime,
no need to travel); F2F better in that they arise serendipitously from
other activities, e.g., a class
-
F2F is automatically authenticated; with CMC one must work at it
(no screen names!) -- the more identified, authenticated, and accountable
people are, the better the opportunity for building a community out of
an aggregate
-
CMC is better at supporting broadcast communication that forms and
sustains shared bonds and values; F2F town meeting is better at getting
back an audience reaction
-
F2F supports "breakout and reassemble" more naturally
-
F2F communities have more delay built into dialog and therefore are
less subject to the rule of the mob; worth considering adding delay in
CMC systems
-----------------------------------------------------------------
Best of Both Worlds?
-----------------------------------------------------------------
The experts say that distance learning doesn't work... but meeting
F2F for awhile and then keeping up via distance learning does work. (See
"Distance
Learning @Harvard.edu" in the July/August 2000 issue of Harvard
Magazine)
-----------------------------------------------------------------
Making Sure that Users Can Find the Discussion
-----------------------------------------------------------------
-----------------------------------------------------------------
Rewarding Users for Participation
-----------------------------------------------------------------
-----------------------------------------------------------------
Breakout and Reassemble
-----------------------------------------------------------------
-
just use the /bboard system in ACS then have editors ensure that the important
contributions are archived
-
http://www.photo.net/shared/whos-online
... would you like to shout to them all?
-
what about a link to an instant messaging chatroom next to every
thread? AOL says that they handle 1 billion instant messages per day versus
150 million email messages
-----------------------------------------------------------------
The Future
-----------------------------------------------------------------
Heat death (maximum entropy), cold death (continuous expansion), or
"big crunch" (if we all keep eating). In the meantime...
-
Network applications and simple appliances: Hannibal the Cannibal does
not reinstall Windows
-
Personalization will be critical: think about uslaw.com
on a mobile phone
-
Shareable and portable sessions
-
Learn from people and information on the Internet while riding in
a car
-
IP connections to facilitate customer support
-
One personality for the things in your house even if you keep buying more
things
-
Hospital-grade medical monitors available at consumer prices. Are
you burnt out? Sleeping well? Breathing adequately? A $400 pulse oximeter
can tell you if you're having problems with altitude.
-
Strange side-effects of systems that were built in the late 20th
century (e.g., measuring ocean height by looking at reflected GPS carriers)
-----------------------------------------------------------------
Learning More
-----------------------------------------------------------------
-----------------------------------------------------------------