Yet Another Pointless Tagline
Permanently Uncached header image 1

Tips from the Obama for America New Media Campaign

June 12th, 2010 · Development, Product

Scott Thomas, Design Director for New Media and overseer of the ‘Obama for America’ election campaign web site, took time out to go over what made the campaign a success from his perspective.  What techniques, means, methods and more they used to achieve their ultimate goals.  The video available over at The 99 Percent is worth every minute of watch time.

For those less interested in watching and more interested in a summary of the 14 minute talk, Scott Thomas highlights some interesting core notions, ideas and areas, but to preface what he says and to quote the 99% website:

Scott Thomas is constantly seeking the simplest answer to complex problems.

With that said, here are the salient points of note from the lecture given by Scott Thomas:

Design Consistency

From the outset the team realised that they would need consistency of design throughout, from the digital, right through to the traditional.  Consistency was essential not just for brand awareness, but also in terms of being ‘on message’ and in providing strength to the campaign.

He doesn’t say as much but there is clear value in consistency, on many different levels, and to this end they derived processes that would help drive this need forward, defining consistency of output in terms of colour, elements, message using:

  • Mission statements … helped define everything that was being done.  They focused on an ethos of making sure every aspect of design was “clear” and “concise” and that all design should engender “hope” and “experience”.  Slogans that encapsulated these ideas were created and posted everywhere, forcing the team to think about them at all times.
  • Brand Groups .. were used to help define exactly how these mission statements were to be executed.  Consider them as mini corporate design guides, that make it easy to consistently deliver output int he same clear and structured fashion sot hat it hits the target.

Effective Triage

The reality is that when you are in a fast moving environment, and you need everything done “now” the design process will reach a bottleneck at some point.  It is therefore important to have effective triage; to be able to sort tasks on a basis of need and to be able to defer responsibility or things more readily.  Not necessarily by giving up your core design values, but but opening up access to assets for others, providing transparency and for the ability of other stakeholders to feel like they are more involved in the process.

Effective apportioning of tasks and responsibilities, as well as letting go with clearly defined rules and guides, as outlined in point one, makes it a lot easier to accomplish much higher level and more important tasks.  If you focus on the minutae, it is super simple to lose control of the bigger picture and of the more important things.

Use IT to Better Ideas

Simplicity is key to success, and information technology should be used to improve upon ideas for the sake of that simplicity.  Lots of processes are over-complicated and can be reduced down, thus enhancing their efficacy and conversation rates.  When you want to involve people, you need to lower the barriers to entry.  Open you door, let people in easily, and ask pertinent questions later by deferring the need for them.  This is a definite key to their grassroots success, with individuals being able to start cold calling fellow politicos in no less than 3-4 clicks.

During the course of the campaign they used analytics and process flows to monitor what was happening, and constantly aimed to improve the situation by reducing roadblocks.  This was an on-going process and proves that there is little point in rolling out designs and code without observing and enhancing it as you go in order to avoid diminishing returns of scale.

Bring Output In-House

Back on the old cherry of ‘consistency’, the team weren’t afraid to bring any task in-house.  Ensuring quality of output wasn’t ever up for discussion and where they had to do things internally, from design digital content or even physical objects and signs for TV appearances, they would just do so.  When much larger things are at stake than merely budget, you need to keep your eye on the ball and make what would not necessarily be business-friendly decisions.  Ultimately you need to resource your teams and processes properly to maintain the aims of your campaign.  False economies only spiral out into bigger costs later, and that is not just in terms of monetary costs.

Collaborate Successfully

Success is about collaboration.  Knowing what you can and can’t achieve and working with people that inspire and motivate you.  When working closely with a set of people you need to have confidence and a desire to drive things forward.  As soon a this is lost you loose a necessary cohesion in the high-pressure environment.  Belief and passion are real drivers and tapping into those goes a long way.  It pays to draw this ideal through every strain of what you do and maintain it from the beginning to the end of any project.  It’s easy to let it wane, but with consideration can be avoided.  Who doesn’t love to work with empowered and passionate individuals, right?

Evolve Your Ideas

Evolution of ideas is important.  If you look at the ‘2 year lifecycle’ of the new media campaign there is a clear evolution of the designs and implementation.  Evolution isn’t a dirty word – even if creationists thinks so – and when the pressure is on to get work done, it allows you to design and implement, and then enhance, not just the once but again and again and again.

The evolutionary process breaks down barriers to getting work signed off and implemented, and allows you to work more readily on the fly, to hit the ground running and to keep your momentum.  It’s super easy to let road blocks of design and function get in the way of rolling out product, losing sight of the most important thing, which is to have something out there, working for you which provide implicit usage feedback and which can be worked on and improved over time.

It’s A Wrap!

So there you have it.  Some golden words, thoughts, and ideas from Scott Thomas.  All things that make so much sense, but which get lost in the maelstrom of any big project.  Oh … And a last little bit of advice? Write things down.

→ No Comments

Simplicity – What to Kill and What Not To Kill

June 9th, 2010 · Design

Mike Rundle of Flyosity brought up a bunch of interesting ideas and thoughts in his blog post Kill The Settings, Build Opinionated Software, but in short he is effectively saying:

“Do what you want, don’t listen to users, keep things simple, and focus on numbers, not on the niche user case.”

The problem with this edict is that it is ‘one size fits all’, and at no point considers the complexity of business processes or the reality that in the growing stages of your business can you afford not to listen to your ‘users’.

A 2-Way Approach

As is always the reality, there is more than one way of doing things.  Distilling your settings down to ‘You can only have A’ is way too rigid.  Nothing stops you, as a developer or designer, setting a default, and providing secondary access, effectively   optimising for the mainstream, whilst not killing overall access to ‘power options’.

To use the same example Rundle references, Apple, they do this in scenarios where they have ‘dumbed’ down a process or preferences.  The network control panel is a good example of this.  Most mainstream users would be completely ‘out to sea’ when handling network settings, so they use defaults and auto network selection to help ride over the complexity, but at the same time they provide an ‘advanced’ button to give ‘power users’ access to additional hidden panels.  Do they have to?  Not really, but they don’t do what Rundle suggests, and that is to ride rough shod over the needs of a power user.

Catering for Users

Above and beyond this, and contrary to Rundle’s post, not all users remain ‘idiots’ forever, more so if you teach or guide them properly.  Even mainstream users will move beyond the ignominy of ‘idiot’ status!  The increased length of time they spend using your product or service, the more they will demand of it and of you.  It is also these individuals that will help you achieve your long term goals, and I don’t mean just in terms of generating a possible revenue.  Such users will provide marketing opportunities, and they will likely also help you find niches that you didn’t even know where there and can eventually exploit.  Keeping them on your right side is good business sense.

And what of more niche user cases?  I suppose this is why the accessibility usecase is ignored almost all the time, because such users are not the target audience and make up such a small percentage of potential revenue.  Plenty of ‘non-commercial’ enterprises, for example cultural institutions, will go beyond simply doing what is best for themselves, and want to take care or legally need to take care of such niches, filling the void where private enterprise does not go more readily.

Don’t Kill Common-Sense – Effective Design

I am not advocating complexity by any stretch of the imagination, and understand that with the right design even the most complex processes can be simplified, but at some point you reach a level of over-simplification that just isn’t justified.  On the flip side of course, complexity is enhanced by poor design.  So UI design shoudl really be your first port of call, before simply axing options.

All in all, you need to do what makes the most sense:

  • Use simplicity to increase conversion and provide a more welcoming service to mainstream users, but don’t shut out niche users by not catering to them either.
  • Hide complexity with advanced buttons and with wizards taking even the most simplistic users through the most complex tasks.  Insist on quick insert screens that can be followed up with more complex edit screens.
  • Use good copy, don’t let developers type jargon into your designs.
  • Use the best defaults, and pre-determine options where possible based on locale etc., but don’t stop your users from changing these where necessary.
  • Most importantly, follow standards, and use the tricks learned by the big boys.

Life doesn’t need to be taxing, but at the same time, it doesn’t need to be over-simplified if all the constituent parts of development and design are doing their job properly.

→ No Comments

Mixed Bag of Links

June 8th, 2010 · Link Roundup

Every now and then I have a slew of webpages open that sit between that precarious point of closure and being bookmarked and likely never looked at again.  They remain open because I feel like there is something to say about them, and am likely to write a post or two, but as yet haven’t pulled myself into a mindset to do so.

Anyhow, to that end I have decided to collect todays current batch together and throw them into their own raggle taggle set of links in my favourite blog category ‘link roundup’:

To kick things off is Mike Rowehl on his This is Mobility blog with a post entitled Why Mobile Developer Programs Aren’t Working.  In it, as the title suggests he looks at a variety of reasons why individual mobile developer programs online are not very effective, from their function as a form of marketing to developer lifecycles.  There are many fair points and worthwhile eleemnts to learn in developing your own ideas for such a program.

Moving on, we have the ever popular Sazbean, making points about Pricing Based on Customer Expectations.  This post talks about ideas for coming up with reasonable pricing for your products or services and who to divine that tricky path to sales nirvana.  Choosing your price point is never easy and sometimes, as is ever clear in the world of art, you just have to make it up as you go along, but for those with a need for more tried and tested methods, Sarah Worsham comes up with some great points.

On the topic of price and money we have a great post by Michael Grey on When to Pay Top Dollar for Copy in which the talks about the value of good copy.  I can only really scratch at the surface of Michael’s post but he really takes a long and hard look of what is up with the web, the real costs of content and how to produce value from content.

From a slightly different angle, but still on the same topic of price, money and value of things.  The Tech Crunch article on startup funding, and the spectre of VC capital as the shackle and chains to your fledgling company – Startups: Poverty is Underrated. Be Glad That You’re Not Rich.  In the course of the article, Vivek Wadhwa looks at the impositions of VC capital and how it affects start up companies.

Moving on from money and off into the world of development (nice little segway there!) I liked Contentini post entitled Web App Strategy – Why Market Research is Important and Doing It For Free.  The article, written by Dan Zambonini, looks at the renaissance of strategic thinking – seems a bid idiotic it ever went away! – and looks at ways in which you can best justify your development time for an untested website or service.  Using similar techniques for SEO, he helps you find ways to triage development ideas and time.

In a completely different direction, is an interview on The Daily Beast with all-round genius Charles Saatchi.  The post provides some interesting thoughts and ideas and definitely has some laugh out loud moments =)  Need I say more?

Last but not least, and not so much a blog post as a service, is CSS Kill Switch which “lets you non- destructively black out a difficult client’s website with the click of a button.”  The idea is a clever one, but really got me thinking about whether or not this is the best way to deal with errant clients.  it’s always tricky when you are delivering subjective services to a client and not a finite resource, but still.  I suppose it provides an option for anyone not willing to cut their losses and run.

So there you have it!

→ No Comments

How To Enhance Your Website Search

June 5th, 2010 · Development, Product

Today I came across an interesting blog post by Dan Zambonini entitled Museum Search: Recommendations.  In it he talks about his analysis of museum web site search data and what he learned from looking at it, both in terms of trends and in terms of determining web site form and function.

I liked the post because it reflects the fact that in using a web site, your visitors are providing you with potential data, which, if you choose to capture it, can be taken and molded into enhancements that improve the usability of a site and encouraged prolonged use or, even better,  repeat visits.

Dan makes some great points, all of which back up my own experience in working with search, and matching data whilst working at Last.fm.  You really should take the time to read his brief post, but in outline the highlights the following points:

  • Any search text entry field should readily accommodate the median length strength at least (and then some).
  • Soundex, Levenstein or other such probabilistic matching techniques should be used to help smooth over typical typos, errors and misspellings. Even a library of miss-typed words could be used to speed up searches.
  • Advanced search functionality needn’t be brought to the fore.  Open up such functionality, only as required, and certainly only in the background, as an option, given that few site visitors will use it.
  • Pre-load popular search terms to help speed up the search process for a sizable number of your site visitors.
  • Use client-side validation techniques to help streamline the search strings before submitting them to the database, taking up valuable database resource by prolonging queries.  Definitely a consideration on popular sites.

All valid points and ones which I would whole-heartedly agree with.  They underline the need to ensure for an optimal experience.  To my mind in developing search you need provide for the following:

  • Speed – Any techniques that help decrease time spent search, from web service calls to pre-loaded and popular searches improves the experience.  The long tail is great, but the reality is that 9 times out of 10 people will be searching for the same, or similar things.
  • Accuracy – Smooth over the cracks.  That is to say, use whatever means to help match typos etc. whilst at the same time, use best matches, direct hits and other means to send searchers to the desired page rather than a results page, with a possible link back to the results if the chosen result is not the one they wanted.
  • Usability – Whatever you do, provide use logic in the process, and make it easy to understand for users as well as easily readable.  Auto-fill should be split into sections as necessary, such as collection, exhibitions, etc. much like on a results page.  Simplicity is required, because people will likely make a beeline straight for the search box once they hit your site.

Even with a strong navigation, which every site should have, site visitors will use search, and you should treat it as part of the navigation of your web site.  Search isn’t just for people who are lost, it’s the clever site user’s means by which to get from A-to-B in a single click or so.

Anyhow, thanks to Dan for sharing a nice summary and info-graphic of his research of the search data.

→ 1 Comment

JS Unit Testing with jQuery and Qunit

June 1st, 2010 · Development

For those that like to do test-driven development, even in javascript, then you might be more than interested to learn about Qunit. Qunit is a test suite developed by the team at jQuery for their own use and which they have of course made available for others to use. And the great thing about it? All you need to get started is a JS and CSS file + a bit of HTML, of course!

Pre-existing JS Unit Tests

To get things kicked off the jQuery team provides access to a slew of their pre-existing tests, which can be downloaded and included as part of the range of your own tests, from AJAX, to dimensions, to events, to selector tests. You can find these tests are under the Reference Test Suites on the Qunit docs page of the jQuery website. They provide good fodder and resource for developing your own tests and ideas for them as well and are definitely worth a review for anyone just starting out in JS development and wanting to learn more about unit testing.

How to Set-up the Unit Tests

So what do you need to get started with jQuery Unit Testing? To begin with download both of the following files, Qunit.js, & Qunit.css, and include them in the head of your HTML document along with the latest version of jQuery. Then add the following HTML to the body of your document so that Qunit can render the test results properly:

     <h1 id="qunit-header">QUnit example</h1>
     <h2 id="qunit-banner"></h2>
     <h2 id="qunit-userAgent"></h2>
     <ol id="qunit-tests"></ol>

As you can see, getting set up with a basic testing environment is easy and pretty simple. With this set-up you can then include your own Qunit tests either in a SCRIPT tag or in your own JavaScript external include.

Writing Your Own Unit Tests

So now you’re ready to start writing your own tests, lets keep it clean and simple. The unit testing API is split into 3 sections:

  1. Setup – The basics for defining tests, grouping them and getting them started.
  2. Assertions – The Yay and the Nay of whether conditions have the met with boolean tests, comparison tests and recoursive comparison assertions for arrays, objects, etc.
  3. Asynchronous Testing – Functions to stop and start the test runner.

Putting this together – not that we have looked in depth thus far – a very basic unit test would look as follows:

     module("Initial Test Module");

     test("Test with multiple assertions", function() {
       expect(2);
       equals( true, false, "failing test" );
       equals( true, true, "passing test" );
     });

Deconstructing the above test. “Module” provides a means by which to delineate individuals sets of unit tests. The “test” function with title and callback function params includes 2 further functions: “expect” and “equals”. The former sets the expectation for the number of assertions that have been defined and follow, whilst the latter obviously does the grunt work and returns the results. In defining an assertion you need to provide 3 things:

  1. The expected result.
  2. The result.
  3. An error message.

As you can see writing even the most basic tests is super simple and pretty much a no-brainer. Adding complexity to the mix, with more test modules, multiple test and assertions interlinked and daisy chained together makes for a powerful brew.

Wrapping Things Up

To my mind there is little point in re-inventing the wheel, especially when so many good test examples exist, and which you can draw on for ideas in your own testing, but I thought it might be worth highlighting various points that can add flavour to your unit tests:

  • “Module” provides lifecycle hooks for running code on setup and teardown of each test and you can just as easily bind tests to functions and events via jQuery also. Good examples exist in the actual jQuery core tests for the AJAX calls (core.js, ajax.js, etcetera).
  • Daising chaining your assertions together makes for useful testing when wishing to assert that different types of scenarios, for example when making invalid requests to an AJAX web service with illegal characters, insufficient parameters, unauthorised params etc will fail properly, and thus pass your tests accordingly.  Definitely worth using when testing forms and data entry.
  • Manipulate the DOM and everything else has much as possible during the course of your tests.  Alter the underlying code and test for the results as you go.  You shouldn’t be afraid to try and break things and test against them. It’s very easy to get into the developer mindset where you know how they should work, and you are can make them work perfectly all the time.

So there you have it.  Hopefully more than ready to go out and unit test your way to heaven, or at least your dev team lead’s heart.  If he or she even has one.  We know what vamp-like figures rule that roost … hahaha!

→ No Comments