<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"><id>tag:blogger.com,1999:blog-18633935</id><updated>2009-01-04T15:35:12.081-08:00</updated><title type="text">Pleasanton Web Design Blog</title><subtitle type="html">Information on Web design, technology, and culture from my vantage point here in Pleasanton, California.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default?start-index=26&amp;max-results=25" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/BottlecapNapkin?format=skin</thespringbox:skin><link rel="self" href="http://feeds.feedburner.com/BottlecapNapkin" type="application/atom+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">BottlecapNapkin</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-18633935.post-4146604318771904177</id><published>2009-01-02T20:25:00.000-08:00</published><updated>2009-01-02T20:57:05.909-08:00</updated><title type="text">IE6 - Why Won't You Die?</title><content type="html">As a web developer, I'm sure I'm not alone in despising Microsucks Internet Explorer version 6. It's poor and tweaky support of CSS standards makes every new style sheet an adventure in cross-browser testing. Looks great in Firefox, and IE7? There's a very low probability that it will look good in IE6. Tack on another 25% extra development time to squash those IE6 bugs.&lt;br /&gt;&lt;br /&gt;I was hoping, just a few minutes ago, that I would be able to discontinue support of Internet Explorer 6. When the percentage of a browser version drops below 10% in the logs of my more heavily visited sites, I stop testing with it. Unfortunately, my logs show the following breakdown for Internet Explorer visits:&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: none }&lt;/style&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Internet Explorer Version&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Percentage of Users&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td width="49%"&gt;&lt;strong&gt;7.0&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;td width="51%"&gt;72.11%&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;strong&gt;6.0&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;25.88%&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;strong&gt;8.0&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;1.76%&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Since around 60% of my visitors are using Internet Explorer, the total percentage of users on IE6 is around 15%. So if you are using IE6 - Please, please upgrade to &lt;a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx"&gt;IE7&lt;/a&gt; or &lt;a href="http://www.microsoft.com/windows/internet-explorer/beta/worldwide-sites.aspx"&gt;IE8&lt;/a&gt;. Or better yet, &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Firefox&lt;/a&gt;. Your Internet experience will be greatly improved, and you will help rid the world of another piece of poorly written software!</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/4146604318771904177/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=4146604318771904177" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4146604318771904177" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4146604318771904177" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2009/01/ie6-why-wont-you-die.html" title="IE6 - Why Won't You Die?" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-5273557729888142798</id><published>2008-12-11T21:48:00.000-08:00</published><updated>2008-12-11T22:32:28.221-08:00</updated><title type="text">DMOZ is Corrupt</title><content type="html">I've known that there was something wrong with DMOZ (Open Directory Project) for some time. There have been many sites over the years that I have submitted to DMOZ every six months, painstakingly going over the information to make sure that it meets the  requirements. What a colossal waste of time. The sites rarely get listed. No explanation from the editor. The submissions just fade into nothing.&lt;br /&gt;&lt;br /&gt;DMOZ is a valuable link. Google uses the DMOZ directory as a basis for the Google directory. Many other directories on the Web do the same, so your DMOZ link is duplicated many times over. This can add up to a lot of incoming links, and significant link authority.&lt;br /&gt;&lt;br /&gt;The DMOZ editors are volunteers, but they hold a lot of power. I found a enlightening example of how this power can manifest itself in the blog &lt;a href="http://www.corruptdmozeditor.com/"&gt;Corrupt DMOZ Editor.&lt;br /&gt;&lt;/a&gt; Here's an excerpt:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;&lt;span style="font-weight: bold;"&gt;Another day, another screwed DMOZ  submission&lt;/span&gt;&lt;br /&gt;&lt;/em&gt;It's another day and more submissions are  lining my queues. I go to a cafe with free internet access and cute college age  kids behind the counter, and log in to one of my dmoz accounts using firefox to  spoof the OS and browser. Then I delete a handful of listings starting from the  top without even looking at them. The next batch I include but I make sure to  drain the listings of any useful keywords. The next bunch I keep on hold for the  next time. I have a few listings that have been on hold for, I kid you not,  eighteen months.&lt;/blockquote&gt;The postings on this blog are a few years old, and I'm not sure how tongue-in-cheek some of the information related is, but reading through the blog confirmed the image I had of what goes on behind the scenes at DMOZ. Geeks with power. Not a good combination. Something as obviously dysfunctional as DMOZ will go away on it's own, hopefully sooner than later. In the meantime, there are plenty of other ways to promote your website. I'm done wasting my time with DMOZ.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/5273557729888142798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=5273557729888142798" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5273557729888142798" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5273557729888142798" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/12/dmoz-is-corrupt.html" title="DMOZ is Corrupt" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-6315351318359483429</id><published>2008-11-29T15:38:00.000-08:00</published><updated>2008-11-29T15:48:30.524-08:00</updated><title type="text">phpLD Captcha Problems</title><content type="html">A common problem I've noticed with phpLD (php link directory) installations is Captcha not working properly. On these sites you will be able to complete all of the link information, but when verifying that you are human using Captcha, you can only enter a portion of the Captcha code that you are given. You are therefore unable to submit the link, because you will always receive a Captcha error. Often the Captcha code contains six (6) characters, but the Captcha field only allows you to input five (5) characters maximum. You would think that these Webmasters would notice the lack of link submissions.&lt;br /&gt;&lt;br /&gt;The problem is due to the use of a third party template that has the maximum characters for the Captcha input field set too low. To resolve the problem, simply open templates/submit.tpl and find the code for the Captcha field. It will be something like: input type="text" name="CAPTCHA" value="" size="10" maxlength="5" class="input." Just change the maxlength to as many characters as you need to hold the Captcha numbers that are being generated.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/6315351318359483429/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=6315351318359483429" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/6315351318359483429" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/6315351318359483429" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/11/phpld-captcha-problems.html" title="phpLD Captcha Problems" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-308079931147351586</id><published>2008-11-29T14:42:00.000-08:00</published><updated>2008-11-29T15:48:53.961-08:00</updated><title type="text">Adding Google Analytics Code to a phpLD installation</title><content type="html">Here's a quick post to help you add Google Analytics tracking code to your phpLD (php link directory) template. Because phpLD uses the Smarty templating system, simply opening the footer.tpl and placing the Analytics code before the closing body tag will result in an error. You need to tell Smarty not to parse the code between the script tags. To do so, open your templates/footer.tpl file, and right before the closing body tag, place your Google code like this:&lt;br /&gt;&lt;br /&gt;{literal} Your-Analytics-Code-Here{/literal}&lt;br /&gt;&lt;br /&gt;Now save and put. That's it!</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/308079931147351586/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=308079931147351586" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/308079931147351586" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/308079931147351586" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/11/adding-google-analytics-code-to-phpld.html" title="Adding Google Analytics Code to a phpLD installation" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7907535767114548436</id><published>2008-09-17T15:10:00.001-07:00</published><updated>2008-09-17T15:22:11.708-07:00</updated><title type="text">Pleasanton Criminal Defense Lawyers</title><content type="html">From time to time I like to give a plug for one of my clients. Today it is O'Connor &amp;amp; Runckel LLP, &lt;a href="http://oconnorrunckellaw.com/"&gt;criminal defense lawyers&lt;/a&gt; specializing in &lt;a href="http://oconnorrunckellaw.com/areas-of-practice/criminal-defense/drunk-driving-defense.html"&gt;DUI defense&lt;/a&gt;. They are former deputy district attorneys, so they know the courtroom from both sides, and bring that unique perspective to their practice. They are located in the 925 (Concord to be exact) and serve the east bay area, inluding Concord, Walnut Creek, Pleasanton, Oakland and surrounding localities.&lt;br /&gt;&lt;br /&gt;Heaven forbid you get into trouble with a DUI, you want these guys on your side. They also take on &lt;a href="http://oconnorrunckellaw.com/personal-injury.html"&gt;personal injury&lt;/a&gt; cases, so if you get in a &lt;a href="http://oconnorrunckellaw.com/areas-of-practice/personal-injury/automobile-accidents.html"&gt;car accident&lt;/a&gt; caused by the negligence of the other party, they know how to get you the maximum restitution due to you.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7907535767114548436/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7907535767114548436" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7907535767114548436" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7907535767114548436" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/09/pleasanton-criminal-defense-layers.html" title="Pleasanton Criminal Defense Lawyers" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7678757511002821034</id><published>2008-09-10T21:04:00.000-07:00</published><updated>2008-09-10T21:29:07.601-07:00</updated><title type="text">Dofollow Your Blog Comments</title><content type="html">Want to bring link juice back into blog commenting? Join the Dofollow movement on your own blog, and others will follow.&lt;br /&gt;&lt;br /&gt;As you probably know, the biggest purveyors of blogging software and blog hosting, &lt;a href="http://www.blogger.com/"&gt;Blogger&lt;/a&gt; and &lt;a href="http://wordpress.com/"&gt;Wordpress&lt;/a&gt;, to name two, added a little think called a nofollow tag to links in their comments in hopes that killing the link juice from commenting blogs would disuade spammers from filling up everyone's comments with crap links. Well it didn't work too well, and in the process killed the joy of appropriately commenting blogs.&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://www.semiologic.com/software/wp-tweaks/dofollow/"&gt;Wordpress dofollow plugin&lt;/a&gt;, to get you started if you use Wordpress. If  you are on Blogger, check out the &lt;a href="http://webstractions.blogspot.com/2007/05/removing-nofollow-from-blogger-styled.html"&gt;instructions for defeating nofollow in the new Blogger&lt;/a&gt;. If you are on the old blogger, sorry, you are screwed (but we always were).&lt;br /&gt;&lt;br /&gt;Then, to start making new dofollow friends, check out this &lt;a href="http://www.dofollowblogs.com/"&gt;dofollow blogs directory&lt;/a&gt;, and add your link. Sure, you will get spam comments, but you already do. Suck it up!</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7678757511002821034/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7678757511002821034" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7678757511002821034" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7678757511002821034" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/09/dofollow-your-blog-comments.html" title="Dofollow Your Blog Comments" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-8061323202670114969</id><published>2008-09-05T19:57:00.001-07:00</published><updated>2008-09-06T08:55:10.620-07:00</updated><title type="text">Modify Joomla Page Title for SEO</title><content type="html">Joomla's standard way of displaying page titles is with the Site Name first, a dash, and then the title of the content. This is not the best way to display the page title for search engine optimization (SEO). The page title is a very important element in determining the relevance and ranking of your page to a keyword search.  The search engines consider the first part of the page title the most important, so altering the page title so that the content title comes first and the Site Name second is a definite improvement. This is easily changed in /includes/joomla.php. Find the following text around line 503:&lt;br /&gt;&lt;pre style="font-size:11px;white-space:pre-wrap;word-wrap:break-word;"&gt;&lt;br /&gt; function setPageTitle( $title=null ) {&lt;br /&gt;  if (@$GLOBALS['mosConfig_pagetitles']) {&lt;br /&gt;   $title = trim( htmlspecialchars( $title ) );&lt;br /&gt;   $title = stripslashes($title);&lt;br /&gt;   $this-&gt;_head['title'] = $title ? $GLOBALS['mosConfig_sitename'] . ' - '. $title : $GLOBALS['mosConfig_sitename'];&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and change to this:&lt;br /&gt;&lt;pre style="font-size:11px;white-space:pre-wrap;word-wrap:break-word;"&gt;function setPageTitle( $title=null ) {&lt;br /&gt;if (@$GLOBALS['mosConfig_pagetitles']) {&lt;br /&gt; $title = trim( htmlspecialchars( $title ) );&lt;br /&gt; $title = stripslashes($title);&lt;br /&gt; $this-&gt;_head['title'] = $title ? $title .' - '. $GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename'];&lt;br /&gt;  }&lt;br /&gt; }&lt;/pre&gt;&lt;br /&gt;Having the same Site Name on every page of your site, however only serves to reduce the relevance of each page title to the keyword search and your targeted content. To completely remove the Site Name, instead replace the function above with this:&lt;br /&gt;&lt;pre style="font-size:11px;white-space:pre-wrap;word-wrap:break-word;"&gt;&lt;br /&gt;function setPageTitle( $title=null ) {&lt;br /&gt; if (@$GLOBALS['mosConfig_pagetitles']) {&lt;br /&gt;  $title = trim( htmlspecialchars( $title ) );&lt;br /&gt;  $title = stripslashes($title);&lt;br /&gt;  $this-&gt;_head['title'] = $title ? $title : $GLOBALS['mosConfig_sitename'];&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/8061323202670114969/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=8061323202670114969" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8061323202670114969" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8061323202670114969" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/09/modify-joomla-page-title.html" title="Modify Joomla Page Title for SEO" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-3111594873700379709</id><published>2008-08-28T22:05:00.000-07:00</published><updated>2008-08-28T22:19:04.005-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="search engine optimization" /><category scheme="http://www.blogger.com/atom/ns#" term="seo" /><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="google webmaster tools" /><category scheme="http://www.blogger.com/atom/ns#" term="webmaster" /><title type="text">8 Webmaster Tips for Good Search Engine Ranking</title><content type="html">1. Build incoming links. No kidding. Build incoming links. It's hard to do, and can be extremely time consuming and tedious, but keep at it. If you wonder why your site still has a PageRank of 2 and isn't showing up in your competitive searches, it's because you have not built enough incoming links.&lt;br /&gt;&lt;br /&gt;2. Redirect yourdomain.com to www.yourdomain.com (or visa versa). If you don't, search engines will see both URLs as separate websites and you could get duplicate content penalties. Type site:yourdomain.com in the Google search box. Then type site:www.yourdomain.com in the Google search box. If you have a different number of links, or different links indexed, Google thinks you have two different websites with the same content.&lt;br /&gt;&lt;br /&gt;3. Don't point links to your index page. Point them all to your domain. That includes your internal navigation.&lt;br /&gt;&lt;br /&gt;4. Use Google Webmaster Tools to flag any errors in site structure, tags, redirects or indexing. The most useful tools, in my opinion are the robots.txt analysis tool and the URL Removal Tool. Also of note are the sitemap submission tool and diagnostics that tell you if you have 404 errors, or if there are problems with URLs in your sitemap.&lt;br /&gt;&lt;br /&gt;5. Leave your company name out of your page title and h1 tags. Chances are that searches for your company name are insignificant in your overall search engine ranking strategy, and you are diluting your keyword relevance.&lt;br /&gt;&lt;br /&gt;6. Make sure that all of your page titles are different, and are targeted to the content of the page. Having 20 pages titled "custom widgets" doesn't make the search engines think that your website is the place to learn about custom widgets. It makes them think that users will have a hard time finding information on your site.&lt;br /&gt;&lt;br /&gt;7. Use search engine functions to monitor the pages of your website that are indexed.  Spiders don't always obey robots.txt, so you can end up with a lot of garbage in the index if you don't keep on top of it. This is especially important if you have a dynamic website.&lt;br /&gt;&lt;br /&gt;8. Add new content on a regular basis. Search engines think big websites are important websites, and keeping it fresh keeps them coming back.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/3111594873700379709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=3111594873700379709" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/3111594873700379709" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/3111594873700379709" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/08/5-webmaster-tips-for-good-search-engine.html" title="8 Webmaster Tips for Good Search Engine Ranking" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7283653826342813638</id><published>2008-08-28T21:29:00.000-07:00</published><updated>2008-08-28T21:33:41.167-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elgg" /><category scheme="http://www.blogger.com/atom/ns#" term="google analytics" /><title type="text">Adding Google Analytics to an ELGG installation</title><content type="html">This is more of a rant than a tutorial, so forgive me if you are searching a solution and this doesn't help you.&lt;br /&gt;&lt;br /&gt;As far as open source web applications go, Elgg is pretty difficult to work with. It's buggy, there are a lot of compatibility problems, and support from the development team and the community is less than stellar. The application is, however, very powerful, and has many functions that make it the best choice, in my opinion, for an open source social networking web application.&lt;br /&gt;&lt;br /&gt;After some difficulty, I got my installation at &lt;a href="http://www.fanclubhelper.com"&gt;http://www.fanclubhelper.com&lt;/a&gt; up and running. Being afraid to touch it again, for fear I'd open up a can of worms, I didn't make any modifications for over a year. In that time, however, the site started ranking well in some searches I'm interested in, and it was now time to install Google Analytics, to see how the traffic was doing.&lt;br /&gt;&lt;br /&gt;In most open source software applications I've used, in order to make changes, such as adding Google Analytics tracking code, you edit the template file. So I went to /mod/template/templates/MyTemplate/pageshell and pasted the Google Analytics code before the closing body tag. In checking the live site, however, the code was not installed.&lt;br /&gt;&lt;br /&gt;Since the closing body tag needs to be coming from somewhere, I took a shot in the dark and added the Google Analytics code to the pageshell file of the default template. That worked, but I have no idea why. It also had the side-effect of putting some text over my logo where it wasn't before. I can only guess that one of the pageshell templates I put was different on the server than my local copy, and I forgot about it during the year of inactivity. Another ELGG mystery that I'd rather not get into. It's working well enough, so no touchy!!&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;&lt;/span&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7283653826342813638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7283653826342813638" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7283653826342813638" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7283653826342813638" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/08/adding-google-analytics-to-elgg.html" title="Adding Google Analytics to an ELGG installation" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-739605898489360688</id><published>2008-08-08T11:28:00.000-07:00</published><updated>2008-08-08T15:35:01.714-07:00</updated><title type="text">Start a Blog and Promote Your Business - NOW!!! Free listing at BlogFoos.com</title><content type="html">Promoting a new blog? Add your link free to &lt;a href="http://www.blogfoos.com/"&gt;BlogFoos.com&lt;/a&gt;. &lt;a href="http://www.blogfoos.com/"&gt;BlogFoos.com&lt;/a&gt; is a blog-only directory, and no reciprocal link is required.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If you aren't already blogging&lt;/span&gt;, you should know that it is an indispensable way to enhance the promotion of your existing business website. In the early days of the Internet, just having an online brochure at yourcompany.com was enough. Those days are gone. And the time it takes a blog to become established can be significant, so waiting to start will only hurt you, and leave your farther behind the pack.&lt;br /&gt;&lt;br /&gt;Starting a blog is free and easy with services like &lt;a href="http://www.blogger.com/"&gt;Blogger.com&lt;/a&gt; and &lt;a href="http://www.livejournal.com/"&gt;LiveJournal.com&lt;/a&gt;. Even better, create a blog on your existing domain with the help of software such as &lt;a href="http://www.wordpress.com/"&gt;WordPress&lt;/a&gt;, and keep the link popularity you generate to yourself. Promotion is also free through sites like &lt;a href="http://www.blogcatalog.com/"&gt;BlogCatalog.com&lt;/a&gt;, &lt;a href="http://www.mybloglog.com/"&gt;MyBlogLog.com&lt;/a&gt; and &lt;a href="http://www.digg.com/"&gt;Digg.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you aren't tech saavy, and would like help getting things started, &lt;a href="http://www.tpdesigns.net"&gt;affordable web design companies&lt;/a&gt;, like mine at &lt;a href="http://www.tpdesigns.net/"&gt;TpDesigns.net&lt;/a&gt; can set you up and train you for a reasonable price. Personal onsite training is available for businesses located in the San Francisco Bay Area.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/739605898489360688/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=739605898489360688" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/739605898489360688" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/739605898489360688" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/08/start-blog-and-promote-now-free-listing.html" title="Start a Blog and Promote Your Business - NOW!!! Free listing at BlogFoos.com" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7337363654830605335</id><published>2008-08-06T17:40:00.000-07:00</published><updated>2008-08-06T18:02:23.636-07:00</updated><title type="text">Paypal Sandbox - So Slow it's Unusable</title><content type="html">Paypal offers developers an environment called the "sandbox" to test out their applications. "Sandbox"is a generic term for "test environment." I last used Paypal Sandbox a year or more ago in testing a Paypal integration with Oscommerce, and didn't notice anything unusual.&lt;br /&gt;&lt;br /&gt;Today, however, just now, when throwing a quick test together to detail out a quote, I was unable to use the environment. Page loading is over 10 minutes and counting. To check whether or not it was just me, or just a momentary problem, I did a search and found quite a lot of &lt;a href="http://www.pdncommunity.com/pdn/board/message?board.id=sandbox&amp;amp;thread.id=367"&gt;angry complaints&lt;/a&gt;. The complaints spanned a year's time and seemed mixed at first. The last complaint, just a couple of weeks ago was just resigned. He would not be using paypal in his applications again.&lt;br /&gt;&lt;br /&gt;A major theme of the complaints was that Paypal wasn't interested in improving the situation. They didn't really care. That was something I had heard before, not from the developer community, but from eBay sellers. They complained of problems, which Paypal customer service was very uninterested in resolving.&lt;br /&gt;&lt;br /&gt;If Paypal were just another online store it would be one thing. The problem is that Paypal is basically a bank that has a LOT of peoples financial information online. Are they competent? Do they just not care about the little guy?  It seems to me that Paypal should be all about the little guy, because I don't see many Paypal buttons on Fortune 500 websites.&lt;br /&gt;&lt;br /&gt;The bottom line is, if a developer can't use Paypal's Sandbox, why not try Google Checkout?</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7337363654830605335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7337363654830605335" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7337363654830605335" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7337363654830605335" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/08/paypal-sandbox-so-slow-its-unusable.html" title="Paypal Sandbox - So Slow it's Unusable" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-6860852491992450011</id><published>2008-07-23T20:40:00.000-07:00</published><updated>2008-07-23T20:52:47.006-07:00</updated><title type="text">OsCommerce Category Image Problem: 'IMAGE DOES NOT EXIST'</title><content type="html">Here is the solution to a minor, but annoying problem I was having with some installations of OsCommerce. When saving an edit for a category, which already had an image file in the database, the image association would be lost and the error 'IMAGE DOES NOT EXIST' would be displayed.  The workaround was to use the browse field to populate the image field each time you edited a record.&lt;br /&gt;&lt;br /&gt;I had searched for the solution a number of times, but came up dry. Recently, however, when researching a contribution that added a text description for a category, I found the solution in the readme file (not available to search engines):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CHANGES TO admin/categories.php&lt;br /&gt;&lt;br /&gt;CAREFUL: These are not trivial changes.  There is a lot of code here.&lt;br /&gt;&lt;br /&gt;1) Locate the following line (approximately  line 80) (image update bug repair provided in the bugs section on  oscommerce.com):&lt;br /&gt;if ($categories_image = new upload('categories_image',  DIR_FS_CATALOG_IMAGES)) {&lt;br /&gt;tep_db_query("update " . TABLE_CATEGORIES . " set  categories_image = '" . tep_db_input($categories_image-&gt;filename) . "' where  categories_id = '" . (int)$categories_id . "'");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;REPLACE those 3  lines with the following 5 lines:&lt;br /&gt;$categories_image = new  upload('categories_image');&lt;br /&gt;$categories_image-&gt;set_destination(DIR_FS_CATALOG_IMAGES);&lt;br /&gt;if  ($categories_image-&gt;parse() &amp;amp;&amp;amp; $categories_image-&gt;save())  {&lt;br /&gt;tep_db_query("update " . TABLE_CATEGORIES . " set categories_image = '" .  tep_db_input($categories_image-&gt;filename) . "' where categories_id = '" .  (int)$categories_id . "'");&lt;br /&gt;}&lt;/blockquote&gt;&lt;!--QuoteEnd--&gt;The comment says "image update bug repair provided in the bugs section on  oscommerce.com," which I was never able to find.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/6860852491992450011/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=6860852491992450011" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/6860852491992450011" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/6860852491992450011" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/07/oscommerce-category-image-problem-image.html" title="OsCommerce Category Image Problem: 'IMAGE DOES NOT EXIST'" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-82764465597658704</id><published>2008-07-19T14:10:00.000-07:00</published><updated>2008-07-19T14:16:53.238-07:00</updated><title type="text">Electronic Recycling Sunday</title><content type="html">&lt;span style="font-weight: bold;"&gt;Electronic Recycling Sunday, July 20th at Amador Valley High School in Pleasanton&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Humunya Foundation: 1155 Santa Rita Road, Pleasanton, California&lt;br /&gt;10 AM to 4 PM&lt;br /&gt;&lt;br /&gt;Fundraiser Event&lt;br /&gt;C &amp;amp; T Recycling&lt;br /&gt;(510) 590-7510&lt;br /&gt;(925) 547-1776</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/82764465597658704/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=82764465597658704" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/82764465597658704" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/82764465597658704" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/07/electronic-recycling-sunday.html" title="Electronic Recycling Sunday" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-391703080444857555</id><published>2008-06-12T16:43:00.000-07:00</published><updated>2008-06-12T17:11:10.712-07:00</updated><title type="text">Finding a Good  SEO (Search Engine Optimization) Company</title><content type="html">Let me start out by saying 90% of the SEO companies are out to scam you, so be careful.  Here are some tip-offs that the company who is pitching you should be avoided:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-style: italic;"&gt;They talk a lot about "meta-tags."&lt;/span&gt; Sure, the description meta-tag is still important, as it's used as a short description on the results page. Modern search engines are looking for good, relevant page content and link authority, NOT hidden content.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-style: italic;"&gt;Reciprocal link exchanging is a central aspect of their strategy&lt;/span&gt;. Search engines, especially Google, consider excessive link exchanging to be a violation of their guidelines and will penalize you for it.&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-style: italic;"&gt;Submit to 300 search engines!&lt;/span&gt; There are only 3 or 4 that really matter, and it doesn't take much time to submit to them. Submitting to the other 296 certainly won't hurt, but it isn't the key to making your website a success.&lt;br /&gt;&lt;br /&gt;Things you should do:&lt;br /&gt;&lt;br /&gt;1. Ask for references. Actually contact them and find out how successful their client relationships have been. Make sure improvement has been long-term. The danger of looking only at short-term success is that an unethical (black hat) SEO can get you huge short-term improvement, but get you banned in the long-term, long after they have your money in their bank!&lt;br /&gt;&lt;br /&gt;2. Ask for guarantees. You are generally going to be paying a lot of money for and SEO service, so they should give you some kind of guaranteed position, or improvement in position.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/391703080444857555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=391703080444857555" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/391703080444857555" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/391703080444857555" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/06/finding-good-seo-search-engine.html" title="Finding a Good  SEO (Search Engine Optimization) Company" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-2754098812661926551</id><published>2008-06-10T08:36:00.000-07:00</published><updated>2008-11-13T04:34:12.346-08:00</updated><title type="text">The Terrace House - Pleasanton Valley Series, Morrison Home Brochure</title><content type="html">The next in the series of scans I am posting from the Morrison Homes brochure I inherited is The Terrace House.&lt;br /&gt;&lt;br /&gt;This model was available with 3 bedrooms, which sold for $25,600, carpeting included! The 4 bedroom version sold for $26,900. That's only $1300 for another bedroom!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SE6gc-hRc0I/AAAAAAAACR4/eYg2AdbLMxg/s1600-h/terracefront_sm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SE6gc-hRc0I/AAAAAAAACR4/eYg2AdbLMxg/s400/terracefront_sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5210278238593577794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SE6gkR4yNWI/AAAAAAAACSA/betqG7hUGmk/s1600-h/terracebacksm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SE6gkR4yNWI/AAAAAAAACSA/betqG7hUGmk/s400/terracebacksm.jpg" alt="" id="BLOGGER_PHOTO_ID_5210278364051551586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.troyphilis.com/media/pleasantonvalley/the_terrace_house.zip"&gt;Download  print resolution scans (zip file - 5.9MB)&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/2754098812661926551/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=2754098812661926551" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/2754098812661926551" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/2754098812661926551" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/06/terrace-house-pleasanton-valley-series.html" title="The Terrace House - Pleasanton Valley Series, Morrison Home Brochure" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SE6gc-hRc0I/AAAAAAAACR4/eYg2AdbLMxg/s72-c/terracefront_sm.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-8367858614198046697</id><published>2008-06-09T14:19:00.000-07:00</published><updated>2008-06-09T15:41:44.586-07:00</updated><title type="text">The Art of Lawrence Ruiz - Now Available Online</title><content type="html">A good friend of mine from back in my art class days has put his work up in a new &lt;a href="http://www.lawrenceruiz.com/onlinestore.html"&gt;Online Store&lt;/a&gt;. Please visit &lt;a href="http://www.lawrenceruiz.com/onlinestore.html"&gt;http://www.lawrenceruiz.com/onlinestore.html&lt;/a&gt;. Not expensive for signed, limited editions, so please visit, and if you like it, support a local artist by making a purchase!</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/8367858614198046697/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=8367858614198046697" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8367858614198046697" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8367858614198046697" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/06/christian-art-of-lawrence-ruiz-now.html" title="The Art of Lawrence Ruiz - Now Available Online" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7569523872076928573</id><published>2008-06-04T21:10:00.001-07:00</published><updated>2008-11-13T04:34:12.627-08:00</updated><title type="text">The Country House - Pleasanton Valley Series, Morrison Home Brochure</title><content type="html">Here is the next in the series of scans I am posting from the Morrison Home Brochure featuring the  Pleasanton Valley and Walnut Grove series of homes that were built and sold here in Pleasanton in 1966. We purchased a home of this model, The Country Home, a few months ago, and were given this brochure by the daughter of the previous owner, who bought the house new in 1966. This page is well worn, and in the worst condition of all in the brochure.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SEdoiD3G54I/AAAAAAAACQ4/5Cd5KZAnXJg/s1600-h/countryfrontsm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SEdoiD3G54I/AAAAAAAACQ4/5Cd5KZAnXJg/s400/countryfrontsm.jpg" alt="" id="BLOGGER_PHOTO_ID_5208246428438554498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SEdosaY5jbI/AAAAAAAACRA/dVmcYQPNxzM/s1600-h/countrybacksm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SEdosaY5jbI/AAAAAAAACRA/dVmcYQPNxzM/s400/countrybacksm.jpg" alt="" id="BLOGGER_PHOTO_ID_5208246606284557746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.troyphilis.com/media/pleasantonvalley/the_country_house.zip"&gt;Download  print resolution scans (zip file - 5.3MB)&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7569523872076928573/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7569523872076928573" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7569523872076928573" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7569523872076928573" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/06/country-house-pleasanton-valley-series.html" title="The Country House - Pleasanton Valley Series, Morrison Home Brochure" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SEdoiD3G54I/AAAAAAAACQ4/5Cd5KZAnXJg/s72-c/countryfrontsm.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-5336574741137541778</id><published>2008-05-04T19:48:00.000-07:00</published><updated>2008-11-13T04:34:12.781-08:00</updated><title type="text">Clean Up Your Computer and Keep it Clean</title><content type="html">I know a lot of people - friends, family and clients, who wage an ongoing battle with spyware, malware, and viruses. As they surf the internet, their computer gets more and more loaded up with these programs, until they either have to pay the "Geek Squad" or other service to clean it up, or they just buy another computer.&lt;br /&gt;&lt;br /&gt;Here are some best practices to keep your computer from developing such problems in the first place, or to help you clean it up once you are infected:&lt;br /&gt;&lt;br /&gt;1) Avoid surfing the net on an account with administrator priviledges. If you have the priviledge to install a program onto your computer, so does the malevolant website that you are visiting. If you don't have those priviledges, the bad program CAN'T be installed. This alone has kept my computers clean for years.&lt;br /&gt;&lt;br /&gt;2) Install &lt;a href="http://free.grisoft.com/"&gt;AVG Free Anti Virus Software&lt;/a&gt;. I hate Norton, because it always messes up my computer when I try to upgrade it or uninstall it. Plus AVG is FREE!&lt;br /&gt;&lt;br /&gt;3) Run the most updated version of &lt;a href="http://www.lavasoftusa.com/single/trialpay.php"&gt;Adaware&lt;/a&gt;, with updated definitions on a regular basis. It is a free program and is made to search and destroy stuff on your computer that has been installed without your express permission. Looks like the Plus version is FREE for a limited time.&lt;br /&gt;&lt;br /&gt;4) If you suspect you are infected, run &lt;a href="http://www.majorgeeks.com/download3155.html."&gt;HijackThis&lt;/a&gt;.  Running it won't hurt your computer, but you can really mess things up if you start deleting the files listed in the log without knowing what you are doing. You can, however, use a &lt;a href="http://hjt.networktechs.com/"&gt;log autoanalyzer&lt;/a&gt; that will interpret the results for you. Here is  a screenshot of some typical results.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SB56wGRslPI/AAAAAAAACDQ/OXK5XLlqqpM/s1600-h/malware1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SB56wGRslPI/AAAAAAAACDQ/OXK5XLlqqpM/s400/malware1.jpg" alt="" id="BLOGGER_PHOTO_ID_5196725986769278194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you aren't familiar with an item listed in your HijackThis log, Google it, and if it is spyware or malware, you will often find detailed instructions and software that will aid you in removing it.&lt;br /&gt;&lt;br /&gt;Surf Safe!</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/5336574741137541778/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=5336574741137541778" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5336574741137541778" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5336574741137541778" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/05/clean-up-your-computer-and-keep-it.html" title="Clean Up Your Computer and Keep it Clean" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Psi_XgYFL6Q/SB56wGRslPI/AAAAAAAACDQ/OXK5XLlqqpM/s72-c/malware1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-5818835327560675268</id><published>2008-04-26T18:53:00.000-07:00</published><updated>2008-04-26T19:23:24.161-07:00</updated><title type="text">More Sprint Billing Errors</title><content type="html">Back in February I posted about a &lt;a href="http://bottlecapnapkin.blogspot.com/2008/02/sprint-billing-errors.html"&gt;Sprint bill I received in error for service on a phone number that has been disconnected&lt;/a&gt; for over 5 years. If I could get back all the time I spend dealing with incompetent billing departments, I'd have a vacation coming.&lt;br /&gt;&lt;br /&gt;After multiple phone calls, I finally got the charge removed and everything was straightened out. Or was it? I just received ANOTHER bill for the same thing. This time I think I'll write a letter and see if that works any better.&lt;br /&gt;&lt;br /&gt;I always like to look at the positive side of situations like this. If I were ever to consider signing up for ANY service Sprint has to offer, this experience has taught me that would be a mistake.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/5818835327560675268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=5818835327560675268" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5818835327560675268" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/5818835327560675268" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/more-sprint-billing-errors.html" title="More Sprint Billing Errors" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-3197976442075296804</id><published>2008-04-24T17:02:00.000-07:00</published><updated>2008-11-13T04:34:13.052-08:00</updated><title type="text">Pleasanton Valley Series, Morrison Home Brochure - The Arbor House</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SBEf6GRslNI/AAAAAAAACDA/aoGSymgEVwM/s1600-h/arborfront_sm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SBEf6GRslNI/AAAAAAAACDA/aoGSymgEVwM/s400/arborfront_sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5192966928312603858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SBEgBGRslOI/AAAAAAAACDI/3tKewVNQnac/s1600-h/arborback_sm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SBEgBGRslOI/AAAAAAAACDI/3tKewVNQnac/s400/arborback_sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5192967048571688162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.troyphilis.com/media/pleasantonvalley/arbor_house.zip"&gt;Download print resolution scans (zip file - 5.4MB)&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/3197976442075296804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=3197976442075296804" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/3197976442075296804" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/3197976442075296804" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/pleasanton-valley-series-morrison-home_24.html" title="Pleasanton Valley Series, Morrison Home Brochure - The Arbor House" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Psi_XgYFL6Q/SBEf6GRslNI/AAAAAAAACDA/aoGSymgEVwM/s72-c/arborfront_sm.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-4055169533128918341</id><published>2008-04-21T20:58:00.001-07:00</published><updated>2008-04-23T18:20:32.076-07:00</updated><title type="text">CSS Horizontal Navigation Menu</title><content type="html">I've had a request to expand my css navigation tutorial to include a horizontal navigation. This is an extention of my previous &lt;a href="http://bottlecapnapkin.blogspot.com/2008/04/css-navigation-menu-cascading.html"&gt;css navigation menu tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To create a horizontal navigation menu in the header, you'll need to create two horizontally stacked divs within the header. The way I normally code it is to create a div in the header named header top, and under that I'll put the nav div. Make sure to size them both to the header width so they can't appear side by side. You'll also need to add a clearing div after the header so that following divs will begin in the correct place:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div id="header"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;div id="header-top"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;div id="nav"&amp;gt;&lt;br /&gt;    &amp;lt;ul&amp;gt;&lt;br /&gt;          &amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;          &amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Nothing&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;clr&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As a convention I started the naming of the navigation styles starting with the nav div. This change will need to "cascade" to all of the other styles within the unordered list. As you can see below, the key to making the nav list horizontal is adding float:left to the li tag. The header-top now displays the header image as a background, and the header div is now just a container to hold the header-top and nav divs. I added a background color to it for aesthetics.&lt;br /&gt;&lt;p&gt;#header{&lt;br /&gt;width: 780px;&lt;br /&gt;height: 84px;&lt;br /&gt;background: #333333;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#header-top{&lt;br /&gt;width: 780px;&lt;br /&gt;background-image: url('images/header.jpg');&lt;br /&gt;background-repeat: no-repeat;&lt;br /&gt;height: 50px;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;#nav{&lt;br /&gt;width:780px;&lt;br /&gt;height: 32px;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p&gt;div#clr{&lt;br /&gt;  clear: both;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p&gt;div#nav ul li{&lt;br /&gt;float:left;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;div#nav ul{&lt;br /&gt;list-style: none;&lt;br /&gt;padding: 0px;&lt;br /&gt;margin: 0px;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;  div#nav ul li a{&lt;br /&gt;display: block;&lt;br /&gt;padding:5px;&lt;br /&gt;margin: 1px;&lt;br /&gt;border: 1px solid white;&lt;br /&gt;width: 100px;&lt;br /&gt;height: 20px;&lt;br /&gt;background: #333333;&lt;br /&gt;color: white;&lt;br /&gt;text-decoration: none;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;div#nav ul li a:hover{&lt;br /&gt;background: #666666;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.tpdesigns.net/tutorials/css_test3.htm"&gt;Here is how it looks.&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/4055169533128918341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=4055169533128918341" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4055169533128918341" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4055169533128918341" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/horizontal-navigation-menu-cascading.html" title="CSS Horizontal Navigation Menu" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-8975944563833652438</id><published>2008-04-21T13:22:00.000-07:00</published><updated>2008-04-21T14:05:07.536-07:00</updated><title type="text">CSS Navigation Menu - Cascading Stylesheets Tutorial</title><content type="html">In the first tutorial of the series, &lt;a href="http://bottlecapnapkin.blogspot.com/2008/04/css-positioning-cascading-style-sheets.html"&gt;CSS Positioning&lt;/a&gt;, we build a basic, table-less structure for a two-column webpage. In this post, we'll add what every webpage needs: navigation.&lt;br /&gt;&lt;p&gt;Some designers prefer to add an additional &amp;lt;div&amp;gt; and identify it as "nav" or "navigation" using a class or id. Since almost all navigation bars I've seen styled with CSS use an unordered list, &amp;lt;ul&amp;gt;, I like to style that directly, rather than adding the additional &amp;lt;div&amp;gt;.&lt;/p&gt;&lt;p&gt; From the first tutorial, we have the following page structure:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 strict//EN"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;CSS Test&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;link href="test.css" rel="stylesheet" type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="wrapper"&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;div id="header"&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;div id="column1"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;&lt;p&gt; &amp;lt;div id="column2"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;div id="footer"&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now we will add our unordered list to column one, between the &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;tags:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&amp;lt;ul id="nav"&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Nothing&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now to style our list into a standard navigation menu. First we'll take the unslightly list attributes from the &amp;lt;ul&amp;gt; tag itself:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;ul#nav{&lt;br /&gt;list-style: none;&lt;br /&gt;padding: 0px;&lt;br /&gt;margin: 0px;&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Setting the list-style to none removes the bullet, and setting padding and margins to 0px removes the indent. &lt;/p&gt;&lt;p&gt;I'm going to ignore the &amp;lt;li&amp;gt; tag and style the link &amp;lt;a&amp;gt; tag directly. I do this to take advantage of a:hover to change the links background on rollover:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;ul#nav li a{&lt;br /&gt;display: block;&lt;br /&gt;padding:5px;&lt;br /&gt;margin: 1px;&lt;br /&gt;border: 1px solid white;&lt;br /&gt;width: 100px;&lt;br /&gt;height: 20px;&lt;br /&gt;background: #333333;&lt;br /&gt;color: white;&lt;br /&gt;text-decoration: none;&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;First we style the link as a block, so the browser will treat the element like we want it to, as a rectangular button. We style the appearance of the element as we would any box. Finally we remove the link's underline by setting text-decoration:none.&lt;/p&gt;&lt;p&gt;All that's left is to set the rollover using a:hover. The only thing we want to change is the background color, so all we have to do is this:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;ul#nav li a:hover{&lt;br /&gt;background: #666666;&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now fill your content column with text, and you have a table-less, two column webpage, displayed using css. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.tpdesigns.net/tutorials/css_test2.htm"&gt;Here is the design in action&lt;/a&gt;.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/8975944563833652438/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=8975944563833652438" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8975944563833652438" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/8975944563833652438" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/css-navigation-menu-cascading.html" title="CSS Navigation Menu - Cascading Stylesheets Tutorial" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-4803904089734509307</id><published>2008-04-17T20:51:00.000-07:00</published><updated>2008-04-19T13:04:08.879-07:00</updated><title type="text">CSS Positioning:  Cascading Style Sheets Tutorial</title><content type="html">I was asked by an aspiring web designer to tutor him in basic Web design techniques. He is working on a Webpage in tables, but is aware that he should probably start working with CSS instead. He had tried Dreamweaver's "layers," but was having a hard time.&lt;br /&gt;&lt;br /&gt;In preparation for the 1 hour session I put together a page with a really basic two column layout using CSS positioning. Since I went to all this trouble, I thought I would go ahead and share it with the World Wide Web as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Doctype&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first code on the page, and the first thing to be aware of is the Doctype declaration. I use this:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 strict//EN"&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;Using the "transitional" declarations, rather than "strict" puts the page into "Quirks Mode." This was necessary to get older browsers to display CSS correctly back in the day, but using today will cause you headaches from all the quirks that will be coming your way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Basic Structure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code for implementing a CSS page layout should be divided into two parts: HTML for structure, and CSS for formatting. I break the CSS out into a seperate page and link it to my HTML page thusly:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;link href="test.css" rel="stylesheet" type="text/css"&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;This goes somewhere between the &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt; tags.&lt;br /&gt;&lt;br /&gt;In the body of the HTML document, you can declare the structure very simply using nested &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt; tags. I use the "ID" attribute to identify them, but "Class" works too. Here's the code for my basic two-column page:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;div id="wrapper"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="header"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="column1"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="column2"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="footer"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;That's it! That's the basic HTML structure of the page; a wrapper enclosing the other page elements. The size, color, borders, and structural images are all declared in the CSS. The page content, such as navigation and text, will go inside the appropriate &amp;lt;div&amp;gt; tags.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CSS&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Next, we're going to format each &amp;lt;div&amp;gt; on our page.  I also like to  remove the margins from the body like so:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;body{&lt;br /&gt;margin:0px;&lt;br /&gt;padding: 0px;&lt;br /&gt;}&lt;/blockquote&gt;Next we'll set the width, postion and background of the "wrapper." This will set the basic page size and color, as well as center the page in the browser. Centering is  achieved by setting the left and right margins to "auto."&lt;br /&gt;&lt;blockquote&gt;#wrapper{&lt;br /&gt;width: 780px;&lt;br /&gt;margin-right: auto;&lt;br /&gt;margin-left: auto;&lt;br /&gt;background: #cccccc;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;The header is nested inside the wrapper div. The header image is set as the background.&lt;br /&gt;&lt;blockquote&gt;#header{&lt;br /&gt;width: 780px;&lt;br /&gt;height: 50px;&lt;br /&gt;background-image: url('images/header.jpg') ;&lt;br /&gt;background-repeat: no-repeat;&lt;br /&gt;}&lt;/blockquote&gt;The left column is going to contain the navigation, which I'll add in the next CSS tutorial. Notice that I have set the background color to the same color as that of the wrapper div. This is because we want this column to appear to extend to the bottom of the page. In reality, it will shrink to contain the content. Floating the div left will allow the column to sit side by side the column 2, which will float right.&lt;br /&gt;&lt;blockquote&gt;#column1{&lt;br /&gt;width: 130px;&lt;br /&gt;padding: 10px;&lt;br /&gt;background: #ccc;&lt;br /&gt;float: left;&lt;br /&gt;}&lt;/blockquote&gt;&lt;blockquote&gt;#column2{&lt;br /&gt;width: 610px;&lt;br /&gt;padding: 10px;&lt;br /&gt;float: right;&lt;br /&gt;background: white;&lt;br /&gt;}&lt;/blockquote&gt;Lastly, I position the footer. Note the "clear" declaration, which tells the browser not to position the previous divs beside this one. Also note that the left and right padding are added to the overall width of the div, so you need to subtract those amounts from the total width to match the width of the wrapper and header, which have no padding.&lt;br /&gt;&lt;blockquote&gt;#footer{&lt;br /&gt;width: 770px;&lt;br /&gt;background: #333333;&lt;br /&gt;color: white;&lt;br /&gt;clear:both;&lt;br /&gt;padding: 5px;&lt;br /&gt;}&lt;/blockquote&gt;Next time, we'll fill our page with some navigation and content.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/4803904089734509307/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=4803904089734509307" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4803904089734509307" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/4803904089734509307" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/css-positioning-cascading-style-sheets.html" title="CSS Positioning:  Cascading Style Sheets Tutorial" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7312647455776643643</id><published>2008-04-11T08:00:00.001-07:00</published><updated>2008-04-11T08:14:40.170-07:00</updated><title type="text">1&amp;1 Internet Complaints</title><content type="html">After almost a month and over a dozen emails to support and billing, my recent &lt;a href="http://bottlecapnapkin.blogspot.com/2008/02/1-internet-disk-quota-exceeded-122.html"&gt;hosting problem&lt;/a&gt; was finally resolved. No fanfare, or even an email letting me know that it had been taken care of. I just went to one of my problem sites, and no more errors.&lt;br /&gt;&lt;br /&gt;Two days before that, I received this email from complaints@1and1.com:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Thank you for contacting us.&lt;br /&gt;&lt;br /&gt;As a gesture of goodwill, I have refunded the account regarding this&lt;br /&gt;matter. &lt;br /&gt;&lt;br /&gt;If you have any further questions please do not hesitate to contact us.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;That's great, however the statement "I have refunded the account" is not true, because I haven't received a refund. We'll see if they follow through, or even return my email inquiry.&lt;br /&gt;&lt;br /&gt;The point of this post, though, is to share the email address complaints@1and1.com. I wasn't aware of it until now. If I had been, I'm sure I'd already be blacklisted.</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7312647455776643643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7312647455776643643" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7312647455776643643" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7312647455776643643" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/1-internet-complaints.html" title="1&amp;1 Internet Complaints" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18633935.post-7853461998880996717</id><published>2008-04-09T20:16:00.000-07:00</published><updated>2008-11-13T04:34:13.862-08:00</updated><title type="text">Pleasanton Valley Series, Morrison Home Brochure - The Monterey</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Psi_XgYFL6Q/R_2H6MBvDEI/AAAAAAAACBo/Z85uf4XLqmA/s1600-h/montereyfrontsm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Psi_XgYFL6Q/R_2H6MBvDEI/AAAAAAAACBo/Z85uf4XLqmA/s400/montereyfrontsm.jpg" alt="" id="BLOGGER_PHOTO_ID_5187451779531344962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Psi_XgYFL6Q/R_2IN8BvDFI/AAAAAAAACBw/Rq_1u_ge52c/s1600-h/montereybacksm.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Psi_XgYFL6Q/R_2IN8BvDFI/AAAAAAAACBw/Rq_1u_ge52c/s400/montereybacksm.jpg" alt="" id="BLOGGER_PHOTO_ID_5187452118833761362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="Style1" style="margin-top: 1.8pt; line-height: 118%;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24);font-family:Garamond;font-size:16;"  &gt;THE MONTEREY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 1.8pt;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24); letter-spacing: 0.5pt;"&gt;Throughout the &lt;/span&gt;&lt;span style="letter-spacing: 0.5pt;"&gt;years, the two-story has been, and still is, the favorite of &lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt;many because of its inherent comfort through separation of the living and &lt;/span&gt;sleeping areas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 0.05in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="letter-spacing: 0.5pt;"&gt;From the entry hall any area of the home can be reached. To the right is &lt;/span&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24); letter-spacing: 0.35pt;"&gt;the &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;"&gt;spacious living room, and the large dining room adapts easily to formal &lt;/span&gt;entertaining and family celebrations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 0.05in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="letter-spacing: 0.65pt;"&gt;For informal activities, there is the large family room with a beautiful &lt;/span&gt;&lt;span style="letter-spacing: 0.4pt;"&gt;corner fireplace. And there's informal eating space in the kitchen nook. &lt;/span&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24); letter-spacing: 0.4pt;"&gt;Of &lt;/span&gt;&lt;span style="letter-spacing: 0.6pt;"&gt;special interest in the Activity Area is the large walk-in pantry and the &lt;/span&gt;&lt;span style="letter-spacing: 0.55pt;"&gt;ample cabinet space to take care of all kitchen storage problems. Notice &lt;/span&gt;&lt;span style="letter-spacing: 0.5pt;"&gt;how your washer, dryer, and freezer will fit into the handy utility room, &lt;/span&gt;and the accessibility of the powder room, useful for guests as well as family.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 0.1in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="letter-spacing: 0.35pt;"&gt;On the upper level, your family will enjoy the privacy and quiet assured by &lt;/span&gt;&lt;span style="letter-spacing: 0.4pt;"&gt;a two-story structure. The owners have their own bath, dressing room, and &lt;/span&gt;twin clothes closets.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 0.05in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24); letter-spacing: 0.55pt;"&gt;The &lt;/span&gt;&lt;span style="letter-spacing: 0.55pt;"&gt;Monterey House offers the growing family a home of comfort, con­&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;venience, and privacy&lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt;&lt;span style=""&gt;__ &lt;/span&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;a home that will provide satisfaction and pride for &lt;/span&gt;years to come.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 0.05in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;span style="color: rgb(109, 72, 24); letter-spacing: 0.35pt;"&gt;For &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;"&gt;those who prefer spacious lots, it is also available in the Walnut Grove &lt;/span&gt;area of Pleasanton Valley with lots up to &lt;/span&gt;&lt;span class="CharacterStyle1"  style="font-size:100%;"&gt;&lt;span style=""&gt;11,000 &lt;/span&gt;Sq. Ft.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style1" style="margin-top: 12.6pt; line-height: 122%;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style=""&gt;&lt;span style="font-size:100%;"&gt;ADDED VALUES:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="Style1" style="margin-top: 0.05in; text-indent: 0.1in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="letter-spacing: 0.55pt;"&gt;Shake Roofs Rear and Side Yard Fencing &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(170, 136, 84); letter-spacing: 0.55pt;font-family:Arial;font-size:7;"  &gt;~ &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="letter-spacing: 0.55pt;font-family:Arial;font-size:100%;"  &gt;2&lt;sup&gt;½&lt;/sup&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.55pt;"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;Baths &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152); letter-spacing: 0.55pt;font-size:85%;" &gt;�?? &lt;/span&gt;&lt;span style="letter-spacing: 0.55pt;"&gt;Corner Fireplace &lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt;in Family Room &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(170, 136, 84); letter-spacing: 0.45pt;font-size:85%;" &gt;�?? &lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt;Walk-in&lt;span style=""&gt;  &lt;/span&gt;Pantry &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152); letter-spacing: 0.45pt;"&gt;�??&lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt; Vanities with Full Width Mirrors and Illuminated Ceilings in Family and Owners' Bath &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152); letter-spacing: 0.45pt;"&gt;-&lt;/span&gt;&lt;span style="letter-spacing: 0.45pt;"&gt; Built-in Range, Range-&lt;/span&gt;&lt;span style="letter-spacing: 0.7pt;"&gt;hood, and Pull Double Oven &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152); letter-spacing: 0.7pt;"&gt;-&lt;/span&gt;&lt;span style="letter-spacing: 0.7pt;"&gt; Garbage Disposal Dishwasher &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(196, 184, 156); letter-spacing: 0.7pt;"&gt;-&lt;/span&gt;&lt;span style="letter-spacing: 0.7pt;"&gt; Triple &lt;/span&gt;Sink Birch Cabinets &lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style=""&gt;~ &lt;/span&gt;Utility Room &lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152);"&gt;�??&lt;/span&gt; Excellent Closet and Storage Space&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="letter-spacing: 0.35pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="Style2" style="margin: 1.8pt 0in 12.6pt 0.1in;"&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="letter-spacing: 0.35pt;"&gt;Ceiling and Sidewall Insulation &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(196, 184, 156); letter-spacing: 0.35pt;"&gt;-&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;"&gt; Sound Conditioning Insulation in Bath &lt;/span&gt;&lt;span style="letter-spacing: 0.65pt;"&gt;Walls &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(170, 136, 84); letter-spacing: 0.65pt;"&gt;�??&lt;/span&gt;&lt;span style="letter-spacing: 0.65pt;"&gt; Controlled Dining Room Lighting &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(194, 169, 152); letter-spacing: 0.65pt;"&gt;�??&lt;/span&gt;&lt;span style="letter-spacing: 0.65pt;"&gt; Desk in Kitchen &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(170, 136, 84); letter-spacing: 0.65pt;"&gt;-&lt;/span&gt;&lt;span style="letter-spacing: 0.65pt;"&gt; Cabinet &lt;/span&gt;Hardware Selections in the Kitchen and the Baths &lt;/i&gt;&lt;/span&gt;&lt;span class="CharacterStyle1"&gt;&lt;i&gt;&lt;span style="color: rgb(196, 184, 156);"&gt;-&lt;/span&gt; Underground Utilities&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(136, 94, 25);font-size:9;" &gt; &lt;span style="font-size:100%;"&gt;Installed TV Cable&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="Style2" style="margin: 1.8pt 0in 12.6pt 0.1in;"&gt;&lt;a href="http://www.troyphilis.com/media/pleasantonvalley/p_valley_monterey.zip"&gt;Download scans (print resolution) 5.6M zip&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(136, 94, 25);font-size:9;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.pleasantonwebdesignblog.com/feeds/7853461998880996717/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=18633935&amp;postID=7853461998880996717" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7853461998880996717" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18633935/posts/default/7853461998880996717" /><link rel="alternate" type="text/html" href="http://www.pleasantonwebdesignblog.com/2008/04/pleasanton-valley-series-morrison-home.html" title="Pleasanton Valley Series, Morrison Home Brochure - The Monterey" /><author><name>Bottlecap Napkin</name><uri>http://www.blogger.com/profile/12353363639122455426</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Psi_XgYFL6Q/R_2H6MBvDEI/AAAAAAAACBo/Z85uf4XLqmA/s72-c/montereyfrontsm.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
