Markup Map for hCard Microformat (Update)

Knowing what elements are available in the hCard microformat is important when trying to apply CSS rules. The main problem is that there are so many elements it’s easy to get tripped up on how to best style an hCard.

To help understand how many elements are in the hCard and keep the block-level and inline elements separate, I followed Andy Clarke’s 3D Zen Garden map model and made my own 3D map for the hCard microformat.

3D hCard Map

3D hCard

Update: After asking Tantek to review the hCard map, he made some suggestions for improving it. For more information, see the notes section.

Notes

Keep in mind that this example is simply a base. The 3D map uses the live example as its base, however an hCard can add more elements, like instant messenger handlers, or remove some that are currently shown in the demo. It depends on how much information you have to work with. For a clearer demonstration of this, I suggest tinkering with the useful hCard creator.

Also the live example is an hCard geared for an organization. Therefore the fn and org class attribute values are used on the same a element.

In the previous version, I used “web.site” as a fictional Web address. Tantek reminded me that example.com Web address was registered by the IANA for this very reason. I keep Ohio in the map since that’s my new home state.

I fixed a typo in the last version where I carried over the class attribute tel for the email address’s div wrapper.

In my previous example I was representing block level elements in two ways: as being on top of visual boxes as well as being placed inside them as well. While that made perfect sense at 2 a.m., I reworked the presentation of block level elements to be bold and try to focus the boxes on grouping and nesting of elements. 

Dynamic Markup Maps

Lastly, I created this example using CSS rules (instead of going with Illustrator). The rationale behind using XHTML+CSS over a graphics editor is that I am more familiar with those technologies. Also I thought it would be a great benefit for Web developers to see a markup map (which could be dynamically generated) while using a tool like hCard generator.

The first step was creating the CSS rules, but I don’t have the spare time to implement the rest of the project myself. Though, maybe someone else can?

CSS Cookbook Reader Contest

As I noted earlier, one of the hip things about being at Molly Holzschlag’s Train the Trainer was the free swag the attendees got. 

I snagged my fair share of the swag for helping out, but really can’t justify having some of the more choice elements of swag as either I don’t need it or I already had copy at the office. 

So, I decided to run a little swag giveaway contest for those readers that have picked up a copy of the CSS Cookbook.

Apologies to Dan Cederholm, but I’m going to copy his book contest he had a while back, but with give it a little twist. 

How to Enter

There are three easy steps to enter:

  1. Take a picture of you and your copy of CSS Cookbook and post it Flickr. Funny poses encouraged, but not required.
  2. Once the photograph is on the site, tag the photo with csscookbook.
  3. Then post a comment on this blog post with a link to your photograph.

How to Win

I’m going to generate a couple of random numbers and match them to the comment number for this blog post. (Note that comment numbers are generated automatically and sequentially.) If that matching blog comment has a link to flickr with a valid photograph of the CSS Cookbook, it wins.

Pictures need to be posted before 11:59pm ET by Thursday November 8th.

The Prizes

There are two prize packages, Software+Book Prize and a DVD Prize:

One Software+Book Prize winner will receive a copy of Microsoft Expression Web and a copy of Transcending CSS by Andy Clarke, edited and with a foreword by Molly, and an introduction by Dave Shea.

The DVD Prize winner will receive a copy of CSS for Designers that’s from Lynda.com which features Andy and Molly. 

I’ll be mailing out the prize packages so they can get out of the office ASAP. 

Sounds good? Best of luck!

CSS Attribute Selector Bug in Safari

During last weekend’s Train the Trainer workshop, Jinny from University of Georgia asked a question that gave Molly and I pause: 

Are attribute selectors case sensitive? 

As someone who strives to write correct markup and CSS rules, I always try to make my CSS class and ID attributes match case. At most, I worry about my ID or class selectors have a typo, but worry about attribute selectors? To be honest, it wasn’t till Internet Explorer 7 for Windows (IE7) came out that I’m giving attribute selectors a closer look. 

So, on the spot, I dove into writing up a quick test case and run it through the major browsers: IE7, Firefox 2, Safari, and Opera. The results were that all the major browsers are case senstivie except Safari. 

However, I wasn’t satsisified with that test case. To be honest, Molly wasn’t either. The first pass earned Molly’s dissastifcation as I didn’t test against XHTML first, but settled for HTML 4. (I quickly tested against XHTML, but the results were still the same: Safari allowed for case insensitivity.)

Now that I’m back home, I decided to write a tighter test case in XHTML and HTML and run it through a few more browsers than I tested at the workshop. These results can be viewed in Table 1.

Table 1. Case Sensitivity Review of CSS Attribute Selectors
Web Browsers DOCTYPE
  XHTML HTML 4
IE 7 Yes Yes
Safari 1.2 No No
Safari 1.3 No No
Safari 2.0 No No
Safari 3.0 (iPhone) No No
Firefox 1.5 Yes Yes
Firefox 2.0 Yes Yes
Opera 8.5 Yes Yes
Opera 9.21 Yes Yes
Camino 1.0 Yes Yes

Note that links within the table include screenshots of browsers and links to test cases.

Discussing Case Senstivity of Attribute Selectors

Once we find something odd, the first thing to do is to read the specifications to see what is the “right” behavior for the browser to follow.

First up, this is what the CSS 2.1 sepcification says about case sensitivity: 

All CSS style sheets are case-insensitive, except for parts that are not under the control of CSS. For example, the case-sensitivity of values of the HTML attributes “id” and “class”, of font names, and of URIs lies outside the scope of this specification. — CSS2.1, 4.1.3

And while we are at it, let’s take a look at the HTML specification as well, which states that the title attribute is also case sensitive. 

What Does This Mean? 

The short version of the results is that Safari is wrong and the other major browsers that support attribute selectors appear to be getting it right. (Yes, that includes IE7.)

Safari CSS Filter

How can you, the Web developer always looking for that edge in coding, use this bit of information? The obvious thing to do is to send CSS rules to only Safari browsers. 

For example, write a CSS rule like so:


p[title="foobar"] {
 border: 1px solid red;
}

And then set up the HTML like so, making sure to change the case of the title attribute’s value:


<p title="FoObAr">The content is styled with a 1-pixel,
 red border in Safari.</p>

Note

Thanks to Jinny for asking an intriguing question and to Porter for providing his usual excellent W3C specification translation services.

CSS Floats to Display Columns in Any Order


With my publisher’s permission, I’m sharing the following excerpt from my latest book, CSS Cookbook, Second Edition, which discusses a neat trick for designing multi-column layouts in any order.

Problem

You want to develop a system to display content in columns in any order.

Solution

Given the following markup:


<div id="container-outer">
<div id="container">
 <div id="content" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /END #content -->

 <div id="navigation" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /END #navigation -->

 <div id="related-info" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /END #related-info -->
</div><!-- /END #container -->
</div><!-- /END #container-outer -->

Apply the following CSS rules:


.column {
 float: left;
}

#content {
 margin-left: 20%;
 width: 60%;
}

#navigation {
 margin-left: -80%;
 width: 20%;
}

#related-info {
 width: 19%;
}

/* IEx patches */
* html .column {
 display: inline;
}

* html #navigation li {
 height: 1%;
}
/**/

This will yield the basic page layout that you see in Figure 9–18, with two narrow, flexible-width sidebars bounding an equally flexible center column (see Figure 9–18).

From this rather bland foundation, you can layer additional CSS on top of it. Adding the following code to your CSS will yield a design like Figure 9–19:


body {
 font: normal 62.5%/1.7 Verdana, Geneva, Helvetica, Arial, sans-serif;
 margin: 0;
 padding: 0;
}
#container:after {
 clear: both;
 content: ".";
 display: block;
 height: 0;
 visibility: hidden;
}
#container {
 display: inline-block;
}
/* Hide from MacIE5 */
#container {
 display: block;
}
/**/
#container-outer {
 background: url("bg-left.gif") repeat-y 20% 0;
}
#container {
 background: url("bg-right.gif") repeat-y 80% 0;
}
.column .wrap {
 padding: 20px;
}
#content .wrap {
 padding: 20px 30px;
}
#content p {
 margin-top: 0;
}
#content p:first-child {
 font: normal 1.4em/1.6 Georgia, Times, "Times New Roman", serif;
}
#content p:first-child:first-line {
 text-transform: uppercase;
}
#navigation ul, #navigation ul li {
 list-style: none;
 margin: 0;
 padding: 0;
}
#navigation ul li {
 margin-bottom: .4em;
}
#navigation li a {
 background: #36C;
 color: #FFF;
 border-left: 7px solid #09F;
 display: block;
 padding: .4em .4em .4em 20px;
 text-decoration: none;
}
#navigation li a:hover {
 border-left: none;
 border-right: 7px solid #09F;
 padding-left: 27px;
}
#related-info {
 color: #555;
 font-style: italic;
}
#copyright {
 border: 1px solid #B2B2B2;
 border-width: 1px 0;
 clear: both;
 padding: 10px 20px;
 text-align: center;
}
#copyright p {
 margin: 0;
} 

Discussion

The float model has a storied history. The authors of the CSS specification never intended floats to be used for page-level layout control: rather, they were a means to control the flow of content around an object, much as align="left" or align="right" would cause text to wrap around an img element. But despite the specification’s original spirit, floats do offer us a powerful and flexible alternative to traditional, table-based layout techniques.

Alex Robinson, a designer, published an influential article on creating the “Any Order Columns” in CSS. Robinson’s technique allows developers to create multicolumn layouts easily by using floats to display each column in any order, regardless of the order in which those blocks appear in the markup.

The Markup

To work with this technique, first you need to establish columns in your markup, like so:


<div id="container">
 <div id="content" class="column">
  [...]
 </div><!-- /END #content -->

 <div id="navigation" class="column">
  [...]
 </div><!-- /END #navigation -->

 <div id="related-info" class="column">
  [...]
 </div><!-- /END #related-info -->
</div><!-- /END #container -->

<div id="copyright">
 <p>Copyright notice goes here.</p>
</div>

Inside each div, place any markup you would like. Figure 9–20 shows what the unstyled document looks like, with a few paragraphs and an unordered list thrown in for good measure.

From this demonstration so far, a div element is set up for each of your three columns, and each is assigned an id that describes the kind of content that will be placed inside. In this solution, the values for id are content, navigation, and related-info. It would have been just as easy to use center, left, and right, but that wouldn’t have been especially forward-thinking: what happens when you change your site’s CSS file, and the new design requires the “left” div to appear on the righthand side of the page?

Defining the Columns

With this simple markup structure in place, you can apply a generic float rule to all three column divs:

    
.column {
 float: left;
}

As you see in Figure 9–21, the layout does not look drastically different. The copyright text is a bit out of alignment, but the bulk of your page appears as it did before with each column div stacking horizontally. Once dimensions are assigned to these blocks, however, things rapidly change.

First, start with the content block. To set the block to be 60% of the window width, and the width of the lefthand sidebar to be 20% of the screen, create the following rule:


#content {
 margin-left: 20%;
 width: 60%;
}

Figure 9–22 shows that the layout is looking a bit odd, but starting to take shape.

By setting a lefthand margin equal to the width of your lefthand sidebar, you’ve essentially “reserved” some space for it. The next step is to use negative margins to “pull” the navigation div across the content div to the lefthand side of the page:


#navigation {
 margin-left: -80%;
 width: 20%;
}

The margin-left value applied is a sum of the width of the center column (60%) and its lefthand margin (20%). This pulls the navigation column over to its proper place (see Figure 9–23).

Now, simply by setting a width on the related-info block, the three-column layout is complete, as shown in Figure 9–24:


#related-info {
 width: 20%;
} 

Looks excellent, although the copyright div is still a bit off. But with the clear property, that’s easily fixed (see Figure 9–25):


#copyright {
 clear: both;
}  

Although the layout may look as though your columns are nearly complete, Figure 9–26 shows you that Internet Explorer on Windows needs a little extra attention.

Thankfully, this is a documented IE bug known as the “Doubled Float-Margin Bug”: essentially, when a margin is applied to a floated box in the same direction as the float, that margin is doubled in size.

Since a lefthand margin is applied to a left-floated element, IE on Windows takes that 20% margin and doubles it to 40%.

Thankfully, the fix is a simple one. By applying display:inline to the problematic element, Internet Explorer behaves again. To do this, add the following lines to your CSS:


/* IEx patches */
* html .column {
 display: inline;
}
/**/

The oddly formatted comments and * html prefix ensure that this code is seen by IE on Windows, and IE on Windows alone. And as Figure 9–27 shows, IE is behaving properly.

So you’ve arrived at last: a flexible, three-column layout template. But where else can you take this?

Creating Whitespace

The space between the columns is called a gutter. To customize this layout by increasing the size of the gutters, an approach would be to apply some margins around the columns. There are a number of ways to achieve this effect, but first start by adding an additional div to each of your columns, like so:


<div id="container">
 <div id="content" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /end #content -->

 <div id="navigation" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /end #navigation -->

 <div id="related-info" class="column">
  <div class="wrap">
   [...]
  </div>
 </div><!-- /end #related-info -->
</div><!-- /end #container -->

With your “wrap” divs in place, apply padding to them with CSS to create more breathing room (see Figure 9–28):


.column .wrap {
 padding: 20px;
}

#content .wrap {
 padding: 20px 30px;
} 

Adjusting the Order of Columns

As you may have noticed by now, the “Any Order Columns” method is grounded in the intelligent use of margins: positive margins are used to reserve space, while negative margins are used to “pull” columns out of their natural position.

Now simplify the CSS for a moment, and remove all the column margins:


#content {
 width: 60%;
}
#navigation {
 width: 20%;
}
#related-info {
 width: 19%;
}

As a result, your layout now looks like Figure 9–29, with each column appearing in its natural position in the float order.

By adding a lefthand margin to your navigation div, and then by using a negative lefthand margin to move your related-info div, you can essentially reverse the order of the second two columns. With the following CSS, you’re left with a layout like Figure 9–30:

#content {
 width: 60%;
}
#navigation {
 margin-left: 20%;
 width: 20%;
}
#related-info {
 margin-left: -39%;
 width: 19%;
} 

And to complete the demonstration, place the content column on the righthand side of the page, as shown in Figure 9–31.

To do so, apply the following code:


#content {
 margin-left: 40%;
 width: 60%;
}
#navigation {
 margin-left: -100%;
 width: 20%;
}
#related-info {
 margin-left: -80%;
 width: 19%;
} 

As with the first layout, you’ve applied a margin to the content column in order to “reserve” some whitespace on the lefthand side of our page. Then, you’ve used negative lefthand margins to pull the navigation and “related information” divs into the proper location.

Page Layout Algorithm

A simple way to calculate rearranging columns is to follow a somewhat simple algorithm used to calculate the negative margins for a column:

  1. For the column you want to determine its negative margin, first calculate the rightmost point for all columns that precedes it in the source code.
  2. Then specify the leftmost point for the column.
  3. Finally, subtract the rightmost value from the leftmost to give the left margin for the element.

If this technique doesn’t work, there’s always good ol’ trial and error.

Faking Columns

Now return to your first layout (see Figure 9–32), and see how you can make your columns feel, well, a bit more polished. The first step? Background images.

Faux columns” is a technique developed by web designer Dan Cederholm that utilizes a horizontally repeating background image.

By using one tiled image, Cederholm’s method works incredibly well in a fixed-width design: however, the technique’s versatility means that it needs only slight modification to work in our fully flexible layout.

First, you need two images, one for each side of the content column. Figure 9–33 shows the lefthand graphic, while Figure 9–34 shows the right.

Next, you’ll need to wrap your container block in an extra div, like so:


<div id="container-outer">
 <div id="container">
  [Rest of template goes here]
 </div>
</div>

And finally, you’ll need to add the following rules to your style sheet:


#container:after {
 clear: both;
 content: ".";
 display: block;
 height: 0;
 visibility: hidden;
}
#container {
 display: inline-block;
}
/**/
#container {
 display: block;
}
/**/
/**//*/
#container {
 display: inline-block;
}
/**/
#container-outer {
 background: url("bg-left.gif") repeat-y 20% 0;
}
#container {
 background: url("bg-right.gif") repeat-y 80% 0;
}

With this code in place, the columns appear as full-length columns, like the ones in Figure 9–35.

From here, feel free to add any typographic styles you’d like; the ones supplied in the Solution section of this recipe will do nicely, and will yield the finished design shown in Figure 9–36.

An Alternative Solution

The float model for laying out pages is powerful, but floats can have a rather steep learning curve. As a result, many designers find absolute positioning to be an attractive alternative, enabling them to precisely position the different components of their design with x- and y-coordinates.

Unfortunately, positioned elements are taken “out of the document flow,” which effectively collapses their containing element. As a result, “positioned” designs lack the powerful float concept of clearing, which enables the different parts of your designs to be “context-aware”: that is, a footer div (such as the copyright block in the solution, earlier) can be cleared of the floated blocks above it, but not of any positioned elements on the page.

Shaun Inman, a talented web designer/developer, has written a lean JavaScript function to fix this problem. When inserted into your web pages, Inman’s script will automatically “clear” elements of any other positioned elements on the page (see Figure 9–37).

The only potential drawback to this method is that it does rely on JavaScript being active in the user’s browser. But if your content is accessible if you disable JavaScript in your target browsers during testing, then all should be well.

The Taylor McKnight Interview

I first met Taylor McKnight at a SXSW conference, which one I don’t recall. Probably 2004. Or maybe 2005. It seems like many years ago, especially in terms of Web years.

Back then Taylor was a Web Developer for the University of Florida’s Web division. The university’s Web site is so successful it hasn’t gone a major redesign in years and is still the template that other universities copy to this day.

Taylor has since left UF, but still lives in Gainesville, working on pushing forward Internet-enabled entertainment endeavors that we all wish the music and movie industries were undertaking on their own.

I’m happy he agreed to be the first one in my new on-going interview series of Web developers helping to move our industry forward.

Taylor McKnight header


Christopher Schmitt: For the record, what’s your name and what you do? 

Taylor McKnight and I play on websites for a living.

CS: How would you describe yourself? 

TM: 24 year old entrepreneur who likes to create things, travel and listen to music.

CS: What are you currently into right now musically?

TM: Brightblack Morning Light — really chill, Sunday lounging music. The Ghost Is Dancing — Indie pop/rock that can’t go wrong with horns. Mika — Crazy pop that was popular in the UK and recently made it’s way over here. Boy Eats Drum Machine — This guy’s voice is bizarre, but it grows on you.

CS: Where have you traveled?

TM: In the past six months I’ve been to New York City three times, Boston, Austin for SXSW, London, Barcelona, and San Francisco. Most of it was work and or conferences but when you like what you are doing so much, it’s not really work.

CS: With all the traveling, do you have any tips for dealing with traveling? 

TM: Packing wise, I got these Packing Cubes that make it easy to find stuff in my suitcase. I try to concentrate on staying hydrated so I feel good when I get there.

CS: Anywhere you like to go that you haven’t been?

TM: I’m thinking about living in Berlin for a month next summer with some friends who already did it a year ago and want to go back. I also want to see Japan.

CS: What was your first exposure to the internet and/or Web? 

TM: Prodigy. When I was like 10 at my step mom’s office. I barely remember it but it was slow… and awesome.

CS: In what way was it awesome?

TM: I remember being excited that it was this different level of interactivity. Video games were pre-programmed months ago, magazines were written weeks ago, but things you were reading and playing with—even on dial-up—were as close to instant as you could get.

CS: Do you remember what Web sites you used to visit regularly back in the day?

TM: Well, I didn’t use Prodigy for that long, but in the AOL 9600 baud days, it was pretty much chatrooms trying to talk to cute girls who were probably old men.

CS: Was Podbop your first Web application/mashup? What was the experience like in building it and the reaction from the online community?

TM: Yes, Podbop, was my first webapp. I built it with Daniel Westermann-Clark. I was a bit naive and really thought we were just building it for ourselves and a few friends. It was built in our spare time over a few months—most of which was building up our database with MP3 links. At the urge of the Eventful.com crew, we took it to Mashup Camp and ended up winning best mashup. People really enjoyed how insanely simple it was yet useful.

CS: How is podbop doing?

TM: Podbop is on the back-burner these days as I concentrate on Chime.TV and Hype Machine. It’s not growing, but has a steady user-base.

CS: I’ve recenty moved to Cincinnati and I noticed a lot of local bands here don’t have their MP3s listed with the site. Any tips on how I, as a fan or potential fan of some local bands, could get them hooked up on it? Other than emailing them?

TM: Well, anybody, can add them, so if you know of a band with an MP3 go for it. Otherwise, what has been most effective for me is letting labels know about it since they usually have a bunch of bands under them.

CS: Chime.TV is a departure from music and into video from your recent projects of Podbop and Hype Machine. Describe Chime.TV and how it was accomplished? 

TM: Chime.TV is a super video aggregator that is probably the closest thing you will find to TV online with the most content and nothing to install. We combine 10 of the top video sites from around the web into 20+ channels, if you don’t know what you want to watch, and global search, if you do know what you want. It was created by myself and Chirag Mehta and was done over six months in our spare time. It’s easily the most complex project I’ve ever been a part of and I’m very proud of what we’ve done.

CS: Did you win another mashup award for Chime.TV?

TM: Yes, Chime.TV won the Best Mashup Award at Mashup Camp IV this past July in San Francisco. It was my second time winning that award and was very exciting for both of us. Hanging around people and the environment in general at Mashup Camp is really enjoyable.

CS: There is really a lot going on at Chime.TV. Recently, I’ve been searching for Chime.tv videos and having them play sequentially without a lot of hopping around. 

TM: Good idea, I made a Flight of the Conchord channel.

CS: That’s fantastic. I didn’t even know you could do that or that one could be registered user of the site. Does Chime.TV support openID?

TM: Chime.TV doesn’t support openID.

CS: Any other features Chime.TV has that people who like YouTube would prefer over simply surfing youtube?

TM: So with your free user account you can create your own channels, bookmark favorites, and send video mail to friends which shows up when they login to Chime.TV. All the videos play non-stopwe even preload the next video) and are resizable. It’s also better than Youtube because we include videos from: blip.tv, Break.com, DailyMotion, Google Videos, GUBA, Kewego, MetaCafe, MySpace, Veoh.com, and YouTube.

CS: With sites like Chime.TV, Podbop.org and Hype Machine, you are leveraging social Internet trails and turning them into useful applications for people to in turn digest. Are you finding a lot of potential profit in this area? 

TM: I’ve been too focused on creating fun, useful apps to worry about profit too much. A.k.a, I have usually had a day-job that pays the bills. For Podbop and Hype Machine we make money off advertising, which has done pretty well.

CS: Were able to pay the bills right away with these two sites? How long did it take?

TM: For Podbop, our only cost is one $50 a month server, so we were able to cover that pretty easily. Hype Machine was around 2 years before I came aboard and was already making income when I joined.

CS: Could you describe Hype Machine and why someone would want to use the site?

TM: The Hype Machine follows music blog discussions. Everyday, hundreds of people around the world write about music they love and it all ends up here. You can find out what’s popular among music blogs this week, listen to the latest tracks being posted or even search for a specific band to hear more of them. It’s one of the best ways to explore and discover new music.

CS: What’s a typical work day for you? 

TM: Wake up at 8 or 9am, walk down the street with my laptop for a croissant and iced coffee while I check my email. Come back to my home office and work 6–8 hours on various projects like Hype Machine, Chime.TV, my blog, etc. Intersparsed with random errands and lunch. Call it a day usually around 4 or 5pm.

CS: What are typical work-related activities do usually do om a day or week?

TM: Currently I am spending my days working on the Hype Machine redesign. Chatting with Anthony over IM or Skype and implementing various design and code changes. For Chime.TV it’s a bit more marketing oriented. I look for new places to spread the word about our site and come up with new ways to promote it. I’m also currently obsessed with my Tumblelog so I post a lot.

CS: When your workload is heavy, how do you cope? 

TM: Make a physical list of what the steps I need to accomplish. Add copious amounts of
music and caffeine. Shut the door.

CS: How often does that happen in a given week or month?

TM: Probably 2–3 times a month.

CS: What software do you use on regular basis?

  • Synergy. I have a Dell and a 15″ Macbook Pro that share a 24″ monitor, keyboard and mouse using
    Synergy. It’s incredible.
  • Subethaedit is what I handcode XHTML and CSS in (it’s the only thing I use)
  • Transmit and CuteFTP are my FTP clients of choice.
  • Adium and Trillian are my all-in-one chat clients

Also, there is Photoshop, Winamp as all my music is on my Dell, IE7, Firefox, and Safari.

CS: What’s your greatest strength? 

TM: Creative brainstorming.

CS: Anything special you do in brainstorming?

TM: Nothing original. I surround myself with things that inspire me like posters, artwork, music and browse web design galleries like CSS Beauty and other Web sites like NotCot.org.

CS: What’s your greatest weakness? 

TM: Distracted too easily.

CS: Lots of people have that problem, but they haven’t been part of three Web properties like Chime.TV, Podbop, and Hype Machine. What keeps you focused to carry these projects out?

TM: They interest me personally. I love videos, go to concerts and like discovering music, so improving these sites benefit my life and that’s motivation.

CS: In your opinion, what parts of the Web need to be improved or fixed in order for the Web of today to evolve into the Web of the future?

TM: Overall, I’d say more aggregators like Chime.TV and Hype Machine to help filter out all the noise that inevitably comes with everything becoming cheaper/easier/common like making your own music or videos or blog, etc. Maybe even super aggregators for the aggregators.

Music on the Web needs to find a legal way to better cope/compete with things like bittorrent and album leaks. Things like pre-release album orders when music leaks and the ability to actually get everything in one place.

iPhone-specific Web Development Misguided

Today, I noticed that A List Apart ran another article on how to get Web sites up to speed on the Apple’s iPhone.

First, a few points. As a Web developer, I’ve relied and will continue to rely on the strength of ALA’s articles time and time again. Also, I’ve written for ALA twice before and, as always, would love to write from them again. And I’m a fan of Apple products as much as the next Web designer out there, but the exposure of the iPhone is a little too much.

Yes, surfing on an iPhone is a rewarding surfing experience than say, I don’t know, every other cell phone on the planet. I’ve even mentioned before that iPhone’s browsing capabilities will completely eliminate the need to provide a separate “mobile” Web site.

Rather than promoting the new hotness, though, we need to have more information about creating rich, yet salient surfing experiences for other devices besides the iPhone.

One of the main arguments I picked up from Joe Clark’s book, Building Accessible Websites, for the development of accessible Web sites is the desire to grab the largest audience possible.

Apple recently sold its first million iPhones. Yet, there are an estimated 37 million Americans with sensory and physical disability between the ages of 16 to 64.

If only ten percent of these 37 million people with disabilities surf the Web on an assistive technology, their numbers are 300% greater than every iPhone sold.

Looking at those numbers, focusing on iPhone Web site optimization seems like an imbalance in priorities. This is perceived overkill especially when you know the dirty little secret about optimizing a Web site for an iPhone: If a Web site is built on Web standards like XHTML+CSS, your Web site will be viewed on the iPhone without too much worry.

The point is that I believe that there are more important issues at hand for making sure our Web sites can be seen by an Internet-enabled device other than a Web browser rather than forcing every other electronic doodad to have a Web browser on it.

Don’t get me wrong. I don’t think you can over-sell the importance of Web standards, but reselling them is another thing altogether. If your Web site is geared to run on assistive technologies like screen readers, hand wands, eye tracking, voice recognition, or braille displays, the odds are that you’ve opened your site up to more of an audience than the iPhone crowd.

There’s no reason we can’t have both a great surfing experience on an iPhone as well as one on assistive technologies. I’m just asking for more balance.

Training the Trainer (T*t) in Tucson

Molly and Christopher

It’s not every day a well-known, highly regarded Web professional gives away their hard-earned knowledge and precious time for free. Nonetheless, that’s what my good friend, Molly E. Holzschlag, is doing in her Train the Trainer (T*t) workshop series.

For almost every weekend starting in mid-September and ending in October, Molly is hosting six educators for the free two-day workshop in Tucson, Arizona.

If you happen to get one of the 24 golden tickets to her workshop, you’re a lucky one as the workshop itinerary is impressive:

  • Day One
    • HTML & XHTML intensive. Principles, best practices, issues of concern
    • Lunch discussion: Open discussion of issues and concerns to group
    • CSS Theory Part I
  • Day Two
    • CSS Theory Part II, contemporary design considerations
    • Lunch discussion: Open discussion of issues and concerns to group
    • Standards workflow, SEO, basic Accessibility, intro to Microformats
    • Dinner and drinks at a local Sonoran Mexican restaurant including vegan & vegetarian as well as a wide range of other options

On the last T*t workshop that takes place October 27–28, I’m flattered to aid Molly in presenting my talk on IE7 and CSS, “Releasing CSS: How I Learned to Stop Worrying and Love IE7”.

Also, I’m looking forward to the lunch discussions where I hope I won’t make the participants poorer by giving them my two cents regarding any Web design or development questions or concerns they might have.

For more information, check out Molly’s post about Training the Trainer.

Hope to see you there!