September 05, 2010

The Standards Are There, So Use Them

Imagine a scenario.

Kate has just been hired by Widgets Ltd., a start-up company that is being run in a garage outside Madison, Wisconsin, to create a website for their products. She has no web design experience outside of Comp Sci 101, back in the bad old days of freshman year. "No problem," she thinks to herself. "I've got an old copy of Microsoft FrontPage here. I'll just draw some tables and drop the content in. Easiest money I ever made."

Of course, we, as web developers ourselves, can imagine the hideous code that will result from this misguided approach:
<html><head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Welcome to Widgets, Ltd.!</title>
</head>

<body bgcolor="#00FFFF" link="#00FFFF" vlink="#00FFFF">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1" height="59">
So much for separating organizational and display functions. Kate's work failed to adhere to (or even consider, for that matter) web standards. Without boring you with the details, the above code snippet contains four errors when run through the W3C HTML Validator — and we haven't even made it to any of the actual content yet.

What are web standards, you may be asking? They are a set of guidelines codified by the World Wide Web Consortium (and Ecma International, which standardizes ECMAScript/JavaScript). They define the elements, the syntax, the attributes, the doctypes, everything. Browser developers then take these standards and program their browsers to properly render web pages based on these standards. Opera generally leads the pack as far as standards compliance, with Firefox and Safari following and Internet Explorer trailing in a distant fourth.

Now, designing with web standards does not mean making your website look exactly the same across all browsers. Someone looking at it in Firefox on Windows XP is going to get a slightly different look than someone looking at it in Safari on Snow Leopard. Is that wrong? Is that bad? Not at all. Very few people will even notice without you pointing it out to them. They're different, not wrong — if you coded the site correctly, that is.

So, in summary, my argument for designing to web standards is this. Internet Explorer 6 (and prior versions) didn't care about abiding by web standards, and complications stemming from that caused much wailing and gnashing of teeth. Why would you want your website to even have a possibility of inspiring a response like that? Design to the standards. It will cause many fewer problems.

*The problems described herein are not unique to Microsoft products by any means. However, every time I bash Microsoft, Canonical and Red Hat send me a tenth of a penny. I look forward to being able to afford a gumball.

August 28, 2010

Architecture, Latches, and Taxes

Information architecture is the confluence of context, content, and users. What does that mean? It means you design your website around your content, while keeping in mind usability, the perspective from which your audience is coming, and any relevant "stuff" (for lack of a better term) from your business.

Richard Saul Wurman first coined the term information architect in the mid-1970s. He explains his choice of words as the following:
Unfortunately, design, which used to be a perfectly good word, means to make something look better for most people....The designer is called in to make a magazine article look better, or an illustrator is asked to make a picture look arresting, or a photographer is asked to take an interesting view of an author or a subject. Nowhere are any of these designers used in the fundamental sense of creating meaning or understanding.

That's why I've chosen to call myself an Information Architect....I mean architect as in the creating of systemic, structural, and orderly principles to make something work--the thoughtful making of either artifact, or idea, or policy that informs because it is clear. I use the word information in its truest sense. Most of the word information contains the word inform, so I call things information only if they inform me, not if they are just collections of data, of stuff (qtd. in Wyllys, 2000).
So an information architect's job is pretty much all-encompassing: figure out what you're displaying, and present it in the best manner possible. Organizing the information is a big part of that. Wurman lays out the five LATCH methods of organizing:
  • Location
  • Alphabet
  • Time
  • Category
  • Hierarchy
An example of information arranged by category and hierarchy is Jess Bachman's Death and Taxes poster, which divides the federal budget by department and uses a proportionally-sized icon to indicate the relative size of that department's chunk of the budget. (As a side note, it should come as no surprise to anyone that the Office of Governmental Ethics' icon is visible only with a microscope.)

Web designers should be concerned with information architecture. Website content is divided into multiple pages, of course. How do you organize them? This is where the context comes in. Is this a large e-commerce site? Organize by product type. Is this a site dedicated to the history of Elbonian widgets? Organize by year. What are your users going to be looking for? Figure out how to get them to what they need, as effortlessly as possible. You are an architect. Construct your virtual building.

August 21, 2010

Web Writers: "You Have A Short Attention Span"

My conclusion is this. Write short, grammatical sentences and have other people edit them.

I probably should have broken that into more sentences. Let's review what isn't acceptable in web writing:
  • Semicolons
  • Long paragraphs
  • Long headers
  • Complex sentences
  • Sentences that aren't stuffed with keywords
  • Formal writing style
  • Exclamation points
  • Excessive bold and italics
  • "To be"
Some of this is common sense, carried over from print writing. Others were developed to work within the constraints of screen real estate. (Remember 640x480? Those were the days.) Killing semicolons, however, is advice I find odd. How else would you punctuate a list that has items requiring commas? "Mr. John Doe, Esq., Dr. Ibee Grumpy, MD, and Mrs. Jane Smith" is not as readable as "Mr. John Doe, Esq.; Dr. Ibee Grumpy, MD; and Mrs. Jane Smith".

Whoops, I exceeded the sixty-word-per-paragraph guideline. Take a deep breath.

How many words should there be in a paragraph? Let's take a look. Ask a Manager's most recent post will serve as an example. Excluding the introductory "A reader writes" paragraph, she averages 77 words per paragraph. Even a web writer's blog occasionally exceeds 60 words per paragraph. The paragraphs that don't are often one sentence long or sound choppy. I think paragraph length will follow from your writing style and your topic.

The next web writing tip is a short paragraph. Don't make grammatical mistakes. Proofread your text. Have someone else proofread your text.

Yes, make your content engaging. Yes, remember that websites aren't in order like a book. Yes, make your stuff easy to read and navigate.

The most important point to remember? Good web writing is good writing.

April 25, 2010

A Library for IT Folks

ITIL is the Information Technology Infrastructure Library, a collection of documents describing IT best practices. ITIL was first developed in the late 1980s by the UK's Central Computer and Telecommunications Agency The ITIL philosophy is centered around a Service Strategy, which supports the areas of Service Design, Service Transition, and Service Operation; these processes are continually being improved (image from SUBnet.192):



ITIL has had 3 versions: v1, encompassing 30 books on various aspects of the IT process; v2, with 8 books; and v3, simplified to 5 books. ITIL is in the process of transitioning from version 2 to version 3, though both versions are still widely used by IT companies.

One of the aspects included in v2 -- specifically, the Service Support category of v2 -- is the Service Desk. It is pretty much what it sounds like: the company's tech support function. There are three descriptors for a Service Desk, each with differing levels of actual tech support provided.
  • A Call Center is essentially a relay station for taking customer problems and forwarding them to the appropriate support department. While Call Center employees can solve some basic problems, most of the time they just get information and forward customers to another department that is better equipped to solve their problem.
  • A Help Desk solves problems as quickly as possible. They provide support, but don't handle maintenance-type activities.
  • A Service Desk handles tech support, maintenance, change requests, etc. Pretty much, if it has to do with their system, they handle it.
The Service Desk activity is categorized under the Service Operation banner in ITIL v3.

There are many software solutions for ITIL, spanning programs that cover the entire breadth of ITIL activities and programs that focus on one aspect of it. One more focused product is ServiceDesk Plus, "a web-based help desk software that...[manages] all your communications from a single point". It takes requests via different methods (phone, email, etc.), applies the necessary rules and/or conditions, and routes them to a technician for fulfillment. (Workflow image from ManageEngine.)



There are also several companies that provide ITIL consulting services. One such company is Enterprise Consulting Services, "a boutique consulting firm specializing in IT Service Management consulting, implementation and outsourcing, using the ITIL framework". ECS focuses on translating ITIL best practices into concrete implementations based on a company's needs.

One such client with whom they have worked is Iberdrola USA (formerly Energy East), a multi-state energy corporation. ECS provided training for employees, allowing them to become certified in ITIL. They also redesigned the support and security systems and upgraded their computers (Windows XP, Office 2003, and McAfee security -- in related news, Iberdrola probably just had svchost.exe disappear for a while). These moves resulted in annual savings for Iberdrola of about $1.4 million. That's what applying optimized practices will do for a company.

Quote of the Day:
The Tech Support Glossary:
ID-Ten-T error: the user has just done something inane, like use their DVD drive tray as a cupholder. (Also known as ID10T.)

PEBKAC error: there is nothing wrong with the computer; the problem exists between keyboard and chair.

Layer 8: in the OSI Model, the user layer above the application. (See also ID-Ten-T.)

(from Wikipedia)

April 14, 2010

Buildings, Triangles, and Big Balls of Mud

Christopher Alexander had a problem. Actually, all architects had a problem. There they were, being hired to design buildings, and their clients understood the buildings more than they did. The problem, essentially, was translation. How could an architect take what the client described and turn it into what the client wanted?

Simple, Alexander said. Clients want basic variations of a set of buildings. We need a language that describes basic stuff (that's a technical term) in our problem domain, building buildings, that is simple enough to be understood and used by our clients: a pattern language. "The elements of this language are entities called [design] patterns. Each pattern describes a problem that occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice."

Design patterns are not one-size-fits-all, cookie-cutter solutions. Instead, they are skeletons, templates, general descriptions of how one might solve a type of problem. For example, it has been determined that people like rooms where natural light comes in from two directions. That's a design pattern. Notice that the pattern does not say, "Put one 16"x30" window on the north wall, and one 24"x30" window on the west wall." It says, "The optimal room has natural light coming in from two directions."

Alexander came up with this concept in 1977. To this day, it has had a mixed reception in architecture. In 1987, however, Kent Beck and Ward Cunningham got the idea of applying the principles of design patterns to software. The "Gang of Four" (Gamma, Helm, Johnson, and Vlissides) popularized that usage in their 1994 book, Design Patterns: Elements of Reusable Object-Oriented Software (Wikipedia).

Good design patterns, in computer science, are classified in four categories: creational patterns, structural patterns, behavioral patterns, and concurrency patterns. Creational patterns define how an object is created. Structural patterns define relationships between entities. Behavioral patterns define methods and patterns of communication between entities. Concurrency patterns define how to deal with multiple threads in a program. Wikipedia has some good descriptions of software patterns.

An example of a good design pattern is the creational pattern abstract factory. An example of an abstract pattern is the AbstractCollection class in Java. This class provides the basic skeleton required to create a collection of objects. It has methods to add items to the collection, remove items from the collection, get the size of the collection, etc. Individual methods in the class can be overridden in subclasses to provide functionality specific to that implementation. Several classes implement AbstractCollection in a more specific way. ArrayList, by way of AbstractList, implements the methods so that they work with a resizable, sortable list of objects of a specified type. List implements them to work with a list of specifiable, but fixed, size.

To put it in simpler terms, an abstract factory pattern is like the definition of a triangle. The abstract definition of a triangle is that it is a shape with three sides. The abstract methods would be implemented in the classes RightTriangle, ObtuseTriangle, and AcuteTriangle, which would place restrictions on the angles of the triangle, as shown below (Wikipedia).


Bad design patterns are called antipatterns. While good patterns have dry names like "abstract factory", "composite", and "chain of responsibility", antipatterns have been given such monikers as "spaghetti code", "God class", and (my favorite) "big ball of mud". The big ball of mud starts out as a relatively simple piece of software, then through the addition of bits of throwaway code, quick fixes, and piecemeal growth, becomes an unwieldy, mutant program that would take a good deal more time and money to fix than it would have taken to properly maintain it in the first place. By leveraging all of my considerable artistic talent, I leave you with this insightful look into big balls of mud:

February 06, 2010

Norway, Ireland, and Redmond

Microsoft has a hand in everything, it seems. One of their current ongoing projects is SQL Server Modeling, formerly known as Oslo. (If you're interested, it has been released as a Community Technology Preview.) According to Douglas Purdy, this consists of:
  • M, a language for defining queries, schemas, etc. (like MySQL);
  • Quadrant, a tool for interacting with SQL databases (like Access); and
  • Repository, the back-end that communicates between applications and systems and stores data (SQL Server).
It was originally conceived as a sort of broad cross-platform modeling solution. M is open-source, but MS's implementation ties it to SQL Server. (Parts of the original Oslo project were split off into Dublin, .NET Services, and WF/WCF 4.0, while the modeling bits listed above stayed with Oslo.)

M has three specifications: T-SQL (Transact-Structured Query Language, Microsoft's proprietary extensions to SQL), grammar (originally called MGrammar), and EDMX (an XML file defining an Entity Data Model) (source). M is a domain-specific language (DSL). Its purpose, according to Microsoft, is to make it easier for users to interact with the database.

It's kind of difficult, as someone who has never heard of SQL Server Modeling before this week, to determine what, precisely, is its purpose. On first glance, it appears to be a set of data manipulation tools. However, Microsoft's aim seems to be more all-encompassing than that. It doesn't help that their aim has changed drastically in the three years they've been working on it. Time will tell if it catches on, and in what capacity.

Quote of the Day:
Beckman: Your country is calling you, Mr. Bartowski.
Chuck: Uh, well, then I think my country might have the wrong number.
--Chuck, "Chuck Versus the Ring"

January 16, 2010

Google AdWords

Google ads are everywhere. They appear on searches and websites, usually identified as "Sponsored Links" (since that sounds so much classier than "Ads"). Google's ad programs are more useful than some other ad services, since they are driven by context - instead of getting a random "You are the 1,000,000th visitor to this site! Click here to claim your prize!" you will see something related to what you're reading. This, in theory at least, provides a better return on investment for the advertising company.

There are two sides to the Google advertising platform: AdWords and AdSense. AdWords is for companies or individuals wishing to purchase ads based on certain keywords, while AdSense is for companies or individuals willing to place ads on their website. I'm going to discuss AdWords and how it works from the customer's perspective. Here's a flowchart giving a basic overview of making the decision to use AdWords. It's much easier to read if you click to enlarge it.

Our company - we'll call it Fabulous Widgets - has limited marketing funds, so Marketing requests the budget from Accounting to verify how much they can spend. Once they know that, they can start researching keywords. The keywords for which they purchase ad placement will dictate the searches on which their ad will appear. Google's Keyword Tool provides information about, and suggestions for, keywords. In this case, the Marketing Department wants to purchase ads for searches that are as relevant as possible to their core product - widgets.

After typing "widget", "widgets", and "fabulous widgets" in the keyword box, the Marketing employee is presented with a list of possible search terms, along with popularity, search trends over time, and (optionally) the average cost per click, or CPC, for each term. The top matches include "widget", "dashboard widget", and "web widget". Well, Fabulous Widgets is a purveyor of only the finest dashboard widgets, so "web widget" is not really an applicable search term. Marketing decides, based on their budget, to purchase ads for "widget" and "dashboard widget".

Periodically, Marketing will need to review the performance of the ads they've purchased. How much more business is Fabulous Widgets getting from the new ads? Maybe AdWords is providing them with more profit than a different marketing campaign, and therefore needs more money allotted to it. Maybe the keyword choices should be tweaked. The Internet is a fluid place, and so, by necessity, must Fabulous Widgets' marketing efforts.

Quote of the Day:
I need subtitles walkin' in here.
--Booth, Bones, "The Man in the SUV"