Category Archives: useful info

how my signature file keeps me polite

Being a web designer/programmer, most of my business communications are done through email.

I receive literally hundreds of emails a day, and sometimes I am emailing back and forth to a client repeatedly while also trying to get done the programming on my plate. Now this in itself is probably not a great practice – I should have a time set aside just for email where I can give it 100% of my attention, but life comes at you from all directions in my field, and a client who has a burning question, or who has forgotten the log in to their content management system sometimes needs immediate assistance.

Looking at my emails several years back, I realized that when I made quick replies to client questions, I often forgot the basic courtesies that should be part of a professional correspondence: “Hello” and “Sincerely”. My rushed emails, bereft of the greeting and signature, appeared abrupt and rude in some cases.

I don’t want to be rude or abrupt to my clients. I may feel like I’m racing the clock in that moment and feel rush rush rushed.. but that doesn’t excuse sending a communication off without courtesy. My clients sometimes only know me through the emails that we exchange, so those emails inform their opinion of me and their experience doing business with me.

To stop this unintentional rudeness, I created a signature file for my emails that automatically appears on the email no matter what: when I create a new email, or when I hit reply. That signature actually contains the “Hi” at the beginning of it, as well as the “sincerely” and all my contact information at the end. That way I am forced to stop and look at it and write the name of my client after the “Hi”. On every email, I greet them by name, and on every email, they have my full name and all of my contact information.

Just the act of writing their name at the top often slows me down enough to make a more thoughtful reply than I might have if I was just typing a quick response and hitting the send button.

The last thing that I want to do is be  rude or abrupt. Communication is the groundwork for creating successful websites.

Below I have links to tutorials on how to set up custom signatures in different mail programs:



Mac Mail:


If you know any tips for setting up signatures in your email programs, please share them in the comments.

one reason why paypal might be rejecting your credit card

I use PayPal all the time to make online purchases. I find it very very convenient.

A number of my clients use it to collect payments on their websites because it is free to join, the fees are comparable to other merchant services and your customers no longer need a PayPal account to make a purchase or pay an invoice with PayPal. It is a great option for letting people pay you online.

Several weeks ago, a client of mine called because one of her customers kept having their credit card declined by PayPal and she wanted to know what could be the matter. We did some sleuthing. I called the PayPal customer service number (888-215-5506), but since the difficulty didn’t happen with a transaction on my PayPal account they couldn’t check the logs. When my client called, they were able to look at the error logs and we found out why the credit card would not go through.

AND it wasn’t for all your normal reasons like the billing address doesn’t match the credit card address or the card is maxed out. It was for a reason that never would have occurred to me.

When you go to check out with PayPal, there is an option to not check out with a PayPal account (see image below).

The reason why the customer’s credit card was being rejected was because the customer had a PayPal account with that credit card number recorded in it. However, the customer didn’t realize that they could pay by credit card logging into their PayPal account, or for some reason wanted not to log into their PayPal account, so they had clicked on “Don’t have a Paypal account” option and were trying to pay outside of their PayPal account.

PayPal assumes that if a credit card number is in someone’s PayPal account, and then a charge is run through on the same number but not through the PayPal account, there may be fraud involved. The card might have been lost or stolen.

If you have a PayPal account, the option “Don’t have a PayPal account” will not work unless you use a credit card number that is not associated with your PayPal account.

PayPal defaults, I believe, to extract payments from the bank account that you have on file. If times are lean and your bank account is feeling anemic, then you may hesitate to use PayPal for purchases. It is very very easy, however, to change the payment method for a purchase once you’ve logged into your PayPal account.

When you log into your PayPal account to make a purchase, there is a link to change your payment method.

When you click the change link, you can then select to pay with your credit card on file.

In conclusion, if you have a credit card on file with PayPal, and want to make purchases with that credit card, you need to do it by logging into your PayPal account and selecting it as a payment method. If you try to use it without logging into your PayPal account, chances are it will be declined.

reasons why emails bounce back

Several weeks ago I had a client call me in a panic. She said that her emails were bouncing back and could I fix it? It ended up that she had just sent a big mailing with attachments out and a handful of the emails bounced back. Her bounced emails inspired this blog post.

There are any number of reasons why emails might bounce back. What is certain, is that when they bounce back, the server that bounced them will give you a reason why they bounced, right at the top of the bounced message. Usually they bounce for benign reasons that have nothing to do with who hosts your email.

For example:

You may be sending the recipient an attachment that is too large for their mailbox capacity. If that happen, there will be some text that states that the message size exceeded the fixed maximum message size. (see image below).

It could be that the email address is no longer valid, or has a typo in it. If this is the case, you will get a message saying that the address was rejected or that the recipient is not their customer or doesn’t exist.

See the two examples below:

It could be that the mailbox of the recipient has reached its quota or is full.

Often, the receiving person’s mail server is down or has a very large queue. When that is the case you will receive a message at the top saying that the email hasn’t been delivered yet, but your server will try again.

If your mail server has been blacklisted for spamming, then your email might bounce back as well. In that case there will be a clear message stating so.

If I am hosting your email, and you get a message about RBL lists and black lists, then please DO contact me immediately, forward me the bounced email and I will put the wheels in motion to fix the situation.

Can you think of other reasons why emails bounce? and what the clues are in the returned mail heading?

How to add video to your blog post or website page

I build websites with custom content management systems, and I also set up custom WordPress blog sites for clients. Often my clients have videos produced and are at a loss on how to add them to their websites.

This tutorial is directed at videos that are hosted elsewhere and give you an embed code for adding them to your website. I took these screen shots when I was emailing directions to Barbara at Island Alpaca on how to add video to her website. Please check out her wonderful alpacas and alpaca products.

The first thing you need to do is find the video’s embed code. Often, when a movie that you are watching is over, it will give you the embed code at the end. For example, here is a screen shot of a video hosted by In this case, you would highlight all of the code in the embed field and copy it.

This screen shot below if from a video hosted by Many of my local Martha’s Vineyard clients have videos produced by Plum TV that they want to put on their websites. On the screen shot below, the movie ends with the share tab open by default, but if you click to the right of it on the embed tab…

… it will open with the embed code that you can copy by clicking on the copy code button in the bottom right.

The screen shot below is showing the text editor that is used in the Island Alpaca content management system. What I suggested that Barbara do first, is to put a line of asterisks where she wants to place the embed code for the video – because once you switch to the code or source view, it is sometimes hard to tell where to put it if you don’t know HTML (and sometimes even if you do).

Next you need to switch to the code or source view of the editor.

In Barbara’s editor, you would click on the Source button in the top left.

If you were adding it to a blog post, you would click on the HTML tab in the top right.

And if you have the wysiwyg editor that many of my other content management systems use, you would click on the code icon < > on the bottom right.

All wysiwyg editors have some way of switching to view the source or code view. If you mouse over their icons, they will often tell you which one is for which.

Once you switch to the code view – look for those asterisks, and highlight them and replace them by pasting the embed code.

You may need to change the width and height of the video embed code so that it will fit in your website design. You can see in the pasted code where the width=”” and height=”” values are. Those numbers represent the number of pixels each attribute is allotted. Web pages show 72 pixels to the inch, and some websites layouts are pretty narrow, so you may need to adjust the width and height. For Barbara’s site I had her adjust the video from 640 pixels wide to 480 pixesl tall, to 420 pixels wide by 315 pixels tall. Embed code may have the width and height attributes in more than one place, so look at all of the code that you pasted.

Once you add the embed code and adjust it, save your changes and the video will display on your web page.

Not all wysiwyg or text editors will show that the video code is in place when not looking at it with the html or code view, and some of them will remove the code if you make subsequent changes to the page so make sure you keep a copy of the embed code for the video someplace handy, in case you need to replace it.

SEO Keyword Research – where to start

This is a quick tutorial on how to start gathering keywords to use in optimizing your website for the search engines.

The first step is to brainstorm and jot down a list of what you think the phrases are that people are using who might want what your website offers. What are the phrases that people are typing into the search engine search boxes?  Keywords are a form of advertising. Make sure you only use keywords that match what your site offers. The search engines want to match people’s searches with websites that truly match those searches, so if you are selling affordable housing, don’t use the keyword phrase “ocean front villas”.  It is important to be honest.

If your website offers multiple things – homes for sale and vacation rentals, for example, put together a list for each facet of what you offer, so you would come up with one list for your home sales, and one list for your vacation rentals.

Keep in mind, also, that people might not be aware of your product name to search for it – so if you have a product with an obscure name that cures headaches – make sure your keywords include “headache cure”, “getting rid of headaches”, as opposed to the product name. Sometimes you need to optimize for the symptoms rather than the solution.

Then, go to the google keyword tool website:

When you arrive there – click on the “Previous Interface” link in the top right of the page. (see image below)

Then, paste your list of keyword phrases into the field “Enter one keyword or phrase per line:” make sure that “Use synonyms” is checked, and then click on the button, “Get Keyword Ideas”. (see image below)

This will give you  your list of keyword phrases with how many times people use them to search.

To make the data easier to read, go to the show/hide columns drop down menu and HIDE the local search volume AND the advertiser competition. (see image below)

Make sure to select “Exact” from “match type” (see image below)

Then export your list to csv (for excel). Export a copy of the “Additional keywords to consider” as well that google lists under your list. (see image below)

Consolidate both excel files into one and then go through the keyphrases and eliminate any phrase that is not relevant to your website. Make sure that you only keep the keywords that are truly what your website is about.

The next step is to find out how competitive those keywords are. We do this by doing a google search for the keyword specifying that you want to see only websites that have that keyword in their title tag. If a website has the keyword in their title tag, then they are most likely your competition. You do this by typing

allintitle: “keyword”

make sure to put the keyword in quotes.

When you hit the Google Search button, the number of results will appear underneath the search bar. (see image below)

Add that result number next to your global monthly search volume in your excel sheet. In the image below I’ve named the allintitle results “competitors”. (see image below)

The keywords that are going to bring your site the most targeted traffic are the ones that have a low competitor number compared to the search volume number. You can certainly include some of the keywords that are not in the least competitive, if they are truly what your website is about, but also make sure to include the competitive search phrases. Also, make sure to include your business name in your keywords.

Where to put the keywords?

  • Put them in the content of your pages – the text
  • Put them in the content headings
  • Put them in the meta tags
  • Put them in alt tags of images and title tags of links

The more often the keyword is found on your site – or within links to your site – the better you will place in the search results for that keyword.

It is important to have the keyword not just in the metatags and not just in the page text, but in both places.

Include your keywords in  your page headings and in bold font – and also in internal text links that bring people from one page of your website to another.


Many of my content management systems give my clients an interface for adding and updating the meta tags on their website pages. The most important meta tag is the title tag. Make sure to include your best keyword phrases at the beginning of your title tag. Include your company name in the title tag as well – for your home page, about your company page and contact page.

Google will only show 60 – 70 characters of your title tag, but you can certainly make it longer.

The title tag of a page should include only keyword phrases that have to do with that specific page.

You should try to include 3 keyword phrases in your title tag:

Primary Keyword – Secondary Keyword 1, Secondary Keyword 2

Put your keywords in your keywords meta tag. List the keyword phrases that have to do with the specific page, the most important first, and separate them by commas. The keywords meta tag is the least important meta tag. According to google webmaster central, google at this time disregards it completely for its search results. However, other search engines do look at it, and since you have the keywords handy in your excel sheet, go ahead and copy and paste them into this meta tag – it can’t hurt.

Put the keywords in your description meta tag. The description tag is often what search engines will show under your page listing in their results, so make sure it describes what the page is about and is phrased in a way that will make people want to click to the page. Read what google webmaster central has to say about the meta description tag.

This is a start to researching and adding keywords to your website.

Make sure to optimize each page of your site specifically for the content on that page. Make sure your keywords are a good match to what you really offer.

If you have separate areas of your site, create separate lists of competitive keywords for each section.

If your server sets the allow_url_fopen and allow_url_include PHP directives OFF

Here is some great geeky information given by network solutions customer service to one of my clients, who passed it on to me. Since my servers have similar security standards, I frequently refer to the code examples and solutions illustrated below.

For security reasons (to prevent “PHP include” hacker attacks),  some servers set the allow_url_fopen and allow_url_include PHP directives to off. If you see errors similar to the following on your website, then your website (or software you have installed on your website) uses insecure PHP calls.

Common Errors

Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /……../ on line (..)

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in in /……../ on line (..)

Warning: include() [function.include]: URL file-access is disabled in the server configuration in /……../ on line (..)

Warning: getimagesize() [function.getimagesize]: URL file-access is disabled in the server configuration in in /……../ on line (..)

Warning: readfile() [function.readfile]: URL file-access is disabled in the server configuration in in /……../ on line (..)


WordPress / Joomla / Drupal Software: These applications do not use functions that require allow_url_fopen or allow_url_include to be turned on. However, certain third party plugins may require changes. If you see any of the errors above, try to isolate which plugin is causing the issue and replace it with an alternative plugin. You should also consider reporting the issue to the plugin developer so that they may fix it in an upcoming release. Alternatively, you can check out some of the examples below and attempt to fix the errors yourself.

Note: Do not attempt to fix issues yourself if you do not have prior software development experience. If the below does not make sense, you should consult with your web professional.

The errors above manifest themselves when your website is attempting to retrieve outside web URLs. The solution is to use the PHP Curl library to do so instead, which is more secure. How you use PHP ‘s Curl library to circumvent this issue depends on which warning you’ve received.

Example 1: Warning: fopen() [function.fopen]:

$file = “”;

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, “startElement”, “endElement”);
xml_set_character_data_handler($xml_parser, “characterData”);

if (!($fp = fopen($file, “r”))) {
die(“could not open XML input”);

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf(“XML error: %s at line %d”,

In the above example, an attempt to open a Google RSS feed is being made. The fopen() call will fail because $file is an outside web site, and the rest of the code will not be executed. To properly load the RSS feed and parse, this snipit of code would need to be rewritten as follows:

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, “startElement”, “endElement”);
xml_set_character_data_handler($xml_parser, “characterData”);

$file = “”;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xmldata = curl_exec($ch);

$xmldata = split(“\n”,$xmldata);

foreach ($xmldata as $data) {
if (!xml_parse($xml_parser, $data)) {
die(sprintf(“XML error: %s at line %d”,

Example 2: Warning: file_get_contents() [function.file-get-contents]:


$contents = file_get_contents(‘’);

echo $contents;


In the above example, the file_get_contents function is used to retrieve the content of the CNN website. You can accomplish the same thing safely using CURL as follows:


$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);

// display file
echo $contents;

Example 3: Warning: include() [function.include]:

Including files from web hosts is not allowed.

<? php include(“”); ?>

If the file that you are trying to include is local, use relative paths instead , not the web URL. Otherwise, use the following:


$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);

// display file
echo $file_contents;

Example 4: Warning: getimagesize() [function.getimagesize]:

getimagesize() allows you to get the height, width and size of an image file. To use getimagesize() safely, CURL can be used to get the remote file, the data can be saved to a local temporary image file and getimagesize() can be used on the local version.


$filename = “”;

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $filename);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec($ch);

$new_image = ImageCreateFromString($contents);
imagejpeg($new_image, “temp.jpg”,100);

$size = getimagesize(“temp.jpg”);

// width and height

$width = $size[0];
$height = $size[1];

Example 5: Warning: readfile() [function.readfile]:


$contents = readfile(‘’);

echo $contents;


In the above example, the readfile function is used to retrieve the content of a remote text file. You can accomplish the same thing safely using CURL as follows:


$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);

// display file
echo $contents;

The above examples are not guaranteed to run without changes, they are strictly guidance to illustrate how to safely retrieve off-site content.