Click here to check if anything new just came in.
May 10 2012
3 fun time-watching apps: Qlocktwo, Uniqlo Wake Up, Doubletwist Alarm Clock
Time is the most naked manifestation of our irrelevance and perhaps that is why I am fascinated by all means of time-telling. Sundials, hour glasses, watches, clocks and now in the age of iPhone, time-watching apps. In the past I have written about the Nooka app for the iPhone. Today, I got a handful of new apps that are worth checking out:
1. Time in words — Qlocktwo
It is a very minimal clock for iPhone and iPad. It costs 99 cents but I like the idea of the simple black screen telling me what time it is. Built by creative design agency Biegert & Funk, who have also created similar watches and clocks. Download from the iTunes store. (via Ultralink)
2. Uniqlo Wake Up
It is so wonderful and delightful and meets my very simple requirement from an app: high emotional quotient. It is bright, cheery and it comes with alarm tones that mimic the weather, time and day of the week. It is intelligent and fun. It works both on Android and iOS and is free, thanks to Uniqlo, a Japanese clothing brand, whose clothes I will never fit into. As an aside, this is a perfect brand extension vehicle and what brand-advertising should be in the future.
The alarm music, which is automatically created based on the weather, time, and day of the week, was co-written by 51st annual Grammy nominee Cornelius (Keigo Oyamada) and Yoko Kanno, who is active in songwriting across a wide range of genres including video games and anime (COWBOY BEBOP, Ghost in the Shell: Stand Alone Complex, Macross). The app allows users to share a record of their awakening – specifically, the time, weather, and temperature at the moment they stopped the alarm – via social media (Facebook, Twitter, RenRen, Weibo). In addition, the “wake up records” shared by users around the world are displayed in a part of the app entitled WORLD WAKE UP.
3. Doubletwist Alarm Clock
Doubletwist Alarm Clock has to be by far the most stunning of all time-watching apps on the market. In fact it is so good that I would consider switching to Android just for this app, for it is not available on iOS. The details on this app are meticulous and the design is what Steve Jobs himself would have approved. Not a surprise, considering its creator Sebastiaan de With once worked for Apple. The app which displays time in two modes – flip and analog comes with features such as recurring alarms, multiple alarms and using library to set songs for wake-up sounds. The app costs $0.99 but is worth every penny! (Also, check out this interview with him to better understand his design philosophy.)
And as a bonus, check out this Habitco Day Maker project on Kickstarter.
With Day Maker, a bedside morning station/iPhone charger, you can add a little extra ‘Pop’ to your day when it’s time to rise and shine. And if you’re not quite ready to face the day, snooze on effortlessly by pushing your iPhone back into its slot. With Day Maker, waking on a schedule has never been easier or more fun. Or relaxing. Using Day Maker is a pleasure because it works exactly as you would imagine, just like a toaster. Once you set your iPhone’s timer, simply load it into an open slot, press down gently, and you’re ready to go. And for a little added fun, we’ve even added a pull tab on the back, so you can set and pop multiple iPhones all at once.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Monetizing music in the post-scarcity age
- Connected world: the consumer technology revolution
- Flash analysis: Steve Jobs
Interaction Design In The Cloud
Interaction designers create wireframes in tools such as Adobe Illustrator, OmniGraffle and Microsoft Visio. Originally, these wireframes were primitive shapes drawn to represent various UI elements. Many of us cannot imagine life without them.
There are, however, reasons to consider moving to the cloud to do interaction design. In short, today’s cloud-based tools are:
- Optimized for collaboration,
- Editable anywhere,
- Interactive,
- Published in real time,
- Self-maintaing (the user doesn’t need to update software),
- Payable monthly,
Emailing your old static designs will feel old fashioned once you see what these tools can do. Going a step further, there are tools for the user review process, too. Just upload your ideas, from simple mockups to final layouts, link them together, and share them for comment.

(Image credit: baldiri)
This article walks you through the current selection of cloud-based tools and provides some recommendations. The number of offerings and amount of functionality are pretty vast. For the sake of brevity, we’ll address two functions: prototyping and wireframing. But if you’re intrigued, you might want to explore cloud-based image editing, mind-mapping tools and other UX activities. These tools are already out there, and surprisingly good.
Prototyping
For our purposes, prototyping involves uploading images (screens) and linking them together via hotspots. Once these are set up, the prototype is published and available to reviewers for usability testing, commenting or both.
Review criteria
Here are the fundamentals that a product should support in order to compete in this space:
- Quick uploading process,
- Support for several source image file formats,
- Easy linking between pages,
- Support for feedback from end users.
Some items aren’t available as of this writing:
- The ability to nudge images in line without having to recreate them;
- The ability to create interactive objects and layer them (such as a menu bar that appears on every page).
InVision
What it does
Create your screens in your favorite tool and upload them to InVision. Then add hotspots; a hotspot links to another page. This is great if you live and die by the comp (Photoshop file). For example:
- Create a new project. Think of a project as a collection of previously generated comps that you are going to tie together as a prototype via InVision.
- Upload your files to this new project (the images in this article are PNGs).
- In “Build” mode, create the hotspots. Basically, you are linking together the prototype. If you have all of the collateral that you need, this will go quite fast — exactly as you’d want it to work.



Observations
The application works as advertised. It enables the user to quickly wire up prebuilt comps, wireframes and sketches. The tutorials also explain useful actions, such as creating hotspots that will be the same on multiple pages (these are called “templates” in InVision).
Speaking of templates, they expose both a major advantage and a major disadvantage of this tool: if the uploaded images are not placed perfectly, then the templates will not line up properly. One would want the ability to adjust the x and y coordinates of any image so that they line up perfectly without having to change the source files. On the upside, if you’ve done the prep work right or you’ve made your hotspots large enough, you can fudge this a bit, and the templates really accelerate the build process.
A number of usability issues have made me scratch my head. For example, the first time I tried adding a hotspot to the search input field, the “Link to…” modal dialog was off to the left side of the browser, which made it impossible to save or cancel the dialog. I then tapped the “Update screen” at the bottom of app to refresh the screen. It turns out that in InVision speak, “Update” = “Replace.” I was afraid to refresh the browser because there is no indication of whether the application saves automatically. So, in the end, I switched to “Preview” and then back to “Build.”
Once you’re familiar with the quirks, however, the application is useful. If you’re a designer or want to work offline to generate wireframes, then give this app a hard look.
- Upload process
Drag and drop, or browse the file system - Supported file formats
JPG, PNG and GIF - Linking pages
Easier than the others tested because of templates - User feedback
Easy, nested - Marquee clients
eBay, Google, Intuit, Whole Foods and many others. Very impressive.
FieldTest
In spirit, FieldTest (in private beta) serves the same space as InVision. The designer uploads prebuilt comps, wireframes and the like to FieldTest, ties them together, and then publishes them for review. One advantage is that FieldTest leverages device gestures. In short, you can “play” FieldTest prototypes on your iOS, Android or Windows Phone 7 device and have it respond to gestures. Combined with the built-in screen transitions, this is a powerful function for mobile app designers.
As with InVision, screens are grouped into “prototypes” (projects). Including them in a project means that they can be linked to and from other screens. The process is the same, too: create the prototype collateral, link it together via hotspots, and publish it for review. For comparison’s sake, here are the hotspot configurations for the two apps.


This demonstrates the differences in approach. On the top is FieldTest. It allows a user to choose between gestures (the prototype I built was an iPhone app). The gestures are tap, long tap, swipe, swipe left and swipe right. Multiple gestures can be active for the same hotspot, which is particularly cool and gives a realistic experience of various actions. On the bottom is InVision, whose ace is templates. The author can create a template for several controls that appear together, and they can reuse that template on several screens.
Observations
If I were to choose between these prototyping tools, FieldTest would be my choice, largely because I build mobile applications. Having listeners for multiple gesture types makes for a more realistic prototype. If the app were Web-based, then InVision is more mature.
FieldTest still has work to do, though. In the beta, gestures such as up and down are missing. Templating as InVision does is really useful. It streamlines the addition of hotspots. Another area for improvement is in comments, and allowing a prototype’s end user to provide feedback.
There are other usability nits. For example, FieldTest includes a status bar at the top of each screen. I have yet to figure out why someone would want this, and it’s not optional. So, if you take a screenshot on an iPhone, you’ll have to edit it to remove this status bar, only for FieldTest to put it back.
Try it out for yourself on the prototype built for this review. Please note, there is no down gesture, so if you want to try that, gesture from right to left (like when advancing through pictures in iPhoto).
- Upload process
Browse the file system - Supported file formats
JPG, PNG and GIF - Linking pages
Fairly easy - User feedback
Enables gestures on the device, which is great. - Marquee clients
In private beta
ClickDummy
ClickDummy is another competitor in this space and has the same process as the others. The user uploads materials and then links them together through hotspots. The link function is a “tool” contained in a drawer (i.e. a UI element that slides in and out from one side of the screen).

Observations
This drawer seems innocent enough, but it creates unnecessary hurdles for the user. In an attempt to simplify the problem, it has added confusion and multiple steps to an easy process. How? The user has to toggle between this tool drawer and the page-picker drawer a lot. The page picker also has to be overloaded in order to provide both functions (selecting a page, as in navigation, and selecting a page, as in a hotspot target).
A second issue: the website says that the user can drag and drop images onto the pages drawer. This doesn’t work in my (Chrome) browser. It instead replaces the current page with the image. After a panicked “Backspace,” the user is restored to their project but has lost their location and has to start over.
Another point: this all-important drawer is closed when the app launches. It took about five minutes to determine that the app was working, and this after weeks of looking at apps in this space.
Lastly, unlike both of the apps reviewed above, this one has no compelling feature that makes the additional effort worth the time. In future, hopefully, the addition of some product differentiation, combined with a rework of the primary use case, would make this application worth another look.
You can see the output from this exploration for yourself.
- Upload process
Drag and drop, or browse the file system. - Supported file formats
JPG, PNG and GIF - Linking pages
Most difficult of those tested - User feedback
Easy to test, but comments require registration - Marquee clients
Not provided
Wireframes
Think of a wireframe as a black and white low-fidelity screen mockup. The mockups I create also include call-outs to give the development team additional context.
In the process, the user will create an account, create a project, and then land on a blank screen. The user then drag and drops UI controls (radio buttons, text input fields and so forth) onto the page.
Once the project is saved, a permalink can be given out for people to see your work. If you change a screen, it will auto-magically show your updates the next time that URL is opened (or refreshed) by a team member. This last point is what the cloud is all about: everyone always has the same (i.e. current) version of your work. Changes are instantaneously available whenever the wireframe is saved.
Compared to most offline tools, the library of available objects is focused on low-fidelity UX. Don’t expect to create gradients or to use a pencil tool.
Review criteria
Here are some basics that are fairly universal in my experience:
- Robust set of standard UI controls
If the tool doesn’t have off-the-shelf drop-downs, toggles, cover flows and the rest, then creating those controls will require additional work. - Good as a documentation medium
Plan on your development team using your wireframes to dictate the logic and layout of the application. - Good for making wireframe clones, templates or whatever you want to call them
Not surprisingly, all of the iPhone wireframes I create have the app’s name at the top. I want to do this on the first wireframe and not have to do it again. - Responsive
It all takes place in a Web browser. If the application is slower than a locally running application, then your productivity will suffer. Case in point: a year or two ago, I created about 50 wireframes for a project. Each page took a minute to load. To see my changes reflected, another minute. Trust me, this gets old quickly. - Not written in Flash
“Dear development teams who write these tools: I love Flash, Flex and the rest. Not as much as I love my iPad, however. I want to edit my work across form factors. It’s all drag and drop, right?”
Here’s what you won’t see right away from the tools out there:
- An extensive stencil library or the ability to easily create and reuse stencils
OmniGraffle excels at this. Don’t expect Yahoo to create a stencil library for Mockingbird anytime soon. - A wide user base
Momentum is building, and there are believers. This is still a minority position and will be for some time. I would say customer support is great, but the more people use these tools, the better the tools will become. - Font selection
I won’t dwell on this, but you can tell there is still some lively debate about what a wireframe should and should not communicate just by looking at what features are included in any given product.
Balsamiq
As with the prototyping tools, wireframes — or “mockups” in Balsamiq-speak — are organized into projects. From there, things change. Tools like InVision and FieldTest assume that you have created your pages or screens in another tool. In Balsamiq (and Mockingbird, discussed next), the tool is designed for wireframe creation, with extremely limited functionality for prototyping.
- Create a new mockup.
- Drag and drop an off-the-shelf UI control from the ones available.
- Configure the control to your needs. This is noteworthy, because Balsamiq provides a number of important options. For example, there is one toggle to put the iPhone in landscape orientation instead of portrait.
- Add the rest of your UI controls; document for the development team; and publish.



Observations
Having worked with some other tools, I’ve become a fan of Balsamiq. A great UI control library and easy object configuration are two areas where this tool excels. There are some areas for improvement, though. First, and I’m sure the development team is tired of hearing it, the sketching style is fine for those who understand low-fidelity mockups, but you probably wouldn’t want to show the mockups to your CEO.
A second gripe is that the editing tool is built in Flash, so work is limited to platforms that support it.
On the upside, a few non-obvious pros:
- The icon set is great. I’ve noticed that only one icon is not in the box: Bluetooth. Anything else I’ve needed has been available.
- In addition to drag and drop, there’s a great quick-add feature. After typing in a few characters of the name of a UI control, a filtered list appears, allowing you to add controls quickly.
- Balsamiq has an odd markup language that, once mastered, allows the user to add common things. For example,
+ Add and sub-menu, >translates to:
![]()
And here’s the rundown:
- UI controls
More than 70, including iPhone-specific - Good for documentation?
Call-outs are one of the controls; drag and drop them onto the canvas. - Good at duplicating screens?
Yes. - Responsive?
Yes. You will forget you are working in the cloud. - Written in Flash?
Yes.
Mockingbird
Mockingbird is also a wireframing tool, and a good one at that. In some ways, it compares favorably to Balsamiq: Mockingbird’s editor isn’t Flash-based; it uses an unobtrusive font; and adding UI controls is (almost) comparable to Balsamiq.
The process is similar, too. Here’s the outcome:

Observations
More professional, right? On the surface, it is more polished, but there are some subtle shortcomings. For example, one cannot left-justify text in an input field. Also, I couldn’t get the icons to all be exactly the same size (36 pixels). And so forth.
There are some logistical hurdles as well. Many of the controls are primitive. To add a call-out, like ones in yellow above, you actually have to add two objects: the yellow circle and the black text. And when a control is added via the quick-add function, the filtering text is not cleared, so after every addition, one has to clear the previous query. Put practically, this mockup took about four times as long to create as the Balsamiq version.
- UI controls
Fewer than Balsamiq, and no mobile-specific controls. - Good for documentation?
Call-outs are created with circles and overlaid text. - Good at duplicating screens?
Yes. - Responsive?
Mostly — don’t use Chrome. - Written in Flash?
No.
Mockup Builder
Another entry in the wireframing space is Mockup Builder. Functionally, it lies somewhere between Mockingbird and Balsamiq. It has a fairly good library of controls — in fact, it’s the only cloud-based solution with native Android controls (Ha!). Moreover, I find its aesthetic better than that of competitors.
Like the others, Mockup Builder starts with a blank canvas, and the user drag and drops controls onto the canvas for configuration.
Here’s the mockup created for this review:

Again, the mockup is fairly clean, but there are some issues: the icons use some funny clipping, and they do not scale properly. The user cannot toggle the various defaults for the iPhone, such as the gray bars at the top and bottom of the screen.
Observations
This tool is a little too buggy for everyday use. For example, the notes to accompany illustrations are in Lorem Ipsum text. Also, when copying text from the Web and pasting into a multi-line text area, the text does not wrap to the control’s width — meaning that the text shows exactly one line, and the user has to use the control’s handles to wrap it. I also wanted to show two paragraphs of text but could not figure out how to insert a “Return” in the text.
Another grievance: the tool could use more polish. For example, the screen surface on the iPhone control is narrower than the keyboard, so the user has to resize the keyboard by hand. When that’s done, the “e” is missing in the button. I understand that these are minor, but one would expect these t’s to be crossed off before moving away from a beloved tool like OmniGraffle.
- UI controls
More than the others, including iPhone- and Android-specific ones - Good for documentation?
Call-outs are one of the controls; drag and drop them onto the canvas. - Good at duplicating screens?
Yes. - Responsive?
Yes. - Written in Flash?
No.
Conclusion
Cloud-based tools are now available and well designed for UX work. Many of the features in the offerings above are not available in software running locally on your machine. While this space is still growing, I’ve been working in the cloud for the past two years and cannot imagine going back.
Collaboration is instantaneous, and the tools are optimized for the right activities: wireframing and testing with users. In fact, these apps have several unexpected and delightful features, and you might find yourself walking away from your favorites, too.
Of course, there are valid reasons to avoid working in the cloud. Stay with your old standbys if any of the following apply:
- Your IT department disapproves.
This is a hot-button issue. All of these tools protect your information, but this is still worth considering. - You expect the polish of offline tools.
These tools are for early adopters. Still, they are Web applications, so they will evolve. That’s what happens on the Web. You’ll just wake up one morning to find some annoyance removed or a key feature added. - Your project is big.
If you plan on a 200-screen flow, you will feel a steady degradation in performance. That said, I’ve just completed a 70-pager with one of these tools and was just starting to notice some minor falloff. - You think in terms of “deliverables,” with a complete set of create-once mockups.
Many of these tools have coauthoring functionality (if the roles are set up that way). In my experience, however, no one has actually changed anything, even if I wanted them to. - Your Internet connection is a problem.
But that’s not to say that you’ll lose data whenever the network is interrupted.
These could be a deal-breaker for some. But these tools are free to try, and some are so simple that you might get hooked in five minutes (as I did a few years ago). Almost all of the research for this article was done with free trials. Given the ease with which you can try these out, you have every reason to go out and see whether one or more is right for you.
If you have another favorite, we’d love to learn about it. The space is ever changing!
(al)
© Erik Perotti for Smashing Magazine, 2012.
May 09 2012
Facebook launches app store, seeks iPhone magic
Facebook says it is launching an app store that will allow people to get access to social apps on the network, without much heavy lifting. The company made the announcement in a blog post today. The company is hoping that the new app store will make it easy for apps to be discovered on the platform.
Facebook, lately has been trying hard to make the world aware of its role in the fast growing app economy.
For instance, it has been talking up the success of video apps such as Socialcam and Viddy, and points to how it has turbocharged the downloads on Apple’s iOS platform. Of course the success of those apps and their post-download usage is debatable, for many view them as spam. In addition, there was been some talk of social news readers losing some traction after a fast start, that has made some question Facebook’s role in the app-economy.
In a blog post on their developer blog, Facebook’s Aaron Brady notes:
In the coming weeks, people will be able to access the App Center on the web and in the iOS and Android Facebook apps. All canvas, mobile and web apps that follow the guidelines can be listed. All developers should start preparing today to make sure their app is included for the launch.
For the over 900 million people that use Facebook, the App Center will become the new, central place to find great apps like Draw Something, Pinterest, Spotify, Battle Pirates, Viddy, and Bubble Witch Saga. Everything has an app detail page, which helps people see what makes an app unique and lets them install it before going to an app.
The App Center is designed to grow mobile apps that use Facebook – whether they’re on iOS, Android or the mobile web. From the mobile App Center, users can browse apps that are compatible with their device, and if a mobile app requires installation, they will be sent to download the app from the App Store or Google Play.
Facebook is also betting on creation of paid apps and building an ecosystem around those apps.
Many developers have been successful with in-app purchases, but to support more types of apps on Facebook.com, we will give developers the option to offer paid apps. This is a simple-to-implement payment feature that lets people pay a flat fee to use an app on Facebook.com. If you are interested in the beta program, please sign up to receive more information.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Controversy, courtrooms and the cloud in Q1
- Monetizing music in the post-scarcity age
- Facebook’s IPO filing: ideas and implications
Why Jeff Bezos’ latest plan should scare fashion retailers
Amazon.com is moving into the high-fashion business, the New York Times reports, and in order to get profits from this high-margin business, the company is willing to lose a ton of money. That is bad news for the traditional retailers that may get a spanking similar to the one Best Buy got from the Seattle e-tailer.
Amazon’s decision to go after high fashion is about plain economics. Because Amazon’s costs are about the same whether it is shipping a $10 book or a $1,000 skirt, “gross profit dollars per unit will be much higher on a fashion item,” Mr. Bezos said, and it already makes money on fashion.
Amazon is going after mass brands that are a staple of most mid-market retailers like Macy’s and Bloomingdales– designers like Jack Spade and Michael Kors, for example. And so those chains should be seriously worried. Here is why:
“It’s not a place where you look at it and are, like, ‘Oh, my clothes look and feel really good,’” Andy Dunn, founder of the men’s fashion brand Bonobos, tells the New York Times.

Jeff Bezos at the Met Gala. Photo courtesy of Vogue. Click on the photo to get a full lowdown of the event and more photos.
I sort of agree with Andy. Amazon’s website today is very functional, and the design conveys convenience and discounts and treats everything as a commodity. That works well when buying a coffee machine, a book, or a DVD. It doesn’t work when buying a great pair of shoes or pants.
But Amazon doesn’t have a huge mountain to climb. The online sites for, say, Macy’s or Bloomingdales or even Nordstrom are better in terms of showing off their wares, but it’s still a pretty average experience. Amazon can easily improve their fashion retail experience and combine it with things it is really good at — like overall customer experience, after-sales service and easy shipping.
Amazon’s considerable computing capability, for example, has already been turned to fashion and the analysis of enormous amounts of shopping data. The company has also made a “disproportionate” investment in photography, said Cathy Beaudoin, the president of fashion for Amazon. The photography studio, in Kentucky, can shoot more than two images a minute, allowing the company to post new items daily on the Web that were photographed hours earlier.
Instead of static product images, models spin and pose to show off the clothing. The model’s body measurements and the clothing measurements are provided to help with sizing. And shopper-friendly advice — does the size 8 shoe run big or small? — is prominent.
Bezos seems to be pretty serious about this whole fashion thing. A decidedly unfashionable dude, he was named the honorary co-chair of the Costume Institute Benefit at the Metropolitan Museum of Art in New York City. Anna Wintour, the legendary editor of Vogue was one of the three architects of the evening, advised him to wear a pocket square with his Tom Ford tuxedo, The Times reports.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- How to navigate the new world of digital advertising
- Facebook and the future of our online lives
- Social media in Q1: commerce and discovery dominated
“Step Away” Leadership
Two weeks ago I finished reading an interesting book titled The ABC of Sales: Lessons from a Superstar by Daniel Milstein. I got the book as a free Amazon download, which was good because I thought I was downloading a book that was going to give me sales tips, and if I’d purchased it I might have been mad initially.
Instead it turned out to be a book about a guy who emigrated to the U.S. from Russia as a kid and worked his way through language difficulties and biases against people from Eastern Europe to eventually become the CEO of a major real estate financing organization that he created. It was fascinating read, even if I didn’t get what I was initially hoping for.
One of the things I found interesting is that he recognized at a certain point that he had to give up some of the control he had in his own company to progress. Not that he couldn’t keep up with the workload, which, if you read the book, is astronomical. Instead, it turns out that as successful as he was, he found that some potential business partners were put off because they didn’t want to work with a founder who was also a CEO, CFO, etc. The belief was that founders can tend to be inflexible when new ideas are presented because it’s their baby, and indeed, that’s why Steve Jobs lost his job at Apple the first time around.
Milstein took a big step at that point. He went and hired some C-level personnel and gave them the reins to basically run his company while he retained the title of CEO. This allowed him to look at his company globally while letting other people create a vision and make business deals to push the company forward financially. It’s all worked out well and he gives kudos to the people he hired to basically run his company.
It’s hard to step away from one’s vision. If you have employees, you probably have in your mind exactly what you want them to do. Sometimes, even if you don’t see it, you want to control their every move, and want them to do everything exactly as you did it.
The problem can be twofold. One, no one else will ever be exactly like you. Two, it’s possible that what you’ve been doing has been limiting the success of your business. I see this example shown often on the TV show Restaurant Impossible, where it turns out that the restaurant owner really don’t have much experience in running their restaurant, cooking, etc, which explains why they’re in trouble. The host of the show often evaluates them and tells them they need some kind of manager, either a head chef to handle all food or a floor manager to handle staff and customers, and sometimes even an accountant of some type to handle the books.
What happens to the leader? They end up being the face of the company, the greeter, the cheerleader, sometimes the top marketer and recruiter. No one buys a restaurant because they want to hide in the shadows, although some buy restaurants, hire great people to run them, and just sit back and collect their share of the profits.
If you hire well, there’s nothing wrong with that as long as you keep your eyes on the prize overall. It does take a lot of guts to let someone else lead here and there, but the benefits can be awesome.
Copyright protected by Digiprove © 2012 Mitch Mitchell
The Smashing Book #3 “Redesign The Web” Is Out!
The new Smashing Book #3 has finally arrived—freshly printed, neatly packed and ready to be shipped to you, our dear reader. We believe this is by far the best book we’ve produced so far. We are very proud and excited, and the initial verdict has been thoroughly positive, yet in the end it’s up to you to decide how valuable and useful they really are. Get your books now!
Why The Theme Of “Redesign”?
In recent years, the Web has changed—a lot. The Web designer’s tools are now advanced, and browsers are highly capable. Designers have established clever coding and design techniques, and they face new challenges and are embracing new technologies. These changes are fundamental and require us to reconsider how we approach Web design. It’s time to rethink and reinvent: it is time to redesign the Web. The new Smashing books will change the way you design websites for the better.
But are we all prepared for this? How does responsive design fit into your workflow? What UX and mobile techniques do you follow when designing websites? And if you have a redesign project on the horizon, how do you approach it and work your way through it? The books explain what you need to know in order to create effective websites today, and what you need to know to be prepared for the future. Well-known experts share practical know-how and introduce a whole new mindset for progressive, future-proof Web design.
Smashing Book #3 (Printed & eBook)
With over 40 people having worked on the project, a lot of thorough editing and consideration needed to be done to fine-tune each chapter’s content and order to make the most sense. In the end, 11 of the most outstanding articles made it into the Smashing Book #3, covering topics ranging from the business side of design to mobile approaches and responsive design.
The Smashing Book #3 covers innovative coding, design and UX techniques and discusses the peculiarities of the mobile context and emotional design. It also presents practical HTML5, CSS3 and JavaScript techniques, as well as a bulletproof workflow for responsive Web design. The book challenges you to think differently about your work, your code and your designs.
Table of Contents
Chapter keywords: JavaScript, jQuery, CSS selectors, classlist, localStorage, tutorials.
Elliot Jay Stocks introduces the new Smashing Book #3 by making us think about our workflow, the quality of our work, our industry and our community. Working in an industry that evolves at an incredible speed takes a lot of effort—at the same time, it’s what keeps us going.
A redesign is the best thing that a Web designer can experience. Yet before leaping head on into a project, we must consider the business behind the redesign. By its nature, a redesign has the potential to make a website successful, but it also has the power to destroy a perfectly good idea. Important considerations to keep in mind before engaging in a redesign project include common dangers, required research, the working process with the client and testing. Paul Boag leads you through this process step by step.
Chapter keywords: business model, redesign timing, scope of redesign, redesign considerations, realignment, project pitfalls.
Rachel Andrew Selecting a Platform for Redesign
Once you have understood the business side of the redesign project, the next step is to choose the right platform. Understanding all of the requirements of a project will save you valuable time in aligning the new functionality with the technological circumstances. Take stock of existing structures such as the CMS, e-commerce system and payment gateway. Beware of the project constraints, including the budget and wishes of the client. Only then will you be able to concentrate fully on the project, without encountering unpleasant surprises ahead.
Chapter keywords: technical requirements, CMS, eCommerce, payment gateway, refactoring, platform choice, redesign project constraints.
Ben Schwarz Jumping Into HTML5
Ben Schwarz takes away the fear that many Web developers suffer when confronted with a new technology—by encouraging experimentation. The chapter guides you through the new HTML5 elements and discusses the possibilities that come with the adaptation to these elements. This is a practical, compact guide to HTML5, with everything you need to know today in order to create flexible and maintainable websites for the future.
Chapter keywords: HTML5, semantics, semantic outlining, ARIA, client-side storage.
Lea Verou, David Storey Restyle, Recode, Reimagine With CSS3
Some CSS workarounds that have hung around from earlier days prevent us from becoming better, more efficient designers. Learn how to recode CSS to reduce the number of images, HTTP requests, presentational JavaScript and wrapper divs on the page, while making the style more flexible and maintainable. Learn about the rem unit, Flexible Box Layout, source-order independence with flex order, multiple backgrounds and gradients, background clipping, border images, transforms, transitions, box sizing and new CSS3 selectors. Restyle, recode, reimagine: because CSS3 is here to stay!
Chapter keywords: CSS3, techniques, Flexbox, multiple backgrounds and gradients, transforms, transitions, box-sizing, selectors, layout.
Christian Heilmann JavaScript Rediscovered
Even though jQuery is written in JavaScript, it is not the same; nor is it native to browsers. The large jQuery library abstracts away a lot of issues that Web developers face, yet sometimes it’s used without a real purpose. Christian Heilmann takes us back to its origins and shows us how to implement simple JavaScript solutions without resorting to jQuery, achieving the same result in a slimmer and less process-intensive way.
Dmitry Fadeyev
Techniques for Building Better User Experiences
User experience means good design, and the central aim of design is not to decorate, but to solve problems. Whether that means getting more sign-ups, inviting users to post more content or making the interface easier and faster to use, this is ultimately the sort of design that delivers a great user experience. This chapter features powerful UX techniques that you can easily apply to your products and websites. Make sure users stay on your website for the right reasons, and get an edge over the competition by improving user-targeted processes. Also, explore experimental approaches and avoid some misleading design techniques.
Chapter keywords: UX design, forms, good defaults, customer service, copywriting, storytelling, experimental techniques, design pitfalls.
Marc Edwards Designing for The Future, Using Photoshop
Because good design and user experience are almost mandatory for success today, the lines between desktop software, mobile software and the Web are increasingly blurry. We have to continually change our tools and techniques to meet new requirements. Marc Edwards addresses some of the challenges that Web designers face today and will in the future when using Photoshop. Realism, scale, screen sizes, resolutions, formats, techniques—this chapter touches on all of it. There is no reason to surrender to scaleability and liquid image requirements when using Photoshop!
Chapter keywords: Photoshop, screen sizes, pixel density, scale, gradients, shapes, color profile, mobile, Retina display.
Aaron Walter Redesigning With Personality
Any design that does not effectively establish a connection with its audience has missed its goal. Getting to know your user is just as important as knowing yourself and the personality behind the brand; this will set you apart from competitors. This chapter describes how to develop your own design persona and define the key characteristics to guide your project’s path. New technologies and techniques are not what build connections with users, but rather the empathy evoked by the personality behind them. Aaron Walter explains how to bring out the personality at the heart of your work.
Chapter keywords: personality, brand sympathy, engagement methods, design persona, voice and tone.
Aral Balkan Mobile Considerations in UX Design: Web or Native?
The native vs. Web debate is meaningless and counterproductive. All products nowadays have high demands for UX design. Web designers turn into UX designers by gaining specialized knowledge of the Web and by mastering auxiliary frameworks and their components. Not only do the aesthetics of an interaction object count, but also how the object behaves upon contact. Designing documents and designing applications requires knowledge of basic responsive design principles and progressive enhancement. This chapter helps you understand your medium, explains what exactly it means for an application to be “native,” and goes over how to choose the right tools and technologies for the job.
Chapter keywords: mobile, user experience, native applications, native as culture, interaction design principles, responsive Web design.
Stephen Hay Responsive Workflow: A Future-Friendly Approach
Web design changes quickly. In multiplatform design, where websites and apps are used on many and varied devices, we are confronted with multiple destinations. How do you go about integrating as many devices as possible? Is targeting as many different platforms as possible really important? In this chapter, Stephen Hay suggest a new design workflow for responsive Web design. A new way of thinking leads to a new way of design—the sooner you get the hang of it, the sooner you will be ready to discover what works best for your projects.
Chapter keywords: responsive Web design, device-agnostic approach, content inventory, future-friendly approach, breakpoint graphing, designing in the browser.
Andy Clarke Becoming Fabulously Flexible
There are significant upsides to responsive Web design for designers, especially in workflows that embrace flexibility. Responsive Web design still asks more questions than it answers, and it challenges the working relationships and interactions between everyone involved in every process. Andy Clarke gives you some insight into the techniques that helped him become fabulously flexible when developing responsive designs. Learn his approach to designing atoms and elements of a design first and see if it works for you. It might enable you to create many facets of the same experience within a single workflow.
Chapter keywords: Responsive Web design, design challenges, style tiles, design atmosphere, flexibility, designing components first.
Well-respected professionals have poured their heart and expertise into these contributions. To ensure quality, every chapter of this book has been thoroughly reviewed by experts, including Jon Hicks, Tab Atkins, Paul Irish, Russ Weakley, Josh Clark, Anders M. Andersen, Bryan Rieger, Joshua Porter, Ryan Carson and Elliot Jay Stocks.
Technical Details
- 340 pages, 16.5 × 24.0 cm (6.5 × 9.5 inches).
- Download a free sample (.zip, in PDF, EPUB and Kindle)
- Quality flexibound cover, with stitched binding and a ribbon page marker.
- Delivery from Berlin, Germany, only via air mail (3 to 15 working days).
- $5 worldwide shipping (check worldwide delivery times).
- Also available as an eBook (PDF, EPUB, Kindle).
- Get your Smashing Book #3 today!

Our new books: the Smashing Book 3 and Smashing Book 3⅓—The Extension. Both are available as a print bundle, as eBooks and as a complete print + eBooks Bundle.
Smashing Book #3⅓ — The Extension
With Web design, we can do much more than inform the audience. The power of storytelling and content strategy is in creating engaging, emotional connections that transcend their platform. In this book, we will review emerging navigation design patterns and understand how to employ a content strategy—which is an important process, often underestimated, and dependent on many factors.
Smashing Book 3⅓, otherwise known as “The Extension,” presents practical applications of storytelling to Web design, reviews emerging navigation design patterns and helps you understand how to meaningfully employ content strategy on your websites. A case study of Smashing Magazine’s responsive redesign illustrates how this approach could look like in practice.
Table of Contents
AUTHOR CHAPTER DETAILS Iris Lješnjanin Preface
The Smashing Book #3 was limited to a certain size and format, making it impossible to include all of the chapters without compromising the book’s overall integrity. The Smashing Book #3⅓ is a challenge: explore the possibilities that modern technology and our design legacy have in store for us Web designers.
Today’s Web audience is on the search for more than just information. Consumers expect to be engaged and want to be drawn in by a website, one that makes them feel something and manages to inspire. While changing the look and feel of a website used to be somewhat easy, it is time to reconsider the fundamentals of our approach to a redesign. Learn how to successfully capture attention by using copywriting and storytelling, and understand the important relationship between emotion, design and story.
Chapter keywords: storytelling, invisible design, literature, narrative devices.
Christian Holst and Jamie Appleseed Rethinking Navigation: Techniques and Design Patterns
Navigation is what lends a page interactivity, connecting otherwise isolated pages into a logical order. Still, its design must fit the content and purpose of the website, not the other way around. Organic content calls for new and adaptive navigational elements. But how do we go about that? This chapter gives you useful insight into rethinking your approach to navigation.
Chapter keywords: navigation, design patterns, filtering, mega menus, checklist.
Colleen Jones Rework Your Content So It Works for You
If you invest much time and effort in the design of your website, but not the content, you’re taking a big risk. Don’t disappoint your users with the same old content after raising expectations with an impressive design. This chapter takes a strategic approach to content and explains the basics of formulating the right content strategy for your website redesign.
Chapter keywords: content strategy, content inventory, audit, context, maintenance, results assessment.
Vitaly Friedman Responsive Smashing Redesign: A Case Study
Redesigns usually introduce unexpected changes and are rarely applauded; moreover, a large-scale redesign is a tough and risky game to play. Smashing Magazine faced a long list of technical and UX changes in July 2011, and the team decided to act. This chapter presents a detailed case study of the whole redesign process, from A to Z, as it happened, and it sheds some light on the design, UX and technical considerations that actually led to the redesign.
Chapter keywords: redesign trap, responsive Web design, advertising constraints, design persona, typography-out approach, designing in the browser, redesign manifesto.
Technical Details
- 160 pages, 14.0 × 21.0 cm (5.5 × 8.3 inches).
- Quality flexibound cover, with stitched binding and a ribbon page marker.
- Delivery from Berlin, Germany, only via air mail (3 to 15 working days).
- $5 worldwide shipping. The book will be shipped separately, starting from 15 May 2012. (Check worldwide delivery times.)
- Also available as an eBook (PDF, EPUB, Kindle).
- Get your Smashing Book #3⅓ alone for $14.95 or as a part of a bundle.
Cover Design by Veerle Pieters
The Smashing Book series has gotten a rather eye-catching facelift. The well-respected Belgian artist Veerle Pieters has taken on the significant task of putting together an innovative, bold cover design. And the result is bold indeed. Veerle’s styling of Smashing Magazine’s “S” reflects the many aspects that make up a Web designer’s workflow today.

An excerpt of Veerle’s final cover design for the Smashing Book #3.

Veerle’s final sketches for the cover of the Smashing Book #3.
Exclusive Artwork by Kate McLelland
If you have the Smashing Book 2, you’ll know that animals play a distinct role—forming almost a tradition for the series. This time, we have asked the talented young illustrator Kate McLelland to illustrate the introductory pages for all of the chapters. Kate has been impressively creative in her designs; the theme of redesign has obviously shaped the tone of her artwork. Each chapter begins with an elaborate drop cap.

A detail of a chapter illustration, designed by Kate McLelland.
Each illustration employs a different metaphor that relates to the accompanying chapter. See what they all are once you get your hands on the book. Appropriately enough, when strung together, the drop caps spell out “Redesign the Web.” The composite style of the illustrations points to how so many components have to come together for a successful redesign.
Reviews and Testimonials
We’re looking forward to honest, objective reviews of the brand new Smashing Books. Please share your photos, opinions and feedback on Twitter using the hashtag #smbook3. The first feedback has been throughout positive and, in fact, we’ve discovered the first reviews of the books as well:
“The entire book is wonderfully balanced between theoretical and practical, with each author contributing a strong point of view on their area of expertise as well as a thorough explanation of how to execute it in a way that is useful. [...] curating the most cutting edge perspectives on the Web and offering the tools and information that the rest of us need to build upon them. If you’re into that, check out this book.”
— Christopher Butler, Book Review: Smashing Book #3
“This book is worth buying and reading for yourself. It really covers many aspects of modern website production in eleven in-depth chapters. There will likely be a few you don’t care for—we all have our own tastes—but I’d be surprised if any genuinely leave you disappointed given the chance. I was quite prepared to write something less positive, the first Smashing Book didn’t excite me, but this one very much did.”
— David Bushell, Smashing Book #3
“The Smashing Book #3 is an invaluable resource for Web designers, regardless of skill level or experience and we highly recommend it.”
— Cameron Chapman, Review: Smashing Book #3
“[...] not only is this a good book and an enjoyable read, but it is an important book that really can change the way we design, or redesign, for the Web.”
— Jeremy Girard, Reviewing The Smashing Book #3
Please feel free to submit a link to your review in the comments to the post and we’ll add your testimonial into this article. Feel free to provide criticism or praise: we’d love to hear your honest opinions!

A quick peek into the Smashing Book #3. Yes, we do like animated GIFs.
The Smashing Anthology
If you haven’t purchased Smashing Books #1 and #2 yet, we’ve prepared a couple of complete bundles for your convenience. Even though the first two books were published a couple of years ago, they remain relevant and valuable, because they were designed by our editorial team to be timeless. Save 20% off the price and get yourself the Smashing Anthology, a collection of all of our books as of today:
- complete Printed Smashing Books Bundle with all printed books for $84.90 (i.e. 20% off the price) or
- complete Digital Smashing Books Bundle with the digital versions of the books for $44.90 (i.e. 15% off the price) .
Frequently Asked Questions (FAQ)
We want to make it as easy as possible for everyone to buy the new Smashing Book. We welcome all suggestions and advice that could improve Smashing Magazine’s user-friendliness. Here are answers to some frequently asked questions about the Smashing Books #3 and #3⅓:
Questions What’s the difference between Smashing Books 1, 2 and 3?The first two books covered best practices in modern Web design. Although they had similarities, the two books covered different areas of Web design. Smashing Book #3 has a particular theme: redesign. It covers the redesign process per se, as well as cutting-edge approaches to Web design on a broader scale. It focuses on the most recent developments and current demands of today’s rapidly changing environment. Smashing Book #3 gives professional advice on the what, when and how of responsive and bulletproof Web design, according to the requirements of today’s Web.
What’s this extra Smashing Book #3⅓?Our authors have turned out to be much more productive than we anticipated, coming up with more exciting chapters than one book could handle. Adding these chapters to the book would have increased the size and weight—and, hence, shipping cost—substantially. Not wanting to withhold these chapters, we have decided to release them separately. We are proud to present the Smashing Book #3⅓: The Extension, four extra chapters of quick quality reading. Buy it as part of a bundle and save!
Will the book be available in other languages?Maybe in future, but we have not made arrangements for that yet, so don’t hold your breath.
Are the Smashing Books #3 and #3⅓ available as eBooks?Yes, the books are available in PDF, EPUB and Mobipocket formats, and you can order an eBook bundle right now.
What are the costs for shipping to my country?The shipping cost for one book or a bundle is $5—wherever you are in the world. We are paying a share of the shipping costs ourselves to make it possible for anyone to purchase the book. Our prices are transparent: we don’t have any hidden costs, and we won’t confuse you with tricky calculations. What you see is what you pay!
How long will delivery take to my country?All books are shipped via air mail to keep delivery times as short as possible. You can find the anticipated delivery time for your country in the delivery times overview.
What payment methods are accepted?We accept PayPal, VISA, MasterCard and American Express. We use a secure connection, with 256-bit AES encryption and a green GeoTrust Extended Validation SSL CA certificate.
Is there a money-back guarantee?Yes, absolutely! No risk is involved. Our 100-day full money-back guarantee keeps you safe. Don’t hesitate to return your purchase. You’ll get your money back—no ifs, ands or buts about it.
I have a question that is not covered here.Please leave a comment below, or get in touch with us via the contact form or via @SmashingSupport on Twitter. We would love to help you in any way we can!
Please Spread The Word!
These new books took seven months of production time, from brainstorming to delivery; 43 people worked on the content, design, layout, editing and proofreading of the book; 623 animals are hidden in various places in the Smashing Book #3; and the production costs for initial circulation, excluding marketing costs, required a six-figure budget. That’s what it took us to ensure that our Berlin warehouses are stocked with these new valuable books, waiting to be shipped right away as soon as you place your order.
















The authors of the new Smashing books.
Here at Smashing Magazine, we do our best to support and enrich the design community. Yet we also rely heavily on community opinion—in fact, the magazine would not be what it is today without the constant feedback of the community. That’s where you come in: we now pass the book onto you. Use it, enjoy it, test it, read it, rate it, evaluate it, criticize it or praise it—and share your honest opinion of it with the rest of the world.
Feel free to take as many pictures of it as you like and to use the Smashing Book #3 media kit (.zip, 9 Mb), which is full of interesting facts, figures and images related to the book. Be one of the first to give the community a critical view of the book; stir the discussion, and encourage feedback on your website.
Your criticism helps us further improve future projects, shapes the selection of topics and enables us to stay close to the pulse of the community. We sincerely appreciate your support.
© Smashing Editorial for Smashing Magazine, 2012.
How To Build A Real-Time Commenting System
The Web has become increasingly interactive over the years. This trend is set to continue with the next generation of applications driven by the real-time Web. Adding real-time functionality to an application can result in a more interactive and engaging user experience. However, setting up and maintaining the server-side real-time components can be an unwanted distraction. But don’t worry, there is a solution.
Cloud hosted Web services and APIs have come to the rescue of many a developer over the past few years, and real-time functionality is no different. The focus at Pusher, for example, is to let you concentrate on building your real-time Web applications by offering a hosted API which makes it quick and easy to add scalable real-time functionality to Web and mobile apps. In this tutorial, I’ll show how to convert a basic blog commenting system into a real-time engaging experience where you’ll see a comment made in one browser window "magically" appear in a second window.
Why Should We Care About The Real-Time Web?
Although the Real-Time Web is a relatively recent mainstream phrase, real-time Web technologies have been around for over 10 years. They were mainly used by companies building software targeted at the financial services sector or in Web chat applications. These initial solutions were classed as "hacks". In 2006 these solutions were given an umbrella term called Comet, but even with a defined name the solutions were still considered hacks. So, what’s changed?
In my opinion there are a number of factors that have moved real-time Web technologies to the forefront of Web application development.
Social Media Data
Social media, and specifically Twitter, has meant that more and more data is becoming instantly available. Gone are the days where we have to wait an eternity for Google to find our data (blog posts, status updates, images). There are now platforms that not only make our data instantly discoverable but also instantly deliver it to those who have declared an interest. This idea of Publish/Subscribe is core to the real-time Web, especially when building Web applications.
Increased User Expectations
As more users moved to using applications such as Twitter and Facebook, and the user experiences that they deliver, their perception of what can be expected from a Web application changed. Although applications had become more dynamic through the use of JavaScript, the experiences were seldom truly interactive. Facebook, with it’s real-time wall (and later other realtime features) and Twitter with it’s activity stream centric user interface, and focus on conversation, demonstrated how Web applications could be highly engaging.
WebSockets

Earlier on I stated that previous solutions to let servers instantly push data to Web browsers were considered "hacks". But this didn’t remove the fact that there was a requirement to be able to do this in a cross-browser and standardised way. Our prayers have finally been answered with HTML5 WebSockets. WebSockets represent a stardardized API and protocol that allows realtime server and client (web browser) two way communication over a single connection. Older solutions could only achieve two-way communication using two connections so the fact the WebSockets use a single connection is actually a big deal. It can be a massive resource saving to the server and client, with the latter being particularly important for mobile devices where battery power is extremely valuable.
How are Real-Time Technologies being used?
Real-time Web technologies are making it possible to build all sorts of engaging functionality, leading to improved user experiences. Here are a handful of common use cases:
- Realtime Stats – The technology was first used in finance to show stock exchange information so it’s no surprise that the technology is now used more than ever. It’s also highly beneficial to sports, betting and analytics.
- Notifications – when something a user is interested in becomes available or changes.
- Activity Streams – streams of friend or project activity. This is commonly seen in apps like Twitter, Facebook, Trello, Quora and many more.
- Chat – the 101 or real-time Web technology but still a very valuable function. It helps delivery instant interaction between friends, work colleagues, customers and customer service etc.
- Collaboration – Google docs offers this kind of functionality within its docs, spreadsheets and drawing applications and we’re going to see similar use cases in many more applications.
- Multiplayer Games – The ability to instantly deliver player moves, game state changes and score updates is clearly important to multiplayer gaming.
In the rest of this tutorial I’ll cover building a basic blog commenting system, how to progressively enhance it using jQuery and finally I’ll also progressively enhance it using the real-time Web service I work for, Pusher, which will demonstrate not just how easy it can be to use real-time Web technology, but also the value and increased engagement that a real-time factor can introduce.
Creating Generic Blog Commenting System
Start from a Template
I want to focus on adding real-time commenting to a blog post so let’s start from a template.
This template re-uses the HTML5 layout defined in the post on Coding An HTML 5 Layout From Scratch and the file structure we’ll start with is as follows (with some additions that we don’t need to worry about at the moment):
- css (dir)
- global-forms.css
- main.css
- reset.css
- images (dir)
- index.php
HTML
The template HTML, found in index.php, has been changed from the HTML5 Layout article to focus on the content being a blog post with comments. You can view the HTML source here.
The main elements to be aware of are:
<section id="content">– the blog post content<section id="comments">– where the comments are to appear. This is where the majority of our work will be done
Comments
Now that we’ve got the HTML in place for our blog post and for displaying the comments we also need a way for our readers to submit comments, so let’s add a <form> element to collect and submit the comment details to post_comment.php. We’ll add this at the end of the <section id="comments"> section wrapped in a <div id="respond">.
<div id="respond"> <h3>Leave a Comment</h3> <form action="post_comment.php" method="post" id="commentform"> <label for="comment_author" class="required">Your name</label> <input type="text" name="comment_author" id="comment_author" value="" tabindex="1" required="required"> <label for="email" class="required">Your email;</label> <input type="email" name="email" id="email" value="" tabindex="2" required="required"> <label for="comment" class="required">Your message</label> <textarea name="comment" id="comment" rows="10" tabindex="4" required="required"></textarea> <-- comment_post_ID value hard-coded as 1 --> <input type="hidden" name="comment_post_ID" value="1" id="comment_post_ID" /> <input name="submit" type="submit" value="Submit comment" /> </form> </div>
Comment Form CSS
Let’s apply some CSS to make things look a bit nicer by adding the following to main.css:
#respond {
margin-top: 40px;
}
#respond input[type='text'],
#respond input[type='email'],
#respond textarea {
margin-bottom: 10px;
display: block;
width: 100%;
border: 1px solid rgba(0, 0, 0, 0.1);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
-khtml-border-radius: 5px;
border-radius: 5px;
line-height: 1.4em;
}
Once the HTML structure, the comment form and the CSS are in place our blogging system has started to look a bit more presentable.

Handling Comment Submission
The next step is to write the PHP form submission handler which accepts the request and stores the comment, post_comment.php. You should create this file in the root of your application.
As I said earlier I’m keen to focus on the real-time functionality so a class exists within the template that you’ve downloaded which encapsulate some of the standard data checking and persistence functionality. This class is defined in Persistence.php (you can view the source here), is in no way production quality, and handles:
- Basic validation
- Basic data sanitization
- Very simple persistence using a user
$_SESSION. This means that a comment saved by one user will not be available to another user.
This also means that we don’t need to spend time setting up a database and all that goes with it and makes post_comment.php very simple an clean. If you wanted to use this functionality in a production environment you would need to re-write the contents of Persistence.php. Here’s the code for post_comment.php.
<?php
require('Persistence.php');
$db = new Persistence();
if( $db->add_comment($_POST) ) {
header( 'Location: index.php' );
}
else {
header( 'Location: index.php?error=Your comment was not posted due to errors in your form submission' );
}
?>
The above code does the following:
- Includes the Persistence.php class which handles saving and fetching comments.
- Creates a new instances of the
Persistenceobject and assigns it to the variable$db. - Tries to add the comment to the
$db. If the comment is successfully added it redirects back to the blog post. If it fails the redirection also occurs but some error text is appended to an error query parameter.
Displaying the Comments with the Blog Post
The final thing we need to do to have our Generic Blog Commenting System up and running is to update the blog page, index.php, to fetch and display the comments from the Persistence object.
- Since this isn’t a real blogging system we’ll hard code the
$comment_post_IDvalue to be1. - Include the Persistence.php class and fetch the comments from it. Comments are associated with a blog post using a unique
$comment_post_ID.
<?php
require('Persistence.php');
$comment_post_ID = 1;
$db = new Persistence();
$comments = $db->get_comments($comment_post_ID);
$has_comments = (count($comments) > 0);
?>
Since we now have the $comment_post_ID accessible via PHP we should update the HTML for the comment form to use this value.
<input type="hidden" name="comment_post_ID" value="<?php echo($comment_post_ID); ?>" id="comment_post_ID" />
We now have all the comments related to the blog post referenced by the $comments variable we need to display them on the page. To do this we need to update the PHP in index.php to iterate through them and create the required HTML.
<ol id="posts-list" class="hfeed<?php echo($has_comments?' has-comments':''); ?>">
<li class="no-comments">Be the first to add a comment.</li>
<?php
foreach ($comments as $comment) {
?>
<li><article id="comment_<?php echo($comment['id']); ?>" class="hentry">
<footer class="post-info">
<abbr class="published" title="<?php echo($comment['date']); ?>">
<?php echo( date('d F Y', strtotime($comment['date']) ) ); ?>
</abbr>
<address class="vcard author">
By <a class="url fn" href="#"><?php echo($comment['comment_author']); ?></a>
</address>
</footer>
<div class="entry-content">
<p><?php echo($comment['comment']); ?></p>
</div>
</article></li>
<?php
}
?>
</ol>
You’ll notice that if the value of $has_comments is true an additional CSS class is applied to the ordered list called has-comments. This is so we can hide the list item with the "Be the first to add a comment" message when comments are being displayed using CSS:
#posts-list.has-comments li.no-comments {
display: none;
}
Now that all this is in place we have a functional blog commenting system. If you would like to start writing your code from this basic functioning blog commenting system you can also download the code completed up to here.

Progressive Enhancement With jQuery
The first step in making our blog commenting system feel less like a Web page and more like an application is to stop page reloads when a user submits a comment. We can do this by submitting the comments to the server using an AJAX request. Since jQuery is probably the defacto standard for cross browser JavaScript functionality we’ll use it here. Although I’m using jQuery here, I’d also like to highlight that it’s a good idea to not always use jQuery. Instead, analyze your scenario and make a considered decision because there are some cases where you are best not to.
In an attempt to try and keep as much scripting (PHP and JavaScript) from the index.php file we’ll create a new folder for our JavaScript and in there a file for our application JavaScript. The path to this fill should be js/app.js. This file should be included after the jQuery include.
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> <script src="js/app.js"></script>
Capture the Comment Form Submission
When the page is ready bind to the submit event of the form.
$(function() {
$('#commentform').submit(handleSubmit);
});
When the form is submitted and the handleSubmit function is called the comment data we want to send to the server is extracted from the form. There are more elegant ways of fetching the data from the form but this approach clearly shows where we’re getting the values from and the data object we are creating.
function handleSubmit() {
var form = $(this);
var data = {
"comment_author": form.find('#comment_author').val(),
"email": form.find('#email').val(),
"comment": form.find('#comment').val(),
"comment_post_ID": form.find('#comment_post_ID').val()
};
postComment(data);
return false;
}
function postComment(data) {
// send the data to the server
}
POST the Comment with AJAX
Within the postComment function make a POST request to the server passing the data that we’ve retrieved from the form. When the request is made an additional HTTP header will be sent to identify the request as being an AJAX request. We want to do this so that we can return a JSON response if it is an AJAX request and maintain our basic functionality if it isn’t (for more information on this see Detected AJAX events on the Server). We also define two handlers; postSuccess for handling the comment being successfully stored and postError to handle any failures.
function postComment(data) {
$.ajax({
type: 'POST',
url: 'post_comment.php',
data: data,
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
success: postSuccess,
error: postError
});
}
function postSuccess(data, textStatus, jqXHR) {
// add comment to UI
}
function postError(jqXHR, textStatus, errorThrown) {
// display error
}
Dynamically Updating the User Interface with the Comment
At this point the comment data is being sent to the server and saved, but the AJAX response isn’t providing any meaningful response. Also, the comments section isn’t being updated to show the newly submitted comment so the user would have to refresh the page to see it. Let’s start by writing the code to update the UI and test that functionality.
If you are thinking "Hang on a minute! We don’t have all the data we need from the Web server to display the comment" then you are correct. However, this doesn’t stop us writing the code to update the UI and also testing that it works. Here’s how:
function postSuccess(data, textStatus, jqXHR) {
$('#commentform').get(0).reset();
displayComment(data);
}
function displayComment(data) {
var commentHtml = createComment(data);
var commentEl = $(commentHtml);
commentEl.hide();
var postsList = $('#posts-list');
postsList.addClass('has-comments');
postsList.prepend(commentEl);
commentEl.slideDown();
}
function createComment(data) {
var html = '' +
'<li><article id="' + data.id + '" class="hentry">' +
'<footer class="post-info">' +
'<abbr class="published" title="' + data.date + '">' +
parseDisplayDate(data.date) +
'</abbr>' +
'<address class="vcard author">' +
'By <a class="url fn" href="#">' + data.comment_author + '</a>' +
'</address>' +
'</footer>' +
'<div class="entry-content">' +
'<p>' + data.comment + '</p>' +
'</div>' +
'</article></li>';
return html;
}
function parseDisplayDate(date) {
date = (date instanceof Date? date : new Date( Date.parse(date) ) );
var display = date.getDate() + ' ' +
['January', 'February', 'March',
'April', 'May', 'June', 'July',
'August', 'September', 'October',
'November', 'December'][date.getMonth()] + ' ' +
date.getFullYear();
return display;
}
The code above does the following:
- Within the
postSuccessfunction we clear the form values and calldisplayComment. displayCommentfirst calls thecreateCommentfunction to create the list item (<li>) HTML as aString.- We then convert the HTML to a jQuery object using
$(commentHtml)and hide the element. - The comment list item is then prepended to the comments ordered list (
<ol>). The list also has a class called has-comments added to it so we can hide the first list item which contains the "Be the first to comment" statement. - Finally, we call
commentEl.slideDown()so that the comment is shown in what is becoming the standard "here’s a new item" way.
The functionality is now implemented but we want to test it out. This can be achieved in two ways:
- The
displayCommentis a global function so we can call it directly using the JavaScript console of the browser. - We can bind to an event on the page that triggers a fake update which calls the
displayCommentfunction
Let’s go with the latter and bind to the "u" key being released by binding to the keyup event. When it is, we’ll create a fake data object containing all the information required to create a new comment and pass it to the displayComment function. That comment will then be displayed in the UI.
Hit the "u" key a few times and see the comments appear.
$(function() {
$(document).keyup(function(e) {
e = e || window.event;
if(e.keyCode === 85){
displayComment({
"id": "comment_1",
"comment_post_ID": 1,
"date":"Tue, 21 Feb 2012 18:33:03 +0000",
"comment": "The realtime Web rocks!",
"comment_author": "Phil Leggetter"
});
}
});
});
Great! We now know that our displayComment function works exactly as we expect it to. Remember to remove the test function before you go live or you’ll really confuse your user every time they press "u".

Detect and Responding to the AJAX request
All that’s left to do is update the post_comment.php file to detect the AJAX call and return information about the newly created comment.
Detecting the AJAX request is done by checking for the X-Requested-With header:
$ajax = ($_SERVER[ 'HTTP_X_REQUESTED_WITH' ] === 'XMLHttpRequest');
Once we know the request is an AJAX request we can update the code to respond with an appropriate status code and the data representing the comment. We also need to ensure that the original functionality is maintained. The post_comment.php code now looks as follows:
<?php
require('Persistence.php');
$ajax = ($_SERVER[ 'HTTP_X_REQUESTED_WITH' ] === 'XMLHttpRequest');
$db = new Persistence();
$added = $db->add_comment($_POST);
if($ajax) {
sendAjaxResponse($added);
}
else {
sendStandardResponse($added);
}
function sendAjaxResponse($added) {
header("Content-Type: application/x-javascript");
if($added) {
header( 'Status: 201' );
echo( json_encode($added) );
}
else {
header( 'Status: 400' );
}
}
function sendStandardResponse($added) {
if($added) {
header( 'Location: index.php' );
}
else {
header( 'Location: index.php?error=Your comment was not posted due to errors in your form submission' );
}
}
?>
Key points from the above code are:
- The
$db->add_comment($_POST)call returns the data from the added comment which is assigned to the$addedvariable. - By setting the response Content-Type to “application/json” we tell jQuery to convert the returned string into a JavaScript object. For more information on calling JSON Web services see A Beginner’s Guide To jQuery-Based JSON API Clients.
- The 201 status code indicates a successful call and also that a resource (the comment) was created by the call.
The blog commenting system now works in a much more dynamic way, instantly showing the user that their comment has been posted without refreshing the page. In addition, the way the we’ve added the JavaScript based functionality to the page means that if JavaScript is disabled or a JavaScript file fails to load that the system will fallback to the standard functionality we first implemented.
Getting Real-Time—Finally!
As with any "from scratch" tutorial it can take a bit of time to get to the really interesting part, but we’re finally here. However, all the work we’ve up in has been worth it. Because we’ve built our commenting system up in a progressively enhanced way, plugging Pusher into it is going to be really easy
What is Pusher?
At the start of the tutorial we said that we would use Pusher to add the realtime functionality to the application. But what is Pusher?
Pusher is a hosted service for quickly and easily adding realtime features into Web and mobile applications. It offers a RESTful API that makes it really easy to publish events from any application that can make a HTTP request and a WebSocket API for realtime bi-directional communication. You don’t even need to use the APIs directly as there are server (PHP, Ruby, node.js, ASP.NET, Python and more) and client (JavaScript, iOS, Android, .NET, ActionScript, Arduino and more) libraries available in a host of technologies which means you can add realtime functionality to an app within minutes ‐ I’m confident you’ll be surprised just how easy!
Sign up for Pusher and get your API Credentials
In order to add Pusher-powered real-time functionality to a Web application you first need to sign up for a free Sandbox account. After you have signed up you’ll be taken to the Pusher dashboard where you’ll see that a "Main" application has been created for you. You’ll also see you are in the "API Access" section for that application where you can grab your API credentials.

For ease of access create a pusher_config.php file and define the credentials in there so we can refer to them later:
<?php
define('APP_ID', 'YOUR_APP_ID');
define('APP_KEY', 'YOUR_APP_KEY');
define('APP_SECRET', 'YOUR_APP_SECRET');
?>
In your version of pusher_config.php be sure to replace the values which being ‘YOUR_ with your actual credentials.
You should also require this in your index.php file. We should also make the APP_KEY available to the JavaScript runtime as we are going to need it to connect to Pusher.
<?php
require('pusher_config.php);
?>
<script>
var APP_KEY = '<?php echo(APP_KEY); ?>';
</script>
Real-time JavaScript
The first thing you need to do when adding Pusher to a Web application is include the Pusher JavaScript library and connect to Pusher. To connect you’ll need to use the key which you grabbed from the Pusher dashboard. Below you can see all that is required to hook up the front-end application to Pusher.
Include the Pusher JavaScript library after the app.js include:
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> <script src="http://js.pusher.com/1.11/pusher.min.js"></script> <script src="js/app.js"></script>
Add the Pusher functionality to app.js:
var pusher = new Pusher(APP_KEY);
var channel = pusher.subscribe('comments-' + $('#comment_post_ID').val());
channel.bind('new_comment', displayComment);
This probably looks too easy to be true, so here are the details about what the above code does:
var pusher = new Pusher(APP_KEY);
Creates a new instance of aPusherobject and in doing so connects you to Pusher. The application to use is defined by theAPP_KEYvalue that you pass in and that we set up earlier.var channel = pusher.subscribe('comments-' + $('#comment_post_ID').val());
Channels provide a great way of organizing streams of real-time data. Here we are subscribing to comments for the current blog post, uniquely identified by the value of thecomment_post_IDhidden form input element.channel.bind('new_comment', displayComment);
Events are used to further filter data and are ideal for linking updates to changes in the UI. In this case we want to bind to an event which is triggered whenever a new comment is added and display it. Because we’ve already created thedisplayCommentfunction we can just pass in a reference to the call tobind.
Sending Real-Time Events using the Event Creator
We can also test out this functionality without writing any server-side code by using the Event Creator for your app which can also be found in the Pusher dashboard. The Event Creator lets you publish events on a channel through a simple user interface. From the code above we can see that we want to publish an event named "new_comment" on the "comments-1" channel. From the earlier test function we also have an example of the test data we can publish.

Real-time PHP
Again, we’ve proven that our client-side functionality works without having to write any server-side code. Now lets add the PHP code we need to trigger the new comment event as soon as a comment is posted in our comment system.
Pusher offers a number of server-side libraries which make it easy to publish events in addition to helping with functionality such as private channel authentication and providing user information for presence channels. We just want to use the basic event triggering functionality in the post_comment.php file so we need to download the Pusher PHP library (direct zip file download).
Once you’ve downloaded this zip file, unzip it into the directory along with your other files. Your file structure will now look something like this:
- index.php
- css (dir)
- images (dir)
- post_comment.php
- pusher_config.php
- Persistence.php
- squeeks-Pusher-PHP (dir)
- lib (dir)
- Pusher.php
- lib (dir)
An event can be triggering in just a few lines of code:
<?php
require('squeeks-Pusher-PHP/lib/Pusher.php');
require('pusher_config.php');
$pusher = new Pusher(APP_KEY, APP_SECRET, APP_ID);
$pusher->trigger('comments-1', 'new_comment', array(
"comment_post_ID" => 1,
"date" => "Tue, 21 Feb 2012 18:33:03 +0000",
"comment" => "The realtime Web rocks!",
"comment_author" => "Phil Leggetter"
));
?>
However, we need to apply a some additional logic before we trigger the event:
- Check that the comment was added.
- Extract the unique comment identifier from the
$addedarray. - Build the text to identify a channel name for the submitted comment.
- Trigger a new_comment event on the channel with the
$addeddata. Note: The library automatically converts the$addedarray variable to JSON to be sent through Pusher.
Therefore the full post_comment.php file ends up looking as follows:
<?php
require('Persistence.php');
require('squeeks-Pusher-PHP/lib/Pusher.php');
require('pusher_config.php');
$ajax = ($_SERVER[ 'HTTP_X_REQUESTED_WITH' ] === 'XMLHttpRequest');
$db = new Persistence();
$added = $db->add_comment($_POST);
if($added) {
$channel_name = 'comments-' . $added['comment_post_ID'];
$event_name = 'new_comment';
$pusher = new Pusher(APP_KEY, APP_SECRET, APP_ID);
$pusher->trigger($channel_name, $event_name, $added);
}
if($ajax) {
sendAjaxResponse($added);
}
else {
sendStandardResponse($added);
}
function sendAjaxResponse($added) {
header("Content-Type: application/json");
if($added) {
header( 'Status: 201' );
echo( json_encode($added) );
}
else {
header( 'Status: 400' );
}
}
function sendStandardResponse($added) {
if($added) {
header( 'Location: index.php' );
}
else {
header( 'Location: index.php?error=Your comment was not posted due to errors in your form submission' );
}
}
?>
If you run the app now in two different browser windows you’ll see that as soon as you submit a comment in one window that comment will instantly ("magically") appear in the second window. We now have a real-time commenting system!
But…, we’re not done quite yet. You’ll also see that the comment is shown twice in the window of the user who submitted it. This is because the comment has been added by the AJAX callback, and by the Pusher event. Because this is a very common scenario, especially if you’ve built an application in a progressively enhanced way as we have, the Pusher server libraries expose a way of excluding a connection/user from receiving the event via Pusher.
In order to do this you need to send a unique connection identifier called a socket_id from the client to the server. This identifier can then be used to define who will be excluded.
function handleSubmit() {
var form = $(this);
var data = {
"comment_author": form.find('#comment_author').val(),
"email": form.find('#email').val(),
"comment": form.find('#comment').val(),
"comment_post_ID": form.find('#comment_post_ID').val()
};
var socketId = getSocketId();
if(socketId !== null) {
data.socket_id = socketId;
}
postComment(data);
return false;
}
function getSocketId() {
if(pusher && pusher.connection.state === 'connected') {
return pusher.connection.socket_id;
}
return null;
}
The changes we’ve made are:
- A new function called
getSocketIdhas been added to get thesocket_id. It wraps a check to ensure that thepushervariable has been set and also that the client is connected to Pusher. - The
handleSubmithas been updated to check to see if asocket_idis available. If it is, this information is posted to the server along with the comment data.
On the server we need to use the socket_id parameter if it is present and therefore exclude the connection and user who submitted the comment, or pass in null if it’s not:
$channel_name = 'comments-' . $added['comment_post_ID']; $event_name = 'new_comment'; $socket_id = (isset($_POST['socket_id'])?$_POST['socket_id']:null); $pusher = new Pusher(APP_KEY, APP_SECRET, APP_ID); $pusher->trigger($channel_name, $event_name, $added, $socket_id);
And as simple as that we have a fully realtime enabled blog commenting system and we only send messages to users who really need to see them. As with the AJAX functionality the realtime functionality has been added in a progressively enhancing way, to ensure it doesn’t impact on any other functionality. You can find the a demo running here and the completed solution in the realtime commenting repository in github.
Good Real-Time App Development Practices
Real-time application development shares common good development practices with general Web development. However, I thought I would share a couple of tips that can come in particularly handy.
Use Browser Developer Tools
When you start doing a lot of JavaScript development the browser developer tools becomes your best friend. It’s the same when adding realtime functionality to your Web app, not only because you are using JavaScript, but also because the JavaScript library you are using is likely to be doing some reasonably complex things internally. So, the best way of understanding what is going on and if your code is using it as expect is to enable logging which usually goes to the developer console. All major browser vendors now offer good developer tools which include a console:
- Firebug addon for Firefox
- Google Chrome Developer Tools
- Internet Explorer F12 developer tools
- Opera Dragonfly
- Safari Developer Tools
The Pusher JavaScript library provides a way to hook into the logging functionality. All you need to do is assign a function to the Pusher.log static property. This function will then receive all log messages. You can do what you like within the function but best practice is to log the messages to the developer console. You can do this as follow, ensuring the code it executed after the Pusher JavaScript library include:
Pusher.log = function(msg) {
if(window.console && window.console.log) {
window.console.log(new Date().getTime() + ': ' + msg);
}
};
The code above checks to make sure the console and log function is available – it’s not in older browsers – and then logs the messages along with a timestamp to the JavaScript console. This can be incredibly handy in tracking down problems.

Check Connectivity
Any good real-time technology will maintain a persistent connection between the client (web browser) and the Web server or service. Sometimes the client will lose connectivity and when the client isn’t connected to the Internet the real-time functionality won’t work. This can happen a lot with applications running on mobile devices which rely on mobile networks. So, if your application relies on that connectivity and functionality then it’s important to deal with scenarios where the client isn’t connected. This might be by displaying a message to tell the user they are offline or you might want to implement some alternative functionality.
The Pusher JavaScript library exposes connectivity state via the pusher.connection object, which we briefly saw earlier when fetching the socket_id. Binding to state changes and implementing your required functionality is quite simple as it follows the same mechanism as binding to events on channels:
var pusher = new Pusher(APP_KEY);
pusher.connection.bind('state_change', function(states) {
Pusher.log('Connection state changed from: ' + states.previous + ' to ' + states.current);
});
Conclusion
We’re seeing real-time functionality appearing in a large number of high profile applications: some have it at the core of what they offer whilst others use it sparingly. No matter how it is used the end goal is generally the same; to enhance the user experience and keep users engaged with an application. By converting a basic blog commenting system into a more engaging communication platform I hope I’ve demonstrated that the functionality and experience can easily be layered on existing application.
The ease of access to this technology is a relatively new thing and we’ve only just touched the potential uses for the technology. Real-time stats, instant news updates, activity streams, social interaction, collaboration and gaming are just a few common uses but as more developers become aware of, and comfortable with, the technology I’m confident that we’re going to see some truly amazing innovation. An "Internet of Real-Time Things?"?
© Phil Leggetter for Smashing Magazine, 2012.
So what exactly is a tech company?
Alex Payne, formerly of Twitter and and more recently of Simple, a banking service! asks the all-important question: What is and is not a technology company:
It’s now accepted-going-on-cliché to say things like ‘software is eating the world’, which is an aggressive way of assuming that every company now has to be at least a bit of a technology company, and those that want to grow rapidly even more so. Many new companies targeting industries as diverse as eyeglasses and baby food are, at the outset, leveraging technology for everything they do: supply chain management, marketing, recruiting, internal communication, product development, and so on. This makes these businesses look like technology companies, if you squint. But, of course, they aren’t. They’re eyeglasses and baby food companies.
Now that every growing business requires significant competence in technology to succeed, the distinction is even blurrier. Is a company that has staff members with ‘programmer’ or ‘engineer’ in their titles a technology company? Are they a technology company if they were funded by venture capitalists who have previously funded businesses that we think of as technology companies? Are they a technology company if their founder was using a laptop when she came up with the idea for the business?
‘Tech company’ and ‘tech startup’ are over-applied labels that have outlived their usefulness. Calling practically all growing contemporary businesses ‘technology companies’ is about as useful as calling the enterprises of the industrial era ‘factory companies’; it accurately describes an aspect of what they are (or were), but it doesn’t really capture the totality of their operation. It certainly doesn’t tell you anything substantive about how they’ll behave in the market over the long term, which is probably the most useful reason to label a business at all.
I think he is right in asking this question. I am old fashioned like that and believe there is a huge difference in technology and tech-enabled companies. Facebook is both. Twitter, too is both. Arista Networks is a technology company and so is Nimbula.
However, the very idea that Groupon or Birchbox are technology companies confounds me. Just as Pets.com never made sense to me as a technology company. Or even Exodus, a data center real estate company posing as a technology company.
Just like anyone else, I like buying stuff from all these new e-commerce companies and will continue to favor them over their offline counterparts, but to value them differently from a retail business doesn’t make much sense. Sure, investors should give them a premium for being more efficient than their lumbering offline counterparts, but to label and value them as technology companies — give me a break!
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Social media in Q1: commerce and discovery dominated
- Controversy, courtrooms and the cloud in Q1
- Flash analysis: future opportunities for Pinterest
May 07 2012
Big Apple – the new Big Data Central?
When it comes to New York’s booming tech startup scene, digital media and new commerce companies get all the attention, but in reality, the Big Apple’s big opportunity might well be as the hub for “data-centric” businesses. In taking advantage of this opportunity, the city wouldn’t be going too far from its traditional strengths.
I was reminded of New York’s role in the emerging big data ecosystem over the weekend, when I was catching up with my weekly reading.
- eBay, which had acquired Hunch in November 2011, is now building out its operations in New York with a new 35,000 square-foot office, Ryan Kim reported last week. ”When fully built out, a majority of the workers will be developers, data scientists and statisticians,” he added.
- Microsoft has hired a bunch of former Yahoo researchers in New York.
Steve Lohr of The New York Times wrote about Microsoft:
The group’s research focuses in large part on the application of advanced computing tools to the social sciences. It is a fast-growing field fueled by the vast new data sources of the Web, social-network communications and from sensor-equipped devices like smartphones. The potential is enormous, as Google and Facebook prove. But Microsoft has trailed so far.
Beyond these two recent announcements, there are several other startups that are experimenting with data. Take URL shortener, Bit.ly, for example. The service, which is based in Manhattan, is creating new news reader experiences based on the data it collects and from the social context that data carries. Businessweek writes:
This year, Bitly is introducing a suite of data products for professionals developed in part by Mason and her team of six scientists and engineers. One, dubbed Bitly Realtime, tracks terms that receive sudden bursts of attention. Another is a reputation-monitoring system. The goal of the products is “to give people a Spidey sense about what’s going on on the Internet that’s relevant to them,” says Mason.
Hilary Mason, who is the chief scientist at Bit.ly told me that in “New York we are more interested in telling stories” from of data as opposed to how “big” the data is, or what database technology you happen to use, Mason told us. “This is how businesses, marketers, and social scientists need to think about data to make rational decisions.”
New York has a long history of learning from data, thanks to the quantitive revolution that swept Wall Street. Financial services, was the first real big data vertical, and quants were Wall Street’s data scientists. The markets for tradable instruments, high-volume and high-velocity data streams all came from Wall Street. (Actually, that was the rationale behind why we host our Structure: Data conference in New York.)
Mason believes that New York can leverage big data to its advantage. From art to fashion to media, New York has enough creative talent to be able to ask the right questions from the data. A good example is the Explore feature on Foursquare, which co-founder Dennis Crowley calls the “big data driven recommendation engine for the real world.” (Here is a presentation of technology behind Explore that is pretty cool.)
Similar startups such as Knod.es are helping make sense of social data as well. For instance, the startup sucks in your social data across platforms and let you ask questions like “Who do I know who likes cheeseburgers in Paris?”
“There are a bunch of interesting things happening in NYC, not all of which are startups,” Mason says, singling out Wes McKinney’s the Pandas Project, which is a time-series analysis system drawn from his experience in finance. Mason calls it “awesome.”
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Social media in Q1: commerce and discovery dominated
- Q4 Wrap-up: SOPA and the future of digital content
- NewNet Q4: Platform mania and social commerce shakeout
Do You Forget To Give Positive Responses?
I have an interesting cadre of friends, and I like that because it makes life interesting. For the most part I feel like I’m on the same wavelength with them, but I do have a couple of friends who seem to differ with me on a great many things.
I have one friend where, almost everything I ever say to him, in some fashion he has to disagree. It pretty much doesn’t matter what it is; if I say it then it has to be wrong. What eventually happens, though, is someone else says the same thing to him and suddenly it’s totally correct. Every once in awhile he’ll own up to it; other times, he acts like it was his idea all the time.
This doesn’t tend to be my general MO, if you will. Whereas I won’t agree with anything someone says “just because”, I will often go to great lengths to build people up, possibly offering suggestions I think will help them to get where they want to go.
I do that because I don’t believe anyone is ever helped if all they ever get is rebuff in some fashion. Everyone likes validation, whether they need it or not. We like being told that our dreams, goals, fantasies, whatever, are legitimate. If you’re 5’1″ tall and say you want to play center for your favorite basketball team I’m not going to urge you to keep on that road to ultimate failure. If you said you wanted to learn what it takes to become a professional basketball coach, no matter your age, I’d encourage you to figure out how you can get the information and the experience needed to get there. Even if it seems like a pipe dream to many others there’s nothing saying it’s not a possibility.
If you’re going to be a leader, you need to know when to give positive responses and how to do it to get the maximum benefit out of your employees. You also have to be genuine; telling someone how great they were because they knew the right keys to push to enter information into the computer when that’s what their job is supposed to be comes out sounding false and patronizing. Giving someone kudos for the way they handled a difficult customer on the telephone is something else; who hasn’t had to deal with an unhappy customer at least once in their professional lives?
Today I give you permission to dream about the things you want in your life, and while you’re doing it dream about ways in which you’re going to make someone else’s life positive today.
Copyright protected by Digiprove © 2012 Mitch Mitchell
Refining Your Design In Adobe Fireworks
While certainly not as well known as Photoshop, Adobe Fireworks is a great tool for creating user interfaces, website designs and mock-ups, wireframes, icons and much more. However, most designers who have been using Photoshop for years may find Fireworks a bit awkward at first. Fireworks does have a slightly different workflow and requires a slightly different approach than you may be used to.
In this article, I’ll share some tips that I use in my work in Adobe Fireworks that could help improve the quality of your designs and workflow. Some of these tips are just quick explanations of features that you might not be aware of, while some are techniques and methods to improve the default visual results. Let’s begin!
Improve Fine Strokes
Fireworks’ stroke feature gives the user quite a lot of options. But one of the most important is missing: the ability to add a gradient to a stroke. Also, the effect from the Stroke tool isn’t always elegant — for example, when using an inset border with rounded corners.

Native stroke rendering in Fireworks. The rounded corners look a bit too thick.
Fireworks lets you specify the stroke’s position: outside, centered or inside. But the best results are when the stroke is outside.

Stroke can be set to different alignments in the Properties panel. Outside (example 3) looks better for fine strokes than centered or inside.
But in such cases, I recommend a composite path instead of a stroke to get better control of the result and to be able to apply a gradient to it.
Start by drawing two rectangles with rounded corners, one of them 2 pixels taller and wider than the other. Put the smaller rectangle above the larger (you can verify that it’s above in the Layers panel), and make its border radius smaller by several pixels, as shown here:

We’ll need two vector shapes to create our custom stroke.
The purpose of the smaller shape (the one with the yellow-orange background) is to cut out (or “punch”) the interior of the red shape, resulting in a 1-pixel-wide object that can be used in place of a stroke. To achieve this, select the two rectangles and hit the “Punch Paths” tool icon in the Path panel:

Punch Paths will help us get a better-looking stroke.
Alternatively, you could select the two rectangles and go to Modify → Combine Paths → Punch.

The stroke is now a composite path that you can easily edit and even apply a gradient fill to.
Bonus tip: Should you later decide that you need to resize this shape (without distorting its perfectly rounded corners), the “9-slice scaling tool” can come to your rescue:

Distortion-free scaling is easily achieved with the 9-slice scaling tool.
Draw Better Triangles
Triangles are everywhere in user interfaces: arrows in buttons, breadcrumbs, pop-over indicators and so on.
While Fireworks provides built-in arrow and polygon vector drawing features, I recommend going the customized route and drawing those vector shapes yourself.

The Arrow vector autoshape in Fireworks. The yellow control points allow for easy customization of width and height, thickness, type of head, roundness, arrow size and more.

The Smart Polygon vector autoshape in Fireworks. You can easily transform it into a triangle!
To illustrate our new workflow, let’s draw a simple arrow like the one in Kickoff’s download button:

Kickoff’s download button
Let’s start by drawing a nice triangle. Most of the time, you’ll want an odd number of pixels for the triangle’s base so that its middle falls on a half-pixel, resulting in a sharp arrow:

On the left, the triangle with an odd width. On the right, the triangle with an even width.
To create a triangle like the one on the left, we start by drawing a simple 7 × 7-pixel vector square using the Rectangle tool (found in the Tools panel, or simply press U). To delete its bottom-right point, use the Subselection tool (press A, or use the white arrow in the Tools panel), select the bottom-right node, then hit the Delete key; Fireworks will remind you that you are trying to change one point of a rectangle primitive and that it must be ungrouped for the change to occur; so, click “OK” to turn it into a vector, and delete the point. After deleting the corner, you’ll end up with this:

Our square with the bottom-right point deleted.
We now need to place the bottom-left point exactly at the center, which is located at 7 pixels ÷ 2 = 3.5 pixels from its current position. When you use your keyboard’s arrows, Fireworks moves the elements by full pixels only and aligns them perfectly to the pixel grid. This is convenient in most cases but not in this one. Luckily, Fireworks gives us a “Move Points” feature (in the Path panel) that lets us specify numeric values:

Moving horizontally by 3.5 pixels will center our bottom point.
If the triangle is now a bit too tall for our arrow, use the Subselection tool to select the center point again, and press the up arrow key twice to move the node up a couple of pixels.
We’re almost done! We just need to draw the 3 × 5-pixel rectangle part of our arrow and then use the “Union Paths” command (Modify → Combine Paths → Union, or press Control/Command + Alt/Option + U) to combine our two paths into one final single vector shape:

The separated shapes are on the left, and the unified shape is on the right.
Draw Better Ellipses
For some reason, Fireworks has difficulty drawing elegant circles (especially small ones), and the circles tend to have too straight an edge:

A default circle in Fireworks. Note that the top, right, bottom and left edges aren’t rounded enough.
We’ll use the “Numeric Transform” window (Control/Command + Shift + T, or in the menu Modify → Transform → Numeric Transform) to make the circle just a tiny bit smaller:

Decreasing the circle’s size by a bit will make it appear more rounded.

The original on the left, and our result after the transform on the right.
You will notice that the right circle is more elegant; that’s because we have fewer “full” pixels at the edges:

The original on the left, and our perfect circle (after the transform) on the right!
Fillet Points
One great feature of Fireworks that few people seem to know of is the Fillet Points path tool. Basically, it rounds any angle you select by a value that you specify. To use it, select any vector shape, and in the Path panel in the “Edit Points” section, choose “Fillet Points”:

Fillet Points rounds all of your angles.
Let’s use the built-in vector Star autoshape as an example. Note that you need to ungroup autoshapes and rectangle primitives before using Fillet Points; then you can either select the entire vector shape to round all corners or use the Subselection tool to select certain points to round.

The original shape on the left, and with Fillet Points applied on the right.
This can be a huge time-saver when you want to modify complex shapes with many filters and effects. Now you won’t have to redraw shapes over and over again just because the radius is a few pixels off.
Inset Paths
Another useful vector tool many designers are unaware of is the Inset/Expand Paths feature.

Inset/Expand Paths is also accessible via Modify → Alter Path → Inset Path.
As you’ve probably guessed by its name, this tool enables you to alter a vector path and make it either smaller (inset) or larger (expand) without losing its proportions.
Let’s say we want to make our Star autoshape from above 10 pixels smaller:

The Inset/Expand Paths prompt.
This dialog can be confusing if you do not know what all of the options and abbreviations mean. The third parameter (“Corners”) is the least obvious, because the meaning of “BE, RO, MI” is not defined. The letters are actually abbreviations of “Bevel,” “Round” and “Miter.” You can’t use those abbreviations in the text field, so you need to know the terms they represent. “Bevel” creates squared corners, “Round” creates rounded corners, and “Miter” creates pointed corners; the “Miter limit” specifies the maximum length of the pointed corners before Fireworks replaces them with clipped (or square) tips. We’ll use “Miter” in our example because we obviously want to keep our straight lines.

And voilà!
Gradient Dither
Adding a gradient between two similar colors (i.e. colors close in hue) in a big shape often produces an unsightly banding effect, as shown here:

Banding is visible in this gradient (especially on LCD screens of the common “twisted nematic” type, which display only 6 bits per pixel, not 8).
To prevent this, Fireworks introduced in CS5 a Gradient Dither option that can be used if the edges of the object are set to “Anti-alias” and if you use the “Radial” or “Linear” type of gradient fill.

“Gradient Dither” (found in the Properties panel) makes gradients look better.
The result is a smooth, unified linear gradient, similar to what you would get with CSS browser rendering:

With the “Dither” option applied, the gradient becomes much smoother.
Similarly good results can be achieved by dithering radial gradients.
Avoid Large Shadows
Fireworks isn’t very good at rendering large shadows (if you use the “Drop Shadow” live filter). If you’re curious about the subtleties involved, a detailed article on WebDesignShock compares shadow and glow effects in Fireworks, Photoshop and Illustrator.
Instead of a beautiful shadow that slowly fades to a transparent value, the edge of the shadow might look like it has been cut off before fading to full transparency. The issue is particularly noticeable on the Mac version of Fireworks:

A shadow effect created with the Drop Shadow live filter. Notice the edges (in Fireworks CS5 on a Mac)—yikes!
Here are the settings to use to get this drop-shadow effect on Windows and Mac:

The settings for the drop-shadow live effect on a Mac. Again, notice the “cut” edges of the shadow.

The settings for the drop-shadow live effect on Windows. The settings are the same, but the edges of the shadow are almost perfect.
So, instead of using a live filter, I usually duplicate the shape (the white rectangle in this example), set its edge to “Feather” and fill it with black.

Possible settings for the “shadow” vector shape behind the object.
Putting this shape behind the white rectangle produces a better-looking large shadow than the built-in method:

The original shadow on the left, and the “Feather method” on the right.
Practical Examples
A picture is worth a thousand words.
Talking about gradients, fills, strokes, vector autoshapes, rounded rectangles, pixels and half-pixels is exciting, but a few real examples would be even better. Below are some illustrations, icons and UI designs that I made exclusively with Fireworks. The tips and tricks covered above made the results more elegant and refined.
As you can see, it’s all about pixel-precision, and Fireworks delivers great results!
Conclusion
Adobe Fireworks is a powerful tool, offering both vector- and bitmap-editing capabilities and even hiding some gems. Yes, it imposes different workflows, and some of its default effects are disappointing, but the advantages outweigh the little quirks here and there.
Having to change one’s work habits is always frustrating. Perhaps actions that you once did in a few minutes with your old design tool will now feel incredibly slow. Getting used to a different workflow takes time, and you might not see the benefit of using Fireworks immediately. The best thing you can do is commit to designing an actual project from start to finish using only Fireworks. Choose a small project or a personal side project for this purpose. Get your hands dirty for a few hours (or a few days). It’s the only way to be able to judge whether Fireworks really suits your needs. If you’re into UI design, I’ll bet it does!
If you’re interested in learning more about Fireworks, I highly recommend watching the great screencasts produced by Rogie King. They offer many more tips and tricks for refining designs and achieving more polished results than this article.
Also, the work of others can be a good source of inspiration and knowledge, so have a look at the Fw PNG Week series by Craig Erskine, and download and deconstruct his free source PNG files.
Happy experimenting with Fireworks!
Further Reading
- Video tutorials, Rogie King, Komodo Media
- Fw PNG Week (Fireworks PNG files for downloading and learning), Craig Erskine
- “I Didn’t Know Fireworks Could Do That!” (video presentation and tutorial), Dave Hogue, from Adobe’s MAX 2011 conference
- “Design Learning Guide for Fireworks: Using the Path Panel,” Tommi West, Adobe Developer Connection
- Rapid Fire (Fireworks tutorials), Jose Olarte
(mb, al)
Note: A big thank you to our fabulous Fireworks editor, Michel Bozgounov, for preparing this article.
© Benjamin De Cock for Smashing Magazine, 2012.
The spectacle of technology
I was recently in New York, and while there I ended up at an art opening, where I fell into a conversation with an art historian. Obviously, the conversation turned to the state of the “art world.” She was pretty candid when she said that these days it is less about art and more about “the spectacle of art.”
The sale of The Scream by Edvard Munch for $120 million is yet another sign that in the art world there is a lot more focus on the business, the ever rising prices, the booming demand. This person said that the world is indeed focused on big sales and big art gatherings such as Biennale or Art Basel.
I couldn’t help but notice the parallels between art and our world of technology. With the fetishization of funding announcements, or the incessant coverage of the sale of Instagram, or mingling at countless events, Silicon Valley (in a proverbial sense) is becoming more about the spectacle of technology. (I hinted as much last year in my post, Is the Internet the “Paris” of the new millennium.)
This is not a judgement — more an observation, for that is where we might be in a cycle, both economic and creative. But as this art historian pointed out, away from the sparkling lights, she has seen new collectives and movements form, which gives her hope. I am betting it is the same in tech-land.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Controversy, courtrooms and the cloud in Q1
- Flash analysis: future opportunities for Pinterest
- 12 tech leaders’ resolutions for 2012
May 05 2012
What we are listening to: Bijan Sabet, Spark Capital
I might not like the Herman Miller’s Twitter strategy, but I do like their Lifework blog and I am religious reader of that site. It is chock-full of of great stuff, especially links to articles and websites I typically don’t visit.
In particular, I love one of their weekly features: Playlist, where they ask some of their favorite people (designers and cool creatives) what they listen to when they work.
I thought, wouldn’t it be cool if we asked people in the tech industry to share the apps they use, their favorite gadgets and most importantly, the songs that inspire them?
Many of them have great and eclectic taste in music, so I thought I would ask them to share what they listen to and how they listen to. And I thought why not ask them about their favorite music blogs and apps and even Spotify/Rdio playlists– after all we all need help with discovery in this age of plenty.
So, with a full tip of the hat and extreme gratitude to folks at Herman Miller, here is our first musical bouquet. Our first candidate is Bijan Sabet, general partner at Spark Capital whose investments include Twitter and Tumblr, not to mention a whole bunch of other cool startups. He is often tweeting about music and blogs his favorite tunes on his tumblr.
What kind of music do you listen to when you work?
Usually new stuff but there are times when you just need to put on The Clash.
How do you listen to the music? (Tell us about the gear you use)
In the office i’ve got my iMac with external speakers I discovered on Svpply. When on the go, my iPhone with my new Bose IE2 headphones. At home we use Sonos all the time.
What are your favorite music apps/services?
ex-fm (social + curation); Soundcloud for new artists are constantly uploading their new stuff to Soundcloud and Rdio, especially if i just want to listen to an album from front to back.
What are your favorite music blogs?
We All Want Someone To Shout For: The founder Will Oliver has awesome taste and is a huge Arctic Monkeys fan. Today he’s got Beirut. I love that blog.
David Noel’s Tumblr always has great tunes and so does Fred Wilson’s Tumblr. And of course, Andy (Weismann) although today he’s got a Bee Gees cover which I’m not sure about. :)
What are you listening to right now?
I’ve got Ben Kweller’s new album “Go Fly A Kite” and the debut Of Monsters and Men’s on heavy rotation.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- How to navigate the new world of digital advertising
- Social media in Q1: commerce and discovery dominated
- Controversy, courtrooms and the cloud in Q1
7 stories to read this weekend
I have to admit, being in New York, there is little or no chance I am opening my computer this weekend. However, for you I have put together this list of stories to read over the weekend. Hope you enjoy them.
- Who says magazines are dead? There is just a need to rethink and re-imagine them. Forget GQ and Esquire. Instead think magazines like PORT, Monocle, and Bidoun, reasons Hypebeast in this article, Re(de)fining print & the resurgence of the magazine.
- Talking about old media, here is a visit down the cable industry’s memory lane from the perspective of a customer. Old posters and memories — what’s not to like about They might be giants?
- Social interaction and teamwork lead to human intelligence. I wonder if this translates into our interactions via the Internet and our new work reality? I don’t quite know the answers, but I will remain positive.
- How will we live our social lives digitally? The New York Times’ Jenna Wortham takes her obsession with Rihanna and Beyonce and outlines two different paths our digital identities can follow.
- Cuckoo: The social science of time is one of the most fun pieces I read this week. Kathryn Schulz asks the quintessential question about why big city dwellers stay up late.
- Lastly, Niniane, formerly of Google and now of Minted writes a letter to a young engineer: How to decide where to work. Great read.
- And lastly, the Rise of the Culture Tech.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- How to navigate the new world of digital advertising
- Social media in Q1: commerce and discovery dominated
- Controversy, courtrooms and the cloud in Q1
May 04 2012
Finding Nemo: How a startup turns your desktop into an ocean
When was the last time you thought of screen savers? If you answer is no, then you are not alone. But Neville Spiteri and Scott Yara want to change all that, and instead they want to take the idea of screen savers and turn it into a massively connected platform. Unlike the MMO games, they want to use this connected world to be a platform for creativity and learning.
Spiteri and Yara came together when Yara started Metapa, the pre-pivot Greenplum. Metapa was started in 2000 on the idea that media would go through a digital revolution and would in turn lead to need for a new kind of a studio and content distribution mode that would allow anyone to become a creator and send content to all places.
While Yara’s vision was spot on, things didn’t work out as planned. The digital media company ended up becoming a big data company which was eventually snapped up by EMC for north of $300 million dollars.
Spiteri, who in the past had worked on 3D technologies, however left Greenplum in 2003, long before the sale (December 2003) and started Wemo Media, with Yara as an investor and co-founder. “We couldn’t let go of the idea we had in the beginning,” said Yara.
Spiteri moved back to Los Angeles, set up shop in the funky Venice Beach and started working on what he calls “the Planet Participation Platform,” which has ability to sell individual creations from various artists, and also allows collaboration for complex projects. In many ways it does for visual and animation creation what Soundcloud does for audio. The platform already is getting a buy in from art education groups such as the:
USC Film School, Carnegie Mellon’s ETC, Art Institute of Pittsburgh; SAE, Berlin, Germany; Murdoch University in Perth, Australia; Loyola Marymount -‐ Los Angeles, CA, Art Institute of California, Los Angeles; the Ex’pression College -‐ Emeryville, CA
Today, the company launched theBlu, which has garnered support from some big time ocean lovers including Bill Joy (co-founder of Sun Microsystems) and Richard “The Virgin” Branson.
What is theBlu?
TheBlu is a downloadable app for PC and Mac and will soon be made available via the browsers and will work on the phones and tablets. It is a screensaver of “the ocean” and has many underwater habitats built into the screensaver. The application takes cues from location of the computer and changes the habitats based on location. You can buy various different species for your collection. Artists can create more species and sell them on the platform.
Here is how the company describes theBlu:
“TheBlu” turns the Internet into a globally connected 3D digital ocean wherein every species and habitat is an original work of art created by a worldwide community of artists, animators and developers, including Academy Award® winners Andy Jones and Kevin Mack, and students alike.
Exploring “theBlu” is as easy as browsing the web and includes information about species, exploration of geo-located habitats, in-ocean tagging of fish, the purchase of species to grow your collection and customize your experience, social activity streams, event and photo sharing, and ocean life, swimming from user to user across the Internet, creating real time social interaction.
At launch, “theBlu” will enable a connected social exploration across 8 ocean habitats, including over 100 life forms with new habitats and species released monthly, and 15 “ambassador” species, sponsored by non‐profit cause collaborators, to raise awareness and funds for ocean conservation.
TheBlu has gotten backing of non-profit ocean-oriented groups like the Ocean Elders, Mission Blue and WildAid.
Participating non-‐profit collaborators sponsor “ambassador” species and habitats in “theBlu” and users of “theBlu” are offered the opportunity to purchase these “ambassador” species and habitats for their virtual ocean environment. Twenty-five percent of the purchase price of these virtual species goes directly to the non-profit collaborators to fund projects that support their work in the real ocean environment. The program is also designed to increase awareness and reach for collaborating organizations and their conservation efforts.
“The really interesting thing about theBlu is how it brings together the biology, the activism of conservation, the beauty and the artistic elements as well as the grassroots, participatory social media movement. I’m very excited about the possibilities ahead,” said Joichi Ito, director of the MIT Media Lab and advisor to Wemo Media.
Why am I excited about this?
I am excited about this for multiple reasons. First and most importantly, it is one of the applications that truly leverages what I have been saying for nearly a decade – hyper-connecivity. As most (if not all) computers in our life start to get connected, we are going to see emergence of these living-and-breathing applications, that take cues from location, time, weather and even our moods. I want to see more, not less of these applications.
Is a desktop client the answer? Probably not. I would love to see this on my television screen, because it would turn my television into a giant aquarium. Just imagine the impact of something like this on learning: the kids could learn about various fishes and other fauna and have fun at it. Today it is oceans, but it is equally easy to create the African Savannah or Galapagos Islands and turn them into a living class-room. The possibilities – they are simply limitless!
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- How to navigate the new world of digital advertising
- Social media in Q1: commerce and discovery dominated
- Controversy, courtrooms and the cloud in Q1
You Design It, They Do It
What if someone came to you and said, “I’ve designed this great website, but people don’t stay on it. Why?” How would you respond? Would you ask them whether they have done extensive A/B testing? Would you recommend testing the usability of the website?
People like to test a number of metrics to see why people are not staying on a website. I think sometimes we spend so much time focusing on analytics that we throw common sense out the window. Don’t get me wrong—analytics are a powerful tool for improving a website. But often the problem is right in front of your face.
What if you simply told them that the reason people are leaving is because of the way they designed the website? How mind-blowing an idea is that? Doesn’t that change your entire perspective on the design? It could be the greatest thing in the world, but what if you really designed something to chase people away or looking at it another way: What if you have designed it so there is no incentive to stay?
Feedback… Om Nom Nom
I love getting feedback on the stuff that I write; yet my website has no comments section. Is it reasonable for me to wonder why people don’t leave feedback? I could tell people that there is a forum on the website where they can leave feedback, but that means they would have to register, get approved and then remember what they wanted to write. The website isn’t designed for instant feedback.
When I didn’t have any social media widgets at the end of a post, sharing of articles dropped over 80%. It wasn’t fair for me to assume that people would remember to share something they liked or that if they were on the fence they would make an effort to do so. If I really wanted people to retweet what I write, I would have to guide them to doing so by putting a retweet widget at the end of everything. Maybe I could even add some text asking them to retweet if they like what they read.
The point is that, if I expect a person to take an action, I would have to design the process for taking that action right into the website itself. I should never assume that a person who is interacting with my website will automatically take that action. Would a driver stop at an intersection that had no stop sign?
As designers we have to understand that the interface we create dictates the action of the people using it.
If you run a website and hope to get a lot of comments, then the best way to go about that is to make posting a comment as easy as possible. Of course, doing so could lead to people leaving all types of comments, both useful and not. A great example of designing how you want users to interact with a product is Pinterest.
The Pinterest Way
Most comment blocks on Pinterest are filled with simple comments. The content doesn’t lend itself to much discussion, but Pinterest obviously wants users to engage in other social interactions, and it has designed the product to make that easy to do. You can easily like, comment, repin and share any image that you come across, and all of this makes the content spread quickly throughout the network. This network effect is one of the main reasons for Pinterest’s explosive growth over the past couple of months.

Pinterest made an interesting decision in requiring all users to connect to the website through either Facebook or Twitter. This mean that real names (usually) are tied to users; because of this, the quality of stuff that people share is generally high. Allowing everyone to hide behind fake identities would have resulted in a much different experience.
But the system wasn’t designed that way; it was designed so that people who post quality content (or at least content that others in their circle like) would become popular. Thus, rather than turning into a website full of animated GIFs and Web comics, the website has become a valuable resource to its community—mainly because it was designed to function that way.
Maybe It’s Not That Simple
I realize that simply saying that a product was designed to do what it is meant to do makes fixing problems seem like the easiest thing in the world. Of course, as you dig deeper into how to improve a design, you will have more variables to keep in mind; but always be aware of the simple fact that people will do what the design of a website lets them do.
Why did Twitter evolve beyond being a place where people just leave status updates? Part of it has to do with the tiny microcopy that was above the status update field. Originally it said “What are you doing?” and this of course led to people talking about their breakfast. After some time they changed it to “What’s happening?” which helped guide the people using the service to post about what is happening around them.
Why was Digg being gamed for so long? Because the design encouraged it. Simple. Executives at Yahoo might sit around a table asking why users aren’t using its search engine? Does the design of the website look like it is meant for search or even encourage it? Do you think Google execs sit around a table asking why people don’t use its search engine when they hit its main page? The design of Pinterest encourages users to continually scroll down the page looking at more and more pins; it is designed to keep you on the website.
Do you want your users to do something specific? Then design your website so that they do it.
It could be the greatest thing in the world, but what if you really designed something to chase people away or looking at it another way: What if you have designed it so there is no incentive to stay?
© Paul Scrivens for Smashing Magazine, 2012.
Yes James, Good guys do win
The last thirty days have been nothing but full of twists and turns in tech-land. Maybe it is the “bubble” or maybe it is just an up cycle, but it sure is exciting. Lots of fundings, news and new startups launches have pock-marked the face of the Valley. However here some events from today, that have one common theme: good guys do finish first.
- Code Advisors, the little guy bankers helping little startup guys gets a big cash infusion from JPMorganChase.
- Revision3, an online video network, gets acquired by Discovery Communications for $30 million.
- and LinkedIn buys SlideShare for $119 million.
A few days ago, uber-VC Fred Wilson wrote this great post – Where’s my billion dollar check, I wonder. In that post, this one paragraph is one that stuck with me.
And when you’ve been toiling away month after month, year after year, with no pot of gold in sight, it can be hard to watch that billion dollar deal go down. It’s a punch to the gut. It hurts. I’d love to say to all of you who are feeling that pain that your time will come. But most likely it will not. That’s the way this game is played.
All you got do is play the game. As hard as you can. And that is what the people behind those four news items I listed above did for a long time. Some of them I have known for nearly a decade-and-a-half. Others for only three years. But I can safely say that most of the people behind these companies are genuinely good people, who were in it for the love of the game, and not the money.
Revision 3 was the producer and distributor of the GigaOM Show. They were a tiny company with big ambitions. Our show didn’t last long, but Revision 3 managed to withstand the online video bust and make a solid comeback. During the GigaOM Show days, I got to know David Prager, the understated and less-known third co-founder of Revision 3 (Kevin Rose and Jay Adelson are the other two co-founders.)
There hasn’t been a day since I have known Prager when he hasn’t been sweating blood for his company. Carrying cameras. coming up with show concepts and even putting up with a financial roller coaster, he was resolute in his ambitions for Revision 3. The fact that they are now part of Discovery, a company I deeply admire, is the ultimate victory for their idea.
Like Revision3, SlideShare too is the story of sheer guts and glory. First, they heard the jabs – a YouTube for Powerpoint presentations? Now who would want to share Powerpoint presentations and create a social network around these presentations? The company raised a total of $3 million from a whole bunch on angels and Venrock.
They were unconventional — splitting their operations between India and United States. (Ever want to know the real meaning of toughing it out — try flying to New Delhi in economy class multiple times a year. ) Rashmi Sinha and Jon Boutelle are a couple and apparently it is a no-no in the Valley to fund a couple. And they built a product that people would pay for — a strange idea for some kids.
Rashmi and Jon (who occasionally wrote for GigaOM as a guest blogger) essentially pinched pennies and lived between hope and despair as they built a great little company. They never got the media attention or the credit due to them. And yet, they showed up every day, to fight the good fight anyway. I guess playing for the love of the game does eventually turns into a windfall.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- How to navigate the new world of digital advertising
- Social media in Q1: commerce and discovery dominated
- Controversy, courtrooms and the cloud in Q1
May 03 2012
The Midas List? Yeah, sure, & I’m Brad Pitt
Forbes came out with its annual Midas List, which ranks venture capitalists. Lists on the web are essentially page view machines, but at Forbes, they are a religion. I worked for Forbes.com and know how much work used to go into putting together the Billionaires and the Richest Americans list. So when you see the Midas List, you assume that it is going to be a well thought out and comprehensive listing.
Well, not so much. I looked at the list and found that Fred Wilson, who is one of the most-successful venture capitalists of the post-social era, is listed at #20. Wilson is a general partner at Union Square Ventures, a firm he co-founded, and his investments include Twitter, Etsy, Tumblr and Kickstarter.
He invested in most of these companies during the early stage of their start-up life and long before they became household names and were successes. When investors put money in at this early stage, the returns they get from hit companies are much higher. His return on investment on those dollars is much, much higher than say someone who invested in Twitter at, say, a $3.7 billion valuation. I don’t know, say, John Doerr, for example, who is ranked at the #12 spot.
“Everyone in the industry knows USV is the top VC, so any ‘top list’ like Forbes that doesn’t include them is a joke,” tweeted Chris Dixon, an entrepreneur and partner at the Founder Collective. David Lee, who works with Ron Conway at SV Angel, added, “It’s like putting Andrew Luck at #20 in an NFL mock draft.” Bijan Sabet, who incidentally is #57 on the list and has invested in Twitter and Tumblr, added, ”Also list doesn’t take into account cost basis or ownership.”
The point is not to defend or talk-up Fred Wilson — he can do that himself on his blog, and frankly he doesn’t need to. The reason for bringing him up is that the list’s methodology is just weird and, well, ambiguous at best.
Do Forbes and its partners take take into account how much money was invested in Skype and how much of it was actually returned to the limited partners at Andreessen Horowitz? And how do they explain that Mary Meeker is on the list at #42 (ahead of say, Sabet), even though she has been in the business for — wait for the drum roll – 17 months. And well, if we are going to include Meeker on the list, then why not Brad Feld from The Foundry Group, who was an early investor in Zynga, one of the hot investments?
To be clear, I am not commenting on individuals, but more on the Forbes methodology:
For the Midas List, we created our data-based rankings again this year with TrueBridge Capital Partners, a venture capital-focused fund of funds. Also advising us on our final ranking was an expert panel made up of secret sources, including professionals from a premier global investment consulting firm and a leading foundation’s investment office.
The aim of the Midas List ranking is to identify the venture capitalists who are providing the best returns for their investors, while helping create the most valuable and impactful technology and life science companies. To assess performance, we looked at all venture-backed initial public offerings and mergers and acquisitions valued at more than $200 million over the last five years, since 2007.
When I worked at Forbes.com, I got to know a lot of people who worked on Forbes’ lists. There was a dedicated team that worked around the year and dug up little-known facts and details before assembling the final tally of America’s Richest or the Billionaires’ list. The effort that went into those lists was so comprehensive that you could take it to the bank. The methodology for the Midas List, based on Forbes’ own description above, is nowhere close to having that rigor. So, if Forbes is serious about this list, it needs to devote resources to it.
Related research and analysis from GigaOM Pro:
Subscriber content. Sign up for a free trial.
- Facebook’s IPO filing: ideas and implications
- The future of mobile: a segment analysis by GigaOM Pro
- GigaOM Euro 20: the European startups to watch
Removing Stumbling Blocks In Mobile Forms
A few weeks ago, I was quite surprised when I saw the pavement quickly approaching while I was out for a walk. Laying there stunned, I soon realized what had happened: I fell. Ouch. B-minus. I normally try to be as attentive as possible, but this time a big crack in the pavement caught my shoe and threw me completely off balance.
After reporting my clumsy accident to friends and family, I instantly received comments like: “be more careful” or “better watch out next time”. In the end, I started to defend myself—if that crack would not have been there, I most likely would not have been face-planted.

When it comes to filling out forms on a mobile phone, I have observed many users running into a similar experience, merely less painful in its physical aspect. Many elements within a mobile form affect how smoothly users will get to a service or product hiding behind a form of any kind.
There are several factors that can be considered to be stumbling blocks throughout the journey of filling out a form. Specifically on a portable device, this journey is complicated by the fact that we have to consider contextual parameters such as time, location, or limited input options, in comparison to a firm desktop experience. In this post we will look at the most common stumbling blocks for mobile devices. Moreover, I will discuss design strategies to avoid stumbling blocks and to facilitate a safe and quick stroll through forms for mobile users.
Help Users Stay On The Right Path
Some might say that elegantly designed forms can be compared to the likes of an efficient traffic system—as soon as you enter the road, you also enter a world of permanent and dynamic guidance that helps navigate you safely to your final destination. For example, the crosswalk signals tell you when it is okay to cross the street, just as the street signs signal the names of the streets that you are on.
Street lights are also provided to help you navigate through difficult terrain in the dark. Keeping in mind your ultimate destination, you ultimately decide where to go, step by step. Road signs present your options and point out limitations. You can follow the traffic, take a short cut, or obey the navigation system on your phone.
In this situation, comprehensible and timely feedback is vital. The same applies to mobile form design. Signposts and immediate feedback encourage users to complete a form. Although inputting data on a mobile device can be very cumbersome, many people happily key in vast amounts of information when using services such as Twitter, Facebook, or text messaging on their mobile devices. Such services are good examples of how seemingly poor interfaces will not stop people from using a much wanted service, as long as the return of their effort is evident. People who understand and trust the outcome of their journey are less likely to hesitate about wandering even down a difficult path.
However evident the effort of typing on a mobile device might be, inputting data can take some time and can also become frustrating very quickly. Letting your users know almost instantly that they provide data in the wrong format, or that their username is already taken, is important. In the same way, a form can tell them where they are within the form, to make sure they don’t type the right data into the wrong field.
Furthermore, portable devices are more likely to suffer from connection errors and slow connections than desktop devices. Client-side validation techniques, such as HTML5/CSS based or optimized JavaScript approaches, have proven to be advantageous in this case, as they reduce the amount of data transfer to easily allow UI enhancements while coping with less stable connections. But keep in mind when using JavaScript for form validation, that some mobile browsers (such as the Blackberry OS browsers—except of the most recent one), are not JavaScript enabled per default. Therefore, users who are unable or uninformed about how to change their settings will benefit from implementations following the concept of progressive enhancement. The less time users spend on retyping data or waiting for data to be validated the quicker and happier they will get through a form.
Minimize Steps And Crossroads
One of the biggest take-aways from the Keystroke-level model in form design is that navigating along interactive elements requires both physical as well as mental activity. This can have a severe impact, especially on a mobile phone, based on the natural way of interacting with a portable device. Every input field within a form requires users to scroll through it, understand its meaning, focus on it, and then provide the correct information.
Due to the fact that people use their devices in a lot of different ways and these devices vary “greatly”, form elements that are spread over several input fields are prone to be rendered on a mobile device in a way unintended by the designers. As an example, during user testing sessions, I sometimes see users getting stuck on providing their phone numbers when having zoomed in on the form. The typical behavior is to enter their entire number into the first box provided for the area-code, completely missing the second input field. After submitting the form, they are puzzled about why there are two fields and the corresponding error message.

Separated telephone number fields (left) in comparison to a unified field (right) with optmized input type and a label within the field to remind users about the area code.
To allow users to get through a form quickly, there are a variety of compression techniques to reduce the amount of fields needed to provide certain data. Many of them require more post-processing on the back-end. If you can’t dissect numbers on the back-end, smart defaults or clever instructions work just as good. Some of them simply require a thought about the way of keying information into a field. For example, using a predefined drop down to provide the date of birth, rather than a loose input field or htlm5 optimized input fields for numbers, mail addresses, or other types of data, when appropriate. Dynamic input masks can help users to provide even quite complicated types of data with ease. Moreover, it will just take you a minimal effort of scripting.
At other times, forms might benefit from rather unconventional approaches such as text input fields for a quick and easy country selection. Furthermore, there are a variety of libaries such as jQuery mobile to optimize input fields and to ease validation, even for complex data.
Overall, our goal is to allow people to navigate through the form, achieving the quickest possible success with the least necessary effort. At all times we want them to feel that they are doing the right thing, and that their time is well spent. Brevity is crucial. Some people get stressed when spending too much time on trying to find hidden checkboxes, switching between keyboard layouts, or attempting to understand skewed marketing questions. Some people get physically tired answering redundant questions, filling unnecessary blanks, or scrolling up and down to find a required field that they just missed. To reduce cognitive load as well as physical effort it is important to remove optional steps from a user’s radar of attention, simplify the way of inputting information wherever possible, and to create a comprehensible flow throughout the form. If the process is too complicated (or the effort too high) a dropout is quite likely.
In the end, fine-tuned and streamlined forms will save your company phone calls from frustrated users and lead to more and more happy ones as it requires them to spend less time navigating through input fields and figuring out their meanings.
Uitilize Signposts And Mark Paths Clearly
Another great design concept to exploit for form designs are the Gestalt laws of grouping to help support the orientation of users. Applying grouping principles to a multiple questions form allows us to structure content, to create a visual flow, and to group related form elements.
In many projects I have seen design teams arguing about whether to break down a rather long form for mobile devices into several short pages or rather for one long page. Either way, there are endless possibilities for both design approaches to elegantly confirm users about their progress. This helps them recover from their errors, and to make them feel confident that the data being saved will not have to be reentered (in case they loose the connection, or accidentily close the application).
Both design approaches have their individual benefits, the only spanning factor here is the breakdown of the long form into meaningful and manageable chunks. For single-page designs, this means that it should even be possible to visually distinguish the single steps from one another. Especially with portable devices, the longer a form page is, the faster users will be able to scroll through, in case they have to jump between fields. Poor visual guidance in this way will result in users missing to fill out fields, losing sight of fields, and/or getting frustrated by searching for them after being presented error messages. White space and general grouping techniques are therefore vital to create visual guidance throughout a form.

Using color coding to highlight the active input field from other input fields (left) or to visually differentiate sections from one another in a long form (right).
Distinct grouping in interface design is a basic exercise because of its power for reducing processing speed and cognitive load. A while back, Matteo Penzo investigated the effect of different visual grouping techniques for a typical sign-up process. In his eye-tracking study, he analyzed the importance of label alignment for input fields and highlighted the superiority of top-aligned labels in many cases. Easy to distinguish input fields with top-aligned labels in close distance to one another allowed users to look at the label and the field in one go.
Other techniques required higher processing efforts, thus increasing the coginitve load and the time it takes to process the entire form. Less effort is good, and despite the granular example, we have to keep in mind that all these factors add up through input elements, the different sections, and the form as a whole within the website. The more complex the form, the bigger the effects of distinct grouping. Reducing the need for visual fixations allows a reduction in cognitive load, helping users to focus on their task and allowing your form to function almost like a navigation system—helping users to find their way to the goal.
By considering the effects of distinct groupings, we support our human capability to naturally perceive objects as organized patterns and take away the need for users to create an understanding about the form by reading the questions in depth, relating to the elements mentally. Naturally we want users to read through the questions. But similar to a vis-à-vis conversation, we can use facial expressions in combination with the words we say to underline our message and to get it across more easily.
Allow For Platform-Dependent Shortcuts
One of the major reasons that users get stuck on forms when filling them out on portable devices is limited visibility. Users, who are entering key information into a form’s field, usually have more than half of their screens covered with the keyboard, input suggestions, and other status information. To navigate between fields, and for general orientation, I see in many testing sessions where participants frequently try to disengage the onscreen keyboard, when looking for certain fields, or scrolling through the form to increase visibility.
However, many people will use the “return” button on the bottom right of the keyboard to disengage it after keying information into the field, or even to confirm their input for the single field. Although this approach helps many users to get rid of the keyboard (and to see the form on their whole screen), pressing the button also means, in many cases, that the form will be sent to the server straight away. Therefore, many users will be confused by a loading screen and the need to wait for a server response after pressing the “return” button.

The return button on Android (left) and iOS (right) is very salient within Web forms, and pressed by many users without the intent to send off the form.
Using the keyboard to send off a form is very handy, when using a single field form such as a search box. However, for multiple question forms on portable devices, it is important to check the form on the client side before sending it off, when users press the “return” button (by accident) to avoid confusing loading times. To ensure that your form is not submitted by accident, there are plenty of client-side validation tools; jQuery plugins, for example, provide everything we need.
Provide Contextual And Personalized Guidance
In short, be a tour guide. After all, designing a good form is like planning a hike with friends or family. Not only do we need to find out who will be on the trek, we need to plan for breaks, points of interest, and unguided side-treks in order to make sure everybody gets the most of their hike. However, as most of you will know, most hikes are not free of problems, and difficulties are inevitable; people can wander off, some might need help or more time to get through challenging passages, weather conditions are bound to change, and general mistakes happen. It is seldom that all of these inevitable difficulties will evolve into a real problem as long as we are prepared. Similarly to a hike, difficult situations are all about awarness, clear communication, and guidance. All it takes is a good approach to inform users what their problem is and what they can do to fix it.
There are plenty of techniques to help strayed users find their way back to the right path. Putting messages under input fields, for example, has proven to be quite a solid approach for telling users what has gone wrong. In combination with noticeable color coding (i.e. red for errors, or green for confirmation) you can be sure to get the necessary attention.

Two designs showing prominent error messages for misspelling hints (left) and general processing errors (right).
Another important aspect that is often neglected when it comes to messages within forms is the choice of words. On the one hand this refers to what we say, and on the other, it is about how we say it. Your error messages or instructions will most likely be read by a nontechnical human being. Let’s create messages as we would be talking directly to your user: avoid jargon, be tactful and brief. There are many useful recommendations on how to design effective error messages. Most importantly, we want our users to understand what happened and why it happened in a clear fashion.
On top of that, most users will not only appreciate clear notification, but also advice on how to fix the problem right away. Dyson, for example, managed to reduce support calls and increase the confidence in their products with a simple change in the way they display error messages. Rather then showing the problem (e.g. “Low Voltage Error”), they switched to displaying possible solutions (e.g. “Check Power Cable”). In this way, they are not only making their users aware of problems, they are also giving them guidance on how to fix them. On your form, many different users will possibly make similar mistakes. If possible, it is a good idea to analyze inputs to include a solution for the problem that helps users to recover them quickly. Ideally it even relates to the data they wrongly provided.
Wherever error messages pop up troughout the day, try to record them. At the end of the day, those records can tell us where stumbling blocks are still hiding, and what we need to improve to smooth out the path.
Conclusion
Mistakes happen—c’est la vie. Ideally though, we should aim to avoid most of the tripping hazards that delay so many users from filling out forms on a portable device. Similar to an uneventful stroll on the pavement, the smoother the path is to the destination, the more likely users will complete the journey. Easy orientation, no detours, clarity, and a little bit of guidance are a traveler’s best friends. And experience shows that the further users get before stumbling upon an error, the more likely they will put extra effort into completing the task.
Ultimately, other stumbling blocks may exist apart from the ones I discussed. So try to connect your analytics to the activity on the pages to find out where people drop out of the process. This will show where stumbling blocks may exist and help to remove one block after the other to ensure the user the smoothest journey.
(jvb)
© Robert Brauer for Smashing Magazine, 2012.
May 02 2012
Applying Macrotypography For A More Readable Web Page
Any application of typography can be divided into two arenas: micro and macro. Understanding the difference between the two is especially useful when crafting a reading experience, because it allows the designer to know when to focus on legibility and when to focus on readability.
This article focuses mostly on a few simple macrotypographic techniques—with a dash of micro—and on how to combine them all to build a more harmonious, adaptable and, most importantly, readable Web page.
First, some definitions. Microtypography has to do with the details; setting the right glyph, getting the appropriate kerning and tracking, and making stylistic choices such as when to use small-caps. Micro techniques have received a lot of attention recently, as browser makers adopt new CSS attributes that allow for finer control over Web type. Microtypography deals mainly with legibility and can be thought of as the design of letters and words.
Macrotypography focuses on how type is arranged on the page. Most macro techniques have been achievable through CSS for quite some time, but because our understanding of the Web page is changing, the way we use these techniques must adapt. Macrotypography deals mainly with readability and can be thought of as the design of paragraphs and the page.
The Importance Of Readability
For the designer’s purpose, readability refers to the ease with which a body of text can be consumed, and it correlates closely to the reader’s eye strain. This should not be confused with legibility, which refers to the degree to which individual glyphs in text can be discerned. The techniques for creating a great reading experience are complementary to those for creating a great user experience (UX), and vice versa. They also both share the same symptoms of failure. Poor readability on a website can lead to confusion, frustration and ultimately abandonment, while a great reading experience is invisible, supportive and engaging.
As with UX design, every website design would benefit from some measure of concern for readability. For example, text-heavy websites—such as blogs, newspapers and magazines—should uphold readability as a priority, while websites for events and e-commerce might just need to tweak line heights and font sizes. Whatever level of importance you place on readability, you should undertake a continual process of refinement towards an effortless reading experience.
Techniques For Improving Readability
The foundation of great reading experiences on the Web lies in the study of book design. After all, books are where readable typography was honed. Personally, I hold The Form of the Book by Jan Tschichold as the ultimate resource for good taste in book design, and I am certainly not alone.
Many of the techniques we’ll cover here have been adapted for the Web page from lessons introduced in this book. Sadly, the book has been out of print for about 20 years (at least in the US), and a copy can cost around $150 on Amazon’s marketplace. I have created a digest of it, but if you want to read the full text, you could always try your local library or university (which is how I finally got my hands on it).
Now, let’s look at the various macro techniques—and a few micro techniques—to make your website’s content more readable. I have chosen an article that is typical of the kinds of reading experiences users encounter. I have removed the header and some branding elements, but it remains mostly as I found it.
In our example, important content (navigation, advertising, related links) lies on either side of the reading area. For optimum readability, a less obtrusive placement of these elements would be best, but this is not always possible. We will, therefore, not rearrange the layout, but work within it. Here is what we are starting with:
As we learn about each technique, we will apply it to our example. But keep in mind that this exercise is to improve only the reading experience, not the overall design.
Command Your Margins
Margins give the eye room to maneuver. They provide a buffer between the main content and ancillary elements—such as related links and ads—allowing the reader to focus on the text. Beyond this purely functional purpose, margins can also bring deeper harmony to the layout.
Margins comprise negative space; they afford the designer an opportunity to build a relationship between a body of text (the figure) and its surroundings (the ground). As Tschichold tells us, “Harmony between page size and the type area is achieved when both have the same proportions.” Now, the proportions of a page in a book are much different than those of most digital displays (especially ones in landscape orientation), so to adapt this concept to the Web, we can work towards a harmony between our text and its immediate visual container.
In Practice
On our example page, the margins are not very generous. Also, the main content is crammed in between two very loud columns. First, we can add more space to the right of the text, giving the reader room to go from the end of one line to the beginning of the next without being distracted by the secondary content on the right. And adding more margin to the left of the text allows the reader to easily find the start of the next line and to scan the article for topics they are interested in.
Margins can be set intuitively by increasing the amount on each side until the content feels comfortable. Applying this to our article element is easily achieved by adding padding in our CSS (rather than margin, in this case). For now, we will just double the padding on the left and right:
article {
padding-left: 20px;
padding-right: 40px;
}
In our adjustment of the margins, we can create still greater harmony between the copy and its surroundings, but first we must visualize an invisible container around the content. This will be our “page” with which to build harmony in the reading area:
The way to create harmonious proportion between text and its container is to give them the same shape. The content should have the same proportions—only smaller—as its containing element. Tschichold surveyed a mountain of book proportions and concluded that the most harmonious proportions for margins are roughly 2:3:4:6 (top:right:bottom:left) for the left-facing page (recto) of a book. Given that we do not have facing pages on the Web, we can make the margins symmetrical and adjust the ratio to 2:3:4:3 by shaving off a bit of the left margin. Web text does not need as much side margins as book text because Web pages do not need to accommodate the reader’s thumbs.
Though they may seem the obvious unit of measure, percentages for padding will only measure in relation to the width of our article element’s container, skewing our top, bottom and side proportions to an inappropriate degree. Therefore it’s best work with padding in ems or pixels until the reading area has the same proportions as its container. To keep things simple, let’s start with 2em for the top padding in our example. After applying our adjusted ratio from above, our article’s padding can be written as 2em 3em 4em 3em or 2em 3em 4em in CSS shorthand. Given the fluid nature of content on the Web, this is just an approximation of Tschichold’s proportions. For a typical body of text on the web—which is taller than it is wide—the margin should be generally less on top, even on the sides, and most at the bottom:
article {
padding: 2em 3em 4em;
}
We can also move the lead image to the right. This allows the body copy to hold its shape better and allows for even easier scanning of the article. We can break this principle to draw attention to images and figures, of course, but for our example the image is too distracting on the left when placed early in the article.
If we want, we can bring the text forward on the z axis, putting even more focus on our copy and de-emphasizing the ancillary content by creating a visible container for our text. This is a tactic we can easily use in Web design that books do not need:
body {
background: #fcfcfc;
}
article {
background: #fff;
border: 1px solid #eee;
padding: 2em 3em 4em;
}
Our page already feels more balanced and less intimidating, but we can use more techniques in the body of the text to further enhance readability.
Choose Readable Fonts
Font selection is a micro concern, but it has a tremendous impact on the macro appearance. In Detail in Typography, Jost Hochuli best outlines this interdependence: “In typography, details can never be considered in isolation.”
The font for the body copy should be chosen for its on-screen readability, before any concern for style. The headings and pull quotes are perfect opportunities to flex your typographic creativity, but leave the long runs of copy to dependably readable workhorses such as Georgia, Arial and Myriad, which were all designed for optimal reading on a back-lit screen.
Fonts that are more readable on digital screens typically exhibit the following attributes:
- Tall x-height;
- Slightly wider em width, but not condensed or extended;
- Mostly devoid of style;
- Serifs for larger type, and sans-serif for smaller type.
All of these rules have exceptions, but they should be your guiding principles when choosing a font for the body copy. Here are some font stacks that I find give some flavor of style, provide appropriate fallbacks and are all highly readable:
"Proxima Nova Regular", "Helvetica Neue", Arial, Helvetica, sans-serif;
(As used right here on Smashing Magazine)"Myriad Pro", Arial, Helvetica, sans-serif;
(As used on my website)"Fanwood Text"", Georgia, Times, "Times New Roman", serif;"PT Sans", "Trebuchet MS", Arial, sans-serif;
In Practice
Let’s apply Myriad Pro to the body text on our page:
article {
background: #fff;
border: 1px solid #eee;
font-family: "Myriad Pro", Arial, Helvetica, sans-serif;
padding: 2em 3em 4em;
}
Keep It Measured
In setting any block of text, we must consider its measure. Measure is defined by either the number of characters per line or the number of words. I use words because they are easier to count, and I try to follow Tshichold’s suggestion of 8 to 12 words per line. If you base your measure on characters, then 45 to 85 characters per line is ideal. Once the margins and widths have been set, proper measure can be achieved through two attributes in the CSS, font-size and word-spacing.
When deciding on a size, strike a balance between making the font small enough that the reader is not too distracted when jumping to the next line, but big enough that they do not have to lean in to read the text on the screen. For most fonts, 16 pixels works well. Other factors might lead you to making it larger or smaller, but 16 pixels is a great place to begin. As for word spacing, most browsers do a decent job of setting this for you, but if you are having trouble getting an appropriate measure, cheating this attribute slightly either way can be handy.
In Practice
On our page, let’s add a 16-pixel font size, and cheat the word spacing in just a tiny bit to achieve a proper measure (word-spacing is supported in all major browsers). You might instead want to use ems or rems here so that the layout remains flexible whatever the font size set by the user as their default.
Until we set a new line height, our page will look like a jumbled mess, so let’s just look at the code at this point:
article {
background: #fff;
border: 1px solid #eee;
font-family: "Myriad Pro", Arial, Helvetica, sans-serif;
font-size: 16px;
padding: 2em 3em 4em;
word-spacing: -0.05em;
}
Set An Appropriate Line Height
Once the font size is set, you can determine the appropriate line height. On the Web, we work in terms of line height, which by default is an equal amount of space above and below text on a line. Not to be confused with leading in print design, which generally refers to the amount of space below a line of text. The governing rule for line height (and leading) is, the longer the line length, the taller the line height should be. And vice versa: the shorter the line length, the shorter the line height.
Find an appropriate line height by first determining the point at which the ascenders and descenders of the lines of text do not touch, yet the lines are close enough that the reader requires no effort to find the next line. Then adjust until the height feels balanced with the line length. Some may leave the line-height attribute to the browser’s default, while some may set a global line-height on the body element. Both approaches make sense because the line height would then stay proportional to the element’s font size; but both also assume that the line width of the content will stay consistent, which could lead to situations that violate our governing rule.
In Practice
Let’s add a line height of 1.3 ems to our example, using ems so that our line height stays proportional to the font size, and see how the font size and line height work together:
article {
background: #fff;
border: 1px solid #eee;
font-family: "Myriad Pro", Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 1.3em;
padding: 2em 3em 4em;
word-spacing: -0.05em;
}
It is important to note that readable line heights can be especially tricky to keep consistent in responsive layouts, as line lengths will vary based on device widths. To solve this issue, Tim Brown has proposed an idea he calls “Molten Leading,” which would allow line heights to increase proportionally based on the screen width. His post links through to a couple of Javascript implementations of this idea. In lieu of Javascript intervention, you can also manually find the screen widths at which the line heights become uncomfortable, use a media query to target that width, and set a more readable line-height in the CSS.
Find The Proper Paragraph Styles
We need to figure out which paragraph style best fits the content. Jon Tan has done a fantastic job of outlining various styles and how to craft them with CSS. The appropriate style for a piece of content varies based on the flavor of the content and the rhythm of the paragraphs. I have written about my preference for using indents, rather than line breaks, when setting long-form text. This helps to keep the flow between ideas, but it can be distracting when the paragraphs are short or the line length is long. Deciding what constitutes the perfect paragraph for your content is up to you.
In Practice
Our page is a news article, where the flow between paragraphs is dictated more by chronology than by ideas, so line breaks are still appropriate. We could easily apply indents, if appropriate, to the paragraphs with one simple CSS rule:
article p + p {
text-indent: 2em;
}
We specify p + p rather than just applying the rule to all p tags because we want to indent only those paragraphs that follow other paragraphs. Ones that follow headings, images and so on should not be indented.
Instead of indenting, though, we just want to shrink the line breaks a bit so that each paragraph is not so disconnected from the last. For our page, let’s use half of the line height:
article p {
margin-bottom: 0.5em;
}
Balance The Text’s Contrast
One final consideration for content is text color. Contrast is a major contributing factor in eye strain and so greatly impacts readability. Low contrast between text and background causes more squinting and blinking among readers, a sure sign of strain. Black on yellow has the highest contrast, but we have been conditioned to view this as a sign of warning or alarm, thus increasing anxiety among readers. Black on white is high in contrast, too, but too harsh for extended reading on back-lit screens. For long-form text, I have found dark-gray text (around #333) on a white or light-gray background (no darker than #EEE) to be optimal. This is a gross simplification of color theory to suit the purposes of this article. To learn more about color, Mark Boulton has written a great primer on color theory for the Web; you can also find many great examples in Smashing Magazine’s series on color.
In Practice
Our article already has a white background (serving as a boundary for the margins), set against a wider light-gray background. We should probably keep the white, and lessen the darkness of the text to #444. We can then use #000 on the headings to give them slightly more emphasis:
article p {
margin-bottom: 0.5em;
color: #444;
}
article h1 {
color: #000;
}
The Result
We now have a much more readable page that invites users into the content. We could employ many more techniques across the entire website, but we have focused here on the main content block. Harry Roberts has written a great overview of these techniques and more for Smashing Magazine, which will give you a deeper understanding of everything covered here.
With a clean reading experience, people will better absorb the ideas being presented and will undoubtedly come back for more—that is, if your content is worth reading… but I can’t help you there.
Excellent Reading Experiences On The Web
Readability is not a new concept, of course. If you are just discovering what makes for a good reading experience, then congratulations, and welcome to all the discomforts of recognizing cramped and neglected type on the Web. It’s not all pain, though. Plenty of well-considered blocks of content are to be found. Let’s look at a few great ones and a couple that could be great with slight tweaks.
Please note: In the interest of showcasing only the reading experience, we have cropped each page to a scrolled view of the main content.
24 Ways
The reading experience on 24 Ways is quite nice. The text contrast is well balanced, the measure is not too long, and the font size is generous. At all responsive breakpoints, the design is a perfect example of a page with sufficient and balanced margins around the main reading area.
Desktop view
CNN
Long-form articles on CNN are good examples of how readability can work well on news websites. The layout does not show a visible container for the article—which in this case might have been distracting on a page already laden with so much content—but the margins are generous. Also, the line breaks for the paragraph styles are completely appropriate, because most online news stories are collated and updated from many sources and are not linear ideas. The font size (currently 14 pixels for the body copy) could stand to be a bit bigger, though.
Contents
The tablet view of Contents magazine is a wonderful experience all around. The measure is perfect, the line height and font size play together nicely, and the paragraph styles are perfectly suited to the content. The measure does get too long at desktop sizes, but with all of the other factors working so well, the effect on overall readability is negligible.
Tablet view
Desktop view
Elliot Jay Stocks
Elliot does quite a few things well on his website. The measure is right, the font (Skolar) is very readable and set at a comfortable size (16 pixels), and the line height is just tall enough to accommodate the link style. Generous margins create harmony between the main content and its container, while the side margins are uneven, making the page look like the recto of a book and giving the layout a unique character.
Esquire
Most articles on Esquire are great, but the reading experience is merely good. The margins are ample, the font is readable, and the contrast is high. All of these go a long way towards establishing good readability, but a few simple tweaks would make it great. Increasing the right padding would shorten the measure, which is a bit too long as it is. The font size could also be increased by a couple of pixels. And given that most Esquire articles are a linear progression of ideas, I would suggest paragraph indents rather than line breaks.
The Guardian
The design team over at The Guardian pays attention to crafting great all-around experiences. Readability is no exception. Measure, contrast and paragraph styles all work together to create a focused and comfortable reading experience in the midst of what could be an overwhelming amount of content.
A Working Library
A Working Library is one of the best reading experiences on the Web. Every aspect of readability discussed in this article has been well considered and executed. The harmony between text and its container is pitch perfect.
Refining Towards The Ideal
With the examples above, we have tried to show how readability can excel in a few different digital environments: blogs, news websites and online magazines. Some of these website do not have many of the constraints (such as ads and related content) of more commercial websites, so it could be argued that these designs exist in a vacuum, without pragmatic application or real-world pressures. We need these shining examples, though, to help us find the ideal reading experience for each project; and once we know that ideal, we should do our best to reach it.
In a recent talk on “What Is Reading For?” the famous typographer and poet Robert Bringhurst stated, “Books are and have to be utilitarian objects. They have to be used.” The same could be said of Web pages. Ideal reading experiences create better user experiences. Our job as designers is to refine the aesthetic qualities of the Web’s content in order to speed the process of consumption, thereby facilitating deeper understanding. Tired eyes all over the Web are counting on us.
(al)
© Nathan Ford for Smashing Magazine, 2012.
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...










































