Archive for February, 2011

New Smashing eBooks: Professional Design, Web Typography, Lost Files

Advertisement in New Smashing eBooks: Professional Design, Web Typography, Lost Files
 in New Smashing eBooks: Professional Design, Web Typography, Lost Files  in New Smashing eBooks: Professional Design, Web Typography, Lost Files  in New Smashing eBooks: Professional Design, Web Typography, Lost Files

With the growing popularity of smartphones and tablet devices, our readers keep asking us for more convenient ways to read Smashing Magazine’s content online and offline. We are listening, and we’ve been making our content available as digital eBooks in our shop. The eBooks contain selections of articles that were published on Smashing Magazine in 2010 and 2011, as well as some exclusive articles. The previously published articles have, however, been revised, polished and carefully edited and prepared for the eBook versions (in PDF, ePUB and Mobipocket formats).

We are glad to present the three new eBooks that were released just recently.

Professional Web Design, Volume 2 (eBook #7)

This eBook is the second part of the best-selling eBook #1. It contains 20 articles that cover current Web design trends, responsive Web design, user experience design, HTML5, usability and prototyping. The eBook describes existing and upcoming trends and explains how Web design could evolve in the coming months and years. It also touches on what Web designers should be ready for to keep abreast of new challenges and opportunities.

Ebook-7-cover in New Smashing eBooks: Professional Design, Web Typography, Lost Files

Download the eBook:

Professional Web Design, Volume 2 is available in PDF, ePub and Mobipocket formats. It is, as always, DRM-free and costs just $9.90.

Getting The Hang Of Web Typography (eBook #6)

Getting the Hang of Web Typography is dedicated to Web workers who deal with typography in their daily lives but have no special training for this distinct craft. This eBook gives you the necessary background on macro- and microtypography, helping you to choose suitable fonts and use modern techniques such as Web font embedding. It’s a valuable book that will help you create rich, sophisticated websites with beautiful and elegant Web typography.

6-cover in New Smashing eBooks: Professional Design, Web Typography, Lost Files

Download the eBook:

This eBook is available in PDF, ePub and Mobipocket formats. It is, as always, DRM-free and costs just $9.90.

Check Out Our Free eBook!

If you would prefer to try out an eBook first instead of buying a “pig in a poke,� please feel free to download our free eBook “The Lost Files.� Initially, the Smashing Book 2 was supposed to contain more chapters, but because most of our contributors delivered (much) more content than the book’s size could accommodate, we couldn’t include them all. So, we released four chapters as a free bonus eBook, called “The Lost Files.�

To download your free copy, just register an account in the Smashing Shop, and go to My Profile → My Downloadable Products. You don’t have to buy anything: registration is free and takes just few seconds.

Lost-files in New Smashing eBooks: Professional Design, Web Typography, Lost Files

New Bundle

You can also get the latest five books in the Smashing eBook series by buying them as a bundle. All books are available in PDF, ePUB and Mobipocket formats:

Why Would Anyone Buy An eBook?

Good question. While so much content is available online for free, eBooks tend to feel a bit more permanent, secure and reliable and are often much better optimized for reading than Web pages. eBooks are usually carefully edited, organized and prepared. Compared to printed books, eBooks present many advantages:

  • Immediately available
    You can purchase, download and start reading eBooks within minutes. You do not have to travel to a bookstore to buy them, nor do you have to wait days or weeks for them to arrive by mail.
  • Portable
    You can carry all of your books with you on a laptop, smartphone or eBook reader, without worrying about weight. Also, being so small in file size, they are much more convenient for reading offline and on smartphones.
  • Adaptable
    Modern eBook formats (ePUB, Mobipocket) are designed with reflowable text, which means that the presentation of content is optimized for the display it is being viewed on.
  • Searchable
    With built-in search functionality, you can easily search for keywords and even long passages of text.
  • Interactive
    Digital books are able to contain audio and video, which can complement or add to the message of the authors.
  • Adjustable font size
    Users of eBook readers can easily increase the font size of books and sometimes even change the font itself, which makes the format ideal for the elderly and people with disabilities. Also, with the emergence of high-resolution displays, digital text can appear very sharp and crisp on the screen, very much like ink on paper.
  • Bookmarks, highlighting and notes
    Advanced eBook readers automatically remember where you’ve stopped reading whenever you close a book. They also allow you to bookmark pages, highlight favorite passages and make notes.
  • Built-in dictionary
    Some eBook readers offer a built-in dictionary, which are especially helpful to non-native speakers.
  • Text-to-speech functionality
    The latest eBook readers have built-in text-to-speech functionality, which is particularly useful on small mobile devices. Rest your eyes after a long day in front of the computer.

All Smashing eBooks: Overview

Here is what we have to offer. All eBooks are available in PDF, ePUB and Mobipocket formats, and they are free of DRM.

Bundle-thumbnail in New Smashing eBooks: Professional Design, Web Typography, Lost FilesSmashing eBook Bundle — #3, 4, 5, 6 and 7$39.50
Lost-files-smalll in New Smashing eBooks: Professional Design, Web Typography, Lost FilesThe Lost Files, an extra free goodie for Smashing Book 2free!
Ebook-7 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #7: Professional Web Design, Volume 2$9.90 (new!)
Typography-small in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #6: Getting the Hang of Web Typography$9.90 (new!)
Ecommerce802 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #5: How to Create Selling E-Commerce Websites$9.90
Mobile-80x80 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #4: Mobile Design for iPhone and iPad$9.90
80x80-4photoshopforweb1 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #3: Mastering Photoshop for Web Design$9.90
80x80-3freelancing1 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #2: Successful Freelancing for Web Designers$4.95 (reduced price)
80x80-1prowebdesign1 in New Smashing eBooks: Professional Design, Web Typography, Lost FileseBook #1: Professional Web Design$4.95 (reduced price)

Thank you, guys. We sincerely appreciate your feedback and support.

(sl), (vf), (al)


© Smashing Editorial for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us
Post tags: ,


HTML5 Tutorials and Techniques That Will Keep You Busy

Advertisement in HTML5 Tutorials and Techniques That Will Keep You Busy
 in HTML5 Tutorials and Techniques That Will Keep You Busy  in HTML5 Tutorials and Techniques That Will Keep You Busy  in HTML5 Tutorials and Techniques That Will Keep You Busy

Ever since the latest revision of HTML has launched, internet marketers have switched to HTML5 due to its several new features which facilitate Web development distinctly. It has opened new doors to designers and developers and as you may have already noticed, the use of Flash in Web and internet applications has significantly dropped. In today’s post, we’ve gathered some very useful tutorials that will help you achieve a good command of HTML5. Please feel free to share with us other useful tutorials that have kept you busy!

HTML5 Tutorials and Techniques

Designing a Blog With HTML5
HTML 5′s feature set involves JavaScript APIs that make it easier to develop interactive web pages; let’s look at how to mark up a blog:

Html5tutorials71 in HTML5 Tutorials and Techniques That Will Keep You Busy

Code a Vibrant Professional Web Design with HTML5/CSS3
In this Web design tutorial, we will convert the vibrant and professional design with the help of HTML5 and CSS3:

002 in HTML5 Tutorials and Techniques That Will Keep You Busy

Implementing HTML5 Drag and Drop
One of the new features in HTML5 is native drag and drop. In this tutorial and screencast, we’ll look at how to implement native drag and drop to build a simple shopping cart interface:

003 in HTML5 Tutorials and Techniques That Will Keep You Busy

How to Build Cross-Browser HTML5 Form
In this tutorial, we’re going to take a look at how to serve HTML5 forms to modern browsers, while compensating for older browsers by using a mix of Webforms2, Modernizr, jQuery UI and assorted jQuery Plugins:

001 in HTML5 Tutorials and Techniques That Will Keep You Busy

HTML5 Apps: What, Why, and How
There are some things you should know about HTML5. In this tutorial, you will learn some very important basics:

Html5tutorials5 in HTML5 Tutorials and Techniques That Will Keep You Busy

Coding A HTML 5 Layout From Scratch
In this article you will learn, how you can use refined degradation techniques and technologies to put things in place for legacy browsers:

0141 in HTML5 Tutorials and Techniques That Will Keep You Busy

Simple Website Layout Tutorial Using HTML 5 and CSS 3
The Most prominent additions in HTML 5 are tags like header, footer, aside, nav, audio etc. Read here to find out more:

006 in HTML5 Tutorials and Techniques That Will Keep You Busy

One Page Website Template
In this tutorial we are going to make a HTML5 web template, using some of the new features brought to you by CSS3 and jQuery, with the scrollTo plug-in:

007 in HTML5 Tutorials and Techniques That Will Keep You Busy

HTML5 and CSS3 Without Guilt
Not every HTML5 or CSS3 feature has widespread browser support, naturally. To compensate for this, enterprising developers have created a number of tools to let you use these technologies today, without leaving behind users who still live in the stone age:

005 in HTML5 Tutorials and Techniques That Will Keep You Busy

Hybrid Column Layout
Have you done a website with fixed columns? What about one with liquid columns? Read on to find out how:

008 in HTML5 Tutorials and Techniques That Will Keep You Busy

Building Webpages with HTML5
To help make some sense of what’s new in HTML 5 in this article, we’re going to dive right in and start using some of the new structural elements:

Html5tutorials11 in HTML5 Tutorials and Techniques That Will Keep You Busy

Design & Code a Cool iPhone App Website in HTML5
In this tutorial we’ll get a taste of what’s to come by building a cool iPhone app website using a HTML5 structure, and visual styling with some CSS3 effects:

Html5tutorials13 in HTML5 Tutorials and Techniques That Will Keep You Busy

How to Make an HTML5 iPhone App
Here you can learn how to create a native app that exists with many other apps with the help of HTML5, CSS and JavaScript:

Html5tutorials14 in HTML5 Tutorials and Techniques That Will Keep You Busy

Have a Field Day with HTML5 Forms
This is a perfect tutorial with advanced CSS techniques which will help you design beautiful HTML5:

0111 in HTML5 Tutorials and Techniques That Will Keep You Busy

Bouncing a Ball Around with HTML5 and JavaScript
This guide will explore the use of HTML5′s canvas element through a fun example by creating a bouncing blue ball:

Html5tutorials17 in HTML5 Tutorials and Techniques That Will Keep You Busy

HTML5 Canvas Element Guide
In this guide, we hope to get you started on understanding the canvas element and what kinds of things are required and expected in its associated code:

Html5tutorials18 in HTML5 Tutorials and Techniques That Will Keep You Busy

Create an Elegant Website With HTML5 And CSS3
In this article, Adit Gupta explains how we can approach a web design work and how a website project can be processed in a number of iterations following a main algorithm:

Html5tutorials12 in HTML5 Tutorials and Techniques That Will Keep You Busy

Blowing Up HTML5 Video
This tutorial is about a blowing up HTML5 video and mapping it into 3D space. Check it out:

Html5tutorials20 in HTML5 Tutorials and Techniques That Will Keep You Busy

Comprehensive Video Tutorial on HTML5
This is a video put up by a Google Employee called ‘Brad Neuberg’ to provide us with an educational introduction to HTML5. This is for the people who don’t find time to keep up with HTML5 developments by reading articles:

Html5tutorials21 in HTML5 Tutorials and Techniques That Will Keep You Busy

Creating an Ad in HTML5
HTML5 is an evolving standard competing with Flash for next generation web technologies. One of the prominent usage of Flash is animated and interactive advertisements. Read here to find out more:

Html5tutorials22 in HTML5 Tutorials and Techniques That Will Keep You Busy

Another HTML5 Tutorial from Brad Neuberg
Brad Neuberg explains why HTML5 matters – to consumers as well as developers! He also shares the practical implications of the changes that are coming along with HTML5 support in modern browsers:

Html5tutorials23 in HTML5 Tutorials and Techniques That Will Keep You Busy

Code a Backwards Compatible, One Page Portfolio with HTML5 and CSS3
HTML5 is the future of Web development but believe it or not you can start using it TODAY. It introduces meaningful tags for common elements such as navigations and footers which makes much more sense and are more natural:

Html5tutorials24 in HTML5 Tutorials and Techniques That Will Keep You Busy

Create Modern Websites Using HTML5 and CSS3
This tutorial serves as a hands-on introduction to HTML5 and CSS3. It provides information about the functionality and syntax for many of the new elements and APIs that HTML5 has to offer, as well as the new selectors, effects, and features that CSS3 brings to the table:

Html5tutorials25 in HTML5 Tutorials and Techniques That Will Keep You Busy

HTML 5 and CSS 3: The Techniques You’ll Soon Be Using
In this tutorial, we are going to learn how to build a blog page using next-generation techniques from HTML 5 and CSS 3:

Html5tutorials26 in HTML5 Tutorials and Techniques That Will Keep You Busy

How to Draw with HTML 5 Canvas
Among the set of goodies in the HTML 5 specification is Canvas, which is a way to programmatically draw using JavaScript. Read here to find out more:

Html5tutorials27 in HTML5 Tutorials and Techniques That Will Keep You Busy

The Video Element
The video element is brand new in HTML 5 and allows you to play a movie within your website! The data of this element is supposed to be video but it might also have audio or images associated with it:

Html5tutorials28 in HTML5 Tutorials and Techniques That Will Keep You Busy

Building a Live News Blogging System in PHP Spiced Up with HTML5, CSS3 and jQuery
In this tutorial we will be building a live news blogging system in PHP. Another tutorial worth checking out:

Html5tutorials29 in HTML5 Tutorials and Techniques That Will Keep You Busy

Combining Modern CSS3 and HTML5 Techniques
Just because some techniques don’t work in the decade of old browsers doesn’t mean that you shouldn’t be learning everything you can. Well said:

Html5tutorials32 in HTML5 Tutorials and Techniques That Will Keep You Busy

WebOS HTML5 Database Storage Tutorial
If you haven’t been able to find any tutorials on HTML5′s storage capability, you’re not alone. Here’s the first webOS / HTML5 database storage tutorial:

Html5tutorials31 in HTML5 Tutorials and Techniques That Will Keep You Busy

The Official Guide to HTML5 Boilerplate
In this screencast, Paul Irish meticulously reviews each page, and then further goes on to explain why and when you would use each snippet in your projects:

Html5tutorials4 in HTML5 Tutorials and Techniques That Will Keep You Busy

How to Create a Cute Popup Bar With HTML5, CSS3 and jQuery
Here we’ll be creating a bar that pops up at the top of a page, and stays above the content (similar to ‘hellobar’). This has only been tested in Chrome and Safari and may not work in other browsers:

Html5tutorials35 in HTML5 Tutorials and Techniques That Will Keep You Busy

An HTML5 Slideshow w/ Canvas & jQuery
All uses of canvas you’ve come so far are probably limited to games and other proof of concept demos. Here we’re going to create a progressively enhanced slideshow with a fancy transitioning effect, which is perfectly functional in older browsers as well:

Html5tutorials33 in HTML5 Tutorials and Techniques That Will Keep You Busy

Structural Tags in HTML5
The HTML5 specification has added quite a few interesting and useful tags for structuring your markup:

Html5tutorials19 in HTML5 Tutorials and Techniques That Will Keep You Busy

Designing Search Boxes with HTML5 and CSS3
The ‘Search’ box is one of the most important parts of any website. Here you can learn some practical techniques for designing search forms and a few tricks to make usable and good-looking search functionality:

Html5tutorials34 in HTML5 Tutorials and Techniques That Will Keep You Busy

Rethinking Forms in HTML5
More usable web applications with less code and less confusion can be created easily. Click here to find out how:

Html5tutorials30 in HTML5 Tutorials and Techniques That Will Keep You Busy

Useful Articles and Resources

  • HTML5: The Facts and The Myths
    Once upon a time, there was a lovely language called HTML, which was so simple that writing websites with it was very easy. So, everyone did, and the Web transformed from a linked collection of physics papers to what we know and love today.
  • The Only HTML5 Resources You Need for Getting Up to Speed
    What is HTML5, really? How will it change the jobs of web developers and web designers? Here are 15 web resources to help you on your quest.
  • 23 Essential HTML 5 Resources
    Everyone is excited about the possibilities of HTML 5, but there’s a lot to learn and absorb as well. With that in mind, Ryan Carson have compiled a list of articles to get you started!

(ik)


Using HTML5 To Transform WordPress’ TwentyTen Theme

Advertisement in Using HTML5 To Transform WordPress’ TwentyTen Theme
 in Using HTML5 To Transform WordPress’ TwentyTen Theme  in Using HTML5 To Transform WordPress’ TwentyTen Theme  in Using HTML5 To Transform WordPress’ TwentyTen Theme

Last year, WordPress launched arguably its biggest update ever: WordPress 3.0. Accompanying this release was the brand new default theme, TwentyTen, and the promise of a new default theme every year. Somewhat surprisingly, TwentyTen declares the HTML5 doctype but doesn’t take advantage of many of the new elements and attributes that HTML5 brings.

WordPress-HTML5 in Using HTML5 To Transform WordPress’ TwentyTen Theme

Now, HTML5 does many things, but you can’t just add <!doctype html> to the top of a document and get excited that you’re so 2011. Mark-up, as they say, is meaning, and HTML5 brings a whole bunch of meaning to our documents.

In a recent survey by Chris Coyier over at CSS-Tricks, almost two thirds of respondents said they would not use HTML5 in new projects. In a similar survey by Smashing Magazine the results were almost identical: only 37% of voters said they use HTML5. This is depressing reading. Perhaps developers and designers are scared off by cross-browser incompatibility and the chore of learning new mark-up. The truth is that with a pinch of JavaScript, HTML5 can be used safely today across all browsers, back to IE6.

WordPress seems to sympathize with the majority of CSS-Tricks’ readers. TwentyTen is a fine theme that already validates as HTML5; but in order to cater to users without JavaScript, it has to forgo a large chunk of HTML5 elements. The reason? Our old friend Internet Explorer doesn’t support most of them prior to version 9.

TwentyTenDefault in Using HTML5 To Transform WordPress’ TwentyTen Theme
The default TwentyTen WordPress Theme.

For example, you’ve probably already heard of the <section> and <article> tags, both of which are champing at the bit to be embedded in a WordPress template. But to use these HTML5 elements in IE8 (and its predecessors), you need JavaScript in order to create them in the DOM. If you don’t have JavaScript, then the elements can’t be styled with CSS. Turn off JavaScript and you turn off the styling for these elements; invariably, this will break the formatting of your page.

I assume that WordPress decided to exclude these problematic tags so that its default theme would be supported by all browsers — not just those with JavaScript turned on.

While I understand this decision, I also think it’s a mistake. Three core technologies make the Web work: HTML, CSS and JavaScript. All desktop browsers support them (to some degree), so if any one of them off is disabled the user will have to expect a degraded experience. JavaScript is now fundamental to the user experience and while we should support users who turn off JavaScript, or have it turned off for them and have no chance to turn it on again as they don’t have the right to do so, I question just how far we should support them.

Why Using JavaScript Makes Sense

Yahoo gives compelling evidence that less than 1.5% of its users turn off JavaScript. My own research into this, ably assisted by Greig Daines at eConversions, puts the figure below 0.5% (based on millions of visitors to a UK retail website).

Whilst it’s true that JavaScript should be separated from a site’s content, design and structure the reality is no longer black and white. I strongly believe that the benefits and opportunities HTML5 brings, together with related technologies such as CSS3 and media queries (both of which sometimes rely on JavaScript for cross-browser compatibility), is more than enough reason to use JavaScript to ‘force’ new elements to work in Internet Explorer. I am a passionate advocate for standards-based design that doesn’t rely on JavaScript; HTML5 is the one structural exception.

Yes, we should respect a user’s decision to deactivate JavaScript in their browser. However, I don’t believe that this is a good enough reason for not using modern technologies, which would provide the vast majority of users with a richer user experience. After all, in the TwentyTen example, if the theme had HTML5 tags in it, everything would look fine in modern browsers (latest versions of Safari, Firefox, Opera, Chrome and IE9), with or without JavaScript.

If the browser is IE6 – IE8, and JavaScript is turned off, then users would see the content but it will not be styled correctly. If the content would not be displayed at all, we’d have a completely different discussion. If you are still not convinced, I will briefly discuss another option for those who absolutely must support users with JavaScript turned off.

To make TwentyTen play fair with IE, I suggest Remy Sharp’s HTML5 shim or, if you want to sink your teeth into CSS3, Modernizr. Modernizr not only adds support for HTML5 elements in IE but also tells you which CSS3 properties are supported by the user’s browser by adding special classes to the <html> element.

Mordernizr in Using HTML5 To Transform WordPress’ TwentyTen Theme
Mordernizr.js

So, let’s assume you’ve rightly banished non-JavaScript users with a polite message in a <noscript> tag. We can now start tinkering under the hood of TwentyTen to bring some more HTML5 to WordPress.

Upgrading To HTML5

TwentyTen gets a number of things spot on. First of all, it declares the right doctype and includes the abbreviated meta charset tag. It also uses other semantic goodness like Microformats and great accessibility features like WAI-ARIA. But we can go further.

Important notes:

  • I am referencing the HTML generated at http://wp-themes.com/twentyten/, rather than the simple “Hello Worldâ€� clean installation of WordPress 3.
  • For this article, I’ll be editing the files directly in the /wp-content/themes/twentyten/ directory. I’ve provided all the updated HTML5 theme source files for you to download from TwentyTen Five.
  • Line numbers may change over time, so when I reference one, I’ll usually say “on or around line…â€� The version of WordPress at the time of writing is 3.0.4.

Articles

One of the more confusing parts of the HTML5 spec is the <section> and <article> tags. Which came first, the chicken or the egg? The easiest way to remember is to refer to the specification. The HTML5 spec may be dry at the best of times, but its explanation of articles will always point you in the right direction:

The article element represents a self-contained composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication.

If the piece of content in question can be, and most likely will be, syndicated by RSS, then there’s a good chance it’s an <article>. A blog post in WordPress fits the bill perfectly.

On the TwentyTen home page, we get the following HTML:

<div id="post-19">
…
</div>

Semantically this means very little. But with the simple addition of an article tag, we’re able to transform it into mark-up with meaning.

<article id="post-19">
…
</article>

Note that we retain the id to ensure that this <article> remains unique.

To make this change in the TwentyTen theme, open loop.php, which is in /wp-content/themes/twentyten/. On or around line 61, you should find the following code:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

We’ll need to change that <div> to an <article>, so that it reads:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

And then we close it again on or around line 97, so that…

</div><!-- #post-## -->

… becomes:

</article><!-- #post-## -->

There are also instances on lines 32, 101 and 124. Opening some of the other pages in the theme, for example single.php, and making the same change is worthwhile. Thus, line 22 in single.php would change from…

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

… to:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

And line 55 would change from…

</div><!-- #post-## -->

… to:

</article><!-- #post-## -->

So far, so good. These are simple changes, but they already serve to overhaul the semantics of the website.

Time and Date

According to the HTML5 spec:

The <time> element either represents a time on a 24-hour clock, or a precise date on the proleptic Gregorian calendar, optionally with a time and a time-zone offset.

This means we can give the date and time of an article’s publication more context with HTML5’s <time> tag. Look at the code that WordPress generates:

<a href="http://wp-themes.com/?p=19" title="4:33 am"
rel="bookmark"><span>October 17, 2008</span></a>

We can add meaning to our mark-up by transposing this to:

<a href="http://wp-themes.com/?p=19" title="4:33 am"
rel="bookmark"><time datetime="2008-10-17T04:33Z"
pubdate>October 17, 2008</time></a>

This time is now machine-readable, and the browser can now interact with the date in many ways should we so wish. I’ve also added the boolean attribute pubdate, which designates this as the date on which the article or content was published.

Time in the datetime attribute is optional, but because WordPress includes it when you post an article, we can too. Implementing this in TwentyTen requires us to dig a little deeper. In loop.php, the following function on or around line 65 calls for the date to be included:

<?php twentyten_posted_on(); ?>

To make our HTML5 changes, let’s head over to /wp-content/themes/twentyten/ and open functions.php. On or around line 441, you’ll see this:

function twentyten_posted_on() {
printf( __( '<span>Posted on</span> %2$s <span>by</span> %3$s', 'twentyten' ),
'meta-prep meta-prep-author',
sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span>%3$s</span></a>',
get_permalink(),
esc_attr( get_the_time() ),
get_the_date()
),

If you don’t know what that means, don’t worry. We’re focusing on the sprintf function, which basically takes a string and inserts the variables that are returned by the three functions listed: that is, get_permanlink(), get_the_time() and get_the_date() are inserted into %1$s, %2$s and %3$s, respectively.

We need to change how the date is formatted, so we’ll have to add a fourth function: get_the_date('c'). WordPress will then return the date in Coordinated Universal Time (UTC) format, which is exactly what the <time> element requires. Our finished code looks like this:

printf( __( 'Posted on %2$s by %3$s', 'twentyten' ),
'meta-prep meta-prep-author',
sprintf( '<a href="%1$s" rel="bookmark"><time datetime="%2$s"
pubdate>%3$s</time></a>',
get_permalink(),
get_the_date('c'),
get_the_date()
),

I’ve included get_the_date() twice because we need two different formats: one for the <time> element and one that’s displayed to the user. I’ve also removed title="[time published]" because that information is already included in the <time> element.

For more details on WordPress’ date and time functions, check out:

Figures

A figure—for our purposes at least—is a piece of media that you upload in WordPress to embed in a post. The most obvious example would be an image, but it could be a video, too, of course. WordPress 3 is helpful enough to add captions to images when you first import the images, but it doesn’t display those captions using the new HTML5 <figure> and <figcaption> tags.

The spec defines <figure> as follows:

The figure element represents a unit of content, optionally with a caption, that is self-contained, that is typically referenced as a single unit from the main flow of the document, and that can be moved away from the main flow of the document without affecting the document’s meaning.

And it defines <figcaption> like so:

The figcaption element represents a caption or legend for the rest of the contents of the figcaption element’s parent figure element, if any.

Currently an image with a caption is rendered like this:

<div class="wp-caption" style="width: 445px;"><img alt="Boat"
src="http://wpdotorg.files.wordpress.com/2008/11/boat.jpg"
title="Boat" width="435" height="288" />
<p class="wp-caption-text">Boat</p>
</div>

Boat in Using HTML5 To Transform WordPress’ TwentyTen Theme
A WordPress image with a caption.

Changing this HTML to include HTML5 elements requires us to first look at media.php in the /wp-includes/ directory, where this code is generated. On or around line 739, you’ll find:

return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">'
. do_shortcode( $content ) . '<p>' . $caption . '</p></div>';

To upgrade this to HTML5, we need to define a new function that outputs our <figure>-based HTML and assign this function to the same shortcode that calls img_caption_shortcode(). I’ve done this in /wp-content/themes/twentyten/functions.php by adding the following to the bottom of the file:

add_shortcode('wp_caption', 'twentyten_img_caption_shortcode');
add_shortcode('caption', 'twentyten_img_caption_shortcode');

function twentyten_img_caption_shortcode($attr, $content = null) {

extract(shortcode_atts(array(
'id'    => '',
'align'    => 'alignnone',
'width'    => '',
'caption' => ''
), $attr));

if ( 1 > (int) $width || empty($caption) )
return $content;

if ( $id ) $idtag = 'id="' . esc_attr($id) . '" ';

  return '<figure ' . $idtag . 'aria-describedby="figcaption_' . $id . '" style="width: ' . (10 + (int) $width) . 'px">'
  . do_shortcode( $content ) . '<figcaption id="figcaption_' . $id . '">' . $caption . '</figcaption></figure>';
}

First, we point the shortcodes for wp-caption and caption to our new function twentyten_img_caption_shortcode(). Then, we simply copy the original function from media.php, and change the last few lines to include our <figure> element. This now renders our boat.jpg example from above like so:

<figure id="attachment_64" style="width: 445px;">
<a href="http://localhost/wp-content/uploads/2010/07/boat.jpg">
<img title="boat" src="http://localhost/wp-content/uploads/2010/07/boat.jpg"
alt="Screenshot" width="435" height="288" aria-describedby="figcaption_attachment_64"></a>
<figcaption id="figcaption_attachment_64">Boat</figcaption>
</figure>

The Comments Form

One of the biggest improvements introduced in HTML5 is how form fields work and respond to user input. We can take advantage of these changes by using HTML5 form elements in the default WordPress comments form in three ways:

  1. We can set the text-input type to email and url for the relevant fields. This not only more accurately describes the input field, but also adds better keyboard functionality for the iPhone, for example.
  2. We can add the boolean attribute required to our required form fields. This goes beyond WAI-ARIA’s aria-required='true' because it invokes the browser’s own required behavior.
  3. We can add placeholder text to our form fields, a popular JavaScript method that is now handled in-browser. Placeholder text allows you to go into more detail about what information is required than a form label generally allows.

Before adding HTML, a typical comment input field might look like this:

<label for="email">Email</label> <span>*</span>
<input id="email" name="email" type="text" value=""
size="30" aria-required='true' />

After our HTML5 changes, it would look like this:

<label for="email">Email</label> <span>*</span>
<input id="email" name="email" type="email" value=""
size="30" aria-required='true'
placeholder="How can we reach you?" required />

To make these improvements in the code, we need to do two things. First, we need to change the HTML for the default fields (name, email address and website URL), and then we need to change it for the comment’s <textarea>. We can achieve both of these changes with additional filters and custom functions.

To change the HTML for the default form fields, we need to add the following filter to the bottom of functions.php:

add_filter('comment_form_default_fields', 'twentytenfive_comments');

And then we have to create our custom function twentytenfive_comments() to change how these fields are displayed. We can do so by creating an array containing our new form fields and then returning it to this filter. Here’s the function:

function twentytenfive_comments() {

$req = get_option('require_name_email');

$fields =  array(
'author' => '<p>' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) .
'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' placeholder = "What should we call you?"' . ( $req ? ' required' : '' ) . '/></p>',

'email'  => '<p><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) .
'<input id="email" name="email" type="email" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' placeholder="How can we reach you?"' . ( $req ? ' required' : '' ) . ' /></p>',

'url'    => '<p><label for="url">' . __( 'Website' ) . '</label>' .
'<input id="url" name="url" type="url" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" placeholder="Have you got a website?" /></p>'

);
return $fields;
}

You can see here that each element in the form has a name in the array(): author, email and url. We then type in our custom code, which contains the new HTML5 form attributes. We have added placeholder text to each of the elements and, where required, added the boolean required attribute (and we need to check if the admin has made these fields required using the get_option() function). We’ve also added the correct input type to the inputs for author, email address and website URL.

Finally, we need to add some HTML5 to the <textarea>, which is home to the user’s comments. We have to use another filter here, also in functions.php:

add_filter('comment_form_field_comment', 'twentytenfive_commentfield');

We follow this with another custom function:

function twentytenfive_commentfield() {

$commentArea = '<p><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true" required placeholder="What\'s on your mind?"    ></textarea></p>';

return $commentArea;

}

This is more or less the same as the default <textarea>, except with placeholder and required attributes.

You can control exactly which fields appear in your form with these two filters, so feel free to add more if you want to collect more information.

Although relatively simple, these changes to the comment form provide additional (and useful!) features to users with latest-generation browsers. Look in Opera, Chrome (which doesn’t yet support required) or Firefox 4 to see the results.

Header, Navigation and Footer

We finally get around to inserting the new <header>, <nav> and <footer> elements. Currently, the code in /wp-content/themes/twentyten/header.php looks more or less like this:

<div id="header">
<div id="masthead">
<div id="branding" role="banner">
…
</div><!-- #branding -->

<div id="access" role="navigation">
…
</div><!-- #access -->
</div><!-- #masthead -->
</div><!-- #header -->

It doesn’t take a genius to see that we can easily make this HTML5-ready by changing some of those divs to include <header> and <nav>.

<header id="header">
<section id="masthead" >
<div id="branding" role="banner">
…
</div><!-- #branding -->

<nav id="access" role="navigation">
…
</nav><!-- #access -->
</section><!-- #masthead -->
</header><!-- #header -->

You can see that we’ve left the WAI-ARIA role of navigation assigned to the nav element—simply to offer the broadest possible support to all browsers and screen readers.

I have replaced the #masthead div with a <section> because all of the elements in this area relate to one another and are likely to appear in a document outline. It seems you could delete this section altogether and just apply 30 pixels of padding-top to the header to maintain the layout. I’ve maintained the elements’ ids in case more than one of each are on the page—multiple headers, footers and navs (and more) are all welcome in HTML5.

While we’re editing the header, we can introduce the new <hgroup> element. This element enables us to include multiple headings in a section of our document, while they would be treated as just one heading in the document outline. Currently, the code on or around line 65 in header.php looks like this:

<?php $heading_tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; ?>
<<?php echo $heading_tag; ?> id="site-title">
<span>
<a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
</span>
</<?php echo $heading_tag; ?>>
<div id="site-description"><?php bloginfo( 'description' ); ?></div>

We can edit this to include the <hgroup> tag, and also change <div id="site-description"> to an <h2> element:

<hgroup>
<?php $heading_tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; ?>
<<?php echo $heading_tag; ?> id="site-title">
<span>
<a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
</span>
</<?php echo $heading_tag; ?>>
<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
</hgroup>

In /wp-content/themes/twentyten/footer.php, we have:

<div id="footer" role="contentinfo">
  <div id="colophon">
  …
  <div id="site-info">
    <a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
    <?php bloginfo( 'name' ); ?>
    </a>
  </div><!-- #site-info -->

  <div id="site-generator">
  …
  </div><!-- #site-generator -->

  </div><!-- #colophon -->
</div><!-- #footer -->

We can easily edit this to include a <footer> and another <section> element:

<footer role="contentinfo">
<section id="colophon">
…
<div id="site-info">
<a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
<?php bloginfo( 'name' ); ?>
</a>
</div><!-- #site-info -->

<div id="site-generator">
…
</div><!-- #site-generator -->

</section><!-- #colophon -->
</footer><!-- #footer -->

JavaScript and CSS

As mentioned, we should include an HTML5 shim or Modernizr.js to make sure that all of our new elements render correctly in Internet Explorer prior to version 9. I added the following line to header.php:

<script src="<?php bloginfo('stylesheet_directory'); ?>/js/Modernizr-1.6.min.js"></script>

A couple of things to note here. First, we no longer need type="text/javascript" because the browser will assume that a script is JavaScript unless it’s told different. Secondly, we have to use the WordPress bloginfo() function to point the source URL to our theme directory.

Although we are including Modernizr partly to make sure that IE can deal with the new HTML5 elements, I am serving it to all browsers because of the CSS3-checking functionality it provides.

In style.css, we need to make sure that our HTML5 elements have a display: block attribute, because some older browsers will treat them as inline elements. For our purposes, the following line at the top of the CSS file will do:

header, nav, section, article, aside, figure, footer { display: block; }

While we’re talking about CSS, remember that we can now remove type="text/css" from our <link> tags. The simplified code looks like this:

<link rel="stylesheet" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

That should be enough for now. Remember, though, that changing the structure of the page by replacing older HTML elements with new ones might require some additional CSS.

We should let the small minority of users know that we’ve stopped supporting browsers that have JavaScript turned off. A polite message just below the opening <body> tag in header.php should suffice:

<noscript><strong>JavaScript is required for this website to be displayed correctly. Please enable JavaScript before continuing...</strong></noscript>

Add some very basic styling in style.css to make this message unmissable.

/* A message for users with JavaScript turned off */
noscript strong {
display: block;
font-size: 18px;
line-height:1.5em;
padding: 5px 0;
background-color: #ccc;
color: #a00;
text-align: center; }

Still Not Convinced? A Cross-Browser Alternative

There is another option for those of you who absolutely must support users with JavaScript turned off, as suggested by Christian Heilmann. Simply wrap your HTML5 elements with divs which share the same ID name. For example:

<article id="post-123">
...
</article>

becomes

<div class="article">
<article id="post-123">
...
</article>
</div>

Then it’s just a case of adding .article to your article CSS definition. It might look like this:

.article,
article { display: block; background-color: #f7f7f7; }

It’s worth noting that this adds another layer of markup to your code which isn’t needed for most users. I’d only recommend it if non-JavaScript users are a significant proportion of your users and/or sales.

Final Thoughts

TwentyTen was a huge step forward for WordPress; and as a piece of HTML, it is a beacon of best practice. By including some simple JavaScript, we can now open up the theme to the world of HTML5—and the additional meaning and simpler semantic code that it offers.

While we’ve addressed a good number of new HTML5 elements in this article, it really is just a starting point and you can add many more yourself. For example, you could add headers and footers to individual posts, or you might like to add the new <aside> element. Let us know your ideas and how you get on with implementing them in the comments below!

Download TwentyTen With HTML5

To complement this article, I have created a new version of TwentyTen, with the HTML5 elements we have discussed. Download this theme from TwentyTen Five.

Twentyten-five in Using HTML5 To Transform WordPress’ TwentyTen Theme

Other Resources

You may be interested in the following articles and related resources:

(al) (vf) (ik)


© Richard Shepherd for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us
Post tags: ,


The Art of Saying “No”

Advertisement in The Art of Saying No
 in The Art of Saying No  in The Art of Saying No  in The Art of Saying No

For the most part, working in the design and development communities can often leave you feeling like somewhat of a ‘Yes’ person. That person who stands behind the client, nodding in agreement and understanding as the path to the project unfolds before you. For in this business, it pays to wear this agreeable hat. It helps the client begin to see us an ally in their mission, someone who they can work with to make their project see the proverbial light of day, not have to work around so to speak.

When they see us filling the role of the ‘Yes’ person, the client is often put at ease and they can feel less guarded around us. This tends to make it easier for them to communicate their ideas as they feel like we are less likely to challenge them on any of it. They can be free to explore their ideas in what feels like a safe atmosphere. However, there comes a time in our careers that we have to step outside of that role and tell the client ‘No’. Suddenly that client comfort zone is challenged, which means we have to proceed with care. It is not as simple as just saying ‘No’.

These situations can be a bit delicate, especially since we are usually in the more submissive role as the employed. Clients are not often used to being told ‘No’ about anything in this corporate culture of “the customer is always right” that has its hold in the business world today. Besides, just because we have had to switch gears over to the ‘No’ side does not mean that we are prepared for the working relationship to come to a close. Which if we are not tactful in the least, then that may be precisely where things go once we say ‘No’. Below is a look at some of the ways we can let a client down easy without risking current or future projects.

Just For Clarification…

We are not attempting to paint all or any clients with an unreasonable brush here. We are simply saying that there are times when hearing a ‘No’ can be a deal breaker, and if not handled correctly can leave a bad taste in the client’s mouth, which will return each time they speak your name. And that is just not good for business. We do not want to get a reputation for being disagreeable, but we also know that there are times when the client has to be told ‘No’ — whether they like it or not.

And let’s be honest, each of us can have a tendency to get defensive or somewhat hurt when we are told ‘No’, so why should we not expect for our clients to feel this same tinge of rejection and react to it occasionally. After all, we are all just people. And when we are paying for a service, we often do not expect those whom we are paying, to tell us ‘No’ when we ask for anything we deem within reason. Sometimes, our clients are in this same boat, and unless we tend to the situation cautiously, it can have a lingering effect.

Caffeinating-calculating-computerating in The Art of Saying No

There are many reasons for saying “No”. One of them is a job burnout. Image Credit

Considering the Client Type

Is this a new or existing client? Because the way you handle them will generally be different depending on which category of client they fall into. If this is a new client or potential client, then you are going to tend to maintain a more professional edge to your decline that might also tend towards the dishonest end of the spectrum. Whereas if you are dealing with an existing client where the relationship is much more established and comfortable, then you might have a more relaxed approach that tends towards the open and honest side of things.

For example, if you are taking time off to go to Comic Con and because of this you cannot take on any new work, you might avoid the full details of the situation as you decline taking the task from a potential or new client. Mainly out of fear of this effecting the way they view your dedication or professionalism, and in turn your company. However, if you are dealing with an existing client, being more personal, and in this case more honest, might feel like the more comfortable path to take. After all, they will already have an idea formed about you and your company that will likely not be impacted negatively by this decline.

So the client’s status, as it were, does come into play when you are determining the best way to tackle telling them ‘No’, it is often not just a black and white situation. Where they sit on the spectrum can steer the direction we need to go in when it comes to declining their wishes, and that consideration cannot be dismissed.

In Short:

  • Whether the client is a new client or an existing one can impact how you handle these situations.
  • New clients tend to require more of a professional approach, whereas with existing clients we can tend to be a little bit more laid back.
  • The more personal the reasons we have to say no, the more likely the white lie is the better option over the truth to maintain that professional edge.

Consider the Project Stage

Where exactly are you in the project when the situation arises? Because this can also heavily weigh in on how you handle telling the client ‘No’. If it is in the initial stages, meaning the client is just contacting you to ask you to come on board, that is quite a different situation than being in the middle of a project and having an instance crop up where you have to tell the client ‘No’. If things have not gotten started, then you can feel free to skirt around the truth and be as blase as you feel you need to. However, if you are in the middle of the project, then it is usually of utmost importance that you be completely up front and honest with the client as to why you cannot comply with what they have asked.

The easiest way to see the distinction here is by using an example where you feel that complying with the client’s request, would cross either a personal or professional line that you have decided that you would never cross. For instance, if a client approached you to do a sexually explicit site, and you or your company were opposed to doing so, you could easily turn them down and be as up front with why you declined or not. However, if you have already been hired and contracts are in place, when the client asks you to add some sort of sexually explicit elements to the project, then you have an obligation to honestly address why you feel you must decline.

So how far along the project has progressed can also set the tone for how to approach this oft times delicate situation, and govern exactly how honest you should be with them. Generally, the further along you have gone down the path with the client, the more they deserve to know the full reasoning behind your decisions to decline their offers or wishes.

In Short:

  • The stage that the project is in also plays a part on the how this situation gets handled.
  • If the project is just getting underway, then skirting around the truth or avoiding some details is usually not as big a deal.
  • If the project is already in progress and you have to tell the client no, then you should be as honest and up front as you comfortably can be.

Rules of the Refusal

Now beyond the considerations that we have to make in order to judge the situation correctly for determining our approach, we also have to remember that there are a few rules that we can adhere to so that our refusals to the client are perhaps more digestible, and overall easier to swallow. Below are a few of these proverbial pointers for making the rejection have less of a lasting negative impact on both you and the client.

Do Not Leave Them in the Lurch

The first tip, and one of the most important when it comes to telling a client ‘No’ without having to suffer any repercussions, is to always recommend another course of action for the client to take. Rather than simply giving them roadblocks, offer them solutions to help them find their way once more. If you are turning down work, then point them towards others in the field whom you trust to take care of their needs. Often this kindness will be remembered by the client in the future, not to mention by the other design/development team you directed them to as well.

If you are in the middle of a project and have to tell them that you won’t be able to comply with their demands, then provide them with alternatives that you can do to still get their project where they want and need it to go. Doing so might just be the sugar needed to help make this medicine go down, so to speak. To sell them on another direction you need to be able to make it look as attractive to them as the idea they proposed, so do not try to go at this blind. Take in what they have said, and let them know that you will get back to them on this once you have fully considered what it is they are asking for. This will give you the time you need to formulate workable alternatives to present to them.

Wherever you are in the project, try not to be just another problem that they have to get around by telling them ‘No’. Try to be the provider of solutions that they had not yet considered instead.

In Short:

  • When telling a client ‘No’, try to offer some other routes that they might take.
  • It is always better to offer detours rather than simply putting up roadblocks, this helpfulness will tend to be remembered.
  • Take in their request and do not get back to them immediately, this gives you time to formulate an alternative to provide them with.

Always Be Aware of Tone

Now this next tip might seem like a bit of a given, but we thought that we ought to bring it up anyway just to air on the side of caution. That is to always be aware of your tone of voice, or just the overall tone of the discussion. And more than just the tone, you want to fully consider how all of your words will come across and be received by the client. This is not always an easy task, but it is by far, one of the more necessary ones to tackle. There are many ways that tone can interpreted and words can be taken that spell trouble for your company, so getting to know the client is a big part of understanding how your words will go over.

This comes even more into play if all of your communication with the client is done visually via e-mails and messaging, not audibly or in person where tone is easier to discern. It is harder to get a handle on the nuances that could be read into your messages that you in no way intended. Given the circumstances, that you are essentially rejecting the client or their ideas, knowing the tone that gets attached to your dialogs is even more critical. You do not want the client walking away from the situation with the idea that you were disrespecting them, so that is the lingering feeling they have when they are asked about their experience with your company.

Read through, or go over in your head, the way that you plan to let the client down, so that you can try to assess any negative tones or hints to a lack of respect that could be gotten from somewhere in your words!

In Short:

  • The tone we use when telling the client ‘No’ might communicate more than we intend, so we need to be mindful of it.
  • When communication with the client is done online or via e-mail, then the tone that can be read into it needs to be considered as well.
  • Take the time to vet your comments or reread your messages to ensure that no negative connotations could be interpreted from them that could hurt your professionalism.

Rejection Reassurance

The next tip for tactfully telling the client ‘No’ might seem a bit placatory, and for all intents and purposes, it pretty much is, but that does not lessen its importance in this discussion in any way. This tip has to do with rejection reassurance. What we mean by that is that you want to be sure, especially if you wish to possibly work with this client in the future, that you reassure them that this bump in the road is not where you wish things to end. You want to impart to the client that this is simply a matter of bad timing or circumstances, and that perhaps in the future they should call on you again to see if things will be a better fit at that time.

Goodfit in The Art of Saying No
Make sure they know that even if you have to reject them now, that you might be a good fit for a future project. Image Credit

Now granted, rejection is rejection, and most of us whether we like to admit it or not, do not take it that great. We should expect the same from our clients. And if you are in the middle of a project and your telling them ‘No’ spells the end of your part of said project, you can expect even more potential fallout from this rejection. But as long as we let the client know honestly why we cannot comply, and that we would like to perhaps try to work with them again in the future on something else, then we have done all that we can to perhaps mend any sores we may have opened in the process.

Under these circumstances it is hard to judge how the rejection is going to impact future relations with that client, but if we go ahead and take the proverbial first step towards repairing this breach through this subtle reassurance then hopefully the rejection will not have a lasting reach.

In Short:

  • If you wish to work with the client again, then reassure them that you turning them down now is not the end of the road, or at least it is not where you wish things to end.
  • This is about softening the blow that most of us tend to feel whenever we get rejected.
  • We have to understand that no matter how we attempt to sugar coat things, telling the client no might have consequences that we will have to accept.

What Best Serves the Project

The next tip that we have is also one that seems placatory to the client, but it can prove useful for removing some of the edge that telling the client ‘No’ can come with. And that is to always convey to the client that your choices are reflective of what best serves their endgame. After all, that is what they are presumably seeking to begin with. So as long as you let them know that your decision to turn down their request or job is because it is in the best interest of the project, then they are less likely to negatively react to this rejection or non-compliance.

Now we said less likely because there are always wild cards, and some clients are not going to take too kindly to hearing ‘No’ regardless of how you dress it up. Especially if that ‘No’ interrupts their progress in any way. But when you are turning them down in the middle of a job, providing alternatives as we already suggested, and you are doing so because you feel that it would be better for the project to take a different approach, then the clients tend to be less resistant to hearing you out. Especially if you can provide them a better way to serve their project in the end, and not delay their deadline by causing them to have to bring in someone else and catch them up to speed, then they might be willing to trust in your expertise.

In Short:

  • When we have to tell the client ‘No’, by making our decisions based on what serves the project best it tends to be easier for the client to take.
  • This may not render the situation salvageable, but it tends to put the client in a more receptive mood for hearing you out.

Do Not Beat Around the Bush

Finally, the last bit of advice that we have to offer on telling a client ‘No’, is to do the professional thing and do not beat around the proverbial bush. If you are going to turn them down or reject an idea, do it directly and clearly. Do not waste their time or yours dancing around the topic trying to avoid the direct confrontation, assuming that they understood you to mean ‘No’. You are unnecessarily prolonging the situation to try and ease out of the discomfort, when really you are causing more distress all around by avoiding the issue.

In Short:

  • Do not dance around the issue when telling a client ‘No’.
  • Always be clear and make sure that everyone is on the same page, so there is no confusion.

Last Thought

That wraps up the discussion of the ideas on this side, but now, as always, we turn the dialogue over to you. Feel free to share your thoughts and ideas on ways to tell a client ‘No’ in the comment section below. What ways have you found that work the best? Which, if any, of the ways that we discussed have you used in the past, or do you plan to use in the future? What suggestions do you have for designers and developers who face this work issue?

Consider Some of Our Previous Posts

(ik)


Now on Twitter

I’ve been feeling like a dinosaur for not being active on Twitter. I did use it a bit way back in its early days, but realised that it doesn’t “fit� me. I find the chopped up messages with “hashtags�, shortened mystery meat URLs and SMS style language confusing, and I think Twitter conversations are very hard to make any sense out of.

Anyway, people have been asking me about Twitter for a long time, and some have suggested that if nothing else I can use it as a way to let people know when I have posted something new here. An RSS proxy, sort of. So that’s what I’ve started doing.

If you prefer getting updates via Twitter, start following @rogerjohansson. The RSS feed will still be available, of course.

Read full post

Posted in .



  •   
  • Copyright © 1996-2010 BlogmyQuery - BMQ. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress