Ryan’s Rules for Website Navigation

It should be intuitive.’   ‘The user should not have to hunt for information.’ Focus on the user.’

Yes.   So, ‘yes’.    If everyone can agree on these things, why don’t we see it in practice?    As usual, the Devil is in the details.    Making a website (or any other kind of software) usable is harder than it seems.     While you’d think great designer can handle all usability problems, it takes more than just usability ‘chops’ to create a great website.    Even with testing, there are a variety of factors that can influence a website’s design – even when everyone has the user at heart.    So, here are a few tips I have to help a little.    For the sake, of brevity I am going to focus in on navigation.

Fewer Labels is Always Better

It works like this:   if you see a relevant path on a website, you will click on it.    If you do not, you will take your next best guess.    Every label does not have to be as explicit as you think it does.   Remember always the Pareto Principle / The 80-20 rule.    Of all the content that gets submitted to a library website, only 20% is vital to the user.    That 20% needs clear, concise & obvious navigation.

Do not let the other 80% get in the way of the vital 20%.    If someone has to make a guess, a navigation system of 4-5 elements is much, much better than a navigation of 25+ items (number taken from a website I am currently responsible for – ‘do as I say …’ ).   You can cheat a little by having different levels of navigation (eg. About, Contact, Jobs etc. in small at the top or bottom), but most website navigations I see out there go way beyond cheat.

Text, Text, Text

Over and over again, people think that promotion via images is important.    It is, if your user base is 10 years of age or younger.   Images get ignored by the user, and often by search engines as well.   A single word or two, explaining where the link will take you is fine.

In fact, I once took an image link off the front page of a website, gave it a logical name and put it in a less obvious place and the use *increased*.

End the Drop-Down Madness!

WordPress.com, I’m talking to you!     Updating my blog has become hell ever since you changed the navigation to include drop-downs.    I click on the wrong things all the time, then I struggle to get back where I was.    Fortunately, this is only for the back-end interface.    For a front-page interface, drop-downs are even more hellish.

Drop downs came into existence because someone came up with the stupid ‘3 clicks or I’m gone’ axiom.     Everyone came to the conclusion that we needed to design sites to reduce clicks, and drop-downs reduced clicks.    However, the real problem was usability.    Drop-downs reduced clicks, but did not increase usability.    It was a zero-value trade-off.    Don’t use them.

Do Not Believe Everything You Read On the Internet

There’s alot of baloney on the internet, believe it or not.    Some people will tell you that your navigation should use verbs; others nouns.   Some people will decry scrolling; others will insist that the blog is the way to go.   Following anyone’s tips is fine, but they should not be used at the expense of common sense.    For instance, avoiding scrolling for the user may be impossible if you consider that some of your users may still be using 800 by 600 screen resolution or less.

A Link Should Send You to the Place You Expect It

If I click on a link that says ‘find a book’ it should help me find a book.    It should not be a list of tutorials on how to find books.    Call it ‘tutorials’ instead (and then do some serious thinking about whether this is a 20% or an 80% thing).

Don’t Be Cute

If you want to provide a way for people to contact you, call it “Contact” or “Contact Us” not, “Get the Skinny” or something else more barbarous.

The Designer Must Decide

In a profession of information experts, everyone thinks they know how best to design a website.    The problem is that each department sees a different user, and wants to make that user happy.    Reference desk people see the person struggling to access a database.    Cataloguers see the user that can get into the system and download every book they need like it was no tomorrow.   Community workers see people struggling to learn a new language or afraid to walk into the library in the first place.    All are important users.   All have unique needs.

Unfortunately, while we want to make these users happy, trying to make everyone happy at the same time results in a website that puts everything but the kitchen sink on the front page — confusing everyone and pleasing no one.    Alternately, we focus on the users who have a negative experience in brief moment in time – so many factors can play into that complaint (the user’s mood at the time, his or her expectations about library service vs what libraries actually offer etc.).     Of course, we need to take user complaints seriously – but is web design really about solving everyone’s unique problem?   I argue no.    Web design is finding out about how human beings interact with computers / digital media and applying that knowledge to improve access.    A good website cannot solve anyone’s particular information need.    It can, however, make the act of discovery more enjoyable.

All this leads to my conclusion – let the designer decide.    He or she may make a mistake about a particular user’s need (and this will be evident through user testing etc.) but he or she will do a better job of improving access than a committee of people all trying to please their particular vision of the user.

Final Words

If you have been paying attention through the tips, you might have noticed a common thread – the problems website designs encounter are often not design problems at all – they are management, consensus-building and coordination problems.    There is always a delicate balance between alienating your stakeholders and having a process be so participatory that it kills the design.   I would argue that more good designs are killed than bad designs improved.     The killing happens over time as priorities change and band-aids are applied to address minor non-essential issues coming from a variety of different places.

What tips do you have to improve navigation of websites?

Part I: Is There a Such Thing as Real World Haskell?

Part II:   How not to Start Your Haskell Program >

Here’s a bit of sardonic code, that I’d like to propose to any Haskell advocate out there.

data Works = Works | Does_not
computerApp a ::  Maybe a -> Works
computerApp a
     | isJust a = Works
     | otherwise = Does_not

I have been playing around with functional programming in Haskell.    I have to say that it has more than certainly improved my ability to code in other languages, and probably has reduced the number of bugs I have to fix after the fact.    On the other hand, it has driven me absolutely batty.

To be fair, I need to say that I am not a computer engineer.    I have a BA in English.    My Masters are in Public Administration and Information Management.      I engaged in Haskell code simply as a curiosity and a challenge.    I love math, and became curious about Monads and Lambda calculus.    I am probably not smart enough to be a great Haskell programmer.   However, I do understand two things.    1)  Not-smart-enough people can and want to participate in application development   2)  Coders, while making apps that do what they expect them to do, do not always understand (or care) about the sustainability and/or scalability of their code.

Web Development is an important test case.      Just about anyone, with a reasonable amount of time and effort, can learn to develop a website in PHP, probably supported by some content management system as Drupal or ModX.    Somewhere, their development goes overboard, the system does an upgrade to support some security risk or vulnerability, and ‘pop’ –>  all that likely un-documented and messy code goes nowhere and wheels need to be reinvented.

That’s why learning Haskell is probably a good idea.    Without getting into the code itself, it insists that a function always causes the same result to happen with any given input(s).    Once developed, the documentation pretty much always exists in a minimal form (via Type declarations).    So many bad habits would disappear if only people were forced into developing this way.

The problem, unfortunately, is that Haskell coding is confusing.     There is no popular development framework to use it.     Once you try to apply the examples provided in text books to real world development, things go wonky.    I won’t go into the many reasons why, but I do have an observation based on what I’ve seen in responses from various gurus to newbies like me.

It’s this ->   Users think computers do things.    Computer engineers think computers solve problems.     In Haskell terms, any interaction between users and engineers results in a type error.    Somewhere along the line, an IO() monad needs to be created to turn what engineers like about Haskell into something that users will like about it.

I would like to propose a management framework, similar to extreme programming, to manage the development of functional code for regular people.   While Programming it in Haskell is not a bad start, it uses a problem solving model, rather than a ‘how do you make the software do x’ model.    It focuses on mathematical abstractions rather than simple actions.     For instance, I would like to see a book that uses the development of a rogue-like rpg game in Haskell as an example.    Instead of worrying about efficient computation, abstractions about ‘laziness’ and recursive factorial examples, the writer would have to focus on managing complex (a tuple of a lists of tuples) types, worrying about random numbers and IO issues that are inherent to Haskell.   In approaching such a game, should I worry about creating newtypes first, or work from what I want main to do and fill in the gaps?

But while I make this suggestion, I really have no idea of what kind of advice I can offer your typical new-to-haskell coder.     But I have some hypotheses:

  • work from the main :: IO() first and build a framework of functions to develop your outputs.
  • possibly create type variables for each of your functions, making it equal in Type to a typical output you would like to see.    Then work backwards from there to create a lazy output, then involve possible recursion and so on.
  • use generic types (eg. Int, String, Char etc.) with comments first, then develop types to make your code more clear.
  • unit tests should include the System.IO.Unsafe module (cheating should be allowed when you are testing your code – let the learning happen when you are developing real code)

I’ll add what I can as I continue to learn more about coding in Haskell.    The bottom line is that I think more people should be coding in a language like Haskell, but they are unlikely to work with it if they end up spending a bajillion hours just to get it to choose randomly from a list of monsters (for example).   Especially when they can learn how to do the same in three minutes using an imperative language like Python.

For the greater good and more sustainable code overall, what high-level tips or approaches can you offer any newbie coders of Haskell, so they can develop without becoming absolutely bogged down in failure with their Haskell programs?

UPDATE:   After writing this, I found a great powerpoint tutorial by Graham Hutton that uses Hangman as an example of interactive Haskell code development.

How to Talk to an “Aspi” – Asperger’s, Autism, Labels, Stereotypes and Strategies

Update: After writing this, I read this great article by someone name Astrid who has Aspergers and think it’s a great counterpoint to what I said here.   I now can’t imagine this post being ‘out there’ without a link to that post.   I have no real response to Astrid except to acknowledge the tension between the perception of Aspies as ‘elite’ (in a way) and the often unfair expectations that those perceptions have on people with Asperger’s.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

My son is a genius in so many ways you cannot imagine.   He is now six years old.    He has been talking since he was barely 12 months old.    His vocabulary could make Rex Murphy feel like he needs to go back to grade school.

He can tell you the some interesting properties of many chemical elements you’ve never heard of.   He once wrote Martyn Poliakoff of the Periodic Table of Videos to ask him:

  • What do people use Beryllium for (just watch this video)?
  • What is the most dangerous element?  (there are various reasons for danger.   Plutonium is very toxic.   Fluorine and Cesium are the most reactive.)   What is the least dangerous element?  (probably Helium)
  • How do you suppose ununoctium is very small when it has the most protons?   (It’s not small, but only a very small amount has ever been made – and the experiment that claimed to have made ununoctium has its critics for sure).
  • If bananas contain potassium why do they not explode when you put them in water?   (it’s not elemental potassium that bananas contain, but potassium ions, which do not explode in water).

There’s more.   He’s gotten as far as level 8 in Globetrotter XL (a game where you are asked to pinpoint the geographic location of world cities).    He can probably describe most of the world flags and definitely all of the U.S. state flags.    He can name all the state capitals and nicknames.   (Also, he is Canadian, so he has no real education on this topic.)    When he was 3, I could rely on him to give me accurate instructions on how to drive to someone’s house after only a single visit.

When he got to school, however, we learned that he was having difficulty socially.    We are also realizing that there are some issues with some areas of his academic life too.   That’s when we discovered that he’s an ‘aspi’ – a child with Aspergers.    Whether that’s a diagnosis, a personality type or just a way for so-called ‘normal’ people to marginalize him, I’m not quite sure.   I do know that paying attention to the nuances of his learning style has been really helpful to let him deal with everyday life things.

So he must be socially awkward right?    Must be like Rainman, right?    Spock?    Temperance Brennan from Bones?    Keeps to himself, right?   He must shy away from social situations and show little emotion to others, right?    Total lack of empathy in favor of logic and detail.   It’s all obvious!

Well, no.   My child is  extremely engaging, interesting and (in a way) interested in people.    The differences are more subtle and hard to pin-point.   You’d know there’s a problem somewhere with the way he interacts with others, but you would find it hard to pinpoint what.    But, if you meet a kid that:

  • Is very welcoming and friendly.   Almost assuming right off that you are a friend.
  • Is very polite on the phone.
  • Assumes that you are interested in what he is talking about.
  • Assumes you want to participate in the things he wants to do, and maybe gets angry if you don’t.
  • Interrupts your conversations with others.
  • Gets upset over basic requests or instructions.
  • Asks surprising questions and offers amazing insight on a wide range of topics.
  • Will do a speech as if he were defending a thesis, but then fail at answering basic open-ended questions about the same topic.
  • Is surprisingly slow at getting ready for going outside etc.
  • Will repeat certain behaviors and actions over and over again.

That might be my kid.

If you happen upon a kid you might think is an aspi, here are some things you could consider:

No Surprises

Little surprises will make Mr. 6 anxious.    Simple requests like ‘go brush your teeth’ can turn into total battles if they appear (to him) to come from left field.    A better approach is to give him a list of the things that need to happen, preferably with time-limits to go with them.

Be Patient

Mr. 6 will ramble.    It’ll take him a few shots of ‘umm…  uh…  I have a question for you…’ etc. before he comes out with what he needs to say.

Turn Open-ended Questions into Multiple Choice

No matter how many times I ask Mr. 6 ‘what does he want for dinner’ he will always reply ‘i don’t know, what is there?’    And he’s a picky eater – he only has a few things that he enjoys eating!    On the other hand, if I hand Mr. 6 a menu, he will be able to give me ideas even if nothing on the menu is appealing to him.    So if you want to ask Mr. 6 why he is angry, you should say ‘I think you might be angry because:

a) you are disappointed about not getting candy

b) you are a mean grouch

c) someone called you a mean name

d) someone ate your lunch’

Even if all of these ideas are absolutely wrong, Mr. 6 will be able to take one of options and give you some insight into how he is feeling.

Act Like a Librarian

There may be no actual evidence to support this assertion, but sometimes it’s like Mr. 6 has a Library of Congress in his head with no retrieval system to find the right information at the right time.    If you are able to help him out with a little subject classification, he may be able to find the right book in his head and recite its contents in detail with amazing analytical capability.

Get Ready to Have your Mind Explode

When I explained my little ‘act like a librarian’ technique to a doctor, Mr. 6 corrected me and said ‘it’s like I have to build a tall building and I don’t know what materials to start with.’    That doctor is probably still cleaning up the grey matter from her office after that insight.

Model Behaviors

Mr. 6 will always be better at imitating the positive behaviors he sees in other than understanding how he is annoying you.    If he can come up with a rule about what to do at the right time, he will do it.    He understands that people get annoyed at him, but he doesn’t always understand why.   Show him an example of how he could behave when certain things happen and he’ll be happy to oblige.

Is Something Else Bothering Him?

Mr. 6 hates loud sounds.    It might not be you, but where you are standing that is bothering him.    If an environment is complicated or noisy, it might be causing problems for Mr. 6.

It’s About Learning Difficulty, Not Emotional Problems or Intelligence

If you are the sort of person who just likes to label and ignore people with learning trouble, just listen to Temple Grandin for a few minutes.    People on the Autism spectrum have the potential not only to be productive members of society, but to transform society for the better.   Like the way a wide range of overachievers just so happen to be dyslexic, there’s a comparable list for people with Aspergers (grain of salt needed for both lists, however).

So there’s my contribution on the challenges that go along with the gift of having an ‘Aspi’ in your life.     Mr. 6 makes me smarter.    He also breaks a wide range of assumptions I have about people learn, teach, ought to behave, and so on.

Three Briefs About Your Web Presence

I had three brief things come to mind, neither of which really need a whole post to describe.   I’ve been thinking what works for a web presence in a Microblog world, and what real competitive advantages & disadvantages websites have over other media.

Are You Ready for Your Blog?

One of the things that is overstated about web-based promotion is ROI — the idea that you put little work into a website and return pretty good results nonetheless.   With blogs, this idea has become even more apparent since with typical WYSIWYG editors, you literally just have to type into a box to make a web post happen.

The institutional side of things, it’s not so easy.  This came up at the last 4th Thursday event, in fact.  When you open a blog for yourself, there is little to no brand associated.   You can pretty much use any template and away you go.  Institutions need to manage brands, reputation, target markets and quality assurance.   If you want your business or institution to be successful, it cannot look like every other blog.   As an individual, people can perceive you poorly and you can still have a successful blog.   Not so with an institution — if your library looks like a jerk, no one will show up to your branches.   Even though web presence has little to do with product/service development, people will associate poor writing on a website with the quality of a product or service.  Libraries cannot afford to have their services downgraded because of poor web content.  In short, you need to add a whole lot of editing, design and marketing time to the denominator of your ROI.

If you are institution, you need content before you establish your web presence.   A blog that has been doing nothing for a month will look bad.   Take a look at what happened to Google when they left their Google Librarian blog to sit for a while.   This does not work the same for individual blogs.   Go away for a month as an individual and people will just think you are on vacation or something.   Those same users will have higher expectations for your library, however.   If you want to start a blog, you need to commit 52 pieces of 800 words or better per year.   Then you need to manage spam, comments etc.   In short, add the costs of content creation and management to the denominator of your ROI equation as well.

In the end, the ROI is still going to look good — just not as good as most people assume.   If you do not put some time and money into the denominator of the ROI equation, the numerator will be zero — or worse, it will do damage to your library/company.

Thinking About Metrics — Total Time Viewing?

Television ads or well-placed bulletin boards are sure to find a good number of eyeballs, but how much time do you really have to get your message across to them?   More importantly, does your website offer a better alternative to these options?

Two popular ways to measure the effectiveness of a website are total visits, and time duration of visits.   Is it possible with typical statistics packages to estimate how much total time users access a website per month?   Yes.   Does it matter?  I am not sure.

For example, my statistics package (AWStats) will tell you the percentages & number of visits in each of the following time-duration categories:

  • 0-30s
  • 30s-2mn
  • 2mn-5mn
  • 5mn-15mn
  • 15mn-30mn
  • 30mn-1h
  • 1h+

A calculation of total time visited per month would be the mean of each category times the total visits that lasted each amount of time.   So, if you had 1000 visits in the 2mn – 5mn category, you might put (210 seconds * 1000 = 210 000 seconds or 3500 minutes or a little less than 60 hours total).   You would do that for every category, except for the 1hour + category.   Although you would definitely lose some numbers, I would remove the 1h+ completely from the list.   These durations almost always mean that someone left their browser running on this page, so the number aren’t really valid.

Then I would have pull two numbers from your stats.   The first is the total number of minutes per month that someone pulled from the sight.   The second is the total number of minutes in 30s-2mn, 2-5mn, & 5-15mn categories.   These are the categories that show the most engagement with a website (anything less could be a mistaken visit; anything more could mean the person was lost).

In the end, you can have an argument for your promotions people that you can expose your users to promotional content longer than other media.   This should shape how your make promotions on your website.

How Do People Come to Your Site?

Another misconception that many people have about a website is that a service merely has to “win the battle of priorities” and find its way to the front page of a website to get traffic.   The reality is something different.   Having a whole bunch of stuff on a front page merely gets people lost on the site.   You may get slightly more traffic to your page, but they might not be happy that they got there.   Further, you may, in turn reduce the traffic of all other pages in the mean time.   You really need to think about how people use your site before you “plop” something on a front page.

Some things people will immediately associate with your library.   These are the things that you should put on your front page.   Other things will be value-added services.   You have a logical pathway to these pages, but they should not take up the prime real estate.   THEN, you find excellent ways to ensure that these pages show up in Google and other search results.   Why?   Because if potential users do not immediately associate the service with your library, they are more likely to use Google instead.   Take advantage of common Search Engine Optimization techniques that can help you in this regard.

You can go further than this.   When I launched our website, one of the first complaints we had was that staff counted on the website to find simple things like the halifax weather, basic mapping, provincial catalogues etc.   My first reaction was “just Google it.”   But then I thought about how staff were using the site.   The website was part of their daily routine — they load up their operating system and then search the main links, most of which were already established on the website.

How are non-staff using the site?   I’d love to know.    Ideally, it would be great if key customers would have a library “visit” scheduled every Thursday morning, for instance.   In fact, I would be surprised if a few people had this exact routine.   Getting good data on this sort of thing could really help your respond to customer need on a website.   I’d like to see more of this kind of research in fact to go along with usability tests and statistics taking.

In the end, I think we still need more people thinking about web presence in all institutions.   The more librarians understand the technical benefits and limitations of the web, the more effective our services will be.

Search Engine Optimization (SEO) Tips for Libraries

After seredipitously encountering an Search Engine Optimization (SEO) victory (my wife searched for events happening on a major street in my city and our events page turned up #1), I’m feeling pretty good about the library website.   That does not mean that we cannot improve however, so I thought I’d blog about it a bit.

Now, I am not going to cover the basics of SEO, because there are plenty of resources out there that can help with these things.   If you have money, maybe you’ll want to spend some on an SEO consultant who understands the basics.

But even if you hire an SEO consultant, you still need to understand the basics of website architecture from your company’s perspective if you want them — and you — to be successful.  You do not want the people you hire to bring traffic to your website by guessing how your customers do searches.   You need to be ready to identify your user needs online and how best to put the library at the forefront when people have those needs.

So, here are a few tips that I’ve learned about how users search for their libraries:

Sometimes users will search for the system; sometimes they’ll search for the branch

If you look at your website stats, I’ll bet any money that your top searches will be for “library” “[city name] library” “library [city name]” and so on.   The next bunch (I bet) will be “[branch name] library.”

But let’s go even further, if someone is searching for a branch, they may be looking for a specific service or event at this branch.    If this is the case, you want to be sure they don’t have to look for you.

Solution(s):

  • For one, you want to have a page for each of your branches with the branch name in the <title> tag.   Make sure basic location, hours and etc. are on this page.  That will make sure people find your site when they search for a specific branch.
  • If you have a database of programs & events, make sure you have a way to feed upcoming programs to specific branch pages.    If not, make sure you have a link to events from each branch page.
  • Make sure you have locations mentioned (in text or as image names) when you promote specific programs on your front page.

Don’t Let Enthusiastic Branding Get in the Way of Common Sense

As companies, like banks and software companies move from names (Hewlett-Packard) to acronyms (HP), so will many libraries.   This is all great and fine, but you want to be sure that your brand does not get in the way of your SEO strategy.    Take the Acronym for Halifax Public Libraries, for instance:  HPL.   “HPL” can refer to any of the following:

  • Hamilton Public Library
  • Halifax Public Libraries
  • Human Performance Lab (at York University)
  • Human Performance Lab (at Calgary University)
  • Human Placental Lactogen
  • Huntsville Public Library
  • High Performance Linpack
  • Hewlett-Packard Labs

If you are ‘the’ HPL (in my case, Hamilton Public Library) then all is fine and dandy.   However, if you are HPL number 4, 5, 6, 7, or 8 — then there is some trouble.      Also, are you sure that it is an acronym that people will type into Google or another search engine when they are searching for you?

Solution:

  • Make sure all images and acronyms have a plain-english explanation for who you are as well.  For one, the title should include the full title of your organization.
  • As a general rule, favor plain language over jargon on your website.   “FindIt” might be great for print promotion on your catalogue, but “search” is what most people look for online.
  • For your URL, consider including the word “library” somewhere.   This is especially true if your library’s acronym could be confused with those belonging to other organizations.  Remember that the word “library” is the best brand that we have.

Consider Your Users’ Needs, and then Make Pages that Respond to Those Needs.

It shocks me how many libraries have websites that do not include the words “reading” “books” “computers” or “wireless” somewhere on their pages.    We want people to think about the library when they are searching for books, along with all those publishers, used book stores and etc.

When someone is looking for wireless connections in your town, does a search for “wireless [your town]” have your organization up and front?    Why not?

Solution:

  • Build your website according to user needs, using simple language.   You want the keywords that people will use to appear on your website.
  • Assuming that you have the following services, you should include the following terms somewhere on your site:
    • Wireless (wifi)
    • Computers (and computer lessons)
    • Events & programs
    • Books, Bookclubs, DVDs, Authors
    • Reading, Read, Readers
    • Kids, Parents, Teens, Seniors

Don’t Buy into the “Front Page is Everything” Philosophy

Whenever you start a website project, the first thing almost everyone is going to tell you is that their particular interest/service/whatever needs “a big button saying “[insert service here]” on the home page”.    While it’s true that being on the front page will draw more traffic to that page, it does not follow that you will have more visitors to your site.   It is much, much better to have a logical pathway to each service, with clear labels and a simple interface.

From an SEO standpoint, this also matters.    If someone is looking for something specific (eg. How to sign up for an Literacy program), they are going to want to hit the “sign up for Literacy” page on your website when they search, not the home page.

Solution:

  • People will click a few times to get where they want to go.    While you do not want people to get lost, you also do not want to schmush your front page with content simply to give exposure to pet projects.
  • Consider other marketing techniques to draw attention to smaller projects.  For example, you could try viral marketing instead.
  • Spend more time developing useful content that will get people clicking on your website after a search, rather than worrying about from-the-front-page navigation.
  • Make sure that you have search engine-friendly Urls turned on if you are using a content management system like WordPress, Joomla, or Drupal.

These are a few tips I have.   There are many more, of course — maybe you want to share some?    In the end, libraries spend much too much time worrying about the design of their webpage without considering other pathways that customers will take — including search and external links (which I have not covered here).