<?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>Mental Note: Change This Title &#187; Nerd</title>
	<atom:link href="http://www.crccheck.com/blog/category/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crccheck.com/blog</link>
	<description>And change this tagline too</description>
	<lastBuildDate>Tue, 07 Sep 2010 06:29:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Weekend Hack</title>
		<link>http://www.crccheck.com/blog/2010/08/weekend-hack/</link>
		<comments>http://www.crccheck.com/blog/2010/08/weekend-hack/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 23:02:47 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=154</guid>
		<description><![CDATA[A few days ago, I learned about a map visualization libary called Polymaps from FlowingData (Design advanced online and interactive maps with Polymaps). This weekend, I resolved to play with it and come up with something useful.
The Texas Tribune has a neat Flash based map of county-by-county election turnouts. My goal for this weekend&#8230; make [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, I learned about a map visualization libary called Polymaps from FlowingData (<a href="http://flowingdata.com/2010/08/20/design-advanced-online-and-interactive-maps-with-polymaps/" target="_blank">Design advanced online and interactive maps with Polymaps</a>). This weekend, I resolved to play with it and come up with something useful.</p>
<p>The Texas Tribune has a neat Flash based map of <a href="http://www.texastribune.org/library/data/texas-statewide-general-election-turnout/" target="_blank">county-by-county election turnouts</a>. My goal for this weekend&#8230; make a Polymaps version. My version can be found here: <a href="http://crccheck.com/map/">http://crccheck.com/map/</a>.</p>
<p>The data source I found for counties didn&#8217;t let me limit it to just Texas, so a lot of counties outside Texas end up getting colored. The data source for the election data is from the Texas Tribune, and the only processing I had to do with it is to change the case to make it consistent with my other data source. I guess I could have just made it case-insensitive too.</p>
<p>Chrome renders the map much better than FireFox. It supports the SVG title element and takes less CPU.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2010/08/weekend-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodebaseHQ Tickets+ for FireFox</title>
		<link>http://www.crccheck.com/blog/2010/07/codebasehq-tickets-for-firefox/</link>
		<comments>http://www.crccheck.com/blog/2010/07/codebasehq-tickets-for-firefox/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 04:20:15 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xpath]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=146</guid>
		<description><![CDATA[What&#8217;s this? Another release already? Well yes. I&#8217;ve been working on this project, and we use Codebase for project management. And the whole time, I kept thinking, &#8220;Why can&#8217;t I sort these tickets?!&#8221;. Apparently, I&#8217;m not the only one, because I overheard some other people say the same thing so I decided to make a [...]]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s this? Another release already? Well yes. I&#8217;ve been working on this project, and we use Codebase for project management. And the whole time, I kept thinking, &#8220;Why can&#8217;t I sort these tickets?!&#8221;. Apparently, I&#8217;m not the only one, because I overheard some other people say the same thing so I decided to make a <a href="http://userscripts.org/scripts/show/82151" target="_blank">Greasemonkey script</a>.</p>
<p>While there is a mechanism to sort, it requires modifying your search query and a page refresh. My script not only does all that live, but it also turns the search box into a live-search, which makes finding a particular ticket fast. To accompany all this, I also de-paginate the results so all the tickets are in one page. This could potentially cause problems, because some projects might have thousands of tickets; but that&#8217;s a problem for another day.</p>
<p>While I have been on a jQuery spree recently, I made sure not to use it for this Greasemonkey script. Even though there is a lot of DOM manipulation, I rely on Xpath and JavaScript 1.6 Arrays. The script is simple enough where it&#8217;s easy enough to convert to jQuery if needed.</p>
<p>If you use FireFox, Greasemonkey, and CodebaseHQ, Give <a href="http://userscripts.org/scripts/show/82151" target="_blank">CodebaseHQ Tickets+</a> a shot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2010/07/codebasehq-tickets-for-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Next adventure in HTML Canvas</title>
		<link>http://www.crccheck.com/blog/2009/11/next-adventure-in-html-canvas/</link>
		<comments>http://www.crccheck.com/blog/2009/11/next-adventure-in-html-canvas/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 03:21:15 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Mental Note: Add Category]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=112</guid>
		<description><![CDATA[This one comes with a live demo!

One of the biggest problems with my  last Canvas experiment is that if you put text labels over points of interest, they quickly clutter up and become difficult to read. In this demo, I take a list of labels and the coordinates they belong, then I treat each label [...]]]></description>
			<content:encoded><![CDATA[<p>This one comes with a <a href="http://crccheck.com/demo01">live demo</a>!</p>
<p style="text-align: center;"><a href="http://crccheck.com/demo01"><img class="aligncenter size-full wp-image-113" title="demo01" src="http://www.crccheck.com/blog/wp-content/uploads/2009/11/demo01.png" alt="demo01" width="378" height="240" /></a></p>
<p>One of the biggest problems with my  last <a href="http://www.crccheck.com/blog/2009/09/teaching-myself-the-html-canvas-element/">Canvas experiment</a> is that if you put text labels over points of interest, they quickly clutter up and become difficult to read. In this demo, I take a list of labels and the coordinates they belong, then I treat each label as a like-charged ion and they automatically repel each other and find their own non-overlapping positions. I also put a spring force between each label (visualized by the red line) to its original position so they don&#8217;t stray too far. There are also some visual embellishments specific for the application.</p>
<p>In my next iteration, I&#8217;m going to try and properly attach events to each particle. I have rudimentary drag and drop now, but it&#8217;s not robust enough for other ideas I want to add. I also want to be able to add uncharged particles and have wind and gravity. So I can make the whole thing a proper particle playground.</p>
<p>Note: since the code was ripped from a Greasemonkey script, it&#8217;s FireFox only.</p>
<p>Update 18  July, 2010: I&#8217;ve made it a little more interactive, re-ported a more up to date version of the code, and made it somewhat compatible with Safari and Chrome.</p>
<p><img id="myFxSearchImg" style="border: medium none; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" alt="" width="24" height="24" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/11/next-adventure-in-html-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teaching Myself the HTML Canvas Element</title>
		<link>http://www.crccheck.com/blog/2009/09/teaching-myself-the-html-canvas-element/</link>
		<comments>http://www.crccheck.com/blog/2009/09/teaching-myself-the-html-canvas-element/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 05:25:10 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=101</guid>
		<description><![CDATA[I rewrote some JavaScript of mine to use &#60;canvas&#62; instead of a &#60;pre&#62; block to display some data from a database scraped from a webpage. So far, it&#8217;s looking a lot nicer:
I can do all sorts of other cool visualizations of the data too. Some things I learned that weren&#8217;t in the Mozilla documentation:
save(), restore(), [...]]]></description>
			<content:encoded><![CDATA[<p>I rewrote some JavaScript of mine to use &lt;canvas&gt; instead of a &lt;pre&gt; block to display some data from a database scraped from a webpage. So far, it&#8217;s looking a lot nicer:<br />
<img class="aligncenter size-medium wp-image-102" title="CanvasTest1" src="http://www.crccheck.com/blog/wp-content/uploads/2009/09/CanvasTest1-300x300.png" alt="CanvasTest1" width="300" height="300" />I can do all sorts of other cool visualizations of the data too. Some things I learned that weren&#8217;t in the Mozilla documentation:</p>
<p>save(), restore(), scale(), and translate() are useful, but when you want to do operations about a point other than the origin, setTransform() does a much nicer job when you use a point other 0,0 for the origin. I could have sworn there was a way that didn&#8217;t involve me doing math to do it, but I couldn&#8217;t find it and ended up just doing the math to get setTransform to work.</p>
<p>scale() does a really horrible job. I abandoned using tiled images and scaled Text. As you can see, I went with a solid background, and in that picture I removed for aesthetics &#8212; but I ended up writing my own custom method for scaling text (I had to do more math!).</p>
<p>I&#8217;m not sure how far I&#8217;ll take this, or in what direction, but I&#8217;ll have fun along the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/09/teaching-myself-the-html-canvas-element/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blast from the Past [2000] my !hme script</title>
		<link>http://www.crccheck.com/blog/2009/08/blast-from-the-past-script/</link>
		<comments>http://www.crccheck.com/blog/2009/08/blast-from-the-past-script/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 06:03:10 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Life=Boring]]></category>
		<category><![CDATA[Mental Note: Add Category]]></category>
		<category><![CDATA[Neato!]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=87</guid>
		<description><![CDATA[I completely forgot about this mIRC script I made back in 2000, but apparently I was ahead of my time. I wrote a crowdsourcing script before there was crowdsourcing. The script was very simple, query it with !hme  &#60;name of show&#62; and the script replies with how many episodes it thinks are in the [...]]]></description>
			<content:encoded><![CDATA[<p>I completely forgot about this mIRC script I made back in 2000, but apparently I was ahead of my time. I wrote a crowdsourcing script before there was crowdsourcing. The script was very simple, query it with !hme  &lt;name of show&gt; and the script replies with how many episodes it thinks are in the show. To contribute, anyone could say !hme.add  &lt;name of show&gt; &lt;number of episodes&gt;. I did have a blacklist of people who couldn&#8217;t add, but I don&#8217;t think I ever had to use it. You didn&#8217;t care about the accuracy of the name of the shows, because the script searched the best fit, and if there were duplicate variations (Evangelion vs Neon Genesis Evangelion), it didn&#8217;t matter. I just stored extra information. The last time the script was used&#8230; 2002&#8230; it had 500 entries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/08/blast-from-the-past-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>print_r() for javascript</title>
		<link>http://www.crccheck.com/blog/2009/07/print_r-for-javascript/</link>
		<comments>http://www.crccheck.com/blog/2009/07/print_r-for-javascript/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 22:10:33 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Finish Writing Me Plz]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=77</guid>
		<description><![CDATA[I typically just use uneval() to figure out what&#8217;s inside an array/object, but what about when it&#8217;s large and heterogeneous? I wanted to find a version of php&#8217;s print_r() for JavaScript. Here is link to the Original Version of dump() I based mine off of:
www.openjs.com/scripts/others/dump_function_php_print_r.php
When I tried it, the first thing I noticed what that [...]]]></description>
			<content:encoded><![CDATA[<p>I typically just use uneval() to figure out what&#8217;s inside an array/object, but what about when it&#8217;s large and heterogeneous? I wanted to find a version of php&#8217;s <a href="http://us.php.net/%20print_r" target="_blank">print_r()</a> for JavaScript. Here is link to the <a href="http://www.openjs.com/scripts/others/dump_function_php_print_r.php" target="_blank">Original Version of dump()</a> I based mine off of:</p>
<p style="text-align: center;"><a href="http://www.openjs.com/scripts/others/dump_function_php_print_r.php" target="_blank">www.openjs.com/scripts/others/dump_function_php_print_r.php</a></p>
<p style="text-align: left;">When I tried it, the first thing I noticed what that it put quotes around everything, and that long strings with line breaks got messy, so I did a quick adaptation to suit my immediate needs and came up with this:</p>
<pre>function dump(arr,level) {
  function magicquotes(value) { return (isNaN(value)) ? '"' + value.replace(/\n/g,"\n"+indent) + '"' : value; }
  level = level | 0;
  var indent = new Array(level+1).join("\t"), dumped_text = "";

  if(typeof(arr) == 'object') { //Array/Hashes/Objects
    for(var item in arr) {
      var value = arr[item];

      if(typeof(value) == 'object')
          dumped_text += indent + "'" + item + "' :\n" + dump(value,level+1);
      else
          dumped_text += indent + "'" + item + "' =&gt; " + magicquotes(value) + "\n";
    }
  } else { //Stings/Chars/Numbers etc.
    dumped_text = "===&gt;"+arr+"&lt;===("+typeof(arr)+")";
  }
  return dumped_text;
}</pre>
<p>I also found links to many other print_r(), var_dump() equivalents, but they either depended on write, were overly complicated, or returned a lot of excess text I wasn&#8217;t interested in.</p>
<p>So why not just call it print_r ? Well, the original I copied was called dump, and I&#8217;ve always been annoyed typing that underscore, so I just didn&#8217;t change it.</p>
<p>Update: found another alternative. It&#8217;s really long and puts out a lot of extraneous information, but it&#8217;s worth looking at: <a href="http://wiki.greasespot.net/Code_snippets#Dump_the_properties_of_an_object">wiki.greasespot.net/Code_snippets#Dump_the_properties_of_an_object</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/07/print_r-for-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nano review of JavaScript frameworks (YUI, jQuery, moo)</title>
		<link>http://www.crccheck.com/blog/2009/07/nano-review-of-js-frameworks/</link>
		<comments>http://www.crccheck.com/blog/2009/07/nano-review-of-js-frameworks/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 18:07:11 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=46</guid>
		<description><![CDATA[Having gone through these three frameworks, I&#8217;m going to say something I wish other review sites said: For each purpose, there is a &#8220;best&#8221; framework. It all depends on context.
The Yahoo! User Interface Library (YUI)
If you&#8217;re building a rich web application from scratch, YUI will have very thorough tools to do anything you want. As [...]]]></description>
			<content:encoded><![CDATA[<p>Having gone through these three frameworks, I&#8217;m going to say something I wish other review sites said: For each purpose, there is a &#8220;best&#8221; framework. It all depends on context.</p>
<p><a href="http://developer.yahoo.com/yui/" target="_blank">The Yahoo! User Interface Library (YUI)</a></p>
<p style="padding-left: 30px;">If you&#8217;re building a rich web application from scratch, YUI will have very thorough tools to do anything you want. As long as you survive writing the code.</p>
<p><a href="http://mootools.net/" target="_blank">Mootools</a></p>
<p style="padding-left: 30px;">If you&#8217;re looking to add a little ajax and dhtml to your exisiting web page, or need a lightweight, high performance library, go with Mootools.</p>
<p><a href="http://jquery.com/" target="_blank">jQuery</a></p>
<p style="padding-left: 30px;">Somewhere between Mootools and YUI, jQuery has a lot of  features and is very tidy to code.</p>
<p>Perhaps we can compare the philosophies behind each framework by examining their respective homepages:</p>
<table border="0">
<tbody>
<tr>
<td></td>
<th>YUI</th>
<th>jQuery</th>
<th>Mootools</th>
</tr>
<tr>
<td></td>
<td><img class="alignnone size-full wp-image-52" style="border: 0pt none; margin: 0px;" title="YUI Homepage" src="http://www.crccheck.com/blog/wp-content/uploads/2009/07/yui.png" alt="YUI" width="200" height="160" /></td>
<td><img class="alignnone size-full wp-image-51" style="border: 0pt none; margin: 0px;" title="jquery" src="http://www.crccheck.com/blog/wp-content/uploads/2009/07/jquery.png" alt="jquery" width="200" height="160" /></td>
<td><img class="alignnone size-full wp-image-52" style="border: 0pt none; margin: 0px;" title="moo" src="http://www.crccheck.com/blog/wp-content/uploads/2009/07/moo.png" alt="moo" width="200" height="160" /></td>
</tr>
<tr>
<th>Slogan</th>
<td><span style="font-size: x-small;">The YUI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.</span></td>
<td><span style="font-size: x-small;">The Write Less, Do More, JavaScript Library</span></td>
<td><span style="font-size: x-small;">a compact javascript framework</span></td>
</tr>
<tr>
<th>Size</th>
<td>8.91KB</td>
<td>13.41KB</td>
<td>7.33KB</td>
</tr>
<tr>
<th>Comment</th>
<td>Look at how busy and dated their homepage is&#8230; but it is compact.</td>
<td>A very slick page, but underneath it, it is a little bloated.</td>
<td>Simple and clean.</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/07/nano-review-of-js-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using XPath to find email address links</title>
		<link>http://www.crccheck.com/blog/2009/02/xpath-to-find-email-address-links/</link>
		<comments>http://www.crccheck.com/blog/2009/02/xpath-to-find-email-address-links/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 22:46:55 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Neato!]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=31</guid>
		<description><![CDATA[I wanted to write a Greasemonkey script to modify all mailto: links on a page, but to do that, I have to find them first.
Here&#8217;s my first attempt:
//a[@href]/text()[contains(.,"@")]
It&#8217;s pretty bad. I wanted to find links starting with &#8220;mailto:&#8221; but couldn&#8217;t figure out how to operate on the href attribute.
second attempt:
//a/@href[contains(.,"mailto:")]/..
Here you can see that I [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to write a Greasemonkey script to modify all mailto: links on a page, but to do that, I have to find them first.</p>
<p>Here&#8217;s my first attempt:</p>
<p style="padding-left: 30px;">//a[@href]/text()[contains(.,"@")]</p>
<p>It&#8217;s pretty bad. I wanted to find links starting with &#8220;mailto:&#8221; but couldn&#8217;t figure out how to operate on the href attribute.</p>
<p>second attempt:</p>
<p style="padding-left: 30px;">//a/@href[contains(.,"mailto:")]/..</p>
<p>Here you can see that I managed to operate on the href attribute, and then back back up to the a node. I learned how to select the attribute, instead of using the attribute to select the node.</p>
<p>third attempt:</p>
<p style="padding-left: 30px;">//a[contains(@href,"mailto:")]</p>
<p>Simplified even further!</p>
<p>fourth attempt:</p>
<p style="padding-left: 30px;">//a[starts-with(@href,"mailto:")]</p>
<p>I knew there was a starts with function&#8230; I just had to look it up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2009/02/xpath-to-find-email-address-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Search for a TODO List</title>
		<link>http://www.crccheck.com/blog/2008/10/the-search-for-a-todo-list/</link>
		<comments>http://www.crccheck.com/blog/2008/10/the-search-for-a-todo-list/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 05:14:43 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Life=Boring]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=16</guid>
		<description><![CDATA[I used to use this Greasemonkey script for my todo list, but it stopped working months ago with no fix in sight.
A good place to start looking for things that let you pretend to be productive is lifehacker, and they do not disappoint.
http://lifehacker.com/399985/five-best-to+do-list-managers
Some factors I&#8217;m considering:

I don&#8217;t want to register for yet another service (Remember [...]]]></description>
			<content:encoded><![CDATA[<p>I used to use this <a href="http://userscripts.org/scripts/show/9179">Greasemonkey script</a> for my todo list, but it stopped working months ago with no fix in sight.</p>
<p>A good place to start looking for things that let you pretend to be productive is lifehacker, and they do not disappoint.</p>
<p>http://lifehacker.com/399985/five-best-to+do-list-managers</p>
<p>Some factors I&#8217;m considering:</p>
<ul>
<li>I don&#8217;t want to register for yet another service (Remember the Milk)</li>
<li>I don&#8217;t want to use something unless I already use it on a regular basis (Outlook)</li>
<li>Must exist &#8220;in the ether&#8221;. That is to say&#8230; I have to be able to drop it and pick it up wherever I go (pen and paper)</li>
<li>That kind of leaves plain text&#8230; todo.txt</li>
</ul>
<p>Althought todo.txt sounds nice. With dropbox, my todolist can go whereever I go, but I use Gmail more than Notepad. I think I&#8217;ll try using a gmail draft message(s) for now. I might even be able to make it one of my quicklinks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2008/10/the-search-for-a-todo-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Economics and Dishwashing</title>
		<link>http://www.crccheck.com/blog/2008/08/economics-and-dishwashing/</link>
		<comments>http://www.crccheck.com/blog/2008/08/economics-and-dishwashing/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 05:29:25 +0000</pubDate>
		<dc:creator>crccheck</dc:creator>
				<category><![CDATA[Life=Boring]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://www.crccheck.com/blog/?p=15</guid>
		<description><![CDATA[So I just realized that the way I do dishes is influenced by basic supply and demand. Here&#8217;s the skinny: I don&#8217;t wash cups and utensils. Because I believe my roommates are too loose and wasteful in the use of both. So by refusing to wash them, I artificially decrease the supply of available cups [...]]]></description>
			<content:encoded><![CDATA[<p>So I just realized that the way I do dishes is influenced by basic supply and demand. Here&#8217;s the skinny: I don&#8217;t wash cups and utensils. Because I believe my roommates are too loose and wasteful in the use of both. So by refusing to wash them, I artificially decrease the supply of available cups and utensils, thus creating a perception of a scarcity of resources, and forcing them to use fewer cups and utensils.</p>
<p>I also do all sorts of ROI analyses when I do dishes. How to arrange them so that they maximize the excess falloff water (stack them from largest size to smallest, and in increasing concavity). And how to minimize the total amount of effort required to get an item clean (if no lipids touched it, clean it right away, otherwise it will get dirtier before it gets cleaner).</p>
<p>I need more free time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crccheck.com/blog/2008/08/economics-and-dishwashing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
