Jul 03 2008

FireFox 3 and Internet Explorer 8 Beta

Published by Ron Peled under Web Development

Yes, they are here! FireFox version 3 is now available to download and in a month or two every FireFox installation out there will show a dialog to upgrade to 3. Similarly, Microsoft is planning on releasing their Internet Explorer 8 which is now in Beta 1 mode. Regardless, it definitely seems like FireFox is getting a lot of attention lately and the buzz does come on Internet Explorer’s expense:

Google Trends: FireFox vs Internet Explorer

For us, web developers, it is a mixed blessing. On one hand, we get a better, faster, more reliable browsers. On the other hand, browsers don’t just come into the market and replace old ones instantly, therefore we will now need to test for Internet Explorer (IE) 6, IE7, IE8, FireFox (FF) 2, and FF3. Not mentioning the fact that some browsers like to behave differently on different operating systems which we have to account for as well.

My first impression of FireFox 3 is a positive one. The awesome bar is indeed awesome. Performance wise it does seem to be a bit faster when it comes to AJAX, however I am not sure I notice any difference in general performance. All my necessary plugins released versions that work with FireFox 3 - so I am a happy camper. In our web development work, we did see some sections of sites that work in FF2 and break in FF3 - so be aware that there are some HTML rendering differences.

Now, the question is when will IE8 be ready for us? and what will it bring to the table? Let’s just wait and see…

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

No responses yet

Jun 08 2008

5 points for assessing link exchange requests

Out of no where you receive a friendly email from a webmaster that claims that they added a link to your website on theirs and requests that you do the same on your website. They even include a link in the email showing the page with your website name, description, and the link to your website. This is great! now, we are only being asked to add the same link to their website somewhere, should I do it?

Graph representing a network of links

The art of Search Engine Optimization (SEO) is understanding how it works and what raises your site’s ranking in the various search engines. Links that point to your site from other sites is a big area of SEO and is very important to raise the traffic levels of your sites. However, sometimes links can also hurt your positioning, especially if your site is already established and has a certain level of traffic that you do not want to sacrifice.

let’s explore five ways to asses the value of the link that is now pointing to your site and whether you should or should not add a link back on your own website:

1. Website Relevancy

An incoming link from a related (content wise) website is of higher value than a link from a non related website. So, according to this principle, go ahead and visit the website from which the link is pointing to your and asses the relativity to your content and to what makes your site jazz. Notice that in some cases industry proximity will not be enough but only the specific sub-industry within the industry is what you are looking for. For example: your site focuses on gourmet coffee and the linking website is about coffee in general - while it is more relevant than a website about teas a link from this site might hurt your existing gourmet coffee traffic and in order to keep the momentum and grow your traffic you would want additional links from ony gourmet coffee related website. This is also due to the fact that coffee related websites are a dime a dozen and it is important to stay away from the crowed and onto your little search engine optimized sub-industry.

The reason this is the first rule is because this one makes it really easy to dump the idea of a link excange. Once you realize it is not in your industry or related content you do not need to proceed. Save your time!

2. Website Ranking

Following our Search Engine Optimization logic, a link from a site with a general low ranking might hurt your site more than a link from a medium or high ranking. This principle follows the logic that search engines, in particular Google, will rank your site higher if the links pointing to your site are from established and higher ranked sites. Hence, the beasic question that you want to answer is does the site linking to my site has higher PageRank value at its home page than my site’s home page? Notice that PageRank is aranking system offered by Google, if you do not wish to rely on Google alone you can simply run some relevant keyword searches in all three major search engines and see if your site shows up before the linking website or not.

Once you know which one is higher the action should be obvious, if the site linking to your is of lower ranking you should not proceed with the link exchange. It will never hurt you if you have incoming link from the lower ranked website but it may lower your ranking if you link back. Next.

3. Location and the position of the link

Ok. Now we passed the first two tests and we want to look at the specifics. Where is the link located? is it on every page - that would be the best! Is it on an easy to find page (great!)? is it on a hidden page (bad!)? Unless it is on a hidden page, you may want to proceed - but in most cases it will be located on a links page with a whole lot more links on it and you wonder if this is of any good to you. This is where you need to investigate further:

If the links page has over 100 links and seems like something put together very abruptly and with no real way for a user to find your site in the list of sites easily, you might want to abandon the link exchange. If the page is of about 10-40 links and the sites are clearly labeled and given a description and your site can easily be identified or is located near the top of the list - it might not be a bad idea to work with this website/webmaster.

4. Automated or manual link exchange request?

Some sites pay a third party to enhance their SEO and the third party develops a little utility to bombard every email they came accross to send the link request. This can be seen if the links page is full of unrelated links and is overpopulated or if the email is coming from a third party and you have a feeling it may be automated. It is tru, there is no real way to identify sometimes but here is where you can add some human element to it: call or email the person back with questions or perhaps just ask: ‘where is your business located?’

In general, you should value with a lot more respect the manual requests that come in. Perhaps even be ready to tke it to the next level outside of the boundaries of the web. Automatic requests obviously need not waist any more of your time. Next.

5. Intuition

I had to add this since I have seen a lot of link exchange requests. Always have your site’s best interest at the back of your mind. The bottom line is will this link exchange program bring more business through my site yes or no. You should always regard your site’s business interests and your site’s user experience top before you approach it with SEO tweaks. Remember that search engines work for the same users that you want to serve, so their algorithm will favor better UI in most cases. What it means to youis that if you feel that this link exchange addressed all the above items but you still feel uncomfortable with it - don’t do it! go and work on something else that will bring additional hits to your sites.

Summary

As search engine optimization gets analyzed more and more and the value of an incoming link gets higher you will receive many link exchange requests. Stay on top of the game and work with the link exchanges that bes fit your website while avoid the ones that benefit the other side only. Remember, linking is only one tool of a set of tools in your SEO arsenal.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

No responses yet

May 26 2008

ZenCart: Develop an Advanced Plugin Without Overwriting Core Files

At Activo, Inc. we have a few products that integrate between ZenCart and other systems. Recently, we went through the exercise of rewriting our Activo ZenCart POS (RunIt) Integration plugin so it will not require overwriting any core files. It took some time to read and research the ZenCart’s best practices and to follow the documentation, however once we learned what is available and how to use it, converting the code was a breeze. Our previous version of the plugin included already some usage of the flexibility of ZenCart but to complete the abstraction we needed to use the initSystem and the Observer Class.

Making sure that your plugin does not override any other core files or doesn’t require tweaking any core files is important for several reasons. First, overriding core files prevents smooth upgrades - it doesn’t matter how small of a change you introduced once upgraded you will always have to reintroduce the change. Second, a plugin that does not override core files have better chances (95%+) that it will interact smoothly with other non-obtrusive plugins. Third, respecting the platform’s API extends the life of your plugin over several versions of the platform that it plugins to. The following four different methods or subsystems are available for writing efficient and non obtrusive plugins within ZenCart:

Template Override Mechanism

This is the most common way of modifying your own shopping cart and making it stand out from other ZenCart systems. I believe the template override system was introduced right after ZenCart was span off of osCommerce. While, the current templating system is not my favorite (Joomla CMS has a much better template system), it does introduce all the flexibility that one needs in order to generate a custom template in ZenCart. At Activo, we have developed several shopping carts that do not resemble a typical ZenCart site. Here is how:

  • look under the /includes/templates folder - you will find the two templates that ship with every ZenCart: ‘default_template’ and ‘classic’. To add your own template, create a new folder try to use related name to your site or store and make sure to follow linux web folder naming conventions as this folder will be used for every CSS, Image, or Javascript files on your site.
  • Add the description file to your newly created template folder. This file will allow some information to be displayed in the admin area of ZenCart under Admin > Tools > Templates.
  • You probably want to add a jpeg or gif screenshot image of your template front end, however this is optional. If you do, don’t forget to place it in /includes/templates/<Your Template Folder>/images and put the name of the file inside the ‘template_info.php’ file in the ‘$template_screenshot’ variable.
  • At this point you have a template that will display everything exactly as the default_template because each file that cannot be found under your newly created template folder, ZenCart will look for the same file under the ‘default_template’ folder. So, to custromize just copy one file at a time from the default_template folder and begin customizing.

Note there is a lot more to this templating system than the files that you can override under the custom template folder. This will require its own article altogether.

‘extra’ Files Automatic Inclusion

If you spend enough time looking around the ZenCart folder, you will find a few folders that start with the words ‘extra_’. Any PHP files under these will run through execution before any page loads. The main purpose of these folders however, is to include definitions or init values necessary for some modules or components that you install or that you are writing. Since these folders run before anything ‘interesting’ happens with ZenCart, it won’t help to run scripts here. Similarly you will find ‘extra_*’ folders under the /admin/includes and some additional all around the site with more specific purposes, here is the full list with a small description for each one:

  • /admin/includes/boxes/extra_boxes - Extra submenu items for anything but the first column of the admin menu.
  • /admin/includes/extra_configures - Configurations files for admin panel plugins.
  • /admin/includes/extra_datafiles - Data files and data file definitions for the admin panel plugins.
  • /admin/includes/functions/extra_functions - Additional function files. These functions will be declared globally in the admin panel and can be used form your plugins.
  • /includes/extra_cart_actions - Custom shopping cart actions. Special logic to the shopping cart.
  • /includes/extra_configures - Configuration files which will be included in the front end.
  • /includes/extra_datafiles - Data files and data file definitions for the front end plugins.
  • /includes/functions/extra_functions - Additional function files. These functions will be declared globally in the front end and can be used form your plugins.

initSystem

The initSystem of ZenCart is an extendable system that allows programmers to define what happens on initialization while remaining within the ZenCart framework. In simple words: it lets a programmer set your plugin environment in any way, shape, or form without rewriting the ‘application_top.php’ file. From the wiki page directly:

The term initSystem, apart from being a tag used to group certain PHP files together in the new documentation, is meant to embrace all of those files that are automatically included/initialised before any ‘command’ scripts can be run.

Zen Cart™ uses a (non Object Oriented) page controller pattern to decide the scripts to run, based on HTTP_GET parameters. The most important of these is the ‘main_page’ HTTP_GET parameter. Depending on that parameter, a command script is then run. Each commmand script resides in a directory in /includes/modules/pages.

The essence of how to use it is well described in the wiki page. What’s nice here is that ZenCart’s own internals make use of this system and you can see it under the ‘init_includes’ folder. It is fairly easy to add your own init script files and extend ZenCart to fit your needs. Make sure to read all of the documentation on the wiki page since there are some easy-to-overlook pitfalls like file name conventions and the order of which things happen in this system.

Observer Class

The Observer Class system of ZenCart is a sophisticated way to avoid core hacks in common places. It is a design pattern that is being used a lot in operating systems, and GUI design. It introduces a notion of events. A set of global events is declared throughout the ZenCart system and you can define your own logic or set of tasks that can be invoked by attaching your class to a specific event or a set of events. The list of events is pretty vast with the latest version of ZenCart (ver 1.3.8a) and can be seen at the wiki page for this system.

Conclusion

The above four methods of customizing and extending ZenCart is all that a good programmer needs in order to develop a robust, scalable, modular, and secure shopping cart website. These systems do not exist in osCommerce or any other open source shopping cart systems out there, at least not at the same level of maturity.

Enjoy!

Resources:

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

One response so far

Apr 13 2008

About Linux Distros: Ubuntu and CentOS

A few weeks ago, we setup a new production LAMP server to host a few of our client’s sites, medium size eCommerce websites. I wanted to share our experience as we came across the three big (and free) Linux distributions while we evaluated and setup the machines. We have previously setup Ubuntu Server 7.04 for our development and staging environment while researching the related family of North American Linux distributions: RedHat, Fedora and CentOS.

CentOS vs Ubuntu Install Screenshot

I’ll start with the positive: in the last few years Linux distributions in general have become main stream OS and most of the installation process is user friendly. Almost each distro offers the ’server’ edition of the OS which comes mostly configured with what a production LAMP server needs to have installed already. The installation packages are clearly labeled for i386 or x64 bit, and most even offer a net install which in CentOS case only requires downloading about 7MB of ISO file and the rest is done on the fly.

Now, let’s delve into the differences that affected our decisions, labeled according to key points and in order of importance to us:

Setup Efficiency: ROI and Learning Curve

I had the experience for setting up both Ubuntu server and CentOS server editions on two different machines. Both machines had similar configurations of two 500GB harddrives mirrored in hardware Raid1 with a 3ware card, and Intel Pro dual NIC. The rest of the hardware setup is pretty much the standard Intel based processors. Both Ubuntu and CentOS had no problem in recognizing all the hardware on the machines and the setup process went pretty smoothly. The differences began showing after the initial setup: while CentOS shows an additional very helpful setup (NIC assignments, firewall, and services setup) Ubuntu had no such thing and showed the login prompt right after boot. What I found surprising is that Ubuntu required additional steps in order to download and install SSH using aptitude - if one chooses a server edition, shouldn’t it be setup for you by default?

Although aptitude is a great package management software, I have found that the server version of Ubuntu is just not mature enough or simply chooses the minimalistic approach which doesn’t fit my understanding of a server distro. Many of the tasks that were performed by CentOS by default or had options for that during the install were missing in Ubuntu. At the end of the day, setting up Ubuntu took days while CentOS took hours. Did I say ROI? CentOS is the clear winner.

Package Management Systems

Ubuntu prides itself on apt-get and aptitude which builds itself on top of the debian package management system while CentOS, Fedora and RedHat, use the rpm and yum package management systems. After using all systems I can clearly say that I favor the yum and rpm package management systems.

First, with apt-get/apt-cache/aptitude I had to constantly refer back to the documentation on Ubuntu’s site and I still cannot remember which one do I use for searching, installing, upgrading, describing, or removing packages - do we really need the separation? With both yum and rpm simply provide a separate option and you are good to go, all the information is flowing into the terminal and it took me only one glance of ‘man yum’ to understand what and where.

Second, in the particular case of apache, vhosts, and extensinos, aptitude allows flexibility at the price of re-arranging the apache.conf and vhosts.conf into a collection of files and folders. Yum does a similar thing as well, however I still found yum’s method to keep the original httpd.conf mostly intact which allowed my familiarity with the basic apache configuration skill to take over and finalize install in no time. In my opinion, the deviation from the standard has no benefit whatsoever. The price of flexibility comes over familiarity but yet yum had the upper hand and ease of use.

Third, setting up a package that requires dependencies is equally good in both systems: they both do a very good job of finding the dependencies, looking their download sources, installing and setting it all up. However, I did find that yum had the best reporting system and after it gathered all the information it showed a useful status report while asking permission to proceed - this is valuable for sys admins and it does save time. Once more, yum feels like a more mature package management system.

Production OS? Stability vs Cutting Edge

Here is where I wanted to introduce a bit of the feeling we all shared after setting it up, plus the feeling of some colleagues of mine who I consider to be Linux Admin Gurus. At the end of the day, when all is setup and configured, the feeling from the CentOS system was much more secure and I knew exactly what is installed and what is not. Conversely, Ubuntu server did not give me that worm fuzzy feeling that ‘all is good’ and if I needed to make a change, I would have to refer to documentation first before I touch the server.

When I ask some Linux Guru colleages who manage production linux clusters on a regular basis, they all point to CentOS or RedHat due to stability and performance record. In other words, you won’t get the latest cutting edge packages like Ubuntu or Fedora - but it is guaranteed to be much less flawed.

Conclusion

The bottom line is that distro preference is a personal decision. Personal to the individual who administers the systems and personal to the organization. We’ve chosen CentOS over Ubuntu, Fedora, and RedHat. The only option I see that might change is adopting RedHat due to the technical support that is offered for a fee. Hands down, CentOS provided the fastest configuration time, lowest learning curve, better ROI, superior package management system, and a good fuzzy feeling of stability. Thanks to CentOS, we can get back to our main passion: Web Development…

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

9 responses so far

Mar 25 2008

Free Open Source ICO File Format for Photoshop

Once in a blue moon, a web developer will need to format or re-work the favicon for the website they are working on. What are the alternatives? Download a shareware from download.com. Any of those applications will need installation. Most people start complaining within a month or even a week if they haven’t purchased a license. I always try to avoid such ad-hoc installations, because you never know what else you might be installing on your machine. In other words, it’s not safe or stable.
open source file format plugin for Photoshop
A nice, free, and open source alternative is the open source file format plugin for Photoshop. This little plug-in works on Mac, PC, and even VISTA platforms. It supports Photoshop versions up to CS2. If you have Photoshop installed on your machine, all you have to do is download the zip, and copy the plugin (1 file) into the right folder. On my laptop the path to the folder was:
C:\Program Files\Adobe\Adobe Photoshop CS2\Plug-Ins\File Formats

Reopen your Photoshop and you are done! drag and drop the ico file or save your image as (use “Save As…”) and choose the ICO file format.

If editing icons were a bit easier than playing with pixels. On a side note, what happened to the transparency with icons? That’s a question for another day..

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

One response so far

Mar 17 2008

3 Pitfalls to Avoid for a Faster Ektron CMS400 Website

Server performance is one of the most important functions of websites today. Users expect immediate response when clicking around your site. Even a 3.5 seconds delay may send them somewhere else. Also,  search engine crawlers (like Google) will rank you lower as a result of high latency. Hence, it is not only important to practice a faster website delivery, it’s a necessity. Recently, we have assisted our clients with server performance, which we supported using Ektron CMS400 v7.0.4. Here are the three main server performances we have noted after testing and tracking down the cause of website delays by using the Trace technique in .NET:

1. Avoid XML/XSLT Tranformations for Controls Output

After researching the cause of a huge latency greater than 2 seconds on every page refresh, we have discovered that about 50% of the latency was during the Page_Load occurrence. A more thorough research revealed that the 50% in delay was occurring during the XSLT transformations of all the controls on the page.
By caching these controls, (this solution is only partial and not recommended), and changing the way controls are rendered onto the page, we were able to reduce this latency to less than half. Therefore, we recommend building your Ektron site with the basic Ektron controls, and if you need a special way to present the information, use the code behind to generate a display of the data while you gather the data through the Ektron API and process the data programmatically. In other words, avoid XSLT altogether.

2. Make Use of the Flex Menu Ektron Control

Most of the Ektron sites that we’ve had the chance to work on were structured similarly. The main menu was a set of multi-level menus, which are all rendered by a style-specific XSLT. In some cases, before running through the XSLT, a script was passing through the menu items to find the one that needed to be ’selected’.
Why should we reinvent the wheel?
If you read Ektron’s documentation, you will find a few menu controls that can be very handy: DHTMLMenu, Menu, SmartMenu, and FlexMenu. Each one has its advantages and disadvantages. In short about each one:

  • DHTMLMenu: My least favorite. Uses too much JavaScript and doesn’t render nicely for SEO
  • Menu: The simplest one to use for basic menu systems
  • SmartMenu: I like this menu because it’s a styled and nested unordered list. It can also support section 508 and highlights the selected menu item by a client side script, which is a lot more performance friendly
  • FlexMenu: Our tests indicate that this menu control is the fastest if you have a sophisticated XSLT. It seems like Ektron simply provided a flexible menu control specifically for XML transformations.

We recommend the use of the SmartMenu, and if you insist in using XSLT to display a menu, use the FlexMenu as the alternative.

3. Make Use of the .NET Caching Mechanism

A simple thing for developers to set, isn’t it? Well, you can’t imagine how many sites we’ve seen without any caching beyond what the default settings allow. There is so much more to cache, it is almost a crime not to make use of it in our technology-driven age.

Ultimately, the above lists are just a few main performance issues that we have found with many Ektron sites. The items above alone can improve the site’s performances by up to 50%. However, this list is far from complete by any means. Hardware, Paging, Deadlocks, Server Environment, and even Bandwidth need to all be reviewed in order to improve performances.

Fast Surfing!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

2 responses so far

Mar 10 2008

10 Key Search Engine Optimization Items - Feeding the Spiders

Most of today’s internet traffic originates with a search. It’s no secret that most of the traffic that originates  comes from Google. Hence, when you start analyzing and tweaking your site so you will get more traffic, you target Google’s policies on improved rankings.

Google looks at the basic HTML page from a standards point of view. In other words, Google’s crawler/spider tries to identify key information that is labeled and described correctly. Search engine spiders appreciate the extra information and consider well labeled and well described information extra ‘tasty’. The following are key items to consider when building any web site in todays search engine centric world.

Spider Web

1. Search Engine Friendly URLs (SEFs)

Try to make use of a good folder and file naming structure. The folder should describe the category or section of the site and the file name should summarize in a few words (typically 2-5 words) the subject of the page. Today, many websites are database driven either eCommerce or Content Management Systems (CMS), however, any respected system has a way to make sure that the URLs are self describing and conform to the site’s content logic. Make use of the ReWrite URL module for Apache or .NET’s URL aliasing mechanism. Additionally, many content management systems like Ektron CMS400, Joomla CMS, SiteCore, and SiteFinity allow the content editor to define the page URL or setup an automatic rule to generate the page URL when published.

2. Page Titles - the <title> html tag

The second place that the crawler/spider will look for additional information about the page will be in the page title. Similar to the SEF, we recommend using a reverse hierarchy of the page with respect to its section and category. Something like the following would work great:
{Page Subject} - {Section} - {Site Name} - {Site Slogan}
If the Page Title matches the SEF - even better!

3. Meta Tags - the description and the keywords

Yes, it is true that search engines do not rely solely on these hidden pieces of information anymore. However, it is noticeable that sites with well written meta tags has an advantage over sites that disregard these tags completely. The key points are a short list of keywords for the page (not for the site!). Typically, you should have 2-5 main keywords for the web page. Ideally, each web page has its own dedicated keywords. The description is a short summary of the web page and usually about 2-3 sentences will suffice.

4. Breadcrumbs - another enforcement of the subject in the web page

Breadcrumbs are the little list of words describing the path to the item. They are usually located under the header and at the top of the page. The repetition of the information is what really assists with the search engine optimization. We typically recommend the reversal order of the title, something like:
{Home Page - optional} - {Section} - {Category} - {Page}

5. Performance Optimization - allowing the spiders to crawl faster

One of the reasons why many of the top ranking sites are simple informational pages or basic HTML pages is because they are served extremely quickly. In today’s world of large pipes of bandwidth, most internet users still (believe it or not) use dial up modems or DSL with very limited bandwidth. While it is true that bandwidth has improved in recent years, the pace of improvement has not come close to the pace of which pages grow in size due to graphics and special effects. Hence, performance is critical. Make sure to use tools like YSlow (FireFox extension) and Performance Analyizer to measure and improve your sites performance.

6. Valid, Semantically XHTML and CSS

Crawlers, unlike browsers depend on the validity of the HTML which builds the page. While most browsers tolerate bad web page structures, spiders are known to penalize for such defect. In addition to the validity of the web page, it is important to make use of semantic HTML. Semantic HTML is a way to label, tag, and as a result style web pages which describes the content not placement or any styling characteristics of the content. In other words, if a specific side box contains information about manufacturers, label the div tag with class=”manufacturers” or id=”manufacturers” instead of “second_right” or “brown_box” etc.

7. Avoid Nested Tables, or Tables for Layout as a Rule of Thumb

Table layouts and nested tables create significant overhead of unnecessary HTML tags and clutter. The clutter makes it hard for the spiders to differentiate between important and non-important information. Additionally, with well formatted XHTML and CSS, it is fairly easy to bring important information to the top of the page therefore giving it higher weight when indexed.

8. CSS and Ordered Lists Menus Instead of JavaScript or Flash Based Menus

Yes, it is cool to have a flashy animated menu or a smooth transitioning javascript based menu, but the bottom line will get affected. Spiders cannot read these menus. A good main menu shows on all pages in the same place, a flash or javascript menu will not only prevent guiding the spiders but also force the spider to skip important pages. According to the spider, if there is no link to the page, the page doesn’t exist in the spiders’ point of view.

9. Bottom Links - the Best Place to Remind Spiders of Additional and Important Pages

In addition to the main menu links, bottom links are a great location to place links that were left out. The bottom links are a great example of using web pages length, which are unimportant from a UI perspective, but key for SEO. Simply add or repeat links to the important pages at the bottom of the home page, and even at the bottom of every page in the site. This is also the place where you can try different variations of the links:

<a href="mylink">Wholesale</a>
...is very different from:
<a href="mylink">Wholesale Coffee for Restaurants and Grocery Stores</a>

10. Reduce the Size of JavaScript and CSS Files

There is really no need to have inline Javascript or CSS clutter in web pages anymore. The amount of free and open source tools and the commercially available tools allow any professional web developer to collect, minify, and compress JavaScript. It allows developers to collect, consolidate, and compress CSS code. An additional benefit of extracting this code and placing them in a separate files is the fact that once the files were read once by the browser, they are cached for a while. Each browser has separate algorithms and default lengths of caching, which therefore speed up the site and use less bandwidth. One improvement means double the fun!

So now, go back to your drawing board, and spice it up for the spiders!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

5 responses so far

Sep 25 2007

What mode; Release or Debug?

Published by joepurnell under .NET Framework

One of the Toolbar items in Visual Studio.net version 1.1 that I found very insightful was the Release Solutions Configuration dropdown. If the solution is set to Release or Debug mode this dropdown reflected it. If you wanted to force a compile in Release or Debug mode, you could also do so through it. However, in version 2.0, it’s hidden. If you want to make it display on your tool bar you have to follow these steps:

  1. Right Click the Toolbar
  2. Checkmark/Select “Build” (might already be selected)
  3. Click the “Toolbar Options” down-arrow (lower right-hand side of the “Build” controls)
  4. Click “Add or Remove Buttons”
  5. Click “Customize”
  6. Select “Build” in the left “Categories” column
  7. In the right column “Commands”; scroll down and drag “Solution Configurations” to the Toolbar

Anyone know of best practices to use when configuring between Debug and Release modes?

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

No responses yet

Sep 21 2007

Subversion to the Rescue

Published by joepurnell under Web Development

It just isn’t enough to have the best tools in the world if you don’t know how to use them.  Consider Visual Source Safe; a wonderful product in its own right.  But I, like a novice dude-ranch tourist facing an unbroken thoroughbred, was left frustrated by its wild side to take over the read/write properties of code and markup files.  What to do, what to do. 

You can only scratch your noggin so much in your futile attempt to google “Best-practice vss” before you give up the search or lose your hair.  I wasn’t sure I was using the source safe the right way, and training on a tight deadline was out of the question at this point.  I needed the version control to allow me to work on a local copy of my files and then port them over the network to another development machine and have it work the first time.  The trouble was, the references never carried over.  In hind sight, I should have known to save the projects in a uniform directory structure for that to take place, but the best practices of that were no where to be found.  I only found out about that little bit of information from a coworker who was extremely well versed in his own version control skills.  The problem though, was that his version control of choice was not Visual Source Safe, but a set of open source tools.

Enter Ankh and Tortoise, two open source subversion tools that our php guru carries the banner for, much to the chagrin of my pro-Microsoft traits.  As an aside, one can only endure so much frustration, sticking up for Microsoft’s premier version control product against a banner wielding fanatic, when one has only enough information and training in it to be a little bit dangerous.  I had a wild thoroughbred, he a donkey.  Mine was a better bet to win the race if you were a jockey.  His was a better worker under any rider, let alone his better experience. 

I gave in, we made the switch and so far this donkey is a powerhouse. 

You know, I think I’ll start a list of my own best practices.  Please feel free to add your own to help out those aspiring jockeys out there.  So in brief, here are some best practices I would recommend with Visual Source Safe

1. If you’re going to develop using Visual Studio.net on a local system and share the VSS as a team, I recommend you set up a standard directory structure across the board.  Everyone put their projects in c:\projects\[name of website].  Then when you check in the files the references will all match when someone across the building, checks out your code for editing.

2. … add your own

 Best wishes,

Joe 

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

No responses yet

Aug 02 2007

My ZenCart site is down [Problem Solved]

Published by Ron Peled under Web Design, ZenCart

The Problem

This morning, we got a few calls today from clients complaining about not being able to login into the administrator panel of their shopping carts. They were all using ZenCart ecommerce. After a 45 minutes on the phone with LiquidWeb (a hosting company that excels in support) we figured out the problem: each time you login into the admin panel of ZenCart, a quick ‘Update Check’ is being done. The Update Check is using a webservice to display the latest update from the official ZenCart site. However, this morning the official ZenCart site was down which halted the login process altogether.

The Solution

After you unsuccessfully try to login, use the same browser window or tab and go to this URL: http://www.[YourDomain].com/admin/index.php and try until you manage to login. Once you are logged in, go to ‘Configuration’ > ‘My Store’ page. Click on the 8th option from the bottom, the one that says: “Show if version update available” and change it to false. Click on update and you are done. Try to logout and log back in again.

A better solution will need some coding. What we recommend is setting a timeout on the web service query to 10 seconds. The only problem with this is that it will require modifying the core files which is always a bad idea. For now, the above solution should work.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon

No responses yet

« Prev - Next »