User-Proofing Ajax

Posted in Online Enterprise by Gautam on Dec 31st, 2007

We’ve all felt the clean slickness of a well-oiled Ajax app. But think back to the last time something went wrong while you were using an Ajax app: how did it feel?

Chances are it felt awkward and foreign. You probably stared at the little spinning “wait” graphic and wondered whether or not you should reload the page. You might have glanced at your watch and thought that the app was taking its sweet time—or maybe you wondered if your request had been made at all. You didn’t know what was going on—and you’re a developer! Imagine what a non-technical user goes through every time there’s a hiccup.

When good apps go bad

Ajax is handy because it avoids needless browser behavior such as page reloads, but it can also be dangerous because it avoids useful browser behavior like error handling. Gone are the “Server not found” error messages and that familiar escape hatch, the Back button. When Ajax circumvents useful behavior, we have to make sure we replace it as well as we can.

Perfecting your backup plan

One of the cardinal rules of client-side scripting is to accommodate users who have scripting turned off. Ajax implementation makes this easy: when hijacking (or “hijaxing”) a link or form to trigger your Ajax functionality, make sure that link or form resolves to a valid URI that will carry out the intended action using the traditional method. (Line wraps marked » —Ed.)

form action=”traditional_action.php” method=”post”
onsubmit=”perform_ajax_action(); return false;”
If you take this approach, script-enabled browsers will carry out your Ajax actions and other browsers, recognizing neither the onsubmit event handler nor its return false directive which skips form submission, will submit the form normally and fall back to the traditional form action.

Keeping your users informed

Much Ajax functionality exists to bypass the standard browser interface, so we need to replace the core usability safeguards that your users are accustomed to. First, we need an error handler that reports errors to your user when the browser can’t. The way in which you deliver the error reports depends on your individual application; in my examples, I put the error message in a hidden div that appears when an error occurs.

The next type of error to address is the application-level error. These errors occur when something goes wrong within your application, and though the way in which you handle these errors depends on your specific application, there are some basic principles to keep in mind.

Let the cycle be unbroken

Most importantly, the Ajax communication cycle must be preserved. Your server-side execution must complete and return a valid XML document—otherwise, you leave the browser (and user) hanging, with no clue as to what’s happened. If your server-side script crashes, the error message will be lost and your application will silently fail. That’s why it’s essential to perform assertions and boundary checking on anything in your code that could crash your program, like this PHP snippet which logs an error and exits when a file can’t be opened.

Communicate errors

Once your server-side program completes, you should check for success and report any errors to the user. The XML document sent back from the server should show error reporting—even something basic with just a code and a message.

In this example, the XML document has a success element, which contains the value “1” for success and “-1” for failure. The XML document also carries an error element, which contains the error message to be reported. The server-side script performs error checking, and returns valuable error messages to keep the user informed, and guide him or her through the user process.

Solving the real Ajax killer: silent errors

What about silent errors like timeouts and dropped packets? When confronted with a web application that appears to have mysteriously ceased to function, users generally respond by losing patience, hitting the Back button, and trying again. This probably won’t be the ideal case for your Ajax app: with its lack of complete page reloads, the Back button will take the user back multiple steps in the user process. If the Ajax app is well-designed, no information should be lost—after all, you’ve been saving data to the server the whole time—but it’s still an extra step for the user that can be avoided.

How? Keep your user informed. Keep track of the time elapsed since you made your request. If a longer-than-reasonable amount of time goes by before you get a response, pop up a warning dialogue informing the user that something may have gone wrong. Explain the situation and offer them options: at the very least, give them a choice between waiting a little bit longer and reloading the page. It’s a simple but effective catch-all error handler that maintains user confidence in your application.

This second example puts this idea to use, letting you set a server-side delay to simulate a packet delay. If a request is made and more than 30 seconds go by with no response, a dialogue pops up asking the user if they’d like to do something about it. Try varying the server-side delay time to see how it feels. Pretend you’re on a dial-up connection and are very used to dropped packets. You’ll be surprised at how appreciative you are of the application that’s sensitive to your frustration.

Only the beginning

This is by no means a comprehensive guide to error handling with Ajax. There are many other ways to use Ajax to enhance your application’s user experience, and many more problems and solutions will undoubtedly surface as Ajax grows and matures. Whatever methods you use, remember that Ajax is meant to create a graceful, cohesive user experience, so make sure your error handling fits with that principle and complements your application. The more graceful and cohesive your error handling, the more confidence your app will inspire—even when it’s breaking down.

The Non-Techie’s Explanation of HD Radio and Three Reasons Why You Should Care

Posted in Gadget Updates/News, Reviews by Gautam on Dec 29th, 2007

Maybe you’ve heard a friend talk about HD radio. Or perhaps you’ve heard one of those radio tag lines, “brought to you in crystal-clear HD digital.” And you’ve wondered to yourself, what the heck is HD radio?

The simple explanation is that HD radio is digital vs. conventional radio which is analog.

What is the technical difference between digital and analog? It doesn’t matter. The only thing you need to know is that digital produces better sound because there is never any interference-those annoying snaps, crackles, hisses and pops you often hear with conventional or analog radio.

HD or digital radio improves the sound of AM broadcasts to the point where they are nearly as good as today’s FM broadcasts. And it improves FM to the point were you may think you are listening to a CD.

Why you should care

Reason #1: Clarity of sound

Bright, clear, interference-free sound is the first reason why you should care about HD radio. But it may not be the most important reason. While it’s nice to be able to hear your favorite AM or FM stations in clearer, more “hi-fi” sound, the most important reason to choose HD radio might be because it allows broadcasters to pack more programming into the same frequency. This produces what broadcasters are calling HD2 channels.

Reason #2: Those hidden channels that lie between your local stations

While theoretically at least, broadcasters could pack a many as seven or eight programs into the same frequency, few, if any, have gone beyond adding a second HD channel. But the way they’re using these second channels is still pretty cool. For example, we have an easy-listening station that uses its HD2 channel to broadcast all blues. A station in Albany, NY, broadcasts oldies on its HD1 channel and smooth jazz on its HD2 channel. And a station in Los Angeles uses its HD1 channel for an adult contemporary format and broadcasts Pride Radio on its HD2 channel.

And here’s the really good news — these HD2 channels are currently commercial-free. This means you can listen to a new world of programming all day without hearing a single radio spot.

To put it another way, there’s a lot happening out there in radio land that you’re missing.

Reason #3: Texting

The third reason to care about digital HD radio is that it permits texting. This means that when you’re listening to a station on an HD radio, you will see text information such as station frequency, and the name of the artist and a song being broadcast — much as you can with satellite radio, which is also digital. And this is just the start, because, in the future, broadcasters can use this same ability to transmit text information such as weather and traffic alerts or information about missing children or local emergencies.

What else might the future hold?

While it is difficult to foresee exactly what broadcasters will be doing with HD radio in the next two to three years, it is possible to make some educated guesses. One is that they will add additional HD2 channels to broadcast extraordinary programming such as concerts and other special events. It is also easy to imagine that some of these may be pay-per-listen. In other words, you may have to pay to hear a special reunion concert by one of your favorite groups, but it will still be much less expensive than paying to see the concert.

What do you need to hear HD radio?

HD radio is free, just as it is conventional broadcasting. However, you will need an HD or digital radio. There are a number of these now available, including tabletop models, component HD radios and HD car radios. The tabletop units range in price from $99.95, to nearly $600. The component HD radios are priced anywhere from about $250 to several thousand dollars. HD car radios are currently the least expensive way to experience HD radio as they can be purchased for as little as $129 — or for even less if your shop carefully.

It is my opinion that HD radio is here to stay and that it has a bright and exciting future. And this just might be the ultimate reason why you should care.

To learn more about HD Radio, including information about HD2 channels, HD stations and HD radio reviews, be sure to go to http://www.hd-radio-home.com.

E-learning Solutions

Posted in Online Enterprise, Technology Updates by Gautam on Dec 28th, 2007

The importance of e-learning and e-learning solutions in India cannot be ignored with the growing pool of highly qualified individuals. People across the world have saved time and money and students have managed to get easy accessibility irrespective of their place of residence. With e-learning solutions, businesses have trained their people online and students have gained higher education degrees at respectable universities and colleges without any expenses on traveling, accommodation, food and high fees for tutors.

With easy access, e-learning programs have become more complex. New trends like the expansion of applications are developing that require constant training. Blended e-learning is also becoming the latest trend. To facilitate such programs, companies are providing effective e-learning solutions. They develop your custom-made integrated e-learning content solutions in many languages and multi-interactive formats.
The demand and the scope of e-learning solutions in India has increased drastically. Consultants at e-learning companies with their expertise will understand your requirement, lay down a proper plan accordingly and will use the right resources which will in turn provide a productive output. With their expertise in e-learning solutions, companies communicate the messages you want to be delivered, in the best way for learners thus creating an engaging, unique and highly interactive user experience. They make use of the latest and the best technology and ensure that the solution you get it up to the mark keeping in mind your preferences and making it user-friendly.
Some e-learning companies also provide trainers to guide your learners through a smooth process of learning. They assist in installing virtual classroom software for broadband and Internet, enabling multimedia technology.
With e-learning solutions, you will end up saving a lot of time and resources. These solutions are cost-effective when compared to the solutions provided by other developed nations and also assure of the same level of quality. Infect, many e-learning solution companies in India possess the ISO and the CMM quality standard.

India has a robust cellular network and broadband Internet to facilitate easy connectivity with the rest of the world along with the ability to provide service round the clock. India has therefore become a good option for many to get offshore e-learning solutions. High quality, e-learning solutions are being developed in India supporting various sectors. Industry watchers estimate that because of its advantages, India is bound to grow in stature as the hub for e-learning programs.

How to Grok Web Standards

Posted in Online Enterprise, Technology Updates by Gautam on Dec 27th, 2007

Many web designers come to the web with a background in the graphic arts. We think in pictures, not in code. When we first begin designing for the web, we’ll use HTML and CSS crudely, as a means to an end—a method of arranging pretty boxes in space—without grasping the true nature of the box itself or what it contains. Altering that strictly visual mentality is the highest hurdle to overcome when a graphic designer first dives into semantics and web standards. For the visual designer, really understanding web standards means you’ll have to change the way you think about design.

The word “grok” comes from Robert A. Heinlein’s Zen-hippie science fiction opus Stranger in a Strange Land. It’s a verb from the Martian language that means something along the lines of “to understand completely.” To grok something is to achieve a deep, intuitive comprehension of it. To truly “get” web standards, you have to understand them as more than a means to an end, more than simply an alternative method of producing a visual design.

To grok web standards, a visual designer has to modify the way his or her brain works and remap those imaginative neurons along new pathways. You can’t channel your creative energy solely into the appearance of your web pages without thinking about their underlying structure. Presentational thinking leads to presentational web design, to the detriment of your content. Instead, you must also learn structural thinking to support that content and let it live unfettered. As a standards-savvy web designer, you must diversify your approach to design problems, becoming equal parts writer, engineer, and artist.
Think like a writer

Writers trade in ideas, using words as tools to lend those intangible thoughts just enough mass that they can be transported into the mind of the reader. The substance of a word is woven from layers of meaning: definitive, connotative, contextual, and subjective. A writer must understand what words mean on multiple levels and choose the words that will best communicate the idea.

Semantics is the study of meaning in language. Web standards advocates have borrowed the term from human linguistics and applied it to computer markup languages. Every element in HTML carries an inherent meaning and purpose, which it passes along to the content within it. The semantic value of your markup should align with the semantic value of your content.

To understand semantics in web design, think like a writer. Discern the meaning and purpose of your content, the gist of the concept you’re trying to get across. Then use markup tags as you would use words, choosing the right ones to communicate your ideas.
Think like an engineer

Engineers create structures and devices that have to meet certain criteria, perform certain functions, and serve certain purposes. Seams must stay together, walls must remain upright, gears must mesh and turn. An engineer will explore the problem and devise an efficient solution, then select the parts and materials that will hold up under the strain of use. They will consider consequences and anticipate potential difficulties, taking steps to prevent disastrous failure.

When you construct a web document, think like an engineer. Your inner writer has selected an element because it has a certain meaning, while your inner engineer must consider the mechanics of that element and the structural integrity of the document it resides in. Markup gives content added meaning, but it also braces that content for use, gives it a supporting structure so it can do real work.
Think like an artist

Artists craft transformative experiences through the interpretation of beauty. They are inspired by the world around them and want to spread that inspiration to others. The design of a website is a vital facet of its usefulness, communicating ideas and relaying information in an attractive and intuitive way.

Visual designers already have the artsy thing down. Thinking in pictures comes naturally to us; it’s not something we force ourselves to learn. But the web is not strictly a visual medium, it’s a textual one, something meant to be read and used, not only looked at.

When you design for the web, first think like a writer and an engineer and then begin thinking like an artist. Appeal to the senses of your sighted viewers with color, typography, spatial arrangement, and imagery, but leave the content structure unsoiled and the markup undamaged. Separating presentation from content and structure allows your inner artist to do his thing without stepping on the toes of the writer and engineer.

If at first you find CSS restricting your creativity then you probably just need to learn more about CSS. Designing with CSS is no more difficult than designing with the presentational markup you may be used to; it’s merely a different set of tools. It’s a much better set of tools, in fact, specifically designed for the task. Learn CSS, figure out how it works and what it can do, read books and ask questions. Above all, experiment. In time you’ll be comfortable with the CSS tool kit and intuitively know which property to reach for when you want to achieve a particular effect.

You’ll also learn what can’t be accomplished easily with CSS and, like an engineer; you’ll spot those obstacles early on and adjust your design accordingly. Every medium has its limits and any artist learns to embrace those constraints, using the medium itself as yet another outlet for creativity. Thinking like an artist will help you find creative solutions to visual problems.
Merging mentalities

These three disciplines—writing, engineering, and artistry —are not so different from one another. Each demands creative problem solving, and though each suggests a slightly different angle of attack, the target remains the same. Cultivate these aspects of your personality, giving each one independent attention. When you’re able to think easily in all three modes one by one, you will soon find yourself thinking in all three simultaneously. The writer, engineer and artist overlap and merge, Voltron-style, to form The Designer.

Making the mental shift from presentational thinking to structural thinking will likely trigger some changes to your creative process. To think like a writer, try starting with an outline of your content before you even doodle your first thumbnail. List everything that will eventually be displayed on the page, from logo to copyright notice, and group related things together in meaningful portions. Take the time to understand your content, even if that means actually reading it. Understand the ideas you’re communicating and you’ll be better prepared when you start drawing it out.

When you hack your brain to grok web standards, you will enfold their essential spirit into your world-view. You can still think like a designer—thinking in pictures instead of code—but your pictures will become more practical. You’ll envision your page design as more than an aesthetic arrangement of decorated boxes; you’ll see it as a poetic mechanism built from meaningful components.

When you understand that content and code really do matter at least as much as design, you will become a better designer in the end. You will grok web standards, and there’s no going back.

Just what is Java?

Posted in Miscellaneous, Technology Updates by Gautam on Dec 26th, 2007

Java is a highly portable computer programming language. “Portable” is a term used to describe programs that can be run in many different computing environments and on many different “platforms” (MS Windows, Apple’s Mac OS, Solaris, and Linux are all examples of “platforms”)

It is Java’s portability that makes it such an intriguing technology. To give you an example of how this portability relates to real world features and benefits, let’s say you have a program that is written in Java such as a web browser. Normally, with a web browser application, the user is bound to the settings for the browser application and the configuration of the machine that they are using it on. So, at the office, the machine on Joe User’s desktop has one set of bookmarks, plug ins, security setting, etc. Joe’s machine at home will most likely have a different set of bookmarks, plug ins and settings. Now, let’s say Joe want to have a more consistent experience with the computers that he uses everyday. Joe could install a Java-based browser on removable writable media (such as a floppy diskette, pen drive, zip disk or CDRW) and carry his browser with him (with all the settings, bookmarks and plug ins in tow as well!)

Java is not only portable, but it is also widely known, and does not need to be interpreted (like PHP, Java script and some other and other languages). Java also does not have to be compiled on the machine it will be run on. Java can be compiled once and run in its binary form on many systems. Although there are other languages out there that are extremely portable, there are few that could stand up to Java’s “compile once, run everywhere” functionality. Java is truly a useful and feature rich programming language and is used to program many software programs on the market today.

CONFERENCING SERVICES

Posted in Technology News by Gautam on Dec 24th, 2007

In the initial span of time for the use of Internet, the terms “computer conferencing” and “web conferencing” were generally used to specify to group discussions that were conducted within a message board (through posted messages) i.e. they were not live. But with the advancement of technology, the term has grown to refer particularly to “live” meetings, while the posted message variety of discussion is called a “message board”, “forum”, or “company bulletin board”, since these days live discussions are more effective. The concept of web conferencing is one of the most efficient, easiest and cheapest means for meeting with small audience or large audiences at the same time and that too within your budget .It enables people to talk to a number of participants simultaneously and get their responses immediately.

Audio conference call service systems significantly reduces conferencing costs Tele conference calls involve telephone solutions only - no internet or web-based technology. It reduces overall business travel expenses and eliminates potential risk factors to employees. Instead of the deployment of the complete or process redevelopment or network face-lifts; a network add-on is often simpler and more effective. Conference call rates are cheap and even allow timely, productive and effective communications between employees, businesses, investors, suppliers, and customers on a 24 by 7 basis without any hassles or disruptions.

Web conferencing provides a great combination of the advantages of the Internet together with voice conferencing to enable you to carry on online meetings and events like a face to face meeting with the aid of audience response tools, visuals, and other features with ease making your events and meetings productive, more interactive, entertaining and engaging through inexpensive conference call.

Conference calling, using standard telephone equipment and speaker phones, was a new way to reach out and connect with distant clients. In the initial span of time for the use of Internet, the terms “computer conferencing” and “web conferencing” were generally used to specify to group discussions that were conducted within a message board (through posted messages) i.e. they were not live. But with the advancement of technology, the term has grown to refer particularly to “live” meetings, while the posted message variety of discussion is called a “message board”, “forum”, or “company bulletin board”, since these days live discussions are more effective. Now, companies can save significant travel expenditure by using tele conferencing – get connected with 5, 10, or 50 co-workers, clients, or customers.

One needs to have an internet connection for web conferencing. Web conferencing requires application software that enables any user to communicate with other conferencing people using internet. This application is provided by a “host” company which charges for using it. The people involved can exchange their ideas, information and data easily and the presenter can get the feedback immediately from all the people concerned simultaneously. This can be either an application that is downloaded on each of the attendee’s computers or an application that is web-based where the attendees simply have to enter a “URL” or website meeting address to enter and participate in the conference or live meeting. These web applications use either Java or Flash technology for their functioning. For many individuals and businesses entities, conference calls alleviate the unnecessary cost and troubles of travel by providing a platform to contact different people at the sane time.

The Four-Day Week Challenge

Posted in Miscellaneous by Gautam on Dec 23rd, 2007

The more you work, the more you get done, right? Well, I’d like to encourage you to take the “Four-Day Challenge.”

The problem

If you’re like most people, you’ve got too much to do and not enough time to do it. The e-mail inbox is always overflowing and the list of to-dos never ends. You always feel that twinge of guilt because you’re never spending quite enough time on what you should be. What’s even more frustrating is that the more you work, the more it seems there is to do. Argh!

So here’s the challenge: work fewer hours.

How to make it happen

So working less sounds great, but how does it work in the real world? It will depend on two main things:

Whether or not you are self-employed
If you sell products or services
If you work for yourself
When you’re self-employed, you have complete control over your schedule. You can decide what days you work and how long you work each day. Gill and I work Monday to Thursday from 9 AM to 6 PM. It doesn’t really matter how you do it, as long as you limit your work week.

If you work for someone else
If you have a normal 9-to-5 job, you might be thinking “Well that’s great for you Ryan. You can control your work week. My boss will fire me if I propose working a four-day week!” And you’re probably right.

However, you can take the challenge in many different ways. Instead of getting into work early and finishing late, tell yourself that you have exactly eight hours to finish all your work for the day. Set a mental barrier at the end of the day and know that you will shut down your computer and pack your bags exactly at five o’clock.

When you tell yourself that you’ve only got a limited amount of time to do a huge amount of things, you’ll find it helps you focus and work faster.

Products vs. services
Working a four-day week is much harder if you run a service-based company. For instance, design companies will have to really work hard to keep a four-day week, simply because clients will expect you to be in the office five days a week.

If this is you, I’d like you to ask yourself this question: “Does my job facilitate my life, or does my life facilitate my job?” I believe it should be the former. Yes, you will lose a few clients who expect you to be available at a moments notice, but in the bigger picture, does that matter?

A possible solution to this problem is moving to a four-day week gradually. Maybe start working a four-day week just once a month. Then gradually increase this to twice a month. Eventually, you’ll have worked your way up to the entire month and (hopefully) your clients will be used to the idea.

Has it worked for us?

The proof is in the pudding, right? It’s easy for me to say that Carson Systems works a four-day week, but what actually takes place every week?

It’s harder than we thought
What we found is that we were extremely tempted to work on Fridays. We love what we do, and on top of that, there’s a heck of a lot of stuff that needs to be done. Not having that extra day to get things done actually felt a bit stressful at first.

In the first couple of weeks, we ended up working a bit on Friday, and even a little on Sunday. Hmmmm…clearly we needed to get a bit more serious about implementing this whole four-day work week stuff.

Week three and onwards, I’m happy to report, we successfully worked a four-day week. The trick was shifting our mental perception of how long the working week was.

Thursday is the new Friday
It took awhile to see Thursday like it was Friday. What we realized is that Thursdays became very busy, because we had to finish everything for the week that hadn’t been done yet.

We would look at our to-do lists and realize there was still a huge amount of things to be done. Yikes. So the result is that Thursdays can be a bit hectic. Friday would’ve been hectic anyway though, so why not get the work done one day early?

Sometimes you can’t get it all done
Now that we’ve been working a four-day week for three months, we’ve realized that we can’t always get the same amount of work done. Let’s face it, there are only so many hours in the day, and if you work fewer days, you will inevitably not get as much done.

But in the larger scheme of things, does that really matter? Will we lie on our death bed and say “Damn, I wish I would’ve got more done at work?” I doubt it.

So how’re the results?
Once we trained ourselves to stick to the four-day work week, the benefits were absolutely amazing. It was like someone had added another Saturday to our week! On Fridays, we sleep in, fire up the coffee around 9 or 10AM and then relax around the house or head into town to a coffee shop. It really is amazing.

We have more peace. More time to think. More time to enjoy life. It’s fabulous.

Practical tips

If you want to take the challenge, you’ll find you need to be extremely efficient when you’re working. Here are some tips to help you out:

Avoid using instant messaging: It’s a constant source of distraction.
Only check your e-mail twice a day: The surest way to waste time is the ol’ Send and Receive button.
Stick to what matters: Take care of the most important stuff first. Don’t waste time on low-priority stuff. (In fact, delete the low priority stuff from your to-do list. It’s not going to get done anyway!).
Ask for alone time: If you need uninterrupted time to get something done, politely notify your co-workers that you’ll be unavailable for a couple of hours.
Limit blog-reading time: Set a time limit on your blog reading. If you don’t get through all your blogs in that amount of time, hit the trusty “Mark All as Read” button and move on.
Make lists: Write a “to do” list for each day (on paper if you can bear to tear yourself away from Outlook). Put the time-sensitive stuff at the top and be realistic. Choose three time-intensive things to do and five quick things to do. Make sure you finish all of them before you leave in the evening.
Restrict meetings: If you can, restrict the amount of meetings you call, or are involved in. Meetings drag on and can eat into your day. Instead aim for one or two meetings per week and plan them carefully to ensure you cover all important topics and keep on track.
Why it matters

So why is it important to work less? What’s the big deal?

The reason is that when you work less, it gives you more time to experience life and think; you can use the extra time to not only spend with people you love, take up hobbies, or invest in causes you believe in, but also to have ideas. Some of our best ideas have come while driving, gardening, reading, or painting on the weekend.

But what if your job is something you enjoy? What’s the harm in working hard and long at it? Well, I can fully identify with this. I absolutely love running Carson Systems. It’s fun, challenging, rewarding and profitable. I often find it hard to work less because I love what I do.

Here’s the problem though: When I’m old, I won’t wish that I spent more time building web apps or organizing events. Spending time with people I loved or helping people is what will really have mattered to me. Working less gives you the time to do it and also rejuvenates the brain cells so that you can come back to your work with a fresh outlook. Variety is key.

Challenge the system

What this article is really about is encouraging you to challenge what society tells you to do. Is it written in stone somewhere that “Thou Shalt Work a 40 Hour Week”?

You Are Not a Robot - Atleast Not Yet !

Posted in Online Enterprise, Technology Updates by Gautam on Dec 22nd, 2007

Ever worry you’ll arrive at work to find that your swivel chair has been replaced by a super-intelligent software appliance that can create seven user-centered websites in a single CPU cycle? Haven’t we all? OK, maybe it’s just me. But at some point you’ve probably been asked by a boss or client to squeeze the time and money it takes to design a website to the minimum—by cutting down processes, speeding up your work, and reusing possibly inappropriate code. It seems to me that the ultimate fantasy of this kind of uninformed decision-maker is a robot that can do everything a web designer can, only faster, cheaper, and without asking so many difficult questions—which explains my robot phobia. But don’t give it all up for your backup career as a rock climbing instructor just yet, because it isn’t going to happen this side of the next millennium bug. Nevertheless, we can learn a few things from our fantasy of robot domination.

Design on a production line
Web design is still a young discipline, and it’s generally poorly understood. As the web becomes mainstream, an increasing number of people and organizations want websites—and so more people are involved in commissioning, managing, and designing them. It’s not surprising that many of these people aren’t familiar with how web design works. Clients, managers, and colleagues often assume that web design is a subset of some other discipline, like advertising, graphic design, or software engineering. This creates a tendency to write it off as a low-value, straightforward process that can be streamlined and automated, like a production line.

The result is unhelpful pressure on you, the web designer. You’re asked to design faster, using a smaller budget, and without access to key stakeholders—which can make it difficult to maintain your professionalism, leaving everyone unhappy with the final design. The logical conclusion of this perpetual streamlining would be to stop using your judgment altogether, as if you were a piece of off-the-shelf software: a robot.

A lack of respect
The problem I’m describing is a lack of respect for web design as a profession, primarily caused by ignorance. My proposed solution is to educate, by demonstrating that the value you add to the design process comes from using human judgment and experience—in a way that can’t be replaced by streamlined or automated processes.

But why could a robot never do your job? Because machines can’t generalize. An essential element of a web designer’s job is generalization: a human skill that neither computers nor simplistic processes can simulate. In this article I’m going to describe generalization using some examples, explain why it can’t be done by machines, and conclude that talking about it is a powerful way to demonstrate the value of web design.

“web designer” in the broadest sense: someone who makes websites.
Technology is your servant

One of the most obvious things you could observe about web designers is that we spend a lot of time using computers. Perhaps this is the root of a common misconception: the idea that the main output of web design is a type of computer program—and that, therefore, once we’ve written this computer program, it should be easy to create as many websites as we need. People probably assume that we spend the rest of our time surfing the web. But why is this attitude mistaken?

Web design is about communication. We need to use technology like servers, browsers, code, and databases to make that communication happen. But in a successful website, the technology is the servant of the communication—not the other way around. A professional web designer starts with the communication needs of the organization and its users, and then exercises her judgment to create abstractions of those needs that ultimately end up as web pages—a process of generalization.

Web design is a discipline
web design as a subset of software engineering. Other common errors include starting by designing a visual treatment (web design as graphic design), or coming up with a grand concept without considering the user experience (web design as broadcast advertising). There’s nothing wrong with using the approaches of these other disciplines on the web, of course, but they need to be part of a web design process. Web design isn’t rocket science, but it’s not a subset of another discipline—and it’s not as easy as it looks.
So web design is a discipline of its own, and it requires generalization. But what does generalization actually look like?

Generalization in action

Because all websites have different needs and objectives, web design projects need to follow some kind of process in order to be successful. Whatever the details of the process, each stage can be seen as a set of decisions that move us a step further from abstract needs and objectives towards a concrete final website. Every time we make one of these decisions we are generalizing. Here are a couple of examples.

Example 1: scope
Imagine you’re involved in a project that’s based on Jesse James Garrett’s user-centered design process (PDF link), and you’re talking about scope. You’ve already agreed on your strategy—“improve the efficiency of the rock climbing school by offering online booking”—and now you need to come up with content requirements and a feature set. What’s needed? A page for each lesson, or one for each course of ten? A separate section for mountaineering, or is that overkill? Does the children’s intensive summer course need its own booking process, or could it share a generic one with the weekly adult course?

You need to involve the client in the process so that the decisions you make are workable, but they can’t make them on their own, because they don’t have enough expertise in web design (which is why they hired you in the first place). You’re practicing user-centered design, so the users’ needs are paramount, but you also have a limited budget, a deadline, and the school only has a part-time web editor. The decisions you make will affect the chances of meeting the deadline, the quality of the user experience, and the profitability of the school.

To add to the confusion, none of these questions has a “right” answer—that is, you and I could reasonably come up with different answers without one of us being wrong—and our answers will change over time as circumstances change.

Together, you decide that a page for each course is adequate, and that mountaineering isn’t sufficiently different from rock climbing to justify its own section. The summer school needs its own booking form, though, because it needs an upfront payment instead of a recurring one, and some extra fields for parental consent.

From a logical point of view, you’re making a number of assertions: that all 10-week courses can be represented as a single entity; that a generic layout can represent both mountaineering and rock climbing; and that booking the summer course is so different from booking the weekly one that it’s not practical to design a generic form without it becoming cumbersome. This is generalization in action: “abstraction from particular instances” as we defined above.

Example 2: structure
Fast-forward to a later meeting where you’re working on the site’s information architecture. The school has seven types of climbing courses, and the client originally planned to present each in its own section. You’ve agreed that this is a bad idea, because it’s confusing for users. But how can you break the list down into two or three broad categories that will make sense to both the users and the client?

To come up with a successful architecture you need to think about semantics. The way the school describes its courses internally includes jargon that could be confusing to its audience—but you don’t know much about the subject, so you’re dependent on the client to tell you what’s commonly understood. You also need to consider web conventions that most users will understand, irrespective of whether they’re familiar with rock climbing, and you want to build enough flexibility into the architecture to allow it to last for a few years, without overdoing it.

When you decide on the three categories, you are asserting that each course can be grouped into one of them—and that most users will be able to find the course they are looking for using the resulting architecture. As with the scope, the decisions you make about structure are generalizations.

A matter of judgment
Deciding on scope and structure isn’t the only time web designers generalize. Throughout the design process, you continually exercise your judgment to make decisions that often have far-reaching consequences. You use your experience and knowledge of working on the web to make the best decisions you can; and the quality of those decisions is a key source of your value in the design process.

Machines can’t generalize

When we generalize, we are using inductive logic, which is the type of logic that the human brain typically uses to make everyday decisions. A classic example of inductive logic is the way we respond to danger. For example, the first time we touch a steaming kettle, we notice that it is dangerously hot, and a reflex makes us move our hands away immediately. In the future, whenever we see a steaming kettle, we infer that it must be hot and therefore dangerous, and so do not touch it. Because all steaming kettles we have observed so far are dangerous, we infer that this one is too—an inductive inference, or generalization.

Computers are good at mathematics and deductive logic, but they are useless at induction, and therefore can’t generalize—which is why artificial intelligence is still just science fiction. Computers can’t make the abstractions necessary to design a successful website—for that matter, neither could a human who was forced to follow a mechanical process instead of using his judgment and experience.

One way to stop this from happening is to convince them that web design is a discipline in its own right, and that it requires human judgment and experience to succeed. Forever demanding that we work faster is a bit like asking us to behave like robots—streamlining to the point that we hardly use our judgment at all. But professional web designers can’t be replaced by robots—at least, not without seriously damaging the product—because generalization by human brains is an essential part of web design.

Where Am I - Navigation Not Difficult Anymore?

Posted in Online Enterprise, Technology Updates by Gautam on Dec 20th, 2007

It seems strange to be talking about something as basic as “navigation” 11 years into the web era. And yet, if you’re a web designer, chances are you’ve made some mistakes in this fundamental area. So let’s go back to basics.

On a website, “navigation” doesn’t mean just links. Navigation is, like most elements of a website, about communicating with the user. Good navigation tells a story, and good stories have a beginning, middle, and end.

Navigation also has three parts, which are used to communicate to the user about their past, present, and future. Any good global navigation scheme should, at a glance, answer the top three questions every user has at the back of their mind on any page:

Where am I? (Present)
Where can I go? (Future)
Where have I been? (Past)
Here’s a test: Go to any random page on the internet. A deep page, not a home page. Then see if you can answer all three of those questions without looking at the URL or mousing over links to see where they go. See if you can tell your present, future, and past purely through visuals. Even in our brave new Web 2.0 world, most sites fail.

Why is this important?

Studies show one incontrovertible fact: If your website is about selling things or convincing a user to come back, navigation is a key factor visitors use to decide if you’re trustworthy or not. And trustworthiness is critical: Would you give your credit card number to that street merchant who looks like he just rolled out of a dumpster?

Even if your site is not about selling anything, your apparent trustworthiness will influence how your content is received, and it will decide if a user bookmarks you and comes back for more or closes the window, never to return.

Three simple guidelines

Here are three time-tested, easy-to-implement guidelines for trustworthy navigation.

One: Never, ever link to the page you’re on
Navigation tells a story. When the user mouses over a link and that trusty pointer hand appears, that says: “This is a place you can go. Click me to go there now.”

When the user clicks, their expectation is that click will make something happen or take them to a new place. If that does not happen, that’s a bad experience and the user is filled with doubt and uncertainty. Your site’s trustworthiness just went down a notch.

It’s amazing how many sites get this one wrong. Even beloved Flickr, so often the poster child for good experience, Just look at that link to the home page on the home page. What could that link possibly do besides confuse the user?

Most have one global navigation template, to make site-wide changes quick and easy. Building in a lot of if/then statements to change the links per page takes some extra time. But it’s so worth it. Simply changing a global navigation item to be plain old text when you’re on that page means that it will look different (visual recognition of your present place) and will avoid the click-to-go-to-where-you-already-are bad experience.

The one possible exception to this guideline is anchor links. As you know, anchor links don’t send the user to a new page, merely a new part of the page they’re on already. But that can still be confusing, so that’s why they should be used sparingly, if ever. Part of the problem is that, all links usually look the same, even if some are anchors and some are links to other pages. So an obvious solution is to make anchor links look different, which is easily doable in CSS. Another option is to not use them unless you really, really have to.

Two: Show where you are
Like the first guideline, this is just about giving the user a big “You Are Here” clue, wherever they are. If the navigation quietly reminds the user where they are, they’ll never have that “Am I Lost?” panic moment.

In practical terms, this means that when a user is on the main page for a section (awesomeness.org/section), the global navigation element that had been linking to that section should be unlinked and visually highlighted so that, at a glance, you can tell where you are.

Then, when the user drills down to a content page within that section (awesomeness.org/section/page), the global navigation element for that section should go back to being a link, but it should not go back to looking exactly like it did on the home page (because now you’re in that section).

Three: Think before you link
If you were considering nominating me for Captain Obvious after the last two guidelines, you’re gonna love this one. Just think about every link in your global navigation. Ask yourself, “Will users really need this link every single time they visit?”

Just because you’ve decided to give a page a top-level directory does not mean it has to be represented in the global navigation. And if it is, what you’re communicating to the user is: “This thing right here is absolutely integral to this site and what you can do here.”

So choose wisely. Think of everything in your global navigation as describing your site. Make sure it tells the story you want to tell.

GPS Basic Information

Posted in Technology Updates by Gautam on Dec 19th, 2007

Global Positioning System is a fully functional Global Navigation Satellite System. This system uses an artificial constellation of 24 medium Earth orbit satellites. These satellites transmit microwave signals, thus enabling a GPS receiver to determine its location, speed, direction and time.

It has become a very useful tool for making maps, surveying landscapes, commerce and many scientific uses. It also provides time reference which can be used in many applications which include study of earthquake and telecommunication network synchronization.

A GPS receiver simply calculates the distance between itself and three more GPS satellite. Each satellite has an atomic clock in it continually transmits certain data containing its exact time, location of the transmitting satellite and the almanac.

The Global Positioning System is used in a variety of Military and Civilian Applications. It allows soldiers find their objectives in a dark or completely unfamiliar territory and coordinate troop movement and supplies. GPS receivers which military personnel use are called Commanders and Soldier Digital Assistants. A combination of GPS and communication through radio enables real time vehicle tracking.

It is also used in marking targets as hostile and enables the precision guided munitions to allow them engage these targets with high accuracy. Air to Ground roles of military aircrafts use GPS to find targets. GPS also allows targeting for military weapons like ICBMs, Cruise missiles, precision guided missile.

GPS helps civilians a lot in surveying and navigation. Its ability to calculate local speed and orientation is extremely useful. Time transfer is possible because of its capability to synchronize clock. A widely used example of use of GPS is CDMA digital cell phone. Each base uses a GPS timing receiver to synchronize the codes with different base stations and thus making it easy inter-cellular hand off and thus support emergency phone calls and other many applications.