<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (alexhansford)</title>
    <link>https://pinboard.in/u:alexhansford/public/</link>
    <description>recent bookmarks from alexhansford (from google)</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="http://www.bbc.co.uk/blogs/bbcinternet/2011/12/strictly_come_dancing_final_3d_1.html"/>
	<rdf:li rdf:resource="http://adactio.com/journal/5047/"/>
	<rdf:li rdf:resource="http://adactio.com/journal/4997/"/>
	<rdf:li rdf:resource="http://adactio.com/journal/4982/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/11/01/improving-the-customer-experience-meet-the-problem-users/"/>
	<rdf:li rdf:resource="http://www.uie.com/brainsparks/2011/10/31/the-new-amex-biz-travel-site-thinks-im-an-idiot/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/design/difference-between-timeless-classic-logo-design/"/>
	<rdf:li rdf:resource="http://www.lifehack.org/articles/lifehack/best-decision-for-your-business.html"/>
	<rdf:li rdf:resource="http://blog.flickr.net/en/2011/10/21/cars-in-cuba/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/10/07/wordpress-essentials-the-definitive-guide-to-wordpress-hooks/"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/design/sublime-text-code-editor-review/"/>
	<rdf:li rdf:resource="http://www.uie.com/brainsparks/2011/10/05/luke-wroblewski-designing-for-mobile/"/>
	<rdf:li rdf:resource="http://www.uie.com/brainsparks/2011/10/05/uietips-why-we-sketch-2/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/10/04/how-to-create-custom-post-meta-boxes-in-wordpress/"/>
	<rdf:li rdf:resource="http://www.bbc.co.uk/blogs/bbcinternet/2011/09/radio1_homepage_software_technical.html"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/inspiration/40-examples-infrared-photography/"/>
	<rdf:li rdf:resource="http://adactio.com/journal/4866/"/>
	<rdf:li rdf:resource="http://kinkyhalo.com/307"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/LifeHack/~3/nZUa8q8E5S8/grain-free-15-tips-for-eating-ancestrally.html"/>
	<rdf:li rdf:resource="http://www.lifehack.org/articles/lifestyle/grain-free-15-tips-for-eating-ancestrally.html"/>
	<rdf:li rdf:resource="http://www.uie.com/brainsparks/2011/08/10/materials-from-the-web-app-masters-2011-tour-are-now-available/"/>
	<rdf:li rdf:resource="http://www.heatherssecretplace.com/modules/news/"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/design/ancient-design-practices-to-avoid-2/"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/OfficialGmailBlog/~3/JUiubnrJSuY/gmail-snooze-with-apps-script.html"/>
	<rdf:li rdf:resource="http://xkcd.com/931/"/>
	<rdf:li rdf:resource="http://boagworld.com/reviews/how-one-wordpress-plugin-can-replace-many/"/>
	<rdf:li rdf:resource="http://xkcd.com/927/"/>
	<rdf:li rdf:resource="http://freelanceswitch.com/product-reviews/efficient-tweeting/"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/37signals/beMH/~3/f6Y0tiZwLCw/2945-marketing-to-your-own-team"/>
	<rdf:li rdf:resource="http://boagworld.com/season/2/episode/s2e1/"/>
	<rdf:li rdf:resource="http://www.uie.com/brainsparks/2011/06/10/agencies-dont-like-me-very-much/"/>
	<rdf:li rdf:resource="http://productblogarchive.37signals.com/products/2011/06/launching-soon-the-basecamp-calendar.html"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/06/02/how-to-build-a-media-site-on-wordpress-part-1/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/05/31/desktop-wallpaper-calendar-june-2011/"/>
	<rdf:li rdf:resource="http://www.bbc.co.uk/blogs/bbcinternet/2011/05/world_service_user_experience.html"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/05/25/smashing-cartoons-may-2011/"/>
	<rdf:li rdf:resource="http://xkcd.com/903/"/>
	<rdf:li rdf:resource="http://pmstudent.com/program-manager-defined/"/>
	<rdf:li rdf:resource="http://www.friend.ly/"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/blogspot/MKuf/~3/cI2zYVEhuu8/keynote-and-session-videos-from-google.html"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/05/11/the-future-of-css-experimental-css-properties/"/>
	<rdf:li rdf:resource="http://www.facebook.com/note.php?note_id=10150169682072742"/>
	<rdf:li rdf:resource="http://www.geekculture.com/joyoftech/joyarchives/1537.html"/>
	<rdf:li rdf:resource="http://freelanceswitch.com/money/nine-factors-to-consider-when-determining-your-price/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/05/06/how-to-get-sign-off-for-your-designs/"/>
	<rdf:li rdf:resource="http://37signals.com/svn/posts/2882-the-incredible-delivery-system-of-indias-dabbawallahs"/>
	<rdf:li rdf:resource="http://developer.yahoo.com/blogs/ydn/posts/2011/05/instagram-in-your-browser-css-stress-test-firefox-and-chrome-extensions-and-a-very-special-dictionary/"/>
	<rdf:li rdf:resource="http://googleblog.blogspot.com/2011/05/world-of-curiosity-peek-at-searches.html"/>
	<rdf:li rdf:resource="http://37signals.com/svn/posts/2898-whats-more-delegating-isnt"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/05/04/useful-photoshop-tools-and-techniques-for-your-workflow/"/>
	<rdf:li rdf:resource="http://www.yahnyinlondon.com/post/5081377466"/>
	<rdf:li rdf:resource="http://www.buzzsprout.com/237/24667-episode-23-who-builds-web-sites.mp3"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/04/18/powerful-new-css-techniques-and-tools/"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/design/secrets-race-freelancing/"/>
	<rdf:li rdf:resource="http://adactio.com/journal/4497/"/>
	<rdf:li rdf:resource="http://freelanceswitch.com/freelance-freedom/freelance-freedom-202-freelance-prerogative/"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/onstartups/~3/Et81Rw7125I/The-5-Minute-Guide-To-Cheap-Startup-Advertising.aspx"/>
	<rdf:li rdf:resource="http://xkcd.com/869/"/>
	<rdf:li rdf:resource="http://freelanceswitch.com/humour/de-motivational-posters-for-freelancers/"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/"/>
	<rdf:li rdf:resource="http://37signals.com/svn/posts/2799-how-an-illinois-rest-stop-inspired-a-web-page"/>
	<rdf:li rdf:resource="http://www.smashingmagazine.com/2011/02/24/designing-appropriately-for-a-startups-audience/"/>
	<rdf:li rdf:resource="http://freelanceswitch.com/productivity/30-inherently-useful-tools-for-freelancers/"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/FreelanceSwitch/~3/PP-8bYpgBNw/"/>
	<rdf:li rdf:resource="http://www.geekculture.com/joyoftech/joyarchives/1507.html"/>
	<rdf:li rdf:resource="http://www.bbc.co.uk/blogs/bbcinternet/2011/02/frame_accurate_video_in_html5.html"/>
	<rdf:li rdf:resource="http://feedproxy.google.com/~r/blogspot/amDG/~3/XkCUf33Bp3Q/beyond-times-and-arial-new-web-safe.html"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/css/convert-dezign-folio-from-psd-to-html/"/>
	<rdf:li rdf:resource="http://www.1stwebdesigner.com/design/tools-browser-compatibility-check/"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="http://www.bbc.co.uk/blogs/bbcinternet/2011/12/strictly_come_dancing_final_3d_1.html">
    <title>Strictly Come Dancing Final 3D Trial (#2)</title>
    <dc:date>2011-12-19T16:30:00+00:00</dc:date>
    <link>http://www.bbc.co.uk/blogs/bbcinternet/2011/12/strictly_come_dancing_final_3d_1.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[It all happened and the tapes are currently being processed
for iPlayer and should be available by late this afternoon. BBC R&D has just finishedi encoding the programme before it goes over to the BBC iPlayer team.


How to find it

Here are the details of how to find the Strictly Come Dancing Final in 3D on iPlayer:
Freesat

By Search:


Freesat Higher Quality Option 
Select
"Search"
Type in
"Strictly..." (the options should start to appear immediately)
Scroll down
to "Strictly Come Dancing 3D..."
Select the "higher quality" option

On Freesat you must select the "Higher Quality" option. The standard quality
will produce an error message.


Freeview (TVs and Set top Boxes), Virgin TiVo and other
devices

By Search:
   
Select
"Search"
Type in
"Strictly..." (the options should start to appear immediately)
Scroll down
to "Strictly Come Dancing 3D..."

These devices select the correct option automatically.

Virgin V+ 

Navigation is through the iPlayer
menu as usual.


Please let us know...

Finally this is the information we are trying to get:


Did the programme play or did it buffer?
If it buffered, was it intermittent (random)
or every few seconds?
Could you put your TV into top/bottom mode?
Did the 3D menus work or where they "greyed"
out?
Was the sound in sync?
If you watched the live programme, how did
the iPlayer 3D compare to the live 3D?


With all feedback, can you let me have the make and model
number of the TV or set top box you have and if it's WiFi or cable connected to
the router.  Also if you can,  what the average speed of your connection was as
you watched.


Many thanks and Merry Christmas


Andy


Andy Quested is Head of Technology, BBC HD & 3D, BBC Technology

PS - Don't forget StreetDance 3D is on the BBC HD channel at 18:25 on January 1st 2012.

]]></description>
<dc:subject>3DTV</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:9c3206a4ebdc/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:3DTV"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://adactio.com/journal/5047/">
    <title>The forgotten house</title>
    <dc:date>2011-12-04T12:34:20+00:00</dc:date>
    <link>http://adactio.com/journal/5047/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[The Never Forgotten House is a beautifully-written piece with a central premise that is utterly, utterly flawed. Once again the truism that “the internet never forgets” is presented as though it needed no verification.



  Someday soon, the internet will fulfill its promise as a time machine. It will provide images for every space and moment so we can fact check our memories. Flickr and Facebook albums will only accumulate.



Citation needed. Badly.


Read the article. Enjoy it. But question its unquestioningness. It made me sad for exactly the opposite reasons that the author intended.



  Every essential moment of a child’s life is documented if he was born in the West. With digital album after album for every birthday, every Christmas, he will never struggle to remember what his childhood home looked like.



I wish that were true.




Tagged with
memory
digital
preservation

]]></description>
<dc:subject>memory digital preservation</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:1504bbd78174/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:memory"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:digital"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:preservation"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://adactio.com/journal/4997/">
    <title>Responsible responsive images</title>
    <dc:date>2011-11-09T18:58:21+00:00</dc:date>
    <link>http://adactio.com/journal/4997/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[I’m in Belfast right now for this year’s Build conference, so I am. I spent yesterday leading a workshop on responsive enhancement—the marriage of responsive design with progressive enhancement; a content-first approach to web design.


I spent a chunk of time in the afternoon going over the thorny challenges of responsive images. Jason has been doing a great job of rounding up all the options available to you when it comes to implementing responsive images:



Responsive IMGs, Part 1,
Responsive IMGs, Part 2—an in-depth look at techniques,
Responsive IMGs, Part 3—the future of the img element.


Personally, I have two golden rules in mind when it comes to choosing a responsive image technique for a particular project:



The small image should be default.
Don’t load images twice (in other words, don’t load the small images and the larger images).


That first guideline simply stems from the mobile-first approach: instead of thinking of the desktop experience as the default, I’m assuming that people are using small screen, narrow bandwidth devices until proven otherwise.


Assuming a small-screen device by default, the problem is now how to swap out the small images for larger images on wider viewports …without downloading both images.


I like Mark’s simplified version of Scott’s original responsive image technique and I also like Andy’s contextual responsive images technique. They all share a common starting point: setting a cookie with JavaScript before any images have started loading. Then the cookie can be read on the server side to send the appropriate image (and remember, because the default is to assume a smaller screen, if JavaScript isn’t available the browser is given the safer fallback of small images).


Yoav Weiss has been doing some research into preloaders, cookies and race conditions in browsers and found out that in some situations, it’s possible that images will begin to download before the JavaScript in the head of the document has a chance to set the cookie. This means that in some cases, on first visiting a page, desktop browsers like IE9 might begin get the small images instead of the larger images, thereby violating the second rule (though, again, mobile browsers will always get the smaller images, never the larger images).


Yoav concludes:



  Different browsers act differently with regard to which resources they download before/after the head scripts are done loading and running. Furthermore, that behavior is not defined in any spec, and may change with every new release. We cannot and should not count on it.



The solution seems clear: we need to standardise on browser download behaviour …which is exactly what the HTML standard is doing (along with standardising error handling).


That’s why I was surprised by Jason’s conclusion that device detection is the future-friendly img option.


Don’t get me wrong: using a service like Sencha.io SRC (formerly TinySRC)—which relies on user-agent sniffing and a device library lookup—is a perfectly reasonable solution for responsive images …for now. But I wouldn’t call it future friendly; quite the opposite. If anything, it might be the most present-friendly technique.


One issue with relying on user-agent sniffing is the danger of false positives: a tablet may get incorrectly identified as a mobile phone, a mobile browser may get incorrectly identified as a desktop browser and so on. But those are edge cases and they’re actually few and far between …for now.


The bigger issue with relying on user-agent sniffing is that you are then entering into an arms race. You can’t just plug in a device library and forget about it. The library must be constantly maintained and kept up to date. Given the almost-exponential expansion of the device and browser landscape, that’s going to get harder and harder.



  Disruption will only accelerate. The quantity and diversity of connected devices—many of which we haven’t imagined yet—will explode, as will the quantity and diversity of the people around the world who use them. Our existing standards, workflows, and infrastructure won’t hold up. Today’s onslaught of devices is already pushing them to the breaking point. They can’t withstand what’s ahead.



So while I consider user-agent sniffing to be an acceptable short-term solution, I don’t think it can scale to the future onslaught—not to mention the tricky issue of the licensing landscape around device libraries.


There’s another reason why I tend to steer clear of device libraries like WURFL and Device Atlas. When you consider the way that I’m approaching responsive images, those libraries are over-engineered. They contain a massive list of mobile user-agent strings that I’ll never need. Remember, I’m taking a mobile-first approach and assuming a mobile browser by default. So if I’m going to overturn that assumption, all I need is a list of desktop user-agent strings. That’s a much less ambitious undertaking. Such a library wouldn’t need to kept updated quite as often as a mobile device listing.


Anybody fancy putting it together?




Tagged with
responsive
design
mobile
images
futurefriendly
ffly

]]></description>
<dc:subject>responsive design mobile images futurefriendly ffly</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:73ddeadd416f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:responsive"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:mobile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:images"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:futurefriendly"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:ffly"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://adactio.com/journal/4982/">
    <title>Adactio: Journal—Timeless</title>
    <dc:date>2011-11-02T18:11:31+00:00</dc:date>
    <link>http://adactio.com/journal/4982/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:5e03617d408e/</dc:identifier>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/11/01/improving-the-customer-experience-meet-the-problem-users/">
    <title>Idiots, Drama Queens and Scammers: Improving Customer Service with UX</title>
    <dc:date>2011-11-01T18:45:29+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/11/01/improving-the-customer-experience-meet-the-problem-users/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



        
        
          
        
         
        
          
        
         
        
          
        
      



User experience design isn’t just about building wireframes and Photoshop mock-ups. It extends to areas that you wouldn’t necessarily think are part of the discipline.

For example, your customer service department can have a huge impact on your website’s overall user experience. Similarly, the design of your user experience could have an awfully big effect on your customer service department. Of course, not all of your users will interact with the customer service department, but for those who do, their experience can improve or destroy the customer relationship.

Improving Customer Behavior
Consider the difference in customer perception between Zappos and Comcast. Customers routinely rave about one, while the other was attacked with a hammer. Clearly, there’s a difference in the way they deal with their users.

An excellent customer experience is a core value for Zappos

One of the biggest differences between the two is that Zappos appears to go out of its way to deliver great customer service long before a user ever has to deal with a representative. The differences aren’t just in the way they treat unhappy customers. Zappos makes a concerted effort to prevent customers from ever being unhappy in the first place. And that’s a good policy, because unhappy customers are expensive.

I spend a lot of time talking to customers, customer support reps and community managers. I’ve learned that there are three types of users who take up an inordinate amount of time and energy for customer service departments and cost far more money than they should. The great thing is that the behavior of many of these users can be improved or corrected with the right set of features and a proactive interaction design.

Let’s look at some of the folks who are costing you money and time. I’ll call them idiots, drama queens and scammers.

The Idiots
Customer service representatives spend a lot of time explaining obvious things to users.

Recently, I spoke with a community manager for a web-based marketplace where users can sell things to other users. The community manager was annoyed because he routinely had to explain to the sellers, “If you ship something to an overseas army base, it will take longer than it does to ship within the country.” He couldn’t believe that people didn’t know this. He thought they were idiots.

(Image: JD Hancock)

But are these sellers really idiots? Of course not! They might be geniuses who just don’t ship things on a regular basis, so they don’t know that an APO address indicates an army base that might be overseas. As far as the seller is concerned, they’re shipping to a regular domestic address and now have to wait almost a month to get paid.

In fact, a huge proportion of the time, the “stupid questions” that customer service representatives get over and over aren’t stupid at all. They’re opportunities to improve the user experience design.

If you’re getting the same question, it probably means you’ve made an incorrect assumption about information that a typical user is likely to have. In our example, the company was mistakenly assuming that everyone knows what an APO address is and that delivering a product to one could take up to a month.

How to Turn Idiots Into Geniuses
Spend some time with your customer service people, and find out what questions are being asked repeatedly. Figure out a way to answer those questions within the interface so that someone doesn’t get to the point of having to contact support.

In our example, the company could add a small note to all APO addresses, pointing out to sellers before they ship that the address is for an army base and warning that delivery could be significantly delayed. It probably won’t stop every inquiry they get about this problem, but it should help just by letting people know what to expect.

The Drama Queens
Too often, interactions with certain customers blow up far more quickly than service reps expect. As soon as their special requests are denied, some users will rant and rave and threaten legal action, while others calmly accept the fact that rules apply to everyone equally.

(Image: F. C. Photography)

If you talk to customer service reps or community managers, they could probably name a dozen drama queens off the top of their heads. And they won’t look happy doing it either. You’ll see eye rolling and head shaking.

One client complained that every time they released a new feature or a significant change, their power users would blow up and start screaming and yelling about how the company was trying to ruin their lives. It got to the point that the product manager was terrified of releasing anything new for fear of angering customers.

The saddest part of all of this is that the people who cared the most about the product were the ones who were complaining the loudest when things didn’t go their way.

How to Turn Drama Queens Into Advocates
You might think that you couldn’t do much as a user experience designer to calm drama queens, but you’d be wrong.

One of the main reasons why people escalate to that point is that they feel they’re being ignored. In fact, one of the most common reasons that customers leave is that they believe the company doesn’t care about them. Your job is to make them feel that their opinions are important and that they’re being heard.

One way to do this is to provide a good venue for them to express their opinions. Unmoderated or lightly moderated forums where they will talk to other people who are also unhappy are not good venues. One-on-one conversations with staff are the best, but talking to every unhappy customer is obviously not always possible.

A client of mine had a great way to deal with this problem. The company needed to recruit people for user research. Meanwhile, a number of people were writing in with complaints. So, the company frequently asked those people to participate in user research sessions. Two birds!

You’d think that the users’ responses would be skewed because they were already unhappy, but this could be easily controlled in the sessions. The complainers were much easier to book as research participants because they had initiated the contact, and they always ended the sessions much happier for having been asked their opinions.

Another important way to minimize drama is to involve important customers early on in design changes. Sure, power users often push back when you make a major design change, but that push is significantly softer when the change is an obvious improvement and people know what to expect and feel that their opinions have been taken into account.

You can keep the community on your side by getting their feedback during the design process and keeping them in the loop on the progress of changes. Allowing them to opt into changes and to give early feedback can really improve your relationship.

Even more importantly, involving your most important users early on will significantly improve the design of the feature, since you’ll be able to anticipate any complaints and edge cases.

The Scammers
Scammers are both the hardest and the easiest group for customer service reps to deal with.

They’re tough, because determining whether someone is a scammer or just an idiot or drama queen is not always easy. They’re easy, because once you know for sure that someone is a scammer, the correct thing to do is ban them immediately and never let them come back.

The biggest problem is that misidentifying legitimate users as scammers can have an incredibly negative impact on your business. No one likes being accused of something they didn’t do.

Also, in a social environment, the behavior of scammers can have a negative effect on other users. Think of fraudulent buyers and sellers on eBay or the highly publicized assaults by people who advertise on Craigslist.

How to Turn Scammers Into Good Citizens
Sorry, you can’t! What you can do is quickly identify the bad actors and get them off your website as quickly as possible before they negatively affect your good customers.

Enlisting the help of the community in policing can make this process much faster and more effective. Give users tools, such as flagging and comments, to report and protect themselves from scammers. Enlist community moderators to interact regularly with other members and alert you early on when someone seems to be doing something sketchy.

Also, give customer service reps tools to track the behavior of individual users so that they can resolve disputes quickly and appropriately, without a lot of “He said/She said.”

Other Problem Customers
Obviously, these three aren’t the only types of users that your customer service people will deal with. There will be the normal folks who have a genuine problem with your service or who find bugs. There will be people who want to cancel a subscription or ask a question about a policy.

But idiots, drama queens and scammers are the ones who will take up a disproportionate amount of your time and energy. They are the ones who can sap the spirit from your customer service reps and make them less able to deal with other problems.

Luckily, they also have the kinds of problems that you can address in your user interface. By providing the right information at the right time and enabling customers to report bad behavior, you can dramatically lower the amount of time you spend dealing with problem users.

And that means you’ll have a lot more time to deliver fabulous service to your best customers!

(al)(fi)


© Laura Klein for Smashing Magazine, 2011.
]]></description>
<dc:subject>Developer's_Toolbox</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d4c2c3538def/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Developer's_Toolbox"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.uie.com/brainsparks/2011/10/31/the-new-amex-biz-travel-site-thinks-im-an-idiot/">
    <title>The New Amex Biz Travel Site Thinks I’m An Idiot</title>
    <dc:date>2011-10-31T21:33:20+00:00</dc:date>
    <link>http://www.uie.com/brainsparks/2011/10/31/the-new-amex-biz-travel-site-thinks-im-an-idiot/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[American Express is rolling out a new travel service for its business customers. As is customary for today’s web services, there’s are terms and conditions that the new user needs to agree to when they sign up.

Now, these are often implemented with a checkbox that says something like “I have read and agree to the terms and conditions.” Most of us know that hardly anybody reads and everybody just checks off the box. (Once, I watched my dad, a lawyer, check the box without reading. “It’s probably unenforceable,” he told me.)

But on this new Amex site, there’s a different implementation of this control. Sure, there’s a checkbox, but it’s grayed out. The only way to enable it for checking is to scroll to the bottom of the agreement.


The Amex Biz Travel site greys out the checkbox until the user scrolls to the bottom.

Now, as is also standard, the agreement is presented in a tiny little scrolling text box that shows about 200 words at a time. And, as is also standard, the agreement is a whopping 7,243 words (13 pages in a standard document) long.

Therefore, scrolling through this box takes a fair amount of effort. It’s unlikely that scrolling will encourage anyone to read the document. It’s just an extra hoop to jump through to continue the farce of pretending that the user has “read” whatever it is their agreeing to.

Apparently, the lawyers at Amex think that by having me scroll to the bottom, they can claim that I had every opportunity to read and agree to the terms. Therefore, if there’s something down the road I want to sue them about, I gave up that right with my scrolling action. (It’s unlikely any sensible judge will buy this argument, but it’s just as unlikely that any suit against them will get in front of a judge.)

Of course, the best way to do this would be to be honest with your users and treat them with respect. Amex could write the terms in simple language and give users a chance to really understand what they are agreeing to. 

The problem with a design solution like the “scroll to agree” implementation is that it won’t be good enough. What happens when some other lawyer at Amex (or whereever) discovers that users don’t read it when they scroll to the bottom and therefore don’t understand what they are agreeing to? They’ll put in some other ridiculous control, where you’ll have to enter a secret code or recite poetry or something.

At some point, we, as designers, have to stand up and say, “This isn’t really doing what you think it’s doing. It’s just making our relationship with our users worse.” When do we do that? 

I’d like to start now.
]]></description>
<dc:subject>Dark_Patterns Design_Patterns User_Experience</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:77b68159d0f3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Dark_Patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:User_Experience"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/">
    <title>Useful Coding Tools and JavaScript Libraries For Web Developers</title>
    <dc:date>2011-10-28T15:30:03+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



        
        
          
        
         
        
          
        
         
        
          
        
      



Everyone who is a regular Smashing Magazine reader will know that we have a traditional habit of regularly researching the latest resources, tools and services out there on the Web, as productivity is a crucial asset of professional Web designers and developers. We could, and should, all integrate workflow optimization into our working practices.

Perhaps we should warn you upfront for the long compilation, but what can we say — there are so many excellent tools out there which deserve attention of the community, yet unfortunately remain obscure way too often. We love all the designers and developers out there for releasing and producing useful, valuable resources for all of us to use! We, for one, surely sincerely appreciate it in the name of the Web design community. Whether you like it or not, here are some of the most useful coding and workflow tools released recently.

Feel free to comment to this post and let us know how exactly you use these tools in your workflow and also share other tools you’ve found with others who may also find them useful and still haven’t run across them. Please do avoid link dropping and share your insights and your experience instead.

Useful Coding and Workflow Tools
Stripe: Easy Credit-Card Processing For Online StoresA website owner has many options for accepting credit card payments. Most of those options have a verification process that is quite slow; some have APIs and interfaces that are more or less robust than others; and some solutions are much easier to use than others. With Stripe, you can forget the tedious experience of the PayPal API and other mysterious programming environments. Unfortunately, Stripe is currently available only in the US.



The Web Developer’s WonderlandWeb development comes with truly enjoyable, creative tasks and some mundane, boring ones. Probably the most frustrating task is having to reload the browser page during development or debugging every time you make a change to the page. Livereload is a desktop app that monitors changes in your file system. As soon as you save a file, the file is preprocessed as needed, and the browser is refreshed. Also, every time you change a CSS file or image, the browser is updated instantly without you having to reload the page. The tool supports CoffeeScript, SASS/SCSS, LESS, Stylus, HAML and Jade, and it ships with all of them included. Currently available only for Mac.



Ender: The End Of Monolithic JavaScript LibrariesEnder allows you to search, install, manage and compile front-end JavaScript packages and their dependencies. Essentially, it’s a command-line tool that allows you to combine and mix all of the popular and small JavaScript libraries out there to create your own personal development library. If one library you use goes bad or is abandoned, Ender will help you quickly replace it with another. And if you need a particular version of a package, the tool can help you out as well. The release page contains detailed documentation, a user guide and some video tutorials. No more wasted bandwidth!



Open-Source Exchange Rates and Currency ConversionSo, you’d like your customers to be able to purchase your products in various currencies, but how exactly do you build this functionality into your product? Finding a free and reliable API for developers to access the rates data is darn hard. Joss Crowcroft has created an Open Source Exchange Rates API, which provides up-to-date, flexible and portable currency-conversion data that can be used in any application, framework or language (not just JavaScript). It has no access fees, no rate limits, no nasty XML: just free, hourly updated exchange rates in JSON. Even better: Joss has also built money.js, a JavaScript currency conversion library that can be easily integrated in any website. A demo playground and detailed documentation are provided on the website, and the source code is available on GitHub.



Easier Number and Currency FormattingThis simple, tiny JavaScript library will solve your currency and numbers-related formatting hassles, and it even includes optional Excel-style column rendering to line up symbols and decimals. It will make all of your numbers and currencies look much more uniform and professional than they would if left to many content creators.



Tilt Firefox Extension: DOM Inspection In 3-DHow much time do you spend traversing the DOM in Firebug, exploring the relationships between nodes, analyzing the structure of code and trying to manipulate it with nasty (or not so nasty) JavaScript? Well, perhaps you’d like to try a different approach to DOM inspection for a change. Mozilla’s new tool, Tilt Firefox Extension lets you visualize the DOM tree of any Web page in 3-D. Because the DOM is essentially a tree-like representation of a document, the developers of the tool have decided to layer nodes based on the nesting in a tree, creating stacks of elements, each with a corresponding depth, and textured according to the Web page being rendered.



Mou – Markdown editor for web developers, on Mac OS XWhen current available Markdown editors are almost all for general writers, Mou is different: It’s for web developers. Syntax highlighting, live preview, fullscreen mode, auto save, powerful actions, auto pair, incremental search, custom themes, HTML export, enhanced CJK characters support. It’s exactly the app you want.



Creating Buzz With Launch EffectThe one-page theme lets visitors sign up using their email. Upon signing up, the page generates a special URL for them to share with their friends, so that you can track your most active promoters and reward them for spreading the word. What more do you need from a pre-launch page? This is a good tool to bookmark for your next creative breakthrough or start-up idea.



A Better Responsive GridThe Golden Grid System uses the concept of “folding” grid columns into one another, based on the browser’s size. So, a 16-column grid that works great in desktop browsers would fold down to an 8-column grid for tablets, and a 4-column grid for mobile devices. It can handle screen sizes ranging anywhere from 240 pixels wide all the way up to 2560 pixels. The columns themselves are not the only things that are elastic either; while the column’s widths are based on screen size, the gutter widths adjust based on the page’s font size (specified in ems). The Golden Grid System comes with other features that make it perfectly suited to modern responsive Web design.



The Semantic Grid SystemCSS grid frameworks can make your life easier, but they’re not without their faults. Fortunately for us, modern techniques offer a new approach to constructing page layouts. But before getting to the solution, we must first understand the three seemingly insurmountable flaws currently affecting CSS grids.



Bootstrap Kick-Start Development ToolkitBootstrap is a toolkit that includes the base CSS and HTML for typography, tables, grids, navigation, error messages, modal boxes, buttons and forms. It’s built with the LESS framework. It comes with a standard 940-pixel grid (i.e. 960.gs without the side margins), or you can create your own. Bootstrap allows you to create fixed or fluid layouts, and it comes with many elements that can be used as is or restyled to fit your website. Of course, the toolkit is free to use.



Colour BookmarkDrag the Colour Bookmark link to your toolbar to find out the colour palette of the website you’re currently on. Then simply: copy, paste and use the colours you choose.



Leaflet: Open-Source Interactive Maps with JavaScriptThe library offers a variety of map layers, including tiles, markers, pop-ups, image overlays and GeoJSON. It supports panning on both mobile and desktop browsers, double-tap zoom on mobile browsers (plus multi-touch zoom on iOS) and more. On iOS, hardware acceleration is enabled, and Leaflet has a modular structure that lets you reduce the size of the library to make it even faster. The project is open source and available for further development and forking on GitHub.



Weinreweinre is a Web Inspector Remote that is essentially a debugger for web pages, like FireBug (for FireFox) and Web Inspector (for WebKit-based browsers), except it’s designed to work remotely, and in particular, to allow you debug web pages on a mobile device such as a phone.



Aardwolf: Remote JavaScript DebuggerMobile browsers are becoming more powerful day-by-day and you can do almost everything you do on your desktop browser. One of the major concerns for the developers is the lack of developer tools. The reasons are quite obvious — real estate needed to show the debugger, non-developer friendly environment. The solution to this problem is remote debugging. You can use  JSConsole for this purpose but when it comes to JavaScript debugging, Aardwolf is a better choice. Aardwolf is a JavaScript debugger for iPhone / Android / WindowsPhone 7 / BlackBerry OS 6+. (via Varun Kumar)



IE VmsMicrosoft provides virtual machine disk images to facilitate website testing in multiple versions of IE, regardless of the host operating system. But setting these virtual machines up without Microsoft’s VirtualPC can be extremely difficult. The ievms scripts aim to facilitate that process using VirtualBox on Linux or OS X. With a single command, you can have IE7, IE8 and IE9 running in separate virtual machines.



WhatFontThe tool allows you to easily get CSS typography details about the text you are hovering on.



WordPress TextMate BundleThe WordPress TextMate Bundle is a TextMate bundle built with the sole purpose of reducing the amount of time spent digging around the WordPress core to look up the little things that we work with every day.  The plugin features auto-completion of WordPress functions, snippets for common sections of code, and templates for WordPress components. We even snuck in function completion for the Carrington template framework functions. We’re always making improvements as we find more that we want covered by the plugin (merged from WordPress MU with the WordPress 3.0 code base consolidation).



cubic-bezier previewerNo matter how much you see someone changing the parameters, if you don’t picture it in a 2D plane, it’s very hard to understand how bouncing animation with cubic-bezier works. Lea Verou searched for a tool could use to show how bezier curves are formed. She found plenty, but all of them restricted the the coordinates to the 0-1 range. Lea then proceded to create her own cubic_bezier() curves generator.



Patternizer – Stripe Pattern Generator ToolWith Patternizer, it’s easy to make something amazing in just a few minutes. It takes all the work out of creating complicated patterns, letting you focus on creativity and play. Patterns can be saved and shared with anyone, allowing for collaboration and remixing. And you can access them from any device worldwide.



ChainvasA tiny, modular library that can add chaining to any API that isn’t naturally chainable, like the Canvas API, the DOM and more.



Comparison Table GeneratorThis generator allows you to create beautiful HTML/CSS comparison tables on the fly.



DropKick.jsA custom drop-down jQuery plugin which degrades gracefully. If the user has JavaScript disabled, the drop-down will display normally using regular <select> elements. It works on IE7+.



-prefixfree-prefix-free lets you use only unprefixed CSS properties everywhere. It works behind the scenes, adding the current browser’s prefix to any CSS code, only when it’s needed.



{less}An automated folder scanning/parsing tool for LESS. Once you add your project folders to the application, it will automatically start monitoring the less files inside these folders for changes. After you have saved the less file, the application will automatically parse your less file into a regular CSS file. Also, see: SimpLESS, an app for Mac, Linux and PC to compile *.less files into valid CSS.



Recurly.jsThis tool allows you to easily embed a PCI compliant order form within your website. The library performs in-line validation, real-time total calculations, and gracefully handles errors. Your customer stays on your website while their billing information is securely sent to Recurly for approval. Because the cardholder data is sent directly to Recurly, your PCI compliance scope is dramatically reduced.



Responsive Overlay Grid for In-Browser DevelopmentThe Heads-Up Grid is a recently released grid overlay for in-browser development. It works with fixed-width designs but also works great with responsive grids. Just specify the page units, column units, page width, number of columns, column width, gutter width, top margin and row height, and then paste the Heads-Up Grid code into the head element of your website to generate the grid overlay.



Has.jsThe library is similar to Modernizr, but instead of testing for HTML5/CSS3 features, it tests for JavaScript features such as: ES5 array, string, and object featuresNative JSON supportNative console supportActiveXNative XHRSome DOM and event features.

grumble.jsThis library allows you to create tooltips that can be rotated around a given element at any angle. Any distance can be specified. Any CSS style can be applied. There’s auto-magic size adjustment for use with localised text. FX queues for animating multiple grumbles. And it works in IE6+, and all modern browsers.

testling: Automated Cross-Browser JavaScript TestingAn automated cross-browser JavaScript testing platform for your quality assurance.

Instant WordPressA standalone, portable WordPress development environment for Windows that can run from USB.

CSS Stress Testing and ProfilingA bookmarklet for stress testing the CSS on any given webpage. It indexes all the elements and their classes, and then — class by class — it removes one, and times how long it takes to scroll the page. Selectors that save a considerable amount of time when removed indicate problem areas.

Needle: Automated Tests for Your CSSThis tool checks that CSS renders correctly by taking screenshots of portions of a website and comparing them against known good screenshots. It also provides tools for testing calculated CSS values and the position of HTML elements.

Last Click
Cutting-Edge Web Typography ExperimentsThe website is essentially an ongoing collection of experiments and writings on Web typography and the possibilities of cutting-edge standards-based Web design. Christopher is pushing the boundaries of what is both possible and practical in Web standards in a way that is compelling and exciting to the visually minded creative.



Font-BotIt is time for your favorite font to stand its ground. The idea of this project is to build robots out of typeface glyphs, showcase them and hope others put together an opponent. Participating is not hard, the rules are clear: all Robots must be built of type alone (A-Z). You may reflect and rotate the letters. Keep it civil. May the best bot win. Let’s see if your type design has what it takes to defend its corner. Fight!



Lights“Lights” is an interactive music experience which is created with CSS, JavaScript and HTML5. This is why we love the Web.



Stay Tuned!
More posts with useful tools and techniques are coming very soon here, on Smashing Magazine. If you want to be among the first to be informed about the new tools, resources and techniques, please 


follow us on Twitter,
become a fan on Facebook,
subscribe to our bi-monthly email newsletter.

You won’t regret it. Thank you.

Thank you to the Smashing Editorial team, especially Christiane Rosenberger, Iris Ljesnjanin and Luca Degasperi for their help in preparing and editing the post.


© Vitaly Friedman for Smashing Magazine, 2011.
]]></description>
<dc:subject>Coding tools useful</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:f6ee8658e0a7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:useful"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/design/difference-between-timeless-classic-logo-design/">
    <title>The Difference Between Timeless And Classic Logo Design</title>
    <dc:date>2011-10-28T10:00:56+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/design/difference-between-timeless-classic-logo-design/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[When a designer goes about creating a logo, the first thought that should always come up is the hope to create a logo at a high enough level that it could still be used decades from its creation. Despite that being the common hope, there are two different ways in which how a logo can transcend time and use. These two types being known as timeless and classic. Now logo designs that are fortunate enough to be qualified for either of these categories have many similarities, so much so that it is easy to confuse the two. Before going into the two highest level of acclaim a logo design can get, we first need to do a quick run through on the basics.



The 4 Basic Logo Types
No matter how you design your logo, with whatever inspiration you can think of, it is going to be classified as one of these logo types. Having the knowledge of these different types improves the quality of your design by providing more direction into what your best route is for your logo when considering the company or group it represents.

Emblem Type
An emblem type logo is one that incorporates the companies name within the design.

Examples:

UPS


Harley Davidson


Letterform
In this type, the logo is created by using letterform design(a letter’s shape) to create a symbol.

Examples:

Roger Federer


Associated Press


Text Type
A text type logo only utilizes letters and in some instances typographic design is incorporated.

Examples:

FedEx


Visa


Representation Type
In this type an image is used as a pictorial representation of the company. It can also be representing its reputation, perception, or attitude.

Examples:

Shell


Apple


Important Things To Keep In Mind

Always convey your message first.
A proper color scheme can make or break a logo.
Make sure that it is easy to understand.
Your logo should be adaptable, needing no changes for any environment.
Don’t let the creative in you try to make the design overly complicated.

Okay now that we have covered the basic logo design types and went over some of the important things to consider when designing a logo, we are now ready to take a look at what timeless and classic logo designs are and how you can achieve this acclaimed status.

What Is A Timeless Logo
A logo that has reached the status of being timeless means that it is able to maintain the same high level of acclaim long after its creation. However, logos in this category also need minor alterations occasionally to remain relevant as the years go by. These alterations could be anything as long as it makes a change, but the base structure is never altered in any way. For example, lets take a look at the logo of MTV.

Original MTV Logo


As you see above, this is a very well designed text type logo. It utilizes a great color scheme for the loud, brash, unruly, and whatever other youthful rebellious urge all teens and young adults have.

Current MTV Logo



Now take a look at the original logo of MTV, and then take a gander at the current one. The current one has a heavier font weight for the letters involved, the t and v are less playful, but the most noticeable and important change is the removing of the music television from the logo. As mentioned earlier, the most important thing a logo is responsible for is properly conveying the identity it represents. The music television tagline that was once at the bottom of the logo had to be removed, because MTV has become known more so for reality TV than actually playing music. That was the only mishap played by the original logo, assuming a company called Music Television would continue to have a network comprising of mostly music related content.

What Is A Classic Logo
There isn’t that much difference between a classic logo and a timeless logo. The only differentiating factor here is that a classic logo will never come across the need for a change because it complies to one of the top important things to be considered when designing a logo. This being adaptability. The logos that are able to be apart of the classic group have designs that can adapt to any type of environment you can think of, and it still will be able to do well. Let’s take a look at the ABC logo, probably the most iconic classic logo.

ABC Logo



Everything that can be said about this logo, has already been covered for awhile now. This logo is simplicity at its best, and won’t be seeing any changes coming its way.

How To Create A Timeless or Classic Logo
By now your probably wondering what is the best method to go about for achieving a logo design that can be categorized into one of these two categories.  Well its a lot easier than it seems, and here are some tips to help you with that.


Always have the represented organization’s desirably perceived attitude, or message, showcased
Never overlook adaptability. Your logo should look just as good in your original color scheme as it does when stripped down to black and white.
Focus less on the type of industry the logo is being designed for. If your focus your design for a particular industry, and try to approach it with incorporating that vibe into your design, than it won’t be able to go beyond that industry.
Don’t be afraid of trends. In essence, a trend is simply an original style or technique that just became popular. You’re a creative, put your own spin on it.
Embrace your own design style. How do you expect to get the best results when your competing with your natural inner creative?

Conclusion
The difference between a timeless logo and a classic logo is all in the details, the little things if you will. A timeless logo design is one that is great in concept, but may need an alteration done to remain relevant. A classic logo design is fine the way it is, and probably will never see the drawing board again. Logo design is a very complex creative job that requires much to consider throughout the entire process. To achieve either one of these classifications is very possible, all it takes is to focus on the little things.
]]></description>
<dc:subject>Tips Web_Design logo logo_types</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:81c5c7537d92/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:logo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:logo_types"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.lifehack.org/articles/lifehack/best-decision-for-your-business.html">
    <title>The Best Decision You Can Make for Your Business — That Has Nothing to do With Money</title>
    <dc:date>2011-10-26T17:00:10+00:00</dc:date>
    <link>http://www.lifehack.org/articles/lifehack/best-decision-for-your-business.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
Sunset by F.M. on flickr
Imagine two people starting identical companies with the exact same resources, network, and time at their disposal (gender randomly assigned for brevity’s sake):
Person #1 wakes up every day with anxiety, stressed about his mounting to-do list. He immediately buries himself in reactive work — striving to please everyone else but himself by responding to emails, taking meetings and delivering what others ask of him. He gets whipped around by his moods — one minute he’s happy and excited, the next he’s tired, anxious, unmotivated and depressed. His productivity on any given day is completely unpredictable — sometimes he wakes up excited to work, and on other days you couldn’t pry him off the couch with a forklift.Person #2 starts her days with purpose. No matter what her mood is upon waking up, she laces up her running shoes and gets her blood pumping with a 20-minute run. She uses that time outside to reflect and plan her day, and the resulting endorphins and morning shower give her energy to launch into her best work. She works diligently on her most important projects first, while she’s feeling sharp and creative. She takes a break in the afternoon by heading to yoga class, which centers and grounds her. By the time she attacks her inbox in the afternoon she already feels accomplished — the emails no longer assault her plans, they support them. Person #2 ends the day feeling calm, happy, confident and empowered.Both of these people are me.
I quit my job at Google two months ago to pursue my passion as an author, speaker and coach, and during my first month of solopreneurship I was Person #1.
I wasn’t running my business, my business was running me. And as 100% of the company, the opportunity costs of operating at half-mast were extremely high.
I knew I had hit a low when I ordered Panda Express and a King-Size Snickers bar on my way home from the airport after a speaking engagement in June. I felt lethargic, unhappy and mad at myself. Where was my discipline and self-respect when I was wanting it most? So I resolved to make a change.
Within three weeks, I became Person #2 — and it didn’t cost a cent. It didn’t have anything to do with sales, marketing, productivity or inbox management. It had to do with me.
I resolved to put my health first.
I started a three-week cleanse where I completely eliminated caffeine, refined sugar, alcohol, wheat, dairy and red meat from my diet. I committed to going for a 20-minute run first thing in the morning, which is just short enough to be manageable — it’s hard to make the excuse that you don’t have time to run 10 minutes out the front door and 10 minutes back. Finally, I bought an unlimited yoga pass and committed to going a minimum of two times a week; it was so rejuvenating that I ended up going closer to 4-5 times per week.
During the first three days, I had complete monkey-mind — craving coffee, sugar and TV like the addict I was — unable to focus because I was thinking about them every five minutes. But on the fourth day and every day thereafter, I started noticing something incredible.
I felt clear-headed. Creative. Confident. Energized. Productive. HAPPY.
I was getting more done in one week than I had completed in one month. I was no longer experiencing crazy mood swings or unproductive days. I started sleeping like a rock. I was in a great mood, glowing and energetic at conferences and razor sharp during my coaching and speaking engagements. I was on a roll and I stayed there.
I used to scoff at the countless magazines that preach healthy eating and exercise — get over yourself! Until I experienced, firsthand, the insanely powerful impact it had on my business’s bottom line (not to mention my actual bottom, which now fits nicely back into my best jeans).
How to grow your business, a big goal, or improve your life by putting your body first:
Start with four-day wins. This is a concept I learned from Martha Beck, who wrote the book The Four Day Win. That book forever changed how I think about diet and exercise — Beck emphasises tackling one thing at a time, for four days at a time. That’s it! Start with something ridiculously easy and build up confidence and momentum over time.Organize your days around healthy eating and exercise. No matter how much you resist this, thinking “But I don’t have time!” try it. If you try this for one week and don’t see business results, then ignore me. But at least give your body the chance to speak for itself.Track your progress and engage friends. I started this health challenge on my own, but quickly realized it would be more fun with friends, so I created a template that we could all track our progress on (feel free to use it too!). At the end of each week, I emailed the group four questions: How do you feel this week? What are you proud of? What challenges did you face? And what do you want to focus on next week?Optimize for your best energy windows. This is generally common knowledge, but as long as you’re putting your body first, make sure you put your best work first too. Start your days with your most creative, important tasks, and everything will seem easy after that. My favorite book on this subject is Eat that Frog, by Brian Tracy.You don’t have to do a crazy cleanse like I did (though I highly recommend Dr. Alejandro Junger’s Clean Program if you are interested); see what experiments you can run in your own life that work for YOU.
Now that I’m in maintenance mode I’m adding some coffee back in (can’t skip those deliciously foamy lattes forever!) and one cheat day per week, borrowing from Tim Ferris’ Slow Carb Diet. I’ve lost almost 15 pounds without even trying — a very welcome side effect of eating in a way that facilitates my best work.
Other books that you might find helpful and motivating:
The Paleo Solution by Robb WolfeThe Four-Hour Body by Tim FerrisWheat Belly by William DavisClean by Alejandro JungerThe Accidental Creative by Todd HenryJust as a business has start-up costs, so does making major health and lifestyle changes. The first few days might feel agonizingly difficult, but the rewards on the other side are absolutely worth it.

       
]]></description>
<dc:subject>Lifehack Lifestyle Productivity</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:70c2af3c82a0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Lifehack"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Lifestyle"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Productivity"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://blog.flickr.net/en/2011/10/21/cars-in-cuba/">
    <title>Cars in Cuba</title>
    <dc:date>2011-10-21T21:51:44+00:00</dc:date>
    <link>http://blog.flickr.net/en/2011/10/21/cars-in-cuba/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[












Due to the embargo on Cuba that started in the 1950s and the low value of the Cuban Peso    many locals still drive the beautiful now vintage cars that were imported during that time. The owners take meticulous care of their Cuban cars, and that’s another reason why you can still see them all around the Caribbean island.


Photos from Tom Eversley, kayugee, una cierta mirada, and theGentleman™.
         ]]></description>
<dc:subject>en 3up</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:e6231ecc2e2d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:en"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:3up"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/10/07/wordpress-essentials-the-definitive-guide-to-wordpress-hooks/">
    <title>WordPress Essentials: The Definitive Guide To WordPress Hooks</title>
    <dc:date>2011-10-07T22:48:46+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/10/07/wordpress-essentials-the-definitive-guide-to-wordpress-hooks/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



        
        
          
        
         
        
          
        
         
        
          
        
      



If you’re into WordPress development, you can’t ignore hooks for long before you have to delve into them head on. Modifying WordPress core files is a big no-no, so whenever you want to change existing functionality or create new functionality, you will have to turn to hooks.



In this article, I would like to dispel some of the confusion around hooks, because not only are they the way to code in WordPress, but they also teach us a great design pattern for development in general. Explaining this in depth will take a bit of time, but bear with me: by the end, you’ll be able to jumble hooks around like a pro.

Why Hooks Exist
I think the most important step in grasping hooks is to understand the need for them. Let’s create a version of a WordPress function that already exists, and then evolve it a bit using the “hooks mindset.”


   function get_excerpt($text, $length = 150) {
      $excerpt = substr($text,$length)
      return $excerpt;
   }

This function takes two parameters: a string and the length at which we want to cut it. What happens if the user wants a 200-character excerpt instead of a 150-character one? They just modify the parameter when they use the function. No problem there.

If you use this function a lot, you will notice that the parameter for the text is usually the post’s content, and that you usually use 200 characters instead of the default 150. Wouldn’t it be nice if you could set up new defaults, so that you didn’t have to add the same parameters over and over again? Also, what happens if you want to add some more custom text to the end of the excerpt?

These are the kinds of problems that hooks solve. Let’s take a quick look at how.


   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length", $length);

      $excerpt = substr($text,$length)
      return $excerpt;
   }

As you can see, the default excerpt length is still 150, but we’ve also applied some filters to it. A filter allows you to write a function that modifies the value of something — in this case, the excerpt’s length. The name (or tag) of this filter is excerpt_length, and if no functions are attached to it, then its value will remain 150. Let’s see how we can now use this to modify the default value.


   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length");

      $excerpt = substr($text,$length)
      return $excerpt;
   }

   function modify_excerpt_length() {
      return 200;
   }

   add_filter("excerpt_length", "modify_excerpt_length");

First, we have defined a function that does nothing but return a number. At this point, nothing is using the function, so let’s tell WordPress that we want to hook this into the excerpt_length filter.

We’ve successfully changed the default excerpt length in WordPress, without touching the original function and without even having to write a custom excerpt function. This will be extremely useful, because if you always want excerpts that are 200 characters long, just add this as a filter and then you won’t have to specify it every time.

Suppose you want to tack on some more text, like “Read on,” to the end of the excerpt. We could modify our original function to work with a hook and then tie a function to that hook, like so:


   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length");

      $excerpt = substr($text,$length)
      return apply_filters("excerpt_content", $excerpt);
   }

   function modify_excerpt_content($excerpt) {
      return $excerpt . "Read on…";
   }
   add_filter("excerpt_content", "modify_excerpt_content");

This hook is placed at the end of the function and allows us to modify its end result. This time, we’ve also passed the output that the function would normally produce as a parameter to our hook. The function that we tie to this hook will receive this parameter.

All we are doing in our function is taking the original contents of $excerpt and appending our “Read on” text to the end. But if we choose, we could also return the text “Click the title to read this article,” which would replace the whole excerpt.

While our example is a bit redundant, since WordPress already has a better function, hopefully you’ve gotten to grips with the thinking behind hooks. Let’s look more in depth at what goes on with filters, actions, priorities, arguments and the other yummy options available.

Filters And Actions
Filters and actions are two types of hooks. As you saw in the previous section, a filter modifies the value of something. An action, rather than modifying something, calls another function to run beside it.

A commonly used action hook is wp_head. Let’s see how this works. You may have noticed a function at the bottom of your website’s head section named wp_head(). Diving into the code of this function, you can see that it contains a call to do_action(). This is similar to apply_filters(); it means to run all of the functions that are tied to the wp_head tag.

Let’s put a copyright meta tag on top of each post’s page to test how this works.


   add_action("wp_head", "my_copyright_meta");

   function my_copyright_meta() {
      if(is_singular()){
         echo "";
      }
   }

The Workflow Of Using Hooks
While hooks are better documented nowadays, they have been neglected a bit until recently, understandably so. You can find some good pointers in the Codex, but the best thing to use is Adam Brown’s hook reference, and/or look at the source code.

Say you want to add functionality to your blog that notifies authors when their work is published. To do this, you would need to do something when a post is published. So, let’s try to find a hook related to publishing.

Can we tell whether we need an action or a filter? Sure we can! When a post is published, do we want to modify its data or do a completely separate action? The answer is the latter, so we’ll need an action. Let’s go to the action reference on Adam Brown’s website, and search for “Publish.”

The first thing you’ll find is app_publish_post. Sounds good; let’s click on it. The details page doesn’t give us a lot of info (sometimes it does), so click on the “View hook in source” link next to your version of WordPress (preferably the most recent version) in the table. This website shows only a snippet of the file, and unfortunately the beginning of the documentation is cut off, so it’s difficult to tell if this is what we need. Click on “View complete file in SVN” to go to the complete file so that we can search for our hook.

In the file I am viewing, the hook can be found in the _publish_post_hook() function, which — according to the documentation above it — is a “hook to schedule pings and enclosures when a post is published,” so this is not really what we need.

With some more research in the action list, you’ll find the publish_post hook, and this is what we need. The first thing to do is write the function that sends your email. This function will receive the post’s ID as an argument, so you can use that to pull some information into the email. The second task is to hook this function into the action. Look at the finished code below for the details.


   function authorNotification($post_id) {
      global $wpdb;
      $post = get_post($post_id);
      $author = get_userdata($post->post_author);

      $message = "
         Hi ".$author->display_name.",
         Your post, ".$post->post_title." has just been published. Well done!
      ";
      wp_mail($author->user_email, "Your article is online", $message);
   }
   add_action('publish_post', 'authorNotification');

Notice that the function we wrote is usable in its own right. It has a very specific function, but it isn’t only usable together with hooks; you could use it in your code any time. In case you’re wondering, wp_mail() is an awesome mailer function — have a look at the WordPress Codex for more information.

This process might seem a bit complicated at first, and, to be totally honest, it does require browsing a bit of documentation and source code at first, but as you become more comfortable with this system, your time spent researching what to use and when to use it will be reduced to nearly nothing.

Priorities
The third parameter when adding your actions and filters is the priority. This basically designates the order in which attached hooks should run. We haven’t covered this so far, but attaching multiple functions to a hook is, of course, possible. If you want an email to be sent to an author when their post is published and to also automatically tweet the post, these would be written in two separate functions, each tied to the same tag (publish_post).

Priorities designate which hooked function should run first. The default value is 10, but this can be changed as needed. Priorities usually don’t make a huge difference, though. Whether the email is sent to the author before the article is tweeted or vice versa won’t make a huge difference.

In rarer cases, assigning a priority could be important. You might want to overwrite the actions of other plugins (be careful, in this case), or you might want to enforce a specific order. I recently had to overwrite functionality when I was asked to optimize a website. The website had three to four plugins, with about nine JavaScript files in total. Instead of disabling these plugins, I made my own plugin that overwrote some of the JavaScript-outputting functionality of those plugins. My plugin then added the minified JavaScript code in one file. This way, if my plugin was deactivated, all of the other plugins would work as expected.

Specifying Arguments
The fourth argument when adding filters and actions specifies how many arguments the hooked function takes. This is usually dictated by the hook itself, and you will need to look at the source to find this information.

As you know from before, your functions are run when they are called by apply_filters() or do_action(). These functions will have the tag as their first argument (i.e. the name of the hook you are plugging into) and then passed arguments as subsequent arguments.

For example, the filter default_excerpt receives two parameters, as seen in includes/post.php.


   $post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt, $post );

The arguments are well named — $post_excerpt and $post — so it’s easy to guess that the first is the excerpt text and the second is the post’s object. If you are unsure, it is usually easiest either to look further up in the source or to output them using a test function (make sure you aren’t in a production environment).


   function my_filter_test($post_excerpt, $post) {
      echo "<pre>";
         print_r($post_excerpt);
         print_r($post);
      echo "</pre>";
   }
   add_filter("default_excerpt", "my_filter_test");

Variable Hook Names
Remember when we looked at the publish_post action? In fact, this is not used anymore; it was renamed in version 2.3 to {$new_status}_{$post->post_type}. With the advent of custom post types, it was important to make the system flexible enough for them. This new hook now takes an arbitrary status and post type (they must exist for it to work, obviously).

As a result, publish_post is the correct tag to use, but in reality, you will be using {$new_status}_{$post->post_type}. A few of these are around; the naming usually suggests what you will need to name the action.

Who Is Hooked On Who?
To find out which function hooks into what, you can use the neat script below, courtesy of WP Recipes. Use this function without arguments to get a massive list of everything, or add a tag to get functions that are hooked to that one tag. This is a great one to keep in your debugging tool belt!


function list_hooked_functions($tag=false){
 global $wp_filter;
 if ($tag) {
  $hook[$tag]=$wp_filter[$tag];
  if (!is_array($hook[$tag])) {
  trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
  return;
  }
 }
 else {
  $hook=$wp_filter;
  ksort($hook);
 }
 echo '<pre>';
 foreach($hook as $tag => $priority){
  echo "<br /><strong>$tag</strong><br />";
  ksort($priority);
  foreach($priority as $priority => $function){
  echo $priority;
  foreach($function as $name => $properties) echo "\t$name<br />";
  }
 }
 echo '</pre>';
 return;
}

Creating Your Own Hooks
A ton of hooks are built into WordPress, but nothing is stopping you from creating your own using the functions we’ve looked at so far. This may be beneficial if you are building a complex plugin intended for wide release; it will make your and other developers’ jobs a lot easier!

In the example below, I have assumed we are building functionality for users to post short blurbs on your website’s wall. We’ll write a function to check for profanity and hook it to the function that adds the blurbs to the wall.

Look at the full code below. The explanation ensues.


   function post_blurb($user_id, $text) {

      $text = apply_filters("blurb_text", $text);

      if(!empty($text)) {
         $wpdb->insert('my_wall', array("user_id" => $user_id, "date" => date("Y-m-d H:i:s"), "text" => $text), array("%d", %s", "%s"));
      }
   }

   function profanity_filter($text) {
      $text_elements = explode(" ", $text);
      $profanity = array("badword", "naughtyword", "inappropriatelanguage");

      if(array_intersect($profanity, $text_elements)) {
         return false;
      }
      else {
         return $text;
      }
   }

   add_filter("blurb_text", "profanity_filter");

The first thing in the code is the designation of the function that adds the blurb. Notice that I included the apply_filters() function, which we will use to add our profanity check.

Next up is our profanity-checking function. This checks the text as its argument against an array of known naughty words. By using array_intersect(), we look for array elements that are in both arrays — these would be the profane words. If there are any, then return false; otherwise, return the original text.

The last part actually hooks this function into our blurb-adding script.

Now other developers can hook their own functions into our script. They could build a spam filter or a better profanity filter. All they would need to do is hook it in.

Mixing And Matching
The beauty of this system is that it uses functions for everything. If you want, you can use the same profanity filter for other purposes, even outside of WordPress, because it is just a simple function. Already have a profanity-filter function? Copy and paste it in; all you’ll need to do is add the one line that actually hooks it in. This makes functions easily reusable in various situations, giving you more flexibility and saving you some time as well.

That’s All
Hopefully, you now fully understand how the hooks system works in WordPress. It contains an important pattern that many of us could use even outside of WordPress.

This is one aspect of WordPress that does take some time getting used to if you’re coming to it without any previous knowledge. The biggest problem is usually that people get lost in all of the filters available or in finding their arguments and so on, but with some patience this can be overcome easily. Just start using them, and you’ll be a master in no time!

(al)


© Daniel Pataki for Smashing Magazine, 2011.
]]></description>
<dc:subject>Coding WordPress</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:bb23989dbc23/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:WordPress"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/design/sublime-text-code-editor-review/">
    <title>Code Editor Review: Sublime Text</title>
    <dc:date>2011-10-06T21:00:20+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/design/sublime-text-code-editor-review/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[As a designer and developer, I’m always trying to find the best possible tools to do my job and to have fun with it. I’m both a PC and Mac user, Notepad, Coda, Textmate, Dreamweaver, Komodo and Aptana are some of the many editors I’ve tried but none of those made an impact as big as Sublime Text.

Although it is still in beta, Sublime Text is in my opinion the best text/code editor in the market which is available for Windows, OS X and Linux. There is nothing like trying and seeing for yourself but its features, aesthetic, usability and price (although it has an unlimited trial at the moment) made me want to write about it.

“Sublime Text is a sophisticated text editor for code, html and prose. You’ll love the slick user interface and extraordinary features.”


Interface
Sublime Text interface

Themes
The first impression that will pop into your mind is how amazingly beautiful the Sublime interface is. I was especially impressed while using Windows because usually editors are only visually appealing under Mac OS, however, I would say Sublime Text is unique in this matter. Changing themes takes two clicks (for real) and by default you get 22 to choose from but you can download more themes if you like.

Minimap
Although the interface itself is extremely beautiful, usability and functionalities are even more impressive. Imagine something you would like to see in an editor and you will probably find it in Sublime Text. Let’s start from the basics and that would point us to the default layout. Sublime Text comes with a minimap which is available at the top right corner showing you every line of code you may have. However with the minimap my favourite part is that it made me stop using the scroll bar to scroll down the page because you will be able to do it much easier using the minimap. If you don’t like you can simply hide it.

Panels/Groups/Screen Modes
Talking about the good stuff, one of my favourite features is that Sublime offers you the possibility to display as many files as you want through one-to-four panels so basically you can see four files at the same time. If you have more than one file open, Sublime will automatically create groups and you can  send a file to a group or select a group using the option focus. In the other hand, if you have a peaceful and calm personality and you like to keep things quiet you can use the Full Screen Mode (F11) or Distraction Free Mode (Shift+F11) which will hide all tabs forcing you to focus on your code/text.

Sidebar
Finishing the important aspects of Sublime interface, one last and also common feature is the sidebar. Sublime has it all and you if you don’t like tabs you can use the sidebar or vice-versa. You can also change everything from its original position.

Features
Sublime Text - Multiple selections

Multiple Selection
Although it’s a simple functionality, one thing that surprised me was the multiple selection option which does precisely that. Offers you the possibility of selecting multiple lines simultaneously and honestly I’ve never seen an editor with such possibility. This is something that helped me choose Sublime as my number one editor because I believe the small details design the big picture.

Auto-complete/Snippets
While expecting nothing less, Sublime brings you the auto-complete feature. However if you’re expecting the fantastic Dreamweaver-like auto-complete you can stop right there. Yes, it support snippets so write html and press TAB and the entire HTML head element appears. However, the auto-complete option itself is achieved by pressing ctrl+space which gives you a list of possible words based on the ones you have already written and this is where I feel it needs a bit more work because it does not give you a list of hints. This means you need to know how to code, so if you’re expecting a big help while writing your HTML you will find a hard time doing it.

Python/Community
Not satisfied because that option you really wanted is not there or isn’t great as you imagined? Don’t worry because you may have a way to make it look good. With Python plugins you can add as many features as you want to Sublime and if you’re not comfortable with Python you have a great and big community in their forum to help you out.

Customization
Every toolbar, mouse scroll speed, keyboard shortcut, etc can be customized at will so feel free to make yourself comfortable!

Complete Features List

Side by side multi-pane editing
Minimap: see your code from 10,000 feet
Full screen mode: use all your pixels, all the time
Nothing but text mode: the text, the whole text, and nothing but the text
Syntax highlighting for many languages with C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML supported out of the box, and more available for download
Multiple color schemes, with several included, and many more available for download
Bracket highlighting
Auto save: never lose your changes, not even if the dog thinks power cords are tasty
Fully customizable key bindings, menus and toolbar
Rich key binding language including sequenced key bindings, regular expression key matches, contextual bindings and parameterized bindings
Python plugins with a rich API
Rich selection of editing commands, including indenting / unindenting, paragraph reformatting, line joining and much more
Multiple selections: Simplify many tasks that used to require macros or regular expression
Column select
Regular expression search and replace
Incremental find as you type
Preserve case on replace
Bookmarks: Makes navigating through long files a breeze
Spell check as you type
Bracket matching
Commenting and uncommenting blocks of text
Asynchronous file loading, so you’re never blocked when loading files off slow network drives
Macros
Snippets
Auto complete
Repeat last action
Build tool integration
Automatic build on save
WinSCP integration for editing remote files via SCP and FTP

Video Analysis
DevHQLessons made a good video analysis about Sublime Text which I recommend. Check the video below.

Sublime Text 2: Best text editor ever?

Conclusion
I’ve made a very quick and rough review of Sublime but it should be enough to make your eyes shine. So if you’re looking for a powerful solution Sublime Text is for you. You can try Sublime through the unlimited trial or buy it for only $59.

Download Sublime Text
]]></description>
<dc:subject>Tools Web_Design code_editor sublime text_editor</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:bf97bfa06eac/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:code_editor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:sublime"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:text_editor"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.uie.com/brainsparks/2011/10/05/luke-wroblewski-designing-for-mobile/">
    <title>Luke Wroblewski – Navigating the Mobile Landscape</title>
    <dc:date>2011-10-05T20:53:50+00:00</dc:date>
    <link>http://www.uie.com/brainsparks/2011/10/05/luke-wroblewski-designing-for-mobile/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[[ Transcript Available ]

Mobile is the “hot topic” these days. It’s increasingly at the front of designers’ minds. In a world where the power and capabilities of the device in your pocket are so great, the possibilities become somewhat astounding. The mobile landscape is changing so rapidly that it makes developing a formal strategy to “figure mobile out” all but impossible. 

Luke Wroblewski is at the forefront of the mobile design movement. He suggests that it’s better to put something, anything, out there and see how it fares. Excessive planning in the mobile space leads to missing opportunity after opportunity. Taking advantage of the market as it is today and the capabilities of these devices can lead to the refinement and evolution of your product.

Luke will be conducting a full-day workshop full of his thoughts on mobile, including why you should design for mobile first, at the User Interface 16 Conference, November 7-9 in Boston. Learn more about Luke’s and the other 7 full-day workshops at UIConf.com.

Here’s an excerpt from the podcast.


“…today, [mobile] devices have a lot of constraints based on the ergonomics. They’ve got a small screen. In many situations, you’re using them in environments where there’s other stuff going on. You’re not hunkered down at a desk for an extended period of time. 

You may be at home on the couch watching TV, or you may be in a line somewhere, or passing some time in, hopefully, not the car. So there’s these constraints. Low bandwidth is another constraint. And when you use the devices, you familiarize yourself with what those constraints are. 

But there’s also a lot of opportunities in terms of capabilities. And if you use lots of apps, you can see, how are they using the accelerometer? What have they done with front and rear-facing cameras? How are they using location in order to deliver information? How are they using the video port, the camera, the audio input? All those things can open up new ideas about how to take advantage of those capabilities in your service. 

This is a device that you can use pretty much anywhere and everywhere. You have it with you all the time. Coverage of networks is way better than it’s been. And so, through the fact that you have it with you everywhere and anywhere and you can pull it out and access a network and access assets, all these new use cases emerge that you didn’t have before…”


Tune in to the podcast to hear Luke answer these questions:


What is the alternative to sitting and planning your mobile strategy?
Where should teams start to familiarize themselves with mobile?
Is there an advantage to playing with as many apps as you can to learn about the interaction design?
What are some things that make good mobile design stand out?
What is the benefit of desktop operating systems emulating features on touch-based devices?
How is multi-platform emergence affecting approaches to design?

Do you design for mobile? Share your thoughts with us in our comments section.

Recorded: September, 2011
[ Subscribe to our podcast via  ←This link will launch the iTunes application.]
[ Subscribe with other podcast applications.]



Full Transcript.


Jared Spool: Welcome, everyone, to an episode of the “SpoolCast”. Today I have the amazingly awesome Luke Wroblewski, who is going to be speaking at UI16, our User Interface Conference.

It’s coming up this November. He’s going to be giving a full-day workshop on designing for mobile, a really hot topic. And he is the guy I know that knows the most about mobile, and I’m very happy he’s here today.

Hello, Luke.



Luke Wroblewski: Hello, Jared. Thank you for having me.



Jared: Thanks for being here. So let’s just get into this. I’ve got all these clients now, who are pushing hard on their mobile, and they’re really trying to get there, but it’s really hard to figure out what to do right.

There are some crazy things that people have been trying to do. What are some crazy things that you have seen organizations do with their mobile implementations, particularly organizations that should have known better?



Luke: If they’re doing small, crazy things, at least doing something, I think that’s OK. The biggest issue I’ve seen is people running around and making PowerPoint deck after PowerPoint deck, trying to figure out their mobile strategy.



Jared: I saw that! I saw a guy on the plane. I’m sitting in the aisle, and then there’s someone in the middle, and this guy’s in the window, and he is editing up a PowerPoint deck of a mobile app.

And then, every 20 minutes, taking his laptop and passing it to the woman in the window behind him. [laughs] And then they would have some conversation, and then he would come back and he’d make more changes to it.



Luke: Wow. So there you go. And real-time, on the plane, even.



Jared: On the plane. [laughs]



Luke: It’s gotten to the point that I make this joke when I go and talk, especially at corporations. I say, “The worst thing you could be doing is just sitting around making PowerPoint.”

And pretty much inevitably, I always get this nervous laughter and someone coming up to me after the meeting: “You just nailed what’s going on over here! How did you know?”



[laughter]



Luke: I know because it’s pretty much what everybody’s doing.



Jared: Wow. And so what’s so nutty about that? On the surface, it sounds like a great prototyping tool.



Luke: [laughs] Well for building an app within it, sure. But when you spend all your time trying to imagine the future of mobile and planning accordingly and not taking a move until you’ve got everything nailed, then you’re just missing opportunity after opportunity right now.

And frankly, if you look at the space, I think it’s changing so dramatically day after day that any strategy, long-term, you put together is likely to get pretty disrupted.

Just looking at the past few weeks, right, we had HP getting out of WebOS, killing their tablets. We had Google buying Motorola. We had Steve Jobs resigning.

It was just bombshell after bombshell after bombshell in terms of what’s going on in mobile.

And so I think, when you get in this mode of all you’re doing is planning and things keep changing on you, you just keep planning, planning, planning; you never actually do anything.

So what you’re describing, where the guy’s actually designing an app, in whatever prototyping tool he needs, I think that’s great.

My concern is more along the lines of, “Hey, we’re planning out this large architecture. Hey, we need this long-term road map.” While I’m not completely ragging on planning, I think it’s very, very possible for organizations, especially bigger organizations, to just get stuck in that phase and never get out of it.





Jared: Yeah. So the alternative is what, then?



Luke: The alternative is just to put something out there and see what happens. If you actually look at the big companies that are currently doing well in mobile, that’s what they did.

So I keep hearing stories of a small, rogue, or interested team just went out and made an app or a mobile website, and all of a sudden it started taking off, and now that has gained a lot of momentum in the company and they’re taking off from it.

So one of the, perhaps, biggest examples is eBay. eBay was one of the first ones to pull together an iPhone app. And that was essentially a product manager, designer, and they worked with outside contractors just because they were really interested in it and wanted to make something there.

And you look now; eBay has 50 percent of mobile commerce in the US, and 70 percent of that is coming from their iPhone app.

At least as far as I hear the stories, I wasn’t there, obviously, this wasn’t some huge effort in terms of strategy and planning. It was rolling up your sleeves, making something and getting it out there.

I heard a similar story, for example, from Expedia. For a long time, I used Expedia, the travel site’s mobile app as an example of “Look at how focused their mobile experience is compared to their desktop Web experience.”

And I heard from someone after one of these talks that that app was created in their R and D Department by, again, two or three guys who were just really interested in, passionate about the space, and now they’re taking a lot of what they learned from there and applying it to the desktop and other places.

So this “just roll up your sleeves and do something,” I think the type of market it is and the type of environment it is lends itself a lot more to that kind of effort.



Jared: The folks over at Disney, there was an article recently published that had this visualization of all the Disney mobile apps, and there’s like 35 or 40 different Disney mobile apps.

Is there a point where just getting out there and doing it and having all these different parts of your organization just trying something gets in the way, and that maybe you should be sitting back and saying, “Well, do we have a strategy here?”



Luke: Yeah. Well, once you hit the point where you’ve actually done something. I guess I should clarify. I’m talking about people who are trying to, “figure mobile out.”



Jared: Right.



Luke: There’s organizations that have been in there from the beginning and have done a ton and they’ve learned a lot.

And once you’ve learned a lot and you understand, if they’ve got 35 apps, they probably know which ones are being used. They probably know where they’re getting new customers, where they’re making money, which platforms are working for them.

They have a crap-pile of information upon which they can start to build a strategy.



Jared: Right.



Luke: Whereas if you’ve never done anything, and all you’re doing is thinking about the re-architecture, which is going to take you two to three months, you’re not as well-positioned to actually develop a strategy because you don’t have any data, you don’t have any examples; you don’t know what people are actually doing with it, and so on.

And I do see, actually, a lot of companies are in the state that you’re talking about, in that they tried a bunch of things, released stuff, and now they’re looking at, “Well, how can we streamline this a bit? What are ways we can integrate this a bit more? What are the services that are actually sticking? What are the things that are not sticking?”



Jared: But the fact is, they did it, they got out there, they made it work for themselves.

And they didn’t really concern themselves too much whether they were leaving this sort of legacy trail of apps that they could be retiring at some point or disbanding.



Luke: I suspect a lot of those apps, to be frank, come from marketing organizations. And if you look at the trail of micro-sites emblazoned on the Web, right, you see a similar trend.

It’s the same kind of thing. People treated apps a lot like that, in that they would basically say, “Hey, the iPhone app is a new micro-site. Let’s just put them out there for a promotion or a service or a movie, whatever.”

But I’m also pretty confident that Disney has some core applications, representative of the brand and that are targeted at specific age groups and things like that.



Jared: Yeah, they do. They have some guides for moving around the theme parks and a restaurant finder and stuff like that.



Luke: I think they also have a core Disney app as well, because I believe my son watches videos on it. [laughs]



Jared: Oh, yeah. Yeah, I would think they do.



Luke: I think some of that detritus of all these different apps does come from this “treat the app as a micro-site” kind of approach.

But I see that decreasing now, because, as you said, people are looking at it and saying, “OK, well, these things are really low-value.” Once they drop off like an App Store list, they don’t really gain that much traction anymore.

This is why doing kind of gets you to learn. There is, for example, a whole suite of Disney individual, standalone books as apps.



Jared: Right. OK, yeah.



Luke: That’s all about selling a brand, right? So you’ve got the “Winnie the Pooh” book. You’ve got the Pixar “Cars” book. You’ve got interactive puzzle games associated with those brands.

Again, I don’t know exactly what’s going on in Disney, but my suspicion is they put out one of those, probably working with a third-party vendor. And if that format sticks, then they’ll throw other brands against that format.

So, put like a “Winnie the Pooh” jigsaw puzzle book. If that one works, then use that same stack to put another brand, like “Cars 2″ or “Toy Story,” on it.



Jared: Yeah, OK. So they are getting something out there. They’re seeing how well it works, they’re seeing what works well and what doesn’t, and then coming back and saying, “OK, let’s do another one and see what works there.”

It’s the standard iteration, “go as fast as you can” type process.



Luke: Yeah. And again, it’s that kind of environment. This is not a mature market right now. In a mature market, you don’t see the types of things that happened over the past three weeks.

You don’t see huge shifts in something like WebSearch, for example. The brands are pretty much established. We already had all that shakeout with Microsoft and AOL and Yahoo and who knows who.



Jared: Altavista and Ask and …



Luke: You’re familiar with this sort of trend of technology, right?



Jared: Yeah.



Luke: Where you have this period where there’s lots of very big moves, people are figuring out, and then over time things stabilize a bit more and there’s a little less change.

We’re not in that phase yet. [laughs] Things have definitely not stabilized yet. So iteration and constantly putting things out there and seeing what’s working is, I believe, the mode to be in.





Jared: When you’re doing that, when you’re coming to mobile first, you don’t want to treat it as if you’ve never seen it before. So if you’re in a team, let’s say you’re working at a hospital that has decided that they need to get something mobile out there.

So if you’re talking to the IT team at the hospital, what do you recommend they do for first steps, in terms of getting themselves familiar? Do they just go out and study what’s happening on the Web, or do they just start building something, or is there some cross between it? Where do they start?



Luke: I guess there’s a couple of ways to answer that. From a development perspective, I think it matters what they’re most comfortable with, development-wise.

The majority of companies that I interact with and see all have websites and Web presences. So starting to build something on the mobile Web is a very, very fast way for many organizations to prototype and put stuff out there, because they already know how to do HTML, CSS, JavaScript.

They can run it on a bunch of different devices, and they can simulate the form factor, simulate the interactions, and get a lot of things going. You can’t do everything, obviously, on the mobile Web that you can do in an app. So usually that’s a good place to start, technology-wise.

Then, in terms of overall adoption and use, if you don’t have a specific audience and a specific platform, which few people do but some do, you basically go by overall usage numbers.

And so, highest engagement still remains the iOS platform, and then you fall back to Android, and things drop off after there.

And with the transition with BlackBerry, maybe there’s something viable there, maybe Windows will stumble into something. But those don’t really look like very big plays right now.

So you can sort of prioritize what you do technology-wise, and then actually determining what to do with the product and the service you’re offering is exactly the process you’re talking about.

I don’t think it’s necessarily anything new. Know your audience. Observe real behaviors. All the design stuff that we’ve been talking about since I don’t know when applies here as well.





Jared: Do you think that there’s a real advantage to playing with as many different mobile applications as you can get your hands on and learning the lingua franca of the interaction designs?



Luke: What’s different about mobile, I guess, is an interesting question to talk about. And I think there’s three things that really make mobile very different.

The devices, and when we’re talking mobile here, I’m not blurring the line between these laptop, tablet, all kinds of things. I’m literally talking about things that are in your pocket pretty much all day. Very, very mobile.

So, today, those devices have a lot of constraints based on the ergonomics. They’ve got a small screen. In many situations, you’re using them in environments where there’s other stuff going on. You’re not hunkered down at a desk for an extended period of time.

You may be at home on the couch watching TV, or you may be in a line somewhere, or passing some time in, hopefully, not the car.

So there’s these constraints. Low bandwidth is another constraint. And when you use the devices, you familiarize yourself with what those constraints are.

But there’s also a lot of opportunities in terms of capabilities.

And if you use lots of apps, as you describe, then you can see, how are they using the accelerometer? What have they done with front and rear-facing cameras? How are they using location in order to deliver information? How are they using the video port, the camera, the audio input?

All those things can open up new ideas about how to take advantage of those capabilities in your service. So it’s these constraints. It’s these capabilities.

And then the third thing, which is sort of simple but I think it’s also the most powerful of this, is this is a device that you can use pretty much anywhere and everywhere. You have it with you all the time. Coverage of networks is way better than it’s been. It’s not perfect by any means.

And so, through the fact that you have it with you everywhere and anywhere and you can pull it out and access a network and access assets, all these new use cases emerge that you didn’t have before.

And that involves things like when inspiration strikes you can do something. You can do something in all sorts of different situations and contexts and environments and places, and increasingly between devices. This is a very interesting area.

I was talking to someone on the traditional-appliance manufacturing side of the coin. And we were talking about, “Well, why doesn’t the appliance interact with my smartphone?”

If you have either an RFID tag or a QR code, so if it’s got a maintenance issue, I can just point my smartphone camera at the QR code it generates on its screen and it tells me exactly the service that it needs.

Or better yet, fills out the whole form for me and I just hit a button and the technician comes and fixes it. But I can’t do that necessarily, without being able to have these devices with me anywhere and everywhere I am, and that’s a huge determining factor of new uses for them.



Jared: That’s really interesting, because what this really talks to is we can get very creative very quickly once we have a chance to just start to play with this.

It reminds me of the time when I heard the stories of Jeff Hawkins, who founded Palm, which, in essence, was one of the first mobile devices.

He just took a block of wood, and he carried it around in his pocket. And he would literally take the block of wood out and pretend to take notes on it or look something up and just figure out, did it make sense at that moment.

So it sounds to me like, if you got something simple up and running that you could carry in your pocket and then you could actually use it the way your users would use it and go through those scenarios, you would quickly learn where it works and where it doesn’t.



Luke: Yeah. And this takes us right back to where we started. That’s the kind of rapid iteration, “just do things” I’m talking about. That’s going to get you much closer to the mark of what your product should be doing and how than iterating in PowerPoint for hours, or days or weeks or months.

Again, I’m not dismissing the planning phase, but because these devices root you in real-world use, just to go back to the eBay example, some of the testing they did on that eBay iPhone app was they actually went to a Fry’s or a Circuit City or Best Buy with the device, went back to the back of the store and tried to use it for things like price comparison.

They were looking at these things. And they realized really, really fast that, hey, even though there’s great networks outside and within buildings, once you’re in these kinds of environments, they’ve really got to double down on performance because it wasn’t good enough to hit these core use cases where people were going to use them.



Jared: That’s really interesting. So the issue was that because the signal was so diminished inside the building, you had to minimize the amount of data that was being transferred radically to make it still a useful, functional item in that low-signal space.



Luke: There’s actually a lot of great stories from this eBay iPhone app. Karlyn Neel, who I worked with at eBay, gave a talk.

And actually, I wrote all this up, so everything I’m referencing here you can actually go and look up in this “One-Billion-Dollar iPhone App.” [laughs]



Jared: We’ll put a link to that in the show notes.



Luke: Great. That’s the really interesting thing. I mean, this one iPhone app did about two billion in sales last year.



Jared: Wow! OK.



Luke: So all that testing and that rapid iteration and just getting it out there, I think, really worked well for them.



Jared: That’s a lot better than all the fart apps that are out there.



Luke: [laughs] Yeah, I think so.



Jared: Two billion in sales. That’s crazy!



Luke: That is crazy. Single iPhone app.





Jared: Yeah. Yeah, wow. OK, so that makes sense. So now, what are some other things that you’ve been collecting that make good mobile design stand out that designers really want to look into?



Luke: Actually, this is a nice segue to what we’re talking about with the conference, because I’ve been really taking a hard look at what are the things that make mobile different.

How do these constraints, capabilities, and the ability to interact with these devices anywhere and everywhere, what do those do to what we know traditionally about input, about navigation, about organization, about even things like menu design, layout?

All this stuff, I think, gets impacted, and we need to take a step back and say, “OK, let’s rethink how we think about gathering input because of these constraints, capabilities, and modes of use.”

Let’s step back and think about, “Well, how do we think about navigation menus and IA in our organization because of these constraints, capabilities, and modes of use?”

I personally am very, very self-nervous that I want to apply too much of what I know already on the desktop Web to this new environment.

So I constantly keep slapping myself and pulling myself back and saying, “Hey, just because it works over here, is this really what you’re going to do on mobile?”

The thing that keeps resonating in the back of my head it feels like we’re in a similar transition to when we went from print to Web, and the first reaction of everybody was to take what works in print and put it on the Web.



Jared: Yeah. Yeah.



Luke: It’s a very, very similar situation now. Take what works on the desktop Web and put it on mobile; put it inside mobile apps and things like that. And again, there’s different capabilities and new things that you can do, so that doesn’t always make sense.



Jared: So what’s an example that you’ve seen recently of someone who just sort of blindly moved over and they probably shouldn’t have?



Luke: I don’t know if I can name a specific name, but I can tell you how to identify something like that.



Jared: OK, yeah.



Luke: If you go and hit a mobile-optimized experience, and at the top of the screen there’s about five navigation-bar headers, with menu options that take up, I don’t know, 50 percent of this tiny little screen and you can’t actually see any content, that’s generally an example of someone just porting over what they had on the desktop onto mobile.



Jared: Yeah, OK. The funny thing is that those five layers of navigation at the top of the screen probably didn’t work on the desktop either.



Luke: Yeah. [laughs] Exactly. And then you get breadcrumbs and all this other stuff, just really porting over everything that they had from the desktop over to mobile.

Another telltale sign is I have this one example that I reference a lot around a university’s mobile Web experience.

What they had on there was a letter from the president, a photo gallery of life on campus, alumni in the news. All the sort of irrelevant promotional stuff that litters desktop Web experiences and nothing that actually considered modes of use on the phone.

The most stereotypical, generic example you can think of is a campus map. You think if you’re going to take the time to build out a new UI or experience for your university for mobile devices, you’d give people a way to get around the university.



Jared: Yeah, you would think.



Luke: You’d think, but they didn’t have that.



Jared: Wow.



Luke: And things like that. Things which are task-based and allow you to get stuff done as you’re out and about in the real world. All that stuff is absent in situations where they just take what they have on the desktop and port it over.

You don’t see anything taking advantage of these capabilities and modes of behavior. It’s just the same content, smaller layout.



Jared: So, keeping this idea of just sort of saying, “OK, what is the key piece here? Let’s not focus on the chrome.”

This is one of the things, right? Because what happens to folks who work, particularly in larger organizations, is that because every group is responsible for their own content, they say, “Well, we’re not responsible for that.

“We’re just responsible for the stuff the content gets poured into. So we’re just going to focus on this shell, this chrome that we put around things, and that’s what we design. And we don’t really know.”

And so you get a lot of sort of lorem ipsum style designs where the thing that the user actually comes for, the thing that the user actually cares about, is actually not part of the design process.

And that gets them into trouble. That’s still true in mobile, and it probably gets really magnified in mobile, I would think.



Luke: Absolutely. I think you nailed it.

I have this rant about wireframes because when I look at the vast majority of wireframes, images which are content are represented as a box with an X through it.

Text and the actual copy or information, or even detailed data, is usually a line. It’s not even text. Or it’s filled with lorem ipsum.

So it’s all fake and the things that actually are, “real” are navigation menus.

And so what you get is you end up with these designs that have a whole bunch of navigation menus all over the place, because that’s what people are iterating on during the design phase.

To your point, they’re playing with the shell instead of playing with the actual content.

And I think mobile, and in particular, actually, at a broader level, touch-based interactions and these natural user-interface principles really magnify this issue because on those types of devices, you can directly interact with the content.

People start to expect that. Once all the stuff starts taking away from the content and you start putting buttons and navigation menus and everything all over the place, it starts to feel more and more foreign.

And especially when you have smaller screens, you get more and more frustrated that you can’t actually get to the content.



Jared: Yeah. I see myself doing this. So I’ve got this Canon camera, and it has the capability for me to see, on the little digital screen that comes on the back of the camera, nine pictures at once. So I can press a button and now I can see the last nine pictures I worked with.

And the way you’re supposed to interact with it is you use the little arrow keys on the back of the camera. If I want to get to the upper left-hand corner, I have to scroll back and then scroll up and then push the OK button and I get it. So it’s like eight keystrokes to get to a picture.

But I find myself unconsciously just trying to push the picture on the screen, move my finger over and push the picture, and I want to interact with that data directly. And of course, my camera predates the touch-screen movement of the iPhone.

But I think people are growing to have this expectation that they can just interact with this data that way, when it’s in that form factor.



Luke: Yeah. A more interesting piece of that, at least to me, is you and I have grown up and used all kinds of different input formats and devices.

Look at people who just started on touch. So my two and a half year old, he goes up to any screen and he expects it to be a touch-based screen.



Jared: I’ve heard that. That if you grow up in a household with a touch screen you think any glass surface is a touch screen.



Luke: Right. So those are your expectations. I love doing this quote, but anytime he sees sort of like a GUI menu, he comes and grabs me. He’s like, “What the hell is this? Fix this thing.” Because it feels really foreign in that environment.





Jared: That’s really interesting. Yeah, I think you really do have to be immersed in that language of the natural user interface as it’s sort of becoming called, this new thing. What’s your take on Apple reversing the scrollbars on Lion to match what’s happening on the touch devices?



Luke: I saw a great phrase recently which is, “Apple is going to take us kicking and screaming into this next generation of UI whether we like it or not.” Because they actually make pretty bold moves in these areas, and that’s a great example.



Jared: Well but Windows 8 looks is looking like it’s getting that way too. Right?



Luke: Yeah. I saw some really confusing stuff about Windows 8 recently.



Jared: Yeah. They backed away from that. So the original Windows 8 thing that they showed, what, about six months ago, was really this very touch-centric interface.

And then just like last week or something they said, “Well, actually you’ll be able to switch between that and the old way of doing things.” And it’s like, “Ooh.”



Luke: Which I don’t get. So I would like to see that. Because of you look at those two screenshots, it’s like Microsoft Office 2012, the one with the ribbon-type interactions for Explorer and then what looks like Windows Phone seven for the touch-based viewing and toggling between those two seems quite, I don’t know. I would love to see how that works.



Jared: It reminds me of the old saying, “Standards are great, there are so many to choose from.”

And it sounds like Microsoft is taking this middle road where they say, “Well, OK, you get to choose what which standards you have.” But that’s just going to create all sorts of wacky interaction and confusion.



Luke: To go back to the point around how Apple is taking the stuff from the iPhone and adopting it to Lion, I think people are starting to expect the way things work on their mobile devices to work that way on a desktop.

Chris Messina recently posted a thing where he said, “I think I just double tapped my space bar the laptop expecting it to insert a period and a space.”



Jared: I have done that.



Luke: Yeah, because you do that on the phone all the time. You go space, space and it inserts a period and spaces over. And now you go to the laptop and you do it and you’re like, “Wait. Why didn’t this do that?”



Jared: Right.



Luke: So it’s amazing the way we start to reprogram ourselves through continued use of these other devices. If you just plot out the trend line, more people are going to be interacting with their mobile phones more often than they do their laptops outside of very core professionals.

So yeah, the behaviors you get on the mobile device are probably going to become the dominant ones. And those are the ones that are going to influence what you expect in other places, hence the transition of scrollbars online.





Jared: I think so. So from an application developer perspective this really means that we can’t just limit ourselves to a single platform anymore.

We have to become versant in all the platforms that are out there and have a census to how people are switching between them.

And understand that there’s a good chance that our app is being used in more than one platform by the same person often simultaneously in some ways.



Luke: Yep. And so there’s two things that I like to talk about with that idea. One is, it’s becoming very, very clear that a cross-channel user, AKA someone that uses your desktop app, your mobile website, and your, I don’t know, your Chumby app or something like that.



[laughter]



Luke: Not only are they a better user because they use you in three different channels so they add up to more time, but in each of those channels they are higher use than somebody who’s only using a single channel.

So the stat I always pull up because it’s the biggest one, Facebook has 250 million mobile users. The people who that use Facebook on mobile are twice as active on Facebook on the desktop as those who do not use Facebook on the mobile.



Jared: That’s really interesting. Yeah, Netflix was reporting something very similar. And they worked really hard so that if you’re watching it on your TV and you pause it, and then you go and you bring up the same movie on your iPad, it picks up right where it left off on the TV.



Luke: Netflix is actually pretty fascinating. I remember at the Web App Summit you guys put on, Bill Scott made a couple comments around how there’s all this debate in Netflix about whether they should have the same experience across all their devices in terms of UI.

Or if they should be optimized for the capabilities and constraints. And they have this notion of user posture across all devices.

And what he quoted was that in all the testing they’ve done it always comes out that the device optimized UI performs better than something that’s generic across everything.



Jared: Right.



Luke: And I think that applies to how you represent the interface. But at the same time, there’s seamlessness between your data and your interactions and your state across all those different interfaces.

So it’s sort of like the same but different, is really the right answer. Because you want the interactions, the core value, your data, all that stuff to be the same. But the way you interact with it should be influenced by what the device can or can’t do. 



Jared: That makes perfect sense. That makes perfect sense. So, people coming to your full-day workshop.

You’re going to walk through a lot of what you’ve been learning. Particularly with your recent explorations doing the whole Bagcheck experience, which was a gorgeous experience.

Which, it’s interesting how you were co-developing this desktop-based experience alongside doing a mobile experience. And you started with using mobile Web for it.

I remember early on you told me that eventually you would expect it to be a mobile app. But you were using the mobile Web so that you could get to the functionality and understand what the users needed faster and you could react to it faster instead of having to go through the App Store cycle, right?



Luke: Right. Exactly. It’s actually even more complex than that I guess. We started out by building a command line version first. AKA, we built the API.

So what we would do is really think about, “What are the different objects? How are people going to interact with those objects?” And we would build a core functionality which we could interact with through command line.

So the first things we actually did when we were testing … this is kind of silly. But the first interactivity and “usability” testing we did was in the command line. [laughs]

And from there we took that command line and we gave it a bit of a front-end in a mobile Web experience. And then subsequently we built a desktop experience after that.

But the mobile Web experience, one of the reasons why we did that first was because we had again, these tight constraints, but also because we could interact with it anywhere and everywhere.

So we would literally be out in the evenings. I used it when I went on vacation. Just trying to figure out what are the modes of behavior, very similar to the eBay example we talked about earlier.

What are the modes of behavior that makes sense with this service? And once we thought we had that tuned then we went over to the desktop and said, “OK, well, let’s take what we learned and develop a larger screen more in-depth kind of immersive experience for it.”



Jared: So by going that sort of command line which got you to the essential functionality and it said, “These are the transactions what we will have with the server.”

And then, in essence, it sound like you put a nice pretty skin on it and built it out from there for your mobile experience.

And then you went to the desktop and said, “OK, what does the desktop need to have that borrows from that mobile experience and what does it have to have that’s unique to the desktop?” Is that sort of the evolution?



Luke: Yeah, definitely. And with the desktop too. I mean, you just have different kinds of capabilities.

So you’ve got a lot of screen space. So we were able to do things which are more like asynchronous editing, which is very hard to do on mobile because you just have this small screen.

You can’t have multiple pieces of say, like a creation tool open simultaneously and allow you to switch between them. You tend to be locked into a mode or a state because that’s all the room you have.

So when we took it to the desktop all of sudden we were able to do things that were a lot more asynchronous, that were more multi-modal if you will.

And we were also able to do a bit more automation on stuff because we had nicer connections in the bandwidth pipes overall.

So for example, one of the things we did on desktop, which we didn’t do on mobile, was on a desktop we would go and build out a listing of all your stuff using metadata you have on other services.

We said, “OK. Well tell us who you are on Flickr,” and we’d go and find all the camera gear you use on Flickr and essentially build out this list for you in this full-screen interactive mode.

Whereas on the mobile, we built something that we didn’t have on desktop, which was you can go and scan the barcode of an item to input it, which is pretty awkward and clunky in most people’s laptop and desktop experiences.

So those two things were separate to the platform. Long term, maybe we could have morphed the two. Certain things just made more sense.

Like the barcode. You could pick up the phone; point it at an object really easily. So that makes a lot of sense on mobile. So that app had that functionality.



Jared: Well, I mean, it all sounds great. And I’m really looking forward to your workshop at the conference. And I’m very excited because you’re really going to get into the core details as to how people make this happen.

You’re going to talk specific about gestures and how Hover works, and doing input, and displaying data, and all that stuff.

So it’s going to give people a really solid background and starting place for the language of what works and what doesn’t.



Luke: Yeah. I wouldn’t come unless you want to get really into the details of how to do these things.



Jared: OK. So we’ll tell people to stay away unless they really need to do that.

It’s key that they don’t come unless they really want to know that stuff.

So that’s excellent. And people love your workshops, so that’s great.

Luke, I want to thank you for taking the time to talk to us today. This has been really fascinating and hearing these stories of how you guys did this and what’s going on in the mobile space has been really a lot of fun. Thank you.



Luke: Thank you. My pleasure.



Jared: So everybody, you can hear Luke at the User Interface 16 Conference, which is going to be November 7th through 9th in Boston, Massachusetts. He’s going to be doing a full-day workshop on designing for mobile.

And you now know why we chose him to be the guy to do this because he’s done this stuff. He knows what he’s talking about. So you definitely want to see that.

You can find out all about that at Uiconf.com. We’ll love to see you there.

Again, Luke, thank you very much for spending this time with us.

And I want to thank the audience for listening. And as always, thank you for encouraging our behavior here at User Interface Engineering. We’ll talk to you next time.


]]></description>
<dc:subject>Design_Principles Events mobile Podcasts SpoolCast UI16 User_Experience UX</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:a664a13a478e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Principles"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Events"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:mobile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Podcasts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:SpoolCast"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:UI16"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:User_Experience"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:UX"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.uie.com/brainsparks/2011/10/05/uietips-why-we-sketch-2/">
    <title>UIEtips: Why We Sketch</title>
    <dc:date>2011-10-05T20:23:51+00:00</dc:date>
    <link>http://www.uie.com/brainsparks/2011/10/05/uietips-why-we-sketch-2/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[In our ongoing research into design excellence, we’ve come across an interesting correlation. The designers who are at the top of their game are mostly people who sketch.

Even though every designer we talked with had completely different backgrounds, training, and work habits, they all shared one common element—they sketched their work. In addition, they weren’t just sketching their designs. They were sketching their notes in meetings, their conversations with their co-workers, and their understanding of their design research. Sketching was a common medium for a variety of design-related activities.

In this issue of UIEtips, we look back at an article from a year ago. We take a tour of the different activities and the sketches we saw during our research. These sketches solve a multitude of important design problems and are key to becoming a design master. I’m sure you’ll find this as interesting as I do.

Read the article, Why We Sketch.

One of the most popular workshops at last year’s User Interface Conference was Good Design Faster. The workshop had a strong sketching component. Once again we’re offering this workshop, taught by one of its original creators, Brandon Schauer. On November 9 at the User Interface 16 Conference, Brandon will show you how to bring out innovative design ideas in record time. Explore Brandon’s workshop and the 7 other fantastic workshops at UICONF.com.

How do you use sketching in your work? Is this something new or something you’ve been doing for a while? We’d love to hear about your experiences below.
]]></description>
<dc:subject>Design Design_Process Design_Skills sketching Brandon_Schauer jared_spool UI16</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:acba5eb8f4f8/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Process"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Skills"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:sketching"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Brandon_Schauer"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:jared_spool"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:UI16"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/10/04/how-to-create-custom-post-meta-boxes-in-wordpress/">
    <title>How To Create Custom Post Meta Boxes In WordPress</title>
    <dc:date>2011-10-04T17:33:51+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/10/04/how-to-create-custom-post-meta-boxes-in-wordpress/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



        
        
          
        
         
        
          
        
         
        
          
        
      



What seems like one of the most complicated bits of functionality in WordPress is adding meta boxes to the post editing screen.  This complexity only grows as more and more tutorials are written on the process with weird loops and arrays.  Even meta box “frameworks” have been developed.  I’ll let you in on a little secret though: it’s not that complicated.



Creating custom meta boxes is extremely simple, at least it is once you’ve created your first one using the tools baked into WordPress’ core code.  In this tutorial, I’ll walk you through everything you need to know about meta boxes:


Creating meta boxes.
Using meta boxes with any post type.
Handling data validation.
Saving custom meta data.
Retrieving custom meta data on the front end.

Note:  When I use the term “post” throughout this tutorial, I’m referring to a post of any post type, not just the default blog post type bundled with WordPress.

What is a post meta box?
A post meta box is a draggable box shown on the post editing screen.  Its purpose is to allow the user to select or enter information in addition to the main post content.  This information should be related to the post in some way.

Generally, two types of data is entered into meta boxes:


Metadata (i.e. custom fields),
Taxonomy terms.

Of course, there are other possible uses, but those two are the most common.  For the purposes of this tutorial, you’ll be learning how to develop meta boxes that handle custom post metadata.

What is post metadata?
Post metadata is data that’s saved in the wp_postmeta table in the database.  Each entry is saved as four fields in this table:


meta_id:  A unique ID for this specific metadata.
post_id:  The post ID this metadata is attached to.
meta_key:  A key used to identify the data (you’ll work with this often).
meta_value:  The value of the metadata.

In the following screenshot, you can see how this looks in the database.



When you get right down to it, metadata is just key/value pairs saved for a specific post.  This allows you to add all sorts of custom data to your posts.  It is especially useful when you’re developing custom post types.

The only limit is your imagination.

Note:  One thing to keep in mind is that a single meta key can have multiple meta values.  This isn’t a common use, but it can be extremely powerful.

Working with post metadata
By now, you’re probably itching to build some custom meta boxes.  However, to understand how custom meta boxes are useful, you must understand how to add, update, delete, and get post metadata.

I could write a book on the various ways to use metadata, but that’s not the main purpose of this tutorial.  You can use the following links to learn how the post meta functions work in WordPress if you’re unfamiliar with them.


add_post_meta():  Adds post metadata.
update_post_meta():  Updates post metadata.
delete_post_meta():  Deletes post metadata.
get_post_meta():  Retrieves post metadata.

The remainder of this tutorial assumes that you’re at least familiar with how these functions work.

The setup
Before building meta boxes, you must have some ideas about what type of metadata you want to use.  This tutorial will focus on building a meta box that saves a custom post CSS class, which can be used to style posts.

I’ll start you off by teaching you to develop custom code that does a few extremely simple things:


Adds an input box for you to add a custom post class (the meta box).
Saves the post class for the smashing_post_class meta key.
Filters the post_class hook to add your custom post class.

You can do much more complex things with meta boxes, but you need to learn the basics first.

All of the PHP code in the following sections goes into either your custom plugin file or your theme’s functions.php file.

Building a custom post meta box
Now that you know what you’re building, it’s time to start diving into some code.  The first two code snippets in this section of the tutorial are mostly about setting everything up for the meta box functionality.

Since you only want your post meta box to appear on the post editor screen in the admin, you’ll use the load-post.php and load-post-new.php hooks to initialize your meta box code.

/* Fire our meta box setup function on the post editor screen. */
add_action( 'load-post.php', 'smashing_post_meta_boxes_setup' );
add_action( 'load-post-new.php', 'smashing_post_meta_boxes_setup' );
Most WordPress developers should be familiar with how hooks work, so this should not be anything new to you.  The above code tells WordPress that you want to fire the smashing_post_meta_boxes_setup function on the post editor screen.  The next step is to create this function.

The following code snippet will add your meta box creation function to the add_meta_boxes hook.  WordPress provides this hook to add meta boxes.

/* Meta box setup function. */
function smashing_post_meta_boxes_setup() {

/* Add meta boxes on the 'add_meta_boxes' hook. */
add_action( 'add_meta_boxes', 'smashing_add_post_meta_boxes' );
}
Now, you can get into the fun stuff.

In the above code snippet, you added the smashing_add_post_meta_boxes() function to the add_meta_boxes hook.  This function’s purpose should be to add post meta boxes.  

In the next example, you’ll create a single meta box using the add_meta_box() WordPress function.  However, you can add as many meta boxes as you like at this point when developing your own projects.

Before proceeding, let’s look at the add_meta_box() function:


add_meta_box( $id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args = null );


$id:  This is a unique ID assigned to your meta box.  It should have a unique prefix and be valid HTML.
$title:  The title of the meta box.  Remember to internationalize this for translators.
$callback:  The callback function that displays the output of your meta box.
$page:  The admin page to display the meta box on.  In our case, this would be the name of the post type (post, page, or a custom post type).
$context:  Where on the page the meta box should be shown.  The available options are normal, advanced, and side.
$priority:  How high/low the meta box should be prioritized.  The available options are default, core, high, and low.
$callback_args:  An array of custom arguments you can pass to your $callback function as the second parameter.

The following code will add the post class meta box to the post editor screen.

/* Create one or more meta boxes to be displayed on the post editor screen. */
function smashing_add_post_meta_boxes() {

add_meta_box(
'smashing-post-class',// Unique ID
esc_html__( 'Post Class', 'example' ),// Title
'smashing_post_class_meta_box',// Callback function
'post',// Admin page (or post type)
'side',// Context
'default'// Priority
);
}
You still need to display the meta box’s HTML though.  That’s where the smashing_post_class_meta_box() function comes in ($callback parameter from above).

/* Display the post meta box. */
function smashing_post_class_meta_box( $object, $box ) { ?>

<?php wp_nonce_field( basename( __FILE__ ), 'smashing_post_class_nonce' ); ?>

<p>
<label for="smashing-post-class"><?php _e( "Add a custom CSS class, which will be applied to WordPress' post class.", 'example' ); ?></label>
<br />
<input class="widefat" type="text" name="smashing-post-class" id="smashing-post-class" value="<?php echo esc_attr( get_post_meta( $object->ID, 'smashing_post_class', true ) ); ?>" size="30" />
</p>
<?php }
What the above function does is display the HTML output for your meta box.  It displays a hidden nonce input (you can read more about nonces on the WordPress Codex).  It then displays an input element for adding a custom post class as well as output the custom class if one has been input.

At this point, you should have a nice-looking meta box on your post editing screen.  It should look like the following screenshot.



The meta box doesn’t actually do anything yet though.  For example, it won’t save your custom post class.  That’s what the next section of this tutorial is about.

Saving the meta box data
Now that you’ve learned how to create a meta box, it’s time to learn how to save post metadata.

Remember that smashing_post_meta_boxes_setup() function you created earlier?  You need to modify that a bit.  You’ll want to add the following code to it.

/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'smashing_save_post_class_meta', 10, 2 );
So, that function will actually look like this:

/* Meta box setup function. */
function smashing_post_meta_boxes_setup() {

/* Add meta boxes on the 'add_meta_boxes' hook. */
add_action( 'add_meta_boxes', 'smashing_add_post_meta_boxes' );

/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'smashing_save_post_class_meta', 10, 2 );
}
The new code you’re adding tells WordPress that you want to run a custom function on the save_post hook.  This function will save, update, or delete your custom post meta.

When saving post meta, your function needs to run through a number of processes:


Verify the nonce set in the meta box function.
Check that the current user has permission to edit the post.
Grab the posted input value from $_POST.
Decide whether the meta should be added, updated, or deleted based on the posted value and the old value.

I’ve left the following function somewhat generic so that you’ll have a little flexibility when developing your own meta boxes.  It is the final snippet of code that you’ll need to save the metadata for your custom post class meta box.

/* Save the meta box's post metadata. */
function smashing_save_post_class_meta( $post_id, $post ) {

/* Verify the nonce before proceeding. */
if ( !isset( $_POST['smashing_post_class_nonce'] ) || !wp_verify_nonce( $_POST['smashing_post_class_nonce'], basename( __FILE__ ) ) )
return $post_id;

/* Get the post type object. */
$post_type = get_post_type_object( $post->post_type );

/* Check if the current user has permission to edit the post. */
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return $post_id;

/* Get the posted data and sanitize it for use as an HTML class. */
$new_meta_value = ( isset( $_POST['smashing-post-class'] ) ? sanitize_html_class( $_POST['smashing-post-class'] ) : '' );

/* Get the meta key. */
$meta_key = 'smashing_post_class';

/* Get the meta value of the custom field key. */
$meta_value = get_post_meta( $post_id, $meta_key, true );

/* If a new meta value was added and there was no previous value, add it. */
if ( $new_meta_value && '' == $meta_value )
add_post_meta( $post_id, $meta_key, $new_meta_value, true );

/* If the new meta value does not match the old value, update it. */
elseif ( $new_meta_value && $new_meta_value != $meta_value )
update_post_meta( $post_id, $meta_key, $new_meta_value );

/* If there is no new meta value but an old value exists, delete it. */
elseif ( '' == $new_meta_value && $meta_value )
delete_post_meta( $post_id, $meta_key, $meta_value );
}
At this point, you can save, update, or delete the data in the “Post Class” meta box you created from the post editor screen.

Using the metadata from meta boxes
So you have a custom post meta box that works, but you still need to do something with the metadata that it saves.  That’s the point of creating meta boxes.  What to do with your metadata will change from project to project, so this is not something I can answer for you.  However, you will learn how to use the metadata from the meta box you’ve created.

Since you’ve been building a meta box that allows a user to input a custom post class, you’ll need to filter WordPress’ post_class hook so that the custom class appears alongside the other post classes.

Remember that get_post_meta() function from much earlier in the tutorial?  You’ll need that too.

The following code adds the custom post class (if one is given) from your custom meta box.

/* Filter the post class hook with our custom post class function. */
add_filter( 'post_class', 'smashing_post_class' );

function smashing_post_class( $classes ) {

/* Get the current post ID. */
$post_id = get_the_ID();

/* If we have a post ID, proceed. */
if ( !empty( $post_id ) ) {

/* Get the custom post class. */
$post_class = get_post_meta( $post_id, 'smashing_post_class', true );

/* If a post class was input, sanitize it and add it to the post class array. */
if ( !empty( $post_class ) )
$classes[] = sanitize_html_class( $post_class );
}

return $classes;
}
If you look at the source code of the page where this post is shown on the front end of the site, you’ll see something like the following screenshot.



Pretty cool, right? You can use this custom class to style posts however you want in your theme’s stylesheet.

Security
One thing you should keep in mind when saving data is security.  Security is a lengthy topic and is outside the scope of this article.  However, I thought it best to at least remind you to keep security in mind.

You’ve already been given a link explaining nonces earlier in this tutorial.  The other resource I want to provide you with is the WordPress Codex guide on data validation.  This documentation will be your best friend when learning how to save post metadata and will provide you with the tools you’ll need for keeping your plugins/themes secure.

Bonus points to anyone who can name all of the security measures used throughout this tutorial.

Create a custom meta box
Once you’ve copied, pasted, and tested the bits of pieces of code from this tutorial, I encourage you to try out something even more complex.  If you really want to see how powerful meta boxes and post metadata can be, try doing something with a single meta key and multiple meta values for that key (it’s challenging).

I hope you’ve enjoyed the tutorial. Feel free to post questions about creating meta boxes in the comments.

(al)


© Justin Tadlock for Smashing Magazine, 2011.
]]></description>
<dc:subject>WordPress</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:86ad42024873/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:WordPress"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.bbc.co.uk/blogs/bbcinternet/2011/09/radio1_homepage_software_technical.html">
    <title>Under the Hood of the Radio 1 Homepage: the technical low-down</title>
    <dc:date>2011-09-27T14:42:24+00:00</dc:date>
    <link>http://www.bbc.co.uk/blogs/bbcinternet/2011/09/radio1_homepage_software_technical.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
Radio 1 DJ Greg James shows his love for the new homepage


Last year I took advantage of the BBC attachment scheme, where staff are released to do another job within the BBC, and went on attachment with the Radio 1 and 1Xtra Interactive team. As a developer, it was a fantastic opportunity to spend time with an amazing editorial team in one of the most vibrant corners of the BBC. I got to work on some amazing projects, such as the Live Lounge, a new mobile site and crazy things like hooking up a slot car racing set to Twitter.

During this time I got involved in a rather ambitious project: a new homepage for Radio 1 and 1Xtra. The editorial proposition laid out by Chris Johnson’s team focused on three priorities for the new homepages: the live experience, promotion and personalisation. Yasser has already described the design process, and in this blog post I’ll go under the hood to describe some of the technical aspects of achieving the vision.
Live Experience
We know that the majority of our users come to our site to listen live, so the live experience would be pivotal to the product’s success. To create a rich real-time experience harnessing the uniqueness of Radio 1 and 1Xtra’s interactivity, we’d have to bring updates to the user without a page refresh - whether that was a track being played, a message from the studio or a photo of a celebrity who’s just popped in for a chat. This was a significant technical challenge. Building on experience derived from the radio visualisation trials, we decided to use the BBC PushFeeds technology. With PushFeeds, when your browser visits the new Radio 1/1Xtra homepage it keeps a connection open to the server. When new content is published, the server is able to push a message over this connection to the browser, where it can add the content on the page without requiring a page refresh.In more technical terms, Pushfeeds is based on the open protocol XMPP PubSub and enables our servers to broadcast messages to a Javascript client in the web browser. This client uses the latest HTML 5 WebSockets technology when available but falls back to Flash on older browsers.

Promotion - from the studio to the website

In order to see this content you need to have both Javascript enabled and Flash Installed. Visit BBC Webwise for full instructions. If you're reading via RSS, you'll need to visit the blog to access this content.






Video (without sound) of administration system in action.

In order to support this real-time experience it’s crucial to have an intuitive administration system. When a DJ talks up online content on air, our producers need to be able to get it on the homepage within minutes if not seconds if we’re going to have any meaningful engagement with the audience.Core to the admin interface is a bookmarklet, a form of bookmark that instead of bookmarking a web page executes a small program. Typically implemented in Javascript, when a bookmarklet is clicked on it performs a particular action instead of just taking the browser to the bookmarked page. As you can see in the video above, the admin bookmarklet allows producers to go to the webpage containing the content they want to promote, push the bookmarklet button and immediately go to the homepage admin interface. This automatically pre-populates a form with the content details so it's ready to publish.In order to pull information out of the page it exploits the way that BBC Online has been making websites so that we can easily point at things and fetch information about a multitude of objects ranging from programmes, video and audio clips to DJs, artists and tracks. Behind the scenes the admin system uses the URL to determine the appropriate API to query so it can fetch metadata about the content and present it to producers. They are able to edit the message if necessary and then publish it, at which point it’s broadcast over PushFeeds to your browser. This streamlined process is also vital when scheduling content in advance to cater for overnight specialist shows or prerecords.


Artist info panel about "Example"


Tracks are published automatically when they’re played out of the radio music playout system. The beautiful “packshots” (album art) are taken from the Radio 1/1Xtra Chart and Playlist. We also display information about tracks’ chart and playlist history. Tracks are also matched to BBC Music using MusicBrainz identifiers. This lets the system present information about the artist, such as their biography, latest album reviews and clips.

Personalisation
Finally, we wanted to offer users a personalised view of Radio 1 and 1Xtra. Using the BBC Social services, users are able to bookmark their favourite DJs and shows. On top of that, users are able to “love” content, which is stored against their user id and allows us to track the most loved items across the sites.When a user loves some content, the homepage presents them with other content that they might like. To achieve this, we’ve built a light touch recommendation engine using the open search server Solr. Each piece of content entered via the admin system has a title and description stored in the Solr index. To return recommendations, we start with Solr’s “document to document similarity” feature on the content titles and descriptions. Depending on the source object and the results, the application then applies predefined rules to improve the quality of the recommendations that are returned. For example, when it comes to music recommendations we’ve followed the lead of the BBC Music Showcase and use data provided by The Echo Nest, a music intelligence platform, to find any content related to similar artists by keying on an artist’s MusicBrainz identitifier.Solr also powers the rich autocomplete search feature that allows users to search for content by keyword. The editorial team decided to place the personalisation features behind BBC Identity, requiring users to be signed in to select their favourite DJs and love content. The rationale is that everyone can access the content but users have to register if they want to interact with it. This has already had an impact, as can be seen in this tweet from the BBC ID team:


In summary ...
As a developer, working on the new Radio 1 and 1Xtra homepages has been a fantastic opportunity to apply technology to solve some really challenging editorial ambitions. It’s been quite a ride, and I’m really looking forwards to see how both the audience and the stations engage with what we’ve built.Patrick Sinclair is a Senior Software Engineer in Radio and Music for FM&T Programmes On Demand. Many thanks to everyone across the BBC who has contributed to the project and especially the team at Kite who did the build. 
]]></description>
<dc:subject>Radio_&amp;_Music</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:f0414656ea53/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Radio_&amp;_Music"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/inspiration/40-examples-infrared-photography/">
    <title>40 Breathtaking Examples of Infrared Photography</title>
    <dc:date>2011-09-25T10:00:00+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/inspiration/40-examples-infrared-photography/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[There are many types of art photography out there that show a new way of viewing things like infrared photography, micro and macro photography, lomography, light photography, and many others. In this article we will talk about infrared photography, a type of photography that captures the unseen beauty of nature made possible by technology.


What is Infrared Photography?
First we need to know what is infrared. Remember the saying that what you see is just an illusion? That is actually true, and that what you see is the only thing you’re ‘made’ to see. Look above you, you’ll probably see your ceiling. That is because the light that touches its surface is seen by you, called visible light. To give you an idea of the things you can’t see, think of ultraviolet, x-rays, gamma rays, infrared, microwave, and radio. These compose the electromagnetic spectrum, and only the visible light part is what we can see under naked eye.



Chart taken from Wikipedia

If you’ll take time to study the chart above you’ll be amazed at how little our eyes can see of our surroundings. We only see a portion of the world as it is, and that’s a good thing. Imagine seeing every wavelength, I think that would be like looking at an old television’s static.

So, the point here is, before you even begin infrared photography you need to have a grasp of what it is you’re doing in order to pass on the knowledge. In infrared photography, you basically take a peek into the unseeable by manipulating your tools. You can either use a standard camera or a digital camera, but alterations and post-processing is needed to achieve a great photo.

In a sense, infrared photography is an attempt to view the world in a different manner, similar to using a microscope to see little life forms or using an x-ray to see through things. Venturing through Flickr I’ve been awed by the amazing world out there that we can’t see, but now can due to advances in technology.

Before the introduction of color photography, photographers used filters and black and white negatives to manipulate the final result, especially when they wanted to achieve infrared photography.

I’m not a photographer nor do I claim I know how to do infrared photography, I am simply so amazed by the process that I thought I’d share this with you. I did some research for people who want to enter infrared photography and found this very in-depth guide by Rob about infrared photography. Tutorial includes how to setup everything up to post-processing.  Here is his Flickr page.

Examples of Infrared Photography
Take note that you can buy their prints if you happen to fall in love with them! Don’t forget to click on the links for more IR photographs.

Straightforward Path Infrared by ilimel


Orchard Infrared II by dingodave


iNfraRed series – terengganu 1 by shin-ex


Barn in Infrared by Pak T


The gilded River by Anrold


Barbados Infrared by Infrared-Land


Arte moderno en IR by Goku Abreu


Cloudy Day by RoeiG


Monroe Arts Center-IR by Marc Kohlbauer


Warm Feelings IR by caithness155


Zen Dream by RoieG


Butterfly by gary99099


The Secret Garden by failingjune


Ecco’s Horns by Djinn Photography


Infrared Trees by Danny Valentine


Infrared HDR Lake by lorni3


El Torito at Pine Beach by RTsan


The Golden Path IR by caithness155


Mount Stewart by Paul Hanley


Lake Cumberland Infrared by GothicAmethyst


Caterpillar by smurfzombi


Infrared Sunrise by konczy77


Japanese Road by Enkased


Itzel by The-Definition


Summer or Winter by Litz Sanz


Untitled by d3sign


Niagara Falls by Kofi Kumi


Summer time at Upton by Dave Dupere


Watermane by boomslice


Fantasia di Primavera by Giacomo Cattaruzzi


Springtime III by blackdaddy


Horses Dreams by MichiLauke


La tour by Anrold


Sydney Opera House by  La-Vita-a-Bella


Midnight Palace by 32tsunami


Bale IR by BilSign


It’s a Frog II by  tlbendele


The Old Man by Gwarf


Pano Bramhall Park 1 by Okavanga


Le vieux moulin by Anrold


Are you into Infrared Photography?
Feel free to post the link to your portfolio so that we can enjoy them too!
]]></description>
<dc:subject>Inspiration Photography art_photography infrared_photography</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:7662f0691492/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Inspiration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Photography"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:art_photography"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:infrared_photography"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://adactio.com/journal/4866/">
    <title>I, Interface</title>
    <dc:date>2011-09-19T14:20:37+00:00</dc:date>
    <link>http://adactio.com/journal/4866/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Asimov’s three laws of robotics, though currently fictional, are an excellent set of design principles:



  
  A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.
  A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
  


One could easily imagine a similar set of laws being applied to field of user experience and interface design:



  
  An interface may not injure a user or, through inaction, allow a user to come to harm.
  An interface must obey any orders given to it by users, except where such orders would conflict with the First Law.
  An interface must protect its own existence as long as such protection does not conflict with the First or Second Law.
  


Okay, that last one’s a bit of a stretch but you get the idea.


In his later works Asimov added the zeroth law that supersedes the initial three laws:




A robot may not harm humanity, or, by inaction, allow humanity to come to harm.



I think that this can also apply to user experience and interface design.


Take the password anti-pattern (please!). On the level of an individual site, it could be considered a benefit to the current user, allowing them to quickly and easily hand over lots of information about their contacts. But taken on the wider level, it teaches people that it’s okay to hand over their email password to third-party sites. The net result of reinforcing that behaviour is definitely not good for the web as a whole.


I’m proposing a zeroth law of user experience that goes beyond the existing paradigm of user-centred design:




An interface may not harm the web, or, by inaction, allow the web to come to harm.





Tagged with
ux
interface
sci-fi
robotics
cybernetics

]]></description>
<dc:subject>ux interface sci-fi robotics cybernetics</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:ebc1afed7b22/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:ux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:interface"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:sci-fi"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:robotics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:cybernetics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://kinkyhalo.com/307">
    <title>Hand Jobs And Hard Fucks, Part 2 « Kinky Halo</title>
    <dc:date>2011-08-20T20:46:31+00:00</dc:date>
    <link>http://kinkyhalo.com/307</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:edfcc133bd8f/</dc:identifier>
</item>
<item rdf:about="http://feedproxy.google.com/~r/LifeHack/~3/nZUa8q8E5S8/grain-free-15-tips-for-eating-ancestrally.html">
    <title>Grain Free: 15 Tips for Eating Ancestrally</title>
    <dc:date>2011-08-18T16:00:26+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/LifeHack/~3/nZUa8q8E5S8/grain-free-15-tips-for-eating-ancestrally.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
 As a food lover who writes about her passion for a living, I often get asked how I manage to stay slim, given the nature of my work. Usually I just smile and shrug and tell them that I’m into running. And that seems to keep them happy. But the thing is I used to struggle with my weight, just like everybody else.

Then late last year, I read The Paleo Solution by Robb Wolf and decided to try eating ancestrally. Even after a few weeks I felt I was heading in the right direction. While I didn’t actually lose weight, my body shape started to change. My waistline became more slender – exactly what I was hoping for.

Paleo, primal, slow carb or ancestral eating, whatever you call it, there are many benefits of eating grain-free. From improving your blood chemistry, to losing weight, to increasing your energy levels, to improving your sleep and more. It’s almost been 9 months since I started eating grain-free. I’m finally in a place where I’m happy with my weight and I’m really enjoying what I eat. I’m running about one third of the distance I was last year. No more pounding the pavement to make up for what I ate.

But the best thing has been discovering that it’s much easier to ditch grains than you would think. In most cases there is a vegetable which fills the place of your bread or pasta or rice. And often they taste just as good, if not better than their grain equivalent.

So today I wanted to share a few tips for eating ancestrally. Enjoy!


Have eggs for breakfast instead of cereal.
Eggs are a brilliant source of protein that keeps you feeling full much longer than a bowl of cereal ever will. Still concerned about cholesterol? Have a look at 7 reasons you should eat eggs for breakfast.

Grate raw cauliflower instead of steamed rice.
A recent discovery, I’m just loving my new grain-free accompaniment to curries and stir fries. Just get raw cauliflower and grate it. Instant grain-free ‘rice’. And the brilliant thing it that it’s super quick if you get your food processor to do the hard yards. No more gluggy rice to worry about.


Zucchini your noodles.
For an alternative to spaghetti or other long pasta, roast some finely sliced zucchini (courgettes). And serve with your favorite pasta sauce.


Carotti your spaghetti. Shave a carrot or two into ribbons with a vegetable peeler and then simmer until tender. Presto! Orange ‘spaghetti‘.
Make thin omelets instead of pizza bases.
Pizza can be difficult to go without. Try making a thin egg omelet in your non-stick pan and topping with your favorite pizza topping and popping under an overhead grill.

Or try a meatza
Something I’m yet to make myself. Hard core paleo fans replace their pizza bases with a big flat disc of ground beef.

Replace flour with almond meal (or other ground nuts).
This only works for some situations, like using flour or breadcrumbs to coat meat. Or in baked goods.

Use pureed cauliflower instead of polenta.
Pureed cooked cauliflower is a great alternative to soft polenta or corn meal. 

Try lettuce wraps instead of bread.
For those who love their sandwiches, try washed lettuce – iceberg works really well – to wrap your favorite fillings. Think sang choi bau with so many possibilities. Just remember that lettuce isn’t as satisfying as bread so you’ll need to make your fillings more substantial.

Serve your burgers without the bun.
Let’s face it. The best part of the burger is the meat and the sauce. Just increase your burger size and serve it without the bun.

Or try a mushroom burger instead.
Just roast or grill two large field or portabello mushrooms until tender. Then use these exactly like you’d use a hamburger bun.

Salads or soups not sandwiches.
If sandwiches are your default ‘healthy’ lunch, just switch to a salad or soup. If you’re used to making your own lunch, it doesn’t take any more time to make a salad. Just keep the dressing in a separate container to add just before you eat.

Use chocolate for sweet treats.
For those with a sweet tooth, I know a life without pastries and cakes can seem a little dull (see point 15). But then there’s chocolate. Start exploring the wonderful world of dark chocolates, preferably with a high (60-70%) cocoa solids content.

Wine not beer.
If you enjoy a drink or two, going grain free doesn’t mean you need to get on the wagon. Wine is not only grain free, it is lower in carbs than beer. It’s also a source of antioxidants. Cheers!

100% compliance isn’t required.
While coeliacs are unable to tolerate even the tiniest amount of gluten, most people will still see the benefits of going grain-free even without 100% compliance. I tend to have one day a week where I’m indulging in sourdough bread and cookies which staves off any cravings the rest of the week. Later is much easier to live with than never.




‘Carotti’ Bolognese Recipe
serves 2+ 

This is my minimalist version of a beef ragu or bolognese sauce. The secret is in the butter. Feel free to substitute your own favorite pasta sauce.

450g (1lb) minced (ground) beef
3 cloves garlic, chopped
2 cans tomatoes (400g / 14oz)
large knob butter
2 medium carrots


Heat a little olive oil in a large frying pan and cook beef and garlic, stirring every now and then for about 5 minutes or until well browned.
Add tomato and simmer for about 15 minutes or until reduced and good saucy.
Meanwhile bring a medium saucepan of salted water to the boil. Shave the carrots into ribbons using a vegetable peeler.
Cook carrots for 3 – 5 minutes or until al dente like cooked pasta.Drain.
Toss butter into the beef sauce and season.
Return the carrot to the saucepan and stir in some beef sauce. Then divide between plates and top with more sauce

       
]]></description>
<dc:subject>Lifestyle</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:3eef529c9012/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Lifestyle"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.lifehack.org/articles/lifestyle/grain-free-15-tips-for-eating-ancestrally.html">
    <title>Grain Free: 15 Tips for Eating Ancestrally</title>
    <dc:date>2011-08-18T16:00:26+00:00</dc:date>
    <link>http://www.lifehack.org/articles/lifestyle/grain-free-15-tips-for-eating-ancestrally.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
 As a food lover who writes about her passion for a living, I often get asked how I manage to stay slim, given the nature of my work. Usually I just smile and shrug and tell them that I’m into running. And that seems to keep them happy. But the thing is I used to struggle with my weight, just like everybody else.

Then late last year, I read The Paleo Solution by Robb Wolf and decided to try eating ancestrally. Even after a few weeks I felt I was heading in the right direction. While I didn’t actually lose weight, my body shape started to change. My waistline became more slender – exactly what I was hoping for.

Paleo, primal, slow carb or ancestral eating, whatever you call it, there are many benefits of eating grain-free. From improving your blood chemistry, to losing weight, to increasing your energy levels, to improving your sleep and more. It’s almost been 9 months since I started eating grain-free. I’m finally in a place where I’m happy with my weight and I’m really enjoying what I eat. I’m running about one third of the distance I was last year. No more pounding the pavement to make up for what I ate.

But the best thing has been discovering that it’s much easier to ditch grains than you would think. In most cases there is a vegetable which fills the place of your bread or pasta or rice. And often they taste just as good, if not better than their grain equivalent.

So today I wanted to share a few tips for eating ancestrally. Enjoy!


Have eggs for breakfast instead of cereal.
Eggs are a brilliant source of protein that keeps you feeling full much longer than a bowl of cereal ever will. Still concerned about cholesterol? Have a look at 7 reasons you should eat eggs for breakfast.

Grate raw cauliflower instead of steamed rice.
A recent discovery, I’m just loving my new grain-free accompaniment to curries and stir fries. Just get raw cauliflower and grate it. Instant grain-free ‘rice’. And the brilliant thing it that it’s super quick if you get your food processor to do the hard yards. No more gluggy rice to worry about.


Zucchini your noodles.
For an alternative to spaghetti or other long pasta, roast some finely sliced zucchini (courgettes). And serve with your favorite pasta sauce.


Carotti your spaghetti. Shave a carrot or two into ribbons with a vegetable peeler and then simmer until tender. Presto! Orange ‘spaghetti‘.
Make thin omelets instead of pizza bases.
Pizza can be difficult to go without. Try making a thin egg omelet in your non-stick pan and topping with your favorite pizza topping and popping under an overhead grill.

Or try a meatza
Something I’m yet to make myself. Hard core paleo fans replace their pizza bases with a big flat disc of ground beef.

Replace flour with almond meal (or other ground nuts).
This only works for some situations, like using flour or breadcrumbs to coat meat. Or in baked goods.

Use pureed cauliflower instead of polenta.
Pureed cooked cauliflower is a great alternative to soft polenta or corn meal. 

Try lettuce wraps instead of bread.
For those who love their sandwiches, try washed lettuce – iceberg works really well – to wrap your favorite fillings. Think sang choi bau with so many possibilities. Just remember that lettuce isn’t as satisfying as bread so you’ll need to make your fillings more substantial.

Serve your burgers without the bun.
Let’s face it. The best part of the burger is the meat and the sauce. Just increase your burger size and serve it without the bun.

Or try a mushroom burger instead.
Just roast or grill two large field or portabello mushrooms until tender. Then use these exactly like you’d use a hamburger bun.

Salads or soups not sandwiches.
If sandwiches are your default ‘healthy’ lunch, just switch to a salad or soup. If you’re used to making your own lunch, it doesn’t take any more time to make a salad. Just keep the dressing in a separate container to add just before you eat.

Use chocolate for sweet treats.
For those with a sweet tooth, I know a life without pastries and cakes can seem a little dull (see point 15). But then there’s chocolate. Start exploring the wonderful world of dark chocolates, preferably with a high (60-70%) cocoa solids content.

Wine not beer.
If you enjoy a drink or two, going grain free doesn’t mean you need to get on the wagon. Wine is not only grain free, it is lower in carbs than beer. It’s also a source of antioxidants. Cheers!

100% compliance isn’t required.
While coeliacs are unable to tolerate even the tiniest amount of gluten, most people will still see the benefits of going grain-free even without 100% compliance. I tend to have one day a week where I’m indulging in sourdough bread and cookies which staves off any cravings the rest of the week. Later is much easier to live with than never.




‘Carotti’ Bolognese Recipe
serves 2+ 

This is my minimalist version of a beef ragu or bolognese sauce. The secret is in the butter. Feel free to substitute your own favorite pasta sauce.

450g (1lb) minced (ground) beef
3 cloves garlic, chopped
2 cans tomatoes (400g / 14oz)
large knob butter
2 medium carrots


Heat a little olive oil in a large frying pan and cook beef and garlic, stirring every now and then for about 5 minutes or until well browned.
Add tomato and simmer for about 15 minutes or until reduced and good saucy.
Meanwhile bring a medium saucepan of salted water to the boil. Shave the carrots into ribbons using a vegetable peeler.
Cook carrots for 3 – 5 minutes or until al dente like cooked pasta.Drain.
Toss butter into the beef sauce and season.
Return the carrot to the saucepan and stir in some beef sauce. Then divide between plates and top with more sauce

       
]]></description>
<dc:subject>Lifestyle</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:a12e1be94453/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Lifestyle"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.uie.com/brainsparks/2011/08/10/materials-from-the-web-app-masters-2011-tour-are-now-available/">
    <title>Materials from the Web App Masters 2011 Tour Are Now Available</title>
    <dc:date>2011-08-10T14:46:58+00:00</dc:date>
    <link>http://www.uie.com/brainsparks/2011/08/10/materials-from-the-web-app-masters-2011-tour-are-now-available/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[If you weren’t able to attend this year’s Web App Masters Tour, we have the next best thing for you and your organization: Web App Masters 2011 OnDemand.

This is your opportunity to hear all 12 Masters from the Tour give their 75-minute presentations. The OnDemand collection consists of 15 hours of audio recordings, Q&A from the audience, and the Masters presentation decks. It’s a toolkit that you can share with everyone in your office. You can access it any time you want, as often as you want.

Web App Masters OnDemand covers these topics

Constructing sites for active communities
Building native device vs. mobile browser-based applications
Producing beautiful data visualizations
Using data for design decisions
Integrating infographics and games to engage your users
Designing for mobile first
Handling rich interaction techniques on multiple devices & platforms
Looking at AARP’s journey into web-based applications
Conducting successful kickoff meetings
Finding users’ deepest needs and desires
Designing Salesforce.com’s Cloud Apps
Creating great design principles for your team
Ensuring a positive user experience with mobile

Learn more about Web App Masters OnDemand.

With Web App Masters 2011 OnDemand you’ll get 

Fifteen hours of audio from 12 Masters
The best of the Q&A from all the tour stops
Presentation slides from all 12 talks
Unlimited access to the material any time you want it, as often as you want it

Order Web App Masters 2011 OnDemand now
No pre-ordering and no waiting for a disc. With just a few clicks, you can have Web App Masters OnDemand at your fingertips and start to improve your web apps today.

Purchase Web App Masters OnDemand by August 30, 2011, for $179. After the 30th, the price
increases to $229.

Now go get your bundle of goodness.
]]></description>
<dc:subject>agile Design_Patterns Design_Principles Design_Teams Emotional_Engagement mobile Pattern_Libraries User_Engagement user_research Web_App_Masters_Tour Aviva_Rosenstein Bill_Scott data_visualization Josh_Clark Julie_Zhuo Kate_Brigham._web_apps luke_wroblewski Mike_Lee noah_iliinsky Stephen_Anderson Steve_Portigal WAMT Web_App_Masters_Tour_2011</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:800350f9cb87/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:agile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Principles"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Teams"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Emotional_Engagement"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:mobile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Pattern_Libraries"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:User_Engagement"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:user_research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_App_Masters_Tour"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Aviva_Rosenstein"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Bill_Scott"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:data_visualization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Josh_Clark"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Julie_Zhuo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Kate_Brigham._web_apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:luke_wroblewski"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Mike_Lee"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:noah_iliinsky"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Stephen_Anderson"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Steve_Portigal"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:WAMT"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_App_Masters_Tour_2011"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.heatherssecretplace.com/modules/news/">
    <title>Heathers Secret Sex Stories Blog</title>
    <dc:date>2011-08-09T02:34:56+00:00</dc:date>
    <link>http://www.heatherssecretplace.com/modules/news/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:c9d4bae12e8b/</dc:identifier>
</item>
<item rdf:about="http://www.1stwebdesigner.com/design/ancient-design-practices-to-avoid-2/">
    <title>Ancient Web Design Practices that Beginners Should Avoid Part 2</title>
    <dc:date>2011-08-06T10:00:45+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/design/ancient-design-practices-to-avoid-2/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Here comes part two of bad design practices that web designers should avoid. Part one mostly talked about the errors designers and developers make, here in part two we will also talk about the problem with what “webmasters” or website owners do to sully their names.

To all website owners out there who are wondering what’s wrong with their website, I suggest you read this (and part one) and learn from the grave mistakes of others. This is also good for people who are thinking of creating their own website. Be sure to read the comments because, very often, the gems are hidden there!



Too Much Pagination


Have you visited Cracked.com lately? Their articles are paginated, but that’s a good type of pagination since you’ll rarely see it exceed two. The problem with other websites is that they’re too concerned with page views that they tend to chop a 1000–word article into five or ten parts (seriously, I saw one news website do this)! Needless to say, I never visited the website again. This might not be the designer or developer’s fault, but internet entrepreneurs should be educated on how to deliver content well.

Hidden Text and Links
You have text in your navigation and content partly because of SEO, right? As mentioned in Part 1 by our readers, using images for navigation is okay, but how will search engines crawl them? Answer: “text-indent: -9999px” (it’s over 9000!), or hiding the text using CSS.

Now, this is something very controversial. In my search for free, and good, WordPress themes I stumbled upon this article by Siobhan which talks about hidden “spam” links on many free WordPress themes. These free themes are bad for SEO, Google has a policy about hidden text and links which states that intentionally hiding the text/link behind an object or out of the screen’s view may be cause for the removal of the site on Google’s search results page.

Click to read more about Google’s take on Hidden text and links.

In-line Styling
To demonstrate the evils of in-line styles and what damage they can do, here is James’ comment:



Again, this was pointed out in the previous part. Instead of using an external CSS, some insist on styling on the spot –  which I am very guilty of! While the appearance will clearly be the same, this is still a bad practice because as the website grows, so does the styling for everything. While using an external master sheet may seem to be a daunting task for some, the ease of access to it is far superior than navigating through a series of HTML tags looking for the thing you need to change.

Again, stop in-line styling and create an external CSS. It’s also a good way to recycle codes, right?

Too many Social Media buttons


(website’s name is intentionally withheld for my safety; some are highlighted look below)

Competition is high, we understand, but having 10 social media buttons at the end of each article? Seriously? Today, people are content with Facebook, Twitter, Google+, and sharing via e-mail (share via e-mail?) so let’s keep it at that. No need to add seven or ten buttons because 1) it doesn’t look good because it seems like you’re hogging, and 2) it’s not pleasing to the eyes.

Splash Pages and Pop-ups
Well, it actually depends. If it’s an 800 x 600 advertisement I probably won’t visit again. 1stwebdesigner is also guilty of this, and I’m pointing this out because I’ve seen comments  and e-mails jeering the pop-up. The good news is, we will be limiting its appearance and probably remove it totally. For that, we’re sorry for any inconvenience it might have caused you. But, again, blocking the view is never a good practice, save for a limited-time campaign.

While I was looking for a cheap hosting company for my website there was this hosting company that won’t let me get out of their website. The first click on exit button there was a JavaScript pop-up telling me that they’ll offer me a 50% discount. What?

Also, I’m sure you’ve seen this “Share” button somewhere. I really hate this, and I’m sure many of you will feel the same. It pops out whenever the cursor is hovered over it and stays for a few seconds.

This will be my second time calling names. GooglePlusAnswers.com is a whole new level of splash/pop-up/irritating.



Why must I share or like or tweet or +1 your website or wait 30 seconds before you grant me access? Sadly, it does not stop there. If you don’t want to share, you’ll keep on seeing the same thing all over the website.

This lame stunt also happened during Facebook’s debut. “Like this to unlock content” my a–-!

Dark Background and Light Font Color


To demonstrate, click the image to open the website and read a line or two. After reading, open Google. It buuuurns!

Perhaps the greatest affront a designer can do to the world is…
…not striving to learn new techniques when the whole world is changing rapidly. As a designer, it is your duty to go with the flow, to commit necessary changes when the world demands it. Part of it is to educate those who are below you so that the spread of good practice will propagate. If there is enough reason to believe that your design is not doing any good, instead of waiting for it to work, why not find a different method to make things work?

So, what say you? I’m pretty sure I’ve missed quite a lot of bad practices, so fire them all below!

Up Next
Next time we will talk about the small things that web designers do which make people love them. Small things mean a lot, right? For instance, a simple horizontal rule to separate content smoothly, usability options for challenged individuals, and many more. Stay tuned!
]]></description>
<dc:subject>Tips Web_Design bad_design Development website worst_practices</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:06f40aa17334/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:bad_design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Development"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:website"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:worst_practices"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://feedproxy.google.com/~r/OfficialGmailBlog/~3/JUiubnrJSuY/gmail-snooze-with-apps-script.html">
    <title>Gmail Snooze with Apps Script</title>
    <dc:date>2011-07-29T19:48:00+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/OfficialGmailBlog/~3/JUiubnrJSuY/gmail-snooze-with-apps-script.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Posted by Corey Goldfeder, Software Engineer

Editor’s Note: For a more technical description, see the Google Apps Developer Blog

At Google, we all use email very heavily -- for communicating with other Googlers, for task management, and to mail around funny pictures of kittens. Because of the volume of email we all deal with, a lot of Googlers subscribe to the “inbox zero” philosophy where we try to keep our inboxes empty except for the messages we currently need to deal with. 

What is Gmail Snooze?
One feature that some of us really wanted was for Gmail to let you “snooze” an email. Snoozing means archiving an email for now, but having it automatically reappear in the inbox at some specified time in the future. With Apps Script you can extend Gmail to add this functionality and a lot more yourself. 



How to set it up
Even if you don't know how to write a script, it's pretty simple. Go to Google Docs and create a new spreadsheet, then choose "Script Editor" from the "Tools" menu. Paste in the following code:

var MARK_UNREAD = false;
var ADD_UNSNOOZED_LABEL = false;

function getLabelName(i) {
  return "Snooze/Snooze " + i + " days";
}

function setup() {
  // Create the labels we’ll need for snoozing
  GmailApp.createLabel("Snooze");
  for (var i = 1; i <= 7; ++i) {
    GmailApp.createLabel(getLabelName(i));
  }
  if (ADD_UNSNOOZED_LABEL) {
    GmailApp.createLabel("Unsnoozed");
  }
}

function moveSnoozes() {
  var oldLabel, newLabel, page;
  for (var i = 1; i <= 7; ++i) {
    newLabel = oldLabel;
    oldLabel = GmailApp.getUserLabelByName(getLabelName(i));
    page = null;
    // Get threads in "pages" of 100 at a time
    while(!page || page.length == 100) {
      page = oldLabel.getThreads(0, 100);
      if (page.length > 0) {
        if (newLabel) {
          // Move the threads into "today’s" label
          newLabel.addToThreads(page);
        } else {
          // Unless it’s time to unsnooze it
          GmailApp.moveThreadsToInbox(page);
          if (MARK_UNREAD) {
            GmailApp.markThreadsUnread(page);
          }
          if (ADD_UNSNOOZED_LABEL) {
            GmailApp.getUserLabelByName("Unsnoozed")
              .addToThreads(page);
          }          
        }     
        // Move the threads out of "yesterday’s" label
        oldLabel.removeFromThreads(page);
      }  
    }
  }
}
Then click the “Save” button and give it a name. In the dropdown labeled "Select a function to run," choose "setup" and click the blue run arrow to the left of it. This will ask you to authorize the script, and will create the necessary labels in your Gmail. Then go to the "Triggers" menu and choose "current script's triggers." Click the link to set up a new trigger, choosing the "moveSnoozes" function, a "time-driven" event, "day timer," and then "midnight to 1am." Click save and you’re done.

Using the Snooze Label in Gmail
To "snooze" a thread, use Gmail’s “Move To” button to move the thread into the "Snooze for X days" label and archive it. Every night, threads will move up through one day of the queue, and at the appointed number of days they will reappear in your inbox, unarchived.

Because this is an Apps Script, you can edit the code any way you like. If you’d like different snooze times or for unsnoozed messages to get starred, you can easily change the code. And if you have an even better idea for how to use Apps Script to improve Gmail, you can post it to our Gallery (Script Editor > Share > Publish Project) to share with the world.
 
]]></description>
<dc:subject>googlenew Google_Apps_Blog</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:58296ef1a7c0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:googlenew"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Google_Apps_Blog"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://xkcd.com/931/">
    <title>Lanes</title>
    <dc:date>2011-07-29T00:00:00+00:00</dc:date>
    <link>http://xkcd.com/931/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:c5637bcef623/</dc:identifier>
</item>
<item rdf:about="http://boagworld.com/reviews/how-one-wordpress-plugin-can-replace-many/">
    <title>How one WordPress plugin can replace many</title>
    <dc:date>2011-07-22T11:56:19+00:00</dc:date>
    <link>http://boagworld.com/reviews/how-one-wordpress-plugin-can-replace-many/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[It was Ryan Taylor who first pointed out my problem (one of them at least). I’m obsession with WordPress Plugins.

Whenever I get stuck with a problem on WordPress, I turn to plugins as the answer. However, the more plugins you add the more likely one will be badly coded, not updated or clash with another. In short, too many plugins is far from ideal.

As I have worked on the new boagworld.com website I came up against three little things that (with my limited experience) I didn’t immediately know how to code in PHP. Previously I would have looked for three plugins to solve these problems. Instead, I discovered one super flexible plugin that solved all three and a lot more besides.

More Fields
The plugin in question is More Fields and I would highly recommend it.

Essentially what the plugin does is put a nice UI over the top of custom fields. However, probably the best way to explain its benefits is to show the three places I am using it on the upcoming boagworld.com website. These three areas are…


Recommended tweets
Featured Posts
Custom Design

Let’s start with recommended tweets.

Recommended tweets
While wireframing I came up with the idea of putting a tweet box at the bottom of each post to allow people to quickly tweet their thoughts on the post.

My problem was that a blank box with the article URL wasn’t very inspiring. Although I could have filled it with a generic tweet like ‘Check out this great article’ it would be nice to have a custom message on a per post basis. That way if I added something tweet-able into a post I could pre-populate the twitter box with it.



I could have used a custom field for this but bearing in mind my predisposition towards throwing a plugin at the problem I decided to go looking for one. That was when I discovered More Fields.

This allowed me to add a nicely formatted UI element into the edit page that allowed me to enter my custom twitter message.



Then all I needed to do was call that field from within my template.


<script type="text/javascript">// <![CDATA[
twttr.anywhere(onAnywhereLoad);
function onAnywhereLoad(twitter) {
twitter("#tweetbox").tweetBox({
label: 'Twitter box',
defaultContent: "<?php
if (get_meta('tweetText') == '')
    echo "Found this great post on @boagworld";
else
        meta('tweetText'); ?> - <?php echo wp_get_shortlink(); ?> ",
height: 50,
width: 480,
});
};
// ]]></script>

The above code uses Twitter Anywhere to call the box but pre-populates it with my custom message if one exists using meta(‘tweetText’). If it does not exist it fills the box with a generic message instead.

Once I had set up More Fields it occurred to me it would allow me to get rid of a plugin I had previously installed; featured posts.

Featured post
You can also use More Fields to feature a specific post. I am using it to display features both on my homepage and on my category listing pages.

All you need to do is add a check box field and then return posts with the box checked in your template.



The code for identifying featured posts is a simple modified WordPress loop.


 'featured', 'meta_value' => 1, 'posts_per_page' => 1, 'post_type' => array('post','episodes') ) ); ?>


Finally, I also realised I could use More Fields to solve my biggest problem, custom post designs.

Custom Design
Once in a while I want to publish a post with a slightly different design. The design is unique to the post and so a custom post type isn’t really the right choice. What I really need is the ability to add CSS on a per post basis.

One way of doing this would be using the unique post id attached to the body tag. The problem with this is that your CSS file would become bloated with stylings that most user may never need (as they aren’t visiting the associated pages).

The answer was to allow me to post inline styles associated with the specific post. Fortunately More Fields made that easy. I simply added a custom text box into the post and then called that from within my template. Job done.



Other alternatives
My wonderful and all-knowing twitter follows have told me about an alternative which is possibly even better. That is Magic Fields.

I have had a look at Magic Fields and it is impressive. It looks both more flexible and more powerful than More Fields. However, as with anything, with this extra power comes complexity.

In my case and I suspect many others, the functionality provided by More Fields is probably be more than enough. I am a simple man and so generally prefer the simplest solution that does the job!

That said, if you have worked with either or both plugins I would love to hear your comments below.



Thanks for subscribing to Boagworld; a web design blog, forum and podcast run by Paul Boag and friends.


If you are new to my feed may I recommend also:



Following me on Twitter
Checking out my get started guide
Having a look through the archive of posts
Subscribing to the podcast
Visiting the forum
Maybe even hiring me!




   
]]></description>
<dc:subject>Reviews</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d731f4441e55/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Reviews"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://xkcd.com/927/">
    <title>Standards</title>
    <dc:date>2011-07-20T00:00:00+00:00</dc:date>
    <link>http://xkcd.com/927/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:f2b9e196ce70/</dc:identifier>
</item>
<item rdf:about="http://freelanceswitch.com/product-reviews/efficient-tweeting/">
    <title>10 Apps for More Efficient Tweeting</title>
    <dc:date>2011-07-12T14:00:54+00:00</dc:date>
    <link>http://freelanceswitch.com/product-reviews/efficient-tweeting/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
Advertise here with BSA
As Twitter continues to grow at an incredible pace each day, the importance of the platform grows with it. Developing a strong social media presence and growing your network of followers demands being active on Twitter. Fortunately, there exist many tools out there that assist us in making our life easier and more efficient on Twitter. 

Here are ten tools that will increase your efficiency, while allowing you to retain your genuine personality when tweeting.

1. Buffer – Never Flood Your Followers Again
Buffer

Full Disclosure: I work on Buffer.

Buffer is an App that allows you to tweet more of the great content you come across each day, without overwhelming your followers. Via one of the browser extensions (Chrome, Firefox, Safari) you can “Buffer” any article as a Tweet that you come across. Instead of being posted immediately, all these tweets will be tweeted well spaced out over the day. 

Best bit: To understand more about what your followers like, you will receive analytics about clicks, retweets and reach for every Tweet Buffered.



2. StrawberryJ.am – Read top news from Twitter only
StrawberryJ.am

Another very innovative new appearance is an app called Strawberryj.am. The App takes all Tweets from your stream and provides you with only the most relevant ones to read. It does that based on most mentioned links from your friends. This means all clutter not providing value for your timeline is filtered out. You can see at one glance which news are most discussed and retweet interesting ones right from there.

Best bit: The best part here is the handy daily digest update, which sends top news straight to your inbox.

3. TwentyFeet – Google Analytics for your Twitter account
TwentyFeet

TwentyFeet is a very handy analytics App, allowing you to track all happenings related to your Twitter account. The App shows you easy to understand graphs of your mentions, retweets and follower increases over time. It automatically notifies you with any abnormal changes in these stats, so you can check on whether your Twitter efforts are actually making an impact.

Best bit: It comes in very handy that you can also connect your Facebook and Youtube accounts in order to track analytics from these social networks too.

4. KeepStream – Create beautiful collections of Tweets
KeepStream

KeepStream basically does what it says. You can take Tweets from your timeline and create a specific collection with them. This allows you to archive some of your favorite tweets, or simply create a transcript form a Twitterchat or conference you have been following. Conveniently, the App creates a preview of the links in Tweets and also offers you easy ways to order the tweets for your needs.

Best bit: A great feature is that the App offers you to embed a collection as a blog post or publish it as a public page you can share and comment on.

5. Proxlet – Mute Twitter Noise
Proxlet

Proxlet is a fantastic App that allows you to filter out unnecessary Tweets from your native Twitter stream. To me, this means I can get rid of paper.li, Foursquare and other services showing up in my timeline, which I don’t consider adding enough value. You can also mute individual users or hashtags, which is helpful if there is a conference or Twitterchat going on that you don’t want to be part of.

Best bit: On top of being available for Twitter.com, the App also ties in with other Twitter clients, such as TweetDeck, Twitter for iPhone and Twitdroyd.

6. Commun.it – Track your network
Commun.it

This is another very innovative discovery I have started to use recently. The App shows you which people amongst your followers are the most engaged, which are supporters and which are influencers. You can then go and specifically engage more with these members or extend your network beyond your core followers.

Best bit: The impressive part is that the App also suggests you leads, based on the links in your bio, tracking Tweets from people mentioning there, which aren’t following you.

7. Triberr – The Reach multiplier for Bloggers
Triberr

This is an App that can come in very handy if you are maintaining an active blog. You can group together with other bloggers and if anyone of you publishes a new post, all members will retweet it automatically. In order to prevent Spam, the platform is invite only, but well worth checking out. You can create multiple groups, or tribes as they are called, and also get to know others relevant to your niche.

Best bit: What I like most is the fact that the App provides you with complete stats on the amount of clicks you are getting from each of your fellow group members, so you can refine tribes easily.

8. Tweepi – Easy unfollowing of unwanted followers
Tweepi

In order to get a great discussion going, it can often happen that we start following people without much consideration. If we realize later that there are now a few people that aren’t really suited for following, it can be a pain to get rid of them. With Tweepi, you can easily see which people you are following are inactive, not following you back, or simply tweeting too much. You can unfollow them with just a few clicks.

Best bit: I found it very handy to see that the App also offers you the functionality to reciprocate following people you haven’t been following.

9. Twylah – Fanpages for your Twitter Account
Twylah

This is a new App that I soon found helpful after using it for a few weeks. If you sign up, Twylah will create a customized fanpage for you, displaying your tweets according to topics you most Tweet about. For a more engaged experience, the App shows previews of links, including videos and slideshares, as well as pictures on your Twylah page. It is a fantastic place to point others towards, if they want to see what you are most tweeting about.

Best bit: There is an amazing functionality called “Power Tweet” that will enable you to post special preview links of your tweets, that are surrounded by lots of highly relevant related content.

10. Tweriod – Start Tweeting when others listen
Tweriod

Tweriod is an App that analyses your Tweeting and in return gives you two simple graphs, suggesting the best time to Tweet. While it isn’t the first App providing you with optimized Tweeting times, it is the one with the most thought-out algorithm to get to results for you. The App takes into account both the impact of your past tweets and also the ones from all your followers.
Best bit: What I like best is the convenience of the service, you simple sign in with Twitter and the App then DM’s you the results once the report is finished.

Organizing Your Twitter Life
Making use of these Apps has helped me to organize my Twitter life in a less cluttered way. The fact that many of thee apps aim to facilitate your workflow with great design is a big plus on the usability.

How about you? Do you think some of these Apps could be useful for you too? I would love to hear your thoughts about them below.

     

]]></description>
<dc:subject>Product_Reviews social_media twitter</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:6fdb4fc2749e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Product_Reviews"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:social_media"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:twitter"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://feedproxy.google.com/~r/37signals/beMH/~3/f6Y0tiZwLCw/2945-marketing-to-your-own-team">
    <title>Marketing to your own team</title>
    <dc:date>2011-06-13T16:42:00+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/37signals/beMH/~3/f6Y0tiZwLCw/2945-marketing-to-your-own-team</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[When you start cutting corners, customers can’t always tell. But employees usually can. And that can be just as bad.



In this Mixergy interview, Jim McCarthy, the co-founder of Goldstar, talks about his days working at Noah’s Bagels and recalls a corner cutting moment that revealed a deeper change in the culture there:





The culture of Noah’s began to change…There was a point where the management of Noah’s said, “Only 7% of our customers keep kosher.” But having kosher in the store means we can’t have a ham sandwich or even a turkey and cheese sandwich. So the logic went, “OK. If we lose the 7%, because we’re not kosher, we’ll replace it by selling these other things.”



I remember at the time thinking, “That’s not how it is going to work,” and saying, “That’s now how it is going to work,” and it did not, in fact work. Because you’ve taken the 7% of people who love you, think of you in a way that brings goose bumps to them, and told them to, “Go to hell.” You’ve told them to leave your store.



And more importantly, you’ve said to the employees, “Remember how we used to stand for something other than just selling bagels and cream cheese? We don’t stand for that any more.”





That type of “employees will notice even if customers don’t” thinking came in part from a story McCarthy had heard about Starbucks’ Howard Shultz:





There was a point, I think in the 80′s, where somebody came to Starbucks’ Howard Shultz, and coffee bean prices were going through the roof, and it was a threat to the survival of the company because the cost of coffee is a big part of their business. So of course somebody comes to Howard and says: “You know, if we just kind of kick down from the top grade of beans to this one, everything’s cool, and we’ve done a survey right here, that says only, let’s just say, 7% of customers can tell the difference between the best coffee and the second best coffee.”



And his response was, “No, we’re not going to do that, we’re going to find some other way to get through the price crisis. Because even if nobody noticed, the employees will notice.”





It’s a good lesson: You’re not just sending out a message externally, you’re sending one out internally too. If your employees don’t believe it, the whole plan falls apart.

More...

 
]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:e1c999f22ec8/</dc:identifier>
</item>
<item rdf:about="http://boagworld.com/season/2/episode/s2e1/">
    <title>Laying the ground work</title>
    <dc:date>2011-06-12T15:36:54+00:00</dc:date>
    <link>http://boagworld.com/season/2/episode/s2e1/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[In my last two books ‘Building Website for Return on Investment’ and ‘The Website Owners Manual’ I have laid out a clear plan for building a successful website. In this season of the Boagworld podcast I plan to take the principles I have explained and apply them to a real website – the site you are currently looking at.





Over the coming weeks I am going to rebuild boagworld.com and explain step by step my process and motivation. This week we begin by looking at the fundamentals of a successful site…



    Clear business objectives.
    Specific success criteria.
    Targeted calls to action.


Let’s begin by looking at business objectives.


Why does your website exist?

Every website owner should be asking why they have a website. Whether it is a company website or a personal blog, it is important to ask this most basic of questions.


It is not enough to answer ‘because everybody else has one’. Instead you need to be able to clearly articulate what benefits you want the site to provide you or your business.





As I explain in ‘Building website for return on investment’ having these objectives provides three benefits:



    Helps make decisions about everything from copy to functionality.
    Justifies future investment in your site.
    Aids communication between team members about what the sites aims are.


The objectives for boagworld.com

It would be easy for me to claim that Boagworld is my personal blog and so my objectives for the site are  altruistic. However, in all honesty Boagworld.com is a marketing tool for my web design agency Headscape.


Deceiving yourself about the true objectives of your site is more common than one would think. However, I have long since sold my soul to commercialism and so am happy to admit that is why my site exists ;-)


For my objectives to be truly effective I need to be a bit more specific than describing boagworld.com as a marketing tool. I have therefore broken this general aim into more specific objectives:



    To generate direct enquiries for work.
    To encourage more people to visit the Headscape website.
    To reflect positively on Headscape and increase its reputation.
    To raise the profile of Headscape and its staff.


The last one on the above list is particularly interesting. One of the problems we face at Headscape is that I have become the public face of the company. People hire Headscape in many cases because they want to work with me. However, in reality this is not only impractical it is also silly. The truth is that Headscape is packed with talented people and in many cases a client is better off not having me on their project!





Although marketing Headscape is the primary business objective it is not the only one. There are two others:



    Selling supplementary material such as videos, workshops, and books.
    Generating revenue through advertising.


Listing your business objectives is just the first step. We also need to prioritise those objectives.


Prioritise your business objectives

As soon as you have multiple business objectives it becomes important to prioritise them. This is because it is all too easy for one objective to clash with another.


Take for example the goals I have set for Boagworld.com. It would be easy for my business objective of generating revenue through advertising to completely undermine the more important objective of promoting Headscape. A website covered with obtrusive advertising would not only undermine the credibility of Headscape it could also bury calls to action that may generate leads for web design business.


With that in mind I have prioritised my business objectives as follows:



    To generate direct enquiries for work.
    To encourage more people to visit the Headscape website.
    To reflect positively on Headscape and increase its reputation.
    To raise the profile of Headscape and its staff.
    Selling supplementary material such as videos, workshops, and books.
    Generate revenue through advertising.


Now that I have my prioritised list of business objectives I need to turn these into tangible criteria that I can measure.


Defining my success criteria

Its easy for business objectives to be wooly and poorly defined. Turning them into measurable success criteria helps them to become considerably more effective. Take for example my objective to “generate direct enquiries for work”. On the surface this seems like a reasonable goal. However, it has two problems.


First, if our objective is just to generate more enquiries then we could easily fall into the trap of thinking quantity is the key. However, in reality Headscape wastes a lot of time responding to enquiries from individuals who do not have the five figure budget that is our minimum requirement.


Second, we are not addressing how we are going to measure this objective. If somebody emails or phones it is hard for me to know whether they have come from the site or not without asking them. We need something tangible we can track. If we have that then we can see if changes to the site increase or decrease that criteria.


Bearing in mind these two issues, an objective such as “generate direct enquiries for work” needs to turn into a specific success criteria such as “an increase in the number of users completing a work request form”.


Ideally we would go a step further and aim for a specific percentage increase in the number of people completing that form. However, as no such form currently exists on boagworld.com (because I haven’t gone through this exercise with the site before) then this is impossible.


Using this principle my six business objectives turn into seven success criteria:



    To create an increase in the number of people completing a work request form.
    To create an increase in the number of people visiting the Headscape website.
    To create an increase in the number of tweets & links back to Boagworld content.
    To create an increase in the number of people following other Headscape employees via twitter or their personal blogs.
    To create an increase in the number of people talking about Headscape via social media & direct links.
    To create an increase in sales of supplementary material.
    To create a 30% increase in the amount I can charge for advertising over a 6 month period.


There are two things to note here. First, sometimes a business objective can result in more than one success criteria. Second, my final success criteria is able to be more specific citing a certain percentage increase because I have historical data against which to track. Unfortunately, this is the only one of my success criteria that allows me to be so specific as my tracking has been poor.





Now that we have our success criteria we can complete the final part of the process which is to turn these into calls to action.


Establishing your calls to action

For a success criteria to be measurable some event has to occur. In almost all cases this involves the user doing something. This might be purchasing a product, downloading a PDF or visiting a page. Whatever it is, we need to encourage our users to take that step.


These calls to action are the foundation on which the rest of your site should be built. Boagworld.com could have an amazing design and great content but if users aren’t completing its calls to action it will fail to fulfil its business objectives and I might as well take it offline.


Turning success criteria into calls to action is normally fairly straightforward. You look at the success criteria and ask what measurable action a user could take for us to know that criteria has been fulfilled. For example, it is fairly obvious how my success criteria “an increase in the number of people completing a work request form” turns into a call to action users must complete.


Some success criteria need a little more thought. For example my success criteria of “an increase in the number of people talking about Headscape via social media & direct links” is more tricky to turn into an action. This is where you need to start tailoring the content on your site to encourage tweeting of articles that mention Headscape. I have seen a number of great approaches to encourage that kind of interaction but that is another post entirely.


After a little thought, I have settled on the following calls to action for Boagworld.com.



    Subscribe to receive updates on Boagworld content via email or RSS.
    Complete a work request form.
    Visit the Headscape website.
    Tweet/Facebook/Link to this article.
    Follow this author on twitter (highlighting other Headscape employees).
    Visit this authors website (highlighting other Headscape employees).
    Tweet/Facebook this quote referencing Headscape.
    Buy a video or book.
    Book a consultancy clinic.
    Click an ad.


As with business objectives these have been prioritised. However, their order does not completely reflect the business objectives because it needs to take into account an additional factor – the user.


Considering the user

If we were to order the above calls to action simply to reflect the business objectives then “complete a work request form” would become number one. However, its important to understand that many people come to boagworld.com interested in learning not buying web design services. Although they might be in a place to buy later that is not their immediate need. If you push too hard for that ‘sale’ at the wrong time you will drive them away. Better to establish a relationship with them and keep your brand in their mind until such a time as they have a project and are ready to buy. That is why I have chosen to put subscribe as my number one call to action.





There is always a tension between business objectives and users needs which has to be carefully considered when designing your calls to action. That is why next week we are going to look at the boagworld.com users (you!) and ask what they want from the website.


So what do you think of my business objectives, success criteria and calls to action? Do you have any recommendations or improvements I should make. This is a community project so let me know in the comments below.


Similar Posts:

Success criteria

Nothing is more important than business objectives

The missing pillar of web design

Are you always looking for a new challenge?

185. Innovate




   
]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:177254399c59/</dc:identifier>
</item>
<item rdf:about="http://www.uie.com/brainsparks/2011/06/10/agencies-dont-like-me-very-much/">
    <title>Agencies Don’t Like Me Very Much</title>
    <dc:date>2011-06-10T13:00:27+00:00</dc:date>
    <link>http://www.uie.com/brainsparks/2011/06/10/agencies-dont-like-me-very-much/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Lately, I haven’t been making friends with people who work at design agencies. I think it’s something I said.

It’s definitely something I said. In fact, I can tell you exactly what I said.

However, to do that, we need to revisit some research we’ve conducted over the last few years. We’ve been looking at the process of making design decisions and realized there are five distinct styles. (If you haven’t read or seen me talk about these, go read about them now. Otherwise this won’t make a lot of sense.)

If you’re a designer, any of these styles can produce great results that delights customers. However, for many, the most advanced styles, activity-focused and experience-focused design, are the more desirable projects. That’s where the really cool stuff happens and where the biggest challenges are found.

And this is where I get in trouble with the agency folks.  As we’ve been researching these five styles, we found an interesting finding: agencies can’t do activity-focused or experience-focused design. 

Many do self design. Some very successful agencies make a lot of money with genius design. (And there are many that do unintentional design, but they probably shouldn’t brag about that.) However, it seems activity-focused and experience-focused design is out of reach of the agency world. 

Now, many agencies try to sell themselves as doing this work. And many agencies get clients to hire them to do this work. That’s not what I’m talking about.

I’m talking about creating successful designs using these decision styles. That doesn’t happen with an agency. It can only happen in-house.

Activity-focused design takes a long time. It requires making an investment. The team accrues knowledge over a long period, studying users and their activities, implementing solutions, and seeing how those solutions work. It takes many iterations to do well.

Most agencies aren’t brought in for long-term iterative work. Eventually, all agencies leave. When they leave, the knowledge the team has gained walks out the door with them. Then the client is left with something they don’t know how to maintain or improve. The project fails.

Experience-focused design is even more difficult. The designs often require changes at touch points all over the organization. For example, for a retail business to create a seamless experience, they’ll have to change things on the web site, in the stores, at the call center, in the distribution centers, and in the merchandizing department. 

Agencies can’t have this kind of reach. It takes commitment at all levels. It’s too expensive to teach an agency how your business works. They don’t have the political clout to make the hard decisions.

Sure, a company can hire an agency to give them ideas. Agencies have really smart folks with lots of great ideas. But the long-term, in-depth execution has to come from within. The company has to make the commitment to investing on their own.

Needless to say, statements like this don’t make me popular with agencies. Recently, I’ve found myself sitting in front of agency owners, defending this position. They don’t like it at all. 

I could be wrong. (It’s happened before.) It could be that an agency could take over the management and operations of a business and build a fabulous design using activity-focused or experience-focused design. I haven’t found one yet, but it could happen.

I just hope that agency’s contract never ends, because then their (now former) client is screwed. 
]]></description>
<dc:subject>Business_Strategy Design Design_Decisions Design_Process Design_Teams Experience_Design Experience_Management Management Team_Management User_Experience</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:e808ae74bce6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Business_Strategy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Decisions"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Process"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design_Teams"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Experience_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Experience_Management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Team_Management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:User_Experience"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://productblogarchive.37signals.com/products/2011/06/launching-soon-the-basecamp-calendar.html">
    <title>Launch: The Basecamp Calendar</title>
    <dc:date>2011-06-07T17:11:37+00:00</dc:date>
    <link>http://productblogarchive.37signals.com/products/2011/06/launching-soon-the-basecamp-calendar.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Since launching Basecamp in February of 2004, Basecamp has had a feature called Milestones. Milestones were used to keep track of major dates in a project (phases, launches, deliverables, etc).


Over the years our customers have been asking for a proper calendar to replace the basic list of milestones. They liked the milestones functionality, but they wanted to be able to add and view their milestones in a traditional calendar layout.


Further, they wanted to add items to the calendar that weren't major project milestones. Things like meetings, appointments, lunches, someone's out on vacation, phone calls, etc.


Today we introduce the new Basecamp calendar

We've been listening. Over the past few months we've been hard at work building out this top customer request. Today we're proud to release the brand new Basecamp calendar. The "Milestones" has been replaced with the "Calendar" tab in your projects and on the Dashboard.





When you add something to the calendar you'll see two options: You can make the item an event or you can make it a milestone. A milestone has a checkbox and is marked late if the date passes without the checkbox being checked off. Same as before. Events don't have checkboxes and aren't marked late.


An event might be "9am Team breakfast" while a milestone might be "Client review and signoff" or "Launch". You can use events or milestones any way you'd like, of course.





You can also set up spanned events. Spanned events let you designate events that last more than one day. You can even use spanned events to label project phases.





The 14-day view on the Dashboard and Overview screens have been updated as well.





And here's a real bonus: You can now add events or milestones to any project on the calendar on the Dashboard. When you add an event or milestone from the global Dashboard calendar, you'll see a pulldown that lets you select the appropriate project. Now you don't have to go into a project to add an item to that project's calendar.





It's live in your account right now!

This feature came directly from customer requests and feedback. Thanks for your patience while we developed the new calendar feature. We hope you love it as much as we do. As always, thanks for using Basecamp!
]]></description>
<dc:subject>Basecamp Features_updates_and_fixes</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:6b9deda999ba/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Basecamp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Features_updates_and_fixes"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/06/02/how-to-build-a-media-site-on-wordpress-part-1/">
    <title>How To Build A Media Site On WordPress (Part 1)</title>
    <dc:date>2011-06-02T15:04:15+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/06/02/how-to-build-a-media-site-on-wordpress-part-1/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



      
        
    



WordPress is amazing. With its growing popularity and continual development, it is becoming the tool of choice for many designers and developers. WordPress projects, though, are pushing well beyond the confines of mere “posts” and “pages”. How do you go about adding and organizing media and all its complexities? With the introduction of WordPress 3.1, several new features were added that make using WordPress to manage media even more practical and in this tutorial, we’re going to dive in and show you how.



In part one, we’re going to setup custom post types and custom taxonomies, without plugins. After that, we’ll build a template to check for and display media attached to custom posts. Then, in part two, we’ll use custom taxonomy templates to organize and relate media (and other types of content).

As we focus on building a media centric site, I also want you to see that the principles taught in this series offer you a set of tools and experience to build interfaces for and organize many different types of content. Examples include:


A “Media” center, of any type, added to an existing WordPress site
A repository of videos, third party hosted (e.g. Vimeo, YouTube, etc), organized by topics and presenters
A music site, with streaming and song downloads, organized by bands and associated by albums
An author-driven Q&A site, with user submitted questions organized by topics and geographical location
A recipe site with videos and visitor ratings, organized by category and shared ingredients

In a future tutorial, we will focus on customizing the WordPress backend (with clients especially in mind) to manage a media site and in another tutorial we will use the foundation laid to build a dynamic filtering interface that allows visitors to quickly sort their way through hundreds or even thousands of custom posts.

Requirements

WordPress 3.1 – With the release of 3.1, several new features related to the use of custom post types and taxonomies were introduced that are essential to the techniques taught in this series.
Basic Familiarity with PHP (or “No Fear”) – To move beyond copying and pasting the examples I’ve given will require a basic familiarity with PHP or, at least, a willingness to experiment. If the code samples below are intimidating to you and you have the desire to learn, then I encourage you to tackle it and give it your best. If you have questions, ask in the comments.

Working Example
In April, 2011 we (Sabramedia, of which I am a co-founder) worked with an organization in Southern California to develop a resource center on WordPress to showcase their paid and free media products. On the front-end, we built a jQuery powered filtering interface to allow visitors to filter through media on-page. We’ll cover the ins and outs of building a similar interface in part three.


The “Resource Center” on ARISE, with a custom taxonomy filter (“David Asscherick”) pre-selected.

Working With Custom Post Types
By default, WordPress offers two different types of posts for content. First, you have the traditional “post”, used most often for what WordPress is known best for – blogging. Second, you have “pages”. Each of these, as far as WordPress is concerned, is a type of “post”. A custom post type is a type of post that you define.

Note: You can learn more about post types on the WordPress Codex.

In this series, we are going to use custom post types to build a media based resource center. I will be defining and customizing a post type of “resource”.

Setting Up Your Custom Post Type
You can setup your custom post types by code or by plugin. In these examples, I will be setting up the post type by code, storing and applying the code directly in the functions file on the default WordPress theme, Twenty Ten. You can follow along by using a plugin to setup the post types for you or by copying the code samples into the bottom of your theme’s custom functions file (functions.php).

Note: As a best practice, unless you use an existing plugin to create the post types, you may want to consider creating your own WordPress plugin. Setting up custom post types and taxonomies separate from your theme becomes important if and when you want to make major changes to your theme or try a new theme out. Want to save some typing? Use the custom post code generator.

Alright, let’s setup our custom post type. Paste the following code into your theme’s functions.php:

add_action('init', 'register_rc', 1); // Set priority to avoid plugin conflicts

function register_rc() { // A unique name for our function
 $labels = array( // Used in the WordPress admin
'name' => _x('Resources', 'post type general name'),
'singular_name' => _x('Resource', 'post type singular name'),
'add_new' => _x('Add New', 'Resource'),
'add_new_item' => __('Add New Resource'),
'edit_item' => __('Edit Resource'),
'new_item' => __('New Resource'),
'view_item' => __('View Resource '),
'search_items' => __('Search Resources'),
'not_found' =>  __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash')
);
$args = array(
'labels' => $labels, // Set above
'public' => true, // Make it publicly accessible
'hierarchical' => false, // No parents and children here
'menu_position' => 5, // Appear right below "Posts"
'has_archive' => 'resources', // Activate the archive
'supports' => array('title','editor','comments','thumbnail','custom-fields'),
);
register_post_type( 'resource', $args ); // Create the post type, use options above
}
The code above tells WordPress to “register” a post type called “resource”. Then, we pass in our options, letting WordPress know that we want to use our own labels, that we want our post type to be publicly accessible, non-hierarchal, and that we want it to show up right below “posts” in our admin menu. Then, we activate the “archive” feature, new in WordPress 3.1. Finally, we add in “supports”: the default title field, the WordPress editor, comments, featured thumbnail, and custom fields (I’ll explain that  later).

Note: For more information on setting up the post type and for details on all the options you have (there are quite a few available), refer to the register_post_type function reference on the WordPress Codex.

If the code above was successful, you will see a new custom post type, appearing below “Posts” in the WordPress admin menu. It will look something like this:


A view of the WordPress Admin, after adding a custom post type

We’re in good shape! Next, let’s setup our custom taxonomies.

Working With Custom Taxonomies
A “taxonomy” is a way of organizing and relating information. WordPress offers two default taxonomies, categories and tags. Categories are hierarchal (they can have sub-categories) and are often used to organize content on a more broad basis. Tags, are non-hierarchal (no sub-tags) and are often used to organize content across categories.

A “term” is an entry within a taxonomy. For a custom taxonomy of “Presenters”, “John Smith” would be a term within that taxonomy.

In this series, we will be creating two different custom taxonomies to organize the content within our resource center. 


Presenters – Each media item in our resource center will have one or more presenters. For each presenter, we want to know their name and we want to include a short description. Presenters will be non-hierarchal.
Topics – Our resource center will offer media organized by topics. Topics will be hierarchal, allowing for multiple sub-topics and even sub-sub-topics.

Note: Interested in working with more than the title and short description? Take a look at How To Add Custom Fields To Custom Taxonomies on the Sabramedia blog.

Setting Up Presenters
Our goal with presenters is to create a presenter profile, referenced on the respective media pages, that will give more information about the presenter and cross-reference other resources that they are associated with.

Add the following code to your theme’s functions.php file:

$labels_presenter = array(
'name' => _x( 'Presenters', 'taxonomy general name' ),
'singular_name' => _x( 'Presenter', 'taxonomy singular name' ),
'search_items' =>  __( 'Search Presenters' ),
'popular_items' => __( 'Popular Presenters' ),
'all_items' => __( 'All Presenters' ),
'edit_item' => __( 'Edit Presenter' ),
'update_item' => __( 'Update Presenter' ),
'add_new_item' => __( 'Add New Presenter' ),
'new_item_name' => __( 'New Presenter Name' ),
'separate_items_with_commas' => __( 'Separate presenters with commas' ),
'add_or_remove_items' => __( 'Add or remove presenters' ),
'choose_from_most_used' => __( 'Choose from the most used presenters' )
); 

register_taxonomy(
'presenters', // The name of the custom taxonomy
array( 'resource' ), // Associate it with our custom post type
array(
'rewrite' => array( // Use "presenter" instead of "presenters" in the permalink
'slug' => 'presenter'
),
'labels' => $labels_presenter
)
);
Let’s break that down. First, we setup the labels to be used when we “register” our taxonomy. Then, we give it a name, in this case “presenters”, and assign it to the post type of “resource”. If you had multiple post types, you would add them in with a comma, like this:

array( 'resource', 'other-type' ), // Associate it with our custom post types

After that,  we change the URL (or “permalink”) to satisfy our desire for grammatical excellence. Rather than being “/presenters/presenter-name” we update the “slug” (what is a slug?) to remove the “s” so that the permalink will read “/presenter/presenter-name”.

In our example, you should now notice a new menu option labeled “Presenters” under “Resources” in the admin sidebar. When you go to create a new resource you should also notice a meta box on the right side that looks like this:

 My custom taxonomy of "Presenters" now shows up between the "Publish" box and "Featured Image".

Note: To learn more about setting up custom taxonomies and the options available, take a look at the register_taxonomy function reference on the WordPress Codex.

Setting Up Topics
Our goal with topics is to allow for a hierarchal set of topics and sub-topics, each with their own page, showing the resources that are associated with each respective topic.

Add the following code to your theme’s functions.php file:

$labels_topics = array(
'name' => _x( 'Topics', 'taxonomy general name' ),
'singular_name' => _x( 'Topic', 'taxonomy singular name' ),
'search_items' =>  __( 'Search Topics' ),
'all_items' => __( 'All Topics' ),
'parent_item' => __( 'Parent Topic' ),
'parent_item_colon' => __( 'Parent Topic:' ),
'edit_item' => __( 'Edit Topic' ),
'update_item' => __( 'Update Topic' ),
'add_new_item' => __( 'Add New Topic' ),
'new_item_name' => __( 'New Topic Name' ),
); 

register_taxonomy(
'topics', // The name of the custom taxonomy
array( 'resource' ), // Associate it with our custom post type
array(
'hierarchical' => true,
'rewrite' => array(
'slug' => 'topic', // Use "topic" instead of "topics" in permalinks
'hierarchical' => true // Allows sub-topics to appear in permalinks
),
'labels' => $labels_topics
)
);
That was easy enough! The code above is similar to setting up presenters, except this time we are using a few different labels, specific to hierarchal taxonomies. We set hierarchal to true (it’s set to “false” by default), we update the slug to be singular instead of plural, then, just before referencing our labels, we set the rewriting to be hierarchal. A hierarchal rewrite allows permalinks that look like this: /topic/topic-name/sub-topic-name.

With the above code implemented, you should notice another option below “Resources” in the WordPress admin and a new meta box that looks like this:

My custom taxonomy of "Topics" now shows up, albeit a bit empty looking, below "Presenters".

Adding Custom Fields To Custom Post Types
In many cases, the “title” and “editor” (the default content editor in WordPress) aren’t going to be enough. What if you want to store extra information about a particular custom post? Examples might include:


Duration of a media file – HH:MM:SS format, useful to pre-populate your media player with the duration on page load.
Original recording date – Stored as a specific date with day, month, and year.

We call this “meta” information and it is a set of details that are specific to the individual item and usually make the most sense to store as meta data, as opposed to terms within a custom taxonomy. While you could put all these details in the “editor” field, it gives you very little flexibility with how this is displayed within your template.

So, let’s setup some custom fields. Use the custom fields interface at the bottom of an individual custom post to add some extra details about your custom post.

For our example, we’re going to add two fields. For each field, I will list the name, then an example value:


recording_length - Example: 00:02:34
recording_date – Example: March 16, 2011

Here’s how that looks after adding two custom fields:

An example of the custom fields interface after adding two "keys" and their respective "values"

Note: The default custom fields interface can be a bit limiting. If you’d like to make use of a plugin, try More Fields. The functionality is the same (just be mindful of what you name your custom fields) – a plugin typically offers you a better interface. If you want to build your own interface, take a look at WP Alchemy. To learn more about using custom fields, take a look at using custom fields on the WordPress Codex.

Custom Taxonomies vs. Custom Fields
At this point, you may run into a situation where you’re uncertain whether a particular piece of information should be stored as a custom taxonomy or as a custom field. Let’s use the recording date as an example. If we were to log the complete date, then it would probably make the most sense to store it within a custom field on the individual item. If we were to just use the year, though, we could store it as a term within a custom taxonomy (we’d probably call it “year”) and use it to show other resources recorded that same year.

The question is whether or not you want to relate content (in our case, “resources”) by the information you’re considering. If you don’t see any need to relate content (and don’t have plans to) then a custom field is the way to go. If you have a need to relate content or see a potential need down the road, then a custom taxonomy is the way to go.

Media Storage – WordPress vs. Third Party
Now that we have our custom post type and custom taxonomies in place, it’s time to upload some media. Our goal is to make this as simple a process for the end-user as possible. There are two ways that we can manage the media, either directly within WordPress or via third party.


WordPress Managed - WordPress has a media management system built-in. You can upload media directly from your post type interface or from the “media” section in the WordPress admin. If storage or bandwidth becomes an issue, you can use a plugin (such as WP Super Cache) to offload the storage of the media to a third party content delivery network (CDN) to optimize delivery speed and save on bandwidth.
Third Party – Going this route, you can use a media hosting service like YouTube, Vimeo, Scribd (PDFs), Issuu (ebooks), or any media hosting service that offers you an embed option.

Going the internal route, the media is stored inside of WordPress and associated with the individual custom post. We then access it as an attachment within the template. Going the third party route, we get the embed code (or the media ID) and store it inside of WordPress within a custom field. We’ll look at examples of both options further on.

Note: Working with images? Take a look at a recent Smashing article that covers better image management with WordPress.

Preparing The Stage – Adding New Media
We’re about to start working with the templates. Before we do that, though, we need to have some media to work with within our new custom post type. Before proceeding, make sure you’ve done the following:


Create a new “resource” post (or whatever your post type may be) and give it a title and a description in the main content editor.
Associate your resource with a non-hierarchical custom taxonomy you’ve created (e.g. A presenter named “Jonathan Wold”).
Associate your resource with a hierarchical custom taxonomy you’ve created (e.g. A topic of “Family” and a sub-topic of “Children”)
Add one or more custom fields with a unique “key” and “value” (e.g. a key of “recording_duration” and a value of “00:02:34″).
Upload a video file to your custom post using the WordPress media manager (click the “video” icon just below the title field and right above the editor).

Note: If you’re hosting your videos via third party, create a custom field to hold either the entire embed code or the ID of the video. I’ll give you an example using Vimeo a bit later that will use the video ID.

Note #2: Depending on your hosting provider, you may run into trouble with a default upload limit, often 2MB or 8MB. Check out how to increase the WordPress upload limit.

After you’ve created a new post, previewing it should show you a screen, depending on your theme, will look something like this:

A preview of my custom post, displaying title and description, on the Twenty Ten theme.

Note: If you preview your post and get a “404″ error, you may need to update your Permalinks. From the WordPress Admin, Go to “Settings”, then “Permalinks”, and click “Save Changes”. Refresh and you should be good to go.

Displaying Our Media – Working With Custom Post Templates
If you previewed your custom post, you probably saw something similar to what I showed in my example – not much. Where are the custom taxonomy terms, custom fields, and videos? Missing – but not for long! In the following steps, we’re going to create a custom template that tells WordPress what data to display and how to display it.

Creating A Custom Post Type Template
The WordPress template engine has a hierarchy that it follows when deciding what theme template it uses to display data associated with a post. In the case of our “resource” post type, the WordPress hierarchy (as of 3.1) is as follows:


single-resource.php – WordPress will check the theme folder for a file named single-resource.php, if it exists, it will use that file to display the content. For different post types, simple replace “resource” with the name of your custom post type.
single.php – If no post type specific template is found, the default single.php is used. This is what you probably saw if you did an early preview.
index.php – If no single template is found, WordPress defaults to the old standby – the index.

I’ll be using minimal examples for each of the templates, modified to work with Twenty Ten. Each example will replace and build on the previous example. Expand to your heart’s content or copy the essentials into your own theme.

To get started with our example, create a file called single-resource.php and upload it to your theme folder. Add the following code:

<?php get_header(); ?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-content">
<?php the_content();?>
</div>
</div>

<?php endwhile; ?>
</div>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
The code above will give you a rather unexciting, but working template that will display the title and content (drawn directly from the main editor). What about our custom fields? Let’s add them in next.

Replace the code in single-resource.php with the following:

<?php get_header(); ?>

<?php // Let's get the data we need
$recording_date = get_post_meta( $post->ID, 'recording_date', true );
$recording_length = get_post_meta( $post->ID, 'recording_length', true );
?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<span>Recorded: <?php echo $recording_date ?> | </span>
<span>Duration: <?php echo $recording_length ?> </span>
</div>
<div class="entry-content">
<?php the_content();?>
</div>
</div>

<?php endwhile; ?>
</div>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
We’re making progress! Now, using the examples above, you should see the date your resource was published and the duration of the media file.

Let’s take a look at how that works. In WordPress, data stored in custom fields can be accessed several ways. Here, we are using a function called get_post_meta. This function requires two parameters, the unique ID of the post you want to get the data from and the name of the field (its “key”) whose data you’re after. Here’s the code again:

$recording_date = get_post_meta( $post->ID, 'recording_date', true );

First, we set a variable with PHP – we name it “$recording_date”. Then, we use the “get_post_meta” function. Remember, it needs two parameters, ID and the “key” of the field we want. “$post->ID” tells WordPress to use the ID of the post it is currently displaying. If we wanted to target a specific post, we’d put its ID instead:

$recording_date = get_post_meta( 35, 'recording_date', true ); // Get the date from post 35

The next parameter is the “key”, or “name” of our custom field. Be sure you get that right. The last parameter tells the function to return the result as a single “string” – something that we can use as text in our template below. To display our data in the template, we write:

<?php echo $recording_date ?>

Ok, let’s keep going and get our custom taxonomies showing up.

Replace the code in single-resource.php with the following:

<?php get_header(); ?>

<?php // Let's get the data we need
$recording_date = get_post_meta( $post->ID, 'recording_date', true );
$recording_length = get_post_meta( $post->ID, 'recording_length', true );
$resource_presenters = get_the_term_list( $post->ID, 'presenters', '', ', ', '' );
$resource_topics = get_the_term_list( $post->ID, 'topics', '', ', ', '' );
?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<span>Recorded: <?php echo $recording_date ?> | </span>
<span>Duration: <?php echo $recording_length ?> | </span>
<span>Presenters: <?php echo $resource_presenters ?> | </span>
<span>Topics: <?php echo $resource_topics ?></span>
</div>
<div class="entry-content">
<?php the_content();?>
</div>
</div>

<?php endwhile; ?>
 </div>
 </div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
Now we’re starting to get more dynamic. You should see your custom fields and, assuming that your custom post has “presenters” and “topics” associated with it, you should see a list of one or more custom taxonomy terms as links. If you clicked the link, you probably saw a page that didn’t look quite what you expected – we’ll get to that soon. Check out get_the_term_list on the WordPress Codex to learn more about how it works.

Adding A Media Player
Now that we have some basic data in place, it’s time to add our media player. In this example, we will be working with the JW Media Player, a highly customizable open-source solution.

Installing JW Media Player
You can access basic installation instructions here. I recommend the following steps:


Download the player from the Longtail Video website.
Create a folder within your theme to hold the player files – In this case, I’ve named the folder “jw”.
Upload jwplayer.js and player.swf to the JW Player folder within your theme.

JW Player is now installed and ready to be referenced.

Now, replace the code in single-resource.php with the following:

<?php get_header(); ?>

<?php // Let's get the data we need
$recording_date = get_post_meta( $post->ID, 'recording_date', true );
$recording_length = get_post_meta( $post->ID, 'recording_length', true );
$resource_presenters = get_the_term_list( $post->ID, 'presenters', '', ', ', '' );
$resource_topics = get_the_term_list( $post->ID, 'topics', '', ', ', '' );

$resource_video = new WP_Query( // Start a new query for our videos
array(
'post_parent' => $post->ID, // Get data from the current post
'post_type' => 'attachment', // Only bring back attachments
'post_mime_type' => 'video', // Only bring back attachments that are videos
'posts_per_page' => '1', // Show us the first result
'post_status' => 'inherit', // Attachments require "inherit" or "all"
)
);
?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<span>Recorded: <?php echo $recording_date ?> | </span>
<span>Duration: <?php echo $recording_length ?> | </span>
<span>Presenters: <?php echo $resource_presenters ?></span>
</div>
<div class="entry-content">
<?php while ( $resource_video->have_posts() ) : $resource_video->the_post(); ?>
<p>Video URL: <?php echo $post->guid; ?></p>
<?php endwhile; ?>

<?php wp_reset_postdata(); // Reset the loop ?>

<?php the_content(); ?>
</div>
</div>

<?php endwhile; ?>
</div>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
Note: You may notice the somewhat mysterious reference to “wp_reset_postdata”. We are creating a loop within a loop and, to prevent strange behavior with template tags like “the_content” (try removing “wp_reset_postdata” to see what happens), we need to run a reset after any new loops we add within the main loop. Learn more about the loop on the WordPress Codex.

Now we’re getting somewhere! If everything went as expected, you should see a direct, plain text URL to your video. That’s not very exciting (yet), but we want to make sure we are getting that far before we add in the next step – the player.

If you’re having trouble at this point, check back through your code and look for any mistakes that may have been made. If you are trying to vary widely from this example, simplify your variations and start as close to this example as you can – get that to work first then branch back out.

With the URL to our video available, we are ready to add in the player. Let’s go!

Replace the code in single-resource.php with the following:

<?php get_header(); ?>

<?php // Let's get the data we need
$recording_date = get_post_meta( $post->ID, 'recording_date', true );
$recording_length = get_post_meta( $post->ID, 'recording_length', true );
$resource_presenters = get_the_term_list( $post->ID, 'presenters', '', ', ', '' );
$resource_topics = get_the_term_list( $post->ID, 'topics', '', ', ', '' );

$resource_video = new WP_Query( // Start a new query for our videos
array(
'post_parent' => $post->ID, // Get data from the current post
'post_type' => 'attachment', // Only bring back attachments
'post_mime_type' => 'video', // Only bring back attachments that are videos
'posts_per_page' => '1', // Show us the first result
'post_status' => 'inherit', // Attachments require "inherit" or "all"
)
);
?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<span>Recorded: <?php echo $recording_date ?> | </span>
<span>Duration: <?php echo $recording_length ?> | </span>
<span>Presenters: <?php echo $resource_presenters ?> | </span>
<span>Topics: <?php echo $resource_topics ?></span>
</div>

<div class="entry-content">
<?php while ( $resource_video->have_posts() ) : $resource_video->the_post(); // Check for our video ?>
<div id="player">
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/jw/jwplayer.js"></script>
<div id="mediaspace">Video player loads here.</div>
<script type="text/javascript">
    jwplayer("mediaspace").setup({
        flashplayer: '<?php bloginfo( 'stylesheet_directory' ); ?>/jw/player.swf',
        file: '<?php echo $post->guid; ?>',
        width: 640,
        height: 360
    });
</script>
</div>
<?php endwhile; ?>

<?php wp_reset_postdata(); // Reset the loop ?>

<?php the_content(); ?>
</div>
</div>

<?php endwhile; ?>
</div>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
Note carefully the assumptions I’m making in the code above. First, I am assuming that you are storing the JW player files in a folder called “jw” inside the WordPress theme folder of the currently activated theme. If you load the page and the player is not working (and you did have the video URL displaying in the previous step), view the source code on your page, copy the URLs that WordPress is generating to your respective JW player files (jwplayer.js and player.swf) and try accessing them in your browser to make sure each is valid. If there is a problem, update your references accordingly.

Otherwise, there you have it! Your video details and the video itself is now displaying on the page and you should see something like this:

A view of the player, complete with title, description, custom field values and custom taxonomies terms.

Note: There is a lot that you can do to customize the appearance and behavior of the JW Player. A good place to start is the JW Player Setup Wizard. Customize the player to your liking, then implement the code changes in your template accordingly.

Using Vimeo Instead
Let’s say you wanted to use Vimeo, instead of uploading the videos into WordPress. First, you need to add a custom field to store the ID of your Vimeo video. Assuming you’ve done that, and assuming that you’ve entered a valid Vimeo ID in your custom field (we named the field “vimeo_id” in our example), the following code will work:

<?php get_header(); ?>

<?php // Let's get the data we need
$recording_date = get_post_meta( $post->ID, 'recording_date', true );
$recording_length = get_post_meta( $post->ID, 'recording_length', true );
$resource_presenters = get_the_term_list( $post->ID, 'presenters', '', ', ', '' );
$resource_topics = get_the_term_list( $post->ID, 'topics', '', ', ', '' );

$vimeo_id = get_post_meta( $post->ID, 'vimeo_id', true );
?>

<div id="container">
<div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<div class="resource">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<span>Recorded <?php echo $recording_date ?> | </span>
<span>Duration: <?php echo $recording_length ?> | </span>
<span>Presenters: <?php echo $resource_presenters ?> | </span>
<span>Topics: <?php echo $resource_topics ?></span>
</div>

<div class="entry-content">
<?php if ($vimeo_id) { // Check for a video ?>
<iframe src="http://player.vimeo.com/video/<?php echo $vimeo_id; ?>?byline=0&title=0&portrait=0" width="640" height="360" frameborder="0" class="vimeo"></iframe>
<?php } ?>

<?php the_content(); ?>
</div>
</div>

<?php endwhile; ?>
</div>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
We use “$vimeo_id” to retrieve and store the ID from our custom field (named “vimeo_id”, in this case) and then, in the code below, we first check to make sure the $vimeo_id field has data in it, then we use Vimeo’s iframe code (details here) to load the video.

In Vimeo's case, the ID is a series of numbers (notice the selected text) after "vimeo.com/".

Conclusion
And that concludes part one! You’ve learned how to setup custom post types and custom taxonomies without using plugins. You’ve also learned how to setup custom fields and display their data, along with a video player and custom taxonomy terms, within a custom post template. In part two, we’ll look at how to customize the custom taxonomy templates and make them a whole lot more useful. Stay tuned!

Credits
Though this article keeps things basic, the conclusions in part two and a lot of the techniques developed in conjunction with the projects that inspired this series would have been much more difficult without the help of the WordPress Stack Exchange community. If you have a question directly related to this post, ask it here. If you have anything else WordPress related, though, WPSE is the place to go. Also, a big thank you to Joshua, Nick, CJ, and Matt for their many hours spent reviewing, testing code samples, and providing feedback while I worked on this series. 



© Jonathan Wold for Smashing Magazine, 2011. |
Permalink | 
Post a comment | 
Smashing Shop |
Smashing Network |
About Us


Post tags: coding, WordPress

]]></description>
<dc:subject>Coding WordPress</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:30df6f32df23/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:WordPress"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/05/31/desktop-wallpaper-calendar-june-2011/">
    <title>Desktop Wallpaper Calendar: June 2011</title>
    <dc:date>2011-05-31T14:38:09+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/05/31/desktop-wallpaper-calendar-june-2011/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



      
        
    



We always try our best to challenge your artistic abilities and produce some interesting, beautiful and creative artwork. And as designers we usually turn to different sources of inspiration. As a matter of fact, we’ve discovered the best one — desktop wallpapers that are a little more distinctive than the usual crowd. This creativity mission has been going on for almost two years now, and we are very thankful to all designers who have contributed and are still diligently contributing each month.

We continue to nourish you with a monthly spoon of inspiration. This post features 30 free desktop wallpapers created by artists across the globe for June 2011. Both versions with a calendar and without a calendar can be downloaded for free. It’s time to freshen up your wallpaper!

Please note that:


All images can be clicked on and lead to the preview of the wallpaper,
You can feature your work in our magazine by taking part in our Desktop Wallpaper Calendar series. We are regularly looking for creative designers and artists to be featured on Smashing Magazine. Are you one of them?

Winding Ribbons
"What goes around comes around." Designed by Corporate 3 Design from USA.




preview
with calendar:  480×320, 800×600, 1024×768, 1280×800, 1280×1024, 1440×900, 1920×1200, 2561×1440
without calendar:  480×320, 800×600, 1024×768, 1280×800, 1280×1024, 1440×900, 1920×1200, 2561×1440

Colourful Summer
"”Have a joyful summer filled with colours of fun.” An unique circle patterns of bright vivid colours to represent the fun of summer time,joyful holidays and happiness." Designed by Divya from United Kingdom.




preview
with calendar:  1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1200
without calendar:  1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1200

Fancy Schmancy
Designed by Pietje Precies from The Netherlands.




preview
with calendar:  320×480, 1024×768, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1200
without calendar:  320×480, 1024×768, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1200

June Gloom
"June Gloom on a California day." Designed by Brandi Kenney from USA.




preview
with calendar:  800×600, 1024×768, 1152×864, 1280×800, 1280×960, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1920×1200, 1920×1440
without calendar:  800×600, 1024×768, 1152×864, 1280×800, 1280×960, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1920×1200, 1920×1440

In Love For Violet
Designed by Stylova.com from Poland.




preview
with calendar:  1280×800, 1280×1024, 1440×900, 1680×1200, 1920×1080, 1920×1200, 2560×1440
without calendar:  1280×800, 1280×1024, 1440×900, 1680×1200, 1920×1080, 1920×1200, 2560×1440

Paradise Lost Island
"Paradise Lost Island With Vintage Texture ! Every desktop resolutions listed by smashing mag (from 640×480 to 2560Ч1600)." Designed by Benoit Chartron from France.




preview
with calendar:  640×480, 800×480, 800×600, 1024×640, 1024×768, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1600

Abstract Bird
"Abstract art of parrot ready for welcome to rain." Designed by Chandrakant Bagade, Banglore. from India.




preview
with calendar:  320×480, 800×600, 1024×768, 1152×864, 1280×720, 1280×800, 1400×1050
without calendar:  320×480, 800×600, 1024×768, 1152×864, 1280×720, 1280×800, 1400×1050

Monsoon
"June brings monsoon in India. Here people are very exited & wait for monsoon. So I decided to bring into attention, the joy of monsoon in Indian Subcontinent. The term was first used in English in British India (now India, Bangladesh and Pakistan) and neighbouring countries to refer to the big seasonal winds blowing from the Bay of Bengal and Arabian Sea in the southwest bringing heavy rainfall to the area." Designed by Jitendra Kushwaha from India.




preview
with calendar:  1024×768, 1280×800, 1440×900, 1920×1200
without calendar:  1024×768, 1280×800, 1440×900, 1920×1200

Prevail
"The devastation in Japan as a result of the tsunami’s been enormous. As a tribute, I thought I’d create this piece." Designed by Umer Tahir from Canada.




preview
with calendar:  320×480, 1024×1024, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440
without calendar:  320×480, 1024×1024, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Serenity
"I don’t know about you, but silence is truly a privilege for me. With so much activity, day in and day out, I really needed something to help keep my sanity on track. Looking at that glorious green grass just takes me away into the calm, and I hope this will do wonders for you too!" Designed by Daily Overview from Malaysia.




preview
with calendar:  800×480, 1024×768, 1280×720, 1280×800, 1440×900, 1680×1050, 1920×1080, 2560×1440
without calendar:  800×480, 1024×768, 1280×720, 1280×800, 1440×900, 1680×1050, 1920×1080, 2560×1440

Poppy Summer
"Poppy flowers all around are announcing the upcoming Summer. A walk in a field of wheat call to mind smells and colors from the past." Designed by Ester Liquori from Italy.




preview
with calendar:  800×600, 1024×768, 1024×1024, 1280×720, 1280×960, 1280×1024, 1440×1080, 1600×1200
without calendar:  800×600, 1024×768, 1024×1024, 1280×720, 1280×960, 1280×1024, 1440×1080, 1600×1200

Flowers
"Simple fresh calendar with flower design." Designed by Patrik Bartas from Slovakia.




preview
with calendar:  1280×720, 1440×900, 1680×1050, 1920×1080, 2560×1440
without calendar:  1280×720, 1440×900, 1680×1050, 1920×1080, 2560×1440

Hirundo Tailcoat
"How did the swallow got its split tail? Estonians say that it laughed itself hard to split the tail." Designed by Olivia Osik from Estonia.




preview
with calendar:  1024×768, 1280×1024, 1440×900, 1600×1200, 1920×1200, 1920×1440
without calendar:  1024×768, 1280×1024, 1440×900, 1600×1200, 1920×1200, 1920×1440

Dearest Daddykins
"Dads have always been pillars of support at home and working hard outside, all just to provide comfort to their families. Here is a tribute to my dad, who always waits up for me no matter how late I return home, and always making sure that the apple of his eye has more than enough in every way. Happy Daddykins’ Day." Designed by Melissa Chew from Singapore.




preview
with calendar:  1152×864, 1280×800, 1440×900, 1680×1050, 1920×1080
without calendar:  1152×864, 1280×800, 1440×900, 1680×1050, 1920×1080

Ella Eh? Eh? Eh?
"Umbrellas & Rain, Grey Background, with June Calendar." Designed by Cary Apel from USA.




preview
with calendar:  320×480, 1280×800, 1280×1024, 1680×1050, 2560×1440
without calendar:  320×480, 1280×800, 1280×1024, 1680×1050, 2560×1440

Be The Best Of Whatever You Are
"A wonderful poem about being the best at whatever you do. I hope you enjoy the inspirational words of wisdom that this poetry (Douglas Malloch) has to offer. Happy june from Italy." Designed by Maurizio Malagoli from Italy.




preview
with calendar:  1280×800, 1280×1024, 1680×1050, 1920×1080, 1920×1200
without calendar:  1280×800, 1280×1024, 1680×1050, 1920×1080, 1920×1200

Old No.7
Designed by Vinteum from Brazil.




preview
with calendar:  1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1080
without calendar:  1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1080

Colorful June
"Summer is coming and we are surrounded by vivid colors." Designed by Simona Gosu from Romania.




preview
with calendar:  800×480, 1024×640, 1280×720, 1440×900, 1920×1080, 2560×1440, 2560×1600
without calendar:  800×480, 1024×640, 1280×720, 1440×900, 1920×1080, 2560×1440, 2560×1600

Summer Solstice In Stonehenge
"Every June 21st, people gather in Stonehenge to celebrate to Summer Solstice and the longest day of the year. So, if you’re in the area, go and celebrate, and if not, just download the wallpaper and enjoy the coming summer." Designed by Ron Gilad from Israel.




preview
with calendar:  320×480, 640×480, 1280×800, 1280×960, 1280×1024, 1440×900, 1440×1152, 1680×1050, 1920×1200, 2560×1600, 2560×2048
without calendar:  320×480, 640×480, 1280×800, 1280×960, 1280×1024, 1440×900, 1440×1152, 1680×1050, 1920×1200, 2560×1600, 2560×2048

Fishing Pirate
"Summer it’s good time for fishing." Designed by Cheloveche.ru from Russia.




preview
with calendar:  1024×768, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1200
without calendar:  1024×768, 1280×800, 1440×900, 1680×1050, 1920×1200

Free Sheeping
"I’ve got this idea when i was shopping on eBay and i decided to sketch first and then illustrate it." Designed by Almog Shemesh from Israel.




preview
with calendar:  800×600, 1024×768, 1280×800, 1440×900, 1680×1050, 1920×1080
without calendar:  800×600, 1024×768, 1280×800, 1440×900, 1680×1050, 1920×1080

Butterfly
Designed by Marc Thiele from Germany.




preview
with calendar:  320×480, 1024×768, 1024×1024, 1280×720, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440
without calendar:  320×480, 1024×768, 1024×1024, 1280×720, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440

Sunrising
Designed by Marián Čepa from Slovakia.




preview
with calendar:  1280×800, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440
without calendar:  1280×800, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440

Evening Beach
"Photo taken at a beach in Lithuania." Designed by Jasmina B. from Estonia.




preview
with calendar:  1280×800, 1440×900, 1680×1050, 1920×1080, 2560×1440
without calendar:  1280×800, 1440×900, 1680×1050, 1920×1080, 2560×1440

Hello_world
"Funny Alien Illustration created by Nickolay Stanev." Designed by Nickolay_stanev from Bulgaria.




preview
with calendar:  320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440
without calendar:  320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Apple June
Designed by Anatoly Moskaltsov from Russia.




preview
with calendar:  1024×768, 1024×1024, 1280×800, 1440×900, 1680×1050, 1920×1080, 1920×1200
without calendar:  320×480, 1024×768, 1024×1024, 1280×800, 1440×900, 1680×1050, 1920×1080, 1920×1200

Join In Next Month!
Please note that we respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience throughout their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us, but rather designed from scratch by the artists themselves.

A big thank you to all designers for their participation. Join in next month!

What’s Your Favourite?
What’s your favorite theme or wallpaper for this month? Please let us know in the comment section below!

(il) (vf)



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


Post tags: wallpapers

]]></description>
<dc:subject>Graphics wallpapers</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:7505fba278cf/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Graphics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:wallpapers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.bbc.co.uk/blogs/bbcinternet/2011/05/world_service_user_experience.html">
    <title>BBC World Service Language Websites: user experience and typography</title>
    <dc:date>2011-05-27T18:02:35+00:00</dc:date>
    <link>http://www.bbc.co.uk/blogs/bbcinternet/2011/05/world_service_user_experience.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[The BBC Chinese website was recently relaunched in line with BBC's new Global Experience Language (GEL).


Following the BBC Arabic, BBC Russian and BBC Persian relaunches earlier this year, this further adds to the growing typographic richness of GEL, as well as expanding on GEL's use in the news domain within the BBC.


I'm the Senior Creative Director for World Service websites.


I'd like to share with you some of the user experience thinking behind the project, and give an overview of one of the most challenging aspects of the project: typography. 


Since the GEL redesign of the BBC News site in July 2010 we have been working to align the user experience of the family of news sites around the BBC. 


BBC World Service offers news in 27 different languages including English. This amounts to 27 siblings to the BBC News site in varying shapes and sizes in 27 different languages, using nine different scripts. 


Given the diverse landscapes these sites operate in - in terms of editorial offer, audience expectations, technical infrastructure in target markets and typography, to name but a few - the goal of aligning user experience has been an interesting challenge.


Context


Unlike most localisation projects, World Service language sites are not direct translations of each other (or the English News site), on the contrary, their editorial offers are tailored to their target markets. 


In our previous redesign, when we moved World Service language sites from 800px to 1024px wide templates, our approach was towards a much more tailored UX solution for each site that fitted their editorial offer and the expectations of their respective audiences for a news site. 


This tailored approach produced good results for those of our audiences who don't read English and whose only exposure to the BBC site is on the news site in their own language.



 


However, it had an undesirable effect of creating a user experience barrier between these sites - especially for those in our audiences who switch between the English News site and another one in their first or second language who had to learn different conventions to find their ways around these sites. 

With GEL, we have worked to bridge this gap, while still catering for the different editorial offers of each site. The language sites we have relaunched in GEL now share the same set of design patterns, user journey principles and page layout approaches as the BBC News site in English but with adjustments in accordance with audience expectations and the editorial offer of each site.



 


Design pattern adjustments:


A good example to explain the thinking that went into the kinds of adjustments we've made, is the carousel. 


As well as the obvious changes like the Persian and Arabic carousels moving right-to-left inline with the reading direction of these languages, we changed the highlight colour to a vibrant blue to help the contrast between the text and the background. Especially in languages like Chinese, which has very complex glyphs, the blue provides a much better contrast against the text. 


We've also opted for numbers instead of the square dots that are used on the English News site to denote the number of panes that the carousel holds. This was to make the existence of other panes much more obvious especially for those markets where the carousel design pattern is not as recognised. 


Another pattern that we use across the sites, is to reveal the duration of audio/video content on roll-over to give an idea to our users of the kind of time/download-size commitment they would be making by clicking on these links. This is especially important for parts of the world where connection speeds may be slow.



 


New design patterns


Working with our CMS development team, we have also introduced some additional design patterns and user journeys, to answer requirements informed by the worldwide markets we cater for:


Rolling news


Even though a large number of stories are covered each day, our news front pages are editorially driven to reflect the most important stories of the day more prominently. User feedback, especially from frequent visitors to the site, revealed that this caused the site to be perceived not as up-to-date as it actually is. 


We now distinguish top stories that have been published or updated in the last hour by denoting the time since the update in minutes.


We also have a prominent "rolling news" module on some of our sites that lists news stories in a chronological order and updates automatically as and when new stories are published. 



 



Topics: 


BBC journalists have been able to tag news stories with a set of controlled vocabulary for some time now. We then generate aggregation pages which collect similarly tagged stories together. 


This system provides granular cuts of the content on our sites to cater for our audiences with niche interests, as well as providing a country specific news aggregation that users can bookmark or subscribe to. This is especially valuable to users of sites like BBC Arabic and BBC Mundo, which cover many countries.


We now have a number of ways in to these aggregation pages:


- index level, where journalists have the option to expose these topics.


- story level, where all associated tags are listed inside the body of the story


- aggregation and index pages, where we also show a list of the most recently updated topics grouped into subjects/people/places/organisations - giving a good overview of the news zeitgeist.


 



Typography


GEL introduces the most ambitious typographic guidelines for the BBC to date. 


Until GEL, our typographic specification did not go beyond naming a commonly available system font as the house style for bbc.co.uk. Beyond the strict implementation specifications, for example the baseline grid, GEL declares typography as one of its key building blocks. 


The onus is back on typography to do its fair share of communicating the key principles behind GEL: Pioneering, Current, Modern British, Best, to name a few.


With the current state of typography on the web, this was a big undertaking even on sites using Latin script. Pulling this off in non-Latin scripts was an even bigger challenge. 


There is very little anatomical difference between a very German typeface commonly in use today like DIN and a very British one like Gill Sans. Going back a few centuries to pre-typography times, would reveal the pronounced differences in calligraphic style between these cultures: See below samples of German Blackletter and Insular script that originated in Great Britain and Ireland. 



 


Calligraphic tradition is very diverse in cultures that use the Arabic script also, and if anything, much stronger. Yet technologies developed to produce printed material (originally in Latin script) like typesetting and the typewriter have fallen short to appropriately support this very sophisticated script. 


In Arabic script, most characters have a minimum of four shapes depending on their position within a word. There are also a vast array of contextual letterforms: that is when a character joins up with another particular character, they take yet another shape. You can imagine the support - or rather lack thereof - that a technology as unsophisticated as the typewriter can offer to a writing system as sophisticated as this. So one of the main drivers of the evolution of Arabic typography was the constraints imposed by technology. 


As a result, despite its diversity in calligraphic tradition, Arabic typography especially on the web is even more constrained than Latin: there are only five commonly available system fonts that support Arabic text and four of them have the same set of glyphs for Arabic characters. So as far as Arabic typography is concerned, they are identical!



 


Yet, especially in the case of Urdu, the need for this diversity is so acute, and catering for it is so challenging that, the BBC Urdu site is the only news site in Urdu that actually uses HTML to display text. Other news websites in Urdu publish their news story pages as GIF images generated using desktop publishing software specially developed to accommodate the typographic styles the Urdu readers are accustomed to. 


Since this approach has major issues, including accessibility and SEO to name just two, until now, on the BBC Urdu site we have tried to address this by offering a custom designed font as a free download for users to install on their systems. Even this has its issues as a considerable section of our users don't have the means to install fonts on their systems.


It wouldn't have been possible to implement GEL without addressing this major challenge. 


Our strategy was to free ourselves from the constraints of system fonts by embedding a custom web font on our sites. We believe this is the first time this has been done on a major news site in English or one of these languages. 


We have also aimed to meet the varied cultural needs of each language by further customising the font for each site.


Our primary criteria for selecting the font were the need for: 


- legibility at body text sizes


- a good presence at headline sizes to achieve the typographic hierarchy set out in GEL
  
- contemporary, fresh aesthetics, again, in fitting with GEL's philosophy


- a good base to customise for the different languages. 


At the end of our search we decided to use Nassim, a font designed by Titus Nemeth in 2007. The many prestigious design awards that Nassim has received are testaments to its fresh and contemporary design, and with its range of weights enabled us to achieve the typographic hierarchy we required.



 


We worked very closely with our colleagues in the respective language services to identify individual and contextual letterforms that needed to be anatomically and/or stylistically different to be more easily recognisable by their audiences. And Titus Nemeth incorporated these requirements into customised editions of Nassim for BBC Arabic and BBC Persian. 


These fonts were painstakingly hinted to improve their legibility on screen. The hinting process is humorously described as an exercise akin to "drawing" letter shapes on tiles on a bathroom wall. When the letter shapes in question are as sophisticated and varied as those in Arabic, it is an even bigger challenge.



 


Titus Nemeth paints a detailed picture of the process in his blog.


In parallel, we produced very detailed design mark-up using a formula we developed to help accurate vertical positioning of text elements against the GEL's baseline grid, hence produce a harmonious vertical rhythm to our pages. Hats off to our client-side developer colleagues who implemented the designs meticulously. 


The result is a solution for a non-Latin script as sophisticated as Arabic, which not only fits with GEL in spirit, but is also an impressive technical implementation of it.


We hope that this is a first step towards a richer typographic experience on the web, especially in the news domain. It has been a very interesting journey for all that were involved. We have learnt a lot and feel we have made good progress towards being able to rely on typography to do its fair share of heavy lifting on the web, as it has been doing on design projects on other media for centuries.


Future


In the space of six months, we have relaunched nine of the language sites; BBC Gahuza, BBC Turkish, BBC Indonesia, BBC Afrique, BBC Arabic, BBC Russian, BBC Mundo, BBC Persian, and BBC Chinese, covering nine languages, four different scripts and two reading directions, targeting vast geographies around the world from Asia to Europe, Africa to Latin America, the Middle East to Oceania.


The fun isn't over yet: we have 18 more language sites that require five other scripts to be worked on and we are working with colleagues around the BBC to localize pan-BBC products like the Embedded Media Player, and systems like BBC ID and commenting tools to ensure they work seamlessly with the language sites.


I hope you have enjoyed this post and I'll be updating you about some of these developments in the future.


Kutlu Canlioglu is Senior Creative Director, UX&D, BBC Future Media
]]></description>
<dc:subject>BBC_World_Service</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:70b826b3d26c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:BBC_World_Service"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/05/25/smashing-cartoons-may-2011/">
    <title>Smashing Cartoons: May 2011</title>
    <dc:date>2011-05-25T11:17:00+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/05/25/smashing-cartoons-may-2011/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



      
        
    




We all have our favorite client stories, embarrassing design flaws and never-ending user requests which are all just a part of what we, as designers and developers, encounter very often in our daily work routine. In this new post series on Smashing Magazine, we’d like to put some of these situations into the spotlight and discuss them with you. The cartoons are all dedicated to Web design and also have a comic twist about everything happening around the Web and latest trends.

The main character of the cartoons is Fleaty, a talented, hard-working designer with big ambitions yet not that much luck when it comes to clients. Hopefully, Fleaty will put a smile on your face and maybe remind all of us of the flaws we have, and help us finally get rid of them. The creative mind behind the Smashing Cartoons is our talented illustrator Ricardo Gimenes.

We’ll be adding a new cartoon every week; the latest cartoon is presented on the Smashing Magazine’s sidebar as well as on the Smashing Cartoons page. There you will also find all previous issues of the Smashing Cartoons series for your convenience.

Fleaty’s experience in May:


Responsive Web Design


Mobile Design Strategy


Online Reading Experience


Web Design Trends



Web Typography


Tell Us Your Story!
Have you experienced something similar to what Fleaty has experienced? What’s your ultimate client story? Do your clients also want a responsive design with rich typography? Share your story with us in the comment section below!

For previous cartoons, check our Smashing Cartoons Archive.



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


Post tags: cartoon, clients


]]></description>
<dc:subject>Graphics cartoon clients</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:edb8623f59e5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Graphics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:cartoon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:clients"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://xkcd.com/903/">
    <title>Extended Mind</title>
    <dc:date>2011-05-25T00:00:00+00:00</dc:date>
    <link>http://xkcd.com/903/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:860674483c3d/</dc:identifier>
</item>
<item rdf:about="http://pmstudent.com/program-manager-defined/">
    <title>Program Manager Defined</title>
    <dc:date>2011-05-17T10:12:01+00:00</dc:date>
    <link>http://pmstudent.com/program-manager-defined/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[

Guest post by Denis Geoghegan

As a program manager the second most common question I’m asked is “what is the difference between a project manager and a program manager?”. The first most popular question I’m asked is “what is a program manager anyway?”.

Deliverables Versus Benefits
The classic explanation of the difference between project managers and program managers is that project managers are concerned with deliverables, whereas program managers are concerned with benefits. This definition is correct, but I find it easier to describe the difference by way of an example.

The example we’re going to consider is that of making a satellite navigation device and bringing it to market. In order to do this there are many things we would need to do, including:


Designing the form factor of the device
Writing the software for the device
Sourcing the materials or components that will be used to make the device
Tooling up a factory to manufacture the device
Marketing the device
Selling the device into distribution channels
Designing and making the cardboard box the device will be sold in

To manage all of the different specialists needed to bring this product successfully to market would be impossible, there are just too many people involved, even if you outsourced much of the work to third parties. This is where the program manager comes in.

Leading a Program
If we were to run the effort to successfully launch our satellite navigation device as a program, we might create seven projects, one for each of the bullet points listed above. So we would have a software project, we would have a project to source the components to construct the device, and we would have five further projects.

Assuming we did this each project would have it’s own project manager, and the program manager would lead all seven projects and therefore the overall program. The program managers’ aim being to coordinate between all projects to ensure that what is delivered provides more benefit to the business than if we just set all these different projects off and running in isolation.

Dependencies
One of the most important things a program manager will do in this coordination role is to manage the dependencies between projects. In our example they would need to ensure that the components have been sourced before the hardware design can be finalized. They would also ensure that software requirement changes would not detract from the proposition the marketing project will be promoting to customers. They are responsible for managing all dependencies between teams.

Despite the program manager coordinating the dependencies they are not responsible for planning the projects, this is the individual project managers role. They may however issue top-down guidance on plans which the project managers will try to meet. Ultimately, it should be a combination of top-down and bottom-up planning which results in the overall program plan.

Benefits Management
Another important responsibility for program managers is that of benefits management. Program managers aren’t so much concerned with the deliverables that the individual projects produce, but more with the overall benefit derived for the organization. In our example we can think of benefit as being profit, but in fact benefit can be measured in all kinds of ways. Because program managers are concerned mostly with benefits, this will sometimes lead them to recommend broad decisions, such as killing off entire feature sets to get the product to market quickly, or sequencing the building of a product in a way which may not seem intuitive to an engineer.

 




















Expert Program Management is a website for all things program management. Step-by-step processes, best practice, and templates are just some of the useful things you’ll find at Expert Program Management.



















 

Program Manager Defined is a post from: pmStudent
I love to help new project managers and working project managers further their careers.  I also offer online project management training for you!

    
]]></description>
<dc:subject>Definitions PPM/PMO</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:f2d6ffe6b548/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Definitions"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:PPM/PMO"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.friend.ly/">
    <title>friend.ly</title>
    <dc:date>2011-05-15T20:13:36+00:00</dc:date>
    <link>http://www.friend.ly/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:cdbfdf4dbf1b/</dc:identifier>
</item>
<item rdf:about="http://feedproxy.google.com/~r/blogspot/MKuf/~3/cI2zYVEhuu8/keynote-and-session-videos-from-google.html">
    <title>Keynote and session videos from Google I/O now live</title>
    <dc:date>2011-05-13T21:31:00+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/blogspot/MKuf/~3/cI2zYVEhuu8/keynote-and-session-videos-from-google.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[With Google I/O 2011 just two days behind us, we wanted to thank the nearly 1 million developers who joined us at Moscone Center, attended I/O Extended events and watched online via I/O Live from 161 countries around the world.

The keynote presentations highlighted the momentum and vision for two of our most important developer platforms: Android and Chrome.

On the topic of Android, Hugo Barra, director of Android Product Management, opened Day 1 of the conference with the themes of “Momentum, Mobile and More,” announcing Movies in Android Market, Music Beta by Google, Android @ Home, Android Open Accessory and a preview of the new Ice Cream Sandwich logo. Read the blog post summary or watch the keynote in its entirety below.



The Day 2 keynote was all about Chrome, which has grown to 160 million active users, up from 70 million last year. Sundar Pichai, senior vice president of Chrome, discussed the launch of the HTML5 version of Angry Birds built with GWT on App Engine, Chromebooks for consumers and businesses and in-app payments. If you missed it, watch the Chrome keynote below.



These launches are just a few of the more than 30 announcements we made over the two days, including the launch of Google App Engine 1.5, a updated Google Prediction API, new additions to the Fusion Tables API and many more. For more information about these and the other news coming out of the event, visit the Google I/O label on the Google Code Blog.

Additionally, in case you missed any of these announcements, HD recordings of the sessions are now available online.

Find the highlights from this year’s event at www.google.com/io, where we’ll feature photos, announcements and the latest videos. Also stay tuned for a feature on “Backstage at Google I/O” where we’ll highlight the developers and artists who helped to make the event possible this year.

Google I/O kicked off the year as our biggest developer event—but we’re only getting started. As of today, we’re announcing locations for our eight Google Developer Days (GDDs), which will take place all over the world with more than a few DevFests in between. Stay tuned for more info on the 2011 event details, but we’ll look forward to seeing you in Brazil, Argentina, Prague, Moscow, Tokyo, Sydney, Israel and Germany for our Google Developer team world tour.

Posted by Vic Gundotra, Senior Vice President of Engineering
  
]]></description>
<dc:subject>developers</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:b1aabda247b4/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:developers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/05/11/the-future-of-css-experimental-css-properties/">
    <title>The Future Of CSS: Experimental CSS Properties</title>
    <dc:date>2011-05-11T11:35:25+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/05/11/the-future-of-css-experimental-css-properties/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[



      
        
    



Despite contemporary browsers supporting a wealth of CSS3 properties, most designers and developers seem to focus on the quite harmless properties such as border-radius, box-shadow or transform. These are well documented, well tested and frequently used, and so it’s almost impossible to not stumble on them these days if you are designing websites.

But hidden deep within the treasure chests of browsers are advanced, heavily underrated  properties that don’t get that much attention. Perhaps some of them rightly so, but others deserve more recognition. The greatest wealth lies under the hood of WebKit browsers, and in the age of iPhone, iPad and Android apps, getting acquainted with them can be quite useful. Even the Gecko engine, used by Firefox and the like, provides some distinct properties. In this article, we wisll look at some of the less known CSS 2.1 and CSS3 properties and their support in modern browsers.



Some explanation: For each property, I state the support: “WebKit” means that it is available only in browsers that use the WebKit engine (Safari, Chrome, iPhone, iPad, Android), and “Gecko” indicates the availability in Firefox and the like. Finally, certain properties are part of the official CSS 2.1. specification, which means that a broad range of browsers, even older ones, support them. Finally, a label of CSS3 indicates adherence to this specification, supported by the latest browser versions, such as Firefox 4, Chrome 10, Safari 5, Opera 11.10 and Internet Explorer 9.

WebKit-Only Properties
-webkit-mask
This property is quite extensive, so a detailed description is beyond the scope of this article and is certainly worth a more detailed examination, especially because it could turn out to be a time-saver in practical applications.

-webkit-mask makes it possible to apply a mask to an element, thereby enabling you to create a cut-out of any shape. The mask can either be a CSS3 gradient or a semi-transparent PNG image. An alpha value of 0 would cover the underlying element, and 1 would fully reveal the content behind. Related properties like -webkit-mask-clip, -webkit-mask-position and -webkit-mask-repeat rely heavily on the syntax of the ones from background. For more info, see the Surfin’ Safari blog and the link below.



Example

Image mask:


.element {
background: url(img/image.jpg) repeat;
-webkit-mask: url(img/mask.png);
}

Example

Gradient mask:


.element2 {
background: url(img/image.jpg) repeat;
-webkit-mask: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));
}

Further reading: Safari Developer Library

-webkit-text-stroke
One of the shortcomings of CSS borders is that only rectangular ones are possible. A ray of hope is -webkit-text-stroke, which gives text a border. Setting not only the width but the color of the border is possible. And in combination with color: transparent, you can create outlined text.

Examples

Assigns a blue border with a 2-pixel width to all <h1> headings:


h1 {-webkit-text-stroke: 2px blue}

Another feature is the ability to smooth text by setting a transparent border of 1 pixel:


h2 {-webkit-text-stroke: 1px transparent}

Creates text with a red outline:


h3 {
color: transparent;
-webkit-text-stroke: 4px red;
}



Further reading: Safari Developer Library

-webkit-nbsp-mode
Wrapping can be pretty tricky. Sometimes you want text to break (and not wrap) at certain points, and other times you don’t want this to happen. One property to control this is -webkit-nbsp-mode. It lets you change the behavior of the &nbsp; character, forcing text to break even where it is used. This behavior is enabled by the value space.

Further reading: Safari Developer Library

-webkit-tap-highlight-color
This one is just for iOS (iPhone and iPad). When you tap on a link or a JavaScript clickable element, it is highlighted by a semi-transparent gray background. To override this behavior, you can set -webkit-tap-highlight-color to any color. To disable this highlighting, a color with an alpha value of 0 must be used.

Example

Sets the highlight color to red, with a 50% opacity:


-webkit-tap-highlight-color: rgba(255,0,0,0.5);

Supported by: iOS only (iPhone and iPad).

Further reading: Safari Developer Library

zoom: reset
Normally, zoom is an Internet Explorer-only property. But in combination with the value reset, WebKit comes into play (which, funny enough, IE doesn’t support). It enables you to override the standard behavior of zooming on websites. If set with a CSS declaration, everything except the given element is enlarged when the user zooms on the page.

Further reading: Safari Developer Library

-webkit-margin-collapse
Here is a property with a quite limited practical use, but it is still worth mentioning. By default, the margins of two adjacent elements collapse, which means that the bottom distance of the first element and the top distance of the second element merge into a single gap.

The best example is two <p>s that share their margins when placed one after another. To control this behavior, we can use -webkit-margin-collapse, -webkit-margin-top-collapse or -webkit-margin-bottom-collapse. The standard value is collapse. The separate value stops the sharing of margins, which means that both the bottom margin of the first element and the top margin of the second are included.



Further reading: Safari Developer Library

-webkit-box-reflect
Do you remember the days when almost every website featured a reflection of either its logo or some text in the header? Thankfully, those days are gone, but if you’d like to make a subtle use of this technique for your buttons, navigation or other UI elements with CSS, then -webkit-box-reflect is the property for you.

It accepts the keywords above, below, left and right, which set where the reflection is drawn, as well as a numeric value that sets the distance between the element and its reflection. Beyond that, mask images are supported as well (see -webkit-mask for an explanation of masks). The reflection is created automatically and has no effect on the layout. Following elements are created using only CSS, and the second button is reflected using the -webkit-box-reflect-property.



Examples

This reflection would be shown under its parent element and have a spacing of 5 pixels:


-webkit-box-reflect: below 5px;

This reflection would be cast on the right side of the element, with no distance (0); additionally, a mask would be applied (url(mask.png)):


-webkit-box-reflect: right 0 url(mask.png);

Further reading: Safari Developer Library

-webkit-marquee
Here is another property that recalls the good ol’ days when marquees were quite common. Interesting that this widely dismissed property turns out to be be useful today, when we shift content on tiny mobile screens that would otherwise not be fully visible without wrapping.

The weather application by ozPDA makes great use of it. (If you don’t see shifting text, just select another city at the bottom of the app. WebKit browser required.)

Example


.marquee {
white-space: nowrap;
overflow:-webkit-marquee;
width: 70px;
-webkit-marquee-direction: forwards;
-webkit-marquee-speed: slow;
-webkit-marquee-style: alternate;
}

There are some prerequisites for the marquee to work. First, white-space must be set to nowrap if you want the text to be on one line. Also, overflow must be set to -webkit-marquee, and width set to something narrower than the full length of the text.

The remaining properties ensure that the text scrolls from left to right (-webkit-marquee-direction), shifts back and forth (-webkit-marquee-style) and moves at a slow rate (-webkit-marquee-speed). Additional properties are -webkit-marquee-repetition, which sets how many iterations the marquee should pass through, and -webkit-marquee-increment, which defines the degree of speed in each increment.

Further reading: Safari Developer Library

Gecko-Only Properties
font-size-adjust
Unfortunately, this useful CSS3 property is supported only by Firefox at the moment. We can use it to specify that the font size for a given element should relate to the height of lowercase letters (x-height) rather than the height of uppercase letters (cap height). For example, Verdana is much more legible at the same size than Times, which has a much shorter x-height. To compensate for this behavior, we can adjust the latter with font-size-adjust.

This property is particularly useful in CSS font stacks whose fonts have different x-heights. Even if you’re careful to use only similar fonts, font-size-adjust can provide a solution when problems arise.

Example

If Verdana is not installed on the user’s machine for some reason, then Arial is adjusted so that it has the same aspect ratio as Verdana, which is 0.58 (at a font size of 12px, differs on other sizes).


p {
font-family:Verdana, Arial, sans-serif;
font-size: 12px;
font-size-adjust: 0.58;
}



Supported by: Gecko.

Further reading: Mozilla Developer Network

image-rendering
A few years ago, images that were not displayed at their original size and were scaled by designers, could appear unattractive or just plain wrong in the browser, depending on the size and context. Nowadays, browsers have a much better algorithm for displaying resized images, however, it’s great to have a full control over the ways your images will be displayed when scaled, especially with responsive images becoming a de facto standard in responsive Web designs.

This Gecko-specific property is particularly useful if you have an image with sharp lines and want to maintain them after resizing. The relevant value would be -moz-crisp-edges. The same algorithm is used at optimizeSpeed, whereas auto and optimizeQuality indicate the standard behavior (which is to resize elements with the best possible quality). The image-rendering property can also be applied to <video> and <canvas>  elements, as well as background images. It is a CSS3 property, but is currently supported only by Firefox.



It’s also worth mentioning -ms-interpolation-mode: bicubic, although it is a proprietary Internet Explorer property. Nevertheless, it enables Internet Explorer 7 to render images at a much higher quality after resizing which is useful because by default this browser handles such tasks pretty poorly.

Supported by: Gecko.

Further reading: Mozilla Developer Network

-moz-border-top-colors
This property could be filed under ‘eye-candy’. It allows you to assign different colors to borders that are wider than 1 pixel. Also available are -moz-border-bottom-colors, -moz-border-left-colors and -moz-border-right-colors.

Unfortunately, there is no condensed version like -moz-border-colors for this property, so the border property must be set in order for it to work, whereas border-width should be the same as the number of the given color values. If it is not, then the last color value is taken for the rest of the border.

Example

Below, the element’s border would have a standard color of orange applied to the left and right side (because -moz-border-left-colors and -moz-border-right-colors are not set). The top and bottom borders have a kind of gradient, with the colors red, yellow and blue.


div {
border: 3px solid orange;
-moz-border-top-colors: red yellow blue;
-moz-border-bottom-colors: red yellow blue;
}



Supported by: Gecko.

Further reading: Mozilla Developer Network

Mixed Properties
-webkit-user-select and -moz-user-select
There might be times when you don’t want users to be able to select text, whether to protect it from copying or for another reason. One solution is to set -webkit-user-select and -moz-user-select to none. Please use this property with caution: since most users are looking for information that they can copy and store for future reference, this property is neither helpful nor effective. In the end, the user could always look up the source code and take the content even if you have forbidden the traditional copy-and-paste. We do not know why this property exists in both WebKit and Gecko browsers.

Supported by: WebKit, Gecko.

Further reading: Safari Developer Library, Mozilla Developer Network

-webkit-appearance and -moz-appearance
Ever wanted to easily camouflage an image to look like a radio button? Or an input field to look like a checkbox? Then appearance will come in handy. Even if you wouldn’t always want to mask a link so that it looks like a button (see example below), it’s nice to know that you can do it if you want.

Example


a {
-webkit-appearance: button;
-moz-appearance: button;
}

Supported by: WebKit, Gecko.

Further reading: Safari Developer Library, Mozilla Developer Network

text-align: -webkit-center/-moz-center
This is one property (or value, to be exact) whose existence is quite surprising. To center a block-level element, one would usually set margin to 0 auto. But you could also set the text-align property of the element’s container to -moz-center and -webkit-center. You can align left and right with -moz-left and -webkit-left and then -moz-right and -webkit-right, respectively.

Supported by: WebKit, Gecko.

Further reading: Safari Developer Library, Mozilla Developer Network

CSS 2.1. Properties
counter-increment
How often have you wished you could automatically number an ordered list or all of the headings in an article? Unfortunately, there is still no CSS3 property for that. But let’s look back to CSS 2.1, in which counter-increment provides a solution. That means it’s been around for several years, and even supported in Internet Explorer 8. Did you know that? Me neither.

In conjunction with the :before pseudo-element and the content property, counter-increment can add automatic numbering to any HTML tag. Even nested counters are possible.

Example

For numbered headings, first reset the counter to start at 1:


body {counter-reset: thecounter}

Every <h1> would get the prefix “Section,” including a counter that automatically increments by 1 (which is default and can be omitted), where thecounter is the name of the counter:


.counter h1:before {
counter-increment: thecounter 1;
content:"Section"counter(thecounter)":";
}

Example

For a nested numbered list, the counter is reset and the automatic numbering of <ol> is switched off because it features no nesting:


ol {
    counter-reset: section;
    list-style-type: none;
}

Then, every <li> is given automatic incrementation, and the separator is set to be a point (.), followed by a blank.


li:before {
    counter-increment: section;
    content: counters(section,".")"";
}

<ol>
<li>item</li><!-- 1 -->
<li>item  <!-- 2 -->
<ol>
<li>item</li><!-- 1.1 -->
<li>item</li><!-- 1.2 -->
</ol>
</li>
<li>item</li><!-- 3 -->
<ol>

Supported by: CSS 2.1., all modern browsers, IE 7+.

Further reading: W3C

quotes
Are you tired of using wrong quotes just because your CMS doesn’t know how to properly convert them to the right ones? Then start using the quotes property to set them how you want. This way, you can use any character. You would then assign the quotes to the desired element using the :before and :after pseudo-elements. Unfortunately, the otherwise progressive WebKit browsers don’t support this property, which means no quotes are shown at all.

Example

The first two characters determine the quotes for the first level of a quotation, the last two for the second level, and so on:


q {
quotes: '«' '»' "‹" "›";
}

These two lines assign the quotes to the selected element:


q:before {content: open-quote}
q:after  {content: close-quote}

So, <p><q>This is a very <q>nice</q> quote.</q></p>  would give us:
«This is a very ‹nice› quote.»

Supported by: CSS 2.1., all browsers except WebKit, even IE 7+.

Further reading: W3C

Question: To add the character directly, does the CSS document have to have a UTF-8 character set? That’s a tough one. Unfortunately, I can’t give a definitive answer. My experimentation has shown that no character set has to be set for the quotes property to work properly. However the utf-8 character set doesn’t work because it shows “broken” characters (for example, “»”). With the iso-8859-1 character set, everything works fine.

This is how the W3C describes it: “While the quotation marks specified by ‘quotes’ in the previous examples are conveniently located on computer keyboards, high-quality typesetting would require different ISO 10646 characters.”

CSS3 Properties You May Have Heard About But Can’t Remember
To round out things, let’s go over some CSS3 properties that are not well known and maybe not as appealing as the classic ones border-radius and box-shadow.

text-overflow
Perhaps you’re familiar with this problem: a certain area is too small for the text that it contains, and you have to use JavaScript to cut the string and append “…” so that it doesn’t blow out the box.

Forget that! With CSS3 and text-overflow: ellipsis, you can force text to automatically end with “…” if it is longer than the width of the container. The only requirement is to set overflow to hidden. Unfortunately, this is not supported by Firefox but will hopefully be implemented in a coming release.

Example


div {
width: 100px;
text-overflow: ellipsis;
}



Supported by: CSS 3, all browsers except Firefox, even IE6+.

Further reading: W3C

word-wrap
With text in a narrow column, sometimes portions of it are too long to wrap correctly. Link URLs especially cause trouble. If you don’t want to hide the overflowing text with overflow: hidden, then you can set word-wrap to break-word, which causes it to break when it reaches the limit of the container.

Example


div {
width: 50px;
word-wrap: break-word;
}



Supported by: CSS 3, all browsers, even IE6+.

Further reading: W3C

resize
If you use Firefox or Chrome, then you must have noticed that text areas by default have a little handle in the bottom-right corner that lets you resize them. This standard behavior is achieved by the CSS3 property resize: both.

But it’s not limited to text areas. It can be used on any HTML element. The horizontal and vertical values limit the resizing to the horizontal and vertical axes, respectively. The only requirement is that overflow be set to anything other than visible.



Supported by: CSS3, all the latest browsers except Opera and Internet Explorer.

Further reading: Safari Developer Library

background-attachment
When you assign a background image to an element that is set to overflow: auto, it is fixed to the background and doesn’t scroll. To disable this behavior and enable the image to scroll with the content, set background-attachment to local.



Supported by: CSS 3, all the latest browsers except Firefox.

Further reading: Safari Developer Library

text-rendering
With more and more websites rendering fonts via the @font-face attribute, legibility becomes a concern. Problems can occur particularly at small font sizes. While there is still no CSS property to control the subtle details of displaying fonts online, you can enable kerning and ligatures via text-rendering.

 Gecko and WebKit browsers handle this property quite differently. The former enables these features by default, while you have to set it to optimizeLegibility in the latter.



Supported by: CSS3, all WebKit browsers and Firefox.

Further reading: Mozilla Developer Network

transform: rotateX/transform: rotateY
If you’ve already dived into CSS3 and transformations a bit, then you’re probably familiar with transform: rotate(), which rotates an element around its z-axis.

But did you know that it is also possible to spin it “into the deep” (i.e. around its x-axis and y-axis)? These transformations are particularly useful in combination with -webkit-backface-visibility: hidden, if you want to rotate an element and reveal another one at its back. This technique is described by Andy Clarke in his latest book, Hardboiled Web Design, and it can be seen in action on a demo page.

Example

If you hover over the element, it will turn by 180°, revealing its back:


div:hover {
transform: rotateY(180deg);
}



Quick tip: To just mirror an element, you can either set transform to rotateX(180deg) (and respectively rotateY) or set transform to scaleX(-1) (and respectively scaleY).

Supported by: CSS3, only WebKit browsers, in combination with -webkit-backface-visibility only Safari and iOS (iPhone and iPad).

Further reading: Safari Developer Library (transform: rotate, -webkit-backface-visibility)

Some Last Words
As you hopefully have seen, there are many unknown properties that range from being nice to hav to being very useful. Many of them are still at an experimental stage and may never leave it or even be discarded in future browser releases. Others will hopefully be adopted by all browser manufacturers in coming versions.

While it is hard to justify using some of them, the WebKit-specific ones are gaining more and more importance with the success of the iOS devices and Android. And of course some CSS3 properties are more or less ready to be used now.

And if you don’t like vendor-specific properties, you can see them as experiments that still could be implemented in the code to improve the user experience for users browsing with the modern browsers. By the way, CSS validator from the W3C now also supports vendor-specific properties, which result in warnings rather than errors.

Happy experimenting!

(al)



© Christian Krammer for Smashing Magazine, 2011. |
Permalink | 
Post a comment | 
Smashing Shop |
Smashing Network |
About Us


Post tags: CSS

]]></description>
<dc:subject>Coding CSS</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d9ff39709138/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:CSS"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.facebook.com/note.php?note_id=10150169682072742">
    <title>LEJOG</title>
    <dc:date>2011-05-10T02:29:06+00:00</dc:date>
    <link>http://www.facebook.com/note.php?note_id=10150169682072742</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[I've been talking about my Land's End to John O'Groats cycle ride for a while, and it's now getting quite close: less than 2 weeks away! I will leave London on Saturday 21st May, take the train to Penzance, then cycle to Land's End YHA. On Sunday morning (22nd) I'll cycle to the "official" start line, then aim towards Scotland. I'm due to reach John O'Groats on Thursday 9th June, then I'll cycle to Wick and catch the train to Inverness. I'll stay at Inverness overnight, and catch the first train to London on Friday morning (10th June).Assuming that the train from Inverness to London runs on time, I'll then cycle across London and take another train to Southampton. That way I can join in their WNBR before I head back home to Croydon, so I'll probably get home at about midnight. Saturday (11th) is the London WNBR and Sunday (12th) is the Brighton WNBR. Then back to work on Monday morning (13th).I worked out a preliminary route in December, and booked a few nights of accommodation. I've been working on it since then, and I've now booked all of my accommodation. The route is pretty much finalised, although I may make a few last minute changes (particularly if I get lost). I've split the route map into 2 parts, to work around the Bikely saving problems:

Part 1: Penzance to Ingleton
Part 2: Ingleton to Wick
Later on I'll try to merge the images together and stick in some dots to show where I'm staying each night.Here's a summary of the route:

Day 0 (Sat 21 May): Penzance to Land's End (14 km), staying at Land's End YHA
Day 1 (Sun 22 May): Land's End to Gweek (83 km), staying at Trevone House
Day 2 (Mon 23 May): Gweek to Downderry (91 km), staying at Carbeil Naturist Holiday Park
Day 3 (Tue 24 May): Downderry to Exeter (111 km), staying at Exeter YHADay 4 (Wed 25 May): Exeter to Street (105 km), staying at Street YHADay  5 (Thu 26 May): Street to Symonds Yat (129 km), staying at The RockDay 6 (Fri 27 May): Symonds Yat to Coalport (137 km), staying at Coalport YHADay 7 (Sat 28 May): Coalport to Wybunbury (67 km), staying at Lea FarmDay 8 (Sun 29 May): Wybunbury to Mankinholes (119 km), staying at Mankinholes YHADay 9 (Mon 30 May): Mankinholes to Ingleton (105 km), staying at Ingleton YHADay 10 (Tue 31 May): Ingleton to Crosby-on-Eden (130 km), staying at Wallfoot HotelDay 11 (Wed 01 Jun): Crosby-on-Eden to Abington (117 km), staying at Abington HotelDay  12 (Thu 02 Jun): Abington to Loch Lomond (133 km), staying at Loch Lomond SYHADay 13 (Fri 03 Jun): Loch Lomond to Crianlarich (119 km), staying at Crianlarich SYHADay 14 (Sat 04 Jun): Crianlarich to Glencoe (71 km), staying at Glencoe SYHADay 15 (Sun 05 Jun): Glencoe to Loch Ness (101 km), staying at Loch Ness SYHADay 16 (Mon 06 Jun): Loch Ness to Bonar Bridge (125 km), staying at Kyle HouseDay 17 (Tue 07 Jun): Bonar Bridge to Tongue (80 km), staying at Tongue SYHADay 18 (Wed 08 Jun): Tongue to Dunnet Head (92 km), staying at Dunnet Head B&BDay 19 (Thu 09 Jun): Dunnet Head to Wick (58 km), staying at Lyndon B&B (Inverness)
My estimated cycling distance from Land's End to John O'Groats is 1940 km (1212 miles). If I add on the extra bits (e.g. Penzance to Land's End, John O'Groats to Wick, and cycling around London) then I'll do over 2000 km between leaving my flat and returning. Putting that into context, I cycled about 4,800 km in the whole of 2010.

I've arranged to meet a couple of friends while I'm on my travels. If I'm passing through your area, and you'd like to meet up, I'd be happy to see a familiar face. I'll be taking my mobile phone and netbook with me, and I'll get a mobile internet dongle. However, I'll probably only check my email once a day, and I'll have to keep my downloads to a minimum, so I may not reply to messages until I get home.











]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:e45bf9b2fc27/</dc:identifier>
</item>
<item rdf:about="http://www.geekculture.com/joyoftech/joyarchives/1537.html">
    <title>The Joy of Tech comic... If tech journalists went to a Sci-Fi convention.</title>
    <dc:date>2011-05-08T04:57:08+00:00</dc:date>
    <link>http://www.geekculture.com/joyoftech/joyarchives/1537.html</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:f68617d903f0/</dc:identifier>
</item>
<item rdf:about="http://freelanceswitch.com/money/nine-factors-to-consider-when-determining-your-price/">
    <title>Nine Factors to Consider When Determining Your Price</title>
    <dc:date>2011-05-06T21:55:58+00:00</dc:date>
    <link>http://freelanceswitch.com/money/nine-factors-to-consider-when-determining-your-price/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:43a854a8d0c5/</dc:identifier>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/05/06/how-to-get-sign-off-for-your-designs/">
    <title>How To Get Sign-Off For Your Designs</title>
    <dc:date>2011-05-06T10:00:16+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/05/06/how-to-get-sign-off-for-your-designs/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[    “How did you do that?” My colleague Leigh sounded impressed. He had been working with a problem client for weeks trying to get design approval. Then I came along and was able to get signed-off in a single conference call. “Can you teach me how you did that?” he asked. I mumbled something about years of experience, but the truth was I didn’t have a clue. It just seems I can find design approval easier than most.
As I thought about it I realised there are actually quite a lot of things that have become second nature for me over the years. But I have learnt the hard way through many painful projects. Unfortunately because I started designing websites back in 1994 there was nobody around to teach me this stuff. I wish somebody could have just shown me how to avoid all of those endless revisions. Hopefully some of the advice I share with you here can help you avoid years of pain and suffering.
My first piece of advice focuses on the old adage — prevention is better than cure.
Prevention Is Better Than CureIn our enthusiasm to start a project we often don’t take the time to prepare the client. For many clients this will be their first web project. So they may not really understand what that involves or what their role is.
 At our company, we pre-empt common issues and prepare the client by giving them a PDF factsheet about working with designers.
So before you leap into your next project, let me recommend you complete the following steps:
Educate the client about their role Take the time to explain to the client what you expect from them. I always make the point of telling our clients to focus on problems, not solutions. I encourage them to avoid making design suggestions, but rather to point out why they feel a design is wrong. The job then falls onto us to come up with the right solution for their problem.Take the client through a process Because many clients are not familiar with the Web design process, take the time to explain it. This has two benefits. When people are in unfamiliar territory they attempt to take control. This leads to micromanagement. By explaining your process you reassure them, giving them confidence. Second, explaining your process demonstrates you are the expert and puts you in the driver’s seat.Pre-empt common issues We all know there are certain issues that always come up. Things like “make my logo bigger“, “can we use comic sans?” or “put everything above the fold” have become standing jokes in the Web design community. Why then would we not pre-empt these issues? By talking about them upfront it makes it much harder for the client to mention them later. After all, none of us likes to be the person who is predictable, making the ‘dumb’ request. WeeNudge is a superb site for pre-empting common issues and educating your clients about the Web.
Even once your project is up and running prevention can still be better than curing. For example, when you complete a design and show it to the client you can do a lot to prevent problems from coming up.
First, you should always present the design. This is your chance to justify your approach. Refer back to previously agreed upon work. If you have used moodboards, point out how the design draws on them. The same is true for wireframes, personas or any other elements the client has signed off on. It’s hard for the client to reject a design built on elements they have already agreed upon. You must never hand over a design without explanation.
 Never simply send a design to a client asking them what they think. Take the time to present the design and ask for specific feedback.
Secondly, be aware the client may show the design around. This is problematic. Although you may have been careful to explain the decision making process to the client, others will not have this background information. This inevitably means the third parties will fallback on personal opinion and potentially sway the client in the wrong direction.
The solution to this problem is not to present your design as either a static image or as a final webpage. Instead, record a short video talking the client through the design. This video can then be passed on to whoever the client wishes to show. That way whoever views it will get all the information they require to provide educated feedback.
Finally, control the kind of feedback you receive. Never ask a client what they think of the design. Ask them instead how they believe their users will react to the design or whether it meets their business objectives. You can even go as far as asking them whether the design reflects the signed-off moodboards or wireframes. If you can get them saying yes to these questions they will realize that even if they personally dislike the design it is still the right solution.
Of course, when I was able to get the design signed-off on Leigh’s project, I hadn’t had a chance to lay down any of this groundwork. So what other factors came into play that made me successful where he had failed? One was my attitude going into the discussion.
Get Your Attitude RightLeigh had been trying to get design sign-off for weeks. Both he and the client were frustrated. Battle lines had been drawn despite the fact both sides wanted the project completed.
This is a common problem. We start to see our clients as the enemy. In fact, there are many cases where bad past experience puts us on the defense from the outset. At every turn we start to build into our controls the limitations for the number of iterations and endeavors of the client’s influence. We even moan to one another how life would be better without clients.
 Because of bad past experiences with clients we can often get off on the wrong foot with new clients.
It’s not surprising that design sign-off becomes a battle. We are looking for a fight even before we begin. It’s vitally important that we change this mindset and see every new client relationship as an exciting opportunity and not as a potential point of conflict.
When dealing with Leigh’s client, I had the advantage of not being on the defensive. My ego had not been bruised by rejection. You need to leave your ego at the door. Often it is worth picking your battles and letting the client win from time to time. This helps them feel their contribution is worthwhile and valued. It is when the client feels ignored or isolated from the process that conflict arises.
By getting your own attitude right, this goes a long way to establishing a good relationship with the client. This is key to successful design sign-off.
Get The Relationship RightWe would love to deny that the client is an intrinsic part of the Web design process. However, you can be the best Web designer in the world, but if the client isn’t on your side, you are wasting your time and ultimately the project will cost you money.
In theory we should all be experts in establishing good relationships with our clients. After all, we pride ourselves on empathizing with users and understanding their motivation and needs. We should then be able to apply these same skills to our clients. If we then understand their needs and motivations, it is much easier to establish a good relationship.
Working closely with them helps. The temptation is to hold the client at arm’s length and minimize their involvement in the project. However, if you want to get the client on board, you are better off working with them collaboratively. This means they will feel a sense of ownership over the design, and are more likely to sign off on it.
 We find wireframing with the client is an excellent way of involving them in the process and building a better working relationship.
The other advantage of collaboration is that it makes the client feel important. It provides them with a sense of purpose in the relationship rather than just being a spare part to rubber stamp your decisions. I tell clients that it is their site and their decision, I am simply there to give advice on the best practice. This allows them the sense of control that is so important.
“But what if they make silly decisions?” you may ask. Often they will listen to you simply because you aren’t arguing with them. However when they still pursue an unwise course of action, I do not allow things to descend into a fight. Instead I make my position clear and leave the decision over to them. I have also been known to use phrases like “that is a brave decision” or “that’s an unusual approach” which is a less confrontational way of telling them they are being dumb.
Giving the client a sense of control doesn’t mean you are a doormat. In fact, I don’t believe clients want that. They want you to control the process.
Take ControlAlthough clients want to feel involved and have a sense of control, they don’t want to run the show. Most clients only interfere in the process when they feel you are out of your depth. It is important that we always appear to be the authority in the project.
I think this is the primary reason I managed to get sign-off on Leigh’s project. On our conference call I took control. I was careful not to be arrogant or push the client out, but it was clear I was in charge of the process. I achieved this using the following techniques:
I was confident Sounding confident can often be half the battle. Listen to the client and make a recommendation. Know what you think and communicate it confidently. If you sound like an expert people will treat you as one. However, be careful not to come across as arrogant. Just know your mind.I was willing to challenge When a client asks for something you disagree with, say so. That said, don’t immediately jump in with why it is wrong. Instead ask the client why they want to take a particular approach. Often the client hasn’t really thought things through and a few well placed questions will help them to conclude it isn’t sensible. Also by asking questions you demonstrate you have thought things through in a lot more depth than they have.I referred to third party material A great way of demonstrating your expertise and control of the situation is by referring to third party material. Stats, quotes from other experts and references to case studies go a long way. Show that you know your stuff and that you have solved these problems before.I kept us moving forward Design sign-off can be full of endless discussion and navel gazing. The more a client thinks about a design the more likely they are to second guess your decisions. Keep the momentum going by focusing on the deadline and the fact that design can always be tweaked once it goes live. Clients will often take notice of research carried out by people like Jakob Nielsen over your own opinion.
By setting your ego aside, establishing a good relationship and taking control of the process you can usually get the client to sign-off on a design. However, like all things in life, no approach is full proof. In such cases I have a couple of fallback positions which have been known to work.
What To Do If A Client Digs In Their Heels?Some clients can be very dogmatic and no amount of careful management can lead them down the right road. In such situations I use three techniques in the following order:
Suggest testing If the client wants one thing and you recommend another, suggest testing both approaches with real users. It’s hard to say no when services like verifyapp.com are so cheap. Often clients will give in at this point because they don’t wish to be proved wrong.Ask to have your name removed from the project Often client’s don’t believe that a change they are suggesting is really that bad a thing. They just think we are being overly precious. One way to show how serious you are about your concerns is to say that if the clients’ changes are implemented you would like your involvement with the project to be kept secret. As designers are normally so keen to promote their work, this makes a client realize how unhappy you are.Give the client what he or she wants It is important to remember at the end of the day that it is the client’s website, not yours. I know that some people advocate walking away from a project before compromising their ‘standards’. However, personally I think that is unprofessional in all but the most extreme cases. If a client is really insistent and unwilling to listen to reason I will deliver the site to the exact specifications they requested. Tools like verifyapp makes it very easy to quickly test design. This can be a great way of diffusing disagreements.
I imagine this post will generate mixed reactions. Some of what I have said here seems to be manipulative. I believe it is simply nudging the client in the right direction to give them what they ultimately want — a great website.
Other things won’t sit well with some designers. Suggesting you give the client what they want or letting them win even some battles might smack too much of compromise. Nevertheless, in my opinion this is what a collaborative relationship is about.
However, I am interested to hear your approaches. Where do you draw the line between what you believe is right and what the client wants? What techniques do you use for nudging the client in the right direction? Do you set limits on revisions or the client’s involvement in the process? Let me know in the comments.
(jvb) (il)
© Paul Boag for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us Post tags: Design, sign-off 
]]></description>
<dc:subject>Business How-To Design sign-off</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:1cf3cff86a65/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Business"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:How-To"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:sign-off"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://37signals.com/svn/posts/2882-the-incredible-delivery-system-of-indias-dabbawallahs">
    <title>The incredible delivery system of India's dabbawallahs - (37signals)</title>
    <dc:date>2011-05-06T03:36:27+00:00</dc:date>
    <link>http://37signals.com/svn/posts/2882-the-incredible-delivery-system-of-indias-dabbawallahs</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:dd75b8378896/</dc:identifier>
</item>
<item rdf:about="http://developer.yahoo.com/blogs/ydn/posts/2011/05/instagram-in-your-browser-css-stress-test-firefox-and-chrome-extensions-and-a-very-special-dictionary/">
    <title>Instagram in your browser, CSS Stress Test, FireFox and Chrome extensions, and a dictionary</title>
    <dc:date>2011-05-05T20:38:07+00:00</dc:date>
    <link>http://developer.yahoo.com/blogs/ydn/posts/2011/05/instagram-in-your-browser-css-stress-test-firefox-and-chrome-extensions-and-a-very-special-dictionary/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Celebrate CSS AND Cinco de Mayo with Tech Thursday: 



The Simpsons in CSS. 

Awesome instagram-like retro and vintage style for your images with Vintage JS.

Create pulsing background colors in CSS3 using keyframe animations. 

CSS Stress Testing and Performance Profiling.

Create triangles in CSS.



And in other news: 



How one engineer turned down an offer from Microsoft to go full-time on GitHub.

A Dictionary of Algorithms and Data Structures.

Slides from a JSConf 2011 talk given by @sh1mmer on Multi-tiered Node.js architectures.

Creating a web development environment using Google Chrome extensions. 

Twenty essential Firefox 4 addons/extensions for web developers.

Want to build your own social network? Here are 10 Open-Source Platforms that might help.

Lovely UI, a collection of mobile interface design ideas.

]]></description>
<dc:subject>Technology TechThursday</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:4a8a74f9f7ae/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Technology"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:TechThursday"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://googleblog.blogspot.com/2011/05/world-of-curiosity-peek-at-searches.html">
    <title>A world of curiosity: a peek at searches around the globe</title>
    <dc:date>2011-05-05T16:34:00+00:00</dc:date>
    <link>http://googleblog.blogspot.com/2011/05/world-of-curiosity-peek-at-searches.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Every day, people come to Google Search to ask questions. Through Google, questions become answers, and answers lead to the next set of questions. These people come from around the world and all walks of life, speaking hundreds of different languages, typing in search queries every single day. Today we’re sharing the Search Globe, a new visual display representing one day of Google searches around the world—visualizing the curiosity of people around the globe.

This visualization was developed and designed by the Google Data Arts Team using WebGL, a new technology for modern browsers that uses your computer’s hardware to generate fast, 3D graphics. As a result, you need a WebGL-enabled browser, like Google Chrome, to see the Globe. You can learn more about the technology behind the Globe on the Google Code Blog.

The Search Globe visualizes searches from one day, and shows the language of the majority of queries in an area in different colors. You’ll see a bright landscape of queries across Europe, and parts of Asia for instance, but unfortunately we see many fewer searches from parts of the world lacking Internet access—and often electricity as well—like Africa. We hope that as the Internet continues to become more accessible over time and people continue to ask questions, we’ll see this globe shine brightly everywhere.


We’ve also open sourced this platform so that developers can build their own globes using their own data, and we look forward to seeing other globes orbiting around the web.

Update 12:45PM: If you'd like to embed the Search Globe on your own site, here's the embed code:

<iframe src="http://data-arts.appspot.com/globe-search/embed" height="500" width="500"></iframe>

Enjoy!

Posted by Valdean Klump, Google Data Arts Team
  
]]></description>
<dc:subject>search</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d30ade7f481f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:search"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://37signals.com/svn/posts/2898-whats-more-delegating-isnt">
    <title>QUOTE: What’s more, delegating isn’t…</title>
    <dc:date>2011-05-04T15:25:00+00:00</dc:date>
    <link>http://37signals.com/svn/posts/2898-whats-more-delegating-isnt</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[What’s more, delegating isn’t easy for me. Even though the paperwork and other chores were piling up, I still had a hard time letting go. I have a feeling I’m not alone in this. It’s tough for the person who started the business to begin to let go. For more than a decade, I’ve been involved in every decision at this company, from which hosting company to use to what brand of paper towel goes in the kitchen. When you’re that used to having every decision run through you, it can be a bit unnerving to surrender control. I understand that it’s silly to believe that every small decision needs to run through you. But it’s such a primal instinct when your business is your baby.

—Jason’s latest Inc. Magazine column on hiring an assistant

 
]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d915c9aa8ed9/</dc:identifier>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/05/04/useful-photoshop-tools-and-techniques-for-your-workflow/">
    <title>Useful Photoshop Tools and Techniques For Your Workflow</title>
    <dc:date>2011-05-04T14:21:32+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/05/04/useful-photoshop-tools-and-techniques-for-your-workflow/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[    Productivity is a crucial asset of professional designers. Photoshop is an extremely powerful application for photo processing and image manipulation, and we can make it even more powerful by using handy tools, actions, plugins and templates to save time for solving mundane regular tasks. The better our professional tool set is, the more time we can spend to focus on the actual design process rather than the tool we are using to implement it on screen.
Here at Smashing Magazine, we’re continuously searching for recent time-saving, useful Photoshop resources for our readers, to make the search of these ever-growing techniques easier. We hope that these techniques will help you improve your design skills as well as your professional workflow when using Adobe Photoshop. A sincere thanks to all designers and developers whose articles are featured in this roundup. We respect and appreciate your contributions to the design community.
Useful Photoshop ToolsMr. StacksA small Photoshop script that can quickly generate storyboards, stacks and PDFs for project CDs, client presentations or anything else — right from the Layers Comps in your Photoshop file. The script would be useful for a series of animations, storytelling elements in a design and advertising.

Photoshop Tych PanelEvery photographer and Web designer who has spent time arranging images and photographs knows that scaling and resizing takes time. But even existing templates are unnecessary when you try out Reimund Trost’s latest little Tych Panel for Photoshop. It completely automates the n-Tych creation process, and it has a lot of layouts to choose from. The tool has been open sourced by Reimund Trost and can be freely used, modified and redistributed in any way.

Pixel Proliferation: A Toolset For Managing Screen ResolutionsThis tool will help you to manage screens resolutions more easily. The toolset contains a collection of PS5 marquee-tool presets for common screen resolutions, covering fixed-screen resolution sizes, ratios for less common resolutions and standard ratios. Also, a collection of layered CS5 PSDs provides common devices for computing and design presentations. Finally, there is a reference chart for resolutions and design landscape. Useful.

Generating CSS positions for SpritesA Photoshop plug-in by Arnau March that generates sprites with your given CSS file. You can then add the sprite locations and also create hover and click effects with the help of jQuery. You might want to check out CSS Sprite: Photoshop Script Combines Two Images for CSS Hover as well: the article presents a simple JSX Photoshop script for creating image sprites, and you can also assign a keyboard shortcut to it.

Golden CropGolden Crop is a Photoshop Script making cropping with respect to division rules (golden rule, 1/3 rule) very easy with visual guides. Requires installed Photoshop CS2, CS3, CS4 or CS5 (either x86 or amd64 version). Works on Windows and Mac.

Browser UIThe Browser UI is an action that creates a browser window around any size Photoshop document you can throw at it. The free version includes only Internet Explorer 6 UI. The deluxe edition with current versions of Chrome, Safari and Firefox is not free ($3).

Open With Photoshop 0.6An add-on for Firefox that is a new companion for Web and graphic designers to open up any Web image with Adobe Photoshop via a single and quick mouse click. A useful time saver.

foxGuide: Photoshop Guides Inside FirefoxA Firefox extension that displays horizontal and vertical guides. You can move or remove the floating guides on a webpage just the way you do it Photoshop with the help of foxGuide. Guides are useful for laying out elements symmetrically, structure a design and improving the overall layout.

Modular Grid Pattern: create a modular grid in Photoshop, Fireworks and GIMPModular Grid Pattern is application for web designers, which helps you quickly and easily to create a modular grid in Adobe Photoshop, Adobe Fireworks, GIMP, Microsoft Expression Design and other applications. The extension requires Adobe Photoshop CS5

960gs ExtendScript for Photoshop CS5The script is very raw and crashes easily with the wrong input or settings. However, it has some nice features such as disabling gutters by putting 0 for gutter width and optionally adding evenly-spaced horizontal guides.

Workspace import/export script for PhotoshopJohn Nack has written a script to enable simple importing and exporting of Photoshop workspaces. It should work in both CS4 and CS5 (although it is a little more robust in CS5), so you can use it to migrate workspaces from CS4 to CS5 in addition to using it to enable easier sharing of CS5 workspaces between machines or people.

Subpixel Hinted Font-RenderingThis technique is great for your concepts when you want to simulate actual text in your Photoshop file. Thomas Maier has saved his workflow as an action. You can download the subpixel-rendering technique and use it for free.

GuideGuide 1.0What actually started out as a script that drew guidelines at the middle of the document, turned out to become a quite helpful extension for Photoshop when working with columns, rows and midpoints in CS4 & CS5. You can download Cameron McEfee’s GuideGuide to help you find midpoints, make margins and create rows and columns much easier while working in Photoshop.

Photoshop Animation to Sprite SheetThis tool enables you to easily export a framed animation in Adobe Photoshop to a packed sprite sheet. The tool is available for Photoshop CS3 or higher. Developed by Peter Jones.
Automatic Tile CutterSome images are made of dozens to thousands of tile images, depending on the zoom level. At the distant zoom levels you only need a few images to cover a large area. Creating and then uniquely naming each of these images would be a daunting task if you had to do it by hand. Will James has solved this problem and released a batch processing script to use with Photoshop 7 or CS that will carve all the titles you need and name them exactly as you need them named.
The Image Processor ScriptThe Image Processor in Photoshop CS4 is a simple way to quickly resize and convert a bunch of images to JPEG, PSD or TIFF format. The modified script allows exporting CMYK JPEGs as CMYK, as well as support for exporting PNG images.
Further ResourcesAdobe Photoshop ScriptsTrevor Morris provides more than a dozen of free scripts for Adobe Photoshop. All scripts are commented, making them easy to modify and/or learn from. Among other scripts, you’ll find Layers to Comps, Rename Layers, Sort Layers and Distribute Layers Vertically scripts.

The Photoshop Scripting Community ForumPS-Scripts is a community for Photoshop scripting and automation. The site contains articles Members of the community release their script on the site’s forum; for instance, you can find the Smart Object links panel, Listing fonts used in PSD files (alternative), Distribute Layers. Unfortunately, the forum’s activity is quite low, although the scripts are being released quite often.

Russel Brown’s Scripts PageRussel Brown provides a number of free useful Adobe Photoshop Scripts and Panels for CS4 and CS5. Among other things, Adobe Emailer Panel, Image Processor Pro and Edit Layers in ACR scripts are available.
ScriptopediaAnother community that helps to find scripts and scripters for Photoshop and other Adobe applications. The site is frequently updated; you’ll find various scripts as well as tutorials on the site.
Useful References and ArticlesThe Photoshop Etiquette Manifesto for Web DesignersThe recently updated Photoshop Etiquette can be quite useful when wanting to improve the clarity of a PSD when transferred. This site provides you with rules that will show you examples and bonus points ranging from external as well as internal file organization to exporting and design practices.

Photoshop Secret ShortcutsThis old, yet still very useful article by Nick La provides an overview of secret (i.e. not documented) Photoshop shortcuts that the author has learned from years of experience.

Photoshop Tip: Organizing LayersDaniel Mall has thought of a super handy Photoshop file organization trick that separates layer groups for different stages of a page within the same PSD. You can prefix your layer groups with a bullet  to organize your PSDs but also using a hyphen will enable you to create a horizontal divider in the context menu.

Photoshoptimize: Optimize Photoshop PerformanceTo improve the performance of Photoshop, this list of best tips will help any designer to optimize Adobe Photoshop for Mac as well as PC; from reducing cache levels to disabling export clipboard in Photoshop, and much more.

Super Crisp Font Anti-Aliasing With Sub-Pixel HintingDavid Leggett shares with us the most useful technique in creating concepts in Photoshop, especially when you’re working on a website layout in Photoshop, and want an accurate representation of what a font is going to look like in your content body. This surely helps bring the frustrating times when working with small font using anti-aliasing in Adobe Photoshop to an end.
Freebies, Goodies100+ Free HTML Email PSD TemplatesCampaignMonitor has released a large collection of freely available high quality email templates which have been thoroughly tested in more than 20 of the most popular email clients like Outlook 2010, Gmail, Lotus Notes, Apple Mail and the iPhone. They are completely free. Every template contains a Photoshop document, HTML template and a Campaign Monitor Template. The complete packages with all templates is 320 Mb.

Bottles and Cans Photoshop CS4 Actions3 exclusive Photoshop CS4 Actions that might save you some time when you are working on the next soda, wine or bottle label design.

Pricing Table PSD TemplateA free pricing table template with various button states.

Search and Email Input Text PSD TemplateA free template for search field and email input fields.  You can find new freebies released every Friday on the site.

Free PSD: Seven TicketsSeven Tickets inspired by Seven Dribbble Shots.

Free PSD: Simple Download ButtonsOrman Clark has released a set of simple download buttons in three different states: nroaml,normal, hover and active. These download buttons use a subtle icon to suggest the action of downloading. The download includes the editable PSD. You can download even more PSD buttons.


Album Cover Art Carousel (PSD)The download (PSD) includes styles for the covert art, the hover and/or active state, and the next/previous arrows. Try experimenting with the colour of the album cover hover state, a vivid orange looks great.

Flip-Clock Countdown (PSD)A groovy little countdown flip-clock design: the perfect event/product launch companion.

Big Green Button (PSD)This template is perfect for when a regular sized button just isn’t cutting it; this big fat round button should grab a visitors’ attention with ease. The download (PSD) displays a pricing plan as an example.

Free PSD: Tagtastic Tag CloudThe topic of this article is a nice and simple little tag cloud – tagtastic!

The Ultimate Free Master PSD FileThe download features one master .PSD file with folders, assets, grid folders and layer comps ready to be used. The master file is using the best practice featured in Dan Rose’s Photoshop Etiquette.

OS X Leopard GUI  FreebieA freebie including a GUI set for Mac’s OS X Leopard operative system for all Web developers who want to integrate great designs into their applications. This package includes fully editable vector Photoshop sources and a customizable Fireworks PNG file; the original fonts that were utilized for the making of the GUI are also included.

Tabs Icons: Interface Icons for iOS & DesignersYou can find free iPhone tab bar icons for Mac OSX Lion and iOS here which are specially  designed and optimized for toolbars and tab bars. All these icons have been created for iPhone, iPhone 4 and iPad and are provided as fully editable and scalable Photoshop PSD files.

DesignmooDesignmoo is a community for discovering and sharing free PSDs, vectors, textures, patterns and fonts.
Premum PixelsPremium Pixels is Orman Clark’s remarkable resource with free design resources and tutorials.
Last ClickPSDcleanupIt’s very difficult for coders to work with someone else’s PSD files if they’re not organized correctly. This online service helps fixes that problem by organizing PSDs and polishing them for you. We aren’t advertising here, but it’s quite sad that services like this one exist at all.

Method & CraftMethod & Craft features the stories behind the work and the techniques professionals have developed throughout their professional career. A very useful resource for designers permanently looking to improve their skills.

Related ArticlesMastering Photoshop: Unknown Tricks and Time-SaversKeyboard shortcuts can be very useful and are truly essential to our busy, daily workflow. Occasionally, we stumble upon a shortcut we wish we’d learned years ago. Please note that the shortcuts listed in this article are for Photoshop CS4 on OS X and can also be converted apposite to Windows.

Pixel Perfection When Rotating, Pasting And Nudging In PhotoshopWhen creating Web and app interfaces, most designers slave over every single pixel, making sure it’s got exactly the right color, texture and position. If you’re not careful, though, some common functions like moving, rotating and pasting can undo your hard work, resulting in a blurry mess. But with some small changes to your workflow, you should be able to maintain the highest-quality artwork from the start to the end of the project.

Compositing in Adobe Photoshop: Time-Saving TipsDaniel Durrans shares his own time-saving tips for compositing in Photoshop with us and emphasizes on adapting a certain technique for each one of us to make our work more efficient and improve our workflow.

Useful Photoshop Tips And Tricks For Photo RetouchingIn case you’ve been searching for some insight on the most useful techniques tips and tricks when working in Photoshop, then this is the article you shouldn’t miss out on. Dirk Metzmacher shares with us even more tips and tricks to improve your workflow.

Useful Adobe Photoshop Techniques, Tutorials and ToolsOur recent overview of useful Adobe Photoshop techniques and tutorials that we have found and collected over the last months.

(vf) (ilj)
© Smashing Editorial for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us Post tags: actions, photoshop, psd, scripts, templates 
]]></description>
<dc:subject>Design actions photoshop psd scripts templates</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:20044e0f6f8f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:actions"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:photoshop"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:psd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:scripts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:templates"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.yahnyinlondon.com/post/5081377466">
    <title>Sketchnote of Bill Moggridge - Design Museum</title>
    <dc:date>2011-04-30T22:05:03+00:00</dc:date>
    <link>http://www.yahnyinlondon.com/post/5081377466</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Here is a recent sketchnote from Bill Moggridge’s talk at the Design Museum, given to publicise his new book Designing Media. He also had a few guests from Airside. 

If I’m completely honest, I’m not sure I got a huge amount out of the talk. I was less interested in the pre-recorded interviews that he used to punctuate his responses than I was the dialogue between himself and Airside, who made a few salient points once they got going. 



There are a couple of other talks upcoming at the Design Museum and I’ll be attending those so I can practise my sketchnoting some more!



]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:57d59cc3f4c8/</dc:identifier>
</item>
<item rdf:about="http://www.buzzsprout.com/237/24667-episode-23-who-builds-web-sites.mp3">
    <title>Episode #23: Who Builds Web Sites?</title>
    <dc:date>2011-04-22T16:00:00+00:00</dc:date>
    <link>http://www.buzzsprout.com/237/24667-episode-23-who-builds-web-sites.mp3</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[This week we revisit the topic of web deisgners who code (or don't) and also discuss pricing in light of Adobe's recent "Creative Suite" subscription model.]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:b544e2017976/</dc:identifier>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/04/18/powerful-new-css-techniques-and-tools/">
    <title>Powerful New CSS Techniques and Tools</title>
    <dc:date>2011-04-18T14:23:36+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/04/18/powerful-new-css-techniques-and-tools/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[    The hard work of front-end designers never ceases to amaze us. Over the last months, we’ve seen Web designers creating and presenting a plethora of truly remarkable CSS techniques and tools. We have collected, analyzed, curated and feature latest useful resources for your convenience, so you can use them right away or save them for future reference.
Please don’t hesitate to comment on this post and let us know how exactly you are using them in your workflow. However, please avoid link dropping, but share your insights and your experience instead. Also, notice that some techniques are not only CSS-based, but use HTML5, JavaScript, or JavaScript-libraries as well. Thanks to all featured designers and developers for inspiring, hard work.
CSS TechniquesRotational SlidersEric Meyer shares six of his animated transforms that are capable of sliding around to a particular extent with non-centered transform origins.

Generating Organic Randomness with Prime Numbers and CSSAt first, you may be wondering why the heck is Alex Walker talking about cicada’s and Web design. Once taking a closer look, a sort of connection between the two evolves and a ‘cicada principle’ is born.

CSS3 3D HologramBeing inspired by holographic effects that can be achieved with HTML/CSS, Hakim El Hattab has developed his own 3D box which alters perspective depending on device orientation. Note that this requires a webkit browser and has only been tested on iPhone. Also make sure to visit more of Hakim’s CSS/HTML5 experiments.

Checkerboard, striped & other background patterns with CSS3 gradientsYou’re probably familiar with CSS3 gradients by now, including the closer to the standard Mozilla syntax and the verbose Webkit one. I assume you know how to add multiple color stops, make your gradients angled or create radial gradients. What you might not be aware of, is that CSS3 gradients can be used to create many kinds of commonly needed patterns, including checkered patterns, stripes and more. Also, check out Lea’s CSS3 Patterns Gallery
CSS3 KeyboardClick in the box and start typing on your computer’s keyboard. Cleverly developed by Dustin Cartwright and Dustin Hoffman. You’ve got to respect the amount of time and effort which went into producing this demo.

CSS3 Progress BarsA couple of nice progress bars created by Chris Coyier that use no images — just CSS3 fancies. In browsers that do not support CSS3, these progress bars will look more simplified.

Hover on “Everything But”A tutorial by Chris Coyier which shows us how easy adding a hover state to an element can be. In this case, the hover state is applied to everything but the element actually being hovered over.

Creating a Sphere With 3D CSSWith CSS3’s 3D trans­forms it’s possible to cre­ate a sphere-like object, albeit with many elements. Paul Hayes shares his version of a 3D CSS sphere (works in the latest Safari and iOS) and provides us with the coding needed.

CSS3 PlanetariumThis demo highlights leading edge CSS3 and HTML5 features that Mozilla Firefox and the open web community push into modern Web browsers.

Natural Object-Rotation with CSS3 3DA tutorial by Dirk Weber that teaches us how to build a 3D packshot in HTML and CSS by applying some CSS 3D-transforms. By adding  some Javascript, we can make the object freely rotatable in 3D space. And as we will enhance our Javascript with some touch-interactivity, the packshot will also work nicely in Safari for iOS-platforms like iPhone or iPad.

CSS Drop-Shadows Without ImagesNicolas Gallagher shares presents his CSS drop-shadows without any images.

Incrementable Length Values in Text FieldsLea Verou explains how to implement a feature that allows you to increment or decrement a <length> value by pressing the up and down keyboard arrows when the caret is over it.

Beveled Corners & Negative Border-Radius with CSS3 GradientsBeveled corners and simulate negative border radius without images, by utilizing CSS3 gradients once again — Lea Verou is amazed by how many CSS problems can be solved with gradients alone. Works on Firefox 3.6+, latest Webkit Nightly builds, Chrome and Opera 11.10.

Flexible Height Vertical Centering With CSS, Beyond IE7Roger Johansson shares his thoughts on how to improve centering an element both horizontally and vertically with the display:table alternative.

Coding up a semantic, lean timelineThis article tells you how to create a semantic lean timeline.

CSS Border Tricks with Collapsed BoxesThese border tricks tricks will help you to display content outside of the content box, over borders, without the use of images, CSS3 gradients or extraneous markup.

Quick Tip: Nonintrusive CSS Text GradientsJeffrey Way shows some ways for creating pure CSS text-gradients with a bit of trickery. The key is to use a mix of attribute selectors, webkit-specific properties, and custom HTML attributes.

Bokeh with CSS3 GradientsDivya Manian uses the CSS gradients and shows the results of his work on a project which uses a bunch of circles as a decorative background.

Different Transitions for Hover On / Hover OffChris Coyier tries to acchieve “different transitions on mouseenter and mouseleave”, but he isn’t using JavaScript here; we’re talking about CSS :hover state and CSS3 transitions. Hover on, some CSS property animates itself to a new value; hover off, a different CSS property animates.

Styling children based on their number, with CSS3Lea Verou shows how to style children of elements based on their total number (that is, their total count).

CSS ModalUsing CSS3 tech­niques a modal box can be cre­ated with­out JavaScript or images. With a bit of ani­ma­tion, tran­si­tion and trans­form, it can be made that lit­tle bit more special. The problem: when you hit the “Back”-button after the modal has popped up and was closed, you’ll see the modal again. But maybe you’ll come with a way to fix it?

Rotating Feature BoxesThe full effect of it (with transition animations) will work in newish WebKit and Opera browsers and Firefox 4 (in real beta as of today). Any other browser will rotate the blocks without transition animation.

When and How to Visually Hide ContentVisually hiding content on a web page, usually textual content, is at times a viable technique in web design and development. It can be done for several reasons, most importantly, to improve the experience of a screen reader user. Other reasons include improving readability when CSS cannot be rendered, and improving search engine optimization (SEO). Other exaples about using the Visually Hide Content are shown in this article.

How to avoid common CSS3 mistakesThe new features of CSS3 bring with them complexity and new things for us to screw up. This article will help keep us in check as we start using these new features.

Introduction to CSS Escape SequencesEscape sequences are useful because they allow style sheet authors to represent characters that would normally be ignored or interpreted differently by traditional CSS parsing rules. In this article Mert Tol shows how to use these sequences.

Wrapping Long URLs and Text Content with CSSTo wrap long URLs, strings of text, and other content, you can just apply a carefully crafted chunk of CSS code to any block-level element .

CSS Generated ContentTrevor Davis shows on some examples what you can do with the CSS generated content.

Controlling width with CSS3 box-sizingAn incredibly useful CSS3 feature when you’re creating columns with floats is box-sizing. It lets you choose which box sizing model to use – whether or not an element’s width and height include padding and border or not. It makes it much easier to define flexible widths where you also need padding and/or borders. A typical example is laying out forms, which can be a real pain when you want flexible widths.

Revisit Hardboiled CSS3 Media QueriesShi Chuan takes a close look at boilerplates and helps us understand the math we need to tweak the width required for a good resolution to any particular device.
iPad Orientation CSSKeith Chu revises Cloud Four’s work and finds a way to alleviate extra HTTP requests, not iPad-specific as well as lack of reusability. In this post, he shares with us his proposed revision to the iPad orientation CSS.
CSS Value Lengths, Times, Frequencies and AnglesIn this article the authors go over all the math type units that can be applied as property values in CSS.
CSS Tools320 and up‘320 and Up’ prevents mobile devices from downloading desktop assets by using a tiny screen’s stylesheet as its starting point. Try this page at different window sizes and on different devices to see it in action.

CSS3 Generator – By Eric Hoffman and Peter FunkThis generator was proudly designed by Eric Hoffman and coded by Peter Funk.

CSS Pattern GeneratorPatternify is a simple pattern generator that enables you to not only build your patterns online, but export them with the base64 code, so you don’t even need an image file anymore. Just include the code in your CSS and you’re ready to go. Created by Sacha Greif.

Griddle.it – Web page alignment made easyA clean and simple way to help align your layouts. No complex grid frameworks necessary.Just put your dimensions after our URL to get a background guide image to work with in your browser. Grids are created on the fly, so any combination should work.

The 1140px Grid: Fluid down to mobileThe 1140 grid fits perfectly into a 1280 monitor. On smaller monitors it becomes fluid and adapts to the width of the browser.

Fighting the @font-face FOUTPaul Irish’s 2011 update for the @font-face FOUT issue. Good news: Firefox 4 has no FOUT, IE9 does, and FOUT-b-GONE will help you out with that.

CSS3 Github ButtonsCSS3 Buttons is a simple framework for creating good-looking GitHub style button links.

CSS3 Facebook ButtonsCSS3 Facebook Buttons

MinimeeOn the Internets, speed is everything – which means that when it comes to CSS & Javascript files, size DOES matter. By automatically minimizing and combining your files for you, Minimee takes the heavy lifting out of keeping your files svelte.

Live.jsone script closer to designing in the browser.

Bootstrap.lessBootstrap is a pack of mixins and variables to be used in conjunction with LESS, a CSS preprocessor for faster and easier web development.

Animatable: Create CSS3 animations and advertising for Webkit browsersAnimatable is the easy way to create CSS3 animations and advertising for Webkit browsers on any platform or device — including Android, BlackBerry, iOS and WebOS.

Ceaser: CSS Easing Animation ToolCeaser is an CSS Easing Animation Tool.

ShowerThis  is provided without warranty, guarantee, or much in the way of explanation.

CSS PivotThis tool allows you to add CSS styles to any website, and share (and adjust) the result with a short link.

Roots WordPress ThemeRoots is a starting WordPress theme made for developers that’s based on HTML5 Boilerplate, Blueprint CSS (or 960.gs) and Starkers that will help you rapidly create brochure sites and blogs.

Free Online CSS3 Typeset Style GeneratorAn advanced generator of CSS buttons; the tools allows you to define font and color variations, shadows, borders, corners etc.

CSSPrefixerYou hate writing vendor prefixes for all browsers? The CSSPrefixer does it for you.

Type-a-fileThis tool will give your Web typography a head start. Type-a-file is essentially a small collection of CSS stylesheets with heavy focus on rich and beautiful typography. The tool uses Typekit to preview the stylesheets, so if you have a Typekit-account, you could purchase the font license and have exact the same typography on your website.

A Best Practice Baseline for Your Mobile Web AppMobile Boilerplate is your trusted template made custom for creating rich and performant mobile web apps. You get cross-browser consistency among A-grade smartphones, and fallback support for legacy Blackberry, Symbian, and IE Mobile.

Code BeautifierThis tool allows you to format, clean up and optimize your stylesheets.

Markup GeneratorMarkup Generator is a simple tool created for HTML/CSS coders that are tired of writing boring frame code at the very beginning of slicing work.

CSS Sprite GeneratorThis tool allows you to create and maintain your CSS sprites.

RespondA fast & lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)
Adapt.js – Adaptive CSSAdapt.js simply checks the browser width, and serves only the CSS that is needed, when it is needed.
Firmin, a JavaScript animation library using CSS transforms and transitionsFirmin is a JavaScript animation library that uses CSS transforms and transitions to create smooth, hardware-accelerated animations.
Command-line CSS spritingThe author shows, how to create CSS sprites from the command line alone.
Last ClickCode StandardsThis document contains normative guidelines for web applications built by the Interface Development practice of Isobar North America (previously Molecular). It is to be readily available to anyone who wishes to check the iterative progress of our best practices.

How to Manage CSS ExplosionA very useful thread on StackOverflow on how to keep CSS files organized and clean.

Related PostsCSS: Innovative Techniques and Practical SolutionsThe main goal of the article is to present powerful new CSS techniques, encourage experimentation in the design community and push CSS forward.
(vf) (ik)
© Smashing Editorial for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us Post tags: CSS, css3, html5, javascript, techniques, tools 

]]></description>
<dc:subject>Coding CSS css3 html5 javascript techniques tools</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:e9f18d404395/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:CSS"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:css3"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:html5"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:javascript"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:techniques"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tools"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/design/secrets-race-freelancing/">
    <title>10 Secrets to Be a Better Freelancer</title>
    <dc:date>2011-04-16T10:00:10+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/design/secrets-race-freelancing/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[The struggle in freelancing is quite far from the competition of regular businesses. The word “freelancer” was first used to describe a “medieval mercenary warrior” to point out that that lancer does not work under any lord. An out-worker has to experience as much contenders as there are drops in the sea.

In order to leave a mark in freelancing, one has to fight with a countless amount of people from different regions and work cultures. In this situation, a freelancer does not even know about how he can get over his opponent. To spot the imprint of a lancer’s matchlessness, one has to keep mounting his spirit high and has to set his own distinguish rules of work because only he is the boss of himself. There are plenty of ways showed by the rulers of this industry, on the basis of which I gathered points which in my opinion are necessary to identify and market the uniqueness of one’s freelance business.



1. Determine Your Strength


 

 

Every person has some skills which help them throughout their professional life. In order to be successful in this field you have to know where your mind is set. If you enjoy your work the outcome will always be better as opposed to working just for a paycheck. By realizing your strengths and doing what you really want, you can get the best results in terms of productivity. The question that naturally arises is “how do I identify my strength?” You can discover your strengths through:


Impulsive reactions of brain to find out the area where it can process efficiently.
Desired field in which you found yourself excited and craving for more.
Stimulation of mind for learning
Work that leaves you feeling energized

2. Cope Up With Your Weakness




To become successful in your line of freelance business you cannot neglect or ignore your weaknesses. Nobody can improve in any career without accepting, and knowing, their flaws. Pretending that you are free of blunders is the worst thing and will potentially ruin your career. Hiding your flaws is not a solution; you cannot get away from them. Identifying your weakness and acknowledging it is the ultimate solution. To cope with your weaknesses you should not forget:


To look at your work with a critical eye
To recognize, admit and fight with your gaffes
To stay attentive and avoid repeating past mistakes

3. Boost Self-Confidence




Confidence is a key strength everyone must have to achieve success. Confidence enables a person to conquer anything in this world. Self assessment is necessary to know what the individual has done and what he is required to do. This will give a person a focused view of his/her career and motivate him to move one step up in his freelance work since there is no one else to evaluate him. There is no particular way to boost self-confidence; this is only motivation and determination which will help freelancers in moving forward and enhancing confidence. So self-possession can be increased by:


Daily self assessment.
Challenging yourself step by step.
Getting out of your comfort zone.

4. Identify Client’s Demands




For freelancers, it is very important to be up to date with their customers demands. This can be done by knowing their target market and what they like and don’t like. Knowledge about red-hot topics of the relevant field plays a vital role in dealing with clients’ demands. This is because people want fresh ideas and love ground-breaking work. If you want to be unique and yearn to reach a milestone, then you have to keep following your customer’s demand without sacrificing work quality. Do:


Know what they want by feedback.
Provide what they need.

if it is clear that what they need is risky, or goes against the whole world, tell your client. This might save them too.



5. Keep Track Of Appreciations


 

 

A word of appreciation is like gas to a car in this business. Since freelancers don’t have anyone who analyzes and evaluates their performance, this positive reception can be obtained through client feedback. In this business, always try to get as much feedback as you can. Always remember that feedback is just an approval of work, never get overwhelmed with joy from it otherwise you will fall off of your path. This appreciation will also assist you in finding your “right track”. Tracking of appreciation will enable you to find out the right position in freelance business.

6. Give Positive Response To Criticism


 

 

Criticism is another form of feedback which lets you know whether the work has been accepted or not. Never take criticism negatively because this will lead to great frustration and stress. Criticisms will help you analyze the likes and dislikes of your clients. Apart from your knowledge of your weak points, criticism from your clients gives you a broader view of your work. Responding positively to criticism is like overcoming your weakness which will help you stand out amongst your competitors. This is the strongest way to stand out in the field of freelancing.

7. Keep Learning From Mistakes



Mistakes is the point where everyone loses confidence and might lose spirit also. There is no one on Earth who is perfect, even machines err. But coping smartly with mistakes will make you stronger. Mistakes should be treated as guide stones, telling you which way to go next time. The only thing which is necessary is to be vigilant. Mistakes are not a problem unless they are repeated. If you want to get noticed in freelancing, try and:


Prepare for the worst but do your best.
Not lose strength from blunders and keep the spirit high.
 Learn from mistakes and do not repeat.
Go back to point 2 and know your weakness.

8. Be Aware Of New Trends




Trends change in a blink of an eye. To stay in the race, you have to set your eyes on the trends so that you are up to date. You can’t possibly beat several hundred competitors without knowing what’s happening in the world. This is unlike a full-time job where an employee does not need to know the trends; most office employees just do what the boss says. In freelancing, being up to date keeps you alive in the market.

9. Say “Yes” To Challenges



If you want to score a top position in the competition then embrace challenges with a happy face. This is because every time you want to provide the best for your client, you will come to realize that you are facing new challenges. Triumph can only be achieved by proving yourself in something that has not been attained by someone else before, or something you haven’t dared tried yet. You might get a good position in the market by constantly giving your best work, but this is not enough to achieve a remarkable feat. To stand out amongst your competitors, you have to come forward from the regular competition and do something different.

10. Never Forget Your Competitors




This is the most important point of all for a winning toss. Always keep your eyes open and stay informed about your competitors because they are also in the same race. In order to beat the others, you have to know their potency and limitations. Without knowing the traits of your opponent you cannot overcome their position. This will also help you learn. It is the trait of real conquerors that they capture knowledge regardless of the source as if it belongs to them.

 

 

 
]]></description>
<dc:subject>Freelance Web_Design Advice Freelancing tips tricks</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:614fe085c53c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Freelance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Advice"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Freelancing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tricks"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://adactio.com/journal/4497/">
    <title>Lazy loading on Huffduffer</title>
    <dc:date>2011-04-12T17:41:56+00:00</dc:date>
    <link>http://adactio.com/journal/4497/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[If you look at my profile page on Huffduffer, this is what you’ll see:



my details,
what I’ve huffduffed,
links to subscribe to my podcast and
my tag cloud.


That’s the core information for that page, preceded by a header with site navigation and followed by a footer with some additional links.


Because I’ve provided a URL with my details, there’s some extra information displayed in the sidebar:



my other profiles on the web, as determined by Google’s Social Graph API,
MP3s recommended by Last.fm,
my latest updates on Twitter.


It’s a similar situation if you look at a piece of audio I’ve huffduffed. The core information is:



all the details about the audio (title, description, tags),
who else has huffduffed this,
possibly-related items and
links to share and embed the audio.


In addition, because I’ve used a machine tag—book:author=cory doctorow—the sidebar contains:



related articles from The Guardian,
sales information from The New York Times,
books on Amazon.


In both cases, this supporting information isn’t essential; it’s just nice to have.


There’s a potential performance problem though. Because this extra information is coming from third-party services—and despite the fact that I’m doing some caching—it could delay the display of the whole page. So I took some time on the weekend to adjust the architecture a little bit. Now the extra information is requested with Ajax once the core information has already loaded. This is lazy loading.


Now I’ve introduced a dependency on JavaScript, which is far from ideal, but because this is just “nice to have” information, I think it’s okay if it isn’t seen by a subset of visitors.


In fact, because this extra lazy-loaded stuff takes up valuable screen real estate, I think it might be acceptable to only serve it up to visitors who have the screen real estate to accommodate it:


if ($(document).width() > 640) {
// do lazy loading here
}


So if you load my profile on a small screen, you won’t see my latest tweets or my Last.fm recommendations. Likewise if you look at something I’ve huffduffed that’s tagged with music:artist=radiohead you won’t see information from Last.fm, pictures from Flickr or albums on Amazon unless you load the page with a wide enough viewport.


Now it could be that the real issue here isn’t viewport size, but connection speed …in which case I’m making the classic error of conflating small screen size with limited bandwidth. A script like Boomerang, which attempts to measure a user’s connection speed, could be very handy in this situation.


Lazy loading is the new fold

I was chatting with James about the implications that lazy loading could have for earlier phases of the design process: wireframing, page description diagrams, and so on.


Traditionally, you’ve got only two choices when judging what content to include: either something is on the page or it isn’t. You can use hierarchy, position and contrast to emphasise or de-emphasise the content but fundamentally, it’s a binary choice. But with conditional lazy-loading there’s a third option: include some content if the user’s circumstances warrant it.


Once again, Luke’s Mobile First approach is a useful thought experiment. It can help prioritise which elements are core content and which could be lazy-loaded:



  Mobile devices require software development teams to focus on only the most important data and actions in an application. There simply isn’t room in a 320 by 480 pixel screen for extraneous, unnecessary elements. You have to prioritize.

  
  So when a team designs mobile first, the end result is an experience focused on the key tasks users want to accomplish without the extraneous detours and general interface debris that litter today’s desktop-accessed Web sites. That’s good user experience and good for business.



Sometimes there are political reasons for wanting the “extraneous detours and general interface debris.” Lazy loading for large-screen users could be the least worst option in that situation. Semantically speaking, the kind of content that might be marked up in an aside element might be a good candidate for lazy loading …if the viewport is large enough.


I have a feeling that we’re going to be seeing a lot more of lazy loading as the responsive web design revolution rolls on. Used judiciously, it could provide plenty of performance benefits. But if it’s taken too far, lazy-loading could be disastrous, resulting in sites that rely on JavaScript to load their core content—I’m looking at you, Twitter.




Tagged with
responsive
design
lazyloading
javascript
ajax
huffduffer
mobile

]]></description>
<dc:subject>responsive design lazyloading javascript ajax huffduffer mobile</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:01ddc264aee2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:responsive"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:lazyloading"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:javascript"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:ajax"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:huffduffer"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:mobile"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://freelanceswitch.com/freelance-freedom/freelance-freedom-202-freelance-prerogative/">
    <title>Freelance Freedom #202: Freelance Prerogative</title>
    <dc:date>2011-04-11T11:00:50+00:00</dc:date>
    <link>http://freelanceswitch.com/freelance-freedom/freelance-freedom-202-freelance-prerogative/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[


     
]]></description>
<dc:subject>Freelance_Freedom comics</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:85d82e4b2a58/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Freelance_Freedom"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:comics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://feedproxy.google.com/~r/onstartups/~3/Et81Rw7125I/The-5-Minute-Guide-To-Cheap-Startup-Advertising.aspx">
    <title>The 5 Minute Guide To Cheap Startup Advertising</title>
    <dc:date>2011-03-18T14:26:00+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/onstartups/~3/Et81Rw7125I/The-5-Minute-Guide-To-Cheap-Startup-Advertising.aspx</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[
         
The following is a guest post by Rob Walling.  Rob Walling has been an entrepreneur for most of his life and is author of the book Start Small, Stay Small: A Developer's Guide to Launching a Startup.  He also authors the top 20 startup blog Software By Rob, that's read by tens of thousands of startup entrepreneurs every month and he owns the leading ASP.NET invoicing software on the market in addition to a handful of profitable web properties.

Imagine that you've just completed version 1 of your product and you're preparing for launch. You’ve greased the wheels with a few bloggers, targeted some keywords with SEO, created a bit of linkbait, and scheduled the press release to launch in the morning. At this point your co-founder turns to you and says: “What are we going to do with the $300 we have stashed away for advertising?” Consider this your lucky day. The goal of this article is to provide you with the core of what you need to know about cheap startup advertising as quickly as possible, so you can start spending that ad budget wisely. Let's get started.

Two Key Advertising Strategies
The half-life of advertising traffic is zero. This means that the moment you stop shelling out cash, the traffic stops. The problem is that with typical conversion rates of 1-2% you're paying for 98 or 99 out of every 100 people to walk away and never come back to your site. To combat this inherent wastefulness of advertising, I have two key strategies I recommend no matter which method of advertising you use.
Strategy #1: Try to Get Permission
Seriously consider offering something in exchange for a visitor's email address. It can be a free trial, a free report, or maybe even a free book. But gaining the means and permission to contact that customer again will increase your conversion rate over time in most cases. There is great power in an email list.
Strategy #2: Use Advertising to Test
Use advertising as a testing tool rather than a long-term stream of customers. Very few startups can withstand the cash outlay required to turn advertising into a marketing activity with positive ROI. Even if you figure it out, advertising is a volatile marketing medium. Prices increase rapidly in online advertising as new competition crops up or prospects grow bored of your ad and your click through rate drops. When this happens, all of the time you invested in optimizing your ad campaign is *poof*...gone. So instead of relying on ad traffic as an ongoing stream, use it for what it's best at: the ability to generate a slew of visitors very quickly, and to be turned off just as quickly. This kind of traffic source makes it great for split testing and user behavior testing using tools like Clicktale and Crazyegg. It also gives you insight into how certain traffic converts for you. With properly tracked conversions and an ad on Facebook, you can determine that men from 35-45 convert at a rate 15% lower than women of the same age. This is valuable information, especially early in your marketing effort when you're still trying to figure out the ideal market for your application. Often this is not the largest market; it's the one to whom you can market for the lowest cost. As another example, with AdWords you can learn in a hurry which keywords convert for you, and which don't. This is insanely valuable as you invest the time and money on the long-haul of search engine optimization. Knowing the keywords that really convert for your business, as opposed to the ones that you think will convert, can save you piles of cash and many months of SEO effort.
The "First Five" Advertising Options
With the above strategies in mind, let's look at the first five advertising options you should consider.
Option #1: Niche Advertising
As a startup, there are hundreds of general advertising options available, and thousands more niche opportunities. Depending on the niche you're catering to you should be able to find a forum, blog, magazine or website in which to spend some ad dollars. The tighter the niche the better. Remember that niche sites tend to be cheaper to advertise on and drive more targeted traffic, which makes a huge difference in your conversion rate. (And if you're not targeting a niche because you want your audience to be the "whole world," you're going to need a lot more than $300 in your ad budget). In general, if you are marketing to a niche you will know the sites to target. If you don't it's time to pound the pavement and find out what they are. By "pound the pavement" I mean search on Google and contact people in the niche to find out where they hang out online. Two reputable niche ad networks I've worked with in the past are:    

InfluAds - With an increasing number of advertising "communities" covering design & UX, startups and entrepreneurs, work & productivity and web development, InfluAds can work with budgets as small as the $300-400 range. They sell a minimum set of granted impressions, and if more traffic is available during a month then existing advertisers receive it for free. Image ads only.
BuySellAds - Though they've traditionally focused on the design & UX space, BuySellAds is in the process of branching into many other niches. This image-only ad network was the primary source of traffic for a design-oriented website I owned, and made the difference between a few hundred dollars a month in sales, and a few thousand. Advertising is purchased by impression or on a monthly basis from individual advertisers, meaning each offers different pricing. But the minimum buy is very cheap - in the $10-$20/month range.

Option #2: Google AdWords

Ad Format: Text or image
Ad Components (for text ads): 25-character deadline, 2 lines of body copy @ 35 characters each, 35-character display URL
Approval Process: Automated, with manual review if you trip a filter



A few years ago, Google AdWords was great for startups. Many niches were untouched, and 5 and 10 cent clicks were commonplace. But these days, the vast majority of niches worth pursuing have ever-escalating click prices as more advertising dollars move online, including dollars from large corporations that don't blink an eye about spending $5 to produce a single visitor to their website. With a 1% conversion rate you need a $500 lifetime customer value to break even. This is more than a stretch for most startups who are scraping by on 0.5% conversion rates and sub-$100 lifetime customer values (at least to start with). But with Google carpet-bombing $75 AdWords coupons to every business in the civilized world, the number of advertisers, and thus the competition, is increasing. For the most part, the days of cheap clicks are over. The $1-2 per click I used to pay to advertise my invoicing software has become a negative ROI for me at $4-5 per click. But all is not lost. There is still a place in the backwoods of AdWords where the wild-west mentality (and cheap clicks) reign. That place is the content network. People traditionally think of Google AdWords as the ads that appear to the right of the search results. But the lesser known cousin of search ads are the ads that appear in every AdSense block you see around the web. These are ads placed through the Google AdWords content network. The content network is less targeted, higher volume, and typically much cheaper to advertise on, than the search results. While we don't have time here to delve into specifics of how to place ads on the content network, the most consistent approach I've seen that works over the long-term is to use their cost-per-action tool called the Conversion Optimizer. There's a great write-up of how it works from Patrick McKenzie of Bingo Card Creator fame, here. There are also some helpful tips on advertising on the content network here. And if you're willing to drop a few bucks, by far the best AdWords book available is the Ultimate Guide to Google AdWords, which includes a section on using the content network.
Option #3: Facebook

Ad Format: Text with required image
Ad Components: 110x80 image, 25 character headline, 135 characters of body copy
Approval Process: Manual (sometimes slow)



Facebook is still viable for startups with its ability to deliver 10-15 cent clicks under the right circumstances. But it's a bit like the Wild West: if you approach Facebook advertising incorrectly you will pay a premium, around 75-90 cents per click. The value of Facebook is its ability to show your ads to exactly who you want to see it based on information in a user's profile. You can easily segment on gender, age, location, relationship status and a number of other fixed parameters, along with thousands of interests and occupations you can target using keywords. The key to low cost Facebook clicks is having a high click through rate (CTR). The key to a high CTR is a combination of a powerful image, an engaging headline, and laser-focused targeting. Due to space constraints we're not going to cover the basics of choosing a powerful image or writing an engaging headline. Not when there are perfectly good articles already written on the subject for those who would like to know more: choosing an image / writing a headline. But once your ad is written, there is a trick to achieving those 10 cent clicks. Based on a tip from my friend JD, I now use the following method with Facebook ads:  
Target your demographic information so tightly that you can write a headline that addresses them specifically. Example: if you are selling shoes online to the U.S. market, create 10 different versions of the ad, one for each of the major metro areas in the U.S. Also include the qualifying "interests" keyword: shoes. Now make each ad headline address its group specifically, using a formula like "Need Shoes in [city name]?"
Start the ads with a modest budget of, say, $5-10 per ad per day.
After 12-24 hours review the ads. Some will have high CTRs and costs per click around 10-15 cents. Others will have low CTRs and clicks in the 80-90 cent range.
Pause the higher cost ads and increase the budget for the low cost ads to whatever you can afford; $100 per day or more per ad.
For a few days you will receive extremely low-cost, targeted traffic. But since you've chosen a small group of people, they will start to tune out the ad rather quickly. At this point your CTR will drop and your cost will climb. Pause the ad, and start over with new cities, new images or new headlines.
This approach requires ongoing maintenance but if you can generate targeted, 10-cent clicks it's worth the effort.
Option #4: StumbleUpon

Ad Format: not applicable
Ad Components: just your URL
Approval Process: Manual

I recently advertised my developer's guide to launching a startup on StumbleUpon. The plus side of StumbleUpon is that all clicks are 5 cents. The downside is the bounce rate is high since people are basically channel surfing. I achieved a 96.88% bounce rate in my experiment, with an average stay of 2 seconds. I wonder if it was something I said? In my test, only 25 visitors stayed longer than 5 seconds. I paid $50 for 1000 clicks, but since only 25 of them stayed long enough to read anything, I effectively paid $2 per click. Your mileage may vary, but through this and other experiments I've gathered the following tips for advertising on StumbleUpon:    

Your #1 goal is to get stumblers to stay longer than 5 seconds. Your #2 goal is to get them to up-vote your page. Paying $50 for 1000 clicks is one thing. Having it go viral and receiving 10,000 clicks for the same price is another.
Don't send StumbleUpon traffic to a landing page that asks for an email address. StumbleUpon users are notoriously fickle about providing their email.
People stumble to be entertained, so if your page doesn't have the potential to go viral or turn into linkbait, you will not likely fare well.
Blog-like content and videos seem to work best. Anything that resembles a traditional landing page will bomb.

Option #5: Reddit

Ad Format: Text with optional image
Ad Components: 70x70 image, title, URL
Approval Process: Manual (two-day lead time)

 Reddit uses an interesting approach for their ad pricing: advertisers bid a certain amount per day, all of the money goes into one big pot, and each advertiser receives their share of the impressions based on the percetage of funds they contributed. It's a simple system, but it means there's a bit of uncertainty about what you're going to get for your money. However, Reddit has the potential to provide some very cheap clicks - I've seen as low as 3 cents - if you play your card right. Similar to StumbleUpon, Reddit provides your ad with the potential to go viral. Gabriel Weinberg has a great write-up of the 20,700 clicks he scored for 3.14 cents each for his new search engine Duck Duck Go. His eye-catching image and tech-focused startup served him well with the audience. As he says:
First, a search engine ad is a good fit for reddit ads in general. It has broad market appeal and redditters in general like trying out new technology. Second, I think the ad is particularly well structured. The circular duck icon draws your attention, is contrasting to site colors, and sticks out because it is a circle (as most images are square). I believe the title also has appeal.
Gyutae Park also has a nice write-up of the 434 clicks he purchased for 9 cents each here. One of my recent experiments was a bit more pricey: 187 clicks at 40 cents each. My lackluster performance was a combination of landing on a competitive advertising day, and using a poor-quality header image. In retrospect, I have no idea what I was thinking using this unreadable image:  Reddit ads are so simple (just two visible components) that the only tip I have is self-evident: your image has to rock, and so does your title. It's all about choosing an image and headline that makes people click.
Conclusion
To conclude, I want to reiterate what I said early in this article: unless you have deep pockets think of advertising not as a long-term traffic strategy, but as a testing tool to improve your website and find out more about your ideal visitor. Few bootstrapped startups can withstand the cash outlay required to turn advertising into a marketing activity with a positive ROI, but that shouldn't keep you from testing the waters to find out for yourself. I look forward to hearing about your advertising experience and recommendations in the comments.
Looking for other startup fanatics?  Request access to the OnStartups LinkedIn Group.  130,000+ members and growing daily.
Oh, and by the way, you should follow me on twitter: @dharmesh. 


    
]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:0320d90f79e3/</dc:identifier>
</item>
<item rdf:about="http://xkcd.com/869/">
    <title>Server Attention Span</title>
    <dc:date>2011-03-07T00:00:00+00:00</dc:date>
    <link>http://xkcd.com/869/</link>
    <dc:creator>alexhansford</dc:creator><dc:identifier>https://pinboard.in/u:alexhansford/b:2a37fcd41f6f/</dc:identifier>
</item>
<item rdf:about="http://freelanceswitch.com/humour/de-motivational-posters-for-freelancers/">
    <title>De-Motivational Posters for Freelancers</title>
    <dc:date>2011-03-04T12:00:23+00:00</dc:date>
    <link>http://freelanceswitch.com/humour/de-motivational-posters-for-freelancers/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Photo Credit: bernat... on Flickr

Motivational posters have graced the offices of businesses throughout the world. They typically contain an inspiring word followed by text designed to grab you by the neck and shake you into action.

They make me sick every time I look at one. So here are a few de-motivational posters to abase and darken your freelance office with. Warning, humor lurks ahead.


Photo Credit: Melissa Maples on Flickr

Photo Credit: Stian Eikeland on Flickr

Photo Credit: bjearwicke on Stock.xchng

Photo Credit: bernat... on Flickr

Photo Credit: Macke827 on Flickr

Photo Credit: Jay D on Flickr

Photo Credit: Manel on Flickr

Photo Credits: Todd Baker on Flickr

Photo Credits: alcomm on Flickr

Photo Credits: Jar0d on Flickr

Photo Credits: ewanr on Flickr

Photo credit: Some rights reserved by bernat…, Melissa Maples, Stian Eikeland, bjearwicke, Macke827, Jay D, Manel, Todd Baker, alcomm, Jar0d, ewanr.


     
]]></description>
<dc:subject>The_Lighter_Side humor posters</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:cab0c37792a6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:The_Lighter_Side"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:humor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:posters"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/">
    <title>In Search Of The Perfect CAPTCHA</title>
    <dc:date>2011-03-04T11:57:03+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[    CAPTCHAs, or Completely Automated Public Turing Tests to Tell Computers and Humans Apart, exist to ensure that user input has not been generated by a computer. These peculiar puzzles are commonly used on the Web to protect registration and comment forms from spam. To be honest, I have mixed feelings about CAPTCHAs. They have annoyed me on many occasions, but I’ve also implemented them as quick fixes on websites.
This article follows the search for the perfect solution to the problem of increasing amounts of human-generated spam. We’ll look at how and why CAPTCHAs are used and their effect on usability in order to answer key questions: what is the perfect CAPTCHA, and are they even desirable?
The Incentive To Act HumanTo understand the need for CAPTCHAs, we should understand spammers’ incentives for creating and using automated input systems. For the sake of this article, we’ll think of spam as of any unwarranted interaction or input on a website, whether malicious or for the benefit of the spammer (and that differ from the purpose of the website). Incentives to spam include:
Advertising on a massive scale;Manipulating online voting systems;Destabilizing a critical human equilibrium (i.e. creating an unfair advantage);Vandalizing or destroying the integrity of a website;Creating unnatural, unethical links to boost search engine rankings;Accessing private information;Spreading malicious code.All of these incentives lead to profitable or otherwise gainful situations for spammers. Automating the process obviously allows for superhuman speed and efficiency.
Those who run websites know that this is a big business and a big problem. Akismet, the popular spam killer (commonly seen as a WordPress plug-in), catches over 18 million spam comments per day and has caught more than 20 billion in its history. Mollom, which provides a similar service, catches over half a million spam comments per day and estimates that more than 90% of all messages are spam.
No amount of asking nicely will stop the spammers, but their greed can be used against them; using automated systems to increase profit does have a weakness.
Enter the CAPTCHAOn one side of the coin is the spammer; on the other is the humble website owner, a pleasant sort, who experiences common problems:
Blogs and forums that sink under the weight of spam posts,Accounts that are registered under false pretences for unlawful purposes,Bots that ruin the dynamics of a website,A dive in the quality of content and the user experience.Automated spam plagues website owners to no end, so CAPTCHAs are appealing and compelling… initially. The time needed to moderate and review user-generated content versus the time needed to implement a CAPTCHA is what pushes most developers to do it.
In fact, CAPTCHAs are used a lot. The reCAPTCHA project estimates that over 200 million reCAPTCHAs are completed daily, and it takes an average of 10 seconds to complete one. The Drupal CAPTCHA project logs close to 100 thousand uses per week, and this is just a fraction of websites (those that choose to report back).
CAPTCHAs tackle a problem head-on: they focus purely on stopping spammers. Genuine users are, for the most part, overlooked. That is to say, an assumption is made that the normal behavior of users is not affected.
It’s not true, though. The issue of genuine usability is not new. The W3C released a report back in 2005 on the inaccessibility of CAPTCHAs, which suggested that some systems can be defeated with up to 90% accuracy. More recently (in 2009), Casey Henry looked at the effectiveness of CAPTCHAs on conversion rates and suggested a possible conversion loss of around 3%:
“Given the fact that many clients count on conversions to make money, not receiving 3.2% of those conversions could put a dent in sales. Personally, I would rather sort through a few spam conversions instead of losing out on possible income.”
— Casey Henry, CAPTCHAs’ Effect on Conversion Rates
In 2010, a team from Stanford University released a report entitled “How Good Are Humans at Solving CAPTCHAs? A Large Scale Evaluation” (PDF), which evaluates CAPTCHAs on the Internet’s biggest websites. Unsurprisingly, the results weren’t favourable, the most astounding being an average of 28.4 seconds to complete audio CAPTCHAs. The study also highlighted worrisome issues for non-native English speakers.
Web developers like Tim Kadlec have called for death to CAPTCHAs, and he makes a strong argument against their use:
“Spam is not the user’s problem; it is the problem of the business that is providing the website. It is arrogant and lazy to try and push the problem onto a website’s visitors.”
— Tim Kadlec, Death To CAPTCHAs
Completing a CAPTCHA may seem like a trivial task, but studies (like that of the W3C) have shown that that’s far from the reality. And as Kadlec mentions later in his article, what about users with visual impairments, dyslexia and other special needs? Providing an inaccessible wall doesn’t seem fair. Users are the ones who invest in and give purpose to websites.
The question is, are CAPTCHAs so unusable that they shouldn’t be used at all? Perhaps more importantly, does a usable CAPTCHA that cannot be cracked exist? If the answer is no, what is the real solution to online spam?
The World Of CAPTCHAsThe human brain is an amazing piece of work. Its ability to conceptualize, to find order in chaos and to adapt under extraordinary circumstances makes it highly useful, to say the least. For some tasks, it outshines a computer with great ease. In other tasks — mathematics, for example — it is laughably inferior.
Logic would dictate, therefore, that the most successful CAPTCHA would be:
A task that users excel at naturally but that computers can’t begin to comprehend,A task that is incredibly quick for users to perform but arduous for computers,A task that minimizes the need for additional user input,A task that is relatively accessible to all users, even those with special needs (that is, the CAPTCHA should be no more difficult than general Web usage and the current task demand).One of the greatest advantages that humans have over machines is our ability to visually recognize patterns. The most popular CAPTCHA technique derives from this.
Web developers have explored many options: simple recognition tests, interactive tasks, games of Tic Tac Toe and equations that even mathematicians would have struggled with. We’ll explore the more sensible ideas being implemented online today.
Text RecognitionThe most popular type of CAPTCHA currently used is text recognition (as seen with the reCAPTCHA project).
 The reCAPTCHA project aims to stop spam and help digitize books.
reCAPTCHA was created at Carnegie Mellon University, home to the CAPTCHA pioneers and (in 2000) coiners of the term. Now run by Google, the project uses scanned text that optical character recognition (OCR) technology has failed to interpret. This, in theory, provides unbreakable CAPTCHAs, with the secondary benefit of helping to digitize books.
 reCAPTCHA’s example of failed OCR scanning.
Concerns of accessibility and usability are often voiced with regard to this type of CAPTCHA. Completely illegible CAPTCHAs are common on the Web, and asking users to perform impossible tasks can not be good for usability.
The reCAPTCHA project does make efforts to provide audio alternatives for visually impaired users, but many more text-recognition CAPTCHAs are being used without aids. As noted in the Stanford University study, audio CAPTCHAs take a long time to complete. The same study also highlighted an undesirable reliance on recognition of English-language words.
Another take on the basic text CAPTCHA was introduced in late 2010 by Solve Media, whose solution was to replace text with an advertisement and a related question, a move that many saw as too invasive.

Solve Media claims its CAPTCHAs can be solved more quickly than others. While we should be skeptical of marketing talk, there is clearly some potential, given that many global brands transcend a single language. There is potential here for marginal improvement.
While text-recognition CAPTCHAs have a few downsides (e.g. spammers could use a software that would be able to recognize text embedded in the image and try all possible combinations to “break” the anti-spam mechanism), they are undoubtedly recognizable. This fact alone can go a long way in usability decisions.
Logic QuestionsSome have suggested that answering simple logic questions would be better than performing visual tasks, the idea being that the complexity of written language would be enough to confuse computers.
The TextCAPTCHA service has over 180 million questions in its database, including:
The 6th letter in “unrolled” is?What is fifty-eight thousand, five hundred and seventy-four as digits?Which of 3, twenty-nine, 70, 46 or 65 is the lowest?These CAPTCHA questions are designed for the intelligence of a seven-year-old child. They are far more accessible than text and image recognition, and while this is a big advantage, it comes with a price. First, the time required to read and comprehend these questions will vary because they are unusual and unknown to users. Secondly, computers can still break these CAPTCHAs. Joel Vanhorn points to Wolfram Alpha as an intelligence source strong enough to crack them.
With the likes of IBM’s Watson recently showcasing an eerily human-like ability to process language, such technology might become mainstream quicker than we think. Instead of worrying about logic questions becoming solvable by computers, we should use this technology to analyze user-submitted content and then separate natural language from the computer-generated content that is common to spam. Services like SBlam! are implementing this idea.
Questions that are website-specific, such as “What is the name of this website?” and “What is the dominant color in the image above?”, might be better than general questions. The downside, of course, is that the pool of pointed questions is very small compared to the 180 million possibilities of TextCAPTCHA.
The biggest problem with logic questions is that they’re specific to a language, usually English. Providing millions of questions in every language in order to avoid alienating potential users would be a huge task. When presented with such a daunting prospect, the same question resurfaces: are CAPTCHAs the right solution?
Image RecognitionMany have experimented with photography instead of text. The benefit? No legibility issues. Services like identiPIC ask users to identify the object in an image. Microsoft has also researched this method through its Asirra project.
 Microsoft’s Asirra project on image recognition.
The fact that we haven’t seen widespread adoption of image recognition CAPTCHAs indicates that it doesn’t improve usability. In fact, it jeopardizes accessibility. Visually impaired users have no chance of passing this type of CAPTCHA, and including a description or alternative text would weaken the tests.
In 2009, Google published research (by a team led by Rich Gossweiler, Maryam Kamvar and Shumeet Baluja) that looked at an alternative form of image CAPTCHA. The project asked users to correct the orientation of images by rotating them.

A novel idea, I’m sure you’ll agree, and the research showed a preference for the ease and simplicity of this technique. Sadly, it fails the accessibility requirement (think again of the visually impaired).
Friend RecognitionOne of the more interesting CAPTCHA ideas appeared in January 2011 as a result of an effort by social-networking giant Facebook. The company is currently experimenting with social authentication in an effort to verify account authenticity. In the words of the experiment:
“We will show you a few pictures of your friends and ask you to name the person in those photos. Hackers halfway across the world might know your password, but they don’t know who your friends are.”
— Alex Rice, Facebook, A Continued Commitment to Security
 A peek at Facebook’s friend recognition test.
What makes Facebook’s project slightly different than the normal CAPTCHA is that the authentication is supposed to filter out human hackers rather than machines.
There is potential for Facebook to roll this out across the Web. With 600 million users and millions of websites that integrate with it, Facebook has the ability to use this social recognition CAPTCHA in a big way — and it could prove to be easier than text recognition (Orwellian privacy concerns aside for the moment).
There is one problem. Do you actually know who your friends are? The reality is that friend requests are exchanged between even the barest of acquaintances; remembering names to go with all those faces could be challenging. As intuitive and intelligent as Facebook’s idea might be, it is ultimately flawed because, as humans, we don’t follow the rules.
User InteractionOne method getting a lot of attention has users perform tasks that are impossible for virtual intelligence. They Make Apps features a small slider that must be dragged to the right in order to submit a form. It asks the visitor to “Show your human side; slide the cursor to the end of the line to create your account.”
 They Make Apps uses a slider CAPTCHA.
Obviously this option is inaccessible to people with special needs. Furthermore, developing a script that is capable of moving the slider automatically to activate the “Submit” button would probably be not that difficult. A multilateral version of the slider option is used in the comments section of the Adafruit blog. Four different sliders have to be matched to the corresponding colors in order to validate a comment and activate submission.
 The Adafruit blog’s slider CAPTCHA.
An Over-Engineered Solution?None of the solutions above meet all of the requirements we highlighted for a perfect CAPTCHA. Each of them impairs usability for a large segment of potential users. Even if we went so far as to assume that users generally welcomed traditional text-recognition CAPTCHAs, they would not likely welcome the other alternatives. The extra few seconds the user takes to decipher what is being asked of them negates the benefits. Too slow means not worth it.
Of the solutions available, text recognition (like reCAPTCHA) still feels like the best choice. But the question remains: why are we asking users to perform these tasks? Surely we can beat spammers at their own game by using automated systems to do the work for us. So far we have assumed that a common problem actually exists for CAPTCHAs to solve.
Despite the advances in intelligent computer systems, most spamming mechanisms are stupid. If a submission fails (because of the CAPTCHA or some other reason), the spam bot will move down its list of thousands of websites. Jeff Atwood showed this in his 2006 article “CAPTCHA Effectiveness.” Despite all the research that goes into CAPTCHA-breaking, most spammers have no incentive to invest effort in defeating them. The sheer quantity of websites available to attack and the speed at which they can do it means that CAPTCHA-breaking is unlikely to concern many spammers.
The BBC is one of the most highly scrutinized institutions in the UK. Its requirements for accessibility are second to none, and its recent examination of CAPTCHAs resulted in an emphatic “No”:
“Visually impaired participants expected full accessibility from the BBC and we felt it would affect our reputation to use them. Elderly users had issues with the distorted text. The logic puzzles were found to be odd and patronising. The audio was struggled with. Overall, extremely negative feelings were expressed towards CAPTCHA technology.”
— Rowun Giles, BBC, CAPTCHA and BBC iD
Alternative solutions exist that prevent automated submissions without resorting to CAPTCHAs and, more importantly, without user interference.
Alternatives To The CAPTCHACAPTCHAs, in their purest form, might realize their potential in another field. As website protectors, though, they’re far from ideal. Doing a disservice to users in an effort to combat spam doesn’t cut it on today’s Web. Human-powered spam is on the rise (as is unethical link-building), and we should be implementing unobtrusive, invisible methods.
Automated and Manual Spam DetectionWe touched on two detection services at the beginning of this article. Akismet, Mollom and SBlam! all analyze user-submitted data and flag spam automatically. Mollom sometimes presents a CAPTCHA, but only when it’s unsure. But why not develop your own system that is tuned to the mechanics of your website?
Taking responsibility and removing the burden from users will improve their interactions with and impressions of your website. Manually moderating content is often a sacrifice worth making.
The Honeypot MethodIn 2007, Phil Haack suggested a clever method of detecting bots: using a honeypot. The idea behind the honeypot method is simple: website forms would include an additional field that is hidden to users. Spam robots process and interact with raw HTML rather than render the source code and therefore would not detect that the field is hidden. If data is inserted into this “honeypot,” the website administrator could be certain that it was not done by a genuine user.
The honeypot method can be made more sophisticated by using JavaScript and data hashing. These obfuscation methods are not hack-proof, but we can assume that robots are not sophisticated enough to enter the required information.
JavaScript can be used to fill in hidden fields dynamically, which server-side validation can check for. Scratchmedia provides an example of this hidden field solution, along with an alternative CAPTCHA if JavaScript is disabled.
Additional timestamp and session data checks can also be used to detect automated submissions. A recent discussion on Stack Overflow provides many examples and ideas about this, including the implementation of Hashcash, which is available as a WordPress plug-in. A jQuery tutorial explains a similar method and includes an interesting thought:
“Thieves know to look for stickers, dogs in the yard, lights on the exterior of a home, and other signs of a well-guarded house. They’re looking for high payoff with minimal work and risk.”
— Jack Born, Safer Contact Forms Without CAPTCHAs
The analogy suggests that, as with CAPTCHAs, the method used does not stop intruders so much as the presence of any hurdle at all. As mentioned, spammers currently have too many targets to bother searching for a back door.
Centralizing the User BaseWith the rise of the social Web, many websites now allow users to register and interact with one another. Publishing to a third-party website was traditionally done either by registering a full-fledged account or by submitting totally anonymously, both of which methods leave the gate open to spam. In 2008, Facebook announced Facebook Connect, which provides websites and their users with an integrated platform that addresses this and other concerns. Twitter followed suit in 2009 with a similar service (“Sign in with Twitter”). Both of these services can be implemented on websites relatively easily, and they eliminate the need for registration and comment forms, which are accessible to robots.
So many websites offer social-networking integration that services like Janrain have popped up. Janrain provides an abstracted umbrella solution to ensure that websites are accessible through any account platform.
 Mahalo provides social log-in functionality via Janrain.
Other services, such as the commenting platform Disqus, allow user interaction with built-in spam detection and user sign-in.
Less anonymity and more accountability make users think twice about the content they submit. It also enables human spammers to be detected and banned quickly across entire websites; remove one Facebook profile and the whole Facebook Connect network is safe from that account owner’s dastardly deeds.
Such services, of course, provoke heated debates about privacy, data protection and the like… but that’s for another article. As alternatives for preventing spam without CAPTCHAs while maintaining usability and accessibility, they have great potential.
Recording User Time ExpenditureAnother rather simple method that can be implemented without annoying users is to distinguish between users and bots by measuring the time they take to fill out a contact form or compose a comment. By estimating the average time spent on a comment, one could define certain rules. For example, if a submission takes less than five seconds, which is virtually impossible for a human but just enough time for a bot to do its job, you could ask the user to try again. Jack Born’s tutorial on a slight variation of this concept for jQuery is worth a peek, since most users have JavaScript enabled. The whole endeavor is based on one crucial assumption: spammers prefer going after the easiest targets and will leave a website untouched if their initial attempt fails (although this can never be guaranteed).
The Perfect CAPTCHAIt would seem evident from years of use and research that CAPTCHAs are far from perfect as a solution. Remove spammers from the equation and we remove the need for CAPTCHAs entirely; this is the mentality we should be aiming for. The perfect CAPTCHA is no CAPTCHA at all.
The Rise of HumansCAPTCHAs, by nature, function more by blocking spam than by detecting humans (which is their purpose). But they can’t do that when the spammer is not a computer. A better solution would be to remove the incentive to spam altogether. If we can reverse the trend and drive spam from being highly lucrative to being a net loss, then both automated and manual spam will become worthless.
One of the many dark arts of search engine optimization (SEO) is to artificially generate links to the website being “optimized.” Search engines consider inbound links a strong indicator of value. This can be abused, obviously, by posting worthless links on many websites (forums and comment forms are perfect for this). The SEO benefits are so worthwhile that automated spamming isn’t even required. The practice of enlisting cheap human labor is emerging. And CAPTCHAs are not designed to stop this.
We should accept the need for moderation and background detection. CAPTCHAs are a stop-gap solution at best, and are lazy and inaccessible at worst. Whether you choose to fight the good fight or simply put the interests of genuine users first, you have options.
Taking a StandIf website owners work together to eliminate the incentives to spam, then spam will slowly wear away over time and eventually remove the need for CAPTCHAs. Is that too idealistic? Probably. In reality, we are likely to see a combination of technology and law dealing the death blow to spammers.
Google’s latest algorithm change has significantly demoted low-quality content farms (the effects of which are explained by Johannes Beus). Advances such as this will ultimately remove all incentives to game the system. However, if we website owners don’t evangelize and adopt alternative solutions, then we might just wake up to a world where CAPTCHAs are worthless and our websites are unmanageable.
Understanding the alternatives (whereby spam detection is silent to users) and implementing them on our clients’ websites is a good start. It’s a positive step toward usability and conversion rates (and clients will love that!). If users comment on your website, reward them with a simple experience. This can be done in several ways:
Moderation wherever possible Disallow certain content to be posted directly to your website, or allow it through maintained and verified account management. Better yet, use a service like Facebook Connect or Disqus; you’ll make things easier for both yourself and users.CAPTCHA alternatives Try the honeypot method or another that is invisible to users. Some could potentially be bypassed, but their presence is often enough to thwart automated efforts.Client-side detection This can work because, while there are simple workarounds, spammers won’t waste time (for now). Keyword and mouse interactions can be used to detect genuine user input. This option shouldn’t be used on its own but can add extra assurance.Server-side spam detection Developers should focus on server-side spam detection that monitors users and flags unusual activity. Specialist services like Akismet are affordable and proven, but bespoke systems can be tailored to the nuances of your website.Social moderation Move toward more sophisticated features that allow this. The simple act of voting content up and down can help to push spam away or flag it for deletion.It seems clear, considering all the pros and cons of CAPTCHA, that the future lies in a system that is invisible to normal Web use. For now, using a CAPTCHA should be your last resort.
   Do you use CAPTCHAs in your designs? If yes, which ones?survey software Further ReadingHistory of the CAPTCHA A brief history of how CAPTCHAs emerged on the Web.Inaccessibility of CAPTCHA The W3C’s 2005 study on CAPTCHA usage and accessible alternatives.CAPTCHAs’ Effect on Conversion Rates Casey Henry’s 2009 study (from the SEOmoz blog) on CAPTCHAs and their effect on conversions.How Good Are Humans at Solving CAPTCHAs? A Large Scale Evaluation A Stanford University study, researched by Elie Bursztein, Steven Bethard, Celine Fabry, John C. Mitchell and Dan Jurafsk.CAPTCHA Is Dead, Long Live CAPTCHA! A review of the state of CAPTCHAs in 2008 by Jeff Atwood.The State of Web Spam: Human-Posted Spam Is on the Rise A ReadWriteWeb article by Frederic Lardinois.How do you stop scripters from slamming your website hundreds of times a second? A discussion at Stack Overflow that suggests many alternative solutions.We express sincere gratitude to our Twitter followers and Facebook fans for their support and feedback in helping to prepare this article.
(al) (vf) (ik) (sp)
© dbushell for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us Post tags: captcha, spam 
]]></description>
<dc:subject>Coding captcha spam</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:26df4b966923/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:captcha"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:spam"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://37signals.com/svn/posts/2799-how-an-illinois-rest-stop-inspired-a-web-page">
    <title>How an Illinois rest stop inspired a web page</title>
    <dc:date>2011-03-03T21:27:00+00:00</dc:date>
    <link>http://37signals.com/svn/posts/2799-how-an-illinois-rest-stop-inspired-a-web-page</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Last summer I was driving back to Chicago from Wisconsin. On the Illinois side there are a couple of rest stops over the tollway. It’s a great place to get some gas, grab some caffeine, and stretch your legs a little before the final 50 miles home.



The rest stop usually has a booth where you can buy a iPass so you don’t need to stop and pay tolls all the time. During the day the booth is manned by someone to help answer any questions you have.



It appears that a lot of the same questions are asked over and over. Enough, in fact, that the dude who answers them is sick of giving the same answer. That answer is “Yes”.



So he jumped on a computer somewhere and put together what I can only describe as one of the smartest formats for an FAQ I’ve ever seen. A single answer on top, and all the questions below. The answer is always YES!! YES, YES. YES!! Then he taped it to the outside of the booth. You can’t miss it.







I thought this was brilliant. I just love it. Yeah, it’s full of passive aggression and spelling errors and formatting problems, but the idea in itself is so refreshing. It’s folk information art.



Inspired by this, we whipped up our own version of a YES! page for Highrise. It was a fun exercise in messaging and design.

More...

 
]]></description>
<dc:identifier>https://pinboard.in/u:alexhansford/b:eefa8945b0c1/</dc:identifier>
</item>
<item rdf:about="http://www.smashingmagazine.com/2011/02/24/designing-appropriately-for-a-startups-audience/">
    <title>Designing For Start-Ups: How To Deliver The Message Across</title>
    <dc:date>2011-02-24T15:16:53+00:00</dc:date>
    <link>http://www.smashingmagazine.com/2011/02/24/designing-appropriately-for-a-startups-audience/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[    Start-up organizations provide an extraordinary example of chaos organized into manageable chunks. Perhaps more than anyone else, the individuals who comprise a start-up team are required to understand their team’s goals across a variety of disciplines — research, marketing, design, development, architecture, etc. — as well as their own responsibility to move the company’s overarching objective forward. Entrepreneurs must choose the direction, designers must think through the options, and developers must cull a functional product or service, all while giving feedback to and receiving it from their colleagues.
At least, that’s the idea. Most start-ups tend to take liberties somewhere along the way. Some start-ups begin with a novel business model, whereas others begin with a beautiful design. Still others try to test things out first with a functional prototype, even if it is a bit ugly. All of them — regardless of their initial approach — adapt their process over time in order to create a well-rounded product or service. And for this reason, most of today’s start-ups describe themselves as “agile.”
Agile start-ups, as the name implies, should be capable of changing their design, development and/or business objectives on a dime. This is much easier said than done — especially for today’s user experience designers. The user experience (UX) designers who work at agile start-ups are required to do two things exceptionally well: (1) grasp the intent of the product or service being developed, and (2) effectively communicate those good intentions to end users in a language they’ll understand. Neither of these is as straightforward as it might sound.
Ideally, designers will jumpstart their design process by carefully selecting well-reasoned entrepreneurs to work with; but what happens when the designer is altogether alien to the community he is designing for? The breakneck speed of agile start-ups makes it incredibly difficult for designers to craft appropriate messages to their audience at large. Only by understanding the processes and opinions that dominate start-ups can designers begin to reach out and make a difference for the end users of their product or service.
User-Centered Design, Sans UserDesigning with a clear idea of who the users are has never been simple. Most designers who have experience with the trial by fire known as a “lean start-up” will almost vehemently agree: because there are more than a few fires to fight, adopting a big-d Design process at start-up organizations is, simply put, exceedingly difficult. Invariably, this means that most start-up organizations devolve to the point that salability reigns supreme, or form trumps function. But whereas flexible, agile environments are very good for getting those things done, good design takes time, which makes the design process of start-ups almost universally hamstrung.
 Keep the levels of UX in mind. (Image: Jon and Barb)
In short, agile, user-centered design tends to ignore the aesthetic, intangible, ambient qualities that good experiences are all about. As a consequence, budding artistic directors, brand ninjas and interaction designers have been apt to worry. Without the ability to intimately understand the audience for whom they’re designing, these team members can’t do their jobs. The logical question becomes, how can they? How can designers effectively communicate with an audience they’ve yet to meet?
The textbook definition(s) of UX design yields some clue. User-centered designers are encouraged to perform design research and then create personas as well as other deliverables. Certainly those would spotlight the factors that affect a company’s relationship with its users… right? Perhaps. While research is undoubtedly necessary to the design process, its deliverables are not.
I’ve written before that designers should bootstrap their own culture of UX within an organization. In this article, I’ll take that idea one step further: in order for a start-up to effectively communicate with its target audience, a spirit of empathy must pervade its every design decision — empathy cultivated by engaging in an ongoing, outward, user-centered conversation.
Where Has All The Empathy Gone?The task of any designer who works in a start-up environment requires empathy. The designer, perhaps more than any other team member, must empathize with stakeholders (to understand the project’s business objectives), developers (to understand its technical requirements) and, of course, users (to understand the nature of the problem they’re solving), all at once. Designing with consideration for all three parties effectively frames their strife.
Valuable though it may be, however, most start-up environments discourage empathy. Consider the number of times you’ve heard something like, “We’re targeting wealthy single males, ages 45 to 55,” or “We’re just like Amazon, but for baby boomers.” Well, that’s just great. A product description like that might initially help a team grok (a word that, ironically, means “understand by empathy”) an idea, but as far as rhetoric goes, merely saying that you know what segment you’re targeting isn’t enough.
Every e-commerce company sells products. Newcomers to the space can, and often do, learn a lot by studying the desire paths paved by industry notables (indeed, entire books are written on the subject). But let’s be clear: “I want to be Amazon” doesn’t imbue the designer with empathy. Creating something that looks and feels like Amazon will, of course, look and feel like Amazon. If that website is then marketed to a wholly different crowd, then the resulting outfit will be disingenuous — the polar opposite of empathetic.
In order to create something real, unique, of lasting value and with a look and feel of its own, members of start-up teams must vacate their cubicles.
One… Erm, Three ProcessesAdding to this perceived resistance are the various processes that drive start-up organizations at any given time. A recent blog post by Whitney Hess contrasts three specific types. It’s worth noting that all of the approaches detailed below show the exact same verbs in the exact same sequence. What’s different in each is the primary action that drives change along the way.
To cite Hess:

I see a lot of products developed using the Reactive Procedure:
I’m scratching my itch.Should I keep scratching this itch?I’ll scratch this other itch.As a designer who frequently consults with agile start-ups, I concur with Whitney’s sentiments: the reactive approach (“build it and they will come”) is far and away the most common. There is, of course, a good reason for all that action: development drives change. Start-ups act in order to build an initial prototype. Prototypes, in turn, move the company — indeed, the user feedback loop — forward.
Unfortunately, the prototypes developed by most start-ups exhibit a keen lack of consideration. Who is the prototype targeted at? 40 to 50 somethings? There are certainly a lot of them. Will those 40 to 50 somethings be able to grok it? That is, will users be able to tell what it’s “all about” from the design? Because this kind of subjectivity is incredibly nebulous, prudent start-ups rely on experienced UX designers to help them uncover the answers. It’s no wonder that Whitney and I see this in our line of work.

As a user experience designer, consultant and member of the New York tech community, I instead advocate for using the Preactive Procedure:
Who’s itchy?That itch isn’t being scratched.This is how to scratch that itch.I believe that most UX designers would agree — dare I say, empathize — with Whitney’s prescribed preactive approach. Beginning with thinking — with research — is in a user-centered designer’s blood; it helps them understand their audience and voice their messages appropriately. Further still, “preactivity” appears to be the only real way for designers to gain empathy. But most start-up environments run counter to this approach. Acting and then thinking usually leaves little room for the voice of research. Has Whitney encountered a start-up that tries to reconcile the two?
As luck would have it, she has. Whitney recently worked with an entrepreneur who marches to a different beat:
Campbell McKellar, founder of Loosecubes, is the first person to make me realize that there’s something even better than the Preactive Procedure — the Proactive Procedure.

By acting sooner, you are actually achieving more. You are creating the future instead of just predicting and accommodating for it. You are inventing a new reality, based half in what people need, and half in what you want them to have. You can observe behavior sooner and course-correct. It is the most transformative of all three procedures for both the subject and the object.
An entrepreneur at heart, I want to agree here, too. The proactive process appears to be a viable alternative to the unenviable tension between designers and developers at start-ups. But just because a group is humming along with a decision-based proactive process doesn’t mean that the organization’s designer understands its users any better. By UX standards, this process almost seems to disenfranchise them: it moves “thinking” — and here, I presume, research — all the way to the back of the bus.
In sum, it’s easy to envision scenarios at a start-up in which a given development process proves more valuable, more productive, than its alternative. Should the team think, act or decide? It depends. Regardless, as designers join start-ups, they’re very likely to find that design is secondary to the process unless, of course, their organization follows a preactive process. But for most start-ups, that’s simply not the case.
In order for an organization to learn more about its users, the design-minded members must advocate to that effect, changing the way that design is approached. Designers must stand up for their part of the process. As UX designer Joshua Porter attests, “The further a designer is from the people they’re designing for, the harder it is to design for them.”
Start-ups — or more specifically, the designers at start-ups — need to get as close to users as they can. Product development can’t rest in the entrepreneurs’ and/or the developers’ hands alone.
Why Design FailsWhen asked, most designers don’t take long to provide honest, valid reasons why the design process is important to developers and entrepreneurs alike. There is firm precedent to that end, and they are designers by choice, after all. But just because the truth and beauty of good design is evident to most designers doesn’t exactly mean that their colleagues share their sentiments.
If it isn’t making Dollars… (Image: Kristian Bjornard)
Start-ups — and more importantly, the individuals who comprise them — have a great number of mental hurdles standing in the way of their empathy with end users. The aforementioned quickened pace and changing processes aside, here are those hurdles:
Start-up teams have strong convictions. Anyone who believes strongly in a cause (be it an idea or a Web application… or both) will identify with it. If a designer questions the validity of an idea, then they are questioning the team. This is a difficult, integral part of the design process.Research doesn’t (immediately) sell. It doesn’t take weeks of research to sell a product to someone, and given enough time a good marketer can sell anyone almost anything — especially something beautiful. As a consequence, team members are likely to judge the design book by its cover. Research rarely affects their notion of beauty.Start-ups trust results they can measure (preferably in dollars). Web metrics are currently the bread and butter of today’s Web-savvy marketers. Saying that a design is good is one thing. Saying that a design has increased conversions by 200% is another. Attaching a number to something makes entrepreneurs (and, yes, designers, too) feel better about the problem being addressed. If the current process is measurable, should an up-front design process be allowed to slow that down?In sum, short-term, yes-or-no, go-or-no-go (Decide! Act!) thinking pervades the start-up space. The reality is that most agile start-ups favor a “design-less” process. While UX designers might trust that empathy (or understanding) is tantamount to a start-up’s success, their teammates won’t necessarily believe so. In order to effect change, designers must fight for the integrity of their design from the inside out.
Leading The Way With EmpathyTo be clear, good design doesn’t come about at start-ups just by studying the metrics generated from a prototype or by talking to users through a proxy — say, support emails. That isn’t to say that these things aren’t valuable — they certainly can (and often do) point to the consequences of prior decisions. But feedback, by definition, cannot determine the company’s next — or, more importantly, first — steps. There’s the rub. Unfortunately, that is the problem routinely faced by start-up designers.
Create Empathy and Inclusion. (Image: Kristian Bjornard)No one would argue that determining what’s “good” for a Web design is subjective, which makes it a frightening prospect. As D. Keith Robinson wrote on A List Apart all the way back in 2005:
Knowing what people want on the Web can be hard. You either need to have incredible empathy or have done fairly extensive research. This empathy I’m talking about, in my opinion, can really only be built up over time observing all kinds of people doing all kinds of things on all kinds of websites and applications. Even then, as you move from project to project, the people, problems and needs change.
With every new project comes a new target user, a new person to empathize with. And just as with meeting a new person, understanding what they like and don’t like takes time. If designers are to appeal to this new person, they first have to get to know them. As both Whitney Hess and Cennydd Bowles have asserted, focusing on a rapid proactive process — decide, act, think — gives most start-ups a solid plan of attack. Not only do teams get to test market viability first, they can then think about how they’ll differentiate the product shortly thereafter.
Yes, this process makes brand-conscious designers uneasy, and understandably so. In the beginning, though, without the context that a prototype creates, designers must lean towards the relatively “safe” side, where all interaction design begins: buttons look like buttons, drop-downs look like drop-downs and perhaps even the names of start-ups sound like start-ups. Robert Hoekman, Jr. calls this Designing the Obvious. I call it designing the boring bits.
Because what this approach makes up for in usability, it certainly lacks in propriety. To determine what’s appropriate (which is subjective), designers must conduct field research.
Hold Your Own ConvictionsPlenty of UX designers preach preactivity; they are the ones who want to understand — to empathize with — their audience and build something tailored to them. Moreover, these designers have the relative luxury of working within organizations. For them, Cennydd Bowles and James Box have written a lovely book, Undercover User Experience Design. If you’re at a company where design is ailing and you want to fix it, I suggest picking up a copy right away.
If you’re an independent consultant or a designer working with a start-up that’s out to craft the best possible experience, then I would suggest a couple of things, all centered on the same concept, which is to make listening a part of the company’s design process:
Create a design strategy. Articulate who you’ll be designing for (even if they’re only make-believe) and how they’ll use the website. I’ve written before how I do this. Regardless of how you do it, know who you’re trying to know.Have a solution. Work with a development team to generate a quick prototype that demonstrates your best (albeit uninformed) solution. Have at least two people use the prototype the way it is intended to be used. Befriend them, and see if they’ll contribute feedback as you refine your vision.See for yourself. Finally, and most importantly, see for yourself. Visit your users in their natural environment, and make sure their concerns are addressed. If you’re in a position to do this, ask them questions related to the problem your start-up addresses.In all cases, start-up designers should center their design process on listening to users. Instead of speaking to users by way of the design, converse with users to inform the design. Empathy, the human connection, makes or breaks an informed experience.
Because most of us work behind computers for hours, days or weeks at a time, gaining empathy is obviously easier said than done. However, empathy is the only way to turn a good business idea into a well-articulated design conversation. Respect is earned, a brand is born, when every interaction that an organization has with its users is open, earnest, honest and, most of all, appropriate.
Related ResourcesGetting Real About Agile Design, Cennydd Bowyles on A List ApartPersonas and the Advantage of Designing for Yourself, Joshua Porter on BokardoThe Complete Beginner’s Guide to Design Research, Andrew Maier on UX Booth Our Misguided Focus on Brand and User Experience, Jon KolkoEmpathy and Web Design, Janko JovanovicGiving Users Some Credit, Jeremy Girard on Design Informer“CopyCat Design” and “UX Won’t Save You,” 52 Weeks of UXAlan Cooper’s keynote, Agile 2008Usability Experts Are From Mars, Graphic Designers Are From Venus, Curt CloningerPersonas?, Ask 37signals5 Design Decision Styles. What’s Yours?, Jared Spool on UIE.com(al) (sp)
© Andrew Maier for Smashing Magazine, 2011. | Permalink | Post a comment | Smashing Shop | Smashing Network | About Us Post tags: usability, ux 

]]></description>
<dc:subject>Design usability ux</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:3a7b4a964159/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:usability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:ux"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://freelanceswitch.com/productivity/30-inherently-useful-tools-for-freelancers/">
    <title>30 Inherently Useful Tools for Freelancers</title>
    <dc:date>2011-02-23T12:00:59+00:00</dc:date>
    <link>http://freelanceswitch.com/productivity/30-inherently-useful-tools-for-freelancers/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Credit: David Mottram, Smashing Magazine

Being a freelancer can sometimes feel like a solo venture into the unknown, an exciting but nevertheless daunting prospect! We all have our particular strengths and individual weaknesses, but few of us would decline a little help with some of the more practical aspects of being a freelancer.

While not every tool on this list will be helpful for every freelancer, its overall aim is to provide you with resources that could help you significantly increase your productivity (do more…), get organized, work more efficiently, plan your to do items better,  and maybe even save some money!



Useful Tools
Evernote


Evernote is in the very first spot on this list because it’s awesome and it’s free! Whether it’s an App that will become a trustworthy companion or pleasant acquaintance will primarily depend upon your level of organization, but it’s undoubtedly worth a look! Click here for an in-depth review of Evernote for Mac.

Google Calendar
You may be entirely satisfied with your current calendar and it’s capabilities, you like the way iCal syncs with your iPhone or the simply virtuous pen on paper. Despite this, it’s worth having a look at whether Google Calendar could enhance the way you work! It’s a great tool that allows you to share your schedule, access your calendar on the go, and get customizable reminders to help you stay on schedule. You can even choose to be notified by email or get a text message sent right to your mobile phone, for free!

LessAccounting


“Bookkeeping sucks. We make it suck less.” Is the simple but striking tagline for LessAccounting that sums up a feeling many of us get when thinking about even the most basic accounting tasks. With the ability to import data directly from your bank, and a experience designed to be stress and jargon free, it’s well worth considering – you might even begin to enjoy it!

Square


An iPhone and iPad App that heralds the future of monetary transactions! Square is a revolutionary service that enables anyone to accept credit cards anywhere. Depending on your line of work Square could be invaluable, allowing you to accept payment instantly and speeding up your cash-flow! It’s also worth bearing in mind that there is no extra equipment, merchant accounts, complicated contracts, or monthly fees required.

Sample Design Contract


Alongside some of the more interesting entries here I’ll also endeavour to shed light on some useful tools that won’t change your life but will make it easier. Here is a good example of a sample design contract from Mayhem Studios that includes some useful small print!

SlimTimer


SlimTimer is a useful tool for tracking how much time you’ve spent working on a task and even includes the ability to export the reports to coworkers and clients. Did I mention it’s free?

Outright


Outright is a simple piece of web-based accounting software that aims to help you ‘free yourself from accounting’. It has a couple of really great features, including the ability to pull in spending from your bank and credit cards, as well as grab online sales from PayPal.

Creating a Web Design Contract


This blog article by Anders Haig on how to create a web design contract is a great tool for anyone starting out in the web design business and gives a good overview of what needs to be included. It even goes as far as including a sample contract, although it is a little more basic than the sample from Mayhem Studios.

Dropbox


Dropbox is an effortlessly brilliant piece of software that syncs your files online, as well as across your computers and handheld devices. You simply put your files into your Dropbox folder on one computer, and they’ll automatically appear on any of your other computers or devices that also have Dropbox installed! Its basic version is free  – get it now!

Google Docs


For some of us a fully functioning Office-like suite of programs for word processing, et al., just simply isn’t necessary and would be a waste of resources! Meet Google Docs. It’s a free, web-based word processor, spreadsheet, presentation, and form application that allows users to create and edit documents online. It goes above and beyond the standard word processor, allowing collaborating in real-time with other users!

How to Be a Rockstar Freelancer


An eBook on being a successful freelancer, covering everything from getting started to expanding your business. An invaluable tool if you’re just starting out and full of engaging insight for those of you already making good headway!

PayPal


It might sound ridiculous to those of you who’ve been in the freelancing world for years but PayPal is an incredibly useful tool for receiving and sending money. If you regularly receive payments via PayPal, then it may have become a little mundane and unremarkable, but it’s worth remembering how powerful it is for a freelancer to be able to quickly and easily receive payments from anywhere in the world!

Things


Things is an excellent task manager that is, for now, only available for Macs, iPhones, and iPads. Despite its platform limitations it’s well worth a mention, as the people at Cultured Code clearly understand the power of simplicity! Its sleek interface and beautiful cross platform synchronization allows you to focus on actually getting things done!

MakeSomeTime


MakeSomeTime is a Web App for simple online time tracking and invoicing. Its interface is sleek and it’s packed with functionality for a free App! Perfect for those of us who need an easy and cheap solution for time tracking and invoicing!

FreelanceSwitch Hourly Rate Calculator


An abundantly useful tool, the FreelanceSwitch Hourly Rate Calculator is designed to give you a guide based on your costs, number of billable hours and desired profit. As a simple tool for you to play around with it’s fascinating, and put to proper use it can really help you evaluate your finances!

Making a Living Without a Job


A fascinating an effortlessly readable book, now available in electronic form, by Barbara Winters on creating work that you love. Great for those starting out on a journey into freelancing and working for yourself, but also an excellent tool for anyone who feels they have lost their drive or just simply don’t enjoy what they’re doing anymore!

Mint


Managing your money is a vital part of being a successful freelancer and Mint is another tool that is designed to help you do just that! Mint brings all your financial accounts together online, automatically categorizes your transactions, lets you set budgets, and helps you achieve your savings goals – and all for free!

Pulse


If your foray into freelancing has begun to grow and find success, then it’s definitely worth considering whether a paid money management App would be beneficial. Pulse is one such App and describes itself as the easy way to manage your cash flow online! Its wealth of features and functions empower you to make the best decisions for your business.

Moo


MOO is a great place to start when thinking about getting yourself some business cards! It has lots of ideas and inspiration for designs as well as some beautiful templates. It’s well worth a look even if you decide to go elsewhere for printing. MOO also boasts a new approach to business card printing called ‘Printfinity’, a unique printing technology that allows you to print a different image on every card in a pack!

UNPRINTED


For many types of freelancer it’s vital to have access to, or be able to refer people to, your portfolio. If you’re one of the lucky ones, or happen to find an iPad lying around in the street, then UNPRINTED could be the perfect way to dazzle prospective clients! UNPRINTED gives you an easy-to-update, stylish solution for presenting your best work anytime, anywhere.

Blinksale


We are gradually working through many of the potential solutions for managing your money, which is a vital part of being self employed. The perfect solution will vary from freelancer to freelancer, however, Blinksale is a strong contender in the arena of paid for invoicing solutions! In addition to the features you’d expect, it allows you to import clients from Basecamp and even automate billing!

Remember The Milk


Remember The Milk is a delightfully simple way to manage your tasks and events that allows you to get email, SMS, and IM reminders. It’s free and available for almost any platform/device you can name!

XE


For working with an overseas client you may need to handle foreign currencies. XE’s currency converter is a useful tool for accurate currency calculations that features up-to-the-minute currency rates.

Basecamp


Basecamp boldly declares that it’s the top choice for entrepreneurs, freelancers, small businesses, and groups inside big organizations when it comes to project management. It’s focus on simplicity, clarity, and ease of use is excellent, while the depth of functionality is invaluable if you need to collaborate with others on projects!

Instacalc
Even if times you need to do inherently complicated math are few few and far between, I would still recommend bookmarking Instacalc. It’s beautifully intuitive and the perfect solution to any math jam you may find yourself in!

FreshBooks


FreshBooks is one of the more popular online accounting Apps and benefits from having a good free account and an excellent companion App for the iPhone. It aims to help you break free with fast, simple services that help you manage your business.

Campfire


Campfire is made by the team that developed Basecamp and could become an indispensable tool if you are someone who regularly needs to collaborate with others. Fundamentally, Campfire is like instant messaging, but designed exclusively for groups – it allows you to share text, files, and code in real time. You can also use transcripts so you don’t forget!

faxZero


Do you have a fax machine? I thought not. Very few freelancers would now find any use in having a fax machine, but for those rare occasions when a client requests a holdable copy of something there’s faxZERO – a simple but useful tool that allows you to send a fax free to anywhere in the U.S. or Canada!

Creative Commons


If your output as a freelancer is creative and original, then Creative Commons is an organization that exists to help you! Creative Commons develops, supports, and stewards legal and technical infrastructure that maximizes digital creativity, sharing, and innovation. Use Creative Commons to specify what kinds of legal restrictions you want your work to carry.

AIGA Standard Form of Agreement


As a freelancer it’s  vitally important to protect your livelihood and creative output. To this end, the final tool included here is essentially a set of terms and conditions relevant to design work. This agreement allows you to create customized terms and conditions for different types of design engagements. It is arranged in modules so that terms and conditions can be kept to a minimum in each case.

Share Your Ideas
This is in no way an exhaustive list, but rather a taster of what’s out there! It would be great if you would share any tools that you’ve found particularly useful as a freelancer, anything from contract templates to eBooks! It’s always exciting when we become more productive in the more tiresome aspects of freelancing, thereby leaving us more time to focus on the work we love!

Photo credit: from Smashing Magazine by David Mottram.


     
]]></description>
<dc:subject>Freelancing_Essentials Productivity tools</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:b5bc0f9fa557/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Freelancing_Essentials"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tools"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://feedproxy.google.com/~r/FreelanceSwitch/~3/PP-8bYpgBNw/">
    <title>30 Inherently Useful Tools for Freelancers</title>
    <dc:date>2011-02-23T12:00:59+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/FreelanceSwitch/~3/PP-8bYpgBNw/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Credit: David Mottram, Smashing Magazine

Being a freelancer can sometimes feel like a solo venture into the unknown, an exciting but nevertheless daunting prospect! We all have our particular strengths and individual weaknesses, but few of us would decline a little help with some of the more practical aspects of being a freelancer.

While not every tool on this list will be helpful for every freelancer, its overall aim is to provide you with resources that could help you significantly increase your productivity (do more…), get organized, work more efficiently, plan your to do items better,  and maybe even save some money!



Useful Tools
Evernote


Evernote is in the very first spot on this list because it’s awesome and it’s free! Whether it’s an App that will become a trustworthy companion or pleasant acquaintance will primarily depend upon your level of organization, but it’s undoubtedly worth a look! Click here for an in-depth review of Evernote for Mac.

Google Calendar
You may be entirely satisfied with your current calendar and it’s capabilities, you like the way iCal syncs with your iPhone or the simply virtuous pen on paper. Despite this, it’s worth having a look at whether Google Calendar could enhance the way you work! It’s a great tool that allows you to share your schedule, access your calendar on the go, and get customizable reminders to help you stay on schedule. You can even choose to be notified by email or get a text message sent right to your mobile phone, for free!

LessAccounting


“Bookkeeping sucks. We make it suck less.” Is the simple but striking tagline for LessAccounting that sums up a feeling many of us get when thinking about even the most basic accounting tasks. With the ability to import data directly from your bank, and a experience designed to be stress and jargon free, it’s well worth considering – you might even begin to enjoy it!

Square


An iPhone and iPad App that heralds the future of monetary transactions! Square is a revolutionary service that enables anyone to accept credit cards anywhere. Depending on your line of work Square could be invaluable, allowing you to accept payment instantly and speeding up your cash-flow! It’s also worth bearing in mind that there is no extra equipment, merchant accounts, complicated contracts, or monthly fees required.

Sample Design Contract


Alongside some of the more interesting entries here I’ll also endeavour to shed light on some useful tools that won’t change your life but will make it easier. Here is a good example of a sample design contract from Mayhem Studios that includes some useful small print!

SlimTimer


SlimTimer is a useful tool for tracking how much time you’ve spent working on a task and even includes the ability to export the reports to coworkers and clients. Did I mention it’s free?

Outright


Outright is a simple piece of web-based accounting software that aims to help you ‘free yourself from accounting’. It has a couple of really great features, including the ability to pull in spending from your bank and credit cards, as well as grab online sales from PayPal.

Creating a Web Design Contract


This blog article by Anders Haig on how to create a web design contract is a great tool for anyone starting out in the web design business and gives a good overview of what needs to be included. It even goes as far as including a sample contract, although it is a little more basic than the sample from Mayhem Studios.

Dropbox


Dropbox is an effortlessly brilliant piece of software that syncs your files online, as well as across your computers and handheld devices. You simply put your files into your Dropbox folder on one computer, and they’ll automatically appear on any of your other computers or devices that also have Dropbox installed! Its basic version is free  – get it now!

Google Docs


For some of us a fully functioning Office-like suite of programs for word processing, et al., just simply isn’t necessary and would be a waste of resources! Meet Google Docs. It’s a free, web-based word processor, spreadsheet, presentation, and form application that allows users to create and edit documents online. It goes above and beyond the standard word processor, allowing collaborating in real-time with other users!

How to Be a Rockstar Freelancer


An eBook on being a successful freelancer, covering everything from getting started to expanding your business. An invaluable tool if you’re just starting out and full of engaging insight for those of you already making good headway!

PayPal


It might sound ridiculous to those of you who’ve been in the freelancing world for years but PayPal is an incredibly useful tool for receiving and sending money. If you regularly receive payments via PayPal, then it may have become a little mundane and unremarkable, but it’s worth remembering how powerful it is for a freelancer to be able to quickly and easily receive payments from anywhere in the world!

Things


Things is an excellent task manager that is, for now, only available for Macs, iPhones, and iPads. Despite its platform limitations it’s well worth a mention, as the people at Cultured Code clearly understand the power of simplicity! Its sleek interface and beautiful cross platform synchronization allows you to focus on actually getting things done!

MakeSomeTime


MakeSomeTime is a Web App for simple online time tracking and invoicing. Its interface is sleek and it’s packed with functionality for a free App! Perfect for those of us who need an easy and cheap solution for time tracking and invoicing!

FreelanceSwitch Hourly Rate Calculator


An abundantly useful tool, the FreelanceSwitch Hourly Rate Calculator is designed to give you a guide based on your costs, number of billable hours and desired profit. As a simple tool for you to play around with it’s fascinating, and put to proper use it can really help you evaluate your finances!

Making a Living Without a Job


A fascinating an effortlessly readable book, now available in electronic form, by Barbara Winters on creating work that you love. Great for those starting out on a journey into freelancing and working for yourself, but also an excellent tool for anyone who feels they have lost their drive or just simply don’t enjoy what they’re doing anymore!

Mint


Managing your money is a vital part of being a successful freelancer and Mint is another tool that is designed to help you do just that! Mint brings all your financial accounts together online, automatically categorizes your transactions, lets you set budgets, and helps you achieve your savings goals – and all for free!

Pulse


If your foray into freelancing has begun to grow and find success, then it’s definitely worth considering whether a paid money management App would be beneficial. Pulse is one such App and describes itself as the easy way to manage your cash flow online! Its wealth of features and functions empower you to make the best decisions for your business.

Moo


MOO is a great place to start when thinking about getting yourself some business cards! It has lots of ideas and inspiration for designs as well as some beautiful templates. It’s well worth a look even if you decide to go elsewhere for printing. MOO also boasts a new approach to business card printing called ‘Printfinity’, a unique printing technology that allows you to print a different image on every card in a pack!

UNPRINTED


For many types of freelancer it’s vital to have access to, or be able to refer people to, your portfolio. If you’re one of the lucky ones, or happen to find an iPad lying around in the street, then UNPRINTED could be the perfect way to dazzle prospective clients! UNPRINTED gives you an easy-to-update, stylish solution for presenting your best work anytime, anywhere.

Blinksale


We are gradually working through many of the potential solutions for managing your money, which is a vital part of being self employed. The perfect solution will vary from freelancer to freelancer, however, Blinksale is a strong contender in the arena of paid for invoicing solutions! In addition to the features you’d expect, it allows you to import clients from Basecamp and even automate billing!

Remember The Milk


Remember The Milk is a delightfully simple way to manage your tasks and events that allows you to get email, SMS, and IM reminders. It’s free and available for almost any platform/device you can name!

XE


For working with an overseas client you may need to handle foreign currencies. XE’s currency converter is a useful tool for accurate currency calculations that features up-to-the-minute currency rates.

Basecamp


Basecamp boldly declares that it’s the top choice for entrepreneurs, freelancers, small businesses, and groups inside big organizations when it comes to project management. It’s focus on simplicity, clarity, and ease of use is excellent, while the depth of functionality is invaluable if you need to collaborate with others on projects!

Instacalc
Even if times you need to do inherently complicated math are few few and far between, I would still recommend bookmarking Instacalc. It’s beautifully intuitive and the perfect solution to any math jam you may find yourself in!

FreshBooks


FreshBooks is one of the more popular online accounting Apps and benefits from having a good free account and an excellent companion App for the iPhone. It aims to help you break free with fast, simple services that help you manage your business.

Campfire


Campfire is made by the team that developed Basecamp and could become an indispensable tool if you are someone who regularly needs to collaborate with others. Fundamentally, Campfire is like instant messaging, but designed exclusively for groups – it allows you to share text, files, and code in real time. You can also use transcripts so you don’t forget!

faxZero


Do you have a fax machine? I thought not. Very few freelancers would now find any use in having a fax machine, but for those rare occasions when a client requests a holdable copy of something there’s faxZERO – a simple but useful tool that allows you to send a fax free to anywhere in the U.S. or Canada!

Creative Commons


If your output as a freelancer is creative and original, then Creative Commons is an organization that exists to help you! Creative Commons develops, supports, and stewards legal and technical infrastructure that maximizes digital creativity, sharing, and innovation. Use Creative Commons to specify what kinds of legal restrictions you want your work to carry.

AIGA Standard Form of Agreement


As a freelancer it’s  vitally important to protect your livelihood and creative output. To this end, the final tool included here is essentially a set of terms and conditions relevant to design work. This agreement allows you to create customized terms and conditions for different types of design engagements. It is arranged in modules so that terms and conditions can be kept to a minimum in each case.

Share Your Ideas
This is in no way an exhaustive list, but rather a taster of what’s out there! It would be great if you would share any tools that you’ve found particularly useful as a freelancer, anything from contract templates to eBooks! It’s always exciting when we become more productive in the more tiresome aspects of freelancing, thereby leaving us more time to focus on the work we love!

Photo credit: from Smashing Magazine by David Mottram.


     
]]></description>
<dc:subject>Freelancing_Essentials Productivity tools</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:b975336645c6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Freelancing_Essentials"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tools"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.geekculture.com/joyoftech/joyarchives/1507.html">
    <title>JoT 1507: 10 reasons history will forget you.</title>
    <dc:date>2011-02-23T08:00:24+00:00</dc:date>
    <link>http://www.geekculture.com/joyoftech/joyarchives/1507.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[And if avoiding these helps you go down in history, kindly thank us in your memoirs. Click here to visit the comic. 
]]></description>
<dc:subject>Comics</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:5550cdda05d3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Comics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.bbc.co.uk/blogs/bbcinternet/2011/02/frame_accurate_video_in_html5.html">
    <title>Frame accurate video in HTML5</title>
    <dc:date>2011-02-21T08:44:43+00:00</dc:date>
    <link>http://www.bbc.co.uk/blogs/bbcinternet/2011/02/frame_accurate_video_in_html5.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Hello, I am Dirk-Willem van Gulik, Chief Technical Architect here at the BBC. An important part of my job is to help the BBC use the right internet and web technologies - and help the industry and open standards bodies create the internet and web technologies which are right for the BBC.


Now the BBC is a very special place to work. And one of the main things which makes it so special is "Quality". At the BBC it is a currency, it is a goal, it is a culture - and as an engineer, it is something you are tasked to deliver. 


One of our roles in FM&T is to provide our creative colleagues with tools. The tools they need for broadcast and to create high quality video. This includes tools for "non linear editing" - taking short clips, cutting them to the right length, stringing them together, adding some voice overs and graphics - and then endlessly tuning the resulting video so that it tells a story perfectly.


Usually we shoot hundreds of hours of video, import it onto an editing server, painstakingly tagging or "logging" the content on the way, and then edit each clip into something that makes sense. Because the original video files are so huge (especially in HD), we actually edit low resolution "proxy" versions of each file, and we store edit decisions using timecodes rather than actually mashing up the real video all the time. Then everything can be synced up and "conformed" using the original high-quality versions later on.


Throughout all of this, timecodes play a major role. They are the key 'link' to get right. They ensure that recipes done on the proxy give identical (albeit at a higher resolution) results when repeated on the raw high resolution footage at the end. They ensure that the audio tracks are perfectly synchronized with the clips, that transitions start and end at exactly the right time (and there is not some extra black frame due to a rounding error). They are also important in the creative process - as they let us communicate. We can ask each other to look at a specific frame - or discuss whether we move a cut by a few frames to achieve a particular effect.


If this sounds a bit overly perfectionistic and artistic - then consider this - a cut every 3 seconds or so is quite normal. So if you are off by 1 frame either way - then we're already talking errors of over 2%! Even a very pragmatic engineer would have to agree that that matters!


So timecodes using exact frame references are important. Really important. And the dirty little secret is that the internet has none. NONE! None of today's open standard technologies, or even the dominant proprietary ones, do timecodes right. They are off by one; they round to the nearest half second, they jump to the nearest previous I-frame. Whatever. (In all fairness - there are highly specialist products one can buy and install, usually with special browser plugins, which are accurate, often provided they are used with specially prepared material and within a single LAN. But none of those are conductive to the 'internet' network effect by facilitating collaboration between creative people across organisational barriers.)



 

So at the BBC we've been struggling with this. Because creative people want to work together, over the internet, from where ever they are. From their iPad, from their laptop, from a PC in a internet cafe near Tahrir Square. Anywhere, any time. Regardless for what production house they work for (as we outsource a lot, i.e. commission at third parties) and with workflows which often span across many specialist companies. So right now - we cannot create BBC quality video using internet and web technology based tools. 


Because the first thing a professional needs is a rock solid way to reference each and every individual frame accurately. So they can talk about it. For us - 'video on the web' is a bit as in James May's programme  - today the internet feels like that plastic 1:1 model of a spitfire[9]. It looks like one - but it sure does not fly.


Now over the past two months that landscape has started to radically change. A few of us[1] have been working with the various open standard and open source HTML5 communities. And as of this week, after 120 emails, the bleeding edge development versions of several HTML5 implementations (as used in Safari, Chrome, Mozilla and many others) are now fully frame accurate. 


First was WebKit (the basis for Safari, Chrome and several dozen other browsers), which as of revision r77919 has frame accurate playback!


Really. Frame Accurate. Actually even more accurate than just a frame (which is important for audio). You can jump to any point in the video (i.e. 1 hour, 3 minutes, 6 seconds and 5 frames, or to frame 178127) - and it will be exactly at that frame. Not at the nearest i-frame, rounded down to the nearest second, or off by one. No it will be exactly at that very frame.


So today, the HTML5 community has opened a door for us. Which will allow creative people to collaborate and edit professional video on the web.


Do know though that, while key, this is just a first step. There is a lot to still build, so we'll need many hyper creative companies and internet engineers working together to make this work. We need to create a new breed of web based production tools which can interact at the quality levels professionals and the BBC expect. And we still have issues around UMIDs (unique global references for video) to crack. And even some very basic things (like did you know that a pixel in the video world is actually rectangular, rather than square?!) will need to  universally understood between the broadcasting and internet engineers. But boy, getting timecodes, that is a big step! 


Again - a big thank you to the open source folks of WebKit and Mozilla. IE9 is not quite there - (progress is tracked at https://connect.microsoft.com/IE/feedback/details/636755) but Microsoft has let us know that we "can expect the video-frame-accurate seeking be available when IE9 is final"!


[1] To give credit where credit is due: within the BBC, Raymond Le Gué (programme director at BBC) insisted on having frame accurate playback in the browser. Rob Coenen went on and beyond his call of duty to make this happen, filing bugs - patiently working with the wider developer community, explaining what SMPTE frame counts are, why film and television production cannot live without it, proving that it was not working in browsers and helping the developers to fix it. He got help from Bas Schouten (at Mozilla), Andy Armstrong and Dirk-Willem van Gulik (both at the BBC).


But most credit should go to the open standards and open source communities around Webkit, Chrome and Mozilla which made it happen: Andrew Scherkus and the Chromium team get credit for being the first to understand the significance. The actual fixes where ultimately created by Jer Noble, Eric Carlson (both at Apple) and Chrome developer Andrew Scherkus; while Matthew Gregan and Anthony Hughes did the job for Mozilla.


Dirk-Willem van Gulik is Chief Architect, BBC Future Media & Tecnology



 


SMPTE timecode based and frame accurate metadata logging is now possible over the web with HTML5. The image above is a made up screen shot of what a prototype tool to do this might look like.

]]></description>
<dc:subject>HTML5</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:4c9878060161/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:HTML5"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://feedproxy.google.com/~r/blogspot/amDG/~3/XkCUf33Bp3Q/beyond-times-and-arial-new-web-safe.html">
    <title>Beyond Times and Arial - The New Web Safe Fonts</title>
    <dc:date>2011-02-18T19:00:00+00:00</dc:date>
    <link>http://feedproxy.google.com/~r/blogspot/amDG/~3/XkCUf33Bp3Q/beyond-times-and-arial-new-web-safe.html</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Webmaster level: AllIn the past, when you created a website or web app, you were largely limited to a few select “web safe” fonts such as Times and Arial. If you deviated from these fonts, you were required to use Adobe Flash or to embed text in images, which introduced a whole new set of trade offs. For example, images aren’t semantic, cannot be translated into other languages automatically, and can be much larger in file size than text. In addition, text in images cannot be copied to a user’s clipboard, read with screen-reading software, or easily indexed by search engines.The good news is, with Google Web Fonts it is now possible to use hundreds of web safe fonts on your web pages. Launched last May, Google Web Fonts allows you to simply choose the font(s) you’d like to use on your webpage, blog, or web app, and embed the snippet of HTML and CSS. In about 30 seconds, you can have beautiful fonts on your pages that will render correctly in the large majority of popular modern web browsers. No longer will you need to use images or Flash to embed the font of your choice. Unlike Times and Arial, which are references to fonts installed on a user’s local machine, web fonts are served via a browser request (much like an image would be served). That means you can push any web font to a user’s machine.  Users will be delighted when they realize these fonts behave just as any other text in Arial would behave.Some example web fonts, offered by the Google Web Fonts serviceThe adoption of the web font technology has been rapid. Google Web Fonts now serves roughly 50 million daily requests[1], across roughly 800,000 unique websites[2], and is growing at about 30% each month. Here at Google, we’re excited about the potential for web fonts to change the very fabric of the web. Beautiful typography makes the web more pleasant to browse, expressive, and interesting.Here’s to a beautiful Web!Written by David Wurtz, Product Manager, Google Web Fonts[1] A request is a single call to the Google Font API for one or more fonts.[2] We count a unique website as unique domains, except that “www” subdomains are not counted. For example, www.myblog.com and myblog.com would count as one domain. However, sam.myblog.com and sally.myblog.com would count as two domains.

]]></description>
<dc:subject>intermediate advanced general_tips beginner</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:9fb2994730ab/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:intermediate"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:advanced"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:general_tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:beginner"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/css/convert-dezign-folio-from-psd-to-html/">
    <title>Converting Dezign Folio From PSD to HTML [Very Detailed]</title>
    <dc:date>2011-02-18T10:16:17+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/css/convert-dezign-folio-from-psd-to-html/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[In this article you will learn how to convert Dezign Folio from PSD to HTML in a detailed step-by-step tutorial. You will learn  how to create this layout by using a CSS framework, some CSS styles and  Javascript. When you’ve completed this tutorial you’ll have a valid HTML/CSS, cross browser compatible and dynamic  layout. I hope that you can go through this tutorial and learn a few  techniques that will help you in future projects.



Now, let’s get started with this tutorial.

Links you will need to complete this tutorial:


Dezign Folio: Create A Detailed Portfolio Homepage Design In Photoshop
960 Grid System
jQuery Scrollable

Here’s what we’ll be creating (Click on image to view a full working demo).



You can also download this tutorial’s source files here.

Step 1 – Preparation
If you read the          Photoshop tutorial for creating this layout you probably noticed          that 960gs grid system was used for guidelines creation.          Well, in this tutorial we will also need the 960gs CSS framework. Using CSS frameworks makes  layout and style creation          a lot easier and saves time in web  development. Now you should download the          960 Grid system source  files for usage in this tutorial.

You will also need a code editor; you can use a  plain text          editor such as the Notepad. I always recommend you  use a free code editor and get used to it, this helps you get things  done faster.

During this tutorial you should test your  layout in          different browsers, you don’t want to return to the  beginning because of browser          compatibility issues. In this  tutorial I am using some CSS3 styles, but as you          might know not  all browsers support CSS3 features. The CSS3 styles  used in          this tutorial have been tested with Firefox version 3.6.

Step 2 – Getting Your Files Ready
First thing you should do is create a directory for your website.          I usually create an /images/ directory for images and a /styles/ directory which will hold every style sheet (CSS) file. The HTML file goes in          the root directory.

Now you need to grab the CSS files from the 960gs grid system we           downloaded earlier, extract the ZIP file and then copy the CSS  files from /code/css/ folder to your  /styles/ directory, you should copy 960.css, reset.css and text.css files. You should notice a directory called /uncompressed/ which has          the same files but in a bigger and more readable  format, I recommend using the          compressed CSS files. You also  need to create a new file in your root directory          called index.html and create another file called style.css in /styles/ directory.

In this tutorial we need to export images from Photoshop to use in  our HTML          layout. You can export these images yourself if you  have the layered PSD file          from the original Photoshop tutorial,  or you can just grab the source files          with this tutorial and  you’ll find the images I created.

Step 3 – Simple Starter Layout
We need to start by creating a Simple HTML layout as the basis of our site to be. By looking at the Photoshop Layout you should notice  a few things:


The layout has these sections: header, slide show, services, information and a footer.
You’ll also notice that we can use a single repeating image as the background for the body that covers header, slide show and services.
Both information and footer sections have the same horizontally repeating background image.
Finally, notice that header, slide show, information and footer sections have fixed heights.

Based on these points we create the following HTML layout.


<!--<span class="hiddenSpellError" pre=""-->DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>DezignFolio</title>
    css" href="styles/reset.css" rel="stylesheet" media="all" />
    css" href="styles/text.css" rel="stylesheet" media="all" />
    <link type="text/css" href="styles/960.css" rel="stylesheet" media="all" />
    <link type="text/css" href="styles/style.css" rel="stylesheet" media="all" />
</head>
<body>
    <div class="header container_12">
        header content goes here.
    </div>

<div class="<span class=">slideshow"></div>
        slide show content goes here.
    </div>
    <div class="services container_12">
        services content goes here.
    </div>
    <div class="information">
        <div class="container_12">
            information content goes here.
        </div>
    </div>
    <div class="footer">
        <div class="container_12">
            <div class="grid_12">
                Copyright 2010 1stwebdesigner.com
            </div>
        </div>
    </div>
</body>
</html>

As you can see in this layout we added links for the CSS files in the header, created five main <div> sections each with a unique class name for styling. I added an extra class “container_12″ to header and services. I also added a <div> with a class “container_12″ inside information and footer sections, this will allow us to style the information and footer sections to take full width of the browser area and to hold the repeating background. Finally, notice that “container_12″ in the footer has a “grid_12″ division, this division will take the whole width of “container_12″ and it is styled in 960.css file. Now          let’s add the CSS as follows (all CSS should be added in style.css file):


body {
    color: #696969;
    background: #fff url(../images/bg.jpg) repeat-x top center;
    font-size: 12px;
    line-height: 17px;
    font-family: Verdana;
    padding: 0;
}

a {
    text-decoration: none;
}

.header {
    height: 101px;
    overflow: hidden;
}

.slideshow {
    padding: 30px 0 0 0;
    height: 475px;
    overflow: hidden;
    background: url(../images/message_bg.png) no-repeat;
    background-position: center 348px;
}

.information {
    width: 100%;
    height: 318px;
    display: block;
    overflow: hidden;
    background: url(../images/information_footer_bg.jpg) repeat-x top center;
}

.footer {
    width: 100%;
    height: 59px;
    display: block;
    overflow: hidden;
    background: url(../images/information_footer_bg.jpg) repeat-x bottom center;
    text-align: center;
    font-size: 12px;
    line-height: 59px;
    color: #fff;
}

Now notice that the body color is set to #696969 with white as the background color and a horizontally repeating background image bg.jpg font size is set to 12px, line height to 17px, font set to Verdana with zero padding. Then the links text decoration is set to none so that the links aren’t underlined in normal link state. Now the header height is set to 101px with overflow hidden to hide extra content. Now look at the header style and see that it has a top padding of 30px to maintain a space between header and slide show content, height is set to 475px, with overflow set to hidden and a background image message_bg.png aligned horizontally to center and vertically at 348px. You’ll notice that there’s no style for the services section and that’s because it doesn’t have any special styles to be that will be applied. Now let’s look at information style, notice that the width is set to 100% to fill browsers horizontal space, with a fixed height, overflow set to hidden and a horizontally repeating background image.

Finally, the footer section is going to be styled here entirely and that’s because it has only one copyright sentence. The width is set to 100% to fill browsers horizontal space, with 59px height, hidden overflow, a background image with the same settings as we used in the information section the only change is that its aligned to bottom, text is aligned to center, with 12px font size, white font color and 59px line height similar to footer height value so that the text is aligned vertically to center. The result should be the same as the image below.



Step 4 – Adding Logo and Menu Items to Header
Now we need to add the logo and menu items, here’s the HTML for the header section.


    <div class="header container_12">
        <div class="grid_4">
            <h1>
                <a href="#" title="DesignFolio">DezignFolio</a>
            </h1>
        </div>
        <div class="grid_8">
            <a href="#" title="Home" class="home active">Home</a>
            <a href="#" title="About Us" class="about">About Us</a>
            <a href="#" title="Services" class="services">Services</a>
            <a href="#" title="Blog" class="blog">Blog</a>
            <a href="#" title="Contact" class="contact">Contact</a>
        </div>
    </div>

Notice that we added two divisions with a “grid_4″ and “grid_8″ classes, inside the “grid_4″ division I added the logo content and an <h1> with a link inside it. Next I added links for the menu items each with a unique class name which will help us in styling each menu item inside the “grid_8″ division. Now lets add the CSS for the header content.


.header {
    height: 101px;
    overflow: hidden;
}

    .header .grid_4 h1 a {
        text-indent: -10000px;
        display: block;
        width: 234px;
        height: 45px;
        background: url(../images/logo_menu_bg.png) no-repeat;
        background-position: 0 -38px;
        margin: 36px 0 0 0;
    }

    .header .grid_8 a {
        text-indent: -10000px;
        display: block;
        height: 36px;
        background: url(../images/logo_menu_bg.png) no-repeat;
        margin: 33px 30px 0 0;
        float: left;
    }

        .header .grid_8 a.home {
            background-position: -264px -11px;
            width: 35px;
            margin-left: 250px;
        }

            .header .grid_8 a.home:hover, .header .grid_8 a.home.active {
                background-position: -264px -56px;
            }

        .header .grid_8 a.about {
            background-position: -329px -11px;
            width: 63px;
        }

            .header .grid_8 a.about:hover, .header .grid_8 a.about.active {
                background-position: -329px -56px;
            }

        .header .grid_8 a.services {
            background-position: -422px -11px;
            width: 61px;
        }

            .header .grid_8 a.services:hover, .header .grid_8 a.services.active {
                background-position: -422px -56px;
            }

        .header .grid_8 a.blog {
            background-position: -513px -11px;
            width: 33px;
        }

            .header .grid_8 a.blog:hover, .header .grid_8 a.blog.active {
                background-position: -513px -56px;
            }

        .header .grid_8 a.contact {
            background-position: -572px -11px;
            width: 57px;
            margin-right: 0px;
        }

            .header .grid_8 a.contact:hover, .header .grid_8 a.contact.active {
                background-position: -572px -56px;
            }

Now in styling our header content we are going to use a single image that will contain both the logo image and menu items normal state, hover and active state images. We are using a CSS technique called CSS Sprites which allows us to choose what to show from this single image using CSS background position properties, and that’s why we added a unique class name for each menu item. The image used in the CSS Sprites is “logo_menu_bg.jpg”, now I start by styling the logo link by setting text indentation to -10000px which allows the text to be available in the HTML but it is hidden when viewed in browsers and this has some SEO benefits, a fixed height and width to match the size of the logo image, a top margin of 35px for a space above the logo, a background image with no repeat and then we set the background image position to 0px horizontally and -38px vertically.

Now we move to style the menu items by setting common styles for all menu item links with a text indentation of -10000px to hide the text, a fixed height,  a top margin to make a space above menu items, a right margin to make the space between menu items, a float to left and finally use the same background image for all menu items with no repeat. After we set the common styles for menu items we take each unique class name and style the normal, hover and active states of the link with background position, fixed width. Finally, you should only notice that the first menu item “.home” with a left margin of 250px to make the distance between the logo and the menu items. The result should be as the image below.



Step 5 – Adding Slide Show Content, Style and Javascript
Now, we are going to use an already implemented solution for the slide show script, the script is jQuery Scrollable. I modified it to match what we need here as for style and layout, unfortunately I can’t walk you through every bit of the process for modifying the script and the styles because I would need a full tutorial for this part alone. I am going to tell you what to include in order to make this work. First, here’s the HTML for the slide show content.



<div class="<span class=">slideshow"></div>
        <!-- root element for everything -->
        <div id="scroll">
            <!-- <span class="hiddenSpellError" pre="">scrollable</span> items -->

<div style="left: <span class=;">-1920px;" id="tools"></div>
                <div class="tool">
                    <div class="details">
                        <h2>
                            Usce ac nunc eros, ac suscipit mi.
                        <p>
                            Vivamus malesuada convallis fringilla. Sed quam ligula, mattis aliquet vehicula
                            nec, dapibus eu lectus. Nunc mattis egestas arcu, vel ullamcorper enim cursus et.
                            Cum sociis natoque penatibus
                    </div>
                    <img src="images/slideshow_image.png" alt="" />
                </div>
                <div class="tool">
                    <div class="details">
                        <h2>
                            Usce ac nunc eros, ac suscipit mi.
                        <p>
                            Vivamus malesuada convallis fringilla. Sed quam ligula, mattis aliquet vehicula
                            nec, dapibus eu lectus. Nunc mattis egestas arcu, vel ullamcorper enim cursus et.
                            Cum sociis natoque penatibus
                    </div>
                    <img src="images/slideshow_image.png" alt="" />
                </div>
                <div class="tool">
                    <div class="details">
                        <h2>
                            Usce ac nunc eros, ac suscipit mi.
                        <p>
                            Vivamus malesuada convallis fringilla. Sed quam ligula, mattis aliquet vehicula
                            nec, dapibus eu lectus. Nunc mattis egestas arcu, vel ullamcorper enim cursus et.
                            Cum sociis natoque penatibus
                    </div>
                    <img src="images/slideshow_image.png" alt="" />
                </div>
                <div class="tool">
                    <div class="details">
                        <h2>
                            Usce ac nunc eros, ac suscipit mi.
                        <p>
                            Vivamus malesuada convallis fringilla. Sed quam ligula, mattis aliquet vehicula
                            nec, dapibus eu lectus. Nunc mattis egestas arcu, vel ullamcorper enim cursus et.
                            Cum sociis natoque penatibus
                    </div>
                    <img src="images/slideshow_image.png" alt="" />
                </div>
                <div class="tool">
                    <div class="details">
                        <h2>
                            Usce ac nunc eros, ac suscipit mi.
                        <p>
                            Vivamus malesuada convallis fringilla. Sed quam ligula, mattis aliquet vehicula
                            nec, dapibus eu lectus. Nunc mattis egestas arcu, vel ullamcorper enim cursus et.
                            Cum sociis natoque penatibus
                    </div>
                    <img src="images/slideshow_image.png" alt="" />
                </div>
            </div>
            <!-- required for IE6/IE7 -->
            <br clear="all" />
            <!-- thumbnails -->
            <div id="thumbs" class="t">
                <a id="<span class=">t0" class="active">Nunc vulputate</a>
                    <br />
                    tristique nisl quis conse
                <!-- <span class="hiddenSpellError" pre="">scrollable</span> navigator root element -->
                <div class="navi">
                    <a style="display: none;"></a><a id="<span class=">t1">Class aptent</a>
                        <br />
                        Vestibulum tempus orc <a id="<span class=">t2">Lorem ipsum</a>
                            <br />
                            Curabitur pretium vehicula <a id="t3">Cum sociis nat</a>
                                <br />
                                Aenean nec libero <a id="t4">Maecenas pulvinar dignissim</a>
                                    <br />
                                    Vestibulum posuere varius magna
                </div>
            </div>
            <div class="navigation_buttons">
                <a class="prev">Previous</a> <a class="next">Next</a>
            </div>
        </div>
        <div class="message container_12">
            <div class="grid_12">
                <div>
                    Hi we are Dezign Folio, orbi pulvinar, velit vel pulvinar vehicula, nisl purus iaculis orci, condimentum pharetra ligula libero ac sem.
                </div>
            </div>
            <div class="clear"></div>
        </div>
    </div>

You’ll notice a division with an ID parameter “scroll” this will hold all sliding content, inside it is three main divisions a division with ID parameter “tools”, a division with ID parameter “thumbs” and a third division with a class name “navigation_buttons”. The first division holds the slides as divisions with class name “tool” each with the content you want inside it, the thumbs division holds the thumbnails or tabs for the slides and it should equal the number of slides and the last division holds the content for the next and previous buttons or links.

After the slide show slides, I added an extra division which will hold the site welcome message with a class name “message container_12″ with a single division inside it that has the message text. Now let’s add the CSS style for the slide show content and script.


.slideshow {
    padding: 30px 0 0 0;
    height: 475px;
    overflow: hidden;
    background: url(../images/message_bg.png) no-repeat;
    background-position: center 348px;
}

    .slideshow .message {
        color: #fff;
        font-size: 18px;
        line-height: 24px;
        text-align: center;
        text-shadow: 0px -1px 0 #000;
        margin-top: 30px;
    }

        .slideshow .message .grid_12 div {
            padding: 0 78px 0 78px;
        }

            .slideshow .message .grid_12 div span {
                color: #f3ff00;
            }

/*------ SlideShow Script Styles ------*/
#scroll {
    position: relative;
height: 316px;
overflow: hidden;
border: 0px none;
    width: 960px;
padding: 0;
    margin: 0 auto;
    background: url(../images/slideshow_bg.jpg) repeat-x top center;
}

#tools {
width: 9999em;
position: absolute;
height: 258px;
}

.tool {
float: left;
width: 960px;
height: 258px;
text-align: left;
    overflow: hidden;
}

    .tool img {
        float: right;
    }

.details {
float: left;
    color: #252525;
    width: 350px;
    margin: 33px 0 0 70px
}

    .details h2 {
        font-family: Verdana;
        font-size: 24px;
        line-height: 28px;
        font-weight: normal;
        margin: 0 0 40px 0;
    }

    .details p {
        font-family: Verdana;
        font-size: 12px;
        line-height: 18px;
        font-weight: normal;
    }

#thumbs {
height: 60px;
position: absolute;
top: 258px;
width: 960px;
left: 0px;
    overflow: hidden;
    background: url(../images/thumbs_bg.jpg) repeat-x top center;
}

.navi {
    width: 960px;
    height: 58px;
}

.t {
padding: 0 !important;
}

    .t a {
    display: block;
    float: left;
    height: 34px;
    cursor: pointer;
        border-left: 1px solid #b9b9b9;
        border-right: 1px solid #fff;
        border-top: 1px solid #b9b9b9;
        border-bottom: 1px solid #b9b9b9;
        font-family: Arial;
        font-size: 18px;
        line-height: 20px;
        padding: 8px 15px 14px 10px;
        color: #252525;
    }

        .t a span {
            font-size: 12px;
            line-height: 14px;
        }

    .t a.active {
    cursor: default !important;
        background: url(../images/thumbs_bg_h.jpg) repeat-x top center;
        color: #fff;
        border-left: 1px solid #2d2d2d;
        border-right: 1px solid #2d2d2d;
        border-top: 1px solid #2d2d2d;
        border-bottom: 1px solid #2d2d2d;
    }

    t. a:hover {
        background: url(../images/thumbs_bg_h.jpg) repeat-x top center;
        color: #fff;
        border-left: 1px solid #2d2d2d;
        border-right: 1px solid #2d2d2d;
        border-top: 1px solid #2d2d2d;
        border-bottom: 1px solid #2d2d2d;
    }

#t0 { width: 145px; }

#t1{ width: 145px; }

#t2{ width: 145px; }

#t3{ width: 145px; }

#t4{ width: 245px; }

.navigation_buttons {
    width: 960px;
    height: 75px;
    position: absolute;
    top: 102px;
}

    .navigation_buttons .prev {
        float: left;
        background: url(../images/prev.png) no-repeat center center;
        height: 75px;
        width: 36px;
        border: 0px none;
        text-indent: -10000px;
        cursor: pointer;
    }

    .navigation_buttons .next {
        float: right;
        background: url(../images/next.png) no-repeat center center;
        height: 75px;
        width: 36px;
        border: 0px none;
        text-indent: -10000px;
        cursor: pointer;
        margin: 0 -1px 0 0;
    }
/*------ End of SlideShow Script Styles ------*/

The CSS styles included in the comments is the original styles from the slider script, I did however modify it a bit by changing some values such as width, height, padding, margin and background images to make it match our layout design. The message division style has a white text color, 18px font size, 24px line height, center aligned text, a text shadow and a top margin. The inner division has a left and right padding values with the <span> element having a yellow text color.

Now let’s add the required jQuery script in the header. You can find the script file in this tutorial source file or from the jQuery Scrollable script page. The HTML head section should be like this.


<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>DezignFolio</title>
    <link type="text/css" href="styles/reset.css" rel="stylesheet" media="all" />
    <link type="text/css" href="styles/text.css" rel="stylesheet" media="all" />
    <link type="text/css" href="styles/960.css" rel="stylesheet" media="all" />
    <link type="text/css" href="styles/tut_style.css" rel="stylesheet" media="all" />
    <script type="text/<span class="><!--mce:0--></script>
</head>

Finally, we need to add the Javascript code that will allow the slide show to work on our layout. You should add this script just before the closing tag of the body. Here’s the Javascript.


    <script type="text/javascript">
        // initialize scrollable and return the programming API
        var api = $("#scroll").scrollable({
            items: '#tools'

            // use the navigator plugin
        }).navigator().data("scrollable");

        // this callback does the special handling of our "intro page"
        api.onBeforeSeek(function (e, i) {

            // when on the first item: hide the intro
            if (i) {
                $("#intro").fadeOut("slow");

                // dirty hack for IE7-. cannot explain
                if ($.browser.msie && $.browser.version < 8) {
                    $("#intro").hide();
                }

                // otherwise show the intro
            } else {
                $("#intro").fadeIn(1000);
            }

            // toggle activity for the intro thumbnail
            $("#t0").toggleClass("active", i == 0);
        });

        // a dedicated click event for the intro thumbnail
        $("#t0").click(function () {

            // seek to the beginning (the hidden first item)
            $("#scroll").scrollable().begin();

        });

    </script>

Now our layout should look like this.



Step 6 – Adding Services Content
Now let’s add the Services section content. Here’s the HTML content.


    <div class="services container_12">
        <div class="grid_4">
            <h2>
                <img src="images/service_icon_1.png" alt="" />
                <strong>Vivamus</strong> venenatis?
                <br />
                Cras sed ipsum quis nisi pellentesque
            </h2>
            <p>
                Nulla facilisi. Vestibulum metus massa, egestas et porttitor et, venenatis sed felis. Donec elit dolor, placerat eget interdum ac, euismod sit amet tellus. Morbi sit amet hendre- rit ante.
            </p>
        </div>
        <div class="grid_4">
            <h2>
                <img src="images/service_icon_2.png" alt="" />
                <strong>Phasellus</strong> consectetur?
                <br />
                <span>Maecenas pretium diam venenatis</span>
            </h2>
            <p>
                Sed consequat, nisi nec tincidunt feugiat, turpis diam dapibus magna, eget pulvinar lorem nulla nec magna. ed fermentum massa quis nisl condimentum.
            </p>
        </div>
        <div class="grid_4">
            <h2>
                <img src="images/service_icon_3.png" alt="" />
                <strong>Lorem</strong> ipsum dolor?
                <br />
                <span>Sed fermentum massa quis commodo</span>
            </h2>
            <p>
                Vestibulum commodo aliquam condimen- tum. In a libero luctus purus ornare laoreet. Etiam libero nulla, sodales quis tempus posuere, dictum in eros. Nulla facilisi. Vivamus lacinia lacinia lacinia. Nullam vel blandit odio.
            </p>
        </div>
        <div class="clear"></div>
    </div>

Notice that we have three equal sections which means that we need to use three “grid_4″ divisions. Each division has an <h2> tag that includes an image, a title text and text included in a <span> tag and a paragraph as service description. Finally, there’s a division with “clear” class attribute to clear all floated elements. Now let’s add the CSS style for services section.


    .services h2 {
        font-family: Myriad Pro;
        font-size: 23px;
        font-weight: normal;
        line-height: 30px;
        color: #0b070b;
        margin: 0 0 30px 0;
    }

    .services h2 img {
        float: left;
        display: block;
        width: 50px;
        height: 50px;
        overflow: hidden;
        margin: 0 12px 0 0;
    }

    .services h2 span {
        font-size: 14px;
        line-height: 16px;
    }

    .services .grid_4 p {
        text-align: justify;
        text-indent: 38px;
        margin: 0 0 56px 0;
    }

We styled the header element by setting font family to Myriad Pro, font size to 23px, normal font weight, line height to 30px, font color to #0b070b and a bottom margin to 30px to make a space between the header and the paragraphs. Now we style the image inside the header or the service icon by setting float to left, a fixed height and width to match icon dimensions, overflow to hidden and a right margin of 12px for the space between image and text. Then I styled the <span> element inside the header tag to have a smaller font size and line height. Finally, I styled the paragraph and set text alignment to justify, text indent to 38px to make the first line indentation and a bottom margin of 56px to represent the space under the paragraphs. Now our layout should look like this.



Step 7 – Adding Information Content
Now let’s add the HTML content for the Information section.


    <div class="information">
        <div class="container_12">
            <div class="grid_4">

<h2>Donec posuere mi eget justo</h2>
                <p>
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id auctor mauris. Pellentesque at quam non massa lobortis sagittis. Donec nisl sapien, eleifend ut bibendum nec, tristique sit amet tortor.
                </p>
                <p>
                    Etiam a quam metus. Fusce luctus adipiscing mauris, id varius metus feugiat quis. Sed mi nisl, euismod eget facilisis id, pulvinar tincidunt lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vel faucibus ligula. Etiam
                </p>
            </div>
            <div class="grid_4">

<h2>Curabitur porttitor volutpat</h2>
                <p>
                    Morbi rutrum, risus et iaculis feugiat, urna est mollis nulla, ut ullamcorper lacus mauris et purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras mi tortor, consectetur at interdum vel, viverra eget orci. In at elementum eros.
                </p>
            </div>
            <div class="grid_4">

<h2>Maecenas luctus pharetra</h2>
                <div class="subscribe">
                    <input type="text" />
                    <input type="submit" />
                </div>
                <p>
                    Curabitur adipiscing, velit nec fermentum tempus, lorem sem aliquam ligula, id dignissim metus lectus a magna.
                </p>
            </div>
            <div class="clear"></div>
        </div>
    </div>

In the information section we are using three“grid_4″ divisions the same as we used in the services section. Now each division contains a <h2> and paragraphs with the exception of the third and last divisions which includes also division with a “subscribe” class name which includes two input tags with type “text” and “submit”. Now let’s add the CSS styles for Information section.


.information {
    width: 100%;
    height: 318px;
    display: block;
    overflow: hidden;
    background: url(../images/information_footer_bg.jpg) repeat-x top center;
}

    .information .container_12 {
        padding: 36px 0 30px 0;
    }

    .information .grid_4 h2 {
        font-family: Myriad Pro;
        font-size: 18px;
        font-weight: normal;
        line-height: 20px;
        color: #0b070b;
        margin: 0 0 30px 0;
    }

    .information .grid_4 p {
        text-align: justify;
        text-indent: 38px;
    }

    .information .grid_4 .subscribe {
        display: block;
        height: 37px;
        width: 299px;
        background: url(../images/subscribe.png) no-repeat top center;
        overflow: hidden;
        margin: 0 0 15px 0;
    }

        .information .grid_4 .subscribe input[type=text] {
            background: transparent;
            border: 0px none;
            line-height: 30px;
            height: 30px;
            width: 210px;
            margin: 5px 0 0 5px;
            float: left;
        }

        .information .grid_4 .subscribe input[type=submit] {
            background: transparent;
            border: 0px none;
            text-indent: -10000px;
            height: 31px;
            width: 60px;
            float: right;
            cursor: pointer;
            padding: 0px;
            margin: 0 11px 0 0;
        }

First we style “container_12″ to have a fixed top and bottom padding, then we style h2 with Myriad Pro as font family, 18px font size, normal font weight, 20px line height, text color of #0b070b and a bottom margin to make space between h2 and paragraphs under it. Now we style the paragraphs with a justified text alignment  and first line indentation of 38px.

Finally, we move to style the subscribe text field and button. The subscribe division has a fixed height and width, a background image with no repeat which has the image for the text field and the button, overflow set to hidden and a bottom margin of 15px. Now we style the text field by using this “.information .grid_4 .subscribe input[type=text]” and set background to transparent because all text field have a white background by default, no border, a line height equal to height so that text is aligned to center vertically, a fixed width, float to left and a top and left margin. Now we style the button by using “.information .grid_4 .subscribe input[type=submit]” and set background to transparent, no border,  and a text indentation of -10000px to hide button text, a fixed height and width, a float to the right, set cursor to pointer because submit buttons has a normal pointer by default, zero padding and a right margin of 11px.

If you followed this tutorial correctly then you should have a full  working          HTML/CSS layout from a PSD that looks exactly like  this.



Conclusion
So that’s it. In this tutorial you learned how to convert a layout  from PSD to          a fully working HTML/CSS website, don’t forget to validate  and check for browser          compatibility (the layout will not  validate because of Javascript & CSS3 styles, remove both to  validate properly). If there was a part of this tutorial you didn’t understand,  or you have a          better technique, please be  kind and say something in the comments below.
]]></description>
<dc:subject>Coding HTML_&amp;_CSS Tutorials 906_Grid html tutorial</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:d89cdb57351d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:HTML_&amp;_CSS"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Tutorials"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:906_Grid"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:html"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:tutorial"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.1stwebdesigner.com/design/tools-browser-compatibility-check/">
    <title>10 Useful Tools For Cross-Browser Compatibility Check</title>
    <dc:date>2011-02-17T10:00:57+00:00</dc:date>
    <link>http://www.1stwebdesigner.com/design/tools-browser-compatibility-check/</link>
    <dc:creator>alexhansford</dc:creator><description><![CDATA[Something that makes a website great  is when it is compatible in multiple browsers regardless of version. Technically this is referred to as cross-browser compatibility.

Wikipedia defines cross-browser as:

The ability for a website, web application, HTML construct or client-side script to support all the web browsers.

Now, you may be confused on what is the difference between cross-browser and multi-browser.

Multi-browser means a website will work in several web browsers like Safari, Chrome, Firefox, Internet Explorer. While cross-browser means a website works in any browser, and any version of the browser, being used.






Image by: lagiamd

This can be a struggle for developers throughout the creation of their websites. If a user cannot view your website properly, he will not blame the operating system or his browser…he will blame the website itself. The goal as developers is to avoid that. That’s why there are tools available for free, or purchase, to make your cross-browser checking easier.

In this article you will find ten useful tools that you can use for your cross-browser compatibility check.

1. BrowserShots
BrowserShots is a free cross-browser tool that captures screenshots of the website in different browsers. This is the best known and the oldest cross-browser tool used by developers.

The browsers it supports are:


Google Chrome
Dillo
ELinks
Epiphany
Mozilla Firefox
Galeon

and more…

The operating system it supports are:


Linux
Windows
Mac
BSD

 

 



I read some feedback on the site and there are two things that appear to need improvement. The interface could be better. Though you just have to tick the checkbox, it will still take a lot of time to check all the boxes for the browser and browser versions you want to view your website in. The other thing people don’t like  is that sometimes the tool is slow.

 

2. IE Tester
If you are a developer who is in need of a tool that just supports Internet Explorer, then this tool is for you.

IETester, a free web app that allows you to see the appearance of web pages by using Internet Explorer 5.5, 6, 7, 8 and 9. Its interface resembles the interface of MS Word 2007.



I tried using this software and I have found that it does not respond well and should be debugged. I think it might be because of the operating system I use, Windows 7. If you also encounter this problem, you can refer to this page.

3. DotMobi Virtual Developer Lab
Do you need a cross-browser tool dedicated to device testing? Then you should check out this tool.

DotMobi Virtual Developer Lab is a free web-based tool that lets you check your websites on real devices including iPhone with the use of remote access technology.



To use this service, you need to have a credit card. This is for the purpose of preventing abuse of the devices.

4. Adobe Browser Lab
Adobe Browser Lab is an online tool for cross-browser checking. It shows screenshots of the website when viewed in different web browsers. This simple tool lets you compare results by displaying screenshots of web pages in a simple way.



How does BrowserLab work?
When the BrowserLab testing page loads, you will be asked to enter the URL of your website. After that, it will automatically render the screenshot. If you are using Windows, the default browser it uses is Mozilla Firefox 3 – OSX. Its interface is great because it shows the percentage it has already loaded. You can instantly change the browser by choosing from the drop-down menu or from the list in the middle of the interface.

You can also choose how you’d like to view the webpage: 1-up View, 2-up View, Onion Skin. 1-up View is when you just want to render a screenshot in a single browser. 2-up View lets you get screenshots of two browsers, and Onion Skin gives a screenshot of overlapped images of two browsers. This way, you can see the differences between them.




Comparing this to other cross-browser tools, it lacks support for operating systems such as Linux and other web browsers. For a free tool, the interface and current features are useful for daily use.

5. CloudTesting
CloudTesting is a tool that enables web developers to view a website using any of  the web browsers listed below.

The browsers it supports are:


Internet Explorer 6, 7, 8
Mozilla Firefox 3, 3.5, 3.6
Apple Safari 3.2, 4.0, 5.0
Google Chrome Latest Version
Opera 9.6



Features:

For Web Developers and Testers

Find issues earlier. Test your current work in progress in multiple browsers at the same time, allowing you to find issues earlier in the development process.
Multi browser. Compare what the website looks like in multiple browsers side-by-side.
Comparison Tools. Compare how the same webpage displays in two browsers using an ‘Onion-skin’ overlay tool.
Automated. Tests can be scheduled to run at regular intervals, freeing you from the tedious task of manually running them and storing the results.
Repeatable. Tests are repeatable day after day to track changes made to the website.
Verify all areas. Verify areas of your site not available to standard cross browser testing tools, such as shopping carts and search results.
Full debug. Have access to historical component information and timings, including HTTP requests and response headers, just like you get in Firebug, but stored by CloudTesting.

For Website Managers

Compare in multiple real browsers. See how your e-commerce or transactional website will look in a variety of browsers at the same time.
SaaS. There is no need to deploy multiple servers or virtual machines for your cross browser testing.
No administration. Browser versions and Operating Systems are kept up-to-date by Cloud Testing.
Reduced development times. The ability for cross browser testing to be scheduled on a regular basis, drastically reduces web development life cycles.
Earlier fixes. A key time-saving feature is the ability to look back over time and see when a defect was introduced, meaning earlier fixes.
Pay for what you use. The PaYT (Pay as You Test) model gives you the ability to cope with peak demand whilst not paying for it during quiet times.
Peace of mind. Give yourself peace of mind by running a sanity check in multiple browsers before launching a new website.

For pricing, check this link.

6. Browser Photo
Browser Photo gives you actual photos of how your web pages will look in different web browsers and platforms.

Service Details:


Browser Photo helps avoid display differences by showing you actual photos – not emulations – of your pages taken on 12 different browser and computer configuration combinations!
It’s Affordable! Building a test laboratory to get the same information that Browser Photo provides would cost at least $4,500.
Catch Errors Made By Your HTML Editor. Often FrontPage HTML works with Internet Explorer, but not other browsers. Browser Photo spots these problems.
Web Designers, show your stuff. Print-friendly reports show clients or bosses what you’ve done! Check out the Web Designer packages.
Browser Photo is an automated, easy-to-use tool that requires no downloads or installation and is continually updated.
Online Access Anywhere, Anytime. Through an internet connection, you can test your Web pages 24 hours a day from anywhere around the world.

 

7. Browsera
Browsera is a tool that tests the cross-browser layout of your website. You will see the differences and errors on your site.

Features:

Discover Cross-Browser Layout Problems Automatically
This feature of Browsera gives you a notification of possible problems the tool finds while testing your website. Instead of checking each screenshot, you will get a report that gives details on which pages of your site have possible problems.





Locate JavaScript Errors
Browsera is also capable of helping you find problems caused by scripts on your site. We know that scripting errors are a big viewer turn-off and that’s what this feature wants to resolve. Every time a page is rendered, this tool checks if the browser encountered any errors. After checking, it will give you a report showing the results.





Easily Test Entire Sites
This tool tests your website. Not just a page at a time, but your entire website. This means it takes less time to test and find errors, and since it tests the entire site you don’t have to worry about missing a page during the testing process.





Test Pages Requiring a Login
Browsera lets you log in first before testing your site. Very secure, right? It supports both HTTP basic authentication and application based logins, as well.



 

No Installation Required
Yes, no installation required. Everything that Browsera needs to run comes from their server cluster. All you need to have is a web browser and an internet connection. Ideal for developers that work remotely.



 

Test Dynamic Pages
Browsera can work with dynamic pages so if you use technologies such as  AJAX and DHTML, this will not be an issue. Browsera will wait until pages are loaded prior to the testing process.



8. CrossBrowserTesting
CrossBrowserTesting is a tool that tests your website with a browser and remote VNC. With these tools, you can test your AJAX, JavaScript and Flash with any browser. You just have to provide the URL, select a browser then run the software.

To view their demo, click here.

The browsers it supports are:


Android Browser
Chrome Google 5 to 8
Dillo 0.8.6-i18n
Firefox 1.0 to 4 Beta
Internet Explorer 5.0 to 9 Beta
Mobile Safari
Mozilla 1.7
Opera

and more…

The operating system it supports are:


Android
iPad
iPhone 3GS
iPhone 4
Mac OSX 10.5.7
Mac OSX 10.5.8
Mac OSX 10.6
Ubuntu 8.10
Windows 7
Windows 98 SE
Windows XP SP2
Windows XP SP3
Windows Vista



This tool offers three plans to choose from and a free trial.

9. BrowserCam
An online paid service that allows developers to view web pages on different browsers and operating systems. It also supports mobile operating systems and browsers. This tool takes screenshots of your pages depending on your choice of browser and operating system.



Browsercam Browser Capture

The browsers it supports are:


Internet Explorer
Mozilla Firefox
Apple Safari
Google Chrome
Opera
Chrome NXS 2.3
Explorer 5.0 (RQVGA)
Opera 9.7b

and more…

The operating systems it supports are:


Mac OSX 10.3–10.5
Windows 98
Windows 2000 Professional
Windows XP
Windows Vista
Fedora Core 6
BlackBerry O 5
BlackBerry OS 6
Apple iOS
Google Android
Windows Mobile 5.0 (RQVGA)
Windows Mobile 6.0
Windows Mobile 6.5



BrowserCam Device Capture

With the device screen capture service, you can see how your site will look on PDA’s and other devices. You can capture the screen in portrait or landscape mode.



BrowserCam Remote Access

The remote access service lets you log into BrowserCam with the use of VNC. For example: you are using Windows XP and you need to access a Mac platform, you can use this Remote Access service to test it on a Mac right on your Windows PC.



When you visit the BrowserCam site, you will see a variety of plans offered. Though it’s expensive, it is worth the money.

10. Microsoft Expression Web SuperView
Microsoft SuperView is a new technology created to make the life of developers easier.



The standalone version of this software supports only IE web browsers, while the full version can support Mozilla Firefox and Apple Safari browsers.

Based on the feedback I have read, users are satisfied with its features. It gives them comfort in regards to its response time and it is user-friendly. Note that you cannot use this without having the Expression Web.

Share Your Thoughts!
These are some of the best tools you can use for cross-browser checking. I hope that you find some of these tools useful when designing and developing your next website.

Do you already use some of these tools? Please share your experience with any cross browser testing tools with us in the comment section.

]]></description>
<dc:subject>Tools Usability Web_Design compatibility Cross_Browser</dc:subject>
<dc:identifier>https://pinboard.in/u:alexhansford/b:2053ea8fa958/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Usability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Web_Design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:compatibility"/>
	<rdf:li rdf:resource="https://pinboard.in/u:alexhansford/t:Cross_Browser"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>