From Seeing that Customer Experience to Scaling Twitter

Every week I read thousands of blog posts. For your weekend enjoyment, here are some of those highlights.  What are you reading this weekend?

01_optimize-messaging

On Starting Up…


http://www.rocketwatcher.com/blog/2010/07/startup-messaging.html

Optimize down your messaging by asking the right essential questions.

 
 

On Design & Product Experience…


http://goodexperience.com/2010/07/customer-experience-a-1.php

Learn how to see that customer experience.

02_visualize-experience
03_twitter-stretch

On Modular Innovation…


http://mashable.com/2010/07/21/twitter-scalability/

Twitter still testing the challenges of scaling Modular Innovation.

 

Have a great weekend!

Jeremy Horn
The Product Guy

About these ads

jQuery Plugin: Give Your Characters a NobleCount

jquerylogo256_thumb[1] NobleCount… for a more ‘proper’ count of the characters remaining.

twitter

A very common requirement with many of the more social products of the various companies I work with is the dynamic display of the number of characters remaining in a textarea, Twitter-style. When implemented, every one of these companies either developed a simple solution in-house or found a re-usable front-end plugin online. Most common, implemented within these products, and of all I could find open-sourced online, were sources lacking customization and/or, almost universally, lacking the desired user experience – updating the character count AFTER all or most of the user’s typing had ceased.

As a result, and also in my quest to always help provide my clients free, cheap and easy to use tools, I have been on the lookout for a jQuery plugin that would provide the ability to …

  • provide non-delayed, real-time character counts,
  • enable easy to customize visual behaviors, and
  • permit event and DOM hooks for the savvy with more advanced character counting needs.

While there are other similar tools out there, none adequately met my goals. Therefore, I created the jQuery NobleCount plugin.

Usage

NobleCount is a customizable jQuery plugin for a more improved counting of the remaining characters, and handling of resulting behaviors, of a text entry object, e.g. input textfield, textarea. Also, NobleCount supports pre-existing text within the text object and jQuery chaining.

$('#textarea1').NobleCount('#characters_remaining1');
$('#textfield2').NobleCount('#characters_remaining2', { / * OPTIONS * / });

As text is entered into the target text area, an object for the purpose of tracking the total number of characters remaining, defined as the maximum number of characters minus the current total number of characters within the text entry object, is updated – storing that information visually and/or within the DOM as an HTML 5 compliant data-* attribute.

Events and CSS class alterations, if defined, are triggered based on current user interaction with the target text entry object as well as the current state (positive or negative) of the character remaining value.

Example:

$('#test1').NobleCount('#count1');
<div>
	<textarea id='test1'></textarea>
	<br>
	<span id='count1'></span> characters remaining remaining
</div>

METHOD(S)

To properly initialize, both the text entry object and the object that will store the total number of characters remaining must exist and be passed to NobleCount.

$(TEXT_ENTRY_OBJECT).NobleCount(CHARACTERS_REMAINING_OBJECT);

Both TEXT_ENTRY_OBJECT and CHARACTERS_REMAINING_OBJECT must be specified and valid.

Upon successful initialization, all appropriate events and classes are applied to the CHARACTERS_REMAINING_OBJECT, including the storage visually (if not disabled) or only in the DOM (if enabled) of the integer value representing the number of characters remaining.

The target maximum number of characters (max_chars) are determined by the following

precedence rules….

If max_chars passed via constructor
max_chars = max_chars passed
else if number exists within characters_remaining object and number > 0
max_chars = number within the text() of CHARACTERS_REMAINING_OBJECT
else use NobleCount’s default max_chars

Also note that within the NobleCount context…

NEGATIVE is defined as Integers < 0
POSITIVE is defined as Integers >= 0 [on_positive will fire when char_rem == 0]

Settings

By default, the maximum number of characters is set to 140 (à la Twitter), a negative number of characters remaining is permitted, and no events, classes, or DOM attribute modifiers are enabled.

To change these settings, they can either be accessed directly…

$.fn.NobleCount.settings.max_chars = 40;

… or at the time of initialization…

$(t_obj).NobleCount(c_obj, {max_chars:100});

The default settings data structure is…

$.fn.NobleCount.settings = {

on_negative: null,
on_positive: null,
on_update: null,
max_chars: 140,
block_negative: false,
cloak: false,
in_dom: false

};

The parameters are defined (and all can be overridden) thus…

on_negative

  • class (STRING) or FUNCTION that is applied/called when characters remaining is negative IF DEFINED
  • on_postitive class, if defined, is removed when on_negative event triggers

on_positive

  • class (STRING) or FUNCTION that is applied/called when characters remaining is positive IF DEFINED
  • on_negative class, if defined, is removed when on_positive event triggers

on_update

  • FUNCTION that is called when characters remaining changes

max_chars

  • target maximum number of characters

block_negative

  • if TRUE, then all attempts are made to block entering more than max_characters
  • if FALSE [default], text area will let individual entering the text to exceed max_chars limit (characters remaining can become negative)
  • not effective against user pasting in blocks of text that exceed the max_chars value

cloak

  • if TRUE, then no visual updates of characters remaining object (c_obj) will occur
  • if FALSE [default], then the text within c_obj is constantly updated to represent the total number of characters remaining until the max_chars limit has been reached
  • note, this does not have any effect on the char_rem value returned via any event callbacks

in_dom

  • if TRUE and cloak is ALSO TRUE, then the number of characters remaining are stored as the attribute of c_obj named ‘data-noblecount’
  • NOTE: if enabled, due to constant updating of a DOM element attribute, user experience can appear sluggish while the individual is modifying the text entry object (t_obj)

Settings example:

settings =
	{
		on_negative: 'go_red',
		on_positive: 'go_green',
		max_chars: 25,
		on_update: function(t_obj, char_area, c_settings, char_rem){
			if ((char_rem % 10) == 0) {
				char_area.css('font-weight', 'bold');
				char_area.css('font-size', '300%');
			} else {
				char_area.css('font-weight', 'normal');
				char_area.css('font-size', '100%');
			}
		}
	};

Any callback functions assigned to any of the available events are passed the following parameters: (t_obj, char_area, c_settings, char_rem)

t_obj

  • text entry object

char_area

  • characters remaining object

c_settings

  • result of the options passed into NobleCount at the time of initialization merged with the default options

Having custom function append their own data to c_settings is also a great way to pass in and remember other state information that will be needed upon the triggering of NobleCount events.

char_rem

  • integer representation of the total number of characters remaining resulting from the calculated difference between the target maximum number of characters and the current number of characters currently within t_obj

Get It

You can download NobleCount, dual licensed under GPL and MIT, from…

jQuery Repository

http://plugins.jquery.com/project/NobleCount

Git
Public Clone URL: git://github.com/theproductguy/NobleCount.git
GitHub:
http://github.com/theproductguy/NobleCount

Zip

http://plugins.jquery.com/files/jQuery.NobleCount-source-bundle_1.0_20100322.zip

Demo


http://theproductguy.com/noblecount/noblecount.demo.html

Status updates can be found here, jQuery NobleCount.
If you find this useful, or have any questions, ideas, or issues, leave a comment.

Enjoy!

Jeremy Horn
The Product Guy

From Debating Stack Overflow to Re-designing Janko

Every week I read thousands of blog posts. Here, for your weekend enjoyment, are some highlights from my recent reading, for you.  Have a great weekend!

01_stackoverflow

On Starting Up…


http://37signals.com/svn/posts/2159-all-the-wrong-reasons-for-stack-overflows-vc-chase

Questioning the value-add of venture capital, from 37Signals to Stack Overflow.

 
 

On Design & Product Experience…


http://www.jankoatwarpspeed.com/post/2010/02/16/redesigning-jankoatwarpspeed.aspx

The agile processes behind the re-design of Janko.

02_janko
03_twitter-glue

On Modular Innovation…


http://opengardensblog.futuretext.com/archives/2010/02/is_twittter_the.html

Twitter… Is it the glue of Modular Innovation?

 

What are you reading this weekend?

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Google Add to Mixx!

From the Dissipation of the Tag Cloud to Twitter Ad MI

Every week I read thousands of blog posts. Here, for your weekend enjoyment, are some highlights from my recent reading, for you.

01_dysfunctional-leader

On Starting Up…


http://www.readwriteweb.com/readwritestart/2010/01/chicken-soup-for-the-startup-d.php

Learn from the warped mind of the dysfunctional leader.

 
 

On Design & Product Experience…


http://woorkup.com/2010/01/20/the-death-of-tag-clouds/

On the imminent demise of the tag cloud experience.

02_dead-clouds
03_twitter-ads

On Modular Innovation…


http://www.techcrunch.com/2010/01/20/140-proof-rolls-out-ad-network-for-twitter-clients/

Modular Innovation in Twitter advertising.

 

Have a great weekend!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Google Add to Mixx!

Twitter’s Crawl

image_thumb2A company can have the best product around, but if the pages are too sluggish, if the product suffers recurring outages, if the user-product interaction is varied and inconsistent, the product’s overall Usability can, and does, suffer.

Quick-UX provides for the rapid, simple and quantifiable assessment of a product’s User Experience (UX). Among the various components that define a product’s Usability, as well as Quick-UX‘s, are Accessibility, Consistency, Recognition, Navigation, and Page Load Time.

In answering the question of Usability, "Can I use it?" the sub-category of Page Load plays an instrumental role. Page Load, often obfuscated or connected with other perceived causes of a product’s dissatisfaction, ultimately, either positively or negatively, presents an unquestionable influence on a product’s overall Usability.

Example: Poor Load Time (value = 0.0)

Twitter is fast becoming, and for some already is, an essential communication tool.

00_homepage-twitter

Yet, Twitter earns a Page Load Time variable value of 0, due to its intermittent slow performance, but more so contributing to this value are the constant outages felt through the year, month after month.

If the page doesn’t load, if requested action takes an interminable amount of time, if the likelihood of the next user action failing is constantly looming, the overall Usability of a product takes a terrible toll.

In 2009, according to Pingdom, Twitter experienced a total of 20.82 hours of downtime.

01_twitter-pingdom

Outages of Twitter were not isolated to merely the entire site being unavailable, but also consisted of sub-sections, or sub-features not working or resulting undesirable or unexpected behavior. Contributing to the pervasive problem of Page Load Time is both the inaccessibility of the product as well as the inability of the users to obtain key information (missing updates, etc) and other bugs leading to incomplete or otherwise incorrect Page Loads.

A Quick Study

I quickly examined and compiled a list of incidents that affected the Page Load Time of the Twitter product, distinguishing between total downtime, and partial downtime and information inaccessibility, based upon the public posts on Twitters blog.


http://status.twitter.com/archive

I did my best to not double count any problems, but it was difficult since many of the problems occur so frequently, and it is often difficult to distinguish, from these status blog posts alone, between a persisting problem being experienced or fixed, from that of a new emergence of a similar or same problem. Furthermore, I also excluded the impact on Page Load Time arising from scheduled maintenance/downtime – periods of time over which the user expectation would be most aligned with the product’s promise of Page Load Time.

Some of my notes regarding my review of Twitter’s 2009 product Page Load Issues…

 

Dec 17

Site Outage

DNS records compromised


http://status.twitter.com/post/288586541/working-on-site-outage

Dec 14

sms service unavailable

 


http://status.twitter.com/post/283934158/sms-service-temporarily-unavailable-we-are-working-on

Dec 8

unplanned downtime

 


http://status.twitter.com/post/275824585/responding-to-unscheduled-downtime

Dec 7

unplanned downtime

 


http://status.twitter.com/post/273515629/brief-downtime

Dec 6

high rate of failwhales

 


http://status.twitter.com/post/272315876/responding-to-whales

 

Nov 30

Unplanned downtime

high error rate; tmp disabled list feature


http://status.twitter.com/post/263867698/responding-to-high-error-rate-lists-feature

Nov 23

elevated error rate

 


http://status.twitter.com/post/254725789/fixing-elevated-error-rate-on-twitter-com

Nov 11

high number of errors

 


http://status.twitter.com/post/240542434/working-on-high-number-of-errors

Nov 6

elevated errors

 


http://status.twitter.com/post/235296654/were-looking-into-the-cause-of-elevated-errors-on-the

 

Oct 21

elevated error rate

 


http://status.twitter.com/post/219264090/elevated-error-rate-being-worked-on

Oct 18

network connectivity problems

 


http://status.twitter.com/post/216351172/responding-to-network-connectivity-problems

Oct 13

account lockouts after username/pw change

 


http://status.twitter.com/post/212318608/researching-username-password-change-problems

Oct 12

errors and inability to tweet

 


http://status.twitter.com/post/211258987/responding-to-increased-errors-inability-to-tweet

Oct 7

Unplanned downtime

 


http://status.twitter.com/post/207018761/recovering-from-unplanned-downtime

 

Sept 10

site slowness

 


http://status.twitter.com/post/185079863/working-through-site-slowness

Sept 9

secure connection failed issues

 


http://status.twitter.com/post/183975122/secure-connection-failed-issues

 

August 24

unexpected service interruption

 


http://status.twitter.com/post/170695014/we-are-responding-to-an-unexpected-service-interruption

August 16

Oauth and API problems

 


http://status.twitter.com/post/164410057/trouble-with-oauth-and-api-clients

August 15

unexpected downtime

 


http://status.twitter.com/post/163603406/working-on-unexpected-downtime

August 11

Site outage

 


http://status.twitter.com/post/160693237/responding-to-site-downtime

August 6

Site is down

DOS attack


http://status.twitter.com/post/157160617/site-is-down


http://status.twitter.com/post/157191978/ongoing-denial-of-service-attackhttp://status.twitter.com/post/157191978/ongoing-denial-of-service-attack

August 2

Search Down

problem coming from migrating data centers


http://status.twitter.com/post/44516325/twitter-search-temporarily-down

 

July 10

site latency

widespread


http://status.twitter.com/post/139238308/working-on-site-latency

July 5

restoring accidentially suspended accounts

 


http://status.twitter.com/post/136164828/restoring-accidentally-suspended-accounts

 

June 15

Outage

problem w/ maintenance by provider


http://status.twitter.com/post/124145031/maintenance-window-tonight-9-45p-pacific

 

May 30

unscheduled downtime

fatal software error


http://status.twitter.com/post/115523264/unscheduled-downtime

May 28

unable to create new accounts

captcha problem


http://status.twitter.com/post/114566780/unable-to-create-new-accounts

May 27

site latency

 


http://status.twitter.com/post/113959453/working-through-site-latency

May 27

Unplanned downtime

 


http://status.twitter.com/post/113891094/recovering-from-unplanned-downtime

May 22

search down

 


http://status.twitter.com/post/111769727/search-temporarily-down

May 21

robot errors

 


http://status.twitter.com/post/111054487/fixing-robot-errors

May 20

user search unavailable

 


http://status.twitter.com/post/110639419/user-search-temporarily-unavailable

May 14

unplanned downtime

 


http://status.twitter.com/post/107824532/unplanned-downtime

May 8

latency issues

resulting from a scheduled site maintenance


http://status.twitter.com/post/105202075/back-from-site-maintenance-working-on-site-latency

 

Apr 28

elevated error rate

fail whales


http://status.twitter.com/post/101237008/fixing-the-elevated-error-rate

Apr 13

slow load times and high error rates

 


http://status.twitter.com/post/95787359/responding-to-slow-load-times-and-high-error-rates

Apr 9

high latency

also fb not updating


http://status.twitter.com/post/94536362/twitter-com-is-experiencing-high-latency-were-also

Apr 7

high site errors; downtime/load issues

 


http://status.twitter.com/post/93850673/update-on-delivery-delays-errors

Apr 6

maintenance (no advance warning); downtime

 


http://status.twitter.com/post/93641925/one-hour-maintenance-starting-at-5-45p-pacific

Apr 6

errors; downtime

fail whales, robot pages; missing tweets


http://status.twitter.com/post/93501130/working-through-some-errors-this-morning

Apr 3

errors; downtime

fail whales, robot pages


http://status.twitter.com/post/92659539/recovering-from-errors-this-morning

 

Mar 16

unplanned maintenance

widespread slowness


http://status.twitter.com/post/87009894/unplanned-maintenance

Mar 4

problems logging in

 


http://status.twitter.com/post/83602310/problems-logging-in

Mar 2

power failure

degraded performance


http://status.twitter.com/post/82874378/power-failure-this-morning

 

Feb 18

latency issues

very long load times


http://status.twitter.com/post/79456053/working-on-site-latency-issues

Feb 14

downtime

db problem


http://status.twitter.com/post/78228774/back-from-maintenance-mode

Feb 11

Site down

db problem


http://status.twitter.com/post/77438630/site-back-up

 

Jan 20

site slow

slow load times


http://status.twitter.com/post/71824634/slowness

Jan 16

downtime

notified user of potential for more downtime


http://status.twitter.com/post/70991844/twitter-downtime

 

Dec 17

timeline delays and missing tweets

 


http://status.twitter.com/post/287676075/known-issues-timeline-delays-and-missing-tweets

Dec 10

problem posting tweets to FB

problem resulting from FB latency issues


http://status.twitter.com/post/277958642/not-all-tweets-from-facebook-app-being-posted-to

 

Nov 5

missing mentions

 


http://status.twitter.com/post/234412987/missing-some-mentions

 

Oct 28

no dmsg emails

 


http://status.twitter.com/post/226186595/not-receiving-emails-for-direct-messages

Oct 15

timelines 0.5h behind

 


http://status.twitter.com/post/214053142/timelines-currently-30-minutes-behind

Oct 8

timeline delays

bug


http://status.twitter.com/post/207632462/timeline-delays-this-morning

 

Sept 16

missing tweets

bug


http://status.twitter.com/post/189862465/tweets-from-users-you-follow-may-be-missing-from-your

Sept 14

missing tweets for some

 


http://status.twitter.com/post/187786359/missing-tweets-from-some-users

Sept 4

short delivery delays

 


http://status.twitter.com/post/179752377/working-on-short-delivery-delays

Sept 2

some tweets & followings delayed

small subset?


http://status.twitter.com/post/178076369/some-tweets-and-followings-delayed

 

August 12

timeline delays

 


http://status.twitter.com/post/161638570/working-on-timeline-delays

 

July 28

missing followers for new users

 


http://status.twitter.com/post/151217980/working-on-missing-followers-for-recently-joined-users

 

June 29

viewing other people followers/following disabled

bug


http://status.twitter.com/post/132761078/viewing-other-peoples-followers-and-followings

June 16

unable to find new users

 


http://status.twitter.com/post/124832153/working-to-get-new-users-into-find-people

June 12

search delay

new tweets not being picked up by search


http://status.twitter.com/post/122606485/search-delay

June 3

delayed followings

resulting from spam attack


http://status.twitter.com/post/117482837/delayed-followings

 

May 13

timeline delays

hardware failure


http://status.twitter.com/post/107561169/temporary-timeline-delays

May 4

search running behind

search not processing real-time


http://status.twitter.com/post/103533181/search-running-behind

 

Apr 22

data inconsistencies

bug

[still being fixed on the 27th]


http://status.twitter.com/post/99180872/tracking-down-data-inconsistencies

Apr 22

missing user images

 


http://status.twitter.com/post/98960090/missing-user-images

Apr 14

delayed search results

 


http://status.twitter.com/post/96196695/search-results-are-delayed-about-20-minutes

Apr 10

missing updates

 


http://status.twitter.com/post/94970050/were-working-to-resolve-an-issue-with-some-missing

Apr 6

missing avatars and dmsgs

 


http://status.twitter.com/post/93589702/missing-user-icons-avatars-and-direct-messages

Apr 2

not finding self in people search

bug


http://status.twitter.com/post/92334992/not-finding-yourself-in-people-search

 

Mar 18

missing tweets

db inconsistency, etc.


http://status.twitter.com/post/87625680/some-users-experiencing-missing-tweets

Mar 16

Delays on following and dmsgs

 


http://status.twitter.com/post/86986973/some-delays-on-followings-direct-messages

Mar 12

missing updates & actions

 


http://status.twitter.com/post/86067236/some-missing-updates-actions

Mar 11

inconsistencies

data inconsistencies (msg, counts, other data)


http://status.twitter.com/post/85644965/update-on-inconsistencies

Mar 9

inbound sms delay

 


http://status.twitter.com/post/84921942/inbound-sms-delay

 

Feb 6

inconsistent follower/following counts

 


http://status.twitter.com/post/76219963/delays-in-posting-text-messages

Feb 6

txt msg posting delays

problem w/ provider


http://status.twitter.com/post/76219963/delays-in-posting-text-messages

Feb 2

Missing updates

 


http://status.twitter.com/post/75182201/missing-updates-were-bringing-them-back

Feb 2

missing self

new users missing from search


http://status.twitter.com/post/75102341/unable-to-find-yourself

 

Jan 30

follower/following counts wrong

due to replication lag


http://status.twitter.com/post/74360199/were-looking-into-inconsistencies-with

Jan 19

slow search

search fell behind realtime due to maintenance


http://status.twitter.com/post/71697063/search-behind-realtime

Jan 8

Delivery delays

tweets slow to appear in the timeline


http://status.twitter.com/post/69184677/catching-back-up

Jan 6

Delivery delays

tweets slow to appear in the timeline


http://status.twitter.com/post/68751921/delivery-delays

 

That said, a clear picture of the Page Load Time experience felt by the Twitter product’s user base quickly emerged.

Approximately 14% of all days in the year experienced delays and disruptions, directly altering the Page Load Time of the product. And, another ~10% of the year’s days experience pages loading with missing information, resulting in a total number of days experiencing disruption at around 24% of the year or 86 days! (note: there may be some day overlap that is not taken into account in these numbers)

02_twitter-bad-days

Note: Data for December is complete (only goes through December 21, 2009)

Should Do & A Clear Flight Path

When using Twitter, tweets, responses, searches can and sometimes do occur quickly and without incident. However, with such consistency of problematic service, fail whales, site latency, etc. Twitter earns no more than a value of 0 for Page Load Time; but with a clear path to improvement…

  • first, focus on the reliability of the Page Load, drastically reducing downtime,
  • then, focus on the missing data and other inconveniences, some of which are touched upon in my table of notes above.

Next…

Over the next several weeks I will be providing real-world examples of Page Load Time values…

Poor Load Time (value 0) [Twitter, Twine]
Delayed Load Time (value 0.5) [Conversation Pieces]
Prompt Load Time (value 1) [Facebook]

Subscribe now (click here) to make sure you don’t miss any part of this series exploring the Usability and Page Load Time of Quick-UX, the quick and easy method of generating quantifiable and comparable metrics representing the understanding of the overall User Experience of a product, as well as other insightful posts from The Product Guy.

Enjoy, Discuss & Tweet!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Google Add to Mixx!

The Product Guy’s Weekend Reading (April 24, 2009)

Every week I read tens of thousands of blog posts. Here, for your weekend enjoyment, are some highlights from my recent reading, for you.

01_starting

On Starting Up…


http://www.entrepreneur.com/startingabusiness/startupbasics/article201358.html

Advice on starting a new business in tough economic times.

 
 

On Design & Product Experience…


http://www.poetpainter.com/thoughts/article/the-art-and-science-of-seductive-interactions

Learn about the art of seduction through product user experience.

02_seduce-ux
03_connect

On Modular Innovation…


http://www.stoweboyd.com/message/2009/04/microstructure.html

A look at how the many tiny blocks that make up such Modular Innovations as Twitter are spurring further Modular Innovation.

 

Have a great weekend!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Magnolia Google Add to Mixx!

Facebook says Focus

facebook logo (Part 1 of 2) The new Facebook is coming. Facebook, the product that brought a whole new meaning to information and application overload, is about to release their new Facebook vision, one with focus.

After adjusting to (and it took a few days of frequent interaction) the re-worked and refined Facebook experience, 2 themes stood out above all others, namely..

  • Encouraging greater communications and sharing
  • Discouraging “excessive” application installation and usage

In Part 1 let’s…

Focus on Communicating

The new user experience is evident from the very moment of logging-in. Perhaps the very first thing that all users will now notice, and are driven to notice, is the new action area on their homepage.

1-home-primary-actions

Whenever a user returns to Facebook, they are brought to the homepage and, immediately presented with quick actions for communicating and sharing. This is a concept that is altogether absent from today’s currently available experience.

2-absent

Clicking on any of the options within this new action region jumps the user directly to their Profile page, with the prompt for the desired content automatically displayed. This is direct, quick & easy.

3-update-status

The Profile page, like the Home page, has also been revamped to encourage and facilitate communications and sharing of user generated content (UGC) – from status to links and photos, and more.

4-comment-too

The user’s attention is focused on the main component of the page, the Wall; which has been improved with rapidly applicable filters (all posts, my posts, other people’s posts) and easy to use settings.

5-wall-filter

6-settings

Facebook‘s next generation presents a revived and clear focus on communications. Much of this new functionality reverberates considerably with the capabilities inherent to newer services, most apparently, Twitter and Friendfeed. The new communications emphases will assuredly drive more people to the micro-exchanges of status and the like.

Interestingly, if this implementation had been Facebook‘s original implementation, maybe there would be no Twitter or Friendfeed. But this is not the case. This newer implementation, not yet the default for Facebook, did not come first. Twitter and Facebook (and other similar online products) fulfilled the need, filling the micro-communication and micro-sharing void that was present.

While the improvement in Facebook represents a very positive step forward, a very nice addition, Facebook is now following some well established alternatives. For these improved communications to maximize along the path of user experience, they will need to employ Modular Innovation. It will be a mistake if they choose to take the path of challenging the Twitters and Friendfeeds, instead of embracing them. Everyone will benefit from improved integration and 3rd-party data exchange capabilities. For example, allowing users and products 2-way integration and interaction, permitting the use of either Twitter (or Friendfeed) or Facebook to not just be able to import data, but also export and share data between the products, would provide a seamless online experience for the user, allowing the user to check for updates and post updates from either platform — benefiting both the fans and companies of Facebook and Twitter (and other products) while simultaneously strengthening the product-product and product-user relationships.

In Focus

More and more people, every day, are trying out the new Facebook, especially the new communications experience. Will the new product, the new Facebook, succeed in increasing user communication and interaction or will the result prove to be a blurry jumble of ideas?

Check back next week as we look further into the new Facebook, in the second part of this 2 part series about the new Facebook experience, and explore what these changes mean for the users, as well as everyone else, who use, experience and benefit from Facebook.

Enjoy!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Magnolia Google Add to Mixx!

The Product Guy’s Weekend Reading (July 4, 2008)

reading_w_TPG_thumb5_thumb2_thumb2_t[2] Every week I read tens of thousands of blog posts. Here, for your weekend enjoyment, are some highlights from my recent reading, for you.

On Starting Up…

http://gigaom.com/2008/06/15/venture-capital-angels-or-bootstrap/

A look into the financing decision between venture capital, angels and bootstrapping.

On Design & Product Experience…

http://deeplinking.net/paper-web/

A peek into the minds of the experience designers of some of the most popular web sites. See what the precursor, paper sketches of mySociety, twitter, and more.

On Modular Innovation…

http://mashable.com/2008/06/29/less-is-more-unlock-the-web/

An in depth look at the characteristics of Modular Innovation and how they are complementing the solid foundation of the next generation of successful online products.

Have a great weekend!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Magnolia Google Add to Mixx!

The Product Guy’s Weekend Reading (May 30, 2008)

reading_w_TPG_thumb5 Every week I read tens of thousands of blog posts. Here, for your weekend enjoyment, are some highlights from my recent reading, for you.

On Starting Up…

http://www.centernetworks.com/twitter-pownce-loyalty

Article exploring which is better: (a) large user base or (b) solid business.

On Design & Product Experience…

http://bokardo.com/archives/designing-for-the-social-web-signs-of-life/

For a solid User eXperience to exist there must be trust; you must demonstrate credibility. Joshua explores one of those credibility bolstering areas: showing signs of life.

On Modular Innovation…

http://www.feld.com/blog/archives/2008/05/no_api_you_suck.html

A cornerstone of Modular Innovation is Interoperability (e.g. via API’s). Without Interoperability, today’s new product, or start-up, faces increasing challenges to consumer acceptance, adoption, and retention.

Have a great weekend!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Magnolia Google Add to Mixx!

Reveal More

reveal Dynamic, expanding, dropdown… These are all terms that are often associated with interesting and, sometimes, fun interface elements. But, they can also contribute to the obfuscation of the interface and deterioration of the User eXperience.

twhirl, a desktop Twitter client, was recently upgraded. Within twhirl‘s upgrade were some needed, and fully appreciated, improvements to the User eXperience — most notably, along the lines of Usability.

While the interface change was not major, in terms of pixel area within twhirl, many (myself included) have found that this simple change has dramatically enhanced their experience of the product and, in turn, their interactions with Friends and Followers on Twitter. twhirl’s upgrade has also provided us with an opening to the topic of the oft encountered, lesser User eXperiences that hide more and reveal less than most people’s corresponding expectations and desires.

Before talking more about the nice new bits of twhirl, let’s first discuss and understand which information and design decisions can lead to confusion and frustration, and why an interface should be kept simple and reveal more.

Hidden Actions

Hidden actions and hidden information result in hidden choices, slowed decisions, and confusion. The less searching, less thinking, less clicking, the better the user’s product experience will be. There are many commonly found interface elements that work against users’ product experiences, two of which are drop-downs and scrolling lists.

Down and Out

state-drop-down

Drop-downs always require at least 2 clicks to use – one click to open, and another click to make the selection.

The information contained within a drop-down interface element is hidden. Simply to see or reference the available options that the user has, that user first has to open it. The deficiency of this type of interface becomes even more apparent when the drop-down contains actions, as opposed to attributes. Actions typically necessitate greater engagement by the user than attributes – after all, people use an interface to accomplish some task (through action). And each of these actions, via a drop-down, always requires 2 clicks; 2 clicks repeated again and again do not present a simple experience.

The drop-down also suffers from other ailments. In many situations, when a drop-down has been opened, some other part of the interface becomes covered, unnecessarily hiding other choices or even information that may soon, or immediately, be relevant to the current decision process.

Many websites, for example, use drop-downs to allow the user to indicate within which State they reside. The information applied to the drop-down results in a very long list, one that needs to be carefully scanned and scrolled through until the desired answer has been located – a very cumbersome process.

Instead of using the drop-down, the user of the product can be better served with more obvious, more revealing (of information and intention) interface elements. In the previous example of the State selection drop-down, one can provide the user with a basic textfield. Everyone knows how to type the correct State; and for those that make a mistake (e.g. typo), backup the less confusing interface with sound error checking, correction, and prevention.

Needless Scroll

Scrolling lists exhibit many of the same Usability shortcomings familiar to drop-downs. Scrolling lists do not allow for everything to be easily seen at the same time – they require scanning and scrolling.

multi-select

An application of scrolling lists, that I am sure you have used within numerous online products, is multiple item selection. An example of this implementation is one in which the user is prompted to select their favorite five items from the entire list. Not only does this implementation result in shielding all of the available options from view (how do you know what five to pick unless you know everything that is available?), the scrolling list also hides many, or all, of the selected items – concurrently hiding from view possible mistakes made in deselecting earlier selections.

Here too, the User eXperience can be improved through simplification and revealing more. Selecting from a list that reveals all available options simplifies the decision process. Selecting my favorite five items from a list that reveals all available options, not only simplifies the selection process, but also helps prevent me from making mistakes (e.g. accidentally deselecting the wrong item).

Wrong Dynamics

Of course there other dynamic elements, regions of the page that appear and disappear, menus and windows that conceal portions of a product’s interface, et cetera, that also exhibit many of the similar downsides as drop-downs and scrolling lists. The important lesson that can be applied to many forms of interface element is that, through some small changes in a product’s interface, through revealing more, the product experience can easily be improved.

A Brisk twhirl

Among the many pluses that twhirl has always had in its favor is its Usability, within a simple and pleasant User eXperience. twhirl has always done well in capturing the key features, and primary goals and desires, of Twitter and the Twitter user base. Prior to the latest product upgrade (version 0.7) the default interface looked like this…

twhirl-07-petrol

The primary actions of the average Twitterer (Twitter user) are viewing ones timeline and tweeting. Tasks such as filtering, customizing, refreshing, and deleting tweets are given lower priority, but remain a simple button click away. However, in version 0.7 of twhirl, actions of a bit more importance, and more frequently used, are nowhere to be seen – they are hidden in a drop-down.

twhirl-0.1.008-panechange

The hidden actions allow the user to check for replies or direct messages (and more). These are very common actions performed by the average Twitterer – on Twitter it is difficult to be certain that you did not miss a tweet, therefore checking replies and direct messages become a fairly common occurrence. twhirl 0.7, presents a drop-down, containing actions – actions that can be useful to the product’s users.

With just a tiny change, in twhirl 0.8, by revealing more and elevating valued actions, users received a simpler, more enjoyable, easier to understand and act upon interface, that encourages greater interaction with the product and, in turn, greater engagement with fellow Twitterers.

08twhirl

 

Balance is Key

The key to improving a product’s User eXperience is not always obvious and is most often done iteratively through ongoing tweaking and upgrading.

With revealing more and improving the overall User eXperience come challenges to find …

  • balance between decision overload and finding what you want to be able to do,
  • balance between presenting relevant information and hiding important information,
  • balance between temporal elements and information overload, and
  • balance between the abstract and the obvious.

The goals of any User eXperience shift over time. The primary activities and information may change, but the path to many improvements in User eXperience remains constant – to reveal more. The ‘more’ may change, and pose new and exciting challenges to the overall product experience, but there will always be room for improvement, even in an excellent product, as twhirl has further demonstrated.

For more reading…

 

Enjoy!

Jeremy Horn
The Product Guy

Add to Social Bookmarks: Stumbleupon Del.ico.us Furl Reddit Magnolia Google Add to Mixx!