Archive for the ‘programming’ Category

Have you ever visited a website with expectations about what you would find only to discover that site held none of the information you were looking for? That site might have had exactly what you’re interested in, but there was no clear path to find it. The site may have been organized in such a way that led you to believe it was about something other than what you were hoping to find.

How long did you stay on that site? Did you take any time to explore it or did you quickly conclude it wasn’t what you were looking for and left in search of another site?

One of the most important decisions you make as a web designer is how to organize information. How information is organized on a single page and across your site greatly affects how people respond to your design and interact with it. When someone first visits your site they have very little knowledge about it. You need to let them know what your site is about quickly and effectively.

How should you organize your site’s information? How many ways can you organize it? Are some organizational systems better than others?

5 Hat Racks

The principle of the five hat racks suggests that there are a limited number of ways information can be organized. As you can guess by the name, it says there are exactly 5 ways to organize information, those 5 ways being by Location, by Alphabet, by Time, by Category, and by Continuum.

You’ll sometimes see continuum stated as Hierarchy in order to create the acronym Latch, but I think continuum is the better word in the context of the 5 hat racks, since hierarchy implies something different and is something we’ll discuss separately.

  1. Category – organization through similarity and relatedness (categories, tags, taxonomies). Organize your content by categories when there are clusters of similarity in you information or when people will naturally seek that information based on perceived similarities.
  2. Time – organization in a chronological sequence (step-by-step instructions, blog posts, news). Organize content by time when presenting or comparing events over a specific duration of time or when time based sequence is important to the information.
  3. Location – organization through geographical or spatial reference (maps, travel guides). Organize content by location when orientation or wayfinding are important or when your information relates to a geographical place
  4. Alphabet – organization in an alphabetical sequence (dictionary, glossary, index). Organize content by alphabet when the information is referential, when nonlinear access is required, or when no other means of organization is acceptable.
  5. Continuum – organization by magnitude (baseball statistics, search results, ratings). Organize content by continuum when comparing things across a common measure; highest to lowest, best to worst, first to last.

You’re not limited to using only one system of organization across your site. The organization is mainly a way to help others find you content.

You may organize your main navigational system based on category and then offer search results based on continuum. You might have a section of your site that serves as a glossary, which you’d organize by alphabet, a blog that presents posts by time, and a specific page or post that compares content by continuum.

Hatrack

The key is to understand how to organize your content through the 5 hat racks and develop strategies for organizing it so your audience can find it quickly and easily.

Also keep in mind that the navigational systems you make prominent reveal a lot about what’s contained within your site. A site about baseball for example could present it’s main navigation as

Standings | Teams | Players | Schedules | Box Scores | Stats

or

History | Teams | Players | Ballparks | Collectibles | Museum

Both of the above are based on category organization, however, you would probably expect each to contain different information.

The first is more focused with what’s happening during the current season as indicated by the words standings and box scores, whereas the second is more focused on what happened in the past based on words like history and museum. Both sites may have much content that overlaps and both are about baseball, but simply in the way you present how your content is organized you reveal valuable information about what each site has to offer.

Hierarchy

If your site is small and only has a few pages, you can easily display them all in your main navigation. As the number of pages grows it quickly becomes unwieldy to try and include to every page in a navigation bar or single menu. Organizing your pages into a hierarchy becomes important.

Hierarchal organization is one of the simplest structures for visualizing and understanding complexity. Placing your content into some kind of hierarchy is an easy way to let people know what the entirety of your content is about.

Hierarchy is created through superordinate/subordinate or parent/child relationships. Visually we perceive these relationships based on left/right or top/down organization, but we can also influence this hierarchy visually through proximity, size, and connecting lines among other things.

There are 3 structures to visually present a hierarchy.

Tree Branches

Tree Structures

Tree structures typically present the child below or to the right of the parent. Think of a drop down menu. Things like size and connecting lines can also be used to express the parent/child relationship. Think mindmaps.

Tree structures are useful for creating hierarchies of moderate complexity, however they can get cumbersome as the hierarchy grows larger or becomes more complex. They can become tangled when children have multiple parents. They can also be difficult to change, add to, or remove items in the hierarchy.

You’ll commonly use tree structures for high level mapping or overviews of the system. Again think of a drop down menu as your main navigation. You likely won’t include every page on your site in the drop, but rather a few levels of organization starting from the highest level.

Nest with eggs

Nest Structures

In a nest structure the child is contained within the parent. Think of a Venn diagram.

Nest structures work best for simple hierarchies. In order for the parent to contain it’s children it naturally has to grow larger as more children are added to it. Nests become a less efficient way to display the hierarchy as the system grows larger. You also can’t represent much complexity with a nest structure.

In many ways a web page is visually organized as a nest. You have a page that contains a header, footer, one or more sidebars, and main content area. Your sidebar may contain a list of links, some textural information, banner ads, etc.

You’ll commonly use nest structures for grouping information into simple logical relationships. and for natural systems. Think of a web page. How much information can you add to any one page before it becomes a complex mess. The more you add to it, the less the hierarchy becomes clear.

stairs.jpg

Stair Structures

In a stair structure the child is located below and to the right of parent. Both below and to the right are used as opposed to one or the other as in a tree hierarchy. Think of an outline as an example of a stair structure.

Stair structures are effective at representing complex hierarchies, though they aren’t easily browsed. They can also imply a false sense of sequential relationships. Since child elements are often stacked one below the next inside the parent it may look like the top most child comes before the next child down the stack. This sequence isn’t implied by the stair structure.

You’ll commonly use a stair structure for large and complex hierarchies, particularly those that change over time or where the pattern of growth is unpredictable. It’s easier to add to, remove from, and modify a stair structure than either of the two structures above.

Every post you read here begins as an outline that is a stair structure. As I begin researching information for any post I add new children, remove some, and constantly rearrange the entire structure. The outline grows and gets reshaped and eventually becomes a post.

One way to maximize the clarity and the effectiveness of hierarchies is by concealing child elements and then revealing them only when the parent is selected. Think of an accordion style menu or a file system with the + and – to open and close the parent.

This concealing and revealing makes it much easier to understand the hierarchy as you only see part of the hierarchy at any time. It’s a good idea to explore different ways of selectively concealing and revealing the complexity of your hierarchy to help your audience understand it better.

layering.jpg

Layering

Layering information is the idea of grouping related items together in some way and only presenting certain groupings or layers at a given time. Layering helps manage complexity of information (PDF) and also helps to reinforce relationships within a layer and relationships and comparisons across layers.

There are 2 types of layering you can use, 2-dimensional and 3-dimensional.

2-Dimensional Layering

2-dimensional layering separates and groups information in such a way that only one layer can be viewed at a time while hiding other layers. The layers can be revealed linearly or non-linearly.

Linear layering is useful when there is a clear beginning, middle, and end to the layers. Think of a novel. You might consider every scene in the novel as being a new layer of information. These scenes are revealed to you linearly as you read the book. Several layers of scenes might comprise a larger layer representing a chapter.

Non-Linear layering is useful when you’re trying to reinforce relationships between layers. There are 3 types of non-linear layering.

  • Hierarchal layering is used when there is a hierarchy to the layers; when they’re built of parent/child relationships. You’ll reveal these layers in accordance with the hierarchies we discussed above.
  • Parallel layering is used when the information is based on the organization of other information as in a thesaurus. The layer is revealed through its connection with that other information.
  • Web layering is used when the information has many different relationships. Hypertext is a good example. Pages on the web can be linked to and from many other pages. Here you’re revealing the layer through linking to other layers.

3-Dimensional Layering

3-dimensional layering separates and groups information such that multiple layers can be viewed at once. They can be presented as either opaque layers or transparent layers that sit on top of each other.

  • Opaque layers are useful when additional information is to be shown without switching contexts. Popup windows and context menu are good examples of opaque layers.
  • Transparent layers are useful when overlaying the information combines to illustrate new concepts and relationships. If you’re familiar with the term augmented reality, it’s a perfect example of transparent 3-dimensional layers. The idea being that you’re presented a direct view of the real world and then layers of virtual information are presented on top of that view in order to augment it.

Use 2-dimensional layers to manage complexity and direct navigation through your information. Use linear layers for stories and sequences and non-linear layers to emphasize and compare relationships within and across layers.

Use 3-dimensional layers to elaborate information and illustrate concepts. Use opaque layers for presenting elaborative information and transparent layers for illustrating concepts and highlighting and relationships.

gestalt-uniform-connectedness-1.png

gestalt-uniform-connectedness-2.png

Organizing Information Visually through Gestalt Principles

Most of the above discussion has been about organizing information across your site or system. I wanted to briefly discuss how you can organize information visually on a single page. If you think about basic design principles and specifically gestalt principles, many exist to help organize information better.

Consider the following principles of gestalt.

  • Similarity
  • Uniform Connectedness
  • Continuation
  • Proximity
  • Common Fate
  • Parallelism
  • Common Region

If you haven’t already read my previous post on gestalt principles, you may want to take a look to gain an understanding of what each of the above is about. Each connects information and elements in some way to convey the idea that the elements are related to each other to visually organize them.

The basic design principle of alignment is another way to visually show relationships between information. Alignment leads to grids which exist to help organize a design.

Summary

A large part of your job as a designer is to organize information. That organization might be the information architecture across a website or it might be where to place design elements on a page. How information is organized reveals a lot about your page and site and will greatly influence how people react to your design and how they interact with your entire site.

Take time to learn each of the different ways to organize information mentioned in this post. Each way is relatively easy to understand. You want to understand them so you can determine which organization system is best to use under which conditions.

Keep in mind that you can use one, several, or all of these organizational structures within a single site. Some will obviously be better to use in a certain place and others may come down to a choice based on design goals and objectives.



Go to Source

Explain which div you’re closing

Most of the time when I’m viewing a website source, I see, at the very bottom of the page, an almost endless list of closing </div> tags. In fact, many beginners think they just have to use divs instead of tables to produce quality code. Divs are cleaners than tables, but without proper code organization, it can be as (or even sometimes more) messy as table based code.

Using indentation is a good start. But a tip that can definitely make you save lot of time is to comment every div tag you’re closing, as shown in the example below:

<div id="header">
  <div id="sub" class="first left">
    ...
  </div><!-- #sub.first.left -->
</div><!-- #header -->

Use a CSS reset

Unless you’re a beginner or if you were on vacation on a desert island for the last 6 years, you might already know how useful a CSS reset it. Because by default, browsers don’t apply the same default styling to HTML elements, a CSS reset will ensure that all element have no particular style so you can define your own without the risk of many cross-browser rendering issues.

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}

/* remember to define focus styles! */
:focus {
	outline: 0;
}

/* remember to highlight inserts somehow! */
ins {
	text-decoration: none;
}
del {
	text-decoration: line-through;
}

/* tables still need 'cellspacing="0"' in the markup */
table {
	border-collapse: collapse;
	border-spacing: 0;
}

Source: http://meyerweb.com/eric/tools/css/reset/index.html

Don’t use @import

CSS files can be included using the @import directive. This can be useful when, for example, you want to include a stylesheet into another. Another common practice is to include CSS file in html documents using the following:

<style type="text/css>
  @import url('a.css');
  @import url('b.css');
</style>

While it works, the @import directive is much slower than the other way to include stylesheets into a html document:

<link rel='stylesheet' type='text/css' href='a.css'>
<link rel='stylesheet' type='text/css' href='proxy.css'>

It will not make a difference on low traffic websites, but if you have the chance to own a popular website, don’t waste your visitor’s time using @import.
Source: http://www.stevesouders.com/blog/2009/04/09/dont-use-import/

“Smush” your images

Being a developer, I always found that optimizing my images for the web wasn’t easy. I tried the good old “Save for web” Photoshop command, but most of the time, I ended up with images that were either too big or without a sufficient quality.
As a result, I had the bad habit of using unoptimized images on my websites. This isn’t a problem when you don’t have to care about your site’s bandwidth, but after my recent switch on my vps.net virtual private server, I had to be careful with image sizes.

At this time, I found a very cool tool named Smush It: You enter your unoptimized image url, and Smush It will create a perfectly optimized image for you. You can save up to 70% of the file size, while keeping the original quality. As an example, all the images from my list of online code editors have been “smushed”.

Don’t mix CSS with HTML

As a markup language, the right use of HTML is to organize documents by defining a header, a footer, lists, blockquotes, etc. Some time ago, front-end web developers often used now deprecated HTML attributes to style a particular element.
Nowadays, the style attribute allows developers to insert CSS directly into a html document. This is very useful for testing or when you’re in a hurry. But the style attribute is bad practice, that goes completely against the CSS philosophy.

The following example illustrates how dirty and hard to read a simple line of code can become, with the style attribute:

<a href="http://www.catswhocode.com" style="background:#069;padding:3px;font-weight:bold;color:#fff;">Cats Who Code</a>

Don’t mix Javascript with HTML

Just like mixing your html code with css is bad practice, you shouldn’t use any Javascript in your html documents. The following bad practice illustrates an onclick event:

<a id="cwc" href="http://www.catswhocode.com" onclick="alert('I love this site!');">Cats Who Code</a>

The same result can be achieved using unobstructed Javascript. In this example, I’m using the popular jQuery framework:

$(document).ready(function() {
  $('#cwc').click(function() {
    alert('I love this website');
  });
});

This may seems a bit harder at first, especially for beginners; but it is definitely not, and it will keep your html document clean.

Use conditional comments

You know it, IE sucks, and some clients suck even more by requiring you to create webpages which are compatible with this obsolete browser. To target specific versions of IE, you can use the well known IE hacks, as shown below:

height: 200px; /* normal browsers */
_height: 300px; /* IE6 */
.height: 250px; /* IE7 */
*height: 350px; /* All IEs */

Those hacks are extremely useful sometimes, but they are not the best way to target a specific version of IE, and it will cause your CSS validation to fail.

Instead, you should use the conditional comment shown below to target IE6.

<link href="style.css" rel="stylesheet" type="text/css" />

<!--[if lte IE 6]>
  <link href="ie.css" rel="stylesheet" type="text/css" />
<![endif]-->

Place Javascript file at the bottom

A popular practice of the late 90’s/early 2000’s was to place Javascript files within the <head> and </head> tags. The problem is that your javascript files will be loaded first, and consequently your content will be loaded after.

By placing Javascript files at the bottom of your documents, you’ll ensure that JS files will be loaded only when the content has been properly displayed.

    ...
    <script type='text/javascript' src='jquery.js?ver=1.3.2'></script>
  </body>
</html>

Use HTML semantically

HTML is not a programming language. It is a markup language, used to create structured documents by denoting structural semantics for text such as headings, paragraphs, lists, and more.
If you started to create websites in the good old 90’s or in the beginning of the century, you know how dirty the markup was at the time. But happilly, it has evolved.
Among other things, it is important to use html element semantically. As an example, a navigation menu should always be an unordered list:

<ul>
  <li><a href="#">Home</a></li>
  <li><a href="#">About</a></li>
  <li><a href="#">Contact</a></li>
  <li><a href="#">Blog</a></li>
</ul>

Test WHILE you build to avoid cross-browser issues

One of the biggest mistake I ever made when developing html, CSS, and javascript, was not to test my pages on multiple browser while I was writing them. Instead, I used to write all my code and just view in Firefox to see how it was rendered.
In theory, this should be good. But as you know, cross-browser issues are a major problem for front-end developers, especially due to IE. If you test your documents on Firefox/IE/Chrome while your writing it, cross-browser rendering problems will be much easier to fix. I have lost hours not doing it, so I hope this final tip will help you saving your precious time. To test on multiple versions of IE, I use this very handy tool. Happy coding ;)

Have you checked out the highly recommended Digging into WordPress book by Chris Coyier and Jeff Starr?

Top 10 best practices for front-end web developers


Go to Source

Sky Light

SkyLight

A combination blue dark and black color, with sky image as a background

Magazine theme

magazine

The theme has widgetized header, front page, sidebars, and single posts. For better SEO results, the theme uses custom fields to pull images to the front page.

Simple Things

Simple Things

Fixed width, 2 column theme with a minimalistic style and a touch of typography

Chirp

Chirp

Chirp is a Twitter inspired Wordpress Photoblog/Videoblog Theme. You provide your Twitter information and the theme will be styled the same as your Twitter account.

5 Photo Blog WordPress Themes

Aperture

5 photography WordPress themes. Each one is widget-ready, gravatar-enabled, and ready for your photo uploads.


About this blog

This blog delivers stylish and dynamic news for designers and web-developers on all subjects of design, ranging from: CSS, Ajax, Javascript, web design, graphics, typography, advertising & much more. Our goal is to help you communicate effectively on the web with an engaging website or functional interface.

  • steelducky@kargath: the new phone google just released will be great for it [...]
  • Chariot: For the most part, I don't think people do it deliberately. People who grow up without ever rea [...]
  • Matthew: AT&T requires a smart phone data plan with any smart phone used on the network regardless of whe [...]
  • DiscussNY: Hello, This is a goofy answer and I don't recommend it, but it answers the question. Send t [...]
  • TxnLost: Wow, I'd almost recommend a whole new computer if you did anything besides the net. That thing [...]
Internet MegaMeeting, LLC Microsoft Store LinkShare  Referral  Program Iolo technologies, LLC Artisteer - Web Design Generator FTPress.com (Pearson Education) Mobile Security: Parental Controls and Monitoring Atom Entertainment (formerly AtomShockwave)
.
Web Analytics