Archive

Archive for March, 2009

10 JavaScript Effects to Boost Your Website’s Fanciness Factor

March 19th, 2009 No comments

There comes a point in time where we want to improve our website’s interface or provide a captivating experience that our users will remember.

We have three main options (from hardest to easiest): write the scripts ourselves, use a JavaScript framework such as jQuery or mootools (which will make coding easier), use a pre-made script that works with existing JavaScript frameworks or that the author has developed from scratch. This article’s for the individuals who chooses to make things a bit easier and those who don’t want to re-invent the wheel.

Here’s a collection of 10 powerful yet easy-to-implementJavaScript effects to supplement your web page’s interface. These were picked using a “bang for your buck” methodology; meaning that these effects were chosen specifically because they provide high-impact effects with very little effort in installing and using them.

Author’s note: Title of this article, by request, was changed to reflect the content featured in this list. I apologize for the confusion this may have caused, and better quality control will be implemented in subsequent articles.

1) GreyBox

GreyBox allows you to launch other websites in a modal window (like a pop-up window, but it doesn’t open another browser). This is great for when you’re linking to multiple websites and don’t want the user to navigate away from your web page or to open another browser window that might be blocked by the user’s browser. Using GreyBox is easy and involves a 3-step process outlined in the web page.

Here’s some key pages regarding GreyBox: Download page, Documentation, Examples, Installation, and Advanced Usage (for the more experienced JavaScript’ers, check this page out for tips on how you can extend the library’s functionality).

2) instant.js

instant.js effect dynamically adds a Polaroid-like effect to your images (it tilts it and adds a border with a drop shadow), simulating this popular image technique without having to use a digital-image editing application such as Photoshop.

This can be utilized for when you’re applying this popular visual technique on multiple images and you don’t want to manually edit the pictures yourself (you can probably batch process, but that’s really only effective for simple actions such as resizing images, cropping uniformly, etc.).

3) mooTable

mooTable allows you the ability to provide sorting of table data ( without a page refresh) by utilizing the DOM instead of requesting the data again, sorted another way. Implementation is simple, and configuring the sorting of tables is a breeze.

This library needs the mootools framework, which you can download You can also find a  on the mootools boards by the author of mooTable, with feedback from other mootools developers.

4) FancyForm

FancyForm replaces boring form controls such as radio buttons and check boxes, with fancier ones. The basic implementation is a two-step process: (1) include JavaScript files on the web page, and (2) assign your form controls the class="checked" or class="unchecked" for checkboxes and class="selected" and class="unselected" for radio buttons. Very unobtrusive JavaScript.

This script needs mootools as well (and was developed for version 1.1).

5) image menu

image menu, developed by phatfusion, is a spiffy horizontal menu that expands when you hover over menu items (such as images).

You can use this for displaying a montage of images that are each partly hidden, but that the user can reveal fully by hovering over it.

This script needs mootools as well (and was developed for version 1.1)

6) AmberJack: Site Tour Creator

Here’s a lightweight JavaScript library that allows you to create a scripted website tour, allowing users to visit key web pages in real-time with a small description box on each page.

This allows users to take a tour of the various sections of a website, without them having to view a static demo created in flash or some other method. Extra bonus, you can download various “skins” or even create your own, to match the look and feel of your website. Here’s the Lightbox so you may see if they have a theme that doesn’t clash with your website.

7) ImageFlow

Inspired by iPod’s “coverflow”, ImageFlow is a simple effect that displays a collection of images that the user can scroll there using a scroll bar at the bottom of the image set. Advanced developers can probably modify the slider to spruce it up a bit more.

When the user clicks on an image, it re-directs them to another web page with the image displayed, so an excellent idea would be to use this in conjunction with a modal box script to open the image instead.

Update: Just now, the author of ImageFlow emailed me announcing ImageFlow version 0.9. Check it out (it fixes the issue of the image opening another browser window when clicked, and it works with Lightbox compatibility). Thanks for the update Finn!

8) ShadowBox.js Media viewer

ShadowBox is “a cross-browser, cross-platform, cleanly-coded and fully-documented media viewer application written entirely in JavaScript” (wow that’s a mouthful, isn’t it?).

What distinguishes shadowbox from the plethora of other modal boxes out there like Lightbox 2, is that it supports other file types besides images, such as a flash videos, embedded youtube videos, Apple.com Trailers, and web pages (a log-in page for example, that saves the user a trip to another page just to log on). Worthwhile script to test and play around with.

9) TJPzoom 3 – image magnifier

TJPzoom allows you to zoom in on particular sections of a high-resolution image. Holding down the mouse button and dragging up or down, can decrease or increase the zooming of the image magnifier tool.

One way of utilizing TJPzoom is to scale high-resolution pictures down to fit a web page, and then allow the users to zoom into parts of the image using the magnifier tool.

10) mootools Tips

mootools Tips is part of the mootools framework that allows you to provide a highly configurable way of showing tool tips to the user; when the user hovers over a link or image, additional information about the element appears on the screen.

Some options that you can tweak are the: CSS styles (to make it look different from the default black background and white text), transition speed, style of how the tool tip appears on-screen, and how long you want the tool tip be displayed. This requires the mootools framework.

Categories: Others, Tips and Tutorials Tags:

10 More Worthwhile Web Developer Websites to Check Out

March 19th, 2009 No comments

A recent article of mine entitled “20 Websites That Made Me A Better Web Developer” attained a large amount of popularity and I was pleased to find out that many people found a link or two that they’ve bookmarked.

The list started out as a massive collection of 100 websites (after going through my massive-huge bookmark collection) , but I then decided that, instead of overwhelming readers with 100 links that will be skimmed and forgotten the next day, that I would filter it down to only 20 quality websites that have been truly helpful and rich with information. A few things on the list were there for sentimental reasons, such as Web Monkey and SitePoint, which did help at the beginning, but now I’ve outgrown.

I received plenty of feedback regarding sites that should have been on the list. Here, I’d like to make amends and list down websites that have helped you (and me) further our understanding of web development and design.

1) Smashing Magazine

smashing_magazine.gifI started out as a freelancing graphics designer. During my college days, I depended on print (branding, brochures, post cards, posters, etc.) and web design projects to help me attain the necessary things that all college students needed (beer and Xbox 360 games). But as time passed, I realized that my passion and skill set were better suited working in web programming (.NET, Perl, ActionScript, PHP) and CSS/HTML mark-up.

But nowadays, in order to be successful in the field of web-building, you’ve often got to double as a fairly-proficient designer as well. Knowing what designs work and what doesn’t is essential if you’re able to become a valuable asset to your employers or clients.

Several readers mentioned Smashing Magazine, a popular weblog run by Vitaly Friedman and Sven Lennartz.

It’s a website I frequent to stay up to date with the graphics design side of things, as well as to inspire me during the Monday morning slumps. Smashing Magazine is a quick way of obtaining information as they have a way of filtering out the fluff so that you can get to the good stuff faster.
2) Firefox (and some extensions)

Firefox logoFirefox is a key tool for web developers — it’s not really a website — but nonetheless deserves attribution for enabling us to be more effective developers (as described in my earlier work on “9 Practical Ways to Enhance your Web Development Using the Firefox Web Developer Extension“).

Here’s a screenshot of how my home office Firefox set-up looks like (you can click to enlarge the image):

screenshot of Jacob’s Firefox set up – Click it to enlarge

As you can see, my set-up’s fairly minimal. The only development extensions I use (and which you should definitely check out) are:

    * Web Developer extension
    * Colorzilla (check this out if you’re still Print Screen‘ing a web page, pasting it onto Photoshop, and then using the Eyedropper tool to figure out the hexadecimal color values)
    * Firebug, which can’t be seen in the screenshot, but is an excellent tool box that allows the developer capabilities such as easily debugging JavaScript (i.e. no more alert(whatsInThisObject)), finding page errors, and a tree-navigation visual tool for checking out the DOM. Hint: Disable Firebug on AJAX-heavy sites (like Gmail) unless you’re developing it, it slows them down (it seems).

3) Flashkit

Flashkit logoFlashkit is the online “convenience store” for beginning to expert Flash Developers. They have 600,000+ members, a true testament towards their ability to provide solutions to those seeking to improve and learn more about developing Flash applications. Don’t be fooled by the “I didn’t get the web 2.0 memo” user interface, it’s the content and the community that matters the most.

The website features a categorized tutorials section (topics range from “Getting Started” to “Math-Physics” and “3D“), and a collection of free sound loops and pre-built flash movies.

Perhaps the most helpful feature of the website though, is their very large community forums (1 of the 40 forum topics entitled “Flash ActionScript” has 144,000+ threads!). Whether you’re just starting out or you’re already a professional-grade Flasher (a playful term I use for flash developers), Flashkit, if you haven’t heard of it, is the spot to check out.
4) kirupa.com

kirupa.com logokirupa.com is another favorite resource of mine when it comes to Flash. The site has very well-written tutorials and articles for the beginner to advanced Flash developer (though he writes about other web-building topics such as PHP and ASP.Net).

The site’s run by Kirupa Chinnathambi, a young and accomplished (he was offered a book deal by McGraw-Hill in his teens) author and software developer. His writing is light and easy to read, and he often provides several versions of a particular solution that caters to the reader’s skill level.
5) PHP.net

PHP.net logoRecently having to work with XML data on a remote site within a webhost that’s disabled fopen() and runs on PHP4 (and thus doesn’t have SimpleXML), I had to find an alternative way of doing this task. I found my solution in one spot, (cURL and xml_parser) — at PHP.net’s documentation section.

The example above is just one of the problems I encounter on a daily basis, and PHP.net is the first place I look at when troubleshooting problems or if I want to discover better/easier ways of doing certain things.

This deserves a bookmark for the times when you need a quick reminder of core functions that you’ve forgotten about, or to discover some that you never knew existed. The pages allow developers to comment and provide scripts so that you can further your understanding of the concepts involved.
6) Popular JavaScript frameworks

A congregated image of jQuery, script.aculo.us, YUI, and prototype JS logoThis is a combined listing. In my previous post, I mentioned mootools as my choice when it comes to JavaScript frameworks, “but that you can’t go wrong with the popular ones”. I failed to mention what the other “popular ones” were. These frameworks/libraries deserve mentions and deserve serious consideration when first deciding which solution is best for you.

    * jQuery – this framework, in my opinion, is the easiest to learn and the most elegant of the bunch. Here’s the documentation page to get you started.
    * script.aculo.us – This is more of an effects library than a fully-featured JavaScript framework, but it’s got some serious stuff going on.
    * YUI – The Yahoo! User Interface Library, if you’re the type of developer that has to have it all (and is willing to pay the price in page load times) — this is probably the one for you. Yahoo’s in-house developers, in my opinion, tend to come up with very bulky solutions even though they have some of the best front-end engineers such as Steve Saunders (who’s article on “Best Practices for Speeding Up Your Web Site” is a very worthwhile and enlightening read).
    * Prototype JS – the big dog, mootools used to require Prototype and script.aculo.us still requires it.

There are others such as dojo and Rico, but those listed above are what I consider to be the most popular and effective.
7) mezzoblue

mezzoblue logomezzoblue is a weblog by a highly-talented designer, Dave Shea, who’s also known for his article on A List Apart, regarding the CSS Sprites technique, css Zen Garden, and his book “The Zen of CSS Design: Visual Enlightment for the Web“.

A notable article that deserves a look-see is mezzoblue’s Testing Grounds Revised Image Replacement which showcases and analyzes the most popular CSS Image Replacement techniques.

mezzoblue seems to put an emphasis on quality over quantity, so articles may sometimes be few and far in between, but they’re worth the read when they come out.
8) Dynamic Drive

Dynamic Drive logoDynamic Drive is a source for CSS and JavaScript solutions. They’ve been around for approximately 10 years and have amassed a wonderful collection of scripts that you can apply onto your web projects.

They also have online tools such as a FavIcon generator (though personally I use Photoshop or favicon.ico Generator) and Button Maker.
9) StumbleUpon

StumbleUpon logoAs BBC news describes it (and quoted on the front page of StumbleUpon): “StumbleUpon is a brilliant downloadable toolbar that beds into your browser and gives you the chance to surf through thousands of excellent pages that have been stumbled upon by other web-users”.

When configured the right way, Stumble’ing allows you a unique way of getting new and interesting websites about web technology that many of the 4+ million subscribers have submitted, reviewed, and liked. It’s where I encountered Magento, an open source e-commerce suite that will soon be a popular contender in the e-commerce application realm, and interesting web applications such as htm2pdf which you can use to convert html mock-ups to PDF so that you may email your designs in one document.
10) Google code

Google Code logo screenshotNot only has Google solved much of my development road-blocks with their search engine (.NET and PHP errors, rendering bugs of particular browsers, existing solutions to a particular feature request, etc.) but it provides you with high-quality resources and API’s saving you the time and effort to develop them yourselves. Google code is a section at Google, geared towards developers and programmers.

Additionally, If you haven’t already, also check out these services and references:

    * Google Charts API – build charts dynamically onto your web page using easy-to-use URL-based requests.
    * Google Maps API – create custom maps.
    * Google Code Search – search public source code.
    * Google Help: Cheatsheat – Improve your search engine savvyness using these search engine commands. Must know stuff for effective troubleshooting of issues.

If you liked this article, be sure to also check these out:

    * 20 Websites That Made Me A Better Web Developer
    * 10 Web-Building Resources You Should’ve Already Bookmarked
    * 9 Practical Ways to Enhance your Web Development Using the Firefox Web Developer Extension – If you liked the entry on Mozilla Firefox, this is a tutorial on the Web Developer extension

Thank you!

… for your wonderful feedback on my first list.

Many of the entries on this list were inspired by the following people’s comments (thanks for the reminder):

    * Aron Filbert (from Digg) for the Firefox entry and the JavaScript frameworks entry
    * hiro protagonist for Dynamic Drive and PHP.net
    * Lee and DieselDaddy for reminding me about Smashing Magazine
    * Jive for reminding me that I forgot to mention Dave Shea on my A List Apart entry in my previous article, which inspired the mezzoblue entry (although css Zen Garden was mentioned, I just didn’t attribute it to the creator).
    * Fragle1980 for the Flashkit comment.
    * Johnathan and Hal for the Google Code entry

Categories: Others, Tips and Tutorials Tags:

A Simple Guide on How to Effectively Talk to Clients

March 19th, 2009 No comments

Everyone needs a website made, but not everyone can talk “tech” like we can. From the farm owner in Indiana to the brain surgeon in Malaysia, we quickly see that employers can come from all walks of life. Learning how to carry on a compelling conversation about web development is a paramount skill that all web developers should possess if you want to keep the checks coming in. Maintaining your audience’s interest and gaining an accurate picture of what they truly need to get done can prove to be a challenging part of any web development project, but here’s a few tips that might help a bit.

Get an estimate of their computing/technological expertise.

So that you know how in-depth you have to explain certain concepts or ideas, you should first try to determine the individual’s computing/technology knowledge. This can be accomplished indirectly with, what I’d like to call, fishing questions (similar to “fishing for compliments“).

For example, you can ask in passing, “Hey, what operating system do you have on your home computer?” or “What’s your preferred web browser?”. What you’re really trying to learn is: (1) if they know the basic terminologies like operating systems and web browsers, (2) if they have any experience with computers and the internet, (3) their tech savvy-ness, (4) how and why they use IT. A person using Linux probably knows a thing or two about computers and Mac’s are generally appealing to artists, designers, and musicians.

Other fishing questions are:

    * What do you already know about search engine optimization?
    * Do you use Adobe Photoshop (or a similar digital-image editing software)?
    * What are some websites you frequent on your spare time?
    * Do you subscribe to any RSS feeds?

Don’t underestimate a person’s knowledge.

You know that colleague who insists on explaining to you the difference between HTML and (X)HTML when you’ve just finished a strict-doctype XHTML website? Don’t be that guy. People don’t like to be treated like they’re stupid, and not being able to understand a person’s knowledge is a sure-fire way of landing yourself on his or her bad side. If you’re unsure of their grasp on a particular subject, don’t assume they don’t know anything, ask fishing questions and judge by their reactions whether or not you’ve explained enough.
Use actual examples.

When talking about a web project, it helps to have a computer with an internet connection nearby so that you can both communicate look at stuff that’s on the internet. For instance, if you’re trying to determine what look-and-feel a client wants for their website (i.e. “web 2.0?, dark, clean, etc.) you’d get a more precise answer if you were to show examples of websites that may have a similar theme that they described.
Keep an emphasis on the bottom-line.

People may not understand what SEO is, or how it’s accomplished, or why valid mark-up matters when trying to achieve a search engine optimized site, but if you talk in terms of results, they’ll be inclined to keep listening. For example, trying to describe the importance of standards-compliant XHTML, you can say: “standards-compliant XHTML ensures that the website’s mark-up is valid and supported by most modern web browsers which in the end means less maintenance and fewer customer support due to browser-rendering issues“.
Keep it simple.

Sometimes we have a tendency to overwhelm employers with technical jargon and over-explanation because we want to show them our knowledge and expertise. There’s no need to explain how you’re going to mock-up the web design in Photoshop (layer by layer, in excruciating detail). Most probably, they don’t care and you’ll only risk complicating things and adding to the client’s anxieties about a topic they’re not well-versed in.
Encourage questions.

It’s always good to figure out any questions or needs for clarification as early as you can to avoid dissatisfaction at the end. Give off the attitude that you’re always willing to answer questions and that no question is too simple or silly. If you have the luxury to meet with a client in person, you can do this by judging their facial reactions to the things you say. If they seem confused, ask: “should I explain further?”. If you’re meeting remotely (emails or phone calls), regularly say things like: “I’d be more than happy to answer any questions you may have”.
Talk using familiar analogies.

A great way to relate information to employers is by using scenarios and situations that are pertinent with their background. Be creative, make analogies funny, and most of all, use it to relay complex concepts. To illustrate with a satirical example: if you were talking to a basketball fan, you could say “using tables instead of div’s for page layout is as bad of a decision as picking Michael Olowokandi over Michael Jordan on your fantasy basketball roster because…“.
Be yourself.

Don’t pretend like you’ve worked on hundreds of websites and that you’ve been doing this for 15+ years… if you really haven’t. If you look uncomfortable or unsure of yourself, it gives off the impression that your trying too hard to impress or appear knowledgeable in the subject. A lot of web designers and developers nowadays don’t hide the fact that they are small, young, and playful. When working in an industry that’s complex and intimidating to outsiders, it’s a welcoming relief to find people that are normal. It can prove to be a plus when you don’t obfuscate the fact that you’re just starting out in the business. It’s easier to talk to a person who’s honest, sincere, and up-front then someone who appears to be B.S.’ing you all the time.

Categories: Webmasters Resources Tags:

9 Practical Ways to Enhance your Web Development Using the Firefox Web Developer Extension

March 19th, 2009 No comments

Whether you’re a front-end graphics designer or a back-end web programmer, if you’ve worked long enough in the field of creating web-based solutions, you’ve no doubt heard about an extension for the Mozilla Firefox web browser called (simply enough) the Web Developer extension. If you have no clue what I’m talking about, here’s a brief overview from Webs Tips to get you familiarized with this wonderful tool.

leadin_9ways

This article lists some practical, everyday uses of the Web Developer extension to help improve your web-building methods. I’ve tried to stay away from the more common and basic uses of the Web Developer extension like troubleshooting layout issues with the Information > Display Div Order option because I feel these have been discussed quite enough in other places. New users, don’t run away quite yet, I think this guide will help you get a rapid jump start into applying this tool into your daily development routine.

So without further ado, here’s nine highly pragmatic uses of the Web Developer extension for Firefox.

1) Change XHTML on-the-fly without changing your web files.

Unfortunately for many developers, we don’t all have the luxury of testing servers and sandbox environments. I for one, confess to developing on live websites even during peak web traffic times.

If you’d like to lessen customer support requests due to an inadvertent display:none; property assignment on the log-in box — use the Web Developer extension to effortlessly check your XHTML modifications before you commit them to the server.

Here’s an (extreme) example of how I was able to change a few of reddit’s XHTML marku

And here’s the modified version:

 

postimg_firefoxwbd

As you can see in the above picture, I changed the top three stories (to something else I’d much read about) and modified the background color to pink (I have an odd affection towards hot pink for some reason).

You can achieve the same results by using the Miscellaneous > Edit HTML Markup option which will open up the Edit HTML tab panel displaying the XHTML of the web page. Unfortunately, the window isn’t color-coded and the Search HTML function doesn’t quite work properly (yet).

Tip: You can change the position of the Edit HTML panel by clicking on the Position icon (right next to the Edit HTML tab on the above screenshot).

To change the CSS styles of the page, use the CSS > Edit CSS option, which will allow you to edit the styles used on the web page.

2) Measure things quickly with the Ruler Tool.

Raise your hand if you’ve ever print-screen’ed, and then copy-&-paste’d the screenshot onto Photoshop just to determine dimensions of certain page objects (like the width of an image) with the selection tool. *Raises hand in shame*

With the Ruler Tool (enable it via Miscellaneous > Display Ruler Tool), you can speedily size-up objects inside the web browser. It’s a great tool in conjunction with outline options such as Information > Display Div Order option or Information > Display Block Size option, allowing you to detect the amount of padding and margin between elements.

postimg_firefoxwbd_03

3) See how web pages look on a non-traditional web browser.

Nowadays, tons of people have mobile devices that lets them view web pages in non-traditional ways. Determine whether your pages render correctly (or close enough) on portable device screens by using the Miscellaneous > Small Screen Rendering option. This saves you from going out and purchasing a Blackberry or a Trio with an internet dataplan just for cross-browser checking.

What it will look like on a Small Screen Rendering device…

 

postimg_firefoxwbd_05

4) Find out how optimized your page is.

Use the Tools > View Speed Report option to automatically send your page to WebSiteOptimization.com, a site that provides a plethora of information about your web page load times like how quickly your page loads and how many HTTP connections are being used among a ton of other things.

There are built-in tools in Adobe Dreamweaver and Flash (if you even have access to them) that simulates download speeds, but nothing beats a free, comprehensive and actual live speed report.

postimg_firefoxwbd_06

5) Populate web form fields instantly.

Don’t you hate it when you have to fill in your custom-built web form for the nth time because you’re testing it? You can quit tabbing and entering junk information on your form fields and switch to using the Form > Populate Form Fields option in the Web Developer extension.

In the example below, you can see that it populates most web forms somewhat intelligently – It was able to guess the email field — but missed the phone number field.

postimg_firefoxwbd_07

6) Find all the CSS styles that affect an element.

For most fairly-proficient CSS developers, it’s quite easy to find the exact selectors that style an element’s properties – fyi: #selector { property: value; }. This is especially true when you’re the original author and/or the styles are contained in one stylesheet.

But what if you were working on someone else’s project… and the project in question has 1,000+ lines of pure CSS goodness, split into several external stylesheets (because Bob a.k.a. “Mr. Modularity” likes to keep things “simple“)? Another scenario you might encounter is being tasked to theme a content management system like Drupal or WordPress and you’re not quite sure where all the external stylesheets are.

For example, the Yahoo! home page has over 2,400 lines of CSS, spread over several external stylesheets and inline styles (Bob, you built this page didn’t you?).

postimg_firefoxwbd_08

If you’re tasked with revising this page, you have two choices: (1) look through, understand, and hunt down the styles you need or (2) decide that you’re smarter (and lazier) than that and so you use the CSS > View Style Information option of the Web Developer extension. With this option enabled, clicking on a page element opens up the Style Information panel which displays all the styles that affect the element.

7) View JavaScript and CSS source code in a jiffy.

One of the ways I troubleshoot rendering issues is by looking at how other web pages do it. JavaScript and CSS are often divided into several files — who wants to look through all of them?

Using the Information > View JavaScript and the CSS > View CSS options instantly displays all the JavaScript and CSS in a new browser tab. This has the side benefit of being able to aggregate all the CSS styles or JavaScript in one web page allowing you to use the Find tool of the Mozilla Firefox browser (keyboard shortcut: ctrl + f for PC users).

8) See how web pages are layered.

It’s often very helpful to determine which page div’s and objects are on a higher plane. Using the Information > View Topographic information gives you a visual representation of the depths of the page elements — darker shades are lower than lighter shades of gray.

 

9) See if your web page looks OK in different screen sizes.

I use a monitor size between 19 – 22 inches (wide screen). This can be problematic because many of our visitors use smaller monitors. Short of switching to a smaller LCD screen to simulate the user experience, I just use the Resize > Resize window option. It helps test whether my fluid layout works well in smaller windows (sometimes you forget to set min-widths for div elements and it jacks up the layout in smaller screen sizes), or if your fixed-width layout displays important content without user’s having to scroll.

Be sure to enable the Resize > Display Window Size in Title option to help you determine the exact dimensions, and also for documentation purposes when you’re taking screenshots of your webpages.

postimg_firefoxwbd_11

So there we are, nine ways you can employ the Mozilla Firefox Web Developer extension to better your web development experience. I don’t claim to be an expert, but I certainly know enough about the Web Developer extension to improve my web-building speed.

A Simple Guide on How to Effectively Talk to Clients

March 19th, 2009 No comments

Everyone needs a website made, but not everyone can talk “tech” like we can. From the farm owner in Indiana to the brain surgeon in Malaysia, we quickly see that employers can come from all walks of life. Learning how to carry on a compelling conversation about web development is a paramount skill that all web developers should possess if you want to keep the checks coming in. Maintaining your audience’s interest and gaining an accurate picture of what they truly need to get done can prove to be a challenging part of any web development project, but here’s a few tips that might help a bit.

Get an estimate of their computing/technological expertise.

So that you know how in-depth you have to explain certain concepts or ideas, you should first try to determine the individual’s computing/technology knowledge. This can be accomplished indirectly with, what I’d like to call, fishing questions (similar to “fishing for compliments“).

For example, you can ask in passing, “Hey, what operating system do you have on your home computer?” or “What’s your preferred web browser?”. What you’re really trying to learn is: (1) if they know the basic terminologies like operating systems and web browsers, (2) if they have any experience with computers and the internet, (3) their tech savvy-ness, (4) how and why they use IT. A person using Linux probably knows a thing or two about computers and Mac’s are generally appealing to artists, designers, and musicians.

Other fishing questions are:

  • What do you already know about search engine optimization?
  • Do you use Adobe Photoshop (or a similar digital-image editing software)?
  • What are some websites you frequent on your spare time?
  • Do you subscribe to any RSS feeds?
Don’t underestimate a person’s knowledge.

You know that colleague who insists on explaining to you the difference between HTML and (X)HTML when you’ve just finished a strict-doctype XHTML website? Don’t be that guy. People don’t like to be treated like they’re stupid, and not being able to understand a person’s knowledge is a sure-fire way of landing yourself on his or her bad side. If you’re unsure of their grasp on a particular subject, don’t assume they don’t know anything, ask fishing questions and judge by their reactions whether or not you’ve explained enough.

Use actual examples.

When talking about a web project, it helps to have a computer with an internet connection nearby so that you can both communicate look at stuff that’s on the internet. For instance, if you’re trying to determine what look-and-feel a client wants for their website (i.e. “web 2.0?, dark, clean, etc.) you’d get a more precise answer if you were to show examples of websites that may have a similar theme that they described.

Keep an emphasis on the bottom-line.

People may not understand what SEO is, or how it’s accomplished, or why valid mark-up matters when trying to achieve a search engine optimized site, but if you talk in terms of results, they’ll be inclined to keep listening. For example, trying to describe the importance of standards-compliant XHTML, you can say: “standards-compliant XHTML ensures that the website’s mark-up is valid and supported by most modern web browsers which in the end means less maintenance and fewer customer support due to browser-rendering issues“.

Keep it simple.

Sometimes we have a tendency to overwhelm employers with technical jargon and over-explanation because we want to show them our knowledge and expertise. There’s no need to explain how you’re going to mock-up the web design in Photoshop (layer by layer, in excruciating detail). Most probably, they don’t care and you’ll only risk complicating things and adding to the client’s anxieties about a topic they’re not well-versed in.

Encourage questions.

It’s always good to figure out any questions or needs for clarification as early as you can to avoid dissatisfaction at the end. Give off the attitude that you’re always willing to answer questions and that no question is too simple or silly. If you have the luxury to meet with a client in person, you can do this by judging their facial reactions to the things you say. If they seem confused, ask: “should I explain further?”. If you’re meeting remotely (emails or phone calls), regularly say things like: “I’d be more than happy to answer any questions you may have”.

Talk using familiar analogies.

A great way to relate information to employers is by using scenarios and situations that are pertinent with their background. Be creative, make analogies funny, and most of all, use it to relay complex concepts. To illustrate with a satirical example: if you were talking to a basketball fan, you could say “using tables instead of div’s for page layout is as bad of a decision as picking Michael Olowokandi over Michael Jordan on your fantasy basketball roster because…“.

Be yourself.

Don’t pretend like you’ve worked on hundreds of websites and that you’ve been doing this for 15+ years… if you really haven’t. If you look uncomfortable or unsure of yourself, it gives off the impression that your trying too hard to impress or appear knowledgeable in the subject. A lot of web designers and developers nowadays don’t hide the fact that they are small, young, and playful. When working in an industry that’s complex and intimidating to outsiders, it’s a welcoming relief to find people that are normal. It can prove to be a plus when you don’t obfuscate the fact that you’re just starting out in the business. It’s easier to talk to a person who’s honest, sincere, and up-front then someone who appears to be B.S.’ing you all the time

Categories: Others, Tips and Tutorials Tags:

10 Web-Building Resources You Should’ve Already Bookmarked

March 19th, 2009 No comments

I spend a large portion of my day connected to the internet, and as a result I’ve amassed a large collection of websites and links pertaining to web development. Here’s 10 of my favorites:

web_building_resources_01.jpg

1. Web Developer’s Field Guide

A collection of links that web builder Wade Meredith has created over time. A big resource list, and I go to it from time to time when I need some web development inspiration. Some categories include “inspiration”, “color theory”, “DOM”, “blogging”, and much more. The Web Developer’s Field Guide stemmed from another website by Vitalie.Friedman.

web_building_resources_02.jpg

2. mycelly.com’s Nice and Free CSS templates

Here’s 12 common CSS-based layouts for when you’re in a rush or just starting out as a CSS developer. It’s great to know and understand basic layout styles such as two/three column fixed widths, two/three column fluid widths, etc. and there’s no better way to learn than to study pre-made templates.

web_building_resources_03.jpg

3. Cheat Sheet Cheat Sheet by foxinni

A collection of cheat sheets organized in 5 categories: Server-side (PHP, MySQL, Ruby On Rails), Client-Side (JavaScript, CSS), Blogging (Word press, Movable Type), General, and others.

web_building_resources_04.jpg

4. CSS Sandbox

A web application that let’s you experiment with styles in real-time. Great way to preview what styles will look like.

web_building_resources_05.jpg

5. Resources For Web Design

A mega-huge list of Web Design resources. Some of the topics include: HTML Tutorials, CSS Tutorials, Browsers, Search Engine Optimization, Perl tutorials, and much more.

web_building_resources_06.jpg

6. DEVLISTING

Another large list of Web Development and Design links.

web_building_resources_07.jpg

7. FreeTechBooks

A website that lists free online books (e-books), textbooks and lecture notes on the topic of computer science and programming. A couple of e-book examples: “Safe-Guarding Your Technology” and “Computer Animation: Algorithm and Techniques“.

web_building_resources_08.jpg

8. MiniAjax

Quoted from the MiniAjax Website: “nice looking simple downloadable dhtml and ajax code.” Some of the code listed are: “Digg-like spy script”, “Reflection.js” which allows you to add a reflection effect on text just by assigning it a class=”reflect”, and “Draggable Content” which allows users to drag page objects such as div’s around the web page.

web_building_resources_09.jpg

9. PSDTuts

One of my favorite blogs/tutorial sites. Showcases very high-quality Photoshop tutorials. Great instructions, great content, and I follow their tutorials to sharpen and hone my Photoshop skills — I’ve been using Photoshop for close to 8 years, but it’s always good to practice to keep yourself up-to-date with current techniques.

web_building_resources_10.jpg

10. CSS Remix

A growing collection of spectacular web designs to inspire you on your next design project.
How I Come Across These Links

I mostly come across links such as these through social-bookmarking sites such as Digg.com and del.icio.us. A majority of these links I came across by using StumbleUpon (an addiction of mine!). Also, I get links from my co-workers and friends (usually through their Gtalk messages).

Eight Tips on How to Manage Feature Creep

March 19th, 2009 No comments

Feature creep, also known as scope or requirement creep, refers to unforeseen requests for additions and changes that are outside the project scope. It typically happens due to inadequate requirements gathering, poor initial planning, and an unclear protocol for change implementation, among other things.

leadin_10

In this article, I’d like to discuss eight tips and suggestions, based mostly on my experience, to help minimize and manage the effects of feature creep in your own projects.

 

1. Accept that feature creep will happen.

That’s right. Here you are thinking that this article’s all about preventing feature creep. On the contrary, I feel that it’s a natural part of any project-based work. Acknowledging this eventuality will allow you to be prepared when it finally rears it’s ugly code-retrofitting, design-wrecking head. Anticipating unforeseen changes in your plans forces you to be more adaptable, and promotes the development of a solution that’s flexible and malleable to your client’s ever-changing needs.

2. Commit enough time to requirements-gathering.

Easy enough, fairly common sense, but we’re all guilty of rushing the planning phase of projects. Maybe it’s because of time and budgetary constraints, or our eagerness to show our clients tangible results, or the assurance we get that the project’s in the bag once we start it (and won’t be given to competition). Skimping on this step can lead to agony at the end, and can take the form of unanticipated feature requirements because of our failure to establish the client’s actual needs. Take time to survey the people involved, observe and shadow employees to see how they might use the system you’re developing, and get an accurate estimation of the technical expertise the organization has. An ounce of prevention is worth a few thousand lines of code revision.

3. Giving a hand might cost you your arm.

If you constantly give in to changes, you might be get more of them in the future. Try to set boundaries of what is and isn’t appropriate to revise, this not only prevents unneeded requests for changes, but gives the project strict quality-control guidelines. When you do decide to comply to un-scoped demands, make sure that you indicate that you’re doing something out-of-scope, and that this can cause delays and additional financial requirements. This may make them re-consider the value of the feature requested, or at least give you an extension in time and budget.

4. Be the devil’s advocate when changes are requested.

You were hired and assigned to the project because of your knowledge and expertise in the solution required. If a client asks for a Flash-based navigation menu, it is your expert obligation to convince them that the CSS-based menu you developed is a much better solution. Don’t be afraid to contradict unwise feature requests; providing well-formed reasons will assure them that you know your “shizznit”, and they may actually allow you to proceed as originally planned.

5. Be task-oriented, not vision-oriented.

Be clear on what it is, exactly, you’re developing for them. Don’t promise a grand, exciting, but ambiguous/ambitious end result. Instead of giving broad generalizations such as “I’ll be developing a search engine optimized website”, try to outline the deliverables that you will provide, such as: “I’ll be using image replacement techniques for sub-headings, creating and implementing a Sitemap.xml, submitting the site to major search engines, and optimizing page titles with relevant keywords”. This makes the project less ambiguous and prevents additional tasks, such as developing a link-exchange program to increase page rank results, which is clearly not part of your duties.

6. Shed the “Customer is Always Right” mentality.

You, more often than not, are a more qualified judge of how things should be developed. You’re not working to get a big tip at the end. You’re working (most probably) on a flat rate fee or an agreed-upon compensation. All you have to worry about is your reputation and producing an excellent solution. The employer can hate everything about you, but if you’ve provided an amazing profit-generating product, you’ll get hired back to do more. In the end, it’s more about profits and deliverables and less about how your employer loves your “reasonable personality” (because they love nothing more than making a bundle of cash or reducing their overhead due to the solution you developed). So don’t give in to unwarranted requests and unreasonable timelines simply because you want to be on your employer’s good side. Don’t feel pressured to do something that isn’t in the job description or something you feel will lead to a less desirable end product.

7. Research before committing.

Assuage the temptation to immediately accommodate a change in project scope, no matter how seemingly simple. If you think the budget and timeline can handle a modification in plans, research thoroughly on what the change actually entails before committing. For example, in a CMS development project I was involved in, I was asked if it was possible to migrate the system from our servers, to the client’s. This wasn’t part of the project scope, as the original plan was to also provide hosting for the system. I agreed to it thinking that a database export/import and file migration would take an hour’s work at most. I failed to account for the fact that our server set-up (being IIS 6.0/Windows and the client’s being Apache/Linux) and server settings were different. Suffice it to say that it took longer than anticipated and the task is still unfinished.

8. Realize that feature creep is a two-way street.

Clients and employers aren’t (purely) evil. They don’t intend to make our jobs more difficult. Oftentimes it’s our desire to please, to prove our worth, and our perfectionist mentality that can be, in part if not equally, to blame. If feature creep happens, it’s only because we allow it to.

I hope this article was able to impart some tips on how to manage feature creep. The suggestions here are based on my own mistakes with regards to allowing scope creep to affect my projects. I hope that by reading this, you have better luck in alleviating the impact that features out-of-scope can have on your timelines and budgets.

Categories: Others, Tips and Tutorials Tags:

39 Olympic Logos From 1924 to 2012

March 19th, 2009 No comments

Living in Vancouver, Canada, I’ve been seeing the logo of the upcoming 2010 Winter Olympic Games more and more around the city as the date draws closer.

I thought it would be interesting to take a look at how the design trends in Olympic logos have evolved over the years.

Noticeably, the logos seem to have changed from a monochromatic trend to a more multicolor approach in recent years.

Logo design seems to have been streamlined to simpler and cleaner shapes. This article features every logo from the summer and winter Olympic games from 1924 to 2012.

Paris

1924s

Lake Placid

 

1932w

Los Angeles

1932s

 

Garmisch-Partenkirchen

1936w

 

Berlin

 

1932s

St. Moritz

1948w

London

1948s

Oslo

Oslo

Helsinki

Helsinki

Cortina d’Ampezzo

 

Cortina d’Ampezzo

 

Melbourne / Stockholm

 

Melbourne

 

Squaw Valley

Squaw Valley

Rome – Summer

Rome - Summer

 

Innsbruck – Winter

Innsbruck - Winter

 

Tokyo

Tokyo

 

Mexico

Mexico

Sapporo – Winter

 

Sapporo - Winter

Munich – Summer 1972

Munich - Summer 1972

 

Innsbruck – Winter 1976

Innsbruck - Winter 1976

 

Lake Placid

 

Lake Placid

Moscow

Moscow

 

Sarajevo

Sarajevo

 

Los Angeles

Los Angeles

Calgary

 

Calgary

 

Seoul

Seoul

Albertville

Albertville

Barcelona

Barcelona

Lillehammer

Lillehammer

 

Atlanta

Atlanta

 

Nagano

Nagano

 

Sydney

Sydney

 

Salt Lake City

Salt Lake City

 

Athens

Athens

Turin

Turin

 

Beijing

 

Beijing

Vancouver

Vancouver

 

 

 

 

 

 

 

 

 

 

 

London

 

London

Categories: Designing Tags:

6 Things You Need for Your Web Project to Succeed

March 19th, 2009 No comments

Being at an age where I’m just beginning to carve my path in the real world, I tend to have many peers and co-workers who constantly think about making an income besides sitting in front of the computer eight to ten hours a day in a windowless room.

leadin

I’ve had thousands of conversations about initiating startup companies, selling IT products or services online, creating profit-generating web applications (like a derivative face book site), and putting up blogs. Eventually, I began to see characteristics that I feel are needed in order for your own project to succeed, and I present them here.

Don’t be afraid to commit.

If you’re comfortable with your current salary and you need the promise of eating at least one meal a day (sans ramen noodles), why change it? If you can’t commit whole-heartedly to your endeavor, things won’t happen, and you’ll constantly put your project second on your to-do list (i.e. right below playing “teh gamez”). In addition, when you have other obligations that take up the majority of your day, you won’t be able to commit the time and resources needed to get things rolling. Who wants to sit in front of their computer after work to design the UI interface of your application or draft a business proposal to pitch to a small-business venture investor when you’ve already used most of your thinking and creative energy at something else?

While talking to a friend of mine who’s in the midst of developing a startup company, I heard the ultimate startup killer, “I think I’m gonna try and get a part-time job somewhere, just to help pay the bills”. To which I responded with, “There isn’t a better motivation then ‘hungry’”. Put yourself in the situation where there’s no other alternative to success. You can ask anyone who knows me, one of my most-used phrases is a rip-off from Nike, “just do it”. Take a leap of faith in your ability to succeed and overcome the obstacles of your projects.

I’m not unnecessarily asking you to quit your day job (that would be hypocritical of me), but you may have to consider (a) scaling down your project to something you can manage on a part-time basis, (b) adjusting your commitment to other duties and responsibilities, or (c) coming up with something else that you’re equally passionate about, but can manage do to in your spare time.

Before doing anything, set your goals and develop your idea in a presentable way.

Right on the onset of your project, there should first be a clear definition of goals and what it is, exactly, you’re peddling. When you’re asked about your idea, you should be able to respond in a concise, clear, and marketable way. If it takes more than five minutes to describe your idea, it says that the concept is either (a) too complex — so you should consider simplifying, (b) you’re clueless as to what needs to happen — so you should develop your ideas further, or (c) a combination of both.

Whether you’re talking to an acquaintance about your idea (i.e. a random person you met at the bars) or pitching it to a potential investor, you should always be prepared to cover these questions:

  • How do you describe your project in two to three sentences?
  • Who are you selling to and what’s your plan-of-attack to reach and market to them?
  • Why would people attain services or products from you, or how are you different from what’s already out there?
  • Who are you working with, and how does it compliment your skill set? In other words, do you have the right people to make it happen?

Besides helping you conceptualize your idea in a more graspable way, these points give your audience the basics of what you’re trying to accomplish, and allows them to comment/suggest things constructively.

Avoid going solo.

There are several reasons why a single founder is bound to fail. For one, hard decisions are going to be tough to settle without another person (or two) calling the shots. Things won’t happen and there will always be impasse’s between you and yourself.

Also, there won’t be enough diversity in generating ideas and problem-solving processes. If decisions were made in a group, person A’s idea of “let’s make a myspace derivative… only we give the user even more freedom to customize their page” might be swayed by person B’s more even-keeled reasoning.

Additionally, with a partner, you can motivate each other to keep things going, akin to having a workout buddy to force yourself to go to the gym.

But there’s the other extreme, and it’s the “too many cooks/chiefs/shot-caller” team. This runs into the problem of things being argued constantly, a lot of profanity-slinging, and important decisions not being made in time.

A good-sized decision-making team (drawn from observation and experience) is two to three diverse (but like-minded in the end result) individuals. Personally, I believe a three-person team is the way to go because there won’t be any ties when issues are being decided upon.

For example, I, being technical, simplistic, and lacking business/marketing sense, would choose a more open-minded, “full-of-big-ideas”, business-savvy peer to be in a startup with. Then, I’d pick someone that falls in the middle, someone I’d dub “the mediator”, the person who’s in between the two extreme personalities. We will all have varying skill sets and personalities that compliments each other, and we each “fill in the blanks”, so to speak, of what the other partners lack.

Hire (and pay) well.

When your startup relies on other people (programmers, graphics designers, business school MBA grads), you have to pick the right people, and once you do, you have to keep them on the payroll. Being a cheapskate when it comes to human resources will cost you a lot in the long run. How would you expect employees to commit to developing your idea when you won’t commit to keeping them on board? When your employees jump ship, you’ll be stuck in the water. Your success hinges on the people working with and for you.

Don’t make money your sole goal.

You have to be passionate (borderline obsessive) about your idea. You can’t be in it just to make a boatload of cash. Look at profit as just one of the benefits of accomplishing your project. If you’re not passionate about your plan, come up with something else, because this shows your lack of interest (and most probably your lack of expertise) in your chosen area.

For example, I’ve been trying (for almost two months) to launch a blog that my brother and I co-founded (about consumer-related topics such as mobile phones, PDA’s, cars, etc). Although these are things I’m knowledgeable and deeply involved in, I lack neither the extreme fervor to get it up and running, nor the expertise that, say, a professional consumer technology editor working for a magazine, has. With Six Revisions, it took me two days to launch, design, set-up, and start publishing stories. When you follow your passion instead of chasing after the dollar bills, things happen quickly and successfully.

Be confident and unyielding, but listen to what other people are trying to say.

You have to believe in your idea, you should have the mindset of proving your naysayers wrong… but always listen to what your peers have to say. Believe it or not, other people are smart, reasonable, and experienced too. Don’t miss out on an angle that you failed to see, or make a mistake that your super-PHP-expert friend warned you from the start about SQL injections — listen keenly and avoid the temptation to shut them out just because they’re not saying what you want to hear. If you feel their criticisms or suggestions are wrong or won’t work in your case, simply say, “Thanks for the input, but I think I got it”. This says that even though you’re not going with their idea or suggestion — it still indicates that you appreciate their input and that you’re always open to any ideas they may have in the future. If you shut out these valuable resources, in the end, you’ll have no one to else to blame but yourself.

All in all, I think these are things you should keep in mind and try to have when you’re thinking of that next big project that will oust digg.com’s spot in the social bookmarking arena. My biggest suggestion is to believe in yourself and don’t doubt your abilitiesif you don’t think it’ll work, I can almost guarantee that you’ve killed your idea right there.

7 Interface Design Techniques to Simplify and De-clutter Your Interfaces

March 19th, 2009 No comments

What is simplicity? Simplicity is the quality of being natural, plain and easy to understand. It is not surprising then that simplicity is often thrived for in user interface design. Most people naturally dislike complexity in devices and software. Yes, some people find joy in figuring out how something works, but for most of us, being unable to operate a device leads to wasted time and frustration, and that’s not a good thing.

If you can take a complex device or a piece of software and somehow rearrange, reorganize and redesign the interface to make it easy to use and understand, then you’re well on the way to delivering a better user experience.

In this article I’m going to talk about 7 practical techniques that you can utilize in web design to make your websites or web applications simpler and less cluttered.

1. Modal windows.

I’m sure you can remember the days before pop-up blockers were introduced into web browsers, when you had to fight a swarm of little windows that all too often decided to pop up over the top of your browser window, seemingly with the sole purpose of annoying you. Nobody liked those pop-up windows, and blocking technologies were introduced to stop them. But today, we’re seeing a new breed of pop-up windows on the web that are a lot cleaner and work a lot better at their intended purpose. These are modal windows.

Modal windows are like pop-up windows, but instead of appearing in a separate browser window, they appear right inside the current one, over the top of the content. Modal windows require interaction to proceed, so the content below is usually darkened to indicate this, as well as to block out the distracting noise of the content and shift visual focus on the window above.

So why would you use modal windows and how do they simplify your interface? Well, if you look at the alternative, their purpose becomes much clearer. The alternative to using something like a modal window is usually to load a new page. For example, some sites have a settings page for your account. When you click on the settings link, you’re taken to a new page. But what if there were only a few settings options — is it really worth redirecting the user to a new page?

In a lot of cases, things like settings, edit boxes and login forms can be displayed in a modal window over the content. This saves the user a return trip to another page. It also lightens the load on the web server as it has to deal with fewer requests.

actionmethod

ActionMethod, a project management app, displays modal windows throughout the application. Here’s the Appreciation form.

2. Hover controls.

Putting fewer things on the plate would also make the dish easier to swallow. If your application has many controls, your users will need to scan through most of them to find what they’re looking for. Chances are, some of the controls are less important than others, and some of the controls are used much less than others. The simplest thing you can do is tuck away and hide these controls from the default view.

A clever way to do this is to hide the controls, but then show them when the user is hovering over certain areas. These are hover controls. For example, Twitter, a popular micro-blogging app, displays a feed of what everybody on your follow list has recently said. Each message is encapsulated in its own little box. There are two actions you can perform on each message: add it to your favorites or reply to it.

Displaying the favorite and reply buttons on all the messages would lead to clutter. You’re not likely to want to respond to every message in the feed, and even less likely to want to add all of them to your favorites. So Twitter only displays the controls in the right context — when you hover over the message. This leads to a simpler interface and no loss in functionality. There is a danger of new users not noticing these controls when they’re hidden; however, a lot of people tend to mouse over things they’re looking at, so given the hover areas are large enough, these controls are likely to be discovered quickly.

Twitter shows the add to favorites and reply buttons for each message as you hover over it.

3. Controls on demand.

Another way of hiding things is to utilize Javascript and display a set of controls when the user clicks somewhere. For example, you may have a search box on your site that allows for some custom filters or advanced searches. Instead of showing these options by default, you can hide them away and make them accessible via a button at the end of the search bar. Clicking on this button could reveal the set of options or filters. This means you retain the advanced functionality for those users who need it, and at the same time simplify the interface for people who just need to use the simple search.

Not everybody uses some of the more advanced or specialized controls on your site. By hiding them, you’re making the interface cleaner and easier to understand because new users have fewer elements to process and figure out. Selecting what to hide and what to keep isn’t an easy task though, and it is your job as the designer to find a suitable balance.

MobileMe

Kontain, a blogging app, provides advanced search filters for their search, concealed in a drop-down menu at the end of the search bar.

4. Expanding forms.

I’m sure you’re familiar with the file upload field we often see in web forms. It’s usually a little bar with a file browse button by the side. Imagine a situation where the user is likely to upload several files at once though. You could display several file upload fields, but that’s not ideal because it will clutter the interface and there is no way to tell how many fields the user will need. A great solution in this case would be to use an expanding form.

Once the user uploads one file, another file upload field will appear underneath, ready to accept more. You can implement the same technique for any other input field. For example, maybe this form needs a bunch of email addresses for people you want to invite to a team or some other purpose. Instead of having a lot of text fields, you could just have one or a couple, and then as the user fills them in, new ones are created underneath. Expanding the form in this way is a great way to save space and simplify your interface.

 

Gmail only displays one attachment field when you compose a new message. You can click on the “Attach another file” link to open up more when you need them.

5. Labels inside input forms.

Forms can get complex fast. You have text fields, labels, text areas, drop downs, checkboxes and so on and so forth. What’s more, filling out forms isn’t usually very fun, so speeding up the process and making forms simpler will make them less daunting and easier to use. One technique you can use to make the forms appear simpler, is to move the labels from outside of the input areas inwards. So, instead of showing a label next to that text field, show it as a pre-filled value inside the text field.

This cuts down on space considerably, shrinking the overall size of the form. Smaller things appear simpler, so the form should look easier to fill in. It may not be possible to do this for more complicated forms where you have a variety of input types (checkboxes, radio buttons, drop-downs), but if you have a few text fields it is well worth considering, e.g. a login form.

Now, there is a downside to this method, which fortunately can be addressed with a more thorough implementation. When the user first loads the page, they’ll see the fields and will be able to read the labels. Once they click on a field, most forms like this will hide the label completely, allowing the user to type in their input. But what if the user prematurely clicks on a field, and then forgets what it is they were meant to be typing? They may need to click away from the form to get the label to appear again (hopefully).

To address this, instead of completely hiding the label, you can dim it when the user clicks on it, and then hide it completely when the user starts typing.

MobileMe shows labels inside input fields on their login screen, and then dims them further when you select a field.

6. Icons instead of text.

To achieve simplicity in interface design, you need to reduce and take away all the unnecessary or seldom used parts. These not only include controls, but can also be things like text labels. If your interface has a lot of labels, look at it and ask yourself — are all these labels necessary? Are most of them simply stating the obvious? If a label is pointing out something which is obvious given the context of that item, then you don’t need that label — it’s obsolete.

To give you an example of this, think about posts in a blog. Under each post’s headline you may have things like date and author. Attaching labels before each one like “Author:” and “Date:” may not be needed. When somebody sees a name and a date under an article’s headline they are very likely to figure out that this is the author and that’s the date. The context, as well as the format that they’re used to from reading other blogs, gives your users all the clues they need to instantly understand the meaning behind the data. Stripping away those labels will give you a cleaner interface.

In some cases where leaving out a label won’t work, you can replace the label with an icon. An icon has some advantages over a text label. It takes less space. It’s easier to focus on as its color and distinctive shape attracts the eye easier than text. In some cases the meaning can be conveyed just as effectively as text. For example, if you have a label called “Tags:” followed by a list of tag links, you could replace the label with a small image of a tag. Provided that you have a tech savvy audience, the meaning in this case should remain just as clear.

Of course it won’t work for all cases, and if there is a danger of being ambiguous, you should play it safe and use a text label. Having said this, there is no reason to pick one or the other exclusively — you can benefit from the attractive eye-catching properties of icons together with the clarity of text by using them together; although in that case you’ll be trading off space.

highrise

Highrise, a CRM app, uses a tag icon in place of a text label before a list of tags.

7. Context based controls.

There are a couple of approaches you can use in interface design that relate to context and consistency. One dictates that you should keep controls consistent throughout your applications or websites to ensure that people know where everything is and don’t get confused. The other approach is to change controls or navigation based on the context of each page or window. The context based approach is one where you display only the stuff the user needs to complete the task they’re working on in that particular context.

A good illustration of the two approaches can be seen in the recent redesign of the Microsoft Office interface. Office 2003, as well as its older siblings, followed the design principle of keeping things consistent. You had a bunch of toolbars displayed on the screen at all times, and these didn’t change whether you were working with tables, graphics, text or pictures. Microsoft redesigned this interface for Office 2007 using a context based approach. At the top you now see a ribbon — or a set of tabs. When selected, each tab displays a set of controls relevant to any given task, be it proofreading, working with graphics, or simply writing.

The context based approach allows you to show fewer controls at any given time, but at the same time, more controls that are relevant to the task at hand. I wouldn’t recommend using a context-heavy approach for general web design because for most websites people expect to see consistent site-wide navigation. This is because every website is different, and it would make the browsing experience much harder if all the individual pages on a particular site were different too.

Having said this, this can be utilized for web applications because they’re not just simple websites — they’re pieces of software that live in the cloud. People are likely to spend a lot of time on a web app and will have more opportunity to learn how it works. The complexity of some web apps means that you really need to utilize the context based approach, because if you don’t, there will be too much on the screen at any given time for anyone to process. By showing only a few relevant controls for a given task, your users can figure out what to do in much less time.

 

Freckle, a time tracking app, has a switcher at the top of their main toolbar. It switches between time input controls and report controls, only showing one set at a time. This makes sense because you’re either inputting time or making a report — not two things at the same time.

To conclude…

“The simplest way to achieve simplicity is through thoughtful reduction” – John Maeda, The Laws of Simplicity.

Making your interface smaller, hiding advanced functionality and taking out the obvious is the path to a simpler interface. Along this path you’ll face many obstacles. For every feature you hide or take away, there will be people who complain and demand that you bring it back. But every one of your users has different needs and uses your web app or website in a different way. If you listen to all the feature requests and needs, and go as far as addressing and implementing them all, you’re unlikely to arrive at the zenith of software design. More likely, you’ll stumble into a deep pit of bloat from which it’s almost impossible to climb out.

Once you add a feature, it is very hard to take it out because people will begin using it and some will depend on it. Because of this, make sure that every feature, and every interface element you add makes sense and adds real value to your product. More features means more controls and content. More controls and contents makes it harder to make the interface simple and clutter free.

Simplicity is all about reducing and reorganizing the complex into small and manageable. If anything, you should aim to take away, rather than to to add. A product with fewer buttons isn’t necessarily less powerful — it’s likely just better designed.

Categories: Designing Tags: ,