Archive for August, 2011

The Future of Mobile Marketing with Smartphones


  

As the technology for mobile devices grows, so does the opportunity for development. Many companies are not creating their own apps, but instead utilizing HTML5, Javascript and CSS3 to aid in the creation of web apps and mobile websites. Reducing the initial investment, companies can get the most out of the money they are spending and release it to the public themselves on their own terms. Who wouldn’t want to save money and produce a more expandable product?

When building mobile apps with these technologies you no longer have to duplicate efforts for mobile cross-platform flexibility. By implementing the latest technology you can rely on full support (WebKit) by popular devices that use iOS, Android and the experience can be altered or downgraded for others. You will receive the best results if you build for the masses but utilize a specific strategy for your demographic knowing that not everyone owns a smartphone with HTML5 support. With over 120 million iOS devices on market and more than 302 million Android devices sold, there is a large customer base that will only continue to grow.


With the various devices available and variation of screens, developers must consider all user experiences.

Once your idea is in place and you have decided that you want to utilize the mobile platform as your base, you must determine several factors to formulate an effective plan. Whether you are bypassing desktop devices completely and focusing on mobile or just utilizing mobile marketing in your campaign you will need to define a campaign, devices to support and build for mobile devices.

On average, Americans spend 2.7 hours per day socializing on their mobile device. That’s twice the amount of time they spend eating, and over 1/3 of the time they spend sleeping each day. – Microsoft

Defining a Campaign

Before any campaign is launched it must first be defined to help flush out questions that can be detrimental if asked too late. Will you be marketing to anyone with an internet connection or just mobile devices? How will users find your website? What do you expect users to do once they arrive? How will you track behavior? These are some (of many) important questions you should be asking. While each campaign specifically revolves around very unique goals, we can discuss how you can find your own answers to the questions above.


What devices will you support?

If you are marketing to any device with an internet connection you must account for regular resolutions, high resolutions, the more complicated mobile screen trends and various mobile screen resolutions. By narrowing your campaign down to specific mobile devices (eg smartphones) depending on your needs, you can focus on as little as three key screen resolutions. For example if you are utilizing QR Codes or MS Tag (free to use) in your campaign, you can only choose to only support iPhone/iPod Touch, Android and Windows 7 Mobile. This is due to the fact that scanning technology requires a camera and a scanning app before you can be directed to the website being marketed.


If mobile tags were a family, QR codes would be the parents while MS Tags would be the spunky children.

If you are reaching out to a larger base you can utilize a flier, napkin, product package, label, menu, web banner or even a commercial to display these 2d codes for users to scan. Some establishments even place a window sticker on their front door (eg restaurants, store front merchants). If your demographic is much smaller, perhaps you can add a code within a company newsletter, promotion or business card. These methods are most effective with incentives (eg discounts, free gifts) and other methods are more successful with general company promotion. Mobile tags gained extreme popularity as instant entry for contests since personal information can be quickly accessed through a mobile phone and remove the irritation of filling out a form. Mobile tags help users initiate the process rather than delivering a coupon or content by self-engaging.

QR Codes and MS Tags can be used for:

  • Content Sampling
  • Event Information
  • Giveaways
  • Hotels/Resorts
  • Loyalty Rewards
  • Location Based Games
  • Product Preview
  • Product Reviews
  • Realtors
  • Retail Stores
  • Restaurants
  • Scan-to-Pay
  • Tourism Attractions
  • Tourist Attractions

When users visit your website you should have an immediate call to action. Users can watch a video, vote on a poll, complete a form or even purchase a product. When you immediately engage users you have a better chance of keeping their attention and delivering your message. Usability tests demonstrate that users see and understand less and do not engage unpleasing websites. Get users attention act on their impulses, engage users and complete your goal. Once your campaign gains more focus, it will be easier to determine the project details and make decisions as you continue to plan.

Over 85 percent of new handsets will be able to access the mobile Web. Today in US and W. Europe, 90 percent of mobile subscribers have an Internet-ready phone. – Gartner

Defining Devices To Support

After you have reviewed the resolution information we discussed in the previous section you can decide which delivery methods and mobile devices you will support. This will have a large effect on the images and code you will be developing. A mobile device is not just a smaller computer, but a whole different realm of user interaction and web development. Altering something that works for a desktop user by scaling it down will not work due to the limited screen space and touch technology.


Please note that this is a very limited list, and is by no means complete. What is important to take from this data is that a wide range of screen resolutions are out there, and new devices are introduced constantly. Source

When working with popular mobile devices you have to account for not only standard viewing (portrait) but for adjusted viewing (landscape) with images and content. By looking at the screen resolution image above you can see that the iOS low/high screen resolution and Android low/high screen resolutions are very similar. They are not exact but will help you during development keeping in mind the smallest possible max screen resolution of your mobile website will be 960 x 960 pixels due to the retina display. The lowest screen resolution you will want to develop for would be 320 x 320 for smaller Android devices. All other popular screen resolutions will fit in-between. In the following section we will discuss how to create a flexible site, even when graphic heavy.

The market today contains rapidly changing display dimensions and you will want to be certain you pick the devices you support wisely. Since cell phones enter and leave the market at an average of 18 months you will want to avoid devices that are not widely accepted since this will have an effect on the supported screen resolutions. When you start developing your mobile website you will want to utilize the HTML5 and CSS3 functionality built into these smart browsers and review which features are widely adapted.

Building for Mobile Devices

When you begin building for mobile devices you will need to take into account the small viewing areas, load times and touch screen support. Will you be including a quick launch menu or will your site only be one page? Will you offer multiple types of media or just serve specific information? With screen sizes that vary, providing relatively small viewing areas, you will need to provide quick and simple navigation to any information you are offering. This includes preloaded images, videos and identifying the page load order. With many restrictions on older devices, you cannot meet user expectations for feature rich websites thanks to the new standard people expect due to the iOS and Android systems.


Mobile websites must offer various media types that differ from the desktop but offer a similar experience.

People are used to the simple, flexible interfaces that many apps offer due to the mass offerings of the Apple iTunes store. With that in mind you must be sure to provide a similar experience on your mobile website that common apps are providing users currently. These high expectations will force you as a developer to increase performance, create a dynamic environment, test and test some more. With current HTML5 and CSS3 technology it is easier for developers to support multiple devices and offer a degraded experience for others. There are also many cross-platform mobile development tools available for use.

Many mobile Web users are mobile-only, i.e. they do not, or very rarely use a desktop, laptop or tablet to access the Web. Mobile-only in Egypt is 70 percent, India 59 percent, even in the US it’s 25 percent of subscribers. – On Device Research

Icons

A great feature that has arrived with current smartphones in the ability to save website bookmarks to your home screen and being able to create your own icon that will look like an app. There are Android icon guidelines and iPhone icon guidelines to help you through this process but we will discuss the basics to get you going.

In the past with websites we only had to identify a favicon (16×16 pixels) that would show up in the address bar next to the website URL. You would either link a PNG or ICO file directly and this was all that you needed to do.

<link rel=”icon” href=”/images/favicon.png”/>
<link rel=”shortcut icon” href=”/images/favicon.ico”/>

For mobile devices you have a whole new set of options available to you. Besides the tags mentioned above you can now identify an icon for iPhone, iPod Touch and Android devices.

<link rel=”apple-touch-icon” href=”/images/favicon-ios.png”/>
<link rel=”apple-touch-icon-precomposed” href=”/images/favicon-ios.png”/>

Older Android devices (1.5, 1.6) will see the precomposed icon and newer versions (2.1+) will use the alternate. Apple recommends a 114×114 pixel (high resolution) icon for their retina displays and the same image can be used for Android to achieve a better quality result.

The above code will work seamlessly with iPhone and iPod Touch but will not always display correctly for Android. There are issues when using an SSL certificate that is expired or differs from your domain and HTC phones will only overlay a small version of your icon when saved. You may also want to look into web capable content, status bar style and start up image for further Apple device customization.

<link rel=”Shortcut Icon” type=”image/ico” href=”/images/favicon.ico” />
<meta name=”apple-mobile-web-app-capable” content=”no” />
<meta name=”apple-mobile-web-app-status-bar-style” content=”default” />
<link rel=”apple-touch-icon” href=”/images/favicon-ios.png” />
<link rel=”apple-touch-startup-image” href=”/images/loading.png” />

Pixel Aspect Ratio

The variety of available display sizes makes for a difficult decision when creating your mobile website. As we discussed before, it’s best to narrow down your customer base and make a decision from there. You can decide to move forward with a fluid layout or create layouts for specific groups of devices. Remember the chart we looked at earlier with the iOS and Android resolutions? Instead of creating a universal layout you can instead design depending on the current device resolution and orientation. With the implementation of CSS3 media queries you no longer have to rely wholly on javascript of detecting user agents.

Compare the slight size resolution differences between pixel aspect ratios for 1, 1.5 and 2.

CSS3 media queries give developers the ability to target devices by using variables for device width, orientation and pixel aspect ratio. You can use these variables to load specific styles when developing for mobile devices. For instance the iPod Touch, iPhone, iPhone 3G and iPhone 3GS (pixel-ratio: 1) all utilize one pixel aspect ratio. You can target all of these devices very simply and target iPhone 4 (pixel-ratio: 2) and Android devices (pixel-ratio: 1.5) separately. If you were trying to create a graphic heavy website with a flexible background image, your CSS may look something like this:

#container {
	height: 675px;
	width: 100%;
	margin: 0 auto;
	padding-top: 0px;
	background: url(/images/675x675.jpg) no-repeat left top;
	background-size: 100%;
}

@Media only screen and (-webkit-min-device-pixel-ratio: 1) and (max-device-width: 480px) {
	#container {
		width: 583px;
		background: url(/images/640x750.jpg) no-repeat left top;
	}

}

@Media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
	#container {
		background: url(/images/480x854-70.jpg) no-repeat left bottom;
		height: 854px;
	}
	#main {
		background: url(/images/bgContent-group.png) no-repeat -20px 5px;
	}
	#main #video {
		padding-left: 61px;
	}
}

@Media only screen and (-webkit-min-device-pixel-ratio: 2) {
	#container {
		width: 583px;
	}

}
@Media all and (orientation:landscape) and (-webkit-min-device-pixel-ratio: 2) {
	#container {
		width: 950px;
	}
}
body.alt {
	background-repeat: repeat-x;
}

The above example may be a bit heavy for starters but it gives you a great idea of the versatility that CSS3 media queries bring to developing for mobile websites. You can alter the container width and serve up different images with a few steps. You don’t want to deliver a different experience on separate devices but rather the same experience, seamlessly across multiple devices. It is also good to remember that that hiding images with media queries doesn’t necessarily mean they won’t be downloaded

Saving Images

When working with mobile devices, fast load times are important more than ever because users are on the go and want content NOW. Because the website resolution is close to a standard desktop for iPhone 4 and Android devices, you want to pay close attention to file size and cut it down whenever possible. A great way to speed up your website is by optimizing your images using Adobe Photoshop. Avoid using “save” or Save as” and instead utilize the diverse “save for the web” feature. This will help you compare image quality, file size and make adjustments where needed. By learning about the different options available, you can optimize images, create presets and drastically change file size.

There are three main formats that you work with when creating a website and they all have specific uses depending on the image being saved.

  • .jpg is a commonly used method of lossy compression. The compression levels can be adjusted and works great for photographs.
  • .png is a bitmap image format with lossless compression. There is a limited color range but works well with transparency.
  • .gif is a bitmap image format with lossless compression. There is a limited color range and .png typically turns out better quality.

You can notice when comparing the images that used the “Save For Web” feature in Photoshop there is little noticeable difference between High quality (36KB) and Medium quality (8KB). There is however, a file size difference of over 28KB (80 percent). The low quality (4KB) image has a noticeable quality difference and does not differ much from the medium quality in file size.

.gif (16KB) and .png (16KB) utilize lossless compression and have a restricted number of colors which produce higher quality graphics for icons and plain graphics. .jpeg (24KB) is best specifically for photography and when comparing quality and file size.

By paying close attention to file size and what images work best for your needs, you can serve up websites faster for mobile phones and on the web. Faster load times will incubate a positive user experience and save server bandwidth. Slow load times can drive away users from a website even if it has valuable content. Speeding up your website is a great way to prevent this. Because mobile devices utilize slower data transfer rates

The avg. download speed between the AT&T, Sprint, T-Mobile, and Verizon 3G networks was 987Kbps. Some providers may throttle users that exceed a monthly data limit to significantly lower data rates (ie: T-Mobile reduces download speeds after customers reach a 5GB limit). – PCWorld & Novarum Inc ’09-’10 Study

Video

When planning on delivering video to a mobile device there are various options available to you, though some devices are limited. If you are creating a one-page promotional mobile website that will only be online for a few months, YouTube would be a great option. If the mobile website will receive many viewers and have an extended life, perhaps streaming via a CDN is your best option. Today most smartphones can play videos from YouTube, Vimeo and even a CDN by streaming them without conflict. Others however, such as the Windows 7 Phone cannot since it is still catching up and uses IE6 as its base browser. To get around this, you must download a low resolution video to the device and play it locally.


In the above example you can see a placeholder image is used instead of immediately displaying a YouTube video.

You can also see an HTML5 embedded video, where the browser is able to display the MP4 file just like it would an image.

<article>
	<video>
    	<source src="/files/368x208-low.mp4"/>
        <source src="/files/368x208-low.ogv"/>
	<video>
	<p>
    	<input type="button" id="play" value="play">
        <span id="position">00:00</span> / <span id="duration>
    </p>
<article>

Unsupported Devices

If you decide you only want to support specific mobile devices and offer a different experience for others, this can be done easily. For example, you can create a graphic website for smartphones and a text only version for older devices. If you wish, you can even block users from viewing the website via PC or laptops (though not highly recommended). By utilizing the CSS3 media queries as a catch all, you can pass all other visitors into an”unsupported” area with alternate content. If you are interested in utilizing progressive enhancement over degrading gracefully, you should read Where Progressive Enhancement Meets Graceful Degradation and Progressive Enhancement in Mobile Design.

Utilizing a more specific method of detection with user agent (as mentioned user pixel aspect ratio above) you can send users to a specific version of the site (eg unsupported for text only). The user agent refers to the software that someone is using to browse your site (eg iOS iPhone). You can use a script that will identify this and serve up separate content. There are two approaches to using mobile specific style sheets, by including a mobile specific stylesheet in your HTML or by importing mobile specific rules through an existing style sheet.

body.unsupported {
	background: #01536b;
}
body.unsupported #container {
	background: none transparent;
	width: 480px;
	margin: 0 auto;
	color: #002639;
	text-align: center;
	height: auto;
	margin-bottom: 40px;
}
body.unsupported #container #pageBody {
	width: 440px;
	text-align: left;
	margin-top: 20px;
	border: 1px solid #fcefa1;
	background: #fbf9ee;
	padding: 20px 20px 10px;

Tracking

When working on any marketing campaign, tracking is essential, though often forgotten on the mobile world. With the array of websites that generate a QR Code and MS Tag for free, many do not offer tracking. Why wouldn’t you want to know who is visiting your website? If you decide to go with the old QR Code or new MS Tag, make sure there is built-in tracking! You can always use Google Analytics in your code to track, but I only suggest this as a catch-all backup plan. Tracking is free, offers great insight on your visitors and their devices.

Google Analytics will display visitor browser and OS combinations among other information.

When considering which tag to move forward with, QR Codes have been around since 1994 in Japan and are built-in to Android devices for scanning. MS Tag is fairly new but works on multiple devices just the same. The advantage comes in with size in addition to tracking. If you are planning on placing a code on product packaging, a business card or even the window of an establishment, size is important.

By comparing the size differences above you can see that there is a key advantage in using the 3/4″ MS Tag over the 1″ size. Microsoft displays the QR slightly larger at 1.25″ on its website to sway users perspectives.

Here is the minimum dimensions for each:

  • MS Tag (color): 0.75 inch
  • MS Tag (b&w): 0.875 inch
  • QR Code: 1 inch

Another factor that comes into play over size, is the ability to alter where to send your users with the generated code/tag. Once a QR Code is generated it is permanently linked to whatever has been programmed into the code. Made a mistake and it’s already printed? You can’t change it now! MS Tags can be switched at any time, redirecting users to a new message, website, SMS, video, audio, or phone number. In this fast paced world you can use the same code for a particular client, for multiple campaigns and track them without ever changing the tag. While both tags are free for the time being, Microsoft has mentioned interest in charging in the future.

During the beta period, there is no charge to create and use Tags. And in the event that Microsoft decides to charge publishers to use Tags, any Tags that were created and used during the beta, will continue to work, free of charge, for at least two years. – Microsoft

Example Mobile Campaigns

Sean “Diddy” Combs


Sean “Diddy” Combs a United States music artist launched a social campaign titled the “12 Days of Tagâ€�. This campaign promoted the release of his album Last Train to Paris and a $50,000 donation to charities. Diddy used Twitter to promote an exclusive giveaway to his millions of followers by giving away details on how to find the content, scan the MS Tag and unlock gifts. Participants were given exclusive content and the ability to help decide which five charities to deliver a $10,000 donation to.

Cheeseburger in Paradise


In a national campaign, Cheeseburger in Paradise restaurants partnered with beverage makers to run a promotional campaign using MS Tag. By scanning a flier at one of the restaurants 31 locations, users were directed to a video and additional information on contest entry. By ordering one of two signature drinks or joining in a photo submission contest, participants could win an all-inclusive trip to Cancun, Mexico. In addition, all participants qualify for a free appetizer card in the process.
View mobile-only website

Harrah’s Entertainment


In a national campaign, Harrah’s in partnership with Crown Royal ran a promotional football promotion utilizing MS Tag. They placed a scannable tag on printed table toppers during football game events where guest can see unique content. Guests were treated with a specific location on the Crown Royal website where they were able to look up drink recipes that included the beverage makers product.

Ben & Jerry’s


Ben & Jerry’s partnered with Stickybits in a national retail campaign utilizing barcode scanners on smartphones. Users were encouraged to scan the barcode on a newly launched fair trade ice cream to enter a contest. The first 500 users to scan the new flavors could win free products and a branded T-shirt.
View campaign details

ESET Anti Virus


As a four part scavenger hunt, ESET targeted South by Southwest (SXSW) conference attendees in Austin, TX with a QR Code. Participants scanned various QR Codes that offered up useful clues that brought them to specific locations. Including brand installations at these specific locations, the anti-virus software maker gained maximum exposure. The first 200 participants to complete the four part scavenger hunt were given a free gift (the companies software) and were entered in a contest to win a Sony VAIO laptop.
View campaign case study

Smyth Jewelers


There have been many brazen Christmas promotions seen in the past, but none as forward thinking and bold as the Smyth Jewelers 15 Days, 15 Deals Christmas campaign using a QR Code. This retailer placed a 20×20 banner on their building exterior on that could be seen by passers by at the nearest intersection. Users who scanned the QR Code on the building in addition to their social media promotion were directed to a landing page with their seasonable promotions.
View campaign details

Perhaps the best “15 Days, 15 Deals� special is an autographed official NFL football signed by Baltimore Ravens running back Ray Rice, which comes with the purchase of a TAG Heuer or Breitling watch. Smyth Jewelers is the preferred jeweler of the Ravens and this gift with purchase reinforces that valuable brand tie-in.

Allure Magazine


Allure Magazine utilized their August 2010 issue to giveaway free beauty products to readers. By creating a series of mini sweepstakes with MS Tag, readers signed up for the contest and were notified via SMS about future giveaways. The US fashion publication gave away a total of $725,000 in free beauty products to readers and the mobile tags increased entries by 28 percent.
View campaign details

Wilkinson Sword


Wilkinson Sword launched a country-wide POS campaign in the UK using QR Code. Featuring their new Hydro Razor 5, the encouraged shoppers to scan the code and access product videos and enter into a contest.
View campaign details

Colorado University


Boulder Digital Works of Colorado University launched a mobile scavenger hunt using MS Tag. The University created the game Zombies vs. Hippies to encourage students to scan posters located around campus to participate in various missions.
View campaign news

Boondoggle Lifelabs


Boondoggle Lifelabs launched a country-wide campaign in Belgium, using QR Code. Developing Likify, a service which allows marketers to add mobile tags to products and signage. When people scan the codes with their smartphone it will “like” the scanned item on the associated brand’s Facebook page. Nike used Likify in a campaign to promote their shoes by getting people to “likeâ€� different jogging routes.
View campaign details

Conclusion

As you continue to take advantage of new technology, moving with the mobile market and not being left behind is important. Implementing new technology as it hits the market, testing new innovative ideas and saving clients money will be beneficial in the long-term. While some technology may fade away, staying on the cusp of growth will help keep the market thriving and meet users ever expanding expectations of how a device and website should perform together.

Most popular activities on the mobile Web are mobile search, reading news and sports information, downloading music and videos, and email and instant messages. In the future, money transfer; location-based services; m-health and m-payment will be key drivers. – IDC

Whether you are using framework or implementing the code yourself, HTML5 with CSS3 will continue to drive the future of mobile website and application development. As elements and authoring practices for this emerging technology continue to evolve, the adaptation will continue to grow. Have you used HTML with CSS3 to build a mobile website or web application? Sound off in the comments below!

Resources

  • How-To Minimize Load Time for Fast User Experiences
    Experienced front-end developers optimize their site to load quickly and display accurately across all modern browsers. Learn how to analyze the bottlenecks preventing websites and blogs from loading quickly and how to resolve them.
  • Speed Up Your Website with Better Image Optimization
    We all know the importance of load time for faster user experiences and why it’s important to have them. Learn how to optimize images in Photoshop for better web performance.
  • 5 Cross-Platform Mobile Development Tools You Should Try
    Cross-OS platforms for mobile development on the whole are not yet a completely perfect, have-your-cake-and-eat-it-too solution, but many of them offer an excellent alternative to ignoring one mobile OS in favor of another or, perhaps worse, burning serious resources to develop for two or three platforms at once.
  • jQuery Mobile: Touch-Optimized Web Framework for Smartphones & Tablets
    A unified user interface system across all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. Its lightweight code is built with progressive enhancement, and has a flexible, easily themeable design.
  • HTML 5 Resources
    This site, the HTML5 Playground, Studio, and Presentation slides are all open source projects. Tweak the code or contribute new guides!
  • Estimates of Mobile Phones and Smartphones supporting HTML5
    Discover which mobile phones or smart phones support HTML5 and what they are expected to support in the future.
  • Future Of Mobile Tagging Report
    Mobile tags and QR Codes provide an exciting opportunity to interact with customers in ways not previously available to marketers. This report shines a light on to the work of other marketers to both inspire you and present some mobile tagging options as you consider your next campaign.
  • Infographic: Mobile Statistics, Stats & Facts 2011
    Microsoft Tag has just released a neat infographic highlighting statistics on how people are using mobile phones in 2011. There is also a video that featured late last year with an array of great mobile “growth� statistics, stats and facts for 2011.
  • Global Mobile Statistics 2011
    The essential compendium of need-to-know statistics. Beware of media hype and mobile myth – put your mobile strategy on a sound footing with the latest research from credible independent experts. Global mobile subscribers, handset sales, mobile Web usage, mobile apps, mobile ad spend, top mobile operators and mobile financial services.
  • Progressive Enhancement in Mobile Design
    When designing for the mobile web there are many variables to take in to consideration. Probably one of the biggest hurdles is designing for the such a wide variety of devices. There are the high-end devices like the iPhone, Android and Palm OS devices. Then there are lower level devices that can’t render high-end styles. That’s where progressive enhancement comes in.
  • Where Progressive Enhancement Meets Graceful Degradation
    Two important web development philosophies are often at odds when it comes to using new or advanced technologies and supporting older browsers or low bandwidth connections. But as is the case with many polemic arguments, the best practice may reside on the middle ground between these two positions.
  • Industry briefing Mobile Industry Trends 2011
    Predictions and trends for the coming year with an assessment of the market.
  • Mobile and HTML5 <video> in Action with Brightcove
    Brightcove Smart Players automatically detect playback environments and device capabilities to dynamically deliver the appropriate rendition and format, so you can embed a single Brightcove player to deliver video in both Flash and HTML5.

(rb)


The Lost Art Of Design Etiquette

Advertisement in The Lost Art Of Design Etiquette
 in The Lost Art Of Design Etiquette  in The Lost Art Of Design Etiquette  in The Lost Art Of Design Etiquette

Endless layers in Photoshop. Overstuffed image folders. That jQuery plug-in that has 12 files associated with it. Hundreds or thousands of individual pieces go into making a website. No wonder we go off the deep end when we can’t find a closing div — er, section tag. We work with a ridiculously large number of things, and how we organize them (or choose not to) is often left to personal preference. But our messy habits result in confusion for the designer or developer who inherits your work.

Does it really need to be this way?

Us Vs. Them?

The great divide between designers and developers is well documented. Designers complain when developers would rather backgrounds not have any images. Developers gripe when given a Photoshop document with missing fonts. If those were the only problems we face, we’d be thrilled.

Unfortunately, not every studio is a breeding ground for pixel-crafting harmony. Sometimes designers work on one floor, developers on another. If you asked a good number of them, they’d say they were content with that arrangement. No wonder communication breakdowns are so frequent. The only brains we have to pick are those of our fellow designers or fellow developers, with little crossover it seems. Proximity doesn’t always improve proficiency, but don’t tell that to bees.

Bees in The Lost Art Of Design Etiquette
The essence of teamwork. You’ve heard of designer bees and developer bees, right?

Web designers have the unique ability to communicate through layout, shape, typography and, ultimately, simplicity. That same discipline must be exercised internally when sharing their artwork with colleagues — using, coincidentally, those same tools. As challenging as it may be, we can bring sophistication to our interfaces in Photoshop, so that our artwork achieves clarity through order. Just as our client has a target audience, we should also be considerate of the internal audience that uses our work.

We’re nibbling at the edges of websites that deliver a happy marriage between remarkable aesthetic and solid function. Seeing some websites already achieving that is exciting. But to fill the Web with more of it, designers and developers will need to combine their skills in even more proficient and efficient ways.

A Call to Arms

Let’s start a revolution that has less to do with being nice and more to do with holding one another to higher standards. Let’s get caught up not in the sexy pixels of tomorrow, but rather in attention to detail in our workflow. What if we made it easier for others to actually use and edit our work? Yes, my friends: let’s start an etiquette revolution.

Designers-vs -developers in The Lost Art Of Design Etiquette
Make better websites, not war. Fist bumps, man hugs and peace signs, people.

More Than Just Chivalry

Why etiquette? I agree: at first it does sound stuffy and time-consuming, especially if what we’ve done has always worked. The client won’t see the etiquette, we’ll still get paid, and all is well. But let’s reason here: whether you’re in a group or creating websites all by yourself, the level of detail in your craft reflects how much you value your profession and should be apparent in the finished product.

Even so, internally, inheriting messy artwork can be a point of contention for developers. A design could be the most beautiful and useful thing in the world, but if it’s not practically built, it will waste precious time and money. All of the investigative work of the developer in posing questions to the designer about what’s confusing in their PSD should not have been necessary; the work should have been clear from the beginning, and the designer as organized as ever.

Can both the individual and group benefit from some good ol’ fashioned etiquette?

Personal Gain

Here’s a plain illustration of my point. Think of the designer or developer whose work inspires you most. Imagine you had the opportunity to work with them on a project. They got the ball rolling with a PSD or a directory of coded files, and handed it off to you for editing. How surprised would you be if the layers were unnamed? Or the code wasn’t indented, all smushed together? You likely wouldn’t see that, right? Every layer, every line of code reflects on who they are.

Even if you’re a one-person shop, holding yourself to high standard of organization has always been good practice. By doing so, you make less work for yourself when you need to go back to edit something. More importantly, if you were ever to pass off a PSD to a developer or client, you’d want it to speak to your attention to detail and professionalism.

(Aside to Fireworks users: I’m about to make a ton of references to PSDs, so feel free to substitute “Fireworks PNGs.�)

Collective Gain

Have you ever inherited a PSD from a designer and, on seeing the missing fonts, unnamed layers and myriad of masks, knew you were in for about four hours of work just to get started? No? Must be just me, then.

Indulge me, then. Those hours, even if few, are time spent by someone less familiar with the file than the designer and, thus, unnecessary. Our job as Web designers is to run a tight PSD ship. In theory, I should be able to organize my PSD in a fraction of the time that someone else could, just because of my familiarity as the designer. The result? An easier process for the inheritor and less time billed for the company.

Equally important, how much less disgruntled would developers be if designers handed over their work without so many blunders? How many projects would come in under budget? How about world peace? Too far?

Let’s apply the same clarity that we bring to the canvas to the “Layers� panel, too. Now we’re on our way to higher standards.

Let’s look at some recurring issues and see how to resolve them.

Common Mistakes

Didn’t Put the File on the Server

Just your luck. A deadline is fast approaching, and you’ve set aside a good amount of your day to plough through editing a PSD that a fellow designer has just finished working on. Problem is, you can’t get to it because it’s sitting on their desktop instead of the server. How convenient. And doesn’t this always happen when they’re on vacation?

Alert1 in The Lost Art Of Design Etiquette
If you’re like me, your short-term memory could use a reminder at 5:00 pm daily.

The remedy
Depending on the hardware, designers should work directly off a networked server, and use their computers only for local back-ups. Alternatively, you could set an alert (in iCal or your app of choice) at the end of each day to remind you to commit your files to a shared spot.

Unnamed or Unused Layers

The developer didn’t expect to need a machete to use your file. Thicker than the Amazon rainforest, your PSD has layers-a-plenty, some even with such distinguished names as “Layer 0 copy.�

The remedy
Name layers and make folders as you go in Photoshop. Yes, it takes discipline, but it’s easier than having to go back to rename and delete after the fact. Use folders, too: they’re there for a reason.

Messy Layers in The Lost Art Of Design Etiquette
Distinguishing “Layer 0� from “Layer 1� is hard. Let’s use our words.

Unpurchased Stock Photos

Hello there, Mr. iStockphoto watermark. Curious to see you in the final PSD. If we could have only mustered the $3 for credits, I could have gotten rid of you myself.

The remedy
For everything, proofread, proofread, proofread. Your text and your images.

Watermark in The Lost Art Of Design Etiquette
Ouch! See what happens when we forget to buy the stock?

Inaccurate File Names

You look confused, developer. Clearly, you should be using website_LATEST-v3_FINAL.psd instead of website_USE_THIS_ONE_ULTIMATE.psd.

The remedy
One file, named accurately. Archive the rest if you think you might need to go back to the third of your nine iterations for some reason.

File Accuracy in The Lost Art Of Design Etiquette
No amount of highlights and descriptions is as good as maintaining a single file and archiving the rest.

Missing Fonts

Does this sound familiar?

The following fonts are missing for text layer “myFont, notYours�:

Guilty Culprit Extra Condensed

Font substitution will occur. Continue?

Ain’t that something? Confirming wouldn’t be a good solution in this case, because then the developer would be doing some guesswork to match the font that the designer presumably has more knowledge of. This usually happens when a font needs to be used as image text, so a straight substitution might not be an option.

The remedy
Ideally, the designer would be considerate enough to include the (licensed) font somewhere within arm’s reach of the PSD. Alternatively, the studio could install common fonts on all production computers. Apps like Fontcase, Suitcase Fusion and Linotype FontExplorer X will manage your fonts for you.

Inconsistent or Inaccurate Content

If I’ve learned anything from working with developers, it’s that they don’t like to do things twice. Rightfully so. Whether it’s unpurchased stock photos, inconsistent type sizes or inconsistent colors, when they’re not caught the first time around, images need to be reproduced and code needs to be altered. And sadness overcomes all those involved.

The remedy
Develop a brand guide if one doesn’t exist, and have someone check your work before you hand it off. Think of it as quality control.

Tips And Tools

Name Files For Function

Be descriptive but practical when naming PSDs, JPEGs, etc. Something like header_bg.jpg is a little more indicative than blue_box.jpg, isn’t it?

Conserve File Size

I may sound like an old curmudgeon, but file size is still pertinent today. When exporting images, remember that a background at 80 quality will still look close to one at 100 quality but will likely be at least 33% smaller in size. Everyone still likes pages that load quickly, even if our Internet connection speeds have increased over the years.

Snap to Pixels

When I’m cutting up a PSD, one of the most common things I have to negotiate are those 1-pixel semi-transparent lines on the outer edges of shapes. The best way to remove them is pretty well cloaked in the vastness of Photoshop’s settings. When choosing a shape to draw, such as a rectangle, look towards the top of the screen at a row of those same shapes, with an arrow at the end of the row. Click that arrow, and you’ll see more options. Check the box “Snap to Pixels,� and you’ll see that the shape you draw will have much more precise edges.

Use Version Control

A fantastic way to cut down on the chaos of sharing files is to use a version-control system such as Git or Subversion. You designers, don’t feel that only developers can geek out about this. Using some type of revision control for our PSDs and other artwork files is equally important, because those files tend to get revised and transferred quite a bit. Version control is crucial when multiple people are working on front-end and back-end development, because overwriting someone’s work when uploading your own is all too easy.

Communicate

The saying “Communication goes both ways� never meant so much as it does here. Designers should freely communicate their decisions to developers, who themselves should express their concerns about programming said decisions. Nothing new, but it just doesn’t happen as openly as it should. If you consult with each other frequently, you’re bound to have more etiquette.

Be Teachable

Part of practicing good Web design manners is having the humility to know you’re not the best at what you do (except for one of you out there, Mr. Best Web Designer). Be open to being educated by other designers, developers and fantastic websites such as Think Vitamin Membership and Method & Craft. You’ll gain the respect of your co-workers for taking the initiative to improve your skill set.

Adding-textures-psd in The Lost Art Of Design Etiquette
Websites like Method & Craft are invaluable resources in your quest to become a Web design hero.

Implement Standards

The best way to force your Web team to adhere to standards is to come up with a list of best practices, on that holds each person accountable for their PSDs, HTML, CSS and beyond.

Isobar-screenshot in The Lost Art Of Design Etiquette
Isobar has done some of the work for you with its Code Standards and Best Practices.

The Photoshop Etiquette Manifesto for Web designers was created to give both beginner and seasoned designers a crash course in keeping PSDs organized and understandable for others. With helpful visual comparisons of “Do this� and “Not this,� the website serves as both an educational resource and a checklist. With the crown of “Layer Mayor� at stake, why not take more pride as the resident PSD pro in your office?

Manifesto-screenshot in The Lost Art Of Design Etiquette
Setting some guidelines in your workplace is key to accountability and consistency.

Moving Forward

Having said all this, it’s encouraging to see more designers learning and understanding the process of developers, and vice versa. Some have done it out of necessity, such as freelancers who are hybrid designers/developers. Others have done it in order to understand their co-workers better, in the hope of a better product.

Hopefully, it’s become apparent that being on the same page, especially in Web development, is crucial to success. What are you doing to emphasize a high standard and clarity in your own craft and to make your team’s job easier?

(al)


© Dan Rose for Smashing Magazine, 2011.


Adobe Illustrator Tutorial: Create a Cute Halloween Ghost


  

Use of the Mesh Tool is one of the best techniques for achieving a semi-realistic look for an illustration. Today we will demonstrate how to use this great Adobe Illustrator feature for creating a cute little ghost. The only colors we are going to use are white and different shades of gray. So, It might be little tricky to transform this floating bedding into the cute little ghost. We will have to find a way to create the illusion of the wrinkled sheet. The Mesh Tool will help us a lot to achieve that.

Our final result should look like this:

So, let’s get down to business!

Creating the Ghost’s Body

First, we will create the shape of the ghost. There are two methods to do that. If you have a tablet you can draw it very easily. If not, the Pen Tool (P) is always available. Select it from the Tool Panel and draw the curvy path, something  similar to this:

We will need to divide this shape. This will actually create the inner side of the floating bedding. With the Pen Tool (P) create a curve which we’ll use to divide the large shape.

Select the path and the blue shape and under the Pathfinder Panel hit the Divide button.

Ungroup (Shift + Ctrl / Cmd + G) the shape we have just created and change the Fill color of the lower part. This way we have the idea what our ghost should look like.

At this moment we are pretty much done with the shape of the ghost.

When it comes to coloring we will try to keep it simple, by using gray colors from the Swatch Panel.

Time for the Mesh Tool

We have to realize that creating gradients for irregular shapes is not that simple. The Mesh Tool (U) will help us to do that. We will have to “divide� the blue shape in order to define some highlights and shadows. During the dividing process we will create new anchor points and paths. For each anchor point we will have to define the Fill color. This will create nice transitions between colors. Some transitions will be smooth and some very sharp, depending on what we are trying to achieve.

Grab the Mesh Tool (U) and click on the blue shape. It will create paths with anchor points as is shown on the picture below.

On the following pictures you can keep track of creating the new anchor points.

These are some of the possible anchor points. Later on we will create some more. First, we will apply some colors in order to monitor our creating process, just to make sure that we are going to right direction.

To assign the colors to the anchor points grab the Direct Selection Tool (A) from the Tool Panel, select each individual anchor point and select the color from the Swatch Panel. You may think that this is a lot of work, but at the end it will pay off.

Continue with applying colors.

Continue applying colors. Feel free to experiment and to try out different combinations.


Larger Preview

You should end up with something like this (or maybe with something even better):

You may notice that we have a shadow on the right side of the sheet. Left side is slightly highlighted (like the light is coming from upper left corner). Besides that, there is some roughness caused by the light source. We have managed to represent all of that by using the Mesh Tool (U).

Creating the Fabric Wrinkles

Now, we have to create some fabric wrinkles. Fabric wrinkles tell us a lot about the position of the body. Gravity is something we should keep in mind as well. It dictates how our bed sheet will behave.

Grab the Add Anchor Point Tool (+) from the Tool Panel and add few anchor points on the right ‘shoulder’ of our ghost. With the Direct Selection Tool (A) try to raise new anchor points and to adjust the handlers in order to form a smooth corner.

Before

After

Do the same for the left lower part of the linen.

Before

After

You should end up with something like this.

As you can see on the previous picture, our wrinkles don’t quite give the illusion that there is something going on, yet. We have to find a way to avoid a flat look for the illustration and to create an illusion of 3D. The Mesh Tool (U) will help us again. There is just one thing you should keep in mind. With the Mesh Tool (U) we are defining gradients between two anchor points. It’s up to us to make the color transition as smooth as possible.

Grab the Mesh Tool (U) from the Tool Panel and apply a few more anchor points. Add anchor points like you can see on the picture below.

In order to create a realistic wrinkle we will assign light gray colors to some of the anchor points.

On the pictures below you can see the information about color applying.

We will do the same thing for the right shoulder. Just make sure to add important anchor points. Each wrinkle has a highlighted part and a shadow. We will try to represent the influence of the light, which will allow us to create an illusion of a 3D look.

Let’s apply some colors, like we did in previous steps.

During our creation process we’ve created a few anchor points and paths we didn’t need at first, but now we can use them.

With alternate combinations of light gray and dark gray colors we are achieving the impression of a wrinkled sheet.

On the pictures below you can find more information about color details.

This is how our ghost looks right now.

Let’s improve our ghost a little bit more. We have some curves in the lower area, but it doesn’t look realistic. To make it properly we’ll have to highlight some parts.

If we take a look, the network of the paths and the anchor points in that field looks like this.

Let’s make some minor changes. Just grab the Mesh Tool (U) and add a new anchor point. We will apply a nice light gray color in order to create a highlight.

This has created a highlight for the raised part of the sheet. But we will need some shadows as well. Apply a slightly darker gray color, as is shown on the pictures below.

There is one more thing we can do. Let’s focus one the raised part of the bedding. We could add a small part of the inner side of the sheet and make it visible.

Grab the Pen Tool (P) from the Tool Panel and draw the shape as you can see on the picture below.

Make sure to match the lower side of the new shape and the lower edge of the sheet. It’s supposed to be lined up.

Duplicate (Ctrl / Cmd + C, Ctrl / Cmd + F) the red shape of the ghost. Select both shapes, green and the copy we have just created and under the Pathfinder Panel hit the Intersect button. It will create a shape like this.

Let’s make it fit into the illustration. Apply the radial gradient as you can see on the picture below.

Select the lower part of the illustration (the part that actually represents the inside of the sheet) and set the Fill color to #F1F2F2.

Under the Object select Path > Offset Path. Set the value for Offset to -2. Apply the radial gradient as is shown on the picture below.

Creating the Eyes

Since we are creating a cute ghost we will create big confused eyes to make it more interesting.

Grab the Ellipse Tool (L) from the Tool Panel and create the ellipse. Duplicate it (Ctrl / Cmd + C, Ctrl / Cmd + F) and holding a Shift key on the keyboard move it to the right side. Make sure to scale down the copy.

Select both ellipses and under the Pathfinder Panel hit the Unite button. It will turn our ellipses into one shape. Under the Object select Path > Offset Path. Set the value for Offset to -2.

Let’s apply some colors. Set the Fill color of the larger shape to #BCBEC0 and apply the radial gradient to the smaller shape. This way we are creating an illusion that someone is really under the sheet.

With the Ellipse Tool (L) create two circles, one bigger and one smaller. Set the Fill color to #414042.

Select both of them and under Object select Path > Offset. Set the value for Offset to -3. Change the Fill color to black (#000000).

We need just two white ellipses for the reflection. Select all eye elements and Group them (Ctrl / Cmd + G).

With minor adjustments and some polishing our cute ghost is done!

The Final Word

Some graphic artists are using the Mesh Tool in combination with a reference image. The image is helping a lot. This way you have a preview of the object you are creating. You are able to follow all the paths, shapes, highlights and shadows. If you don’t have a reference image you can always make a quick sketch or a complete drawing to use as a guide.

In this Illustrator tutorial we did it just with help of our imagination. The main purpose of this tutorial was to demonstrate how the Mesh Tool can be very useful in creating irregular gradients. As you could see, all paths and anchor points are quite editable (you can change the number, position and the angle of anchor points) so there is not much room for making mistakes. I encourage you to try this technique by creating different kinds of illustrations, and, do not hesitate to post your results.

Hope you like our little ghost. Thank you for following along.

(rb)


Taking A Customer From Like To Love: The UX Of Long-Term Relationships

Advertisement in Taking A Customer From Like To Love: The UX Of Long-Term Relationships
 in Taking A Customer From Like To Love: The UX Of Long-Term Relationships  in Taking A Customer From Like To Love: The UX Of Long-Term Relationships  in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

What do you mean “improve�? I charged him correctly, didn’t I?.

My manager looked at me, disappointed:

Yes, Des, you charged him correctly. But a vending machine can do that, too. They show up on time; they’re more accurate; I don’t pay them by the hour; and they’re never hungover. Your job is to do something that a vending machine can’t do. Your job is to make our customers happy; give them a good experience; bring them back here again. Get it?

I started to wonder. This was a gas station; how could I deliver a “good experience�? Surely, customers just want to get in and get out. Nonetheless, if I wanted to keep the job, I’d have to try. I started chatting to customers and casually asking questions. Did they find everything they needed. Could we order in a particular newspaper for them? Do they have our phone number in case they need to check whether we carry something? Why did they stop buying from the bakery? Customers regard gasoline as a cost that they have no say about. They enter the store annoyed at having to spend fifty bucks. My job was to change that. I got it.

MBAs call this “customer experience,â€� although when it’s spelled out so plainly, it sounds more like common sense. And like most common sense, it’s rarely that common — especially in the world of subscription software, where we need customers to stick around.

User experience designers are great at making software friendly and usable for new customers. We design clean, clear sign-up forms, smooth on-boarding experiences, and even helpful blank slates once users are inside the app. Once customers have used the software for some time and have integrated it in their workflow, their relationship with the software becomes more complex. UX designers have no stencils for designing “how the customer feels about the software after six months.� This matters because the software-as-a-service (SaaS) model depends on loyalty, on the idea that customers won’t flinch when they see your monthly charge.

Competing On Service

Initially, all markets compete on price. However, competing on price simply isn’t relevant with Web apps, because they are all in the same $0 to $99 per month bracket. Think about it: what sane person would switch project management tools just to shave ten bucks off their monthly costs?

We have reached the point where the service part of SaaS is most relevant, the point where the experience your customers have with your company will determine whether they stick or switch. Say you’ve been paying $50 a month for your time-tracker for the last three years. Have you enjoyed the service? Have you ever been personally thanked for your loyalty? Do you feel that the provider values your $1,800?

Customers Who Don’t Feel Valued Leave

The Rockefeller Corporation studied why customers leave one company for a competitor and found the following:

Customers Leave in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

Look at what’s not here. No mention of price or quality. How you make customers feel is what drives their loyalty, and it’s here where website owners are in trouble. Website owners are disconnected from their customers, save for a conference party or survey each year. If you asked them to introduce you to 10 of their customers, most would struggle, grimace and then get a developer to break out the SQL. Imagine trying to run a bar, convenience store, hair salon — heck, any service — with that level of apathy towards the folks who pay your wages. It shouldn’t be surprising that your customers are willing to jump ship the second a competitor launches a sexy iPhone app. If you’ve never cared about your customers, why would they care about you?

Warren Buffett talks about building a moat around your business to make it untouchable. The strongest moat you can build is one based on strong relationships. Low prices can always be beaten. Stunning design ages quickly and can easily be copied. Impeccable uptime can be matched, and your features copied. However, a good customer relationship is unique, and loyal customers are hard to steal.

Some Things You Can’t Wireframe

Wireframes and mock-ups are excellent for figuring out and discussing screen layout. You can follow all the rules of wireframing to create a compelling user experience, but you can’t wireframe how a customer feels after 15 months of using your software. To deliver a compelling experience, you need to also consider “touchpoints� and “timepoints.�

Touchpoints Make It Holistic

Experience Matrix in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

Touchpoint diagrams help you see the various ways in which customers come into contact with your software. The diagram above from a holiday home website shows that the mobile experience is bad for non-iPhone customers, and that email and phone support should be improved. An amazing website is of no use if your call-center staff is rude or your developer is a jerk to customers on Twitter. Great experiences are about getting everything right; it goes well beyond fancy sign-up forms, cute mails and game-ified tutorials. Sure, all those things help, but the customer experience has to be comprehensive. Quality is fractal. Your customers will judge your company based on all of the experiences they have with it, not just those dripping with CSS3 effects. Using a touchpoint matrix such as the one above will help ensure that you’re considering all of the experiences your customers will have.

Timepoints Make It Long Term

Funnel in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

Anyone who has relied on metrics for customer acquisition will be familiar with some variant of the funnel above. We start with a lot of visitors, and convert a small few of them into customers. While this scenario is rather contrived and rosy, it does provide a way to measure different parts of your Web app. It does not, however, look at what happens next. If you ignore your paying customers, and they hear from you only through their invoices, then you can expect the relationship to deteriorate over time. Here’s how that goes:

Likelove Chart1 in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

We need it to go more like this:

Likelove Chart2 in Taking A Customer From Like To Love: The UX Of Long-Term Relationships

Improving Your Customer Experience

Achieving this requires that you put a plan in place and put someone in charge of customer communication. There is no universal method that works for all software; it’s an iterative process. Your customers need just enough personal communication to feel valued, while not feeling like they’re being nagged constantly. As a start, I’ve prepared the simple questions below; someone on your team should be able to answer yes to all of them.

Test Your Relationships

  • Do you greet new members, introduce yourself and let them know that they can contact you at any time?
  • Do you check in with them after they’re settled in to see how they’re doing and to see whether they’re making the most of your app?
  • Do you talk to your users about new features before and after implementing them?
  • Do you send them the right types of messages at the right time?
  • Do you check in with your customers after their first year to thank them for their loyalty?
  • Can you easily tell the difference between your most loyal customers and yesterday’s sign-ups?
  • Can you tailor your communications to different types of users?
  • Can you name 20 of your customers and tell me something about them?

There is no shortage of questions you could add to this, but I find this initial set is enough to distinguish those who genuinely care about their customers.

Cut The Excuses

There are plenty of reasons why one might believe that this change is too hard to make. App owners will argue that their time is better spent adding features and fixing bugs. This is only partially true. Your customers are with you now without those planned features and with those bugs. I’m not arguing that you should ignore these tasks, just that those tasks are not the only important ones. Recall why customers leave: it’s not likely just because your competitor has launched an iPhone app. That’s one straw, but the camel’s back is already overloaded.

What If I Don’t Have Time?

Do you not have time to invest in keeping customers happy? The rule of retention is that you must be willing to spend as much to keep a customer as you did to acquire them. Leaky buckets don’t fill up quickly. Software such as Intercom makes this degree of customer insight and communication far more manageable. (Disclaimer: I believe in this so strongly that I now work full time on Intercom.)

Ic-smashing in Taking A Customer From Like To Love: The UX Of Long-Term Relationships
Intercom is the first of a new wave of tools aimed at enabling Web app and website owners to get to know their customers.

Too Much Feedback?

No one can afford to ignore their customers. This doesn’t mean that you must do everything they say; it means you should listen and respond. Too much feedback is a good problem to have. Rather your customers tell you what’s on their mind than silently disengage, forgetting about you until their credit-card bill arrives. By that point, you’re already history.

Delivering Customer Experiences

For one year straight, I spent one day every week speaking with customers of one of our apps. Before I started this, they were simply rows in a database. By the time I was finished, I had had a conversation with over a thousand people. I heard about what we got right, what needed improvement, and why we were losing customers. Very useful stuff.

Users were delighted to hear from us, because it reminded them that we’re more than a set of pages and a monthly debit. We started a customer blog and featured a few customers each week. We also added their logos to our home page. To customers, this is the business equivalent of being taken home to meet the parents. It shows a real personal commitment. These actions persuaded our customers to give honest regular feedback and to let us know when we disappointed them. We’d rather they say it to us than run into the open arms of a competitor.

Wufoo sent all of its customers Christmas cards in its first year. That was a huge hit. It was hardly surprising that by the following year they had too many customers to do it again. As a start-up, you have to play to your strengths. A small customer base offers you a big opportunity to deliver amazing service. Scaling that experience can be tricky. There is software that will help, but, again, solving this is no small challenge.

Start It Today

As a simple next step, why not take your first 10 and most recent 10 users, drop them an email, and ask if they’ll take a phone call. Let them know you’re there and that you’d love to hear their thoughts. You’ll be amazed at what you learn, and I doubt you’ll stop at 20.

Additional Resources

  • Intercom
    A product aimed at solving the problems of talking to customers en masse.
  • “What Happens With Feedback,â€� Contrast
    A post explaining how to ask for and act on feedback.
  • Customer Experience, Wikipedia
    A good overview of the field, including case studies of companies that invest in experience.

(al)


© Des Traynor for Smashing Magazine, 2011.


Writing CSS For Others

Advertisement in Writing CSS For Others
 in Writing CSS For Others  in Writing CSS For Others  in Writing CSS For Others

I think a lot of us CSS authors are doing it wrong. We are selfish by nature; we get into our little bubbles, writing CSS (as amazing as it may be) with only ourselves in mind. How many times have you inherited a CSS file that’s made you say “WTF� at least a dozen times?

Labyrinth-comic in Writing CSS For Others

(Image: Toca Boca)

HTML has a standard format and syntax that everyone understands. For years, programmers have widely agreed on standards for their respective languages. CSS doesn’t seem to be there yet: everyone has their own favorite format, their own preference between single-line and multi-line, their own ideas on organization, and so on.

A New Way of Thinking

Recently, I have begun to think that CSS authors could take a leaf from the programmers’ book. We need to write CSS that others can understand and use with ease. Programmers have been writing sharable code since day one, and it’s high time that CSS be written with as much organization and openness.

In writing inuit.css and working on a huge front-end framework at my job, it has become more apparent to me that writing code that can be easily picked up by others is extremely important. I wouldn’t say that I’ve nailed everything yet, but I’ll share with you some things that I think are vital when writing code, specifically CSS, that will be used by others.

First, the reasoning: my number one tip for developers is to always code like you’re working on a team, even if you’re not. You may be the only developer on your project right now, but it might not stay that way:

  • Your project could be taken to another developer, agency or team. Even though this is not the best situation to find yourself in, handing over your work smoothly and professionally to the others is ideal.
  • If you’re doing enough work to warrant employing someone else or expanding the team at all, then your code ceases to be yours and becomes the team’s.
  • You could leave the company, take a vacation or be off sick, at which point someone else will inherit your code, even if only temporarily.
  • Someone will inevitably poke through your source code, and if they’ve never met you, this could be the only basis on which they judge your work. First impressions count!

Comments Are King!

One thing I’ve learned from building a massive front-end framework at work and from producing inuit.css is that comments are vital. Comments, comments, comments. Write one line of code, then write about it.

It might seem like overkill at first, but write about everything you do. The code might look simple to you, but there’s bound to be someone out there who has no idea what it does. Write it down. I had already gotten into this habit when I realized that this was the same technique that a good friend and incredibly talented developer, Nick Payne, told me about. That technique is called “rubber-duck debugging�:

… an unnamed expert programmer would keep a rubber duck by his desk at all times, and debug his code by forcing himself to explain it, line by line, to the duck.

Write comments like you’re talking to a rubber duck!

Good comments take care of 99% of what you hand over and — more importantly —  take care of your documentation. Your code should be the documentation.

Comments are also an excellent way to show off. Ever wanted to tell someone how awesome a bit of your code is but never found the chance? This is that chance! Explain how clever it is, and just wait for people to read it.

Egos aside, though, comments do force you to write nicer code. I’ve found that writing extensive comments has made me a better developer. I write cleaner code, because writing comments reminds me that I’m intending for others to read the code.

Multi-Line CSS

This issue really divides developers: single-line versus multi-line CSS. I’ve always written multi-line CSS. I love it and despise single-line notation. But others think the opposite — and they’re no more right or wrong than I am. Taste is taste, and consistency is what matters.

Having said that, when working on a team, I firmly believe that multi-line CSS is the way to go. Multi-line ensures that each CSS declaration is accounted for. One line represents one piece of functionality (and can often be attributed to one person).

As a result, each line will show up individually on a diff between two versions. If you change, say, only one hex value in a color declaration, then that is all that needs to be flagged. A diff on a single-line document would flag an entire rule set as having been changed, even when it hasn’t.

Take the following example:

Cfo-01-700 in Writing CSS For Others

Above, we just changed a color value in a rule set, but because it was a single-line CSS file, the entire rule set appears to have changed. This is very misleading, and also not very readable or obvious. At first glance, it appears that a whole rule set has been altered. But look closely and you’ll see that only #333 has been changed to #666. We can make this distinction far more obvious by using multi-line CSS, like so:

Cfo-02 in Writing CSS For Others

Having said all this, I am by no means a version-control expert. I’ve only just started using GitHub for inuit.css, so I’m very new to it all. Instead, I’ll leave you with Jason Cale’s excellent article on the subject.

Furthermore, single-line CSS makes commenting harder. Either you end up with one comment per rule set (which means your comments might be less specific than had they been done per line), or you get a messy single line of comment, then code, then comment again, as shown here:

Cfo-03 in Writing CSS For Others

With multi-line CSS, you have a much neater comment structure:

Cfo-04 in Writing CSS For Others

Ordering CSS Properties

Likewise, the order in which people write their CSS properties is very personal.

Many people opt for alphabetized CSS, but this is counter-intuitive. I commented briefly on the subject on GitHub; my reasoning is that ordering something by a meaningless metric makes no sense; the initial letter of a declaration has no bearing on the declaration itself. Ordering CSS alphabetically makes as much sense as ordering CDs by how bright their covers are.

A more sensible approach is to order by type and relevance. That is, group your color declarations together, your box-model declarations together, your font declarations together and so on. Moreover, order each grouping according to its relevance to the selector. If you are styling an h1, then put font-related declarations first, followed by the others. For example:

#header {
   /* Box model */
   width: 100%;
   padding: 20px 0;
   /* Color */
   color: #fff;
   background: #333;
}

h1 {
   /* Font */
   font-size: 2em;
   font-weight: bold;
   /* Color */
   color: #c00;
   background: #fff;
   /* Box model */
   padding: 10px;
   margin-bottom: 1em;
}

Ordering CSS Files

Ordering CSS files is always tricky, and there is no right or wrong way. A good idea, though, is to section the code into defined groups, with headings, as well as a table of contents at the top of the file. Something like this:

/*------------------------------------*\
   CONTENTS
\*------------------------------------*/
/*
MAIN
TYPE
IMAGES
TABLES
MISC
RESPONSIVE
*/

/*------------------------------------*\
   $MAIN
\*------------------------------------*/
html {
   styles
}

body {
   styles
}

/*------------------------------------*\
   $TYPE
\*------------------------------------*/

And so on.

This way, you can easily read the contents and jump straight to a particular section by performing a quick search (Command/Control + F). Prepending each heading with a dollar sign makes it unique, so that a search will yield only headings.

The “Shared� Section

All CSS files should have a section for sharing, where you tether selectors to a single declaration, rather than write the same declaration over and over.

So, instead of writing this…

/*------------------------------------*\
   $TYPE
\*------------------------------------*/
h1 {
   font-size: 2em;
   color: #c00;
}

h2 {
   font-size: 1.5em;
   color: #c00;
}

a {
   color: #c00;
   font-weight: bold;
}

#tagline {
   font-style: italic;
   color: #c00;
}

… you would write this:

/*------------------------------------*\
   $TYPE
\*------------------------------------*/
h1 {
   font-size: 2em;
}
h2 {
   font-size: 1.5em;
}
a {
   font-weight: bold;
}
#tagline {
   font-style: italic;
}

/*------------------------------------*\
   $SHARED
\*------------------------------------*/
h1, h2, a, #tagline {
   color:#c00;
}

This way, if the brand color of #c00 ever changes, a developer would only ever need to change that value once. This is essentially using variables in CSS.

Multiple CSS Files For Sections, Or One Big File With All Sections?

A lot of people separate their sections into multiple files, and then use the @import rule to put them all back together in one meta file. For example:

@import url(main.css)
@import url(type.css)
@import url(images.css)
@import url(tables.css)
@import url(misc.css)
@import url(responsive.css)

This is fine, and it does keep everything in sections, but it does lead to a lot more HTTP requests than is necessary; and minimizing requests is one of the most important rules for a high-performance website.

Compare this…

Firebug-1 in Writing CSS For Others

… to this:

Firebug-2 in Writing CSS For Others

If you section and comment your CSS well enough, using a table of contents and so forth, then you avoid the need to split up your CSS files, thus keeping those requests down.

If you really want to break up your CSS into multiple style sheets, you can do that — just combine them into one at build time. This way, your developers can work across multiple files, but your users will download one concatenated file.

Learning From Programmers

Programmers have been doing this for ages, and doing it well. Their job is to write code that is as readable as it is functional. We front-end developers could learn a lot from how programmers deal with code.

The code of my good friend (and absolutely awesome chap) Dan Bentley really struck a chord with me. It’s beautiful. I don’t understand what it does most of the time, but it’s so clean and lovely to look at. So much white space, so neat and tidy, all commented and properly looked after. His PHP, Ruby, Python or whatever-he-decides-to-use-that-day always looks so nice. It made me want to write my CSS the same way.

White space is your friend. You can remove it before you go live if you like, but the gains in cleanliness and readability are worth the few extra bytes (which you could always cut back down on by Gzip’ing your files anyway).

Make the code readable and maintainable first and foremost, then worry about file size later. Happy developers are worth more than a few kilobytes in saved weight.

Code Should Take Care Of Itself

So far, we’ve talked about people maintaining your code, but what about actually using it?

You can do a number of things to make the life of whoever inherits your code much easier — and to make you look like a saint. I can’t think of many generic examples, but I have a few specific ones, mainly from inuit.css.

Internationalize Your Selectors

Inuit.css has a class named .centered, which is spelt in US English. CSS is written in US English anyway, so we’re used to this; but as an English developer, I always end up typing UK English at least once in a project. Here is the way I have accounted for this:

.centred, .centered {
   [style]
}

Both classes do the same thing, but the next developer doesn’t have to remember to be American!

If your selectors include words that have US and UK spelling variants, include both.

Let the Code Do the Heavy Lifting

Also in inuit.css, I devised a method to not need class="end" for the last column in a row of grids. Most frameworks require this class, or something similar, to omit the margin-right on the last item in a list and thus prevent the grid system from breaking.

Remembering to add this class isn’t a big deal, but it’s still one more thing to remember. So, I worked out a way to remove it.

In another major inuit.css update, I removed a .grid class that used to be required for every single grid element. This was a purely functional class that developers had to add to any <div> that they wanted to behave like a grid column. For example:

<div class="grid grid-4">
    …
</div>

This .grid class, in conjunction with the .grid-4 class, basically says, “I want this <div> to be a grid item and to span four columns.� This isn’t a huge burden on developers, but again, it’s one more thing that could be removed to make their lives easier.

The solution was to use a regex CSS attribute selector: [class^="grid-"]{}. This says, “Select any element whose class begins with .grid-,� and it allows the developer’s mark-up to now read as follows:

<div class="grid-4">
    …
</div>

CSS attribute selectors may be less efficient than, say, classes, but not to the point that you’d ever notice it (unless you were working on a website with massive traffic, like Google). The benefits of making the mark-up leaner and the developer’s life easier far outweigh the performance costs.

Do the hard work once and reap the benefits later. Plus, get brownie points from whoever picks up your project from you.

Be Pre-emptive, Think About Edge Cases

An example of being pre-emptive in inuit.css is the grid system. The grids are meant to be used in a series of sibling columns that are all contained in one parent, with a class of .grids. This is their intended use. But what if someone wants a standalone grid? That’s not their intended use, but let’s account for it should it happen.

Note: inuit.css has changed since this was written, but the following is true as of version 2.5.

Another and perhaps better example is the 12-column grid system in inuit.css. By default, the framework uses a 16-column grid, with classes .grid-1 through .grid-16 for each size of column.

A problem arises, though, when you attempt to switch from the 16-column system to the 12-column system. The .grid-15 class, for example, doesn’t exist in a 12-column layout; and even if it did, it would be too big.

What I did here was to make .grid-13 through .grid-16 use the exact same properties as .grid-12. So, if you switch from a 16-column layout to a 12-column one, your .grid-13 through .grid-16 would’t break it — they would all just become .grid-12s.

This means that developers can switch between them, and inuit.css will take care of everything else.

Pre-empt the developer’s next problem, and solve it for them.

That’s It

There you have it: a few humble suggestions on how CSS authors can write code that is perfect for other developers to inherit, understand, maintain, extend and enjoy.

If you have any other tips, do please add them in the comments.

(al)


© Harry Roberts for Smashing Magazine, 2011.


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