Monday, September 27, 2010

Web Typography

Web typography, the use of fonts on the web. Sounds simple enough. You design your web site, choose a font, and write the HTML & CSS code for your site and it looks good. However, it is not this easy. To be able to use a font in a browser, the font has to be available to browser, either native to the browser or be imported from another site. This is where it can get tricky. CSS has a @font-face tag and a URL link to the fonts you can use to pull in fonts to be used. Sounds like a plan that will work. But as Lee Corso says, "not so fast my friend".

First, to use a font on the web it has to be licensed to be used on the web, and not too many fonts are licensed for web use. If you use a font you purchased that is not licensed for the web you may be violating your end user licensing agreement with the font foundry (this is no small consequence). Second, not all browsers support the @font-face tag for all types of fonts. I don't really understand why the decision would be made to deploy a browser with less functionality (or stated another way, a competitive advantage) than a competitor's browser but there is a major player that did just that.

Why, you might wonder, is this lack of consistency even a factor to be considered? It occurs because there are no established standards regarding the licensing of fonts to be used on the web. The font foundries are close to having a set of standards that will protect their interests while allowing web designers to use fonts that are licensed for the web. Also, the W3C is working on a web font standard.

Don't despair, there is a solution to this problem, a middleman. This middleman is really a company that does all the heavy lifting with regard to negotiating the licensing agreements and technological issues for fonts. You pay a monthly fee to the company that pays for covering the license for the font as well as hosting the fonts. The good news is these fonts will work on any browser. The bad news is that not all fonts are available even to these middleman companies. But it is a start and for that we are grateful.

Thursday, September 9, 2010

Why Use Web Standards?

Do you want your web site to look good and work well with all browsers? Of course you do. Then web standards are important to you. Back in the olden days, well the late 1990s when the web was in its toddlerhood, most every browser used a different proprietary web format. This was not a great practice but it was not frowned upon because everyone was just learning about the Internet and individuality and independence was the norm. However, as more and more people began using the web it created the need for more and more web developers. Likewise, new browsers were developed, some merged, and some disappeared all together. All these changes created a sort of rat’s nest of web formats.

Multiple web formats makes web development complicated which always increases the costs associated with the initial development because multiple versions of the same site must be developed. However, the increase in costs is not limited to the initial development because over the life time of the site multiple formats must also be supported and maintained. You might think this is crazy talk and to control costs you can support one or two web formats, but do you choose which ones to support and which ones to ignore. I don’t know if you realize this, but by choosing to ignore certain formats you are by default choosing to ignore the web users whose browser is using that format. Can you afford to ignore potential customers or users? I didn’t think so.

There is an easy way to avoid having to choose what web formats to support or not support, and it is a simple decision, use the standard web format put form by the Web Standards Project. The web standards that were developed (and continue to be developed) in the WaSP ensures going forward that by using these coding standards a web site will work with any web browser. You won’t have to make the choice of what to support or not support. You put lots of time, energy, and money into coding your web site and you want it to be attractive and user friendly and available to everyone. By using these web standards when you code you won’t have to worry about browsers, you just have to worry about almost everything else.

Wednesday, September 1, 2010

The Art (?) of Information Architecture



Information Architecture (the short definition) is: analyzing, organizing, and structuring information on websites so the average user can easily find what s/he is looking for. A simple enough idea but is it simple (read easy) to do?

The Information Architect (IA, for short) has to strike a balance between what the owner of the web site wants (requirements), the content of the site (what to keep from an existing site and what to replace), and what the user wants and/or needs. It is like someone juggling, too much of one will impact the others, it may be in a good way or maybe not so good. This is where the "Art" (the skill and creativity needed for an endeavor) part of IA comes into the mix.

A fairly common thing to find when dissecting a web site is the design of an organization's web site mimics the organizational structure of the entity. This usually happens because the Information Architect follows the existing flow or structure of the organization. However, does the site user know (or care) that the Company's financial information is gathered and managed unders the direction of the VP of Customer Service and will be located under the Customer Service tab on the web site because this is the way the reporting structure is organized? I doubt the user will care, all she wants to do is land on the web site home page and with one or two mouse clicks find what she is looking for. Here the "Art" is being used to balance the company needs with the user needs.
Thinking about our user in the above paragraph, what does the Information Architect have to do to make the user experience a good one so hopefully, she will return again and again to our web site? The IA has to be able to figure out how the end user thinks and then use this information to structure the web site so that it is intuitive for the user to move around and through the site.
Try using these 8 steps the next time you are asked to build an Information Architecture.
  1. Understand the web site (system) requirements
  2. Talk to the end users of the existing site, or if there is no existing site, conduct interviews of potential and/or targeted users
  3. Develop a draft architecture and get client feedback on the proposed architecture.
  4. Understand that this is an iterative process, you won't get it right the first time around
  5. Eventhough this won't be the final architecture design, document, document and document some more
  6. Develop persona(s) and define what tasks these persona(s) will do when using the site (storyboarding)
  7. Have the project team review the storyboards
  8. Create detailed page layouts to support the storyboards (this also provides valuable information for the web designers and developers
Bottom line, effective information architecture should provide the means for users to quickly and easily find what they are looking for on a web site.

Thursday, August 26, 2010

From Good to Great Web Writing

Writing for the web is not like writing for most any other media because a web user is unique. This fact creates challenges when creating and/or editing the copy for a web site. A balance between not enough and too much information must be found and maintained so that the site above all else meets the goal(s) of the client and is creative and inviting to the site visitor.

Web readers don’t read web copy line for line, the majority of these readers scan the copy looking for the “highlights” of the page or for something interesting to catch their eye. Printed material has a definite beginning, middle and end, however, a web site can have many entry and exit points which makes it essential that the writing be precise and concise without being repetitive. A good web writing must be: useful-- gives the user the information she wants and needs; usable—has descriptive headings, clear navigation cues, and is concise; engaging—the site is personable and not just a marketing brochure; and findable—the web user has to be able to find what she is looking for on the web site.

Great web writing takes dedication, creativity, organization, intelligence, a sense of humor, and a thick skin. There are a few (10 to be exact) tips to produce good web copy according to Erin Anderson, in Interact With Web Standards:

1. Love the inverted pyramid—start with the ending (conclusion) and work
work backwards

2. Believe less is more (most of the time)—don’t overwrite or use unnecessary
words

3. Avoid sounding like an infomercial—write to inform not to impress, speak
plainly but be specific, limit the use of bold or italicized copy

4. Make your copy easy to scan--paragraphs should be 60 words or less, headlines should be eight words or less, page length is dependent onthe content of the site (just be aware that size does matter), and headings should be placed strategically to guide the user through the pages

5. Write killer headings—help the reader to scan the page to find what she is
looking for

6. Lead with active words—helps to keep it simple and concise

7. Use simple sentences--avoid semicolons, too many commas, and be stingy with the adjectives and adverbs

8. Keep your promises—don’t reference a site with a link that doesn’t work, and
make sure the links and labels match the page content

9. Set up a review process—have someone else review your work

10. Steal (borrow?) from good websites--review the web sites you visit and keep a list of what works and what doesn't work

And don’t forget, a great web site is never finished. The content should be reviewed on a regular schedule to be sure it continues to be relevant, timely, accurate, and accomplishes the client’s goal(s).

Monday, April 26, 2010

Information Technology Infrastructure Library (ITIL)


Overview of ITIL

Information Technology Infrastructure Library (ITIL) is a set of standard practices for managing IT services, development, and operations. The United Kingdom’s Central Computer and Telecommunications Agency (CCTA) developed the standards, or set of recommendations, in the 1980s. These standards are published in “books”, the initial set of books numbered over 30 volumes. Because of the massive amount of information, the CCTA consolidated the 30 volumes into 8 books in 2000 for version 2 of the library. In 2009, the Office of Government Commerce (a successor of the CCTA) announced that second version of the ITIL would be withdrawn and as of early 2010 version 3 with 5 volumes is available. Version 2 has nine books in the ITIL, the ninth book is ITIL Small-Scale Implementation that has additional guidelines for smaller IT units.



The original eight books in version 2 of the ITIL are:

1. Service Support - focuses on the user of the IT services to provide the information and services the user needs to support business services

2. Service Delivery - focuses on the services needed to provide support to the business users. Included in this book is service level management, capacity management, continuity management, availability management, and financial management.

3. Security Management - focuses on protecting the confidentiality, integrity, and availability of the information assets.

4. ICT Infrastructure Management - (ICT is an acronym for Information and Communication Management) focuses on the best practices for requirements analysis, planning, design, deployment and ongoing operations management.

5. ICT Technical Support - focuses on providing support to the other processes, i.e., research and development, marketing, and the creation of documentation

6. The Business Perspective - is a collection of best practices to address the issues encountered in providing high quality IT management

7. Application Management - focuses on best practices to improve the overall quality of IT software development and support

8. Software Asset Management - includes best practices for maintaining software license compliance, tracking inventory and software asset use, maintaining policies and procedures for defining, deploying, configuring, using and retiring the software assets.



ITIL Service Desk

The ITIL Service Desk is a component of the Service Support book of the Information Technology Infrastructure Library (ITIL). The Service Desk is the single point of contact or entry for an end user that needs help with an issue. The goal of the Service Desk is to help restore normal business operations with little or no business impact to the Customer within the stated response time frames and priorities. To accomplish this goal an ITIL Service Desk performs at a minimum the following activities: Receive all calls and emails on incidents/problems, Incident recording, Incident classification, Incident prioritization, Incident escalation, Update the Customer and other parties on progress, Provide communication for other ITIL activities such as release notifications and change schedules, Reporting on Service Desk performance.

The ITIL Service Desk is the process used to combine the best practices detailed in two ITIL books, Service Support and Service Delivery, and has two main functions, incident control/management and communication. These functions can be further defined into the following sub-functions:

Service Support

Incident management

Problem management

Configuration management

Release management

Change management

Service Delivery

Availability management

Capacity management

IT Service Continuity management

Financial management

Service Level management


The Service Desk is the mechanism the Customer uses to record an incident or problem. It is also used as the communication portal for monitoring the activities and processes associated with the sub-functions listed above. The sub-functions are described in more detail below.

Service Support

Incident management aims to restore normal business operations with little or no impact to the Customer by providing a process to record, track, and review an incident. According to the ITIL documentation there is a difference between an incident and a problem. An incident is defined as any event that deviates from the standard operation of the process and causes or has the potential to cause a disruption in the Customer’s service. A problem is an unknown underlying cause of one or more incidents.

Problem management aims to determine and resolve the root cause of incidents and problems and to minimize the adverse impact to the Customer’s business. Also part of problem management is the error control process and the problem control process. The error control process, through an iterative process, diagnoses known errors until they are eliminated by successfully implementing a change using the Change management process. The problem control process has four defined activities: identification of the root cause of reported incidents, problem identification and recording, problem classification, and problem investigation and diagnosis.

Configuration management is the process responsible for maintaining information about configuration items required to deliver an IT Service, enabling control of the infrastructure by monitoring and maintaining information on all the resources needed to deliver services. At a minimum this includes planning, control, status monitoring, verification and audit.

Release management focuses on the protection of the production environment and its services through the use of formal methodologies and procedures. A release is defined as a collection of hardware, software, documentation, processes or other components required to implement one or more approved changes to IT Services. The goals of release management include: planning the rollout of the software or hardware, designing and implementing procedures for the distribution and installation of the release, communicating to and managing the expectations of the Customer during the release, and controlling the distribution and installation of the release into the IT systems.

Change management is the process of using standardized methodologies and procedures to reduce the risk of any changes to the software or hardware adversely impacting the Customer. A change is defined as the addition, modification or removal of anything that could have an effect on IT services. The main goals of change management are to minimize disruption to service, reduce the need for back-out activities, and efficient utilization of resources involved in the change.

Service Delivery

Availability management responsible for ensuring that all IT infrastructure, processes, tools, roles etc are appropriate for the agreed service level targets for availability. The components of availability management include: reliability, maintainability, serviceability, resilience and security.

Capacity management is responsible for ensuring that the capacity of IT services infrastructure is able to deliver agreed service level targets in a cost effective and timely manner. Capacity Management considers all resources required to deliver the service, and plans for short, medium and long-term business requirements.

IT service continuity management is the recovery of the IT infrastructure used to delivery the services. This includes plans are defined and put into action that ensure that the services can recover and continue in operation should a serious incident or problem occur.

Financial management is making sure that the IT infrastructure is purchased at the most effective cost. This includes calculating the costs of running and maintaining the IT processes so that the company understands the true costs of the IT systems. This also helps the company in setting prices for services provided to the Customer.

Service level management is perhaps the most important piece of the Service Desk process. This is what the Customer uses to be sure they are getting the service they are paying for. A service level is a measured and reported achievement against one or more service level targets. Service level management involves the use of metrics compared against a benchmark.

Diagram of an ITIL Service Desk process

Profile of an ITIL Consulting Company

Enterprise Consulting Services (ECS) is a “boutique consulting firm specializing in IT service management consulting, implementation and outsourcing using the ITIL framework”. The target audience for their services is CEOs, CFOs, and CIOs with a “charter to improve service and reduce the total cost of the technology support infrastructure. The services offered by ECS include IT Service Management, IT Asset Life Cycle Management and IT Security Management across the “IT value chain”. The ECS services overview sheet details how their consulting services will do to help a client’s overall IT processes. They also include a diagram of what a Service Desk Design should look like but their documentation is very quick to point out that their services and solutions are vendor neutral. However, the documentation points out that ECS has worked with many different providers, including Microsoft, Dell, HP, Altiris, and Courion.

The listing of clients on the company website is quite diverse. It includes Bausch & Lomb, EnergyEast (a utility company), Wegmans, Constellation Brands, Ontario County e-Government, Citi, TRW, Sungard , and SMU. Of particular interest to me was the implementation of an ITIL initiative for EnergyEast. EnergyEast is an electric and gas distribution company that serves 3 million customers in five states in the Northeast US. ECS integrated incident management, asset request management and security identity management into the company’s infrastructure. Included in this was a redesign of the existing incident, request and monitoring processes using the ITIL frameworks, along with the implementation of a self service “Smart Form” that provided one stop shopping for end user incident management.




ITIL Software Tool

SysAid Technologies has a Service Desk product call SysAid. This product is offered as a Software as a Service (SaaS). The product incorporates the best practices as details in the ITIL documentation. SysAid has two versions, one has what are deemed as core modules and the full version that includes an ITIL Problem Management module, an ITIL Change Management module, and an ITIL Configuration Management Database module in addition to the core modules.

This is a web based product that uses a 3 tiered architecture configuration (an end user view, an application layer, and a database layer).

The core modules included in their Service Desk product are:

Helpdesk - has all the core functionality for incident tracking for an ITIL Service Desk product

End-User Portal - easy submission of incidents and requests, includes a FAQ database for users to use in resolving their own technical issues

Knowledgebase - database for storing resolutions for the most common service requests

Asset Management - houses all hardware and software changes, and can interface with external purchasing systems

Remote Control - IT personnel can gain control over remote computers

Reports & Analysis - includes pre-defined reports along with the ability to create reports "on the fly"

SysAid Chat - an instant message service for anyone logged into SysAid

IT Benchmark - monitors metrics against defined benchmarks


The additional modules that can be added to SysAid are:

Tasks and Projects - a project management tracking tool

Advanced Monitoring - provides additional network monitoring

Manager Dashboard - provides a real time snapshot of the overall Service Desk system, also has the ability to drill down for additional information

ITIL Problem Management - tracks and manages root problem causes

ITIL Change Management - track, monitor and report on all past and current change activity, schedule and monitor progress for all future changes

ITIL Configuration Management Database - helps the user to track elements in the IT network




Sunday, April 18, 2010

Software Design Patterns

Software Design is easy enough to understand but what the heck is a pattern when thinking about software design. Is it repetition, a template, a basic design paradigm, just what the heck is it. It turns out that a software design pattern is all of the above and more.

Christopher Alexander has been credited with being the first to use the term “design patterns”. He first used the term in 1964 to describe architectural patterns, a solution to a commonly occurring architectural problem. He saw the same problems appearing over and over in different architectural projects, i.e., how many windows does a room need, and the same solutions being used for these problems, i.e., the number of windows needed depends on the function of the room (context), the desires of the customer, and the buildings products available. Alexander further stated that “a pattern described a problem that occurs over and over again and the core solution to that problem is such a way that you can use the solution a million times over without doing it the same way twice”.

As Christopher Alexander continued his examination of design patterns he coined the term “pattern language” which is simply a collection of design patterns that relate to a particular field. More precisely, pattern language is a structured method of describing good design practices within a field of expertise. This is what is referred to in today’s software environment as “best practices”. Emulating good design decisions while steering away from bad design decisions (anti-patterns).
According to Alexander every pattern we define must be formulated in the form of a rule, which establishes a relationship between a context, a system of forces that arises in that context and a configuration that allows these forces to resolve themselves in that context.

Pattern language as applied to software was further defined by what is known as the “Gang of Four”, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. They wrote a book, Design Patterns: Elements of Reusable Object-Oriented Software. In this book, published in the mid 1990’s the Gang of Four used the premises put forth by Christopher Alexander to describe reusable solutions to commonly recurring problems in software design. Reusing design patterns helps prevent issues that cause major problems (using best practices or learning from other’s mistakes).

This all sounds interesting but how does this apply to software design. I think it all boils down to this, you don’t have to reinvent the wheel! In today’s world, software design patterns are most often applied at the architectural level and one of the most often used patterns is the Model-View-Controller (MVC) pattern. However, there are many more design patterns relevant to software design. I personally like the three-tier architecture, a client-server architecture with distinct processes for the presentation, the application processing, and the data management.

The three-tier architecture has three distinct layers or tiers that are independent of each other but are connected by defined interfaces. This design allows for the tiers to be upgraded or replaced independently of the others as the need may arise, such as a change in requirements or technology.

The presentation tier is at the top. This tier displays (presents) the information to the user. Typically, this involves HTML pages and JSPs. This is what the user sees and interacts with. The application tier (Logic tier in the diagram below) controls the flow of the software application. This tier is sometimes referred to as the business rules tier because it is here that the business rules are implemented. The application tier controls the flow of data between the presentation tier and the data tier. The third tier is the data management tier. This is where the databases are found, where the data is stored and retrieved.

A diagram of the Three Tier Design Pattern.





There is a definite difference between the MCV design pattern and the Three Tier Architecture design pattern. In the Three Tier architecture design pattern the client tier does not communicate directly with the data tier, all communication must pass through the application tier. In contrast, in the Model View Controller design pattern, each object communicates with the other objects, which means less independence and modularity.







Sunday, February 7, 2010

SQL Server Modeling Services (FKA-Oslo)

The first anyone heard of a Microsoft product with code name “Oslo” was around October 2007. The first time the public saw Oslo was at the Microsoft Professional Developers Conference in October 2008 and it was described as:

1. A new programming language to help architects and developers describe

models

2. A visual modeling tool

3. A repository for storing different models in a database


Oslo was originally designed to be an add-on to Microsoft’s Visual Studio software, and it included Quadrant, an interface tool, and was written in a modeling language, M, and Microsoft hoped to be able to ship Oslo sometime in late 2009. Deployment of this product has not happened yet.


In the year following the initial release of information on Oslo, more information came to light regarding this new modeling software product. It was touted as a product to simplify development of applications because it would be a repository in an SQL database of models and related metadata that would allow everyone in an organization to look at models “holistically with database tools like Microsoft Access, Excel or SQL server reporting services”.


The programming language, M, is designed for the .NET platform. This language is described as a declarative language, but I’m not sure exactly what this is. Another interesting fact about M is that it is an open source language. I think this is interesting because I didn’t think Microsoft would ever give anything away for free, which is essentially what open source programming languages are. Microsoft initially was solely responsible for developing the M language with review by the M Specification Community (an online discussion group), but now Microsoft is using the contributions from this group in the specs for the M language. Again, an interesting concept for Microsoft.


During the development of Oslo it has evolved from the initial vision for the product. Most notably the code name “Oslo” is no longer used, this software is now called SQL Server Modeling Services and it still uses Quadrant and M language. However, it is no longer an add-on to Visual Studio but will now ship out in a future release of SQL Server. Microsoft has not said when this will occur. Again, I find this unusual because Microsoft will rush to send products to market and the fact that SQL Server Modeling Services has not been released yet is not a typical Microsoft action. Also, now this software is using UML (Unified Modeling Language) to import and export UML compliant files from any vendor. I think this is amazing because Microsoft if not known for using standardized protocols and languages, it is more of a proprietary type of company.


SQL Server Modeling Services (SQL SMS) is still a repository for storing different models in a database that can be used by Microsoft products, third party vendor applications, and customer developed applications and tools. This repository will contain application definitions and will allow tracking and managing changes to applications. SQL SMS will include pre-built models for web, web services and data domains that can be used as starting places for users. And Quadrant, described as a model editor, is the application to be used for viewing and editing data in the repository.


Is there a difference between Business Process Modeling Notation (BPMN) and SQL Server Modeling Services? First, what is BPMN? It is a standard for business process modeling developed by the Business Process Management Initiative and is currently supported by the Object Management Group (OMG). And, yes, there is a difference between these two. BPMN are the standards and guidelines regarding what should be included in a BPM tool, and SQL Server Modeling Services is a software product developed by Microsoft.


I don’t know if SQL Server Modeling Services will be a “home run” for Microsoft or not. Microsoft is a late entrant into the modeling software arena, as there are several similar products already available for purchase. And even though, Microsoft has developed this product to be work with other applications currently being used by customers, it remains to be seen if this repository will work as described. In my opinion, the longer Microsoft waits to ship this product, the farther behind in the modeling world Microsoft will be. Microsoft is playing catch up with a moving target and catching the target (currently available modeling applications) is unlikely and surpassing the target almost impossible.