Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 183

Deprecated: Assigning the return value of new by reference is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/lib/mtdb_base.php on line 36

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 258

Deprecated: Function ereg() is deprecated in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 258

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-random.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/archiveyear.zip/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/SimpleComments.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-cache.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/blackliststats.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/acronym.db/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/TinyTuring.pl.disabled/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/sql.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/technorati.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/validable.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/MTTemplate.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-linksmentioned.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/keyvalues.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/MTGrid.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/roundrobin.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/projecthoneypot.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-list.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/archiveyear.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/authors.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/SimpleComments.txt/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/ifempty.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/SimpleComments.pl.orig/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/CatEntries2.8.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-relatedentries.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/MTCloseComments.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/switch.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/acronym.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/regex.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/CheckLinks.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/beautifier.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/perlscript.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/macros.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/MTFastInclude.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/MTIncludePlus.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/category.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/plugins/mt-rssfeed.pl/php) is not within the allowed path(s): (/nfs:/tmp:/usr/local:/etc/apache2/gs-bin) in /nfs/c01/h16/mnt/4710/domains/joesapt.net/html/mt/php/mt.php on line 110
Joe's Apt.: AT&T: One Full Year with Web Standards

« Can't Fight the Seeker | Main | The New AT&T »

AT&T: One Full Year with Web Standards

In the fall of 2003, Vincent Murphy, Rebecca Taylor and I decided we were fed up with the usual web site yadda yadda. Taking matters into our own hands, we set our sights on bringing AT&T’s corporate site, www.att.com, into web standards-ville (kicking and screaming if necessary, we figured).

We purchased a few first class tickets, fastened our seat belts, and away we went. We navigated through thousands of pages, dovetailed our efforts with a brand new CMS, and worked to tame a new redesign that was decidedly not standards friendly out the gate.

Throughout our trip, pundits within (and without) advised we were making a big mistake:

  • “Web standards can’t be applied reliably on a large scale.” (It can with templates and a CMS.)
  • “We shouldn’t waste time on standards.” (We worked after hours.)
  • “Standards aren’t practical on a corporate site.” (It was practical enough for Cingular and Sprint.)
  • “It won’t save any money in the end.” (Last I checked, you have to spend money to make it.)
  • “XHTML Strict is too strict.” (Huh?)
  • “The risks and disadvantages are too many, the benefits too few.” (Enter at your own risk. <Audience shouts in response> “Take the risk!”)

“Web Standards are a fad.” (What?! Them’s fightin’ words.)

So how’d it all turn out? To paraphrase George Herbert and directly quote Neil Peart: “Doing well is the best revenge.”

Roll Call

Within one year, we had ourselves a serviceable CSS, XHTML, JavaScript blend. Not 100% across the board but we were getting there, slowly but surely, with little fanfare.

Today, about two years later, www.att.com is almost entirely composed of semantically appointed, minimalist XHTML. CSS? Check. DOM-a-gogo? Present. sIFR? Uh-huh. RSS? Yup.

(Atom and script.aculo.us? They’re on deck.)

Markup size, quality and consistency has improved by several orders of magnitude, with a night and day difference in many cases. A recent spot check of just over 3,000 pages revealed precious few validation errors, less than six on average. Out of that same 3,000, a respectable majority of almost 70% check in with zero errors. Arright! We’ll keep working to push that toward 100% too.

Meanwhile, content managers who must write markup vs. “pure content” have far less to write, so quick and painless edits are the norm, not the exception.

Design system changes are now triaged in one place (“Don’t Repeat Yourself”) and propagate site-wide in one swell foop.

Time previously spent firefighting is now split between educating content managers, listening to our design and content peers, making steady improvements … plus tackling projects that would not otherwise have seen the light of day. (While there are still the inevitable fires here and there, they don’t tend to concern web pages in the ultra-dramatic way they used to.)

Sharing the Love

Our CSS and JavaScript collections have since been organized into an “AT&T Standards Library” and offered to other “att.com” sites, complete with development guidelines and a helping hand.

A few sites have taken us up on the offer. They now enjoy regular design system updates without the headache of reworking their site each time. Others, meanwhile, have politely declined, with some even opting to redo their whole kit and kaboodle from scratch. Yee-owch!

To be fair, that was completely expected. Besides, we always wanted to lead by example. “Show don’t tell,” that’s what we’re all about.

Um, except for this here “tell” part I suppose. But I digress … there’s more:

Great Google-y Moogle-y!

Searching for standards? Step right up.

Today, with the launch of our upgraded Google Search Appliances, our site-wide “Powered By Google” search joins the XHTML-friendly camp!

While the new GSAs are chock full of wonderful new features and improvements, there has long since been tons-o-invalid markup baked into the out-of-the-box XSL template. This time around, I happened to read an open letter to Google by Mark Kawakami that, at last, got me motivated to tame that XSLT beast.

The first time I tried it (in March 2005) it was a flop and didn’t see the light of day. Oh well, not the first time that’s happened. The second time (June through August) I had far better results thanks in large part to Marc Liyanage’s TestXSLT, which allowed Vincent and I to play “what if” with reckless abandon.

I’d like to think I’m somewhat adept at XSLT by now, but this was no trivial mod. Navigating an XSLT of this size and scope is a lot like playing Operation, “the wacky doctor game.” We were breaking the XSLT warranty seal in a sense, and didn’t want to lose the ability to apply Google’s XSLT updates to our modified version. Thus, we couldn’t do a total rewrite. Yep. Funsville.

But it worked out. What I’m most pleased with is that, unlike our previous attempt, this revision gracefully coexists with, but is not dependent upon, our standards libraries. That makes it a no-brainer for us to share the XSLT with Google Support in return. Hopefully they can put this to good use in future Search Appliance revisions. (Perhaps elsewhere. Hmm!)

Are we done? Not quite. The revised markup could stand some refactoring and nip-and-tuck under the hood, for one thing. We made it work, so now we can focus on making it “right.”

One thing I’m actually bummed about is our inability to coerce those handy-dandy “cached” results pages into well-formedness as well. This is due to how the page markup “proper” is passed through the XSLT. (Google support has been notified, and we’re discussing our options on the support forum.)

That means, for now, cached pages are rendered much like they are on google.com: a <base href> and <table>-enclosed prologue is inserted at the very start of the page … before the DOCTYPE … which throws the browser into quirks mode … and then it’s all downhill from there.

We’ll keep at it though, because we’re stubborn that way.

More att.com Q&A

UPDATE: In still other news, please be advised that the inimitable James Archer and The Weekly Standards has posted our followup to the March 2005 feature about www.att.com and our web standards road trip. This time, we’re diving in to a variety of behind-the-scenes page snippet examples and illustrations, plus we’ll have a bit-o-Q&A. Enjoy.

We’ll Be Right Back

One final note. As you may (or may not?) be aware, there’s a li’l changing of the guard forthcoming.

What does this mean for the future of our web standards efforts to date? I can’t even begin to speculate but, of course, the recent news about an until-recently notable “corporate site with standardsexample is definitely on my mind.

No matter what happens, I’m incredibly pleased - and proud - to have helped www.att.com and others at AT&T evolve from a hodgepodge of largely nutritionless mid ’90s-era markup to their current leaner, healthier state.

What a difference two years has made! I wouldn’t trade it for anything less.

UPDATE: www.att.com has begun to officially change hands. Read all about it.

TrackBack

TrackBack URL for this entry:
http://www.joesapt.net/mt/mt-tb.cgi/36

Comments

» Web Standards and The New Professionalism from The Web Standards Project
With the aftermath of the Disney UK Store redesign fiasco still ringing in our collective ears, I am coming to believe that we're in a process of defining a new professionalism for Web developers and designers. ... [Read More]

Man, 1993? Other than that, good stuff. Keep it up!

Mark - Didn’t you know? Time travel is all the rage.

True, 1993 is obviously a tad off, and it even predates when I joined AT&T (and www.att.com), less than a year after it launched, in 1995.

Good eye Mark - LOL - and thanks!

» att.com celebrates a year with web standards from 456 Berea Street
Joe D'Andrea reflects back on the work he and his team did to bring AT&T's corporate site into web standards ... [Read More]

» Forward Progress from steve.ganz.blog
... The story at AT&T is in a lot of ways similar to that of McAfee and in other ways, different. Similar in the sense that it was a ground up effort by a small team who were willing to do the hard work necessary to get there. Different in that there w... [Read More]

Awesome!

We’re embarking, with trepidation, on our own XHTML and CSS road (with XHTML search results). It’s not easy, that’s for sure. Kudos to you and your colleagues.

PS: Your link to RSS points to Mike D’s sIFR page. (Oops. Fixed, thanks! - Joe)

Did you create your own CMS or did you buy one?

Sergio: While I’m very much the Ruby on Rails, MT and Wordpress fan (something to appreciate in all of them!), yes, ours was purchased.

Some have asked me why I called the article “One Full Year” and then ended it with “two years.” Ha-haaa!

Answer: I was attributing the “One Full Year” bit to www.att.com’s “officially” being standards friendly for one full year, from November 2004 through November 2005. While it’s true that we were using XHTML on www.att.com as early as April 2004, it was only for a handful of pages and didn’t hold as much weight in my book.

The AT&T article featured in The Weekly Standards tells all …

Congrats on all your hardwork. I am having to do the same things your are but on a much smaller scale thanks goodness.Having to edjucate people has also become the most time consuming which is why I was wondering if there are any books or videos out there that might ease the transition for other managers not familar with these tpyes of programs you would reccommend?

This makes me want to cry.

I used to work for AT&T. In fact, I started the group that the other two people you mention work for back when Jim S. was my boss. I got all excited when Mosaic 0.4 was released in 1993 and called Jim into my office to show him the future on my Sun workstation. Six months later, he called me and said “Desmond was telling me about this software called Mosaic. Have you heard of it?” Yeah, Jim, I showed it to you six months ago. I teased him for years about that.

At trivestiture, I was originally slated to go with AT&T, but Jim’s boss swooped down at the last minute and said, “The S&T company part of our organization needs someone with web experience. We’re taking Ralph.” Seemed like a good idea at the time….

I coded the external BL site for a number of years in the late 90s and early 2000s, and the site was valid HTML 4.0 with (fairly primitive in retrospect) CSS. We had our own design rather than the one used for the corporate site. The first time I saw the manual that set out the corporate site’s coding standards, I went into my boss’ office and ranted for almost an hour about what a disaster they would be, how they would be a nightmare to maintain and would break search and on and on.

I was FMPed in late 2001; my successors redesigned the BL site to follow the corporate standards, and the site’s code was no longer valid. I came back to the S&T company as a contractor in 2003 to work on the BL site and on the corporate site, both infested with nested tables. I’ve made some small amount of progress on moving sections of the corporate site to standards-based code. One big issue was that search engines didn’t like our site, so when our clients wanted a new design for certain central sub-pages, I told them that if they would let me re-create the design they handed me in valid HTML and CSS, that it would improve their search results. Six months later, the client came back to me and said “we show up number 2 in Google for such-and-such a search term. How did that happen, and what can we do to make it continue to happen?” So I made some progress in explaining the importance of standards-based code to one of the people who make the decisions. Sadly, the person who asked that question was FMPed recently. The company is currently redesigning the site from scratch. I have no confidence that whoever is doing the design will know anything about the importance of standards, and will wind up replicating the flaws that caused so much trouble the last time they implemented a new design. I suppose it doesn’t matter much, since once they turn the new site on, I’m out of a job.

It kills me to think that in an alternate universe, I could have been part of the team that did what you acccomplished. (And if I had, I probably would have been pushing for it years before, too….)

Anyway, good luck at the New AT&T. I hope there’s an appreciation within the new corporate structure for what you’ve accomplished.

Congratulations! You, Vincent and Rebecca are my heros. I guess I’ll see you at An Event Apart in Philly (http://www.aneventapart.com/)

“It kills me to think that in an alternate universe, I could have been part of the team that did what you acccomplished. (And if I had, I probably would have been pushing for it years before, too….)”

Trust me, we were pushing for it for years before, as well. Unfortunately, it was never seen as a priority (and still isn’t, actually). Still, we managed with each redesign to push things forward (though we did have a slight regression now and again).

The difficulty with www.att.com is that there are multiple people who were previously responsible for the content and design on individual parts of the site who weren’t really wanting to give up that control (and the lack of a central web authority at AT&T didn’t help). We could give code snippets/templates out, but everyone wanted to reinvent the code their own way (that still happens, as well).

Even this go around, we really had to fight all the way. This time all the pieces seemed to come together in a way that wasn’t possible in the past.

» AT&T: One Full Year with Web Standards from Ashley Bowers Blog
AT&T: One Full Year with Web Standards From Joe's blog In the fall of 2003, Vincent Murphy, Rebecca Taylor and I decided we were fed up with the usual web site yadda yadda. Taking matters into our own hands, we set our sights on bringing AT... [Read More]

Congratulations on you completing att’s awsome website. You and the team no doubt hands down did a great job and ATT should no doubt be pleased with the finsihed product. After reviewing the site myself I give it a nine and a half and had one quick question will you be doing SBC website next?

Very good to see a telecom corporate giant go the road less travelled and get into the standards game. The result is nice to see. Clean, light and more importantly simple.

Disable the css in with the web tool bar in Firefox and the result is what you expect to see. All semantic native tags which is goodies to the search engines. You can browse the site without any csss styles or images and everything still makes sense. Nice Job.

Content Heavy | Web Standards Design