The sad state of web design: WebHotOrNot

February 6th, 2008

I originally was excited when I saw WebHotOrNot.com (Yes, now you can say I’m a uber-geek). Similar to the photos of people that your friends used in high school, Hot Or Not?, you can rate the graphic design of web pages. Unfortunately, it crops each snapshot of the page off at 768 pixels (I believe).

It depresses me to click through most of these. I average clicking five or so. They are all text/information heavy and 90% look like prepackaged themes of blue, black and white. I realize that I’m posting from a blog with the default WordPress theme, Kubrick, but I’m selling anything. My blogs are still in a personal phase–I don’t even have a domain for each of my blogs except the poetry knook.

bbPress: The forum from Automattic (makers of WordPress)

January 23rd, 2008

bbPress is still under version 1.0 (as of this writing, it’s at 0.8.3.1). You might think forums are dead, why not just Tweet away on a closed group channel or such. Although not the latest thing, forums are foundational. They are the web version of newsgroups and essential for large groups of people. As a lover of WordPress, I can’t wait to see bbPress develop and mature. Looks like others can’t either: Automattic raised $29.5 million in their Series B round of funding.

Wordpress: Setup a static front page and a posts page

January 18th, 2008

In WordPress Administration under Options->Reading, there is an option to set a “Front page” and “Posts page.” The front page setting is fairly straightforward. If you do not want your latest blog posts (index.php) as your homepage, you can set a static page and its template as the root page (http://www.example.com/). This is great for an under construction page, too.

Posts Page

What is a post page? If you have disabled the default homepage (explained?Ǭ† above) and made it a static template page, then where are your latest posts? They are on this page.

1) Create a page (Write>Write Page) and make the “Page Slug” on the sidebar whatever URL slug you want to be the location of your posts. I recommend making it be the same as your custom structure (Options>Permalinks, e.g. - “blog” as in “/blog/%postname%/”).

2) Go to this Options->Reading and in the drop down box for “Posts Page” you can now choose your newly created page (e.g.- “Blog”).

The contents of this page (i.e.- “Blog”) will never really be accessible. Now if the user goes to “http://www.example.com/blog” then they will see the latest posts instead of an error.

Our agency profiled in local business journal

January 7th, 2008

The advertising agency that I work for was profiled in the Indianapolis Business Journal this month. Miles Brinson Brown: Small agency still thinks big, size gives ad firm advantage when it comes to being flexible

Upgrading a blog to Wordpress 2.3 and changing your Ultimate Tag Warrior tags

December 5th, 2007

I upgraded the poetry knook today from WordPress 2.1.3 to 2.3. Including backing up the database and user files, the process took about an hour. Be sure to follow the upgrade steps (in order!). I have heard that logging into administration during an upgrade can cause problems.

WordPress 2.3, which was released back in September, includes among other things: a native tag system, plug-in and platform upgrade notification, post management interface improvements, roll your own dashboard, and roll your own RSS libraries. Many of these items have been addressed by plug-ins. Tagging especially comes to mind. I love Ultimate Tag Warrior and use it on all my blogs.

But I have to say goodbye to Ultimate Tag Warrior (well, not really, I hear there’s a UTW hack compatible with WordPress 2.3), because, as in all platforms, the best third party features eventually get implemented by the parent company. I recommending reading, How to Switch from Ultimate Tag Warrior to WordPress 2.3 Tagging, if you currently use Ultimate Tag Warrior and are upgrading to 2.3. I still had errors and installed UTW Theme Compatibility Thing but it did not work for me in listed related posts. For my related posts, I installed WordPress 2.3 Related Posts Plugin, since I couldn’t get UTW’s related posts tag to work.

As for mass editing and management of tags in WP 2.3, I am liking the features of Simple Tags. I have not used their tag clouds and related posts features however.

I think it took about as long to install WP 2.3 as it did to write this post, so check your plug-ins’ compatibility and then upgrade!

CUSTOM THEME NOTES:

Sounds easy doesn’t it? Well, not exactly if you use a customized blog and do not just download an upgrade ready-to-wear theme. You will need to change out all your UTW tags to WordPress tags (at the time of posting, this wiki is incomplete). Below are specific items I had issues with when upgrading:

  • Be sure to update your tags.php with the native WP tags instead of the UTW tags–although with the UTW Theme Compatibility Thing plug-in, you should be able get away with not changing these tags. There are no where near as many options with the native tags, so you may have to change the format of the tags in your blog.
  • I have had problems with the Dagon Design Sitemap Generator plug-in since the category database schema has changes. Update to the latest version to fix this.
  • Unlike UTW’s use of the tag.php for listing posts filed under a tag. The native tagging system of WordPress 2.3 uses the archive.php (just like viewing a category). Takes a glance at the code of /wp-content/themes/default/archive.php in order to customize your “Posts Tagged with ????” pages. It took me a while to figure this out in my customized themes.
  • I suggest creating a mod_rewrite entry in your .htaccess similar to “RewriteRule ^tag/(.+)$ http://www.example.com/archives/tag/$1/ [R=301,L]“, since tags will now be under the URL set for permalinks in the Options menu (e.g.- http://www.example.com/archives/tag/)
  • According to the Wp 2.3 ChangeLog, there are deprecated functions you will need to update in your template. Template tag permalink_link() has been deprecated in favor of the_permalink(); permalink_single_rss() has been deprecated in favor of the_permalink_rss().
  • I like to use variable font sizes (i.e.- ‘em’ instead of ‘pt’) for accessibility issues. The WordPress 2.3 tag, wp_tag_cloud, has problems with the unit, ‘em.’ Use ’smallest=1&largest=1.01&unit=em’ for the parameter to keep all the tags the same size.

HTML standards in email clients: Oh, the horror!

December 2nd, 2007

A new HTML standards for email clients advocacy site has sprung up. It’s called Email Standards Project. I sincerely hope that it is able to make a difference. I’ve personally had issues with the major discrepancies in email clients at my job. I’ve heard that Microsoft Outlook 2007 is unfortunately using the Word HTML engine instead of the Internet Explorer Engine. The full list of clients that are on the Average or Poor list are:

This is based on their acid test. If you are involved in developing internet applications or sites and aren’t familiar with acid tests (and you should be!), visit WebStandards.org for the web browser acid test.

So what’s a person to due in the mean time–structural tables and inline CSS, of course! That’s what! So barbaric and so 1999! Here is a tutorial on what HTML/CSS you can use across multiple email clients.

How to link to your Facebook profile: public profile link and NOT public profile link

November 17th, 2007

Slowly Facebook has disabled direct links to profiles. Originally you could link to

http://www.facebook.com/profile.php?id=000000000.

All you had to do was copy and paste the URL from your address bar while you were logged into Facebook and you were good to go!

But the Facebookers disabled that.

If you want to keep all your information private, but want to post a link to add you as a friend, now you can do a search and limit it by id number:

http://www.facebook.com/s.php?k=100000080&id=000000000

To view the above link, you still have to login. If you don’t want users to have to log in and don’t mind submitting your profile to search engines, now you can create a public profile and link to it

http://www.facebook.com/p/First_Middle_LastName/000000000

I could not find anywhere that would list how to make this URL. I looked around and had to try the schema by example. It is as listed above with your profile id attached to the end instead of the “000000000″

Thirteen Ways To Add SEO To Gallery2

November 5th, 2007

Overview of Search Engine Optimization for Gallery2

I hope this is a starting point for those that want to make Gallery2 more SEO. Please remember that the SEO doesn’t make you show up higher in search listings, but makes it easier for this to happen. Having other people link to your pages is always the best thing you can do (at least for Google). Any additions to this list would be helpful. If you have questions or would like clarification, please ask.

Technical Background on Gallery2

Some of the suggestions on this list involve editing template and class files, do this at your own risk. Gallery2 administrators recommend copying the file you are editing to the subdirectory called “local” and editing the file there. Gallery2 will then use that file instead of the original. This also means that upgrades will not overwrite your edited file. In the examples below, I am using Gallery 2.2.3.

1. Activate URL Rewrite plugin

Read through the URL Rewrite Administration page and familiarize yourself with the structure of Gallery2, you’ll notice that the permalink of a photo is based on the filename.

2. Make items in keyword and other dynamic albums point to item’s permalink

ll links that can, should point to an item’s permalink–after all that is the valuable content–all else is for the user’s convenience and experience. This will eliminate some duplicate content and use the keyword album’s PageRank to point to the item’s permalink.

  • On the Site Admin page, go to Keyword Album (and/or Dynamic Albums)
  • Change Thumbnail links in dynamic albums to Jump to original album, and click Global checkbox if possible.

3. Use keywords in filenames

ince the permalink of an item is based on the filename, the filename of the item affect the keywords contained within the URL. Do not use the file name that a camera gives each photograph, but name your photos using keywords. You can do this manually, or you can use a bulk file renaming tool.

I recommend you use a bulk file renaming tool. On Windows, I use the free Bulk Rename Utility. It allows all sorts of file naming options including regular expressions, recursive file renaming of files in subdirectories, add suffixes, add prefixes and many, many more. It’s a little overwhelming when you first load the program. Thankfully, you can see the actual before/after of the file names, so you don’t have to guess at what you are doing. If anyone know of an OS-X bulk renaming tool, please contact me.

My naming convention for a file name is photo_set-photo_subset-people_or_objects. For a photo of my parents, my bride and myself at my wedding, I used wedding-party-rachel-stephen-richard-mary-james.jpg

4. Create keyword-dense titles and keywords for each item

aving tags or keywords link similar items not only provides users of your site to easily visit similar items, but it also links the keywords with your content for SEO.

Upon wanting to post over five hundred photographs of my honeymoon in Ireland to my Gallery2, I decided to write an automated PHP script that goes through the database and does the following:

  • Reads in the file name
  • Replaces the hyphens and/or underscores with spaces
  • Removes Windows and OS-X renaming suffixes/prefixes such as numerals, parenthesizes and the word “copy.”
  • Then, places this text in the item title field

After creating the title, I re-run the php script that then adds keywords. It does the following:

  • Reads in the file name
  • Replaces the hyphens and/or underscores with a comma and a space
  • Removes Windows and OS-X renaming suffixes/prefixes such as numerals, parenthesizes and the word “copy.”
  • Removes common words such as the, of, to , with, on, through, in and single letters (A-Z)
  • Then, places this text in the item keyword field

Now you can do all this manually and probably get better results by fine-tuning each item’s keywords and title, but in this instance, I did not want to enter thousands of keywords and possibly misspell them.

If you would like a copy of this script, I can email it to you. Please contact me. You will need to directly edit a PHP file, but I believe it is straight forward enough. It has no warranty for anything it does to your system. Before using it, backup your database. After the script has run, the database cache will need to deleted at Site Admin >> Maintenance >> Delete database cache

5. Optimize robots.txt

Some say to disallow search engines from listing keyword or tag pages by using disallow within one’s robots.txt. The theory behind this is that search engines do not actually stop looking at the pages listed after a disallow command. Disallow is there to prevent good search engines from listing disallowed pages in their search results. They DO read and evaluate disallowed pages for content. So the theory is that when a user searches for a keyword, the keyword page will not show up in the search results, but the actual content pages that the keyword pages link to will show up. This only works with search engines that value linking over keyword density. Since there is usually not much text on an item page, disallowing keyword filled dynamic albums might have negative effects. I suggest you research optimizing your robots.txt more, before disallowing hundreds of pages from search engine results.

6. Remove slideshows

I would say that this is the least important item on this list, but you want to be sure to remove as much duplicate content as possible, then to remove the slideshow:

  • Goto Plugins on the Site Admin page.
  • Deactivate Slideshow and Slideshow Applet

7. Remove multiple sizes

I’ve never had multiple sizes setup in my Gallery, if someone has the directions on how to deactivate this. It would be helpful.

8. Enable Google Sitemap

Sitemaps are an XML document that lists all content pages. When your site changes, it changes. Just like it says, it is a map. It doesn’t automatically get you a higher SEO, it only give the search engine a map to browse your site with. Personally, I’m not convinced that this helps SEO. It just makes sure all your pages get listed–which if you are practicing good SEO on your site, when you should not have to worry about a page not being listed. To enable Google Sitemap:

  • Goto Plugins on the Site Admin page and deactivate Slideshow and Slideshow Applet
  • Activate Sitemap

9. Optimize permalinks

Search engines do not like variables (question marks and ampersands) at the end of URLs. Gallery is made to be sticky with its items which makes human browsing easier and pretty much eliminates the need to use the browser’s back button. If you use the breadcrumbs in the upper left to view a parent album, you are shown the album page that contains the item you were just viewing. Below are changes to make to the Gallery2 code

Comment out the urlParams call in /modules/core/classes/GalleryTheme.class
LINE 1408 - BEFORE

if (!empty($theme['parents'][$i + 1]['id'])) {
$urlParams['highlightId'] = $theme['parents'][$i + 1]['id'];
} else if ($itemId && ($i + 1) == count($theme['parents'])) {
$urlParams['highlightId'] = $itemId;
}

LINE 1408 - AFTER

/* if (!empty($theme['parents'][$i + 1]['id'])) {
$urlParams['highlightId'] = $theme['parents'][$i + 1]['id'];
} else if ($itemId && ($i + 1) == count($theme['parents'])) {
$urlParams['highlightId'] = $itemId;
} */

10. Make item titles into heading text and links

Add heading tags to item titles in /themes/matrix/templates/album.tpl (with “matrix” being your current theme)

LINE 121 - BEFORE

<p class="giTitle">
{if $child.canContainChildren && (!isset($theme.params.albumFrame)
|| $theme.params.albumFrame == $theme.params.itemFrame)}
{* Add prefix for albums unless imageframe will differentiate *}
{g->text text="Album: %s" arg1=$child.title|markup}
{else}
{$child.title|markup}
{/if}
</p>

LINE 121 - AFTER

<h2 class="giTitle">
{if $child.canContainChildren && (!isset($theme.params.albumFrame)
|| $theme.params.albumFrame == $theme.params.itemFrame)}
{* Add prefix for albums unless imageframe will differentiate *}
<a href="{g->url arg1="view=core.ShowItem" arg2="itemId=`$child.id`"}">
{g->text text="Album: %s" arg1=$child.title|markup}</a>
{else}
<a href="{g->url arg1="view=core.ShowItem" arg2="itemId=`$child.id`"}">
{$child.title|markup}</a>
{/if}
</h2>

11. Prevent duplicate base URLs for your Gallery

On Apache servers, you can change by each directory how the web server serves up your pages within a file named .htaccess. If you have implimented the URL Rewrite plugin correctly, then you should already have an .htaccess file in your Gallery2 directory. Redirects affect SEO negatively, and it has been said that two site homepages, /main.php and /, harm SEO. To prevent the 301 redirect to /main.php, add the following lines to the top of your .htaccess:

# Set the default handler.
DirectoryIndex main.php

It should be said that not all hosts allow you do change the DirectoryIndex. Also, this also might need to be done to get rid of “main.php” in the breadcrumb. I’m not sure if I changed this myself or gallery set it automatically, but on line 177 of /config.php, I have:

# Set the default handler.
DirectoryIndex main.php

In a related note, some search engines will differentiate www.yourdomain.com and yourdomain.com. This not good and could result in duplicate content. You can search Google via site:yourdomain.com and find out how your site is currently listed. You want to be listed in the same format that external links and internal links are linking to your site. To redirect pages without “www” to a page with the prefix, add the following lines to the top of your .htaccess:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

If you are hosting, your Gallery2 in a subdirectory (e.g.- photos), use this:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/photos/$1 [R=301,L]

12. Add META tags to your Gallery2 pages

It has been said that META tags have lost importance since their glory days ten years ago. They have lost importance to external links, but they are not to be disregarded. To add the META tags keyword and description to your Gallery2 pages add the following lines to /themes/matrix/templates/theme.tpl (with “matrix” being your current theme).

LINE 19 - BEFORE

{* If Gallery doesn't provide a header, we use the album/photo title (or filename) *}
{if empty($head.title)}
<title>{$theme.item.title|markup:strip|default:$theme.item.pathComponent}</title>
{/if}

LINE 19 - AFTER

{* If Gallery doesn't provide a header, we use the album/photo title (or filename) *}
{if empty($head.title)}
<title>{$theme.item.title|markup:strip|default:$theme.item.pathComponent}</title>
{/if}
<meta name="keywords" content="{$theme.item.keywords|markup:strip|default:$theme.item.pathComponent}" />
<meta name="description" content="{$theme.item.description|markup:strip|default:$theme.item.pathComponent}" />

Note: The above is only an addition of the meta tags.

13. Optimize page title

Page titles are some of the most important information used for SEO. Search engines will only use the first so many characters. I’ve heard that title elements should ideally be less than 64 characters in length. That doesn’t been you can’t use longer ones though. Forum user, maravizzo, suggests adding the title of the parent album to the page title. This should increases your associated keyword density in your page title.

Add lines in /themes/matrix/templates/theme.tpl
LINE 14 - BEFORE


{if empty($head.title)}
<title>{$theme.item.title|markup:strip|default:$theme.item.pathComponent}</title>
{/if}

LINE 14 - AFTER


{if empty($head.title)}
<title>{$theme.item.title|markup:strip|default:$theme.item.pathComponent}
{if $theme.parent.title}
:: {$theme.parent.title|markup:strip|default:$theme.parent.pathComponent}
{/if}
:: Title of Site</title>
{/if}

14. Create SEO page numbers

This is related to number six, Optimize permalinks, but I have yet figured how to do it. I’ve read the Gallery2 forum thread, URL Rewrite for page number, but did not want to change my current item permalinks. If anyone has suggestions, I’d love to see this addressed.

Make The Logo Bigger Cream will solve all your advertising woes!

November 1st, 2007

I generally don’t promote specific websites on this blog, but I enjoyed this humorous designer-centric site, MakeMyLogoBiggerCream too much not to post. Not only does it offer Make My Logo Cream, but if you act now you can get Whitespace Remover, Starburst Dust, Fluorescizer and The Emotionator for only three payments of $29.99! Act now!

Macromedia Dreamweaver 8 crashing on startup and close

October 30th, 2007

For a long time, I have had problems with Macromedia Dreamweaver 8 crashing at the close of the program. I had never had a problem with Macromedia Dreamweaver 8 crashing at startup until the other day. I surmise that Macromedia Dreamweaver 8 had closed and crashed as it usually did, but this time it wrote an invalid or corrupt Site Cache file. It took me a few hours to remove all parts of Macromedia Dreamweaver 8 from my system, but I finally found the corrupt site cache file in users/{username}/library/application support/macromedia/common/8/Sites/


Books Now Reading

My Sites