<?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>JOEZACK.COM &#187; Projects</title>
	<atom:link href="http://joezack.com/index.php/category/programming/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://joezack.com</link>
	<description>Code Musings and Such</description>
	<lastBuildDate>Thu, 02 Sep 2010 00:36:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Delving into C#</title>
		<link>http://joezack.com/index.php/2010/01/07/delving-into-c-sharp/</link>
		<comments>http://joezack.com/index.php/2010/01/07/delving-into-c-sharp/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 11:02:31 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[meta-programming]]></category>
		<category><![CDATA[project euler]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=1316</guid>
		<description><![CDATA[This year I've decided to really get into C#. My .NET experience is shall at best so aiming to rectify, I picked up C# in Depth and commenced skimming! Now, I've made my fair share of M$ snide asides, but I'm having a hard time coming to gripes with C#. Everything I run into either [...]]]></description>
			<content:encoded><![CDATA[<p>This year I've decided to really get into C#. My .NET experience is shall at best so aiming to rectify, I picked up <a href="http://www.amazon.com/C-Depth-Jon-Skeet/dp/1933988363">C# in Depth</a> and commenced skimming!</p>
<p>Now, I've made my fair share of M$ snide asides, but I'm having a hard time coming to gripes with C#. Everything I run into either "just works" or exceeds my expectations. And the cool features are in fact, quite cool! Color me impressed!</p>
<p><div id="attachment_1326" class="wp-caption alignleft" style="width: 310px"><img src="http://joezack.com/wp-content/uploads/2010/01/noob1-300x282.jpg" alt="Noob!" title="Noob!" width="300" height="282" class="size-medium wp-image-1326" /><p class="wp-caption-text">Noob!</p></div><br />
For fun I rewrote a few of my <a href="http://joezack.com/index.php/tag/project-euler/">Project Euler Solutions</a> to buff up on the syntax. After I got the semi-colons and brackets all figured out, I moved on to something a little bigger.</p>
<p>I wanted a simple program to run and benchmark my solutions, so I wouldn't have to do as much leg work every time I converted a problem. I figured this would be a simple enough thing to do, and it would provide a good foundation for a future gui application and beginning unit testing.</p>
<p>I wanted to share some particulars that I thought were pretty cool, you can <a href="<a href="http://my-project-euler-solutions.googlecode.com/svn/tags/c-sharp-initial-release/">grab the code I'm talking about from the google code repository</a>, and follow along...or something.<br />
<br/><br />
<strong>Generics, Delegates and Lambdas</strong><br />
Generic Collections provide a data structure that I can access and use just like an array, but also provides methods for dealing with delegates.</p>
<p>Delegates are very similar to closures, blocks, procs, and lambdas like I've worked with in other languages, so the transition was smooth. The lambda syntax was particularly reminiscent of <a href="http://www.secnetix.de/olli/Python/list_comprehensions.hawk">pythonic list comprehensions</a>. </p>
<p>Thanks to delegates, I can turn this:
<pre name="code" class="c#">
var matchingTypes = new List&lt;Type&gt;();
foreach(t in CurrentTypes) {
	if(t.IsSubclassOf(parentType) {
		matchingTypes.Add(t);
	}
}
return matchingTypes;</pre>
<p>Into this:</p>
<pre name="code" class="c#">return CurrentTypes.FindAll(
	delegate(Type t)
	{
		return t.IsSubclassOf(parentType);
	}
);</pre>
<p>And finally, via lambda, to this!</p>
<pre name="code" class="c#">return CurrentTypes.FindAll(
	t =&gt; t.IsSubclassOf(parentType)
);</pre>
<p>Not too shabby, eh?</p>
<p><strong>Reflection</strong><br />
Most of my programming has been in ColdFusion, JavaScript and Ruby. There's been a little bit of this and a little bit of that peppered in there, particually C and Java while I was at <a href="http://www.ucf.edu/">UCF</a>, but for the most part I've enjoyed working with dynamic and/or interpreted languages. Meta-programming is common in these types of languages, but I was surprised and impressed to read up on reflection. In this case, reflection allows me to dynamically detect and run my problems, which makes it easier (and cleaner) for me to add new solutions.</p>
<p>Here's a simplified "ClassMaster" class I use to wrap my reflection calls for listing and creating classes, so you can see what I'm on about:</p>
<pre name="code" class="c#">class ClassMaster
{
	private Assembly CurrentAssembly { get; set; }
	private List&lt;Type&gt; CurrentTypes { get; set; }

	public ClassMaster()
	{
		CurrentAssembly = Assembly.GetExecutingAssembly();
		CurrentTypes = new List&lt;Type&gt;(CurrentAssembly.GetTypes());
	}

	// should probably take arguments to pass thru...somehow
	public Object CreateClass(Type classType)
	{
		return CurrentAssembly.CreateInstance(classType.FullName);
	}

	public List&lt;Type&gt; getTypesByParentClass(Type parentType)
	{
		return CurrentTypes.FindAll(
			t =&gt; t.IsSubclassOf(parentType)
		);
	}
}</pre>
<p>That's it for now. I'll be looking into LINQ and unit testing in the next couple weeks, and then I'm on to the gui. ASP, SilverLight, and WPF here I come!</p>
<p>Here are those links again:<br />
<a href="http://my-project-euler-solutions.googlecode.com/svn/tags/c-sharp-initial-release/">Release</a><br />
<a href="http://my-project-euler-solutions.googlecode.com/svn/trunk/c%23/">Latest Version</a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;title=Delving+into+C%23"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;title=Delving+into+C%23"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;title=Delving+into+C%23"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;headline=Delving+into+C%23"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Delving+into+C%23&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Delving+into+C%23&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Delving+into+C%23&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Delving+into+C%23&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Delving+into+C%23&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;title=Delving+into+C%23&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2010%2F01%2F07%2Fdelving-into-c-sharp%2F&amp;title=Delving+into+C%23"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2010/01/07/delving-into-c-sharp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing GeoHashFlash!</title>
		<link>http://joezack.com/index.php/2009/06/14/announcing-geohashflash/</link>
		<comments>http://joezack.com/index.php/2009/06/14/announcing-geohashflash/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 20:52:10 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[geohashflash]]></category>
		<category><![CDATA[geohashing]]></category>
		<category><![CDATA[xkcd]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=1142</guid>
		<description><![CDATA[Okay, so it's hardly an announcement, but I've been working on a flex app for determining your daily official xkcd meetup location via the geohashing method described in comic 426. Much love to: Randall Munroe for beloved xkcd Google, for their lovely Maps API and documentation. Peeron for the help with the Dow Jones snapshots. [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so it's hardly an announcement, but I've been working on a flex app for determining your daily official <a href="http://xkcd.com/">xkcd</a> meetup location via the <a href="http://wiki.xkcd.com/geohashing/Main_Page">geohashing</a> method described in <a href="http://xkcd.com/426/">comic 426</a>.</p>
<p>Much love to:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Randall_Munroe">Randall Munroe</a> for beloved <a href="http://xkcd.com/">xkcd</a></li>
<li>Google, for their lovely <a href="http://code.google.com/apis/maps/">Maps API and documentation</a>.</li>
<li>Peeron for the help with the <a href="http://irc.peeron.com/xkcd/map/data/2009/06/10">Dow Jones snapshots</a>.</li>
<li>Geoffrey Williams for his <a href="http://gsolofp.blogspot.com/2006/01/actionscript-3-md5-and-sha1.html">MD5 AS conversion</a></li>
</ul>
<p>I'm still learning Flex and this is my first adventure with <a href="http://code.google.com/apis/maps/">Google Map</a>, so it's rough. And there's still a lot of work to do, like, validation, error checking, or testing for example. But hey, first pass!</p>
<p></p>
<div align="center">
<iframe src="http://joezack.com/downloads/code/flex/GeoHashFlash/GeoHashFlash_v9.6.13/bin-release/GeoHashFlash.html" width="510" height="535"></iframe>
</div>
<p></p>
<p>Here's the code for the actual GeoHash class. I have "view source" disabled because it currently contains my API key, but you can <a href="http://joezack.com/downloads/code/flex/GeoHashFlash/GeoHashFlash_v9.6.13.zip">download the key-less zip.</a></p>
<pre name="code" class="actionscript">public class GeoHasher {

	private var date:Date;
	private var dow:Number;
	private var latitude:Number;
	private var longitude:Number;

	private var dateHash:String;
	private var dowHash:String;

	private var ready:Boolean;

	public function GeoHasher() {
		this.ready = false;
	}

	public function reset(
		date:Date,
		dow:Number,
		latitude:Number,
		longitude:Number
	):void {
		this.date      = date;
		this.dow       = dow;
		this.latitude  = latitude;
		this.longitude = longitude;

		this.ready     = true;

		setHashValues();
	}

	public function getDestination():Object {
		if(ready) {
			var hash:Object = getHashAsDecimal();
			return {
				latitude: toOrdinal(latitude, hash.date),
				longitude: toOrdinal(longitude, hash.dow)
			};
		}
		return { latitude: "", longitude: "" };
	}

	// privates

	private function setHashValues():void {
		var formattedDate:String = Utilities.dateFormat(date,"-");
		var string:String = formattedDate + "-" + dow.toString();
		var hash:String   = MD5.encrypt(string); 

		dateHash = hash.slice(0,hash.length / 2);
		dowHash  = hash.slice(hash.length / 2,hash.length);
	}

	private function toOrdinal(pre:Number, post:Number):String {
		return (Math.floor(pre) + post).toString();
	}

	private function getHash():Object {
		return { date: dateHash, dow: dowHash };
	}

	private function getHashAsDecimal():Object {
		var hash:Object = getHash();
		return {
				date: Utilities.fractionalHexToDecimal(hash.date),
				dow: Utilities.fractionalHexToDecimal(hash.dow)
		};
	}
}</pre>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;title=Announcing+GeoHashFlash%21"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;title=Announcing+GeoHashFlash%21"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;title=Announcing+GeoHashFlash%21"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;headline=Announcing+GeoHashFlash%21"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Announcing+GeoHashFlash%21&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Announcing+GeoHashFlash%21&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Announcing+GeoHashFlash%21&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Announcing+GeoHashFlash%21&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Announcing+GeoHashFlash%21&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;title=Announcing+GeoHashFlash%21&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F14%2Fannouncing-geohashflash%2F&amp;title=Announcing+GeoHashFlash%21"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/06/14/announcing-geohashflash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mid Year Resolutions</title>
		<link>http://joezack.com/index.php/2009/06/10/mid-years-resolutions/</link>
		<comments>http://joezack.com/index.php/2009/06/10/mid-years-resolutions/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 00:49:59 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[chatter]]></category>
		<category><![CDATA[resolutions]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=1119</guid>
		<description><![CDATA[I've always liked the month of June. It's my birth month, but it's also close enough to the middle of the year, which makes it a great time to re-evaluate my New Years Resolutions. I've done pretty terrible on that list. However, I've made a lot of progress in areas I hadn't anticipated 6 months [...]]]></description>
			<content:encoded><![CDATA[<p>I've always liked the month of June. It's my birth month, but it's also close enough to the middle of the year, which makes it a great time to re-evaluate my <a href="http://joezack.com/index.php/2008/12/31/2009-new-years-resolutions/">New Years Resolutions</a>.</p>
<p>I've done pretty terrible on that list. However, I've made a lot of progress in areas I hadn't anticipated 6 months ago.</p>
<ul>
<li>I'm feeling pretty comfortable with my <a href="http://joezack.com/index.php/tag/ruby/">Ruby</a> and <a href="http://joezack.com/index.php/tag/java/">Java</a></li>
<li>I've ascended to the first level of <a href="http://joezack.com/index.php/tag/project-euler/">Project Euler</a></li>
<li>I've been tinkering around a bit with <a href="http://joezack.com/index.php/tag/flex/">Flex</a> and <a href="http://joezack.com/index.php/tag/actionscript/">ActionScript</a></li>
<li>I've kept up with <a href="http://joezack.com">this blog</a>, in fact this is post #100</li>
<li>I've made it to a few <a href="http://adogo.us/">user group</a> <a href="http://orug.org/">meetings</a>, <a href="http://events.universalmind.com/"> Flash Camp Orlando</a> and <a href="http://cfunited.com/2009/">CFUnited</a> is coming up</li>
<li>I got to see a <a href="http://www.flickr.com/photos/thejoezack/sets/72157617935128556/">few</a> <a href="http://www.flickr.com/photos/thejoezack/sets/72157615275987364/">new</a> <a href="http://www.flickr.com/photos/thejoezack/sets/72157613463476535/">things</a>, and catch up with a few <a href="http://www.flickr.com/photos/thejoezack/sets/72157617929327370/">old</a> <a href="http://www.flickr.com/photos/thejoezack/sets/72157618636845709/">friends</a></li>
<li><a href="http://www.caxiamgroup.com/">Works been great</a>, we've actually hired a few people this year!</li>
</ul>
<p>All in all, it's been a pretty good year and things are looking up!</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;title=Mid+Year+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;title=Mid+Year+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;title=Mid+Year+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;headline=Mid+Year+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Mid+Year+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Mid+Year+Resolutions&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Mid+Year+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Mid+Year+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Mid+Year+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;title=Mid+Year+Resolutions&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fmid-years-resolutions%2F&amp;title=Mid+Year+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/06/10/mid-years-resolutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Game of Life Pt 2</title>
		<link>http://joezack.com/index.php/2009/06/10/flex-game-of-life-pt-2/</link>
		<comments>http://joezack.com/index.php/2009/06/10/flex-game-of-life-pt-2/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 00:37:41 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[game of life]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=1116</guid>
		<description><![CDATA[I made a few user interface updates to my crappy Flex version of Conway's Game of Life. The board now wraps, and I added a Timer with an adjustable delay via the lovely HSlider control. I wanted to replace the cells with Sprites but it's giving me grief and I want to play The Sims. [...]]]></description>
			<content:encoded><![CDATA[<div align="center"><iframe width="425" height="425" src="http://joezack.com/downloads/code/flex/GameOfLife_v9.6.9/GameOfLife.html"></iframe></div>
<p><br/></p>
<p>I made a few user interface updates to my <a href="http://joezack.com/downloads/code/flex/GameOfLife_v9.6.9/GameOfLife.html">crappy Flex version</a> of <a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life">Conway's Game of Life</a>.</p>
<p>The board now wraps, and I added a <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=08_Dates_and_times_4.html">Timer</a> with an adjustable delay via the lovely <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=controls_14.html">HSlider</a> control. I wanted to replace the cells with Sprites but it's giving me grief and I want to play <a href="http://www.thesims3.com/">The Sims</a>.</p>
<p>I'm still making my mind up about Flex, but I have to admit that aside from the Sprite issue I've been pleasantly surprised at how easy everything's been coming together.</p>
<p>You can view source on the application, or you can <a href="http://joezack.com/downloads/code/flex/GameOfLife_v9.6.9.zip">download the zip</a>.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;title=Flex+Game+of+Life+Pt+2"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;title=Flex+Game+of+Life+Pt+2"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;title=Flex+Game+of+Life+Pt+2"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;headline=Flex+Game+of+Life+Pt+2"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Flex+Game+of+Life+Pt+2&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Flex+Game+of+Life+Pt+2&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Flex+Game+of+Life+Pt+2&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Flex+Game+of+Life+Pt+2&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Flex+Game+of+Life+Pt+2&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;title=Flex+Game+of+Life+Pt+2&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F06%2F10%2Fflex-game-of-life-pt-2%2F&amp;title=Flex+Game+of+Life+Pt+2"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/06/10/flex-game-of-life-pt-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fetching Local Tweets in Ruby</title>
		<link>http://joezack.com/index.php/2009/04/29/fetching-local-tweets-in-ruby/</link>
		<comments>http://joezack.com/index.php/2009/04/29/fetching-local-tweets-in-ruby/#comments</comments>
		<pubDate>Fri, 01 May 2009 13:32:01 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[geocode]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=847</guid>
		<description><![CDATA[As planned, I wrote a little class incorporating Geocoder and twitter_search so you can search for tweets within x miles (or kilometers) of an address.Geocoder does an excellent job of parsing addresses and twitter_search is simple and efficient. Four thumbs up Next phase I'd like to set up a little web interface showing tweets and [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_854" class="wp-caption alignleft" style="width: 369px"><img src="http://joezack.com/wp-content/uploads/2009/04/local_tweets.jpg" alt="Tests take forever because of all the HTTPRequests" title="local_tweets" width="359" height="101" class="size-full wp-image-854" /><p class="wp-caption-text">Tests take forever because of all the HTTPRequests</p></div>As <a href="http://joezack.com/index.php/2009/04/27/searching-twitter-with-ruby">planned</a>, I wrote a little class incorporating <a href="http://geocoder.rubyforge.org/">Geocoder</a> and <a href="http://tech.puredanger.com/2009/03/30/ruby-twitter-link-script/">twitter_search</a> so you can search for tweets within x miles (or kilometers) of an address.Geocoder does an excellent job of parsing addresses and twitter_search is simple and efficient.</p>
<p>Four thumbs up</p>
<p>Next phase I'd like to set up a little web interface showing tweets and tweeters. There's something funny about hitting the internet to find out what's going on around you.</p>
<p>Here's the class, as you can see there are a few overridable defaults</p>
<pre name="code" class="ruby">require 'rubygems'
require 'geocoder'
require 'twitter_search'

class Twitter_Interface

  attr_accessor :tpp, :distance
  attr_reader   :address, :geocode
  attr          :geocoder, :client 

  def initialize addr = "", dist = "2mi", pp = 15
    @client   = TwitterSearch::Client.new
    @tpp      = pp
    @distance = dist
    @geocoder = initialize_geocoder
    set_location addr
  end

  # Could also use Yahoo API, but it requires API key.
  def initialize_geocoder geocoder = Geocoder::GeoCoderUs.new
    geocoder
  end

  def format_geocode geocode = @geocode
    if is_geocode? geocode
      return "#{geocode.latitude},#{geocode.longitude},#{@distance}"
    end
    ""
  end

  def tweets
    @client.query :geocode => format_geocode, :tpp => @tpp
  end

  def address_to_geocode addr = @address
    if addr == ""
      return ""
    end
    @geocoder.geocode addr
  end

  def is_geocode? geocode
    geocode.respond_to? "success?" and geocode.success?
  end

  def set_location addr
    @address = addr
    @geocode = address_to_geocode @address
  end

end</pre>
<p>And here's how you use it</p>
<pre name="code" class="ruby">t = Twitter_Interface.new "1600 pennsylvania ave nw washington dc"

#print the twitter query formatted geocode, default distance is 2 miles
puts t.format_geocode

#=&gt;"38.898748,-77.037684,2mi"

#fetch the Twitter_Search::Tweets within 2 miles of the white house!
tweets = t.tweets</pre>
<p><a href="http://joezack.com/downloads/code/ruby/local_tweets.zip">Download a .zip of the code / tests</a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;title=Fetching+Local+Tweets+in+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;title=Fetching+Local+Tweets+in+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;title=Fetching+Local+Tweets+in+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;headline=Fetching+Local+Tweets+in+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Fetching+Local+Tweets+in+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Fetching+Local+Tweets+in+Ruby&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Fetching+Local+Tweets+in+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Fetching+Local+Tweets+in+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Fetching+Local+Tweets+in+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;title=Fetching+Local+Tweets+in+Ruby&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F29%2Ffetching-local-tweets-in-ruby%2F&amp;title=Fetching+Local+Tweets+in+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/04/29/fetching-local-tweets-in-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gosu Extensions Update</title>
		<link>http://joezack.com/index.php/2009/04/14/gosu-extensions-update/</link>
		<comments>http://joezack.com/index.php/2009/04/14/gosu-extensions-update/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 13:33:12 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[gosu]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=760</guid>
		<description><![CDATA[I've finally finished updating my Gosu Extensions. It's far from perfect, but it's in a good spot and I'm relatively happy with it. It feels good to get something "done". Although my coding process hasn't been 100% TDD, I would say at least it's been test centric and irregardless of whether I actually do anything [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://joezack.com/wp-content/uploads/2009/04/tests_complete.jpg" alt="tests_complete" title="tests_complete" width="550" height="120" class="alignnone size-full wp-image-761" /></p>
<p>I've finally finished updating my <a href="http://code.google.com/p/gosu/">Gosu</a> <a href="http://joezack.com/index.php/2009/02/10/breakout-knock-off-in-ruby-with-gosu/">Extensions</a>. It's far from perfect, but it's in a good spot and I'm relatively happy with it. It feels good to get something "done".</p>
<p>Although my coding process hasn't been 100% <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, I would say at least it's been test centric and irregardless of whether I actually do anything with this, I think it's been a good experience.</p>
<p>I plan on updating <a href="http://joezack.com/index.php/tag/gosu/">some of my "games"</a> to use this new version, so I can see if these extensions actually save me any work.</p>
<p>Here are a few of the highlights</p>
<ul>
<li>JavaScript like elements and events ( on_click, on_focus etc )</li>
<li>Wrappers for Gosu Images, Samples, Fonts and Text</li>
<li>Bounding Boxes for basic collision detection</li>
<li>Easy cursor support</li>
<li>Basic grid / matrix support</li>
<li>Basic scheduling system</li>
</ul>
<p>Enough chit chat, <a href="http://joezack.com/downloads/code/projects/gosu_ext_0_2.zip">Download the code!</a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;title=Gosu+Extensions+Update"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;title=Gosu+Extensions+Update"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;title=Gosu+Extensions+Update"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;headline=Gosu+Extensions+Update"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Gosu+Extensions+Update&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Gosu+Extensions+Update&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Gosu+Extensions+Update&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Gosu+Extensions+Update&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Gosu+Extensions+Update&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;title=Gosu+Extensions+Update&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F04%2F14%2Fgosu-extensions-update%2F&amp;title=Gosu+Extensions+Update"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/04/14/gosu-extensions-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ID3Mapper &#8211; A Ruby ID3 renaming utility</title>
		<link>http://joezack.com/index.php/2009/03/12/id3mapper-a-ruby-id3-renaming-utility/</link>
		<comments>http://joezack.com/index.php/2009/03/12/id3mapper-a-ruby-id3-renaming-utility/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 22:33:19 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[id3mapper]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=695</guid>
		<description><![CDATA[I have a Zune. At the time I had a working Windows box, hated iTunes, and thought I would actually use the radio tuner and I actually really like it. The desktop software...not so much. There's only a Windows version, it runs horribly when you have a lot of artists, it only picks up half [...]]]></description>
			<content:encoded><![CDATA[<p>I have a Zune. At the time I had a working Windows box, hated iTunes, and thought I would actually use the radio tuner and I actually really like it. The desktop software...not so much.</p>
<p>There's only a Windows version, it runs horribly when you have a lot of artists, it only picks up half of my podcasts. I figured out a while back that the reason my podcasts weren't showing up had to do with the id3 tags, so I wrote a horrible little ruby script ( utilizing <a href="http://id3lib-ruby.rubyforge.org/">id3lib-ruby</a> ) that would set the correct genre of "podcast" for everything in my podcast directory.</p>
<p>For fun, I thought it would be cool to write a little desktop app using the <a href="http://www.rubyinside.com/ruby-gui-programming-survey-results-1552.html">most popular Ruby gui toolkit</a> <a href="http://shoooes.net/">Shoes</a> that would make it easier for me to correct some other id3 tag irregularities in my media collection.</p>
<p>The first step was to re-factor my id3 script. I've been tooling around with automated testing a bit over the last couple months and I thought this would be an excellent chance for me to attempt a full-on test first methodology. I did, and I'm pretty happy how it turned out, although it certainly didn't save me any time.</p>
<p><a href="http://joezack.com/downloads/code/ruby/id3mapper.zip">Click to download the new and improved id3mapper.</a></p>
<p>I'll eventually package this up into it's own module, but for now this is how it works:</p>
<pre name="code" class="ruby">require '../settings'
i = ID3Mapper_Console.new

i.set_artist "/home/joe/Podcasts/WNYC Radio Lab", "Radio Lab"
i.set_genre "/home/joe/Podcasts/WNYC Radio Lab", "podcast"</pre>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;title=ID3Mapper+-+A+Ruby+ID3+renaming+utility"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;title=ID3Mapper+-+A+Ruby+ID3+renaming+utility"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;title=ID3Mapper+-+A+Ruby+ID3+renaming+utility"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;headline=ID3Mapper+-+A+Ruby+ID3+renaming+utility"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;title=ID3Mapper+-+A+Ruby+ID3+renaming+utility&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F12%2Fid3mapper-a-ruby-id3-renaming-utility%2F&amp;title=ID3Mapper+-+A+Ruby+ID3+renaming+utility"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/03/12/id3mapper-a-ruby-id3-renaming-utility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding and Fixing Broken Images with Ruby</title>
		<link>http://joezack.com/index.php/2009/03/01/finding-and-fixing-broken-images-with-ruby/</link>
		<comments>http://joezack.com/index.php/2009/03/01/finding-and-fixing-broken-images-with-ruby/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 02:45:59 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[hpricot]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=649</guid>
		<description><![CDATA[A family members was having a problem with some mixed up image names on a static html site. I could have fixed it manually in a few shakes, but that's no fun. Instead I used hpricot to scrape, open-uri to test for broken-ness, Find to search and some good old fashion regex to correct. This [...]]]></description>
			<content:encoded><![CDATA[<p>A family members was having a problem with some mixed up image names on a static html site. I could have fixed it manually in a few shakes, but that's no fun. Instead I used <a href="http://wiki.github.com/why/hpricot">hpricot</a> to scrape, <a href="http://www.ruby-doc.org/stdlib/libdoc/open-uri/rdoc/">open-uri</a> to test for broken-ness, <a href="http://www.ruby-doc.org/stdlib/libdoc/find/rdoc/index.html">Find</a> to search and some good old fashion <a href="http://www.ruby-doc.org/core/classes/Regexp.html">regex</a> to correct.</p>
<p>This was my first time messing around with hpricot and I found it to be powerful and easy to use, two thumbs up. I foresee some scraping and spidering posts in the near future.</p>
<p>On to the code:</p>
<p>My final script was a bit hairy so I broke out the bit I used to find the broken images.</p>
<p>If you run the script it'll print the offending paths to screen:</p>
<pre name="code" class="ruby">ruby image_scanner.rb http://site.com/busted.html</pre>
<p>Or you can call the get_broken_images method to get an array back:</p>
<pre name="code" class="ruby">require 'image_scanner'
scanner = Image_Scanner.new
broken_images = scanner.get_broken_images "http://site.com/busted.html"</pre>
<p>In case you're interested, I've also uploaded the full code that I used to search for and correct the images although it's implementation specific, riddled with lazy and is poorly tested. Read the <a href="http://joezack.com/index.php/disclaimer/">disclaimer</a>!</p>
<p>Just run it and be amazed!</p>
<pre name="code" class="ruby">ruby image_scanner.rb http://site.com/busted.html /media_folder /busted.html /fixed.html</pre>
<p><a href="http://joezack.com/downloads/code/ruby/image_scanner.zip">Download only the broken image scanner</a><a href="http://joezack.com/downloads/code/ruby/image_fix.zip"><br />
Download the full script</a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;title=Finding+and+Fixing+Broken+Images+with+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;title=Finding+and+Fixing+Broken+Images+with+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;title=Finding+and+Fixing+Broken+Images+with+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;headline=Finding+and+Fixing+Broken+Images+with+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Finding+and+Fixing+Broken+Images+with+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Finding+and+Fixing+Broken+Images+with+Ruby&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Finding+and+Fixing+Broken+Images+with+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Finding+and+Fixing+Broken+Images+with+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Finding+and+Fixing+Broken+Images+with+Ruby&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;title=Finding+and+Fixing+Broken+Images+with+Ruby&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F03%2F01%2Ffinding-and-fixing-broken-images-with-ruby%2F&amp;title=Finding+and+Fixing+Broken+Images+with+Ruby"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/03/01/finding-and-fixing-broken-images-with-ruby/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby Line Formatting</title>
		<link>http://joezack.com/index.php/2009/01/04/ruby-line-formatting/</link>
		<comments>http://joezack.com/index.php/2009/01/04/ruby-line-formatting/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 23:53:42 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[clipboard utility]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=465</guid>
		<description><![CDATA[I wrote a little utility to turn something like this this=that, something_else="something else entirely" Into the much easier to read this = that, something_else = "something else entirely" I use it in conjunction with my clipboard utility so I can just copy, run, paste. I mostly use this when I'm working with ColdFusion, so it [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a little utility to turn something like this</p>
<pre>this=that,
something_else="something else entirely"</pre>
<p>Into the much easier to read</p>
<pre>this           = that,
something_else = "something else entirely"</pre>
<p>I use it in conjunction with my <a href="http://joezack.com/index.php/tag/clipboard-utility/">clipboard utility</a> so I can just copy, run, paste. I mostly use this when I'm working with ColdFusion, so it also works for those pesky cfsets.</p>
<p>Usage:  (After copying your target text to your clipboard)</p>
<pre>ruby clipboard_format_set.rb</pre>
<p><a href="http://joezack.com/downloads/code/ruby/set_format.zip">Download It!</a></p>
<p>PS: I'd love to set some of my scripts up as <a href="http://www.eclipse.org/">Eclipse</a> shortcuts so I've been toying with the idea of writing an Eclipse plug-in to act as a proxy. I realize you can set up and run "External Tools", but I have yet to see a way to bind a key. I'd like the plug-in to take care of the "pasting" to save me that extra ctrl-v. Maybe this would make a good New Years Project?</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;title=Ruby+Line+Formatting"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;title=Ruby+Line+Formatting"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;title=Ruby+Line+Formatting"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;headline=Ruby+Line+Formatting"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Ruby+Line+Formatting&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Ruby+Line+Formatting&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Ruby+Line+Formatting&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Ruby+Line+Formatting&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Ruby+Line+Formatting&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;title=Ruby+Line+Formatting&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2009%2F01%2F04%2Fruby-line-formatting%2F&amp;title=Ruby+Line+Formatting"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2009/01/04/ruby-line-formatting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2009 New Years Resolutions</title>
		<link>http://joezack.com/index.php/2008/12/31/2009-new-years-resolutions/</link>
		<comments>http://joezack.com/index.php/2008/12/31/2009-new-years-resolutions/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 15:01:47 +0000</pubDate>
		<dc:creator>me</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[chatter]]></category>
		<category><![CDATA[resolutions]]></category>

		<guid isPermaLink="false">http://joezack.com/?p=422</guid>
		<description><![CDATA[I like to write this sort of thing down so I can look back later and scoff. User Groups! There are some really great user groups in my area and I've consistently missed many months of meetings. The people are great, there's a lot of great information being swapped around and it's FUN! No more [...]]]></description>
			<content:encoded><![CDATA[<p>I like to write this sort of thing down so I can look back later and scoff.</p>
<p><strong>User Groups!</strong><br />
There are some <a href="http://adogo.us/">really</a> <a href="http://orug.org/">great</a> <a href="http://www.orlandojug.org/">user</a> <a href="http://itsrandom.info/">groups</a> in my area and I've consistently missed many months of meetings. The people are great, there's a lot of great information being swapped around and it's FUN!  No more excuses.</p>
<p><strong>Open Source Software!</strong><br />
This post is brought to you via the magic of <a href="http://wordpress.org/">WordPress</a>, <a href="http://www.mysql.com/">MySQL</a>, <a href="http://www.mozilla.com/en-US/firefox/">FireFox</a> and <a href="http://www.ubuntu.com/">Ubuntu</a>. I love and use a lot of open source software and it's high time I start giving back. I plan on hunting down some ColdFusion projects to get into the swing of things, but eventually I'd like my own baby.</p>
<p><strong>Plugins!</strong><br />
This goes a long with the previous bullet. I have a few ideas for <a href="http://www.mozilla.com/en-US/firefox/">FireFox</a> and <a href="http://www.eclipse.org/">Eclipse</a> plugins that I think would help get me in the OSS swing of things, (To use that trite and tired cliche yet again).</p>
<p><strong>Unmaintained Recurring Income!</strong><br />
This might be a pipe dream, but I've been working on the web for a long time I really ought to have <em>something</em> out there making money, even if it's only enough to pay for the hosting. I've got a few top secret ideas that I'll share once I get into the swing of things.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;title=2009+New+Years+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;title=2009+New+Years+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;title=2009+New+Years+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;headline=2009+New+Years+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=2009+New+Years+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=2009+New+Years+Resolutions&amp;u=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=2009+New+Years+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=2009+New+Years+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=2009+New+Years+Resolutions&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;title=2009+New+Years+Resolutions&amp;summary=&amp;source="><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/reader/link?url=http%3A%2F%2Fjoezack.com%2Findex.php%2F2008%2F12%2F31%2F2009-new-years-resolutions%2F&amp;title=2009+New+Years+Resolutions"><img class="lightsocial_img" src="http://joezack.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://joezack.com/index.php/2008/12/31/2009-new-years-resolutions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
