Feb 5, 2010 - Development    Comments Off

How To: Delay JavaScript Source Load

I recently ran into a problem with a 3rd party JavaScript source call slowing down the load of one of my sites. I decided to change the code to perform a document.write of the external source tag when the page’s initialize JS code ran. Apparently the 3rd party developers wrote code to test for the correct insertion of their code, and whenever I made this change the script suddenly stops working, and instead pops up a JS alert saying that you need to place the code between the “<body></body>” tags. Their validation code is erroneous, but that doesn’t help me. I ended up finding a solution to my problem in the following script I found online. Somehow adding the code dynamically do the head tag doesn’t trigger the same warning, and the script still works.

var head= document.getElementsByTagName(‘head’)[0];
var script= document.createElement(‘script’);
script.type= ‘text/javascript’;
script.src= ‘http://www.example.com/script.js’;
head.appendChild(script);

Jan 22, 2010 - Business, Development    Comments Off

Sitemaps: Old or New?

With the major search engines supporting the Sitemap Protocol many developers have switched to using these XML versions of sitemaps for telling search engine crawlers about the pages on their sites. I recently found that this was a big mistake. I personally had switched to using these XML sitemaps 100% on my sites. I no longer had links to old-school sitemaps where we listed every page on our website. For many sites every page can be found through the standard crawling of links. For example, Fido Finder has thousands of Lost and Found dog listings, but the crawler can get to all of these by simply going to the Lost Dogs page and crawling the “Next Page” link, over and over. There are truly no hidden pages that I want Google to index. Tagomatic, being a search engine, is a different story. And there’s actually a story to go with this lesson.

One day I noticed that Tagomatic’s traffic dropped off by about 75%. I was in a panic. Had Google suddenly decided that Tagomatic was no longer important? It took me days to finally realize that for whatever reason Google had de-index any Mod-Rewritten URLs. 3-4 months prior to this I had changed the website listings on Tagomatic to include the domain name (which is unique) in the URL instead of having a standard querystring identifier (so /domain.com/ instead of page.php?id=12345). The only website listings showing up in Google were listings where the “domain name” (mostly older entries that contained sub-folders, so forward slashes) contained characters that did not allow me (with the rewrite code I found) to rewrite them. So ONLY standard querysting URL’s were index in Google for the websites section of Tagmatic. This makes absolutely no sense, and technically Google shouldn’t “know” that these URL’s are rewritten, but the only listings on Tagomatic that were still showing up where standard querystring, non-rewritten, URLs. The new, pretty, URL’s had already been indexed in Google for months. They were correct being redirected if you entered the old URL, but for whatever reason Google decided these URL’s were not worth indexing any more. So I rolled the code back and after some time, and submitting a re-inclusion request via the Google Sitemaps dashboard, the URL’s slowly started to show up again. After 4 months only about 50% of the original URL’s had returned. By 8 months about 70% of the URL’s that were previously index had returned, but the growth had definitely stopped. In the Google Sitemaps dashboard I could see that one of my sitemaps had 25K of its 50K links (max 50K per sitemap) indexed and the other had 23K of 25K indexed. I wanted that ~25K back.

As a test I created an old school sitemap, where any search engine could crawl “next page” after “next page” and see all of the pages on Tagomatic. Within a week 7K more pages showed up as “indexed.” Hopefully we can get back to having 90% of the pages in our sitemaps indexed, but it won’t be thanks to the new sitemap protocol. For whatever reason Google needed an old school sitemap to get all of the pages in the index. Sometimes you have to just experiment and you’ll find something that doesn’t make sense that works anyhow.

Jan 22, 2010 - Development    Comments Off

Firefox Plug-Ins for Web Developers

I have 6 Firefox plug-ins, or “add-ons“,  that have made my life as a web developer much easier. Some of them I don’t know how I ever got along without. Here’s a quick rundown of the plug-ins I use every day. We’ll start with the least useful and move the most useful tool I have, period, for web development.

Window Resizer

It’s a simple tool for resizing your application window to common screen resolutions. Once installed you right-click the page and bring up the dialogue. Choose your screen resolution and the application window resizes. Great for making sure your website fits in various resolutions.

Screengrab

What is it about Windows screen capture that CRASHES it if you do not reboot your PC often enough? I’ve had this problem on countless computers across at LEAST 3 different OS’s and don’t know why Microsoft cannot get this fixed. Either through the Print Screen key or using Vista’s Snipping Tool, the core application for screen grabbing crashes and you’re stuck without being able to get a screengrab without rebooting. I often send customers screengrabs when they simply cannot understand what I’m talking about. Sometimes, “Select the item and click ‘delete’” doesn’t come across correctly in an email, and a screengrab always ends the conflict. The Firefox add-on Screengrab works even when Vista’s print screen feature has crashed! I actually downloaded this add-on right after discovering that Vista’s screen capture was not working that day, installed it, and immediately made the grab I needed. You can choose to grab the whole page or just a selection. You can either save or copy the grab to the clipboard. Most of the time I take a screengrab into Photoshop and add comments, so this is a great tool for me.

Colorzilla

Colorzilla is a simple color picker tool that will give you the RGB and HEX code value of any color on a web page, even images. Drag the cursor over the element and your status bar now shows the color values of whatever color you are hovering over. Great tool for when you forget what colors you used on a certain page or want to use the same colors as another site. I don’t use this a ton but it’s an awesome tool for the times when I want to do this.

IE Tab

No more needing to open a new Internet Explorer window in order to test your design in IE. IE Tab allows you to open a new Firefox tab that runs the IE rendering engine inside of it. It will load the address of the current tab so that you can see how your current design is working out. Of course it cannot share cookies between the two browser engines, so you might have to sign in if you’re checking out a secure section of your site.

MeausureIt

This awesome tool allows you to draw rectangles over a web page and it gives you width and height measurements of your rectangle. I use this all the time. Whether I’m checking to see if an element is displaying as wide as I specified, or trying to figure out how much room I have for an icon, I find many uses for this tool.

Firebug

Hands down the most important add-on there is for a web developer. Especially if you write JavaScript. Browsers have been notoriously poor at giving developers information on JavaScript errors. They will tell us when and where the error occurred, then leave us to search through the code for line #1304. And why was it that older versions of IE were ALWAYS off by one line? If you develop with some type of server-side scripting language it can make it harder to find the bug because you have to View Source since your actual code lines will not line up with what is rendered by the browser. And Firebug will crawl deep into your included/source JavaScript files for you. Firebug allows you to click the “# errors” link at the bottom of the status bar to jump right to the line (in a small window) that caused the error. Although I don’t use, I believe you can even view the value of some variables at the time of the error (don’t quote me on that). Beyond JS you can use Firebug to view the HTML of any section of a website. Firebug’s Inspect Element feature allows you to mouse over sections of the web page and view the HTML for that element. And in reverse, you can run through the HTML of a page and click on a tag to see the element highlighted on the page. This is huge for looking for HTML bugs of any type, and DHTML/CSS developers like myself need this. There are other features but that’s mostly what I use it for, and it saves me a ton of time.

Jan 22, 2010 - Business    Comments Off

Stamps.com

I usually use FedEx for shipping but have the occasional need to send regular mail. Stamps are a pain to keep around (never have them when I need them) so I looked into Stamps.com. It turns out to be a pretty awesome product. I ship “media kits” for Fido Finder / Tabby Tracker which include t-shirts and business cards, and sometimes counter-top displays, and FedEx had been my main method of shipping. With Stamps.com I can print sticker labels to put on boxes that I drop off at the Post Office. I haven’t compared apples to apples but some of the remote locations that I ship to can get expensive for a small 3 pound box, and I know that USPS can get it there cheaper (since I’m never in a rush). The use of FedEx was always a marketing thing, as people consider FedEx packages more important, but for customer-requested mail outs I plan on switching to using Stamps.com.

Stamps.com run as an application on your PC. You can purchase and print stamps right from your desktop. You can print directly onto envelopes or you can print onto special label sheets. If you order label sheets and print your stamps on them, then you’ll be paying more than the price of stamp, but the convenience can save you enough time that most people won’t ever miss the few bucks they lose on purchasing stamp sheets. The sheets come in a variety of kinds, which is one of the most interesting features of Stamps.com. The simplest sheet just prints slightly larger than normal stamps. Plain black and white with a 3D barcode. Then there are special sheets where you can get custom graphics for your stamp. Even better than those is the label and stamp combination sheet that comes with a shipping label sticker and return sticker / stamp. Print all 3 on one page and remove the stickers to place on your package.

The software is well (enough) done and easy to figure out. The sheets come with Serial Numbers to aid in printing the right stamps and you purchase stamps via the application. I was really impressed with the application and what it could do for me even though I rarely mail. Maybe if I mailed more it wouldn’t be so fun, but it works great for those of us that don’t like to run to the grocery store just to mail in a bill or send out a handful of 1099′s.

Jan 12, 2010 - Misc    Comments Off

Webby Awards Judge

I’ve been chosen to be a Webby Awards judge this year. The Webby’s are the Oscars of the Internet. In 2007 Fido Finder was nominated for an award in the Best Web Services category of the Webby Awards, and because of this selection I was chosen to participate in this year’s voting. It was an honor to be nominated in 2007 and it’s an honor to be a judge and help to award top websites with a Webby. I won’t reveal what categories I will be judging but I will be participating in judging in 9 categories. Good luck to all those competing this year for a Webby Award.

Jan 8, 2010 - Business, Development    Comments Off

Google Analytics “Intelligence”

analytics_logo

On many occasions I have noticed an increase in activity on one of my websites and had not know what was causing the new traffic. It could be a TV news report, a blog post, a forum post, or any number of events. I always thought that Google Analytics should tell me What Has Changed. But, it never did…until now! Google has a new feature in beta called “Intelligence”. The Intelligence report shows different variables that have increased or decreased significantly over the selected date range. It’s an easy way to find out What Has Changed in regards to traffic, goals, and commerce on your website. It’s a great feature and it should help many website owners to not just identify traffic trends but to help find bugs and other changes on their website. I’m glad they finally realized how valuable this information can be to us.

Dec 2, 2009 - Development    Comments Off

Search Engine Optimization (SEO) Primer

If you’re going to own and operate a successful website you need to become familiar with the acronym SEO. SEO stands for Search Engine Optimization. It’s the practice of designing and/or tweaking your website so that the search engines know what your website content is about. The idea is to specifically tell engines like Google what content is on your site so that your website shows up when users query search engines for your targeted keywords. Some might also say that you are quietly suggesting to the search engines what keywords your website should show up for. Unlike the early years of the Internet, search engines no longer rely on META tag data for indexing websites. It’s the structure and makeup of your content that tells Google what your website is about. If you follow a few tips you can help to suggest to Google, and other engines, what keywords it should rank your website highly for. This will result in your website showing up higher in the results for your targeted keywords. These tips were gathered from months of reading both SEO forums and SEO articles online. We will use FidoFinder.com as an example in some of the suggestions to help explain the tips.

Title

The HTML title of each individual web page needs to contain your keywords. Many websites simply include the name of their website in their HTML title tags across the website. You need to also include your targeted keywords, in a natural manner, in your title tags. Be sure to modify every web page’s title tag to represent the content of that page. A good example is Fido Finder’s web page titles including the keyword “lost dogs” and “found dogs” in their titles. The individual dog profile pages include the dog’s breed and location in the title.

URL

The actual text that makes up your URL needs to contain your keywords. If your domain name itself does not contain your keywords make sure you name your pages in a manner that keywords are included in them. On Fido Finder the “lost dogs” search page is named “lost-dogs.php” instead of “search.php.” It is widely believed that dashes are the best way to break up words in a URL as Google will consider lost-dogs to equal “lost dogs” but lost_dogs to equal “lost_dogs”.

Internal Links

Links within your own website should contain your keywords. Instead of using links with anchor text like “click here” be sure to actually use your keywords in the anchor text. On Fido Finder links within a paragraph urging a visitor to register their lost dog use “register your lost dog” as the anchor text instead of linking text like “click here to register.” Use your keywords as links throughout the site, it is good to have 2-3 of the same keywords in links on the same page. Text links are better than image links. If you use images for your site navigation be sure to include ALT text for the images so that search engines can tell what the image links represent.

Inbound Links

If you have control, it is best to have links to your website from external domains that include your keywords. On Fido Finder we employ the use of a tagline (Where Lost Dogs are Found) in our website identity that includes our keywords to help to encourage webmasters to link to our site using our keywords. So webmasters tend to create links that use “Fido Finder – Where Lost Dogs are Found” as the anchor text – which helps to tell Google that Fido Finder is about “lost dogs.” Most developers believe that the number of inbound links with your keyword is the number one most important factor in your position in Google’s search engine results.

Heading Tags

Be sure to actually use H1/H2/H3 tags for headings of your page and include your keywords in these tags. You can use CSS to style the headings tags so that they don’t act quite as ridiculous (padding, etc) as the HTML specifications dictate. It is believed that Google looks for these tags and gives them weight when indexing a website.

Bold Text

Use the HTML bold tag around keywords within the text of your website. Again, it’s believed that Google looks for bold text to help determine important parts of a website.

Keyword Saturation

Be sure to use your keywords multiple times on your web pages. Don’t overdo it, but be sure to repeat your keywords on your site. On Fido Finder we continue to use the terms “lost dogs” and “found dogs” in places where we would more naturally just use the term “dogs.” But we want Google to be 100% sure that our site is not just about dogs, but lost and found dogs.

Nov 21, 2009 - Business    Comments Off

Thinking Outside of the Box

Lemons to lemonade, or whatever you want to call it, you have to think creatively to win in business. I recently had an “aha” that maybe will spark something for yourself.

After releasing my iPhone app I started to receive a few random empty emails a week generated by the “Report a Problem/Suggest a Feature” button within the app. People are evidently tapping this button, then instead of tapping “Cancel” on the email they are tapping “Send.” So I get an email with nothing but “Sent from my iPhone.” At first this was simply annoying. Then today I realized that my customers were unknowingly giving me an open method of contact with them, something you don’t normally have with an iPhone app (you get very little data from Apple on who is downloading your app).  Now I’m not going to spam people or do anything to cause an uproar…but I sure am replying to every single blank email and reminder these customers to rate/review the app in iTunes. Truthfully, I don’t know how much having a 5-start rating and 50 good reviews affects download numbers or people’s perception of your app, but since I’m not really (directly) selling anything else this was the best use of the inadvertent emails I could come up with.

Nov 15, 2009 - Misc    Comments Off

Control Your Mac From Your iPhone

I have a Mac Mini that I purchased to code my iPhone app. I only used it for the iPhone development, so I currently have it hooked up to my living room LCD TV so that we can watch internet TV (if we miss an episode due to the DirecTV DVR’s being all booked up on Thursday nights) and to watch Netflix instant downloads, etc. I had been using a wireless mouse and keyboard until I searched the iPhone App Store and found an app called Wifi Touchpad by MB PowerTools. Edit: See update below, found a better app, Air Mouse! This app works amazingly! You can replace both mouse and keyboard functionality via wifi. For a mouse, your iPhone screen becomes a touchpad. You drag your finger around to move the mouse instantly, no delay. Tap the screen or tap the simulated mouse buttons to click on items. Tap an arrow to bring up the keyboard. There are a few other features that I haven’t used yet, but the mouse and keyboard worked perfectly. You do have to download and install a free “service” application to run on your Mac to talk to the iPhone app. Just set the app to run when your user account loads and you’ll be good to go anytime you want to control your Mac from the couch.

Update: Air Mouse is an even better app! I recommend watching the video, this app is incredible.

Nov 3, 2009 - Business, Development    Comments Off

Using PayPal Payments Pro For Multiple Sites – Parent-Child Accounts

History

I’ve been using PayPal Payments Pro for a few years on my sites. Payments Pro allows you to access a PayPal API so that you can accept credit card payments directly on your site without your users visiting, or even knowing that you use, PayPal. The API is pretty cool and very easy to use. PayPal’s documentation is also very good. I’ve got it set up on our PHP sites and we accept payments, submit refunds, and send money all through the API.

Problem

The problem that I’ve run into is that PayPal only allows you to submit one business name on your credit card transactions. If you run multiple sites through the same API / PayPal account they will all show the same name. And I will tell you that no matter what you do, you will get phone calls asking who you are and why you charged customers’ credit cards. We had notices on the site, the buttons actually read “make payment to 32nd Degree”, and we explained that the credit card statement would show “32nd Degree” as the payee in the email receipt, but people still forget. This can also lead to increased credit card chargebacks, which are a pain. You cannot create multiple PayPal accounts linked to your business bank account, so you can’t simply open new accounts for each website.

I called PayPal about two years ago and was told that there was simply no solution for running multiple websites and having each website name on credit card statements, at least not with only one business bank account to move money to. I recently Googled my problem and found on a forum that PayPal had finally come up with a solution to this problem.

Solution

You can request a parent-child relationship between two or more accounts with PayPal. You can create a pay@childwebsite.com account that links to pay@parentcompany.com. The money will be “swept” each night from the child account into the parent account. For some reason PayPal also sets the parent account to automatically transfer your parent account balance to your bank account each night. I requested this to be turned off on my account today, hopefully it works. You will have to apply and pay for Payments Pro on the child accounts, for whatever reason. I was told by PayPal that I would be paying the Payments Pro fee on each child account I wanted to create. From what I’ve seen, though, only my parent account has been charged this fee, just like before I created the child accounts.

The Catch

Now here’s the catch. PayPal doesn’t allow you to open up multiple accounts with the same credit card (the “funding source”). I only have one business credit card. But, once you set up a child account, and use a personal credit card as the funding source, you can remove that credit card if the account is linked to a parent account. This account will adopt the parents funding source, so that your Payments Pro payments can still go through successfully. But, you’re forced to register with a unique credit card, there is no way around this.

So the steps to set up a child account are:

  1. Create a new account with something like pay@childwebsite.com
  2. Apply for Payments Pro – be sure to enter your child account info in the line for the credit card statement so that your website name shows up on people’s credit card statements. You can enter your business name up top, but at the bottom of the form be sure to put your website name.
  3. Once you are approved for Payments Pro, you will get an email, call PayPal and ask for them to set up a parent-child relationship for your two accounts. You’ll be transferred a few times before you get to the right group that can do this. Actually they can only submit the request for you. You will receive an (vague) email once the accounts are linked. Try to get the person’s contact info who submits your request, you might need to contact them later.
  4. When the account is linked you can remove the credit card from your child account. You’ll want to do this if you want to use this credit card on another child account registration.
  5. Sign up for your API usage within your PayPal account and change your website code to use the new username / password / certificate.

Another Catch

Something to consider, since your child accounts will be sweeping their funds to the parent account each night your child accounts will be empty, or barely funded, most of the time. For me this affected my API code for issuing refunds – since when I ran the code the accounts were empty. Since in my case I did not have multiple credit cards for the same bank account sitting around my child accounts had no funding source after I deleted the card I used to get registered.  But, I was able to instantly transfer funds from the parent account through the API and then make the refund (I had to put in a 30 second wait between transfer and refund). Now I just have to modify all of my refund code to make this transfer first.

Pages:«1234567»