<?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>archGFX &#187; howto</title>
	<atom:link href="http://archgfx.net/tag/howto/feed" rel="self" type="application/rss+xml" />
	<link>http://archgfx.net</link>
	<description>Austin web designer - Adam Freetly</description>
	<lastBuildDate>Wed, 28 Sep 2011 13:50:27 +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>for the obsessive theme switchers</title>
		<link>http://archgfx.net/blog/2007/geek/blogging/for-the-obsessive-theme-switchers</link>
		<comments>http://archgfx.net/blog/2007/geek/blogging/for-the-obsessive-theme-switchers#comments</comments>
		<pubDate>Mon, 16 Apr 2007 01:33:12 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://archgfx.net/blog/2007/asides/for-the-obsessive-theme-switchers</guid>
		<description><![CDATA[I'm prepetually unsatisfied by themes. it's not the theme authors' fault, i'm just restless. alex king pointed to more advice: From Install to Pimped Out that sounds like the advice i found when i started using wordpress. but for anyone who does, or might, change themes, it's wrong. when you're talking about meta tags, or [...]]]></description>
			<content:encoded><![CDATA[<p> I'm prepetually unsatisfied by themes.  it's not the theme authors' fault, i'm just restless.  alex king pointed to more advice: <a href="http://www.search-this.com/2007/03/14/wordpress-from-install-to-pimped-out/#comment-872">From Install to Pimped Out</a> that sounds like the advice i found when i started using wordpress.  but for anyone who does, or might, change themes, it's wrong.</p>
<p>when you're talking about meta tags, or feedburner <acronym title='Rich Site Summary'><span class='caps'>RSS</span></acronym> feeds, or custom title tags, you're talking about things you don't want to break when you change themes.  and there's no reason for them to. this is how i do it:  i wrote a plugin.</p>
<p>Gasp! Shock! horror!<br />
not really.  if you can handle everything in the post above, you can handle this plugin.  here's how it starts:</p>
<p><code>&lt;?php<br />
/*<br />
Plugin Name: archGFX Functions<br />
Plugin URI: http://archgfx.net/<br />
Description: all the things that i hack into themes, now they have their own file<br />
Version: 1.0<br />
Author: SunBurntKamel<br />
Author URI: http://archgfx.net/<br />
*/</code></p>
<p>you need to have a name, the rest of it's optional.</p>
<p>so, all that fun stuff that you want to add to the head of your blog?  dump it into a function:</p>
<p><code>function archGFX_head() { ?&gt;<br />
&lt;META NAME="Description" CONTENT="archGFX is the brand name used by Adam Freetly. This portfolio represents personal and collaborative work." /&gt;<br />
&lt;meta name="keywords" content="adam freetly, architecture, blog, portfolio, design, rendering" /&gt;<br />
&lt;META NAME="geo.position" CONTENT="41.92;-87.70" /&gt;<br />
&lt;META name="geo.region" content="US-IL" /&gt;<br />
&lt;META name="geo.placename" content="chicago" /&gt;<br />
&lt;link rel="shortcut icon" href="http://www.archgfx.net/images/blogrdfbg.jpg" /&gt;<br />
&lt;link rel="alternate" type="application/rss+xml" title="<acronym title='Rich Site Summary'><span class='caps'>RSS</span></acronym> 2.0" href="http://feeds.feedburner.com/archGFX" /&gt;<br />
&lt;link rel="search" href="http://archgfx.net/opensearchdescription.xml" type="application/opensearchdescription+xml" title="archGFX" /&gt;<br />
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
_uacct = "UA-91088-3";<br />
urchinTracker();<br />
&lt;/script&gt;<br />
&lt;?php }</code></p>
<p>obviously i have a few more things than average.  google analytics scripts, geo tags, favicon, etc.  you can call the function whatever you want, just remember it.  now that we've got all our code, we need to insert it:</p>
<p><code>add_action('wp_head', 'archGFX_head');<br />
?&gt;</code></p>
<p>that's it, save the file, activate your 'plugin', and you're good to go.  naturally, i do a few more things with this.  i also handle my footer copyright notice the same way, with<br />
<code><br />
add_action('wp_footer', 'archGFX_foot');</code></p>
<p>i add the mybloglog widget to my dashboard with<br />
<code>add_action('activity_box_end', 'archGFX_MBL');</code></p>
<p>and, i don't have to worry about forgetting to add any of it next time i switch themes.  the only thing that i don't put in the plugin is my title tags.  you can only have one of those.  so while i could add mine with a plugin, i'd have to delete the theme's title manually.</p>
]]></content:encoded>
			<wfw:commentRss>http://archgfx.net/blog/2007/geek/blogging/for-the-obsessive-theme-switchers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Defective Themes: Duplicate Content</title>
		<link>http://archgfx.net/blog/2007/geek/blogging/defective-themes-duplicate-content</link>
		<comments>http://archgfx.net/blog/2007/geek/blogging/defective-themes-duplicate-content#comments</comments>
		<pubDate>Wed, 14 Mar 2007 16:50:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://archgfx.net/blog/2007/asides/defective-themes-duplicate-content</guid>
		<description><![CDATA[Talking to Rob about his nifty architecture blog search engine, I realized just how important things like the Duplicate Content Cure Plugin are. Not just for fear of being kicked out of google, but because it makes your search results real. By default, your monthly, category, tag, and author pages (if they exist) show up, [...]]]></description>
			<content:encoded><![CDATA[<p>Talking to <a href="http://no2self.net/">Rob</a> about his nifty <a href="http://no2self.net/blogsearch">architecture blog search engine</a>, I realized just how important things like the  <a href="http://www.seologs.com/wordpress-duplicate-content-cure/">Duplicate Content Cure Plugin</a> are.  Not just for fear of being kicked out of google, but because it makes your search results <em>real</em>.  By default, your monthly, category, tag, and author pages (if they exist) show up, and force your relevant blog posts 'below the fold'.  Worse still, old articles won't show up on category pages, despite being the reason a person landed on your blog.  That's exactly what happens with a search engine that searches only blogs, without using google's blogsearch:  pages and pages of archives, before you get to actual posts.</p>
<p>So, the plugin is nice, but you can also do it in themes,  just add:</p>
<pre>
 &lt;?php if ( is_category() || is_archive() || is_search() || is_author() ) { ?&gt;

    &lt;meta name="robots" content="noindex,follow"&gt;&lt;?php

} ?&gt;

&lt;?php if (function_exists('is_tag')) { if ( is_tag() ) { ?&gt;

    &lt;meta name="robots" content="noindex,follow"&gt;

&lt;?php } } ?&gt;</pre>
<p>to <code>header.php</code>.  The UTW stuff (is_tag()) is a little annoying, but other than that, it's boilerplate.</p>
]]></content:encoded>
			<wfw:commentRss>http://archgfx.net/blog/2007/geek/blogging/defective-themes-duplicate-content/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SF.net PT 2: Setting up a demo site</title>
		<link>http://archgfx.net/blog/2007/geek/blogging/sfnet-pt-2-setting-up-a-demo-site</link>
		<comments>http://archgfx.net/blog/2007/geek/blogging/sfnet-pt-2-setting-up-a-demo-site#comments</comments>
		<pubDate>Mon, 05 Mar 2007 03:17:01 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[sourceforge]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://archgfx.net/blog/2007/asides/sfnet-pt-2-setting-up-a-demo-site</guid>
		<description><![CDATA[Part 1 was easy. it's all GUI stuff, that you can figure out by poking around. Part 2 is the reason I started writing this down. The only way to maintain your sourceforge.net website, is via SSH (and by extension, sFTP). Programs you will need: Putty (download) PuttyGen (same as above) WinSCP (download) Putty and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sunburntkamel.archgfx.net/2007/03/02/hosting-a-theme-on-sourceforge-pt-1/">Part 1 was easy</a>.  it's all GUI stuff, that you can figure out by poking around.  Part 2 is the reason I started writing this down.  The only way to maintain your sourceforge.net website, is via <acronym title='Secure SHell'><span class='caps'>SSH</span></acronym> (and by extension, sFTP).  Programs you will need:</p>
<ul>
<li>Putty (<a href="http://www.putty.nl/download.html">download</a>)</li>
<li>PuttyGen (same as above)</li>
<li>WinSCP (<a href="http://winscp.net/eng/download.php">download</a>)</li>
</ul>
<p><span id="more-1016"></span></p>
<p>Putty and PuttyGen are just executable programs, they don't install.  After you've installed winSCP and rebooted, go to your SF.net Admin Menu and choose <strong>Shell/DB/web</strong>.  On this page, they list the location of your web files. The important one is <em>Path to htdocs directory:</em> (<code>/home/groups/P/PR/PROJECTNAME/htdocs</code>).  That's just reference right now.</p>
<h3>PHPMyAdmin</h3>
<p>First set up our MySQL database.  Halfway down the page, there's a link to "Manage Project Databases", which takes you to a page where you will set your passwords.  I use the same password for all 3.  not the most secure, theoretically, but i can't think why i would be sharing any of the passwords with anyone.  After you set your password, use the link on that page to log into PHPMyAdmin with your admin account.  first thing you'll do is create a database:</p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/phpmyadmin.jpg" alt="create!" /></p>
<p>i just put wp or wordpress on the end of it, but you should leave the project number as a prefix.</p>
<h3>PuttyGen</h3>
<p>To log in to your site, you need to set up an <acronym title='Secure SHell'><span class='caps'>SSH</span></acronym> key pair. Open up PuttyGen.exe.  we're going to follow <a href="http://sourceforge.net/docs/F02/en/#keygen_putty">these instructions</a>.  When you click 'generate key', you'll see this:</p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/randomness.jpg" alt="do like the man says, move your mouse around." /></p>
<p>so be ready to shake your <strike>tail feathers</strike> pointer finger, it only takes a few seconds.  Once it's generated (i didn't bother entering a passphrase, but you might want to) edit the 'Key comment' field like so (the key automatically updates):</p>
<p><img src="/files/2007/03/sshkey.jpg" alt="<acronym title='Secure SHell'><span class='caps'>SSH</span></acronym> key generated" /></p>
<p>Copy everything in the Public Key field, and click over to your <a href="https://sourceforge.net/account/">Account maintenance page</a>.  Near the bottom, click the [Edit <acronym title='Secure SHell'><span class='caps'>SSH</span></acronym> Keys for Shell/CVS] link.  Paste your key into that field.  Make sure you click the "Save Private Key" button, and then close PuttyGen.</p>
<h3>WinSCP</h3>
<p>Open winSCP.  on the configuration screen, click New:</p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/winscp.jpg" alt="new account" /></p>
<p>the private key file is the one you saved from PuttyGen a minute ago.  You'll also want to go to the directory page, and set the remote directory to your htdocs directory.  Save your settings, and click Login.  winSCP will warn you about the accepting the key fingerprint, click yes.</p>
<p>You can either unzip wordpress locally, and upload the whole thing, which takes a while, or you can just upload the *.tar.gz file and unzip it on the server.  <a href="http://techtites.com/2007/03/03/upgrading-wordpress-via-shell/">Techtite</a> just posted an explanation of this, although there are a few differences I'll explain in a minute.</p>
<h3>Putty</h3>
<p>When you open Putty.exe, you'll need to configure it much the same way you did winSCP:<br />
<img src="http://sunburntkamel.files.wordpress.com/2007/03/puttyhost.jpg" alt="host info" /></p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/puttykey2.jpg" alt="key location" /></p>
<p>Save your settings, and login.  You'll be prompted for your username, and then you'll want to type <code>cd /home/groups/P/PR/PROJECTNAME/htdocs</code>.  Following Ajay's instructions, the wget command doesn't work, because your shell account doesn't have access to anything that's not on SF.net. so here are the commands i used:<br />
<code><br />
tar xzvf wordpress-2.1.2.tar.gz<br />
cp -rf wordpress/* ./<br />
cp wp-config-sample.php wp-config.php<br />
vi wp-config.php<br />
</code><br />
vi is a text editor.  Once it opens, the first thing you should do, is type 'i'.  That puts you into insert mode (the default is view).  enter the information from the "Manage Project Databases" page, like so:<br />
<img src="http://sunburntkamel.files.wordpress.com/2007/03/wp-config2.jpg" alt="editing in vi" /></p>
<p>You can paste into Putty by placing the cursor where you want, and right-clicking on the window. And yes, we're changing that '99% chance you won't need to change this' line.  You'll need to use the admin username and password.  after you're done editting, press '<code>ESC</code>' to switch back to view mode, and then '<code>:wq</code>' to write the file and quit.</p>
<p>now you're ready to run install.php! while you're setting up all your favorite options, you'll note that</p>
<ul>
<li>you can't set up akismet.  not sure what to do about that just yet.</li>
<li>you can't upload files.  or add custom headers.  not sure what to do about that either.</li>
<li>when you edit your permalink structure, it won't save.  you'll have to fire up vi to do that as well.</li>
</ul>
<h3>Adding your Theme</h3>
<p>you can keep an up to date copy of your theme installed via SVN. Just:<br />
<code><br />
cd wp-content/themes/<br />
svn co http://PROJECTNAME.svn.sourceforge.net/svnroot/PROJECTNAME/trunk/ PROJECTNAME<br />
</code><br />
don't forget the /trunk.  since you're doing this via command line, you'll need to make sure your capitalization matches.  and that last PROJECTNAME is whatever you want to call your theme folder.</p>
<p>The last thing you'll need to do is add your sourceforge code.  The code is on that Shell/DB/web page, about halfway down.</p>
]]></content:encoded>
			<wfw:commentRss>http://archgfx.net/blog/2007/geek/blogging/sfnet-pt-2-setting-up-a-demo-site/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Hosting a theme on Sourceforge, PT. 1</title>
		<link>http://archgfx.net/blog/2007/geek/blogging/hosting-a-theme-on-sourceforge-pt-1</link>
		<comments>http://archgfx.net/blog/2007/geek/blogging/hosting-a-theme-on-sourceforge-pt-1#comments</comments>
		<pubDate>Fri, 02 Mar 2007 18:41:30 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[sourceforge]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://archgfx.net/blog/2007/asides/hosting-a-theme-on-sourceforge-pt-1</guid>
		<description><![CDATA[The advantages of sourceforge hosting are all things that all themes should have: demo blog, screenshots, download stats, nationwide download mirrors, SVN repository, bug tracker, forums. All things you could provide from your own web host, but not only would it cost a fair chunk, having bugs and support show up as comments on your [...]]]></description>
			<content:encoded><![CDATA[<p>The advantages of sourceforge hosting are all <a href="http://weblogtoolscollection.com/archives/2007/02/28/for-theme-authors/">things that all themes should have</a>:  demo blog, screenshots, download stats, nationwide download mirrors, SVN repository, bug tracker, forums. All things you <em>could</em> provide from your own web host, but not only would it cost a fair chunk, having bugs and support show up as comments on your blog can get to be a bit unweildy.  For any <acronym title='GNU General Public License'><span class='caps'>GPL</span></acronym> theme, sourceforge hosting is Free as in beer.  unfortunately, getting set up on sourceforge isn't a cakewalk.  so i'm going to attempt to index their documentation in a more straightforward manner.  <a href="http://sunburntkamel.archgfx.net/2007/03/04/sfnet-pt-2-setting-up-a-demo-site/">Part 2</a> will explain how to install wordpress on your project's website, to give you a fully featured demo site.</p>
<p><span id="more-1008"></span></p>
<ol>
<li>Regiser for the site.  (create account, in the top right of any page).  the name you choose is going to be the name of the lead developer.  it doesn't have to be a real name if you don't want it to.</li>
<li><a href="https://sourceforge.net/register/">Register your project</a>.  i know, that's an absurd number of options.  you have to save each option (trove) before moving on to the next one. your UNIX name should probably start with '<code>wp-</code>' for clarity and findability.  The descriptive name should start with 'WP Theme -' for the same reason. The Basics:
<ul>
<li>Intended Audience :: End users/Desktop</li>
<li>Topic :: Internet :: WWW/HTTP :: Dynamic Content</li>
<li>OS Independent (Written in an interpreted language)</li>
<li>User Interface :: Web Based</li>
</ul>
<p>Your description is probably not the one that shows up in the dashboard.  it should start by explaining that this is a wordpress theme.  It should explain what sets you apart from other themes, whether that's aesthetics, options, or plugin support.  This would be a good place to describe your layout, and basic colors.<br />
from this point on, everything will be done through the admin menu. on the top right of your project page:<a href="http://sunburntkamel.files.wordpress.com/2007/03/sfadmin.png" title="Sourceforge Admin"><img src="/files/2007/03/sfadmin.thumbnail.png" alt="Sourceforge Admin" align="right" /></a></li>
<li>Upload a screenshot.  You can upload more once after you're set up.</li>
<li>fire up your ftp client.  connect to upload.sourceforge.net, and upload your zip file</li>
<li>now go to Admin &gt; File Releases.  select the file from the list at the bottom of the page . Don't worry about your first changelog/notes entry.  'initial public release' is good enough.</li>
</ol>
<h3>Setting up SVN:</h3>
<p>Nobody wants to use CVS anymore. go to Admin &gt; Subversion, and tick the checkbox.  From here on out, I'm assuming you're using <a href="http://tortoisesvn.tigris.org/">tortoise SVN</a>, because it's easy, and i can take screenshots <img src='http://archgfx.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>right click in any folder on your computer, and choose the repo-browser:</p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/repo-browser.jpg" alt="repo browser" /></p>
<p>You'll be prompted for a repository to browse.  the address is on that SVN page you just ticked the box on: <code>https://wp-unixname.svn.sourceforge.net/svnroot/wp-unixname</code>.  You'll want to create 3 folders:  Trunk, Tags, and Branches.  Right click on the main folder.  When you choose create folder, and name it, you'll be promted for your sourceforge username and password.</p>
<p>Trunk is where your project lives, Tags are snapshots every time you release a new version.  Branches are like tags, only they both make progress.  You might use this if you were making a version 2 of your theme, while continuing to support version 1.</p>
<p>To start your SVN repository, right click on the folder that has the release version of your file, and choose "Import" from the tortoise submenu.  It will prompt you for the address of your repository, make sure you add the <code>/trunk</code> to the end of the url!  This puts your  files on sourceforge.  Users can now browse your code online.</p>
<p>Now your code is set up on the server, but you still don't have a local copy that you can easily update. Now you want to make a new folder for your theme in your local /wp-content/themes/ folder. right click on it, and choose "SVN Checkout". Again, make sure to put /trunk on the end of the url.</p>
<p>I'm assuming that this is a new theme that you're already ready to release.  If that's true, the first thing you should do, is right click on the folder you just checked out, and choose "Branch/Tag".  That brings up this window:</p>
<p><img src="http://sunburntkamel.files.wordpress.com/2007/03/branchtag.jpg" alt="branchtag.jpg" /></p>
<p>Change the <acronym title='Uniform Resource Locator'><span class='caps'>URL</span></acronym> to <code>/tags/1.0</code>.  and leave everything else.  You can use the specific version if you release a version and forget to tag it.  You probably only want to switch your working copy to a branch, not a tag.</p>
<h3>New Versions</h3>
<p>Now when you fix a bug, or tweak your <acronym title='Cascading Style Sheets'><span class='caps'>CSS</span></acronym>, after you save, you can just right click on the file, and choose "SVN Commit". you'll be prompted to enter a description of the change, and possibly your password the first time.  when you want to release a new version, right click on your folder, and choose "Export".  you'll be prompted for a folder to save to, you probably just want to make a folder on your desktop.  This just copies all the files except the <code>.svn</code> folders, so you can zip it up and upload it to sourceforge via FTP.  then just tag the new version, and you're all set.  You'll probably also want to post about it on your development blog, which I'll explain how to set up in <a href="http://sunburntkamel.archgfx.net/2007/03/04/sfnet-pt-2-setting-up-a-demo-site/">part 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://archgfx.net/blog/2007/geek/blogging/hosting-a-theme-on-sourceforge-pt-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Save your contact page from spam</title>
		<link>http://archgfx.net/blog/2007/geek/blogging/save-your-contact-page-from-spam</link>
		<comments>http://archgfx.net/blog/2007/geek/blogging/save-your-contact-page-from-spam#comments</comments>
		<pubDate>Thu, 18 Jan 2007 18:59:39 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://archgfx.net/blog/2007/asides/save-your-contact-page-from-spam</guid>
		<description><![CDATA[there are a couple of different methods for blocking email harvesting bots from your contact page. Some involve javascript and obfuscating the email address. some involve putting the address in an image. my new favorite trick involves both. first, go get your email address turned into escaped HTML characters. Take the code they give you, [...]]]></description>
			<content:encoded><![CDATA[<p>there are a couple of different methods for blocking email harvesting bots from your contact page.  Some involve javascript and obfuscating the email address.  some involve putting the address in an image.  my new favorite trick involves both.<br />
first, go <a href="http://www.golivecentral.com/pages/txttut/scramble.shtml">get your email address turned into escaped <acronym title='HyperText Markup Language'><span class='caps'>HTML</span></acronym> characters</a>.  Take the code they give you, and wrap it in a span with a specific class, and add the same class to the link:</p>
<pre>&lt;span class="jsmail"&gt;&lt;!--
document.write("&lt;a href='mailto:<code><font color="red">put your scrambled address here</font></code>' class='jsmail'&gt; wp-admin [at] archgfx [dot] net&lt;/a&gt;"))
// --&gt; 

&lt;/script&gt;

&lt;/span&gt;</pre>
<p>I also changed the 'contact us!' text to a human readable, but not copyable version of the email address.  Now, <a href="http://safemail.justlikeed.net/">get your email turned into an image</a>, and we're going to use the image in <acronym title='Cascading Style Sheets'><span class='caps'>CSS</span></acronym>, so that even if a real person is browsing the site with javascript disabled, they'll still see the email address:</p>
<pre>
.jsmail {

display: block;

width: 129px;

height: 11px;

background: url('http://safemail.justlikeed.net/e/dd6330802be7d20f41dc95336e2acbfa.png') no-repeat 0 0;

text-indent: -9000px;

}</pre>
<p>i like it.  it's not completely accessible, but it's pretty good.  it's reliable, and it won't be confusing to people with older browsers or strict security settings.  <a href="http://www.archgfx.net/aspnet_client/obfuscated1.html">Here's an example</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://archgfx.net/blog/2007/geek/blogging/save-your-contact-page-from-spam/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

