Should I Use A Content Management System (CMS)?

Wednesday, May 5th, 2010

This is a very simply question to ask but not a simple question to answer and I will attempt to give you some questions to answer for yourself that may help you decide.

Before I begin I want to make it clear that this is not about what CMS to use; there are many of them out there and each is suited to different purposes. This is only to give some guidelines on when a CMS may be a good idea and when it may be a bad idea.

When deciding on using a CMS or not you should ask yourself the following questions:

  1. How big will my Web site be?
  2. Who will be editing my Web site?
  3. How often is my Web site likely to change?

How big will my Web site be?

Are you planning a massive website with hundreds or thousands of pages? Or, will you have a small site with 50 pages or less? It doesn’t really matter what the beginning size of the site is, the real question is what you envision in the future. If your plans are to have that massive site then it may make sense to use a CMS of some kind. On the other hand, if you are planning a small site and the likelihood of it growing much is small, then in reality there may be no need to use a CMS and using one could be overkill. Content Management Systems are designed with large constantly changing sites in mind. Even with a large site a CMS may not be needed depending on your answers to the other questions.

Who will be editing my website?

Is one of your requirements that you are able to edit your own site? Or would you rather the development company that built the site make the needed changes? If you have no interest in taking care of the day-to-day maintenance of the site then a CMS may not be called for. On the other hand, if you will be doing all of the editing yourself then a CMS may be a good idea. Content Management Systems are designed to make it easier for those without technical skills to make changes and corrections. However, one should also weigh the other factors involved before deciding based solely on who will be doing the editing.

How often is my Web site likely to change?

Once the site is created, will it be updated on a regular base; adding and changing pages frequently? Or will it rarely need updating? By frequently I’m talking about making daily to weekly changes. If the time between changes is lengthy then a CMS may not be a good idea (even for a large site). While little technical knowledge of Web development is needed to use a CMS, there is still knowledge of the CMS itself that must be considered. Someone needs to know how to use it and remember how to use it. Even if you want to manage your own site content if you do not use the system frequently enough you may need to relearn the system each time you use it; wasting time and resources. It may simply be more cost effective to send those changes to an outside source. Someone that understands your site and can make changes quickly and efficiently.

Conclusions?

Just like the question of what CMS should be used for a Web site, deciding to use one or not in the first place is a decision that you need to make. There are companies out there that will say that “Such and such CMS is the perfect solution for everyone.” When in reality, not only is a specific CMS not the right solution for everyone, using one in the first place may not even be the right solution.

The reason that I am giving this information is that I find that many people immediately jump to the conclusion that they MUST use a CMS for a site without weighing the benefits and disadvantages first. The reality of the matter is that using one may simply make either creating or maintaining a Web site more complicated instead of making it easier. The only good reason to use a CMS is that using it will make some aspect of the site’s maintenance easier for those that will be responsible for maintaining it as long as the CMS itself does not create additional complications.


Converting to “Pretty” URLs

Monday, April 5th, 2010

… Can Be Complicated

It’s true, as mentioned in this article that pretty URLs have many benefits.

However, by reading such articles one gets the impression that converting a site with URLs such as http://www.yourdomain.com/catalog.php?manufacturer=2&category=5&subcategory=3&product_id=93 into a site that uses URLs like http://www.yourdomain.com/catalog/spacely-sprockets/8-inch/16-tooth/90325M/ is a very easy thing; after all, you simply need to create a .htaccess file and make the correct substitutions and your in business, right?

The truth of the matter is that it’s a bit more complicated than simply creating the substitution rules. This only takes care of converting what is supplied by the browser into what is needed by the application and does not cover what is required to make the application output those pretty URLs in the first place. Without this, those pretty URLs (and the .htaccess file) are pretty useless.

Articles such as the one mentioned above are great for the developer that’s planning a new application and wants to employ this type of URL schema from the beginning. On the other hand, converting an existing site can be a challenge.

As a developer, I’m frequently asked to come up with a quote on how long it will take to do such conversions. More often than not I cannot even begin to evaluate these projects because I don’t have the information I need.

Below I will attempt to explain what information a developer really needs (what I really need) to quote such a project and why that information is important as well as some of the complexities in the conversion itself.

When having such a project estimated you should always be a little leery of a development company that doesn’t ask for this type of information. Without it there is a good chance the project is being grossly under of over estimated. If I must quote such a project without the needed information then I must assume the worst case scenario and quote accordingly. I don’t like making such quotes because without looking at what I need to do there is no way for me to know if the conversion can be accomplished.

What Information is Needed?

Generally, before I will begin to work on evaluating a project like this I will ask for the following:

  1. The platform that site is running on
  2. Access to the database associated with the application used on the site
  3. FTP Access to the site

What Platform Does the Site Use?

This is the most important question for me and it is usually the easiest information to obtain:

  1. Is the site hosted on a Windows or an Apache server environment?
  2. Does the site use PHP, Classic ASP, ColdFusion or .NET or something else entirely?
  3. What type of database does the site use?

As a developer, in order to be able to evaluate a project I must have enough expertise in the technology used. The reason for this is that I will need to look at the work done by another developer and I must be able to understand it well enough to figure out what will be involved in completing the project. I’m sure other developers may view this differently, but I personally will not even attempt to quote a job that I feel is beyond my areas of expertise. Doing so amounts to making a promise that I can’t guarantee I can keep.

Why do I need access to the database?

Next to the site’s platform, this is the most important thing I need to have. A database is like the foundation of a house. This is the base that a site is built on and without understanding how the database is designed I cannot even begin to guess at what work will be involved in making changes to the site that it supports. Just like a house, you can not put additions on where there is no foundation, before adding that addition you must first understand and possibly alter that foundation.

Also, again going back to the house metaphor, if you have a well designed foundation it will last and allow for easy remodeling. On the other hand, a poorly designed foundation may mean that remodeling isn’t possible and that the house will not stand as long.

What am I looking for in the Database?

  1. Database Design
  2. Uniqueness of Data
  3. Use of Special Characters in Data

Database Design: Mostly I am looking to see if I can make sense of the data stored in the database simply by looking at the table and column names. Did the designer use names that relate to the data, for example, are the tables named things like “manufacturers”, “categories”, “subcategories” and “products” or do the tables have obscure names like “table_1″, “bob” and “data”. I also need to know how the various tables are related. If this is easy to figure out and I can find the data I’m looking for, then I can move on to the next step.

On the other hand if things are too obscure then I’ll need to reverse engineer the database before I can go any further. Reverse engineering a database built by someone else can be a time consuming process. At this point I must do one of two things, quote a rough estimate of how long I think it will take me to do this reverse engineering or go back to the worst case scenario to quote the entire job. In the first case this means that the client must pay to have work done that may, in the end, result in no results, because at this point we still don’t know what the final estimate will be or even if the project can be accomplished, we’re simple digging deeper. In the latter case the quote is likely to be high and again, we still don’t know if we can make the needed changes.

Uniqueness of Data: The uniqueness of the data that will be used in the rewrite rules is extremely important. As an example lets take a table database that looks something like this:

Please keep in mind that these are extremely simplified examples to illustrate a point. In reality, discovering if data is unique may depend on any number of factors, like related tables, which is why access to the database is important.

categories
id name
1 Sprockets
2 Cogs
3 Gears

With the above it is relatively easy to look up the id of the category and substitute a name turning http://www.yoursite.com/products.php?category=2 into http://www.yoursite.com/products/cogs/ and then when we load the page to do the reverse substitution. Now let’s look at the following example:

categories
id name
1 Sprockets
2 Cogs
3 Gears
4 Cogs

Now, to create the “Pretty” URL we look up the category id and substitute a name: http://www.yoursite.com/products.php?category=4 becomes http://www.yoursite.com/products/cogs/, the same URL that we got from the first example. But now when we do the reverse substitution the result we get will likely be the wrong result since there are two categories with the same name. In the case where uniqueness does not exist it will be necessary to extend the database, creating a new field that will contain the unique information we need.

Use of Special Characters in Data: There are many characters that are available on a keyboard that are simply not allowed in a URL. Many users are simply unaware of this and many developers, when building a system that will not use pretty URLs, don’t take this into consideration when deciding what a user will be permitted to enter. Characters like spaces, #, %, *, &, $, and ? simply do not work in URLs as they have special meaning to browsers and servers. If these characters are allowed there is one of two things that can be done:

  1. If the list of special characters that are allowed is not too extensive we can do some simple replacements that can be reversed, for instance replacing spaces with dashes, but they must be replace by something because we need to be able to reverse the process.
  2. If the list of special characters that are allowed is too extensive then, as with the lack of uniqueness, we will likely need to extend the database to create a new field to contain the information we’ll need.

Extending the database to eliminate the problems of non-unique data or special characters

Extending the database to create special fields to contain the data we will use in our pretty URLs can be a lengthy process. What we will need to do is create a program that will first add a new field to each of the tables we want to use, then:

  1. Crawl through the database and retrieve the current information
  2. Transform the information into something usable
  3. Compare the new information to data already transformed, making alterations to ensure uniqueness
  4. Insert this new data into the new field(s)

In some cases this is the only solution to get the unique data we need in a form that is usable for URLs. We will also need to keep in mind that once this is done we’ll also need to alter the original logic that inserts new data so that our new field is also populated correctly. This way anything that is added after the change will conform to our new data requirements.

Why do I need FTP access?

Once we’ve had a thorough look at the database and understand the sites foundation and any changes that it may require, then we need to look at the code that it supports. Some of the questions we ask when doing this are:

  • Can we simply call a function that will transform the old ugly URLs into our new pretty URLs?
  • Are the old URLs output from a central location or spread across large portions of the code?
  • Do we need to re-factor extensive portions of the code to implement our new design?

Back to the house metaphor, can we use an existing door to get to our new room or do we need to tear out a wall first?

The only way to discover what is needed is to open up the files that run the site and figure out how it works and the time involved depends on the state the code was left in by the developer that created it. We need to locate, or at least have a very good idea of all the places where the code will need to be altered. The only way to get this information is with FTP access so that we can download all the files and get a really good look at them.

Are Pretty URLs always possible and the best solution?

There is no doubt that pretty URLs are better than the type that contains only id values. The site is friendlier, users know where they are, it’s much easier to communicate these pretty URLs to others, and they may have significant SEO value. However, they may not always be possible or the best solution.

Sometimes it simply isn’t possible. Take for example the company that uses a proprietary warehouse management system that creates the data used by the website. It may not be possible to alter such systems or the data they create.

When the conversion is possible, whether or not the change is the best solution is largely up to the client. The cost involved with converting a site may be more than the client feels its worth. In some cases it may simply be more cost effective to trash the entire thing and start from scratch. If this isn’t possible then to leave it as it is.

Unfortunately, there is simply no way of knowing what the best solution is until the problem is investigated and the only way that I can do that investigation is if I have adequate access to the information I need.


Why Updating Your Browser is Important

Monday, March 29th, 2010

A CSS3 Reality Check…

I find myself contemplating if I will ever be able to take advantage of the improvements that will be offered by CSS3, that is, when it becomes official. Things like multiple background images, border rounding, shadow effects, transparent background colors. You can read about these, and I suggest that you do, there are several articles and blogs available so I won’t repeat the information here. If you’re interested you can try 10 CSS3 Features You Will Love and Want to Use or 5 CSS3 Design Enhancements That You Can Use Today.

The problem is that people continue to use outdated browsers that do not support new enhancements in the field and I do not see this changing in the near future, especially at the rate that new versions of the various browsers come out and the apparent reluctance of users to install these new versions.

There are various ways that, as a Web developer, I can work around this issue, or attitudes that I can take:

  1. Continue to produce the same CSS (and HTML) that I know works in all the browsers, catering to the oldest.
  2. Create different CSS (and HTML) for each of the different browsers so that the site looks the same for everyone (or at least as close as humanly possible.)
  3. Provide “Enhancements” that will be displayed by the newer browses only.
  4. Forget about the older browsers and concentrate on making the site look its best in the newer browsers that support CSS3

Lets first take a look at item 3 from the above list.

In my experience, most clients do not like the idea of their site looking different depending on what browser the visitor is using:

Client: I just looked at our new site and it doesn’t look like the design we approved.
Developer: What browser are you using?
Client: IE6
Developer: IE6 does not support some of the features that we used to create the site. We created it so that it would look as good as possible in IE6 and enhancements will be seen by visitors that use newer browsers.
Client: It has to look like the design is IE6 too.
Developer: We’ve looked at your visitor statistics and only 2% of your visitors use IE6.
(of course, the clients IP has been blocked in analytics, so this is only external traffic).
Client: Everyone here at the office uses IE6.
Developer: Can you upgrade to a newer version of IE or use FireFox?
Client: No, the company has made it a policy that everyone uses IE6 and we use an older operating system on our computers because of a special application we use that will only run on Windows 98.
Developer: Is glad that he’s on the phone and the client cannot see his eyes rolling up into his head as he tries to figure out what to say.
Client: Make it look right in IE6.

To be honest, I can’t argue with the idea. It is their site and they want it to look its best for everyone. On the other hand, I do feel that clients should do more research into who is visiting their site and what browsers they are using to do so. This information is usually readily available through the analytics tracking that is most likely already installed on their site. CSS3 will offer some great enhancements that developers can’t take advantage of if they must cater to older browsers while at the same time trying to keep the cost of producing the site down.

Now for Item 4

As you can imagine, this goes over even worse than number 3 for similar reasons, although it is the choice I would pick. In this developer’s humble opinion, the way to make the world update their browsers is to make the web look bad if they don’t. The simple act of upgrading your browser when a new version is available would make my life much easier. I could then forget about making sure I look at every available browser reducing both my workload and the cost of producing a Web site, which in turn would reduce the clients’ costs of having a new site created.

On to Item 2, creating different markup and CSS for the different browsers

Many articles make this seem extremely easy to accomplish, just provide a little CSS magic and bing, bang, boom, the site looks the same for everyone. This is not always the case. Lets take one example improvement that CSS3 is reported to offer; multiple border images.

What multiples border images is supposed to allow is for the developer to specify up to 8 images that will be used for the border of an element (4 corners plus 4 sides). Currently to create such borders a developer must add non-semantic elements to create the effect, in some cases as many as 12 extra elements depending on the complexity and what type of images are used, GIF, JPG, or PNG. To make things even more complicated, if we are using PNGs for their transparency, we must also provide GIF or JPG alternatives because IE6 does not support transparent PNGs.

Yes, this one simple feature would make my life much, much easier.

Now, let’s look at the reality. Since I must make the site look the same in all browsers I must provide not only different CSS, but different HTML markup as well; one version with all the extra design elements for older browsers and one cleaner, simpler version for newer browsers, in essence, creating two completely different layouts for the site. Then I must find a way to detect what browser the visitor is using and provide the correct layout.

Two different layouts is not itself a bad idea. The problem is that this will likely double (or triple) the cost of producing the site as well as increase the amount that the client will need to spend to have such a site created, and that last part is the main sticking point. In the current market, charging twice what another company charges is a sure way to loose business.

That leaves us with…

  1. Continue to produce the same CSS and (HTML) that I know works in all the browsers, catering to the oldest.

The truth of the matter, the reality of the matter, is, that until all the old browsers that do not support CSS3 are used very little and the ones that do support it dominate the market I will need to continue to create sites the same way that I am currently creating them and I will likely be retired before this changes. So, the answer to my own question is that I might be able to dream about how much easier my life would be with CSS3, but I probably won’t ever see it happen.

Unless of course we find a way to get people to update their browsers… It’s really all up to you. You can help to make the Web a better looking, more efficient place with the simply act of updating your browser when a new version is available. You’ll also help to make my dream a reality and maybe I’ll get to use the great new features in-store for the Web when browsers implement all of the CSS3 recommendations.

A CSS3 Reality Check…

I find myself contemplating if I will ever be able to take advantage of the improvements that will be offered by CSS3 [http://www.w3.org/TR/css3-roadmap/], that is, when it becomes official. Things like multiple background images, border rounding, shadow effects, transparent background colors. You can read about these, and I suggest that you do, there are several articles and blogs available so I won’t repeat the information here. If you’re interested you can try 10 CSS3 Features You Will Love and Want to Use [http://www.tuttoaster.com/css3-features-you-will-love/] or 5 CSS3 Design Enhancements That You Can Use Today [http://www.webdesignerdepot.com/2009/08/5-css3-design-enhancements-that-you-can-use-today/].

The problem is that people continue to use outdated browsers that do not support new enhancements in the field and I do not see this changing in the near future, especially at the rate that new versions of the various browsers come out and the apparent reluctance of users to install these new versions.

There are various ways that, as a Web developer, I can work around this issue, or attitudes that I can take:

1) Continue to produce the same CSS (and HTML) that I know works in all the browsers, catering to the oldest.

2) Create different CSS (and HTML) for each of the different browsers so that the site looks the same for everyone (or at least as close as humanly possible.)

3) Provide “Enhancements” that will be displayed by the newer browses only.

4) Forget about the older browsers and concentrate on making the site look its best in the newer browsers that support CSS3

Lets first take a look at item 3 from the above list.

In my experience, most clients do not like the idea of their site looking different depending on what browser the visitor is using:

Client: I just looked at our new site and it doesn’t look like the design we approved.

Developer: What browser are you using?

Client: IE6

Developer: IE6 does not support some of the features that we used to create the site. We created it so that it would look as good as possible in IE6 and enhancements will be seen by visitors that use newer browsers.

Client: It has to look like the design is IE6 too.

Developer: We’ve looked at your visitor statistics and only 2% of your visitors use IE6.

(of course, the clients IP has been blocked in analytics, so this is only external traffic).

Client: Everyone here at the office uses IE6.

Developer: Can you upgrade to a newer version of IE or use FireFox?

Client: No, the company has made it a policy that everyone uses IE6 and we use an older operating system on our computers because of a special application we use that will only run on Windows 98.

Developer: Is glad that he’s on the phone and the client cannot see his eyes rolling up into his head as he tries to figure out what to say.

Client: Make it look right in IE6.

To be honest, I can’t argue with the idea. It is their site and they want it to look its best for everyone. On the other hand, I do feel that clients should do more research into who is visiting their site and what browsers they are using to do so. This information is usually readily available through the analytics tracking that is most likely already installed on their site. CSS3 will offer some great enhancements that developers can’t take advantage of if they must cater to older browsers while at the same time trying to keep the cost of producing the site down.

Now for Item 4

As you can imagine, this goes over even worse than number 3 for similar reasons, although it is the choice I would pick. In this developer’s humble opinion, the way to make the world update their browsers is to make the web look bad if they don’t. The simple act of upgrading your browser when a new version is available would make my life much easier. I could then forget about making sure I look at every available browser reducing both my workload and the cost of producing a Web site, which in turn would reduce the clients’ costs of having a new site created.

On to Item 2, creating different markup and CSS for the different browsers

Many articles make this seem extremely easy to accomplish, just provide a little CSS magic and bing, bang, boom, the site looks the same for everyone. This is not always the case. Lets take one example improvement that CSS3 is reported to offer; multiple border images.

What multiples border images is supposed to allow is for the developer to specify up to 8 images that will be used for the border of an element (4 corners plus 4 sides). Currently to create such borders a developer must add non-semantic elements to create the effect, in some cases as many as 12 extra elements depending on the complexity and what type of images are used, GIF, JPG, or PNG. To make things even more complicated, if we are using PNGs for their transparency, we must also provide GIF or JPG alternatives because IE6 does not support transparent PNGs.

Yes, this one simple feature would make my life much, much easier.

Now, let’s look at the reality. Since I must make the site look the same in all browsers I must provide not only different CSS, but different HTML markup as well; one version with all the extra design elements for older browsers and one cleaner, simpler version for newer browsers, in essence, creating two completely different layouts for the site. Then I must find a way to detect what browser the visitor is using and provide the correct layout.

Two different layouts is not itself a bad idea. The problem is that this will likely double (or triple) the cost of producing the site as well as increase the amount that the client will need to spend to have such a site created, and that last part is the main sticking point. In the current market, charging twice what another company charges is a sure way to loose business.

That leaves us with…

1) Continue to produce the same CSS and (HTML) that I know works in all the browsers, catering to the oldest.

The truth of the matter, the reality of the matter, is, that until all the old browsers that do not support CSS3 are used very little and the ones that do support it dominate the market I will need to continue to create sites the same way that I am currently creating them and I will likely be retired before this changes. So, the answer to my own question is that I might be able to dream about how much easier my life would be with CSS3, but I probably won’t ever see it happen.

Unless of course we find a way to get people to update their browsers… It’s really all up to you. You can help to make the Web a better looking, more efficient place with the simply act of updating your browser when a new version is available. You’ll also help to make my dream a reality and maybe I’ll get to use the great new features in-store for the Web when browsers implement all of the CSS3 recommendations.


By Author

Brian Bluff
President and Co-founder of Site-Seeker Inc.

Eddie Bluff
Vice President and Co-founder of Site-Seeker Inc.

Kathy Hokunson
Regional Sales Manager at Site-Seeker, Inc.

Levi Spires
Business Manager at Site-Seeker, Inc.