Remember that in the book and magazine world every page designloads at the same speed, which means that page design is primarilya question of aesthetics. In the <strong>Internet</strong> world page design andapplication speed are inextricably linked, which makes page designan engineering problem.WordsAs a programmer, there are two kinds of words that you will beputting into the services that you build: instructions and errormessages.For instructions, you can choose active or passive voice and 1st,2nd, or 3rd person. Instructions should be 2nd person imperative.Leave out the pronouns, i.e., "Enter departure date" rather than"Enter your departure date"Oftentimes you can build a system such that error messages areunnecessary. The best user interfaces are those where the user can'tmake a mistake. For example, suppose that an application needs toprompt <strong>for</strong> a date. One could do this with a blank text entry box andno hint, expecting the user to type MM/DD/YYYY, e.g., 09/28/1963<strong>for</strong> September 28, 1963. If the user's input did not match this patternor the date did not exist, e.g., 02/30/2002, the application returns apage explaining the requirements. A minor improvement would be toadd a note next to the box: "MM/DD/YYYY". If the application logsshowed that the number of error pages served was reduced but noteliminated, perhaps defaulting the text entry box to today's date inMM/DD/YYYY <strong>for</strong>mat would be better. Surf over to your favoritetravel site, however, and you'll probably find that they've chosen"none of the above". Users are asked to pick a date from aJavaScript calendar widget or pull down month and day from HTMLmenus.noise and type it in. This would prevent a robot from establishing 100fake accounts.No matter how carefully and intelligently programmed a public onlinecommunity is to begin with it will eventually fall prey to a new clever<strong>for</strong>m of spam. Planning otherwise is like being an American circa1950 when antibiotics, vaccines, and DDT were eliminating onedreaded disease after another. The optimistic new suburbanitesnever imagined that viruses would turn out to be smarter than humanbeings. Budget at least a few programmer days every six months towrite new admin pages or other protections against new ideas in theworld of spam.11.9 More• "Face-to-Face and Computer-Mediated Communities, aComparative Analysis" by Amitai Etzioni and Oren Etzioni,from The In<strong>for</strong>mation Society Vol. 15, No. 4, (October-December 1999), p. 241-248.• www.linuxvirtualserver.org; a very simple load balancerbased purely on packet rewriting11.10 Time and MotionThe hardware scaling exercises should take one half to one houreach. <strong>Student</strong>s not familiar with Ebay should plan to spend an extrahalf hour familiarizing themselves it. The human scaling exercisesmight take one to two hours. The time required <strong>for</strong> Phase I willdepend on its particulars.BadBetterDate:Date (MM/DD/YYYY):BestDate:January 01 2005Sadly, you won't be able to eliminate the need <strong>for</strong> all error messages.Thus you'll have to make a choice between terse or verbose and124225
long as it is much easier to remove spam than to post it thecommunity is relatively spam-proof. Note that Sarah would not havebeen able to deface the community if a policy of pre-approval <strong>for</strong>content contributed by newly registered users was established.Scenario 2: Ira Angrywicz, User #3571, has developed a grudgeagainst Herschel Mellowman, User #4189. In every discussion <strong>for</strong>umthread where Herschel has posted Ira has posted a personal attackon Herschel right underneath. The procedure followed to deal withSarah Moneylover is not appropriate here because Ira, prior togetting angry with Herschel, posted 600 useful discussion <strong>for</strong>umreplies that we would be loathe to delete. The right tool to deal withthis problem is an administration page showing all contentcontributed by User #3571 sorted by date. Underneath each contentitem's headline are the first 200 words of the body so that theadministrator can evaluate without clicking down whether or not themessage is anti-Herschel spam. Adjacent to each content item is acheckbox and at the bottom of all the content is a button marked"Disapprove all checked items." For every angry reply that Ira had totype the administrator had only to click the mouse once on acheckbox, perhaps a 100:1 ratio between spammer ef<strong>for</strong>t and adminef<strong>for</strong>t.Scenario 3: A professional programmer hired to boost a company'ssearch engine rank writes scripts to insert content all around the<strong>Internet</strong> with hyperlinks to his client's Web site. The programs aresophisticated enough to work through the new user registrationpages in your community, registering 100 new accounts each with aunique name and email address. The programmer has also set uprobots to respond to email address verification messages sent byyour software. Now you've got 100 new (fake) users each of whomhas posted two messages. If the programmer has been a bit sloppy itis conceivable that all of the user registrations and content wereposted from the same IP address in which case you could defendagainst this kind of attack by adding an originating_ip_addresscolumn to your content management tables and building an adminpage letting you view and potentially delete all content from aparticular IP address. Discovering this problem after the fact youmight deal with it by writing an admin page that would summarize thenew user registrations and contributions with a checkbox bulk-nukecapability to remove those users and all of their content. Aftercleaning out the spam you'd probably add a "verify that you're ahuman" step in the user registration process in which, <strong>for</strong> example, ahard-to-read word was obscured inside a patterned bitmap imageand the would-be registrant had to recognize the word amidst the224between lazy or energetic. A lazy system will respond "syntax error"to any user input that won't work. An energetic system will try toautocorrect the user's input or at least figure out what is likely to bewrong.Studies have shown that it is worthwhile to develop sophisticatederror handling pages, e.g., ones that correct the user's input andserve a confirmation page. At the very least it is worth running someregular expressions against the user's offending input to see if itsdefects fall into a common pattern that can be explained on an errorpage. It is best to avoid anthropomorphism--the computer shouldn'tsay "I didn't understand what you typed".ColorText is most readable when it is black against awhite or off-white background. It is best to avoidusing color as part of your interface with theexception of sticking with conventions such as"blue text = hyperlink; purple text = visitedhyperlink". If you limit your creativity to the browser will"The naturalworld is toogreen and badlylit."-- FrancoisBoucher, 18thcentury paintertreat your users kindly with familiar link colors. By this sparing use ofcolor in your interface you'll have most of the color spectrumavailable <strong>for</strong> presenting in<strong>for</strong>mation: charts, graphs, photos. Comparewww.britneyspears.com and http://britneyspears.ac/basics.htm, <strong>for</strong>example, to see these principles at work.Be a bit careful with medium gray tones at the very top of Webpages. Many Web browsers use various shades of gray <strong>for</strong> thebackgrounds of menu and button bars at the top of windows. If aWeb page has a solid gray area at the top, a user may have troubledistinguishing where the browser software ends and the page contentbegins. Notice that pages on Yahoo! and Amazon include a bit ofextra white space at the top to separate their page content from thebrowser location and menu bars.Whatever scheme you choose, keep it consistent site-wide. In 1876MIT agreed on cardinal and gray <strong>for</strong> school colors. See how theagreement is holding up by visiting www.mit.edu, click on"Administration" and then look at the subsites <strong>for</strong> four departments:IS, Medical, Arts, Disabilities Service.For an excellent discussion of the use of color, see MacintoshHuman Interface Guidelines, available online at125
- Page 1 and 2:
SoftwareEngineering forInternetAppl
- Page 3 and 4:
Signature: ________________________
- Page 5 and 6:
end-users. We use every opportunity
- Page 7 and 8:
• availability of magnet content
- Page 9 and 10:
• we want to see if a student is
- Page 11 and 12:
you supply English-language queries
- Page 13 and 14:
What to do during lecturesWe try to
- Page 15 and 16:
The one-term cram courseWhen teachi
- Page 17 and 18:
332• spend a term learning how to
- Page 19 and 20:
Once we've taught students how to b
- Page 21 and 22:
has permission to perform each task
- Page 23 and 24:
UDDIUnixcustomer's credit card. If
- Page 25 and 26:
thousands of concurrent users. This
- Page 27 and 28:
OraclePerlnamed XYZ" without the pr
- Page 29 and 30:
LDAPLinuxbits per color, a vastly s
- Page 31 and 32:
FilterFirewallFlat-fileGIF318functi
- Page 33 and 34:
when there is an educational dimens
- Page 35 and 36:
system. The authors of the core pro
- Page 37 and 38:
Sign-OffsTry to schedule comprehens
- Page 39 and 40:
scheduling goals that both you and
- Page 41 and 42:
Client Tenure In Job (new, mid-term
- Page 43 and 44:
ReferencesEngagement ManagementSQL*
- Page 45 and 46:
Decision-makers often bring senior
- Page 47 and 48:
presentation to a panel of outsider
- Page 49 and 50:
300always been written by programme
- Page 51 and 52:
17.3 Professionalism in the Softwar
- Page 53 and 54:
Try to make sure that your audience
- Page 55 and 56:
Chapter 17WriteupIf I am not for my
- Page 57 and 58:
Suppose that an RDBMS failure were
- Page 59 and 60:
analysis programs analyzing standar
- Page 61 and 62:
at 9 hours 11 minutes 59 seconds pa
- Page 63 and 64:
found" will result in an access log
- Page 65 and 66:
15.18 Time and MotionThe team shoul
- Page 67 and 68:
select 227, 891, 'algorithm', curre
- Page 69 and 70:
create table km_object_views (objec
- Page 71 and 72:
• object-create• object-display
- Page 73 and 74: The trees chapter of SQL for Web Ne
- Page 75 and 76: );274-- ordering within a form, low
- Page 77 and 78: and start the high-level document f
- Page 79 and 80: Example Ontology 2: FlyingWe want a
- Page 81 and 82: systems. What would a knowledge man
- Page 83 and 84: spreadsheet". Other users can comme
- Page 85 and 86: Chapter 15Metadata (and Automatic C
- Page 87 and 88: {site url}{site description}en-usCo
- Page 89 and 90: drawing on the intermodule API that
- Page 91 and 92: At this point you have something of
- Page 93 and 94: • description• URL for a photo
- Page 95 and 96: Here's a raw SOAP request/response
- Page 97 and 98: Chapter 14Distributed Computing wit
- Page 99 and 100: conduct programmer job interviews h
- Page 101 and 102: Most admin pages can be excluded fr
- Page 103 and 104: content that should distinguish one
- Page 105 and 106: Chapter 13Planning ReduxA lot has c
- Page 107 and 108: the Internet-specific problem of no
- Page 109 and 110: wouldn't see these dirty tricks unl
- Page 111 and 112: 12.8 Exercise 4: Big BrotherGeneral
- Page 113 and 114: than one call to contains in the sa
- Page 115 and 116: A third argument against the split
- Page 117 and 118: way 1 1/16One might argue that this
- Page 119 and 120: absquatulate 612bedizen 36, 9211cry
- Page 121 and 122: What if the user typed multiple wor
- Page 123: Chapter 12S E A R C HRecall from th
- Page 127 and 128: features that are helpful? What fea
- Page 129 and 130: made it in 1938)? Upon reflection,
- Page 131 and 132: environment, we identify users by t
- Page 133 and 134: those updates by no more than 1 min
- Page 135 and 136: Balancer and mod_backhand, a load b
- Page 137 and 138: translation had elapsed--the site w
- Page 139 and 140: It seems reasonable to expect that
- Page 141 and 142: 11.1.5 Transport-Layer EncryptionWh
- Page 143 and 144: such as ticket bookings would colla
- Page 145 and 146: give their site a unique look and f
- Page 147 and 148: It isn't challenging to throw hardw
- Page 149 and 150: Chapter 11Scaling GracefullyLet's l
- Page 151 and 152: 10.15 Beyond VoiceXML: Conversation
- Page 153 and 154: Consider that if you're authenticat
- Page 155 and 156: In this example, we:194• ask the
- Page 157 and 158: As in any XML document, every openi
- Page 159 and 160: (http://www.voicegenie.com). These
- Page 161 and 162: Chapter 10Voice (VoiceXML)questions
- Page 163 and 164: 9.15 MoreStandards information:•
- Page 165 and 166: 9.14 The FutureIn most countries th
- Page 167 and 168: 9.10 Exercise 7: Build a Pulse Page
- Page 169 and 170: 9.6 Keypad HyperlinksLet's look at
- Page 171 and 172: text/xml,application/xml,applicatio
- Page 173 and 174: Protocol (IP) routing, a standard H