<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ArghWebWorks</title>
	<atom:link href="http://www.arghwebworks.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arghwebworks.com</link>
	<description>True happiness comes from the joy of deeds well done, the zest of creating things new --- Antoine de Saint-Exupery</description>
	<lastBuildDate>Wed, 11 Apr 2012 19:21:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Your Power Draw</title>
		<link>http://www.arghwebworks.com/2012/04/11/your-power-draw/</link>
		<comments>http://www.arghwebworks.com/2012/04/11/your-power-draw/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 19:21:14 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[system admin]]></category>
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=179</guid>
		<description><![CDATA[Generally, I promote virtual hosting. However, for one reason or another, you may want to buy a server and do a colocation option. Or rent a dedicated server. I spent last night helping a friend move some servers into a new unit. These servers are about eight years old, built in the mid 2000s. They [...]]]></description>
			<content:encoded><![CDATA[<p>Generally, I promote <a title="affiliate link to linode, my hosting provider." href="http://www.linode.com/?r=31daf4c1fb9635804539cff52e90ad5e944dcfb4" target="_blank">virtual hosting</a>. However, for one reason or another, you may want to buy a server and do a colocation option. Or rent a dedicated server. </p>
<p>I spent last night helping a friend move some servers into a new unit. These servers are about eight years old, built in the mid 2000s. They were once state of the art, boasting beefy dual Opterons and a gig of RAM. We hooked them up at <a href="http://forked.net/">forked</a>, and immediately the owner turned to my friend and said &#8220;didn&#8217;t you say your power draw was less than an amp?&#8221; Each server draws over 3 amps.</p>
<p>My friend might have known this if he had a <a href="http://www.amazon.com/gp/product/B00009MDBU/ref=as_li_ss_tl?ie=UTF8&#038;tag=arghwebworks-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B00009MDBU" target="_blank" title="affiliate link again, this time for this meter at Amazon">kill-a-watt</a> meter, and had suffered the downtime required to plug it in, but as it was, he had no clue what an amp looked like, no way to guess at it. Servers have become a lot more energy friendly over the last few years, though, and the owner over at forked.net recommended a server that draws less than 0.6A. More RAM, more drive, more power.</p>
<p>My friend&#8217;s looking at a $200 hosting bill (per server) being driven up to $330 (again, per server) <em>solely based on his power consumption</em>. With two servers, that $260 would pay for the purchase of a new enterprise-level Xeon server in just a few months. You might give that a thought, and check with your colocation place to see what your power draw is. Jon, at Forked.net, had a cool graphic tool on his laptop that showed the load of his power supplies, and it was a quick check.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/04/11/your-power-draw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Fear Gamification</title>
		<link>http://www.arghwebworks.com/2012/03/26/dont-fear-gamification/</link>
		<comments>http://www.arghwebworks.com/2012/03/26/dont-fear-gamification/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 16:53:28 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[social sites]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=175</guid>
		<description><![CDATA[At DevelopmentNow, we&#8217;ve had people ask for &#8220;gamification&#8221; to help build site engagement. My favorite example of this is Fitocracy, where people earn points for exercise and complete quests and challenges. We built the beginnings of a game for Portland Fit. The problem with &#8220;building a game&#8221; and &#8220;gamification&#8221; (aside from the terrible word) is [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.developmentnow.com" target="_blank" title="Social and Mobile Website Development">DevelopmentNow</a>, we&#8217;ve had people ask for &#8220;gamification&#8221; to help build site engagement. My favorite example of this is <a href="http://www.fitocracy.com/" target="_blank">Fitocracy</a>, where people earn points for exercise and complete quests and challenges. We built the beginnings of a game for <a href="http://www.portlandfit.com/game/" target='_blank'>Portland Fit</a>. </p>
<p>The problem with &#8220;building a game&#8221; and &#8220;gamification&#8221; (aside from the terrible word) is that people hear &#8220;game&#8221; and their impression drops. It doesn&#8217;t need to be that way. This article (<a href="http://gamification.com/post/19738924429/why-gamification-is-the-exact-opposite-of-what-you" target="_blank">Why Gamification is the Exact Opposite of What You Think</a>) does a good job of breaking it down for people.</p>
<p>Gamification is about laying out a problem, helping track progress to the goal, conferring status to the player, and giving a reward to the player. For instance, I have a goal in Fitocracy to outrun some zombies. To do this, I have to run a mile in less than 9 minutes. I average around 11 but can sometimes get down to 10 for short distances. And when I get there, I get a badge on my profile. We did something similar to this for Portland Fit where the goal is to compete in the Portland Marathon, you&#8217;re a member of a training group, and you get a badge for participating in the half-marathon on the program.</p>
<p>The first part of the article was good, the middle was good- and I especially liked the non-gaming examples of gamification (Airline miles, for one). But the end took a dark turn, and you should read the article.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/03/26/dont-fear-gamification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checking Sitemap Files for 404 Errors</title>
		<link>http://www.arghwebworks.com/2012/03/01/checking-sitemap-files-for-404-errors/</link>
		<comments>http://www.arghwebworks.com/2012/03/01/checking-sitemap-files-for-404-errors/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 23:49:14 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Search Engines]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=173</guid>
		<description><![CDATA[One of my problems is that sitemap files sometimes get out of sync with the actual site, even with sites driven from a database. One thing I&#8217;m working on is testing those files; you could put this into the sitemap building script if you wanted to make sure the files existed even when you were [...]]]></description>
			<content:encoded><![CDATA[<p>One of my problems is that sitemap files sometimes get out of sync with the actual site, even with sites driven from a database. One thing I&#8217;m working on is testing those files; you could put this into the sitemap building script if you wanted to make sure the files existed even when you were writing the sitemap file.</p>
<p>So here&#8217;s a snippet of PHP code to help you do that.<br />
<code><br />
$in=file_get_contents('sitemap.xml');<br />
# yes, yes, I know, don't mess with xml with regex.<br />
# but I'm in total control over this input<br />
preg_match_all( '|<loc>(.*?)</loc>|ism', $in, $m );<br />
$urls=$m[1];<br />
$err=array();<br />
foreach( $urls as $u ){<br />
	$code = is404( $u );<br />
	if ( $code ) {<br />
		print "404 |  $u \n";<br />
		$err[]=$u;<br />
	}<br />
}<br />
print count($urls )." errors found \n";</p>
<p>function is404( $in ){<br />
# I tried the get_headers() function as well as the file_get_contents() methods<br />
# but using curl gave me an easily accessible status number that I could compare against<br />
# 200 and 300 (see code) in case some 301 or 302 snuck in.<br />
	$handle = curl_init($in);<br />
	curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);<br />
	curl_setopt($handle, CURLOPT_NOBODY, true );<br />
	$response = curl_exec($handle);<br />
	$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);<br />
	curl_close( $handle );<br />
	if ( $httpCode >=200 &#038;&#038; $httpCode &lt;300 ) {<br />
		return false;<br />
	}<br />
	else {<br />
		return true;<br />
	}<br />
}<br />
</code></p>
<p>I may put that is404 method into the script that builds the sitemap. That script just pulls data from the database and it <em>should</em> be right. Unfortunately it isn&#8217;t always right.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/03/01/checking-sitemap-files-for-404-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting ActionMailer</title>
		<link>http://www.arghwebworks.com/2012/02/28/troubleshooting-actionmailer/</link>
		<comments>http://www.arghwebworks.com/2012/02/28/troubleshooting-actionmailer/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 22:35:55 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=171</guid>
		<description><![CDATA[That was exciting. Like worrying away at the skin around a sliver in your thumb until the sliver finally pops free. I was given some legacy code that was supposed to email a salesperson and a customer on completion of an order. The code used ActionMailer, and it was not working. Of course, I had [...]]]></description>
			<content:encoded><![CDATA[<p>That was exciting. Like worrying away at the skin around a sliver in your thumb until the sliver finally pops free.</p>
<p>I was given some legacy code that was supposed to email a salesperson and a customer on completion of an order. The code used ActionMailer, and it was not working. Of course, I had to figure out what was wrong with it. To complicate matters, there was another team &#8220;doing a secure email configuration,&#8221; and I wasn&#8217;t sure about the line of demarcation between my bailiwick and theirs.</p>
<p>The first order was to figure out <a href="http://www.ruby-forum.com/topic/96512" target="_blank">how to test ActionMailer from a console</a>. So I navigated to the root of the production site and used &#8220;rails console production&#8221; to open up a console window. Wait a moment while the app initializes. Then I could examine SMTP settings with &#8220;ActionMailer::Base.smtp_settings&#8221; .</p>
<p>I used this piece of code (I used it often enough with minor modifications that I opened up a text editor so I could cut and paste it).<br />
<code><br />
class MyMailer < ActionMailer::Base<br />
  def test_email<br />
    @recipients="(me)"<br />
    @from="(a real email address with a real domain)"<br />
    @subject="some subject"<br />
    @body="some body"<br />
  end<br />
end<br />
</code></p>
<p>And then tried to deliver it with "MyMailer.deliver_test_email". Nothing happened, so I had to type this into the console window "ActionMailer::Base.raise_delivery_errors = true" and try again with deliver_test_email. </p>
<p>After two hours of troubleshooting, I narrowed down the problem. Essentially, ActionMailer was detecting that starttls was enabled in the exim config on this system, and even though I had turned off "tls" explicitly with :tls=>false (better example in a moment), I also needed to turn off "enable_starttls_auto".<br />
Here's what I wound up with for smtp_settings:<br />
</code><code><br />
ActionMailer::Base.smtp_settings = {:domain=>"(client domain here)", :port=>25, :tls=>false, :address=>"localhost", :enable_starttls_auto=>false}<br />
</code></p>
<p>You can play with the Rails environment pretty well, with this method; you&#8217;re setting up a new method for teh ActionMailer class, and then trying to deliver. And you can update the global environments. That doesn&#8217;t require a service / app restart. What does require that restart is when you make those changes in the config files.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/02/28/troubleshooting-actionmailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extends Thing</title>
		<link>http://www.arghwebworks.com/2012/02/23/extends-thing/</link>
		<comments>http://www.arghwebworks.com/2012/02/23/extends-thing/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 23:10:44 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=169</guid>
		<description><![CDATA[I put parent classes to work for me in what I thought was an interesting way. Most of the time when I&#8217;m writing a PHP class out, I include a db property (which is actually a reference to a preinstantiated $db object) and a _log method, which appends to a file some debug output. Then [...]]]></description>
			<content:encoded><![CDATA[<p>I put parent classes to work for me in what I thought was an interesting way. Most of the time when I&#8217;m writing a PHP class out, I include a db property (which is actually a reference to a preinstantiated $db object) and a _log method, which appends to a file some debug output. Then I can define DEBUG somehow and if we&#8217;re debugging, then output a variety of things. It&#8217;s usually &#8220;time|memory usage|(message)\n&#8221;. Each time I build a new class, I&#8217;m adding these things.</p>
<p>It finally filtered my old reptilian brain that I could use an base class to define these and then I&#8217;d have them in the class without having to rewrite the thing. </p>
<p>So, my base class looks somewhat like<br />
<code><br />
class Thing {<br />
  var $db;<br />
  function __construct(){<br />
    global $db;<br />
    $this->db =&#038; $db;<br />
  }<br />
  function _log( $input ){<br />
    $input=trim($input);<br />
    if ( strlen( $input ) == 0 ){ return self::_log( "_log called with empty input"); }<br />
    $fh=fopen("/tmp/debug.log", "a");<br />
    if ($fh ){<br />
       fwrite( $fh, "$input\n");<br />
       fclose( $fh );<br />
    }<br />
    return strlen( $input );<br />
  }<br />
}<br />
</code></p>
<p>Hope that gives you some ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/02/23/extends-thing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Verbs</title>
		<link>http://www.arghwebworks.com/2012/02/16/social-verbs/</link>
		<comments>http://www.arghwebworks.com/2012/02/16/social-verbs/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 17:32:43 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[social sites]]></category>
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=165</guid>
		<description><![CDATA[By &#8220;Social Verbs,&#8221; I mean how users of your social website &#8220;approve&#8221; of each other&#8217;s posts. Obviously, Facebook has the Like button (and they&#8217;re adding more). Two sites I&#8217;ve been using lately have switched to &#8220;give props&#8221; (Fitocracy) and &#8220;Healthy&#8221; as in &#8220;I find this healthy&#8221; (Runkeeper). I can see why they chose different verbs, [...]]]></description>
			<content:encoded><![CDATA[<p>By &#8220;Social Verbs,&#8221; I mean how users of your social website &#8220;approve&#8221; of each other&#8217;s posts. Obviously, Facebook has the Like button (and they&#8217;re adding more). Two sites I&#8217;ve been using lately have switched to &#8220;give props&#8221; (Fitocracy) and &#8220;Healthy&#8221; as in &#8220;I find this healthy&#8221; (Runkeeper).</p>
<p>I can see why they chose different verbs, and I agree that it&#8217;s important to distance a site from Facebook (conceptually, although it&#8217;s also important to bring it closer to Facebook, it has a wide audience and they&#8217;re doing something right). However, &#8220;giving props&#8221; works very well on an instant thing (giving props for lifting 200 pounds), but &#8220;finding healthy&#8221; &#8211; I don&#8217;t think it works as well. </p>
<p>Pedantically, &#8220;Healthy&#8221; refers to a person, while &#8220;healthful&#8221; refers to a thing the person does (a healthful dinner). <em>But more important to my point</em>, &#8220;healthy/healthful&#8221; refers to an arc, a path- starting the Couch to 5K and dropping 20 pounds, that&#8217;s healthy. Running half a mile once a month, not so much. </p>
<p>Also, the voice is broken. I &#8220;like&#8221; your post on Facebook. I &#8220;give props&#8221; to you for your lift. I &#8220;find healthy&#8221; your run. Just doesn&#8217;t work. </p>
<p>I think leaving it as &#8220;like&#8221; would have been better. In fact, my &#8220;liking&#8221; posts has gone down on Runkeeper just because of what I&#8217;m mentioning above, which has the opposite effect from what the Runkeeper guys want. All social sites want to increase social actions. Choose your actions wisely, or people won&#8217;t be doing them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/02/16/social-verbs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design Questions</title>
		<link>http://www.arghwebworks.com/2012/02/07/design-questions/</link>
		<comments>http://www.arghwebworks.com/2012/02/07/design-questions/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 02:45:50 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=161</guid>
		<description><![CDATA[I am the first to admit that when I&#8217;m building a website for someone, the last thing I do is work out the design. Which is strange, because I usually consider myself to be pretty evenly balanced, left-brain, right-brain. But when you&#8217;re building something for someone, the functionality; what they want to happen, that&#8217;s resolved. [...]]]></description>
			<content:encoded><![CDATA[<p>I am the first to admit that when I&#8217;m building a website for someone, the last thing I do is work out the design. Which is strange, because I usually consider myself to be pretty evenly balanced, left-brain, right-brain. </p>
<p>But when you&#8217;re building something for someone, the functionality; what they want to happen, that&#8217;s resolved. &#8220;We want a website for Portland runners to join up and follow scheduled programs, for training for the Portland Marathon.&#8221; Ok, done, with a facebook integration, some database tables, some forms. But &#8220;we want it prettier than a 1992 website&#8221; &mdash; now you&#8217;re talking subjective judgements. And who&#8217;s going to say whether my idea of &#8220;prettier&#8221; is what you have in mind? Everything from the color scheme to the shapes of the icons is dangerously subjective. </p>
<p>You can put twenty hours into a project, adding gradients, icons, a color scheme, some ajaxy effects to load a user&#8217;s information into a little window. And then the client sees it and is going to say one of three things; &#8220;Hey, that&#8217;s great&#8221; or &#8220;Hey, not what I had in mind, but let&#8217;s change to a black and tan layout&#8221; or &#8220;It&#8217;s obvious that you&#8217;re not a designer&#8221; (that last one actually happened to me). And then what do you do with those hours I put into the project to &#8220;make it pretty&#8221; ?</p>
<p>However, if you do no design stuff and leave it completely rudimentary, the situation is like a builder who puts up studs and drywall but doesn&#8217;t bother painting. Who&#8217;s going to call that job complete? Not me. I&#8217;d be rather angry at a contractor who did that. </p>
<p>I think the solution might be one of two things. First, do the design part first- this helps the client see &#8220;a finished site&#8221; and maybe they&#8217;ll stop asking when it&#8217;ll be done. Secondly, work with a designer friend who is willing to help you out (for a fee). You can either subcontract the work to them (which I do not prefer) or you can connect the client to the designer directly which will get you out of that discussion.</p>
<p>However, I think you should <em>always</em> do some design work on a site, and you should make sure to build it into your invoice for the client, unless your designer friend provides you with all the things you need.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2012/02/07/design-questions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Need to Backup a WordPress Blog?</title>
		<link>http://www.arghwebworks.com/2011/10/26/need-to-backup-a-wordpress-blog/</link>
		<comments>http://www.arghwebworks.com/2011/10/26/need-to-backup-a-wordpress-blog/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 04:47:45 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=159</guid>
		<description><![CDATA[I found a neat plugin &#8211; WordPress Backup to Dropbox. It dumps your database to your /wp-content directory and then copies the entire directory tree to your dropbox.com account. It&#8217;s also neat because it uses oauth; it doesn&#8217;t store any usernames or passwords, it just requires that you go over to the dropbox site and [...]]]></description>
			<content:encoded><![CDATA[<p>I found a neat plugin &#8211; <a href="http://www.mikeyd.com.au/projects/wordpress-backup-to-dropbox/" target="_blank">WordPress Backup to Dropbox</a>. It dumps your database to your /wp-content directory and then copies the entire directory tree to your <a href="http://db.tt/oFipG7m" target="_blank">dropbox.com</a> account. </p>
<p>It&#8217;s also neat because it uses oauth; it doesn&#8217;t store any usernames or passwords, it just requires that you go over to the dropbox site and authorize it. Then you can set a day and time for your site to be backed up and how frequently you want it. There&#8217;s even an option to start it now. </p>
<p>Since your web host probably kills off long running scripts, this backup plugin monitors the status and if it appears to go away, it&#8217;ll try to restart the process. It&#8217;s pretty slick.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2011/10/26/need-to-backup-a-wordpress-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting First Page Search Results with WordPress</title>
		<link>http://www.arghwebworks.com/2011/04/12/first-page-results-with-wp/</link>
		<comments>http://www.arghwebworks.com/2011/04/12/first-page-results-with-wp/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 05:10:33 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Search Engines]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=157</guid>
		<description><![CDATA[I saw this in Craigslist today: (snip) I am increasingly asked to design WordPress websites, and asked to make them so they are easily findable on the first pages of a major search engine like Google, Yahoo, Bing, etc. In fact, just today, I got an inquiry on this very matter. The client wants me [...]]]></description>
			<content:encoded><![CDATA[<p>I saw this in Craigslist today:</p>
<blockquote><p>
(snip)<br />
I am increasingly asked to design WordPress websites, and asked to make them so they are easily findable on the first pages of a major search engine like Google, Yahoo, Bing, etc. In fact, just today, I got an inquiry on this very matter. The client wants me to redesign their existing website using WordPress, so I can show them how to update and maintain it, AND they want people to be able to find the website on the first pages of a major search engine. &#8230;Two weeks ago, was the last inquiry I got on this very matter, so there is potential for work on 1 or 2 websites a month, if I can resolve this, potentially. &#8230;I would love to partner with a mentor webmaster who could either take on that end of the websites or could instruct me. I&#8217;m open, and would like to resolve this ASAP. &#8230;HELP ME!!!!<br />
(some more snipped)
</p></blockquote>
<p>I&#8217;m not a SEO guy; I&#8217;m a web programmer (among other things) with some ideas about SEO.</p>
<p>I didn&#8217;t send them an email offering my elite services as a SEO guy to help them get first page results. I started off by pointing out that the first thing they needed to decide was the keywords they wanted to rank for&#8211; and that &#8220;camera lenses&#8221; would be a lot harder to rank for than &#8220;used canon lenses in Portland.&#8221; So the first step would be to define some better keywords.</p>
<p>And for on page SEO, frankly, you could do worse than WordPress- that is, with some SEO plugins, good choices of keywords, pretty URLs, you know, all that stuff a good webmaster would set up for you. </p>
<p>However, you also need to look at the kinds of content you have, the quantity and quality of links to your site and even the responsiveness of your web server. </p>
<p>In a handful of nutshells, you need quality posts that are over 300 words long, using <em>but not overusing</em> your keywords. They should be the kinds of posts that people who search for what you&#8217;re offering are looking for, helpful or interesting, or whatever. </p>
<p>You need &#8220;some&#8221; links. You can&#8217;t have an exact number because it&#8217;s not an exact science. If they&#8217;re all from hack blogs, you might need thousands of them. If they&#8217;re from solid domains with some personal accountability, you might need hundreds. But don&#8217;t run out and buy them all in one bunch, you want them to be gradually built up.</p>
<p>And starting last year, Google started factoring in the response time of your server; a more responsive server gets better results. Pages loading in a couple of seconds get better results than pages that take a minute to load. </p>
<p>However, keep in mind that none of these are really solid rules; they are differently weighted tests that you could consider as you go through a SEO offering. To add to that, Google (and probably Yahoo and Bing, but they&#8217;re less well publicized) changes its ranking algorithmic about once a year.  So you might find that your carefully tweaked and optimized WordPress site sits at number seven for three months and suddenly slides to thirty three, and there were no changes.</p>
<p>What I try to tell people (but I believe most people don&#8217;t hear me) is that the search engines are trying to help people find stuff. They&#8217;re not &#8220;screwing the webmasters&#8221; or &#8220;being completely obtuse&#8221; or even &#8220;gaming the systems.&#8221; Search engines want to be used to find stuff. So make your stuff easy to find and worth finding, let the search engines do their dances, and just do your best in terms of making quality stuff.</p>
<p>All that being said, if you need a good Search Engine guy, talk to my friend Chris Bigler. I&#8217;ll post his email or something when I have it (should be Real Soon Now).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2011/04/12/first-page-results-with-wp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your Mobile Code</title>
		<link>http://www.arghwebworks.com/2011/04/07/your-mobile-code/</link>
		<comments>http://www.arghwebworks.com/2011/04/07/your-mobile-code/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 05:19:49 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[mobile websites]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=155</guid>
		<description><![CDATA[Hand crafting your site&#8217;s HTML for the best mobile experience can be a real pain in the neck. Mobile Moxie&#8217;s Page Code Grader can help lighten that burden. It&#8217;s pretty straightforward to use; put in your site&#8217;s URL and pick a user-agent, and then their script will get the site and run a bunch of [...]]]></description>
			<content:encoded><![CDATA[<p>Hand crafting your site&#8217;s HTML for the best mobile experience can be a real pain in the neck. </p>
<p>Mobile Moxie&#8217;s <a href="http://www.mobilemoxie.com/mobile-tools/page-code-grader/">Page Code Grader</a> can help lighten that burden. It&#8217;s pretty straightforward to use; put in your site&#8217;s URL and pick a user-agent, and then their script will get the site and run a bunch of checks on it. They have a bunch of different UserAgents paired with the page layout images so you can get a rough idea of how your inspected page would look on that device.</p>
<p>Like most tests on the web, however, you should take this test as a guide and not as a rule. When I ran this test on a mobile site, I was surprised to get dinged for the use of tables (this particular site doesn&#8217;t use tables) and dinged for style tags (this particular site <em>might</em> have style tags, but I don&#8217;t think so). And I&#8217;m not sure how to get a 1 pixel border without specifying the border width in pixels. </p>
<p>However, there were some good things it caught; it steered me toward the use of handheld.css (as opposed to the style.css file I normally use; apparently the name is important) and it reminded me to use relative measures rather than the absolutes I had previously (I had a line height of 24 pixels, and changed it to 2em). It correctly found that my images are nice and small. It liked my text-buttons (as opposed to some unwieldy image buttons).</p>
<p>Overall, I give this tool a B. It&#8217;s in my list of tests to run, but it&#8217;s not the last one I&#8217;d use. </p>
<p>If you&#8217;re having a problem with your image sizes, give Dink a try: <a href="http://dinkapp.com/">Dink</a> does resizing of images for mobile devices, on the fly, so you don&#8217;t have to. And it has drupal and ruby on rails plugins.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2011/04/07/your-mobile-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

