Category Archives: Web Design

New Catalog and Ecommerce Web Site for Bandera USA

Bandera catalog coverLast month I put the finishing touches on the new 2014 Bandera USA catalog. It features a few new items from Bandera USA that you might expect, like some new rifle slings, but also something completely new, some leather wine bags that would make excellent Christmas gifts for that wine connoisseur on your shopping list.

The cover of the new catalog is a combination of a piece of leather I had Bandera USA craft just for this purpose, and a stock photo of some colorful turkeys provided by photographer Dave Irwin. All of the other product photography, and the back cover of a handsome bull elk were done my myself.

At the same time I was working on their new catalog, I was putting together a new ecommerce web site for them, so you can now buy all your hunting and trap shooting supplies online.

You can visit their new site at or you can stop by their store in Fortuna and shop in person and pick up a copy of the new catalog while you’re there.

Firesteed, again

The day after I photographed Brittany Smith, I received a phone call from Kimberly Goodrich, the owner of Firesteed Stables, where I had photographed Brittany. I figured it was somehow related to that issue, but coincidentally, she needed some web design work done and picked me after doing a web search. She had heard that someone had been out taking pictures the day before and was surprised to hear it was me. That made the third time in less than a week that Firesteed Stables and I crossed paths.

Kimberly is trying to sell her property, and a friend had put together a web site but it wasn’t showing up when people searched for horse property for sale in northern California or any other terms. I took a look at the web site and made a few suggestions, the main one being that she really needed better photography. If you’re asking someone to make a buying decision on the web, you need to provide professional grade photos to help that decision.

Getting to photograph Kimberly’s home was quite fun, as I really enjoyed her taste in art, color, and design. From seeing the Frederic Leighton posters upon entering the house, to the tableau with the dagger set up in her living room, the house shows a personality you often don’t see in people’s homes. Going from room to room I almost felt more like I was in a themed B&B than someone’s private home. It’s what I hope our house will someday be, if I can ever drag myself away from the garden long enough to work on it.

After doing the photography, Kimberly decided she wanted me to totally redo the look of the web site, and I used the color scheme of her interiors for inspiration. With it just being a one page web site, it’s not the easiest thing to get it to rank well on Google or other search engines, but at least if they do find it, the page will entice them into visiting, and hopefully purchasing this gem.

To view more photos of this horse property in Ferndale, you can go to the Firesteed Stables web site.

Exterior Living Room Living Room Bedroom

WordPress Content Disappeared

Had one of those DUH! moments today.

I was on the phone with a client introducing them to their new WordPress site. The client couldn’t remember the password I set for him so I went into the user area and reset it. While I was there I noticed that I still had the default admin user set up so I deleted it per my customary practice of not making it any easier for hackers.

I then guided the user through making his first post once he logged into the backend. Everything was going fine until we went to look at the post he created and the site’s content was gone. The theme was still there, but no content. I went to the All Posts list and the All Pages list and everything was gone.

“Let me call you back when I get this figured out”. I thought that maybe with both of us in the database something got corrupted.

First I looked at the database and confirmed that the data was all there. It was.

Then I got online and started researching and it seems there’s been some reports of the database getting corrupted but a quick SQL fix database should make it better.

So I logged into phpMyAdmin and ran a fix. No errors were found and the content was still missing. After scratching my head for awhile I went back and looked at the data using phpMyAdmin. That’s when I noticed it.

All the missing pages were in the trash. When I deleted the user, I forgot to check the box to reassign the posts to my username. I had built all of the pages signed in as the default user admin.

Certainly I was distracted by doing this while I was on the phone with a client and should have waited until later. But if all of the sudden you have content missing in your WordPress site, think back did I just delete a user?

To correct it I had to manually change the post_author and post_status fields. Fortunately for me, WordPress doesn’t actually erase the records, it just changes the post_status to trash. Change it back to publish and your content reappears.

bingbot – Another wonderful piece of coding from Microsoft

Well the folks that brought you the most easily infected PC operating system, and the buggiest and most non-compliant web browser, have done it again. Their latest invention is a crawler robot that may end up costing you money.

All of the major search engines have robot computers that are known as crawlers, bots, and spyders. Their job is to go to web sites and follow all the links and then index those pages, follow the links on those pages, and go on and on and on. That’s how the internet is indexed these days. All well and good. Until Microsoft designed their bot.

The search engine bots are supposed to have a minimal impact on your web site, coming by for a taste now and then. If they try to devour the whole meal at once it can impact your server, slowing it down for your visitors.

This month after receiving the bill from my hosting provider, I noticed that I was charged extra for going over my bandwidth limit. That was the first time I ever experienced this so I did a bit of investigation.

One account on my server was way above normal usage and after looking at the logs, I noticed that search engine bots were way over represented in the stats than they should have been. Drilling down into those stats I found that bingbot, Microsoft’s bot for their Bing search site accounted for 19% of the site’s traffic. It was hitting my site so often that it totally skewed the Webalizer stats for the month.

The problem seems to have resulted in a voting script that I recently added and bingbot was trying every voting link which seems to have put it in an endless loop. For a long time bots ignored URL’s with question marks in them because only dynamically served pages would have them and the bots could quite often be caught up in endless loops when trying to follow them. Apparently the engineers at Microsoft thought they were smart enough to venture into the rough waters of dynamic URL’s, but they forgot to bring their lifeboats with them in case they needed to abandon ship.

Their foolhardy venture cost me a small amount this month, and I’ve put some modifications into my robot.txt file to keep them out of that part of the site. Hopefully they will grab the updated robot.txt file soon and pay attention to it.

Just for the record, here are all the IP addresses I found in the logs during a one hour period that can be traced to bingbot. At some points there were up to 4 different bingbots hitting my site at the same time! In all, in just this random 1 hour time frame that I picked, 34 different bingbots hit my site 94 times. Mostly indexing the same 15 pages over and over again.

Apparently, I’m not the first to experience a bingbot binge.

Suppressing Blank Fields with Novice Form (nvform.php)

I’ve used Seth Knorr’s Novice Form PHP script (nvform.php) on a few web sites to do the HTML form to email processing because it is an easy way to implement that common task. I’ve made a few changes to the script for my own use, such as adding a section to combat form spam. Recently a client asked me if I could have the email only list the fields that were filled in. On his web site we are using the script to process a form with a lot of fields, and the email ended up being 4 pages long when printed.

I figured this would be an easy change but when I looked at the code, it wasn’t obvious to me where to make the change. So I went to Google for an answer, and while I found others asking the same question in various forums, no one had answered the question.

So back to the code I went, studying it for where it was writing the email text. One thing about PHP is that you aren’t forced to write the code following any rules for line breaks, indents and such, so following someone else’s writing style can sometimes throw you. In this case I found an ELSE clause at the end of a line that I missed the first few times while reading the code.

Once I noticed that, the change I needed to make was very simple, and here is the answer. Find this line of code:

if ( $NVPOST_name == "subject" || $NVPOST_name == "sort" || $NVPOST_name == "required" || $NVPOST_name == "success_page"){}else{

and change it to this:

if ($NVPOST_value == "" || $NVPOST_name == "subject" || $NVPOST_name == "sort" || $NVPOST_name == "required" || $NVPOST_name == "success_page"){}else{

That’s all there is to it!

Personally I would have written the statement like this, which is easier for me to see the logic.

if ($NVPOST_value == "" || $NVPOST_name == "subject" || $NVPOST_name == "sort" || $NVPOST_name == "required" || $NVPOST_name == "success_page"){     /* don't print anything */ } else {     $SEND_prnt .= "$NVPOST_name; $NVPOST_value n"; }

Use Your Own Domain!

Email has become one of the most important communication tools the world has seen. It has replaced the FAX machine as the way to correspond quickly, and for many people it is preferred over having phone conversations, especially when working with people in different time zones.

So given email’s importance to business communications, I’m surprised when I still see business people using email addresses provided by their ISP such as AOL, or by companies that provide them for free such as Yahoo and Google. It’s especially hard to understand when these companies already own their own domain.

Fortunately, by now most companies setting up a web site understand the point of having your own domain. But when it comes to email, some people still seem reluctant to make use of what they’re already paying for. Here are some reasons why you should use your own domain.


How successful would your business be if you kept changing your phone number? If you’re using someone else’s email service you’re at their mercy. If they get bought out (think Pacific Bell -> SBC -> AT&T), go out of business, or their service just gets so terrible that you decide to change providers, then you have to go through the process of notifying everyone that you have a new email address. Add in the expense of printing new business cards, and any other materials that have your email address on it. You also have to update any online directories where your email contact might be listed.

If you use your own domain, your email address stays the same for as long as you keep renewing your domain. You can change ISPs at will and never have to worry that you’ll lose business because your email address can be moved to the new ISP.


When you send an email, do you want to promote your business or Yahoo’s? You spend money and time trying to get people to your web site, why not make it easy for them to find you by using your own domain every time you send an email?


Using a free email service like Yahoo or Hotmail tells the world you’re cheap. To many people, an AOL address identifies that user as someone who can’t figure out the ‘real’ internet. Clueless and cheap are not traits you want to broadcast to your clients and customers.


With an email address through a service like Yahoo, you’re stuck with what they give you both in features, and with how they handle spam. Yahoo, AOL, and Comcast are very prone to labeling valid emails as spam. Can your business afford to lose sales because customers’ emails end up in a spam folder?

It’s also true that mail coming from a free account is more likely to end up in someone else’s spam folder.

Akismet has detected a problem. A server or network problem is preventing Akismet from working correctly.

For the last two weeks I have been tracking down why all of the sudden, with no changes on my part, the Akismet plug-in for one of my clients stopped working. I noticed it right away because without the plug-in working, I was getting inundated with lots of spam comments on the WordPress blog.

I logged into their WordPress blog and noticed a banner at the top of the page that read:

Akismet has detected a problem. A server or network problem is preventing Akismet from working correctly. Click here for more information about how to fix the problem.

So I clicked there and got another page where this was listed.

Unable to reach any Akismet servers. A network problem or firewall is blocking all connections from your web server to Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls.

This particular client is not hosted on one of my servers, but is instead hosted by CBeyond. So I opened up a trouble ticket with CBeyond. I inquired if they were doing any blocking and they said no. They also said there weren’t any changes made to the server recently. But something obviously changed because it had been working and in fact it had to have worked at some point because the API key had been validated.

So off to the internet for the answer and I found lots of people that had experienced this problem, with only a few answers. A big problem was that in one version, the Akismet plug-in had a problem where it would intermittently fail to connect. But since I had the latest version this didn’t apply, and my problem certainly wasn’t intermittent.

Akismet’s FAQ mentions that the connectivity problem could either be system related or firewall related, so I started out checking each item one by one. First there are two PHP functions that need to be enabled. fsockopen and gethostbynamel.

In my case it ended up that the gethostbynamel function wasn’t working although it was enabled. It was returning an IP address of and CBeyond’s tech support couldn’t figure out why this started happening. I’m not very impressed with CBeyond’s tech support as it appears to be out-sourced with the usual language barries and form replies that have nothing to do with the question being asked. Their final advice was to move the account to one of their newer servers which should fix the problem, but it’s going to be a disruption to the client and more work for me.

Humboldt County Web Design

Humboldt County is a wonderful place to live, with its natural beauty and relaxed lifestyle, but as the traditional industries such as logging and fishing are disappearing, many people wonder how they can continue living here. The Internet offers one solution, as it is now possible to sell your products or services through a web site to a national or even international clientele, while enjoying the lower cost of living in Humboldt County. Web design itself is what allowed my wife and I to relocate to Ferndale in 2000.

If you are a business owner in Eureka, Fortuna, Arcata, Ferndale, or any other area of Humboldt County and you’re looking for someone to design your web site, you of course have many options even in this mostly rural area. The introduction of easy to use web site building tools has made it easy for almost anyone to design a web site, and sometimes it’s tempting for business owners to take the DIY approach. But just because you can, doesn’t mean you should. There is so much more to creating a successful web site than just mastering HTML.

First, there’s aesthetics. Yes, there’s a reason I named my web design company Aesthetic Design & Photography. The web is a visual product, and the choice of colors, fonts, and other design elements must merge harmoniously, while effectively conveying the image that the client wishes to portray. The web design chosen must also work well with any number of different browsers, computer operating systems, and personal settings. Before the web came along, my background was in programming, graphic arts and photography, and a successful web site design is a combination of those three skills.

As important as it is for the site to look like it was professionally crafted, it’s even more important that your site can be found by your potential customers both in and out of Humboldt County. Too often, people starting a web based business take the approach, “Build it and they will come.” Unless your business is selling a product or service that is unique and highly in demand, you’re probably like the rest of us and you have competitors. Unless you can stand out above your competitors, your customers have no reason to choose you. So you really need to target your site to attract your best potential customer. This is where hiring a professional web designer really pays off, because Search Engine Optimization should be designed into the site from the beginning.

My goal in offering my web design services for Humboldt County businesses is to provide true value for the small business owner. Most of the web sites that I design are in the $800 to $1500 range. Customers that have their sites hosted on my server enjoy having their small updates performed in a timely manner, at no additional charge.

Not every client is going to be the perfect fit for every web designer in Humboldt County. Web designers all have their own strengths and weaknesses. If you come to me feeling that your site needs to be built in Flash, I’ll try to talk you out of it, but if it really makes sense for your business, I’ll refer you to someone better able to meet your needs.

If you are a small business owner in Humboldt Countly looking for a web designer, here are some of the most important reasons you should consider hiring me:

Value – I’m not the cheapest web designer out there, nor am I the most expensive. I’m not going to try competing with the kid fresh out of high school who knows how to use a template. I have won jobs though where the competition’s bid was 2-5 times higher than mine. Because of the way I run my business and the principles I use in my web sites, I am able to offer great affordability for a quality product.

Experience – I’ve been designing web sites in Humboldt County since 1996. I have clients throughout California and the rest of the United States.


  • I believe in educating the customer. The web and the Internet (and computers in general) are filled with all kinds of jargon. I talk to my customers in plain english and I take the time to explain why I am doing something or not doing something.
  • I keep it simple. It’s frustrating when things don’t work, and the more complex you make something, the less likely it is to be fail safe.

PHP include path

I’ve been doing a lot more PHP programming lately, especially integrating Word Press blogs (like this one). It’s been important to me that the blog part of the web site matches the look and feel of the rest of the site.

This means making sure that the style sheet for the main site lives peacefully with the style sheet for the blog. It also means that there are sections of the pages such as the menus that I want to keep in separate files and include them where needed. This makes it much easier to make global changes.

The way that PHP uses the path for includes is confusing, and rather than try to explain the rules, I’m going to show you what worked for me. I’m not enough of a programming geek to always want to know why, sometimes I just want it to work so I can get on with the project at hand.

Here’s a simplified directory structure of a typical site:

/ /index.php /about-us.php /blog/ /blog/myblog.php /includes/ /includes/menu.php

Suppose we want to include menu.php in both /about-us.php and /blog/myblog.php. For /about-us.php it is easy:

include ("includes/menu.php");

But /myblog.php is a bit harder, since you can’t just use ../includes/menu.php like you would think. But this will work: