Yet Another Pointless Tagline
Permanently Uncached header image 1

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

Review of the Online Service PamFax

May 31st, 2010 · Opinion

Every once in a while we are reminded of the early 1990′s.  I mean to say we are reminded that there are some luddites out there who still require the use of a fax machine.  Why a simple scan of a document and eventual email isn’t enough I don’t know, but anyhow, such a need arose recently and I had a scout around at the available options.

Online Fax Services

Of course the old school fax service, primed and ready to rip you off is still knocking about in this day and age in the form of eFax.  But I hardly wanted to be roped into a month-to-month commitment at some ridiculous fee that didn’t even see me get an unlimited number of faxes.  What are they doing over there in the eFax warehouse? Employing monkeys?  This is the digital age!

Anyhow, in my search for a more viable, cheaper and more sustainable option, I came across PamFax.  PamFax is an online service akin to eFax, bar for the fact it allows for on-demand faxing.  It styles itself on the Skype model, and I would even go as far as to say that the website itself draws on the “Skype” sensibilities of design.  PamFax itself is an offshoot of a German software company but they provide a global service, and although I haven’t used the service in other languages, have the impression it is multi-lingual with German, English and Japanese at the very least.

Using The PamFax Service

Getting signed up for an account is pretty much a no-brainer and can even be achieved with any number of social network logins, from Facebook to Twitter and onto OpenID.  With that  bought the basic credit for the countries in Zone 1 (which included the country I wished to send the fax to, and then downloaded the software whilst I waited for the PayPal transaction to go through and hit my newly created PamFax account.

The software itself, and I speak from the perspective of using the OSX desktop application version of PamFax, is nice.  It runs as a simple to use wizard that guides you through the process of building your fax, from the recipient details, to uploading the PDF files, to selecting the format and information for a cover page, before finalising with a confirmation screen.  One thing I definitely liked about the software was that the design tied in seamlessly with that of the website.

Houston We Have A Problem

Literally from end-to-end, if I had been going at full steam, I could have registered, bought credit, installed the software, generated my fax, and click “send” and been done in 5 minutes or less.  The speed of getting up and running is second to none I would think, though having clicked send I am still waiting some 40 minutes later for the little bugger to clear my outbox, which pretty much negates any of the benefit of getting up and running so swiftly.

Funnily enough I decided to highlight the process every step of the way via my Twitter account, including the @pamfax username every time I did so, thus we shall see what happens, though I have the feeling they use the account for nothing more than the ceremonial bleet about new service offerings, software upgrades and bug fixes.  In the mean time I have followed up my outbox woes with a support ticket, so we shall see how long that takes to get answered.

After another 40 minutes, so some 80 minutes of waiting in total, a confirmation email was received and the notification record showed up in the dashboard that the fax has been successfully transmitted to the intended recipient.  There is no update on the support ticket so I can only presume that the file and the faxing thereof followed its natural path, though I am yet to check with the recipient that all was received and all is well with said document.

Overall – A Good Service

In spite of these woes I still like the service.  PamFax is readily available and easy to use for anyone who cares to do so.  They have obviously spent a lot of time and effort in developing their strategy and making the fax service as easy to use.  Their main website is informative and guides you through finding out everything you need to know before signing up and the account back-end and dashboard that they provide once you do sign up is simple and effective, covering all bases from faxes, to payments to user management for companies.

I am yet to use the Pamela Fax Plug-in for Skype, but based on this initial experience of the service through the website and via the desktop plug-in I have no doubt that the application is just as useful and effective. Definitely worth looking at if you want to add fax functionality to Skype or provide a simple single communications interface to your computer or VOIP and faxing.  Other useful services provided by PamFax include a facebook application for accessing yoru information directly in the social networking site, a salesforce plug-in and a Windows desktop gadget.  Their desktop software is also available for Windows, Mac OSX and Linux and is, as you saw, super simple to set up.

→ 17 Comments