A search engine is through which most of your potential visitors will discover your site. But for that to happen you first need the search engines in turn to discover your site.
It is only when the search engines 'understand' that your site is one of the best online places to find the kind of quality content that your site provides, is when they 'recommend' your site to people interested in similar content.
If all that sounds a bit abstract, allow me to elaborate.
Search Engines like Google, Yahoo and MSN routinely search the web for content and try to relate content to some keywords which they consider the focus of your content. So for example this tutorial on SEO is related to the term SEO. A web surfer looking for articles on SEO will query these search engines for the term 'SEO' and will get results based upon what search engines think are good sites for content related to the term 'SEO'.
In fact, a search on Google for SEO yields about 17,600,000 results at the time of the writing of this tutorial. Our web surfer looking for SEO related content would definitely not look beyond 15 or at most 20 initial links. The question then is how does the search engine decide which links to place before the other ones on such a search result.
Search Engines rank the pages for the specific search term and then show the pages in the order of those rankings. Google associates what is called a PageRank for each site. PageRank measures from 1 to 10, with a PageRank of 10 specifying a highly relevant site, and the relevancy decreasing in the order of the PageRank. Other search engines like Yahoo and MSN have similar ranking strategies. SERP (Search Engine Result Page) rankings in Google depend on the PageRank and also on how well the web site relates to your searched words. Given two web sites which relate equally well to your search term, the web site with a higher PageRank will be ranked higher in the SERP's.
Search Engine Optimization or SEO refers to how you can optimize your site such that your site is more aligned to the criteria that search engines use to rank web sites.
There is a lot of content online which will tell you a lot of stuff that you can do for SEO. Unfortunately most of these articles will tell you stuff that will waste a lot of your time and will not yield any desirable results. Worse, quite a few will tell you stuff that is outright wrong and are considered search engine spamming by major search engines. Using such techniques can result in your site being black-listed from their SERP's. Fortunately, there are still a lot of right things that you can do so that search engines rank your site favorably on your targeted search term.
The best part is, right here on this tutorial we tell you everything you should be doing and everything you shouldn't be doing for SEO.
Wednesday, May 23, 2007
Wednesday, May 16, 2007
Is Google Killing SEO?
Paid search listings could become more relevant than organic listings because of the emphasis on inbound links in search algorithms.
It just occurred to me that Google is killing organic SEO. Google's paid search algorithm is allowing the user to be the ultimate SEO. Based on user search behavior -- the type of links clicked on and the amount of time spent on a landing page after leaving Google -- your paid search ads become more relevant, undermining traditional SEO efforts to bring client sites to the top of the SERPs.
Google's paid search algorithm acts almost like a rating system. Google will discover the most popular sites based on user preferences, allowing it to serve highly relevant results based on paid search landing pages. As a result, search engines will likely start serving more sponsored links, and the organic links will start to fade away.
GoogleBot likes info The object of B2B and ecommerce commercial websites is to sell products and services online. These sites have an increasingly difficult time ranking well on Google because the GoogleBot eats up information and spits out products and services. Therefore, organic links are becoming less relevant and have low quality.
The antidote to low-quality organic links is pay-per-click advertising and strategic ad placements such as links on great information sites. These promotions are very effective, especially when displayed on vertical search engines (VSEs). In fact, this could become the ultimate way to do SEO in the future.
Saga of the broken algosI'm not the only guy who sees a weakness in the Google search algorithm. In his article, "Are User-Generated Websites Breaking The Search Engines' Algorithms?" Tim Daly suggested that paid search listings could become more relevant than organic listings because of the emphasis on inbound links in search algorithms.
Google rewards sites with links coming from important, authoritative sites. The company's reasoning is that a site with numerous quality inbound links must be popular, ergo it is a quality site. Sites with higher PageRank scores are given higher rankings than those with a lower PageRank. Once Google gained popularity based on PageRank, all the other search engines followed suit, so this ranking system dominates. Perhaps at the time, it was an excellent ranking variable, but it's becoming outdated today.
As Daly shows with his example of Wikipedia's dominance in the SERPs, an abundance of quality links does not necessarily an authoritative site make. This is a subjective take, based on the weight given to inbound links by Google's PageRank. As demonstrated by the questionable accuracy of some Wikipedia content, it takes more than links alone to prove authority.
Bridge over troubled watersResearch shows that general search engines are losing ground to vertical search engines (VSEs). Outsell reported a 31.9 percent search failure rate among business users on major search engines. This means that roughly one-third of user queries yield unsatisfactory results.
Convera went further by saying general search does not meet the needs of today's business and professional users. General search queries result in time inefficiencies and unmet needs as critical information becomes increasingly difficult to find quickly on the web.
In contrast to general search engines, vertical search engines have built-in preference mechanisms and are constantly rolling out improved features. In my opinion, bidding is the best qualifier. VSE users naturally weed out faulty search engine algorithms. Clients bidding high on irrelevant keywords for the sake of attracting traffic would have their budgets zapped, resulting in a dreadful ROI, and business users wouldn't stand for this.
VSEs also have built-in merchant rating systems similar to those of a power seller on eBay. This further refines the search relevance.
It just occurred to me that Google is killing organic SEO. Google's paid search algorithm is allowing the user to be the ultimate SEO. Based on user search behavior -- the type of links clicked on and the amount of time spent on a landing page after leaving Google -- your paid search ads become more relevant, undermining traditional SEO efforts to bring client sites to the top of the SERPs.
Google's paid search algorithm acts almost like a rating system. Google will discover the most popular sites based on user preferences, allowing it to serve highly relevant results based on paid search landing pages. As a result, search engines will likely start serving more sponsored links, and the organic links will start to fade away.
GoogleBot likes info The object of B2B and ecommerce commercial websites is to sell products and services online. These sites have an increasingly difficult time ranking well on Google because the GoogleBot eats up information and spits out products and services. Therefore, organic links are becoming less relevant and have low quality.
The antidote to low-quality organic links is pay-per-click advertising and strategic ad placements such as links on great information sites. These promotions are very effective, especially when displayed on vertical search engines (VSEs). In fact, this could become the ultimate way to do SEO in the future.
Saga of the broken algosI'm not the only guy who sees a weakness in the Google search algorithm. In his article, "Are User-Generated Websites Breaking The Search Engines' Algorithms?" Tim Daly suggested that paid search listings could become more relevant than organic listings because of the emphasis on inbound links in search algorithms.
Google rewards sites with links coming from important, authoritative sites. The company's reasoning is that a site with numerous quality inbound links must be popular, ergo it is a quality site. Sites with higher PageRank scores are given higher rankings than those with a lower PageRank. Once Google gained popularity based on PageRank, all the other search engines followed suit, so this ranking system dominates. Perhaps at the time, it was an excellent ranking variable, but it's becoming outdated today.
As Daly shows with his example of Wikipedia's dominance in the SERPs, an abundance of quality links does not necessarily an authoritative site make. This is a subjective take, based on the weight given to inbound links by Google's PageRank. As demonstrated by the questionable accuracy of some Wikipedia content, it takes more than links alone to prove authority.
Bridge over troubled watersResearch shows that general search engines are losing ground to vertical search engines (VSEs). Outsell reported a 31.9 percent search failure rate among business users on major search engines. This means that roughly one-third of user queries yield unsatisfactory results.
Convera went further by saying general search does not meet the needs of today's business and professional users. General search queries result in time inefficiencies and unmet needs as critical information becomes increasingly difficult to find quickly on the web.
In contrast to general search engines, vertical search engines have built-in preference mechanisms and are constantly rolling out improved features. In my opinion, bidding is the best qualifier. VSE users naturally weed out faulty search engine algorithms. Clients bidding high on irrelevant keywords for the sake of attracting traffic would have their budgets zapped, resulting in a dreadful ROI, and business users wouldn't stand for this.
VSEs also have built-in merchant rating systems similar to those of a power seller on eBay. This further refines the search relevance.
Tuesday, May 15, 2007
Some Things To Consider When Evaluating Your Website
You have either put a lot of effort into your website or you have paid someone else a lot of money to put the effort in for you. Either way, whatever the purpose of the website, you want to get the most out of it. The question now becomes, how you can tell if your website is likely to succeed.
Why?
The first thing to do is to ask yourself why you have set up the website. Are you trying to sell a product or provide information or something else? What do you want to happen when a visitor lands on your pages? "For a man without a destination no wind is favourable" (An old saying attributed to many). If you do not know exactly what you want to happen, how can you expect the visitors to your website to know and do it? You are the one who ought to have the site set up to direct people to their destination. If you don't know what that is, then all is lost.
Your visitors probably know why they visited your site. You too must know why they came and help them do what they came to do. If your website does not provide what they need they will move on to another one. Just because you are getting all the traffic you could hope for does not mean that your site will succeed.
Your Website's Conversion Rate
You will need to measure your success rate. There are a number of ways to do this. One is the Conversion rate. Simply put, the conversion rate is the rate at which you convert visitors into buyers. Or if you are not selling it is the rate at which you convince people to do whatever it is you need them to do. It could be to sign up for your newsletter of subscribe to something else, etc. If you have one hundred visitors to your website per day and you convert two, your conversion rate is two percent.
It is a reasonably good measure of the quality of your website. If your site is not converting, you will know that you need to make changes to the site. However, it could also mean that you marketing or advertising campaign is sending untargeted traffic to your site. In other words sending visitors who are not in the least bit interested in what you have to offer.
SEO & Traffic Generation
The whole point of Search Engine Optimisation (SEO) is traffic generation. The idea is that you optimise or fine tune your website so that it gets to the top of the search results when people enter a search term that is contained in your website. You do this to get traffic. If your site is not properly optimised people are unlikely to find it. Unless of course you have found some narrow niche that nobody else has heard of, which will not bring a lot of visitors. SEO involves using the correct keywords in the correct way and arranging the contents and menus in the right way and most important of all is link building.
To rank highly, at the time of writing, the single most important thing to do to rank highly in the search engines is to increase the number of links to your site from quality websites which have content related to the subject of your site.
Content
It may sound obvious to most people but, the content of your website should be based on the subject of your product. For example if your website is set up to sell computers then it should contain articles about computers and computing etc. not gardening articles. If you have articles on unrelated subjects they will only serve to confuse your visitors and undermine your website's and your own credibility as a sourct of products and information about computers or whatever your website is promoting.
The content should be keyword rich but not saturated or you may show up on spam radar. The content should be broken up into manageable paragraphs and properly laid out with headers for each section, making it easier to read and navigate.
Navigation
Getting the visitors to your website is only half og th battle. You then must give them what they want. What do they want? Well, the first thing they want is to find their way around your website without pulling their hair out in frustration. These days there is far too much competition on the internet for that to happen. They will move to another website at the first sign of difficulty.
Arrange all the links and buttons in a way that is easy to read and understand. Do not over fill each page. If there is too much choice people do not make a choice they just get confused and... you guessed it. They move to another website.
The first page they land on, usually the index page should be interesting. It should be obvious to them that they have landed on a page with the content they came for and the way to navigate to that content should be very clear. Do not try to give them everything on the front page.
How easy is it for your visitors to accomplish what they came to do? Do they need to fill out pages of information or can the do their business in a few clicks? If people have to figure out the puzzle that your website is they will move on unless you have something so attractive and necessary that they will stay at all costs. If you have a product like that then you can not charge enough for it.
It is always a good idea to have a professional web designer look over the site and point out any obvious flaws. I say obvious flaws because not all corrections are obvious and are often discovered through trial and error. You should keep tweaking the website in a continuous attempt to improve it. There is always room for improvement. Though it is also said that you should not fix something that works. I think that the best thing is to make gradual changes and if they are not a major improvement, at least they will not be a major disaster.
If you are not confident enough to do the coding and graphics etc. for your own site, there are many professional web designers out there who live for it. So don't let it stop you from getting you name, product or information out there.
About the Author: Steven Collins is a web designer at Desktop Web Design.
Why?
The first thing to do is to ask yourself why you have set up the website. Are you trying to sell a product or provide information or something else? What do you want to happen when a visitor lands on your pages? "For a man without a destination no wind is favourable" (An old saying attributed to many). If you do not know exactly what you want to happen, how can you expect the visitors to your website to know and do it? You are the one who ought to have the site set up to direct people to their destination. If you don't know what that is, then all is lost.
Your visitors probably know why they visited your site. You too must know why they came and help them do what they came to do. If your website does not provide what they need they will move on to another one. Just because you are getting all the traffic you could hope for does not mean that your site will succeed.
Your Website's Conversion Rate
You will need to measure your success rate. There are a number of ways to do this. One is the Conversion rate. Simply put, the conversion rate is the rate at which you convert visitors into buyers. Or if you are not selling it is the rate at which you convince people to do whatever it is you need them to do. It could be to sign up for your newsletter of subscribe to something else, etc. If you have one hundred visitors to your website per day and you convert two, your conversion rate is two percent.
It is a reasonably good measure of the quality of your website. If your site is not converting, you will know that you need to make changes to the site. However, it could also mean that you marketing or advertising campaign is sending untargeted traffic to your site. In other words sending visitors who are not in the least bit interested in what you have to offer.
SEO & Traffic Generation
The whole point of Search Engine Optimisation (SEO) is traffic generation. The idea is that you optimise or fine tune your website so that it gets to the top of the search results when people enter a search term that is contained in your website. You do this to get traffic. If your site is not properly optimised people are unlikely to find it. Unless of course you have found some narrow niche that nobody else has heard of, which will not bring a lot of visitors. SEO involves using the correct keywords in the correct way and arranging the contents and menus in the right way and most important of all is link building.
To rank highly, at the time of writing, the single most important thing to do to rank highly in the search engines is to increase the number of links to your site from quality websites which have content related to the subject of your site.
Content
It may sound obvious to most people but, the content of your website should be based on the subject of your product. For example if your website is set up to sell computers then it should contain articles about computers and computing etc. not gardening articles. If you have articles on unrelated subjects they will only serve to confuse your visitors and undermine your website's and your own credibility as a sourct of products and information about computers or whatever your website is promoting.
The content should be keyword rich but not saturated or you may show up on spam radar. The content should be broken up into manageable paragraphs and properly laid out with headers for each section, making it easier to read and navigate.
Navigation
Getting the visitors to your website is only half og th battle. You then must give them what they want. What do they want? Well, the first thing they want is to find their way around your website without pulling their hair out in frustration. These days there is far too much competition on the internet for that to happen. They will move to another website at the first sign of difficulty.
Arrange all the links and buttons in a way that is easy to read and understand. Do not over fill each page. If there is too much choice people do not make a choice they just get confused and... you guessed it. They move to another website.
The first page they land on, usually the index page should be interesting. It should be obvious to them that they have landed on a page with the content they came for and the way to navigate to that content should be very clear. Do not try to give them everything on the front page.
How easy is it for your visitors to accomplish what they came to do? Do they need to fill out pages of information or can the do their business in a few clicks? If people have to figure out the puzzle that your website is they will move on unless you have something so attractive and necessary that they will stay at all costs. If you have a product like that then you can not charge enough for it.
It is always a good idea to have a professional web designer look over the site and point out any obvious flaws. I say obvious flaws because not all corrections are obvious and are often discovered through trial and error. You should keep tweaking the website in a continuous attempt to improve it. There is always room for improvement. Though it is also said that you should not fix something that works. I think that the best thing is to make gradual changes and if they are not a major improvement, at least they will not be a major disaster.
If you are not confident enough to do the coding and graphics etc. for your own site, there are many professional web designers out there who live for it. So don't let it stop you from getting you name, product or information out there.
About the Author: Steven Collins is a web designer at Desktop Web Design.
Friday, May 11, 2007
How to Make your URLs SEO Friendly
Without search engine optimization many websites stand the chance of not being fully indexed by search spiders therefore risking not being ranked high enough (if at all) in the search engine results pages (SERPs). The resulting poor conversion rate makes the website a dead weight, demoralizes your staff and could threaten your business.
URL Rewriting
This situation is quite easy to avoid by performing some cosmetic operations to the site. One of these operations, URL rewriting, is considered by some rather difficult and a bit time-consuming but can be extremely effective and rewarding in the long run.
Why It Is Nice to Have Clean URL'sThere are two very strong reasons for you to rewrite your URLs, the first of which is related to Search Engine Optimization. Search engines are much more at ease with URLs that don't contain long query strings.A URL like http://www.example.com/4/basic.html can be indexed very easily whereas its dynamic form, http://www.example.com/cgi-bin/gen.pl?id=4&view=basic, can potentially confuse search engines and cause them to miss important information contained in the URL and you to miss those anticipated high rankings.With clean URLs, the search engines can distinguish folder names and can establish real links to keywords. Query string parameters continue to be an impediment in many search engine's attempts to fully index sites. Several SEO professionals agree that dynamic (or, dirty) URLs are not very appealing to web spiders, while static URLs have greater visibility in their electronic eyes.
The second strong reason for URL rewriting would be the increased usability for web users and "maintainability" for webmasters. Clean URLs are much easier to remember. A regular web surfer will not remember a URL full of parameters, and would obviously be discouraged by the idea of typing the entire URL. This is less prone to happen with clean URLs. Easily remembered URLs help you create a more intuitive Web site and make it easier for your visitors to anticipate where they can find information they need.Webmasters tend to find that maintaining static URLs is a much easier task than working with dynamic ones. Static URLs are more abstract, and thus more difficult to hack. The dynamic URLs are more transparent, allowing possible hackers to see the technology used to build them and thus facilitating attacks.Also, given the length of dynamic URLs, it is very possible for webmasters to make mistakes during maintenance sessions, resulting in broken links. Also, when static URLs are used, the links to the site's pages will still remain valid should it be necessary to migrate a site from one programming language to another (e.g. from Perl to Java).
Dashes vs. UnderscoresWebsites that still use underscores for their URLs are becoming scarcer and scarcer. Some say that people who still use underscores are "old school" while dashes seem be used far more often these days.A usability related reason for using dashes rather than underscores is the elimination of the confusion created between a space and an underscore when the URL is viewed as a link, or when printing such a URL.More to the point, the chances that a combination of keywords contained in your Web site is included in the SERPs increase exponentially when using dashes.For exemple: a URL that contains "seo_techniques" will be shown by the search engine only if the user searches for seo_techniques (this kind of search is rarely performed); whereas searches for "seo", "techniques", or "seo techniques" gives your URL containing "seo-techniques" a better chance of being displayed on the SERPs. The dash will help you more than you can imagine, by greatly improving your visibility on the Web.
How to Rewrite URLs
The principle of URL rewriting is actually setting a "system" on the host server that will allow it (the server) to know how to interpret the new URL format. What actually happens when one decides to rewrite the URLs of a website is called masking the dynamic URLs with static ones. This means that the URLs that previously contained query strings with elements such as "?", "+", "&", "$", "=", or "%" will contain the more search engine friendly "/" (slash) element, presenting themselves in a simplified form.To help you with cleaning your URLs here are some rewriting tools and engines, some free of charge, others fee based.
Online / Open Source Tools
free online URL rewriting
open Source URL Rewriter for .NET / IIS / ASP.NET
open Source rewrite-module tuned for ASP.NET 2.0
mod_rewrite This is the most common non-fee-based rewriting engine. It is a module from the Apache HTTP Server that allows the easy manipulation of URLs. The use of this module requires the enabling of the RewriteEngine on your Apache server. Then, rewrite rules must be defined, (you can even set conditions for each rule), thus allowing the rewrite requests as they come in.In terms of SEO, mod_rewrite can be helpful if you have complex URLs that contain more than 2 parameters. In other words, if one of your dynamic URLs is accessed, the mechanism behind mod_rewrite will "translate" it into a shorter, friendlier, static-looking URL.
Fee-Based Tools
ISAPI_RewriteThe Internet Server Application Program Interface (ISAPI) is another URL manipulation engine that functions in a similar way to Apache's mod_rewrite, the difference being it is designed specifically for Microsoft's IIS (Internet Information Server).
IISRewriteIISRewrite is a stripped down implementation of Apache's mod_rewrite modules for IIS. It is a rule-based rewriting engine that allows a Webmaster to manipulate URLs on the fly in IIS.
URL ExamplesHere are some examples of how URLs can look before and after rewriting:Example 1:
Dynamic URL: http://www.companyname.com/products/items.php?id=x&model=y&variety=z (before rewriting)
Static URL: http://www.companyname.com/x/y/z.html (after rewriting) Example 2:
Dynamic URL: http://www.example.com/cgi-bin/gen.pl?id=4&view=basic (before writing)
Static URL: http://www.example.com/4/basic.html (after writing)
ConclusionsURL rewriting can put you on the right track in the race for high organic rankings when combined with other SEO techniques. Be aware that rewritten (and, presumably, better looking and more effective in terms of search engine ranking) URLs cannot substitute or make up for a poorly designed Web site.Don't expect miracles. Nevertheless, when you decide that your site needs a makeover and start rewriting your URLs, make sure that:
You keep them as short as possible (to increase usability),
You use dashes rather than underscores (to give your site a better chance of ranking as high as possible in the SERPs),
You use lowercase letters rather than uppercase ones (to avoid those case sensitive situations),
The technology you have used cannot be detected in any of your URLs (to prevent possible hacker attacks).
Tuesday, May 8, 2007
What is a text editor?
A text editor is used to edit plain text files. Text editors differ from word processors, such as Microsoft Word or WordPerfect, in that they do not add additional formatting information to documents. You might write a paper in Word, because it contains tools to change fonts, margins, and layout, but Word by default puts that formatting and layout information directly into the file, which will confuse the compiler. If you open a .doc file in a text editor, you will notice that most of the file is formatting codes. Text editors, however, do not add formatting codes, which makes it easier to compile your code.
Why should I use a text editor?
Text editors have a feature set different from that of a traditional word processing program. For example, most won't let you include pictures, or include tables, or double-space your writing. The features of text editors vary from implementation to implementation, but there are several kinds of features that most editors have. Below are listed some of the most common and useful features.
Syntax highlighting
Syntax highlighting is a very useful feature. It means that the editor will highlight certain words or types or syntax specific to a language. For example, if you have C++ highlighting turned on, the editor might make all C++ control flow keywords appear green. This makes it much easier to follow the flow of your program. As another example, the editor might have all quoted text show up as light blue. This way, if you forget to include an opening or closing quotation mark, you will quickly realize it because of the color of the text on your screen. A text editor might also indicate mismatched parentheses or brackets by turning them red; if you have a closing brace with no corresponding opening one, the color will tell you that you made a syntax error somewhere.//Here is an example of what text might look like in your editor.
//This text is colored because it is a comment.
if (x > 5)
{
//The closing parenthesis is red because it is unmatched.
x = 5 - ((3 + y) * (8 + (z / 24))));
}
Versatility
How does the editor know which words to highlight? Good question. The editor knows what language you are programming in. It does this by either having you tell it, or, like Vim, detecting the suffix of the file. If you are working on a file named code.cc, it will see the .cc and know to use C++ rules, but if you are working on one called code.html, it will apply HTML rules instead. Some editors know hundreds of languages, ranging from the commonplace (C, Java, Perl) to the truly obscure (TADS, ABAQUS). This means that you can use the same editor to program in practically any language you can think of and still enjoy the same feature and command set that you've become accustomed to.
automatic indenting
automatic indenting is probably the most useful feature of a text editor. would you rather deal with code that looks like this (taken from a fifteen-puzzle):int get_col (int tile_id)
{
/*Cycle through...*/
int i = 0, j = 0;
while (i < Dim)
{
if (board[i][j] == tile_id)
{
return i;
}
/*If you've hit the end of the row, move to the beginning of the
* next.*/
if (i == Dim-1)
{
j++;
i = 0;
/*Otherwise move to the next space in the row.*/
}
else
{
i++;
}
}
/*This is only to get rid of the warning.*/
return i;
}
or code that looks like this?:
int get_col ( int tile_id)
{
/*Cycle through...*/
int i = 0, j = 0;
while (i < Dim) {
if (board[i][j] == tile_id) {
return i;
}
/*If you've hit the end of the row, move to the beginning of the next*/
if (i == Dim-1) {
j++;
i = 0;
/*Otherwise move to the next space in the row.*/} else {
i++;
/*This is only to get rid of the warning.*/
return i;
I thought so. A text editor will spare you the trouble of having to put in all the tabs yourself by adding them automatically. This has the benefit of letting you follow the control flow through indentation, so that you can make sure you are in the right block of code as you write.
Quick navigation features
If your program is anything above trivial, you'll want to be able to move through it quickly to find certain functions, instances of certain variables, or particular lines. Text editors typically have more sophisticated movement capability than word processors. For example, say you're compiling a program and find that you have a syntax error on line 312. In Vim, all you have to do is type 312G, and the cursor will move to line 312. (How does Vim know you don't want to type the characters 312G into the document? More on that in the links at the end of the article.)
Which text editor should I use? What's the difference between them? How do I get one? How much do they cost?
There are many, many different editors available, with Vim and Emacs being two of the most popular, portable, and powerful. Most editors (Vim and Emacs included) are free, but some are shareware. I use Vim, but each editor has its adherents. For a good listing of some of the best editors available for your platform, check out this FAQ on text editors. (It's aimed at STATA users, but all the editors listed are just fine for writing C++ code.)
Why should I use a text editor?
Text editors have a feature set different from that of a traditional word processing program. For example, most won't let you include pictures, or include tables, or double-space your writing. The features of text editors vary from implementation to implementation, but there are several kinds of features that most editors have. Below are listed some of the most common and useful features.
Syntax highlighting
Syntax highlighting is a very useful feature. It means that the editor will highlight certain words or types or syntax specific to a language. For example, if you have C++ highlighting turned on, the editor might make all C++ control flow keywords appear green. This makes it much easier to follow the flow of your program. As another example, the editor might have all quoted text show up as light blue. This way, if you forget to include an opening or closing quotation mark, you will quickly realize it because of the color of the text on your screen. A text editor might also indicate mismatched parentheses or brackets by turning them red; if you have a closing brace with no corresponding opening one, the color will tell you that you made a syntax error somewhere.//Here is an example of what text might look like in your editor.
//This text is colored because it is a comment.
if (x > 5)
{
//The closing parenthesis is red because it is unmatched.
x = 5 - ((3 + y) * (8 + (z / 24))));
}
Versatility
How does the editor know which words to highlight? Good question. The editor knows what language you are programming in. It does this by either having you tell it, or, like Vim, detecting the suffix of the file. If you are working on a file named code.cc, it will see the .cc and know to use C++ rules, but if you are working on one called code.html, it will apply HTML rules instead. Some editors know hundreds of languages, ranging from the commonplace (C, Java, Perl) to the truly obscure (TADS, ABAQUS). This means that you can use the same editor to program in practically any language you can think of and still enjoy the same feature and command set that you've become accustomed to.
automatic indenting
automatic indenting is probably the most useful feature of a text editor. would you rather deal with code that looks like this (taken from a fifteen-puzzle):int get_col (int tile_id)
{
/*Cycle through...*/
int i = 0, j = 0;
while (i < Dim)
{
if (board[i][j] == tile_id)
{
return i;
}
/*If you've hit the end of the row, move to the beginning of the
* next.*/
if (i == Dim-1)
{
j++;
i = 0;
/*Otherwise move to the next space in the row.*/
}
else
{
i++;
}
}
/*This is only to get rid of the warning.*/
return i;
}
or code that looks like this?:
int get_col ( int tile_id)
{
/*Cycle through...*/
int i = 0, j = 0;
while (i < Dim) {
if (board[i][j] == tile_id) {
return i;
}
/*If you've hit the end of the row, move to the beginning of the next*/
if (i == Dim-1) {
j++;
i = 0;
/*Otherwise move to the next space in the row.*/} else {
i++;
/*This is only to get rid of the warning.*/
return i;
I thought so. A text editor will spare you the trouble of having to put in all the tabs yourself by adding them automatically. This has the benefit of letting you follow the control flow through indentation, so that you can make sure you are in the right block of code as you write.
Quick navigation features
If your program is anything above trivial, you'll want to be able to move through it quickly to find certain functions, instances of certain variables, or particular lines. Text editors typically have more sophisticated movement capability than word processors. For example, say you're compiling a program and find that you have a syntax error on line 312. In Vim, all you have to do is type 312G, and the cursor will move to line 312. (How does Vim know you don't want to type the characters 312G into the document? More on that in the links at the end of the article.)
Which text editor should I use? What's the difference between them? How do I get one? How much do they cost?
There are many, many different editors available, with Vim and Emacs being two of the most popular, portable, and powerful. Most editors (Vim and Emacs included) are free, but some are shareware. I use Vim, but each editor has its adherents. For a good listing of some of the best editors available for your platform, check out this FAQ on text editors. (It's aimed at STATA users, but all the editors listed are just fine for writing C++ code.)
Saturday, May 5, 2007
What is a compiler?
A compiler is necessary to make your source code (..c, .cpp, or .cc files) into a running program. If you're just starting out, you'll need to make sure that you have one before you start programming. There are many compilers available on the internet and sold commercially in stores or online. If you have Mac OS X, Linux, or other *nix variant (such as Unix or FreeBSD), you likely have a compiler such as gcc or g++ installed already.
Compiler terminology
Compile Colloquially, to convert a source code file into an executable, but strictly speaking, compilation is an intermediate step
Link The act of taking compiled code and turning it into an executable
Build A build refers to the process of creating the end executable (what is often colloquially refered to as compilation). Tools exits to help reduce the complexity of the build process--makefiles, for instance.
Compiler Generally, compiler refers to both a compiler and a "linker"
Linker The program that generates the executable by linking
IDE Integrated Development Environment, a combination of a text editor and a compiler, such that you can compile and run your programs directly within the IDE. IDEs usually have facilities to help you quickly jump to compiler errors.
Understanding the Compilation Process
The compilation and linking process A brief description of exactly what happens when you compile a program, covering the above terms in more detail
Dealing with Compilation Errors Some suggestions for hunting down compiler and linker errors in your code
Understanding Compiler Warnings Learn what compiler warnings mean and the hows and whys of fixing them
What compilers are available?
Windows/DOS
Borland Find out how to download and set up Borland's free command-line compiler
DJGPP Read about DJGPP, a DOS-based compiler
Dev-C++ and Digital Mars Read about Dev-C++, a good windows based compiler, and Digital Mars
Windows Only
Microsoft Visual C++ Read about Visual C++
*nix
g++ is a C++ compiler that comes with most *nix distributions.
gcc is a C compiler that comes with most *nix distributions.
Macintosh
Apple's own Macintosh Programmer's Workshop is a compiler I've never used, but it is direct from apple and free.
Codewarrior My experiences with Codewarrior are limited to Java programming, though it's gotten good reviews in the past. It's a full IDE rather than just a compiler, meaning that it has a text editor and debugger integrated with the compiler so you can do all your work from one place.
Compiler terminology
Compile Colloquially, to convert a source code file into an executable, but strictly speaking, compilation is an intermediate step
Link The act of taking compiled code and turning it into an executable
Build A build refers to the process of creating the end executable (what is often colloquially refered to as compilation). Tools exits to help reduce the complexity of the build process--makefiles, for instance.
Compiler Generally, compiler refers to both a compiler and a "linker"
Linker The program that generates the executable by linking
IDE Integrated Development Environment, a combination of a text editor and a compiler, such that you can compile and run your programs directly within the IDE. IDEs usually have facilities to help you quickly jump to compiler errors.
Understanding the Compilation Process
The compilation and linking process A brief description of exactly what happens when you compile a program, covering the above terms in more detail
Dealing with Compilation Errors Some suggestions for hunting down compiler and linker errors in your code
Understanding Compiler Warnings Learn what compiler warnings mean and the hows and whys of fixing them
What compilers are available?
Windows/DOS
Borland Find out how to download and set up Borland's free command-line compiler
DJGPP Read about DJGPP, a DOS-based compiler
Dev-C++ and Digital Mars Read about Dev-C++, a good windows based compiler, and Digital Mars
Windows Only
Microsoft Visual C++ Read about Visual C++
*nix
g++ is a C++ compiler that comes with most *nix distributions.
gcc is a C compiler that comes with most *nix distributions.
Macintosh
Apple's own Macintosh Programmer's Workshop is a compiler I've never used, but it is direct from apple and free.
Codewarrior My experiences with Codewarrior are limited to Java programming, though it's gotten good reviews in the past. It's a full IDE rather than just a compiler, meaning that it has a text editor and debugger integrated with the compiler so you can do all your work from one place.
Wednesday, May 2, 2007
Affiliate Program Management
Affiliate marketing programs provide a powerful and popular way for many companies to generate significant revenue from the Internet, but not every company is properly positioned for a successful program. At 10x Marketing we believe that each company ought to be accurately evaluated before engaging in an affiliate program. Our assessment service is designed to help companies know whether or not an affiliate marketing program is right for them. At the end of this assessment you'll have a good understanding of your chances of success and the risks involved with this type of Internet marketing.What is an Affiliate Program?Affiliate programs are a type of eCommerce program which generate traffic to a company’s website by convincing affiliate sites to link to them. The parent company pays each affiliate company a percentage of the sale for every online customer it gets as a result of a direct link from the affiliate’s website to its own. The affiliate company is essentially paid a commission for generating traffic, leads, or sales to the parent company’s website.
For example, a company that sells fitness gear would provide a link to the site of a fitness club that offers related (but not competing) products and services. The fitness gear company would then receive a commission of the sales gained from any buyers they direct to the fitness club. Since the fitness club gets more revenue from the new customers, both companies benefit.How Can 10x Marketing Help Me Run an Affiliate Program?10x Marketing employs an experienced Affiliate Marketing Team that excels in designing and implementing successful affiliate programs, one of several traffic generation services. Our team provides the following benefits and advantages to your company:
Set up, manage, and monitor your entire affiliate program.
Design professional ads to attract potential customers on a regular basis.
Recruit new affiliates to your program that continually drive business to you.
Help you to design your site specifically to convert those visitors into buyers of your products and services.
Keep you up-to-date by monitoring, maintaining, and reporting the success of your program on a regular basis.
In short, 10x Marketing has the experience, tools, and expertise to help you with all of your affiliate marketing needs. We also welcome new affiliates to our current programs. Give us a call. We'll be happy to answer any questions you may have.
How Do I Start?Contact us to see if Internet marketing is right for your company. There's no obligation and no better time to start generating more revenue from the Internet.
For example, a company that sells fitness gear would provide a link to the site of a fitness club that offers related (but not competing) products and services. The fitness gear company would then receive a commission of the sales gained from any buyers they direct to the fitness club. Since the fitness club gets more revenue from the new customers, both companies benefit.How Can 10x Marketing Help Me Run an Affiliate Program?10x Marketing employs an experienced Affiliate Marketing Team that excels in designing and implementing successful affiliate programs, one of several traffic generation services. Our team provides the following benefits and advantages to your company:
Set up, manage, and monitor your entire affiliate program.
Design professional ads to attract potential customers on a regular basis.
Recruit new affiliates to your program that continually drive business to you.
Help you to design your site specifically to convert those visitors into buyers of your products and services.
Keep you up-to-date by monitoring, maintaining, and reporting the success of your program on a regular basis.
In short, 10x Marketing has the experience, tools, and expertise to help you with all of your affiliate marketing needs. We also welcome new affiliates to our current programs. Give us a call. We'll be happy to answer any questions you may have.
How Do I Start?Contact us to see if Internet marketing is right for your company. There's no obligation and no better time to start generating more revenue from the Internet.
10x Marketing eBLAST Services
10x Marketing offers eBLAST (E-mail Business Leads and Sales Tool), which combines both e-mail marketing and newsletter services to provide small to large businesses with the following:
Wider client audiences
Better client relationships
Industry expert status
The opportunity to obtain and retain mind share
The chance to educate and inform clients and associates in regards to products/services
Why E-mail Marketing?The chart below compares the ROI percentages obtained via various online advertising methods. Observe that opt-in-e-mail, or e-mail marketing, comes second only to pay-per-click marketing (PPC), which is also a valuable marketing option for any business.E-mail marketing is five times more effective than direct mailing and 25 times more effective than banner ads. E-mail marketing generates immediate results, which are easily tracked and measured. Best of all, e-mail marketing is generally preferred—by both senders and recipients—to direct mail, telemarketing, radio, or TV (Source: ConstantContact.com).
10x Marketing's eBLAST newsletter services include:
eBLAST Core Services
eBLAST Stats Services
eBLAST Plus Services
Additional Services
eBLAST Core ServicesThe initial eBLAST core services work like this: 10x Marketing receives your client list, removes all duplicate entries, and validates all e-mail addresses. This list is inserted into a database. Then, you choose the HTML template of your choice, on which 10x will also provide links that will allow your clients and associates to subscribe to, forward, or unsubscribe to your newsletter. You then create a short e-mail text and 10x performs a series of test runs to make sure that every eBLAST will be sent according to plan. After the eBLAST trial-runs, editorial adjustments will be made as needed and 10x will begin to send regularly scheduled eBLASTS. All eBLAST statistics will be monitored and reports regarding these statistics will be sent to you for business related analysis.
eBLAST Stat ServicesThe eBLAST stats services include all of the eBLAST core services, plus a statistics sub-account, which provides you with a login that allows you to view your eBLAST statistics at any time. The eBLAST stats services also include a private label opt-out footer complete with your company’s logo, 5,000 credits (or e-mails) per month and an e-mail capture form on your website. The option to buy additional discounted credits is also an eBLAST stats option.
eBLAST Plus ServicesThe eBLAST plus services include the eBLAST core services plus a full access sub-account which includes a login to view real-time statistics, a login to send your own blasts (this is optional), a private label opt-out footer with your logo, 5,000 credits per month, up to 2 hours consulting and/or technical support, up to 2 hours custom design work, up to 5 hours of writing services (or 1 feature article), and an e-mail capture form on your company’s website. The option to buy additional discounted credits is also available with the eBLAST plus services package.
Additional ServicesAdditional eBLAST newsletter services include:
A custom designed e-mail template
E-mail personalization up to 25 fields
Private label opt-out footer with client’s logo
E-mail capture form on client’s website
Writing or Editing E-mail Templates
Copy Writing
Initial Story Planning
Research
Interviewing
Writing
Archiving
PDF Version
HTML Version
PDF and HTML Version
Add archives to client’s website
Questions?For more information, please contact a 10x Marketing representative.
Wider client audiences
Better client relationships
Industry expert status
The opportunity to obtain and retain mind share
The chance to educate and inform clients and associates in regards to products/services
Why E-mail Marketing?The chart below compares the ROI percentages obtained via various online advertising methods. Observe that opt-in-e-mail, or e-mail marketing, comes second only to pay-per-click marketing (PPC), which is also a valuable marketing option for any business.E-mail marketing is five times more effective than direct mailing and 25 times more effective than banner ads. E-mail marketing generates immediate results, which are easily tracked and measured. Best of all, e-mail marketing is generally preferred—by both senders and recipients—to direct mail, telemarketing, radio, or TV (Source: ConstantContact.com).
10x Marketing's eBLAST newsletter services include:
eBLAST Core Services
eBLAST Stats Services
eBLAST Plus Services
Additional Services
eBLAST Core ServicesThe initial eBLAST core services work like this: 10x Marketing receives your client list, removes all duplicate entries, and validates all e-mail addresses. This list is inserted into a database. Then, you choose the HTML template of your choice, on which 10x will also provide links that will allow your clients and associates to subscribe to, forward, or unsubscribe to your newsletter. You then create a short e-mail text and 10x performs a series of test runs to make sure that every eBLAST will be sent according to plan. After the eBLAST trial-runs, editorial adjustments will be made as needed and 10x will begin to send regularly scheduled eBLASTS. All eBLAST statistics will be monitored and reports regarding these statistics will be sent to you for business related analysis.
eBLAST Stat ServicesThe eBLAST stats services include all of the eBLAST core services, plus a statistics sub-account, which provides you with a login that allows you to view your eBLAST statistics at any time. The eBLAST stats services also include a private label opt-out footer complete with your company’s logo, 5,000 credits (or e-mails) per month and an e-mail capture form on your website. The option to buy additional discounted credits is also an eBLAST stats option.
eBLAST Plus ServicesThe eBLAST plus services include the eBLAST core services plus a full access sub-account which includes a login to view real-time statistics, a login to send your own blasts (this is optional), a private label opt-out footer with your logo, 5,000 credits per month, up to 2 hours consulting and/or technical support, up to 2 hours custom design work, up to 5 hours of writing services (or 1 feature article), and an e-mail capture form on your company’s website. The option to buy additional discounted credits is also available with the eBLAST plus services package.
Additional ServicesAdditional eBLAST newsletter services include:
A custom designed e-mail template
E-mail personalization up to 25 fields
Private label opt-out footer with client’s logo
E-mail capture form on client’s website
Writing or Editing E-mail Templates
Copy Writing
Initial Story Planning
Research
Interviewing
Writing
Archiving
PDF Version
HTML Version
PDF and HTML Version
Add archives to client’s website
Questions?For more information, please contact a 10x Marketing representative.
Search Engine Marketing
While email remains the most popular activity on the Internet with about 95% of all Internet users engaging in email activities, it is important to understand that using search engines is the second most popular activity among all Internet users worldwide. About 88% of all Internet users use search engines to find what they're looking for on the Internet. There is little doubt that potential customers are currently using search engines to search for the products and services your company sells. The real question then is, "What are you doing to help them find you, instead of your competitors?"
"My media director would say that if you aren't putting money into search engines you are letting business walk out the door."
Bruce Carlisle, CEOSFInteractive
Imagine if everybody who visited your website was actively searching for the exact things you sell. What would that be worth to you? This is precisely what search engine marketing does for your business.
There are basically two ways to use search engines to your advantage. The first is to obtain free traffic or natural search results by getting your website listed among the top 10 results of specific searches. The second way to use search engines to your advantage is to buy your way to the front page of specific searches. This strategy is called pay-per-click or sometimes cost-per-click.
If you know how to use search engines to your advantage, you can get your website listed on the first page of a given search and redirect pre-qualified visitors to your website on a regular basis.
The result of this effort, if done properly, will be more visitors, more buyers, and more revenue for your company from the Internet. Contact 10x Marketing today and begin taking advantage of this highly profitable way to improve your bottom line.
How Do I Start?Contact us to see if Internet marketing is right for your company. There's no obligation and no better time to start generating more revenue from the Internet.
"My media director would say that if you aren't putting money into search engines you are letting business walk out the door."
Bruce Carlisle, CEOSFInteractive
Imagine if everybody who visited your website was actively searching for the exact things you sell. What would that be worth to you? This is precisely what search engine marketing does for your business.
There are basically two ways to use search engines to your advantage. The first is to obtain free traffic or natural search results by getting your website listed among the top 10 results of specific searches. The second way to use search engines to your advantage is to buy your way to the front page of specific searches. This strategy is called pay-per-click or sometimes cost-per-click.
If you know how to use search engines to your advantage, you can get your website listed on the first page of a given search and redirect pre-qualified visitors to your website on a regular basis.
The result of this effort, if done properly, will be more visitors, more buyers, and more revenue for your company from the Internet. Contact 10x Marketing today and begin taking advantage of this highly profitable way to improve your bottom line.
How Do I Start?Contact us to see if Internet marketing is right for your company. There's no obligation and no better time to start generating more revenue from the Internet.
Tuesday, May 1, 2007
Solving Cool Problems with Genetic Algorithms
representable as strings (hence the name Genetic Algorithm - the programming model is based on DNA). In terms of practical value, genetic algorithms are useful for solving problems in which the solutions are difficult to find by following a specific algorithm designed to solve the problem (using genetic algorithms in place of predesigned algorithms such as Djikstra's algorithm for path finding just wouldn't make sense). It functions as a sort of systematized brute force approach. Problems genetic algorithms are valuable for solving include scheduling problems, constraint satisfaction problems, and other problems that require searching a large number of possibilities. Genetic algorithms can be applied to protein folding or even tuning Linux kernel performance.
A simpler example just to get the point across is finding a five digit number that acts as the best solution to an expression; for example, if you wish to find the number that makes the expression x^2+2x-11 equal to 0, you could of course use brute force to solve the equation, but a genetic algorithm can also be used, and if you have a very complex expression, it may be of great value to use a genetic algorithm, especially when one considers the time saved over brute force. In a sense, all genetic algorithm problems boil down to solving complex expressions or sets of expressions, as all problems are representable in that fashion. Genetic algorithms work from the same basis as evolutionary theory. A genetic algorithm has several components: a pool of solutions, a method of evaluating the effectiveness of each solution, a breeding function that combines the best solutions into new solutions, and a mutation function. The pool of solutions do not compete for resources; rather, each solution is tested by an evaluation function (called the "fitness" function), which then gives it a ranking based on its effectiveness at solving the problem compared to the other solutions. The best solution strings are the ones that are ranked highest (that are the most "fit"); the breeding function takes two of the better performing solutions and combines them together into a new solution. The breeding function should repeat the process of randomly selecting two solutions and breeding them; the better performing functions should be given the higher percentage chance of being selected. The breeding function generally works by taking slices of each solution and splicing them together into a new one. Solutions are often represented as strings, so generally, a breeding function will take fragments of random lengths from each string and concatenate them together to form a new string. Each fragment should be placed into the location in the new string that corresponds to its location in the old string. For example, if a string fragment is from positions 5 to 8 in the first string being bred, it should be placed into positions 5 through 8 in the new child solution. After the strings have been bred, and the set of potential solutions has been refilled, it is important to have the mutation function. The mutation function is important because it introduces an element of randomness that allows variation in the solution sets, which otherwise would stagnate and have no advantage over a hand-crafted solution. Mutations may diminish the strength of some solutions, but in general it will increase the overall value of the solution set; by including a very small mutation rate, you introduce new traits that might never have otherwise existed within the pool. This allows you to explore a larger group of possibilities and avoid stagnation. In fact, many other AI techniques forgo the idea of breeding solutions and work simply by making small "mutations" or changes to a potential solution to a problem. Genetic algorithms can do some amazing things and solve very complex problems. Nevertheless, this techniques will require having way of evaluating possible solutions -- this is one of the most difficult problems with genetic algorithms. The second challenge is finding a good way to represent solutions to the problem as strings. Once these are sorted out, a genetic algorithm may be a good approach to your problem.
A simpler example just to get the point across is finding a five digit number that acts as the best solution to an expression; for example, if you wish to find the number that makes the expression x^2+2x-11 equal to 0, you could of course use brute force to solve the equation, but a genetic algorithm can also be used, and if you have a very complex expression, it may be of great value to use a genetic algorithm, especially when one considers the time saved over brute force. In a sense, all genetic algorithm problems boil down to solving complex expressions or sets of expressions, as all problems are representable in that fashion. Genetic algorithms work from the same basis as evolutionary theory. A genetic algorithm has several components: a pool of solutions, a method of evaluating the effectiveness of each solution, a breeding function that combines the best solutions into new solutions, and a mutation function. The pool of solutions do not compete for resources; rather, each solution is tested by an evaluation function (called the "fitness" function), which then gives it a ranking based on its effectiveness at solving the problem compared to the other solutions. The best solution strings are the ones that are ranked highest (that are the most "fit"); the breeding function takes two of the better performing solutions and combines them together into a new solution. The breeding function should repeat the process of randomly selecting two solutions and breeding them; the better performing functions should be given the higher percentage chance of being selected. The breeding function generally works by taking slices of each solution and splicing them together into a new one. Solutions are often represented as strings, so generally, a breeding function will take fragments of random lengths from each string and concatenate them together to form a new string. Each fragment should be placed into the location in the new string that corresponds to its location in the old string. For example, if a string fragment is from positions 5 to 8 in the first string being bred, it should be placed into positions 5 through 8 in the new child solution. After the strings have been bred, and the set of potential solutions has been refilled, it is important to have the mutation function. The mutation function is important because it introduces an element of randomness that allows variation in the solution sets, which otherwise would stagnate and have no advantage over a hand-crafted solution. Mutations may diminish the strength of some solutions, but in general it will increase the overall value of the solution set; by including a very small mutation rate, you introduce new traits that might never have otherwise existed within the pool. This allows you to explore a larger group of possibilities and avoid stagnation. In fact, many other AI techniques forgo the idea of breeding solutions and work simply by making small "mutations" or changes to a potential solution to a problem. Genetic algorithms can do some amazing things and solve very complex problems. Nevertheless, this techniques will require having way of evaluating possible solutions -- this is one of the most difficult problems with genetic algorithms. The second challenge is finding a good way to represent solutions to the problem as strings. Once these are sorted out, a genetic algorithm may be a good approach to your problem.
Subscribe to:
Posts (Atom)