<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.coreguardian.org/wp-atom.php">
	<title type="text">Coreguardian</title>
	<subtitle type="text">Ruby, Enterprise and Security</subtitle>

	<updated>2010-08-30T23:57:40Z</updated>

	<link rel="alternate" type="text/html" href="http://www.coreguardian.org" />
	<id>http://www.coreguardian.org/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/coreguardian" /><feedburner:info uri="coreguardian" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/coreguardian" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fcoreguardian" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Rails security resources]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/pmFFWuMrvUM/" />
		<id>http://www.coreguardian.org/?p=432</id>
		<updated>2010-08-30T23:57:40Z</updated>
		<published>2010-08-30T23:45:19Z</published>
		<category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="security" /><category scheme="http://www.coreguardian.org" term="exception notification" /><category scheme="http://www.coreguardian.org" term="rails" /><category scheme="http://www.coreguardian.org" term="ruby" /><category scheme="http://www.coreguardian.org" term="scanners" /><category scheme="http://www.coreguardian.org" term="vulnerabilities" />		<summary type="html"><![CDATA[As we make the push toward releasing the platform that I&#39;m working on we&#39;ve installed exception_notification&#160;in our Rails app. With the increased visibility of all the exceptions it became apparent quite quickly that there were numerous hits against the server from automated vulnerability scanners. These attempts were causing routing errors as they looked for paths [...]


Related posts:<ol><li><a href='http://www.coreguardian.org/2010/03/06/security-wake-up-call/' rel='bookmark' title='Permanent Link: Security wake up call'>Security wake up call</a> <small>I don&#8217;t think that I&#8217;ve had this much adrenalin pumping...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/08/31/rails_security_resources/">&lt;p&gt;As we make the push toward releasing the platform that I&amp;#39;m working on we&amp;#39;ve installed &lt;a href="http://github.com/rails/exception_notification"&gt;exception_notification&lt;/a&gt;&amp;nbsp;in our Rails app. With the increased visibility of all the exceptions it became apparent quite quickly that there were numerous hits against the server from automated vulnerability scanners. These attempts were causing routing errors as they looked for paths like &amp;#39;/user/soapCaller.bs&amp;#39; &amp;#8211; thankfully not targeting Rails applications.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The arrival of this sort of scan was not particularly surprising to me as I&amp;#39;ve seen similar scans in the past. I&amp;#39;ve even actively dabbled in some security research by running a few honeypot projects, I digress.&lt;/p&gt;
&lt;p&gt;Even though these scans usually go after large installations such as WordPress, Drupal, Joomla and phpMyAdmin, it isn&amp;#39;t stupid to take it as a reminder to keep up to date on security vulnerabilities. In the case of Ruby on Rails the starting point would be the &lt;a href="http://groups.google.com/group/rubyonrails-security"&gt;rubyonrails-security&lt;/a&gt; google group and the Ruby on Rails &lt;a href="http://weblog.rubyonrails.org"&gt;blog&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Another great resource is&amp;nbsp;&lt;a href="http://www.railsinside.com/?s=security"&gt;Rails Inside&lt;/a&gt;. Rails Inside&amp;nbsp;usually picks up any serious flaws and relays them to the community. In addition to this, they follow new releases of popular plugins/gems that may form part of your app. The site provides an important service because keeping up-to-date is a good way of reducing the risk of being caught by a vulnerability that has been dutifully patched by the maintainer.&lt;/p&gt;
&lt;p&gt;The above is certainly not a complete list, so I&amp;#39;d like to hear if there are any other rails/ruby security resources that you find useful.&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2010/03/06/security-wake-up-call/' rel='bookmark' title='Permanent Link: Security wake up call'&gt;Security wake up call&lt;/a&gt; &lt;small&gt;I don&amp;#8217;t think that I&amp;#8217;ve had this much adrenalin pumping...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/pmFFWuMrvUM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/08/31/rails_security_resources/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/08/31/rails_security_resources/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/08/31/rails_security_resources/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[This week I learned &#8211; that bundler needs work]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/d8yXNownHng/" />
		<id>http://www.coreguardian.org/?p=427</id>
		<updated>2010-08-01T12:41:10Z</updated>
		<published>2010-08-01T12:39:08Z</published>
		<category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="technology" />		<summary type="html"><![CDATA[One of the challenges over the last few weeks has been switching development environments to phase in the new Macbook Pros (sweet!). One of the problems has been the fact that both our rails projects use bundler.&#160; Before I go on I should point out that @wycats was very helpful in sorting this problem out. [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/08/01/this-week-i-learned-that-bundler-needs-work/">&lt;p&gt;One of the challenges over the last few weeks has been switching development environments to phase in the new Macbook Pros (sweet!). One of the problems has been the fact that both our rails projects use bundler.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before I go on I should point out that &lt;a href="http://www.twitter.com/wycats"&gt;@wycats&lt;/a&gt; was very helpful in sorting this problem out.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s not that bundler is bad directly, but when you&amp;#39;re using bundler on Mac but deploying to Ubuntu there are a few eccentricities &amp;#8211; particularly with native gems.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;ve run &amp;#39;bundle package&amp;#39; at any point in the past then bundler will have started keeping a copy of all the gems in vendor/cache. When you&amp;#39;re using a gem that needs certain compile flags on Ubuntu but not MacOS X that poses a problem.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The way to do this with bundler pre 1.0 is/was to install the gem to the system using the requisite build flags, and then when bundler installs the gem it takes the already installed gem. If the gem is already in vendor/cache however that doesn&amp;#39;t work.&lt;/p&gt;
&lt;p&gt;Suffice it to say that after some confusion and removal of the gem from BOTH caches (vendor/cache and ~/.bundle) and then running bundle install will fixed the problem.&lt;/p&gt;
&lt;p&gt;Incidentally bundler 1.0.0rc2 takes care of this problem by introducing the ability to add build flags to the .bundle/config file.&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/d8yXNownHng" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/08/01/this-week-i-learned-that-bundler-needs-work/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/08/01/this-week-i-learned-that-bundler-needs-work/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/08/01/this-week-i-learned-that-bundler-needs-work/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Ruby non-greedy matching (OR how interro saved the day)]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/aADsMXuah3k/" />
		<id>http://www.coreguardian.org/?p=402</id>
		<updated>2010-03-24T06:06:36Z</updated>
		<published>2010-03-24T06:06:19Z</published>
		<category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="greedy" /><category scheme="http://www.coreguardian.org" term="interro" /><category scheme="http://www.coreguardian.org" term="matching" /><category scheme="http://www.coreguardian.org" term="non-greedy" /><category scheme="http://www.coreguardian.org" term="regex" /><category scheme="http://www.coreguardian.org" term="regular expressions" /><category scheme="http://www.coreguardian.org" term="ruby" />		<summary type="html"><![CDATA[I&#39;ve spend most of the afternoon working on a complex regex in order to parse command line argument forms (for lack of a better term). If you&#39;ve ever run the man command you&#39;ll know what I&#39;m talking about. Take the tar command as an example: tar [ - ] A --catenate --concatenate &#124; c --create [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/">&lt;p&gt;I&amp;#39;ve spend most of the afternoon working on a complex regex in order to parse command line argument forms (for lack of a better term). If you&amp;#39;ve ever run the man command you&amp;#39;ll know what I&amp;#39;m talking about. Take the tar command as an example:&lt;/p&gt;
&lt;pre&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;tar  [ - ] A --catenate --concatenate | c --create | d --diff --compare
       | --delete | r --append | t --list | u --update | x --extract  --get  [
       options ] pathname [ pathname ... ]
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;If you&amp;#39;re already familiar with regular expressions you&amp;#39;ll know that &amp;nbsp;doing something like:&lt;/p&gt;
&lt;pre&gt;[\[].*[\]]&lt;/pre&gt;
&lt;p&gt;trying to match:&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;[ - ]&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;won&amp;#39;t accomplish what you think. Instead of getting just the first set of braces you&amp;#39;ll end up with the whole remainder of the string. This is because of a feature, we&amp;#39;ll give it that title, called greedy matching. Greedy matching means that it takes the largest possible chunk that your regex will match, which in this case is the &amp;#39;]&amp;#39; on the end of pathname.&lt;/p&gt;
&lt;p&gt;I was aware of what was going on, but not being a particular master of regular expressions, I wasn&amp;#39;t sure how to get it to stop being greedy. As it turns out its quite easy.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:14px;"&gt;&lt;strong&gt;.*&lt;/strong&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;- Greedy matching&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:14px;"&gt;&lt;strong&gt;.+ &amp;nbsp;&lt;/strong&gt;&amp;nbsp;- Greedy matching&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:14px;"&gt;&lt;strong&gt;.*?&amp;nbsp;&lt;/strong&gt; &amp;#8211; Non-greedy matching&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:14px;"&gt;&lt;strong&gt;.+?&lt;/strong&gt; &amp;#8211; Non-greedy matching&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It could not be easier, once you know about it of course.&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/aADsMXuah3k" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Why &#8220;Mad Libs&#8221; style signup forms are just a gimmick]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/eTOVon_x4Z4/" />
		<id>http://www.coreguardian.org/?p=396</id>
		<updated>2010-03-07T00:57:55Z</updated>
		<published>2010-03-07T00:57:55Z</published>
		<category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="conversion" /><category scheme="http://www.coreguardian.org" term="fad" /><category scheme="http://www.coreguardian.org" term="huffduffer" /><category scheme="http://www.coreguardian.org" term="hype" /><category scheme="http://www.coreguardian.org" term="mad libs" /><category scheme="http://www.coreguardian.org" term="rant" /><category scheme="http://www.coreguardian.org" term="usability" /><category scheme="http://www.coreguardian.org" term="user friendly" /><category scheme="http://www.coreguardian.org" term="web" />		<summary type="html"><![CDATA[The last few days I&#8217;ve been seeing a few references to &#8220;Mad Libs&#8221;. Confused, I quickly punched the term into Google and discovered that it was a reference to something we&#8217;ve all done at school, filling in the blanks in a sentence. My google reader(this and this) shared the fact HuffDuffer started using a Mad [...]


Related posts:<ol><li><a href='http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/' rel='bookmark' title='Permanent Link: Ruby non-greedy matching (OR how interro saved the day)'>Ruby non-greedy matching (OR how interro saved the day)</a> <small>I&#39;ve spend most of the afternoon working on a complex...</small></li>
<li><a href='http://www.coreguardian.org/2009/10/25/getting-started-with-google-maps/' rel='bookmark' title='Permanent Link: Getting started with Google Maps'>Getting started with Google Maps</a> <small>My first few searches turned up some fairly unpolished methods...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/03/07/why-mad-libs-style-signup-forms-are-just-a-gimmick/">&lt;p&gt;The last few days I&amp;#8217;ve been seeing a few references to &lt;a href="http://en.wikipedia.org/wiki/Mad_Libs"&gt;&amp;#8220;Mad Libs&amp;#8221;&lt;/a&gt;. Confused, I quickly punched the term into Google and discovered that it was a reference to something we&amp;#8217;ve all done at school, filling in the blanks in a sentence. My google reader(&lt;a href="http://konigi.com/notebook/mad-libs-style-form-increases-conversion-25-40"&gt;this&lt;/a&gt; and &lt;a href="http://www.webmonkey.com/2010/02/using-mad-libs-to-make-web-forms-more-fun/"&gt;this&lt;/a&gt;) shared the fact &lt;a href="http://huffduffer.com/"&gt;HuffDuffer&lt;/a&gt; started using a &lt;a href="http://en.wikipedia.org/wiki/Mad_Libs"&gt;Mad Libs&lt;/a&gt; style form as their sign up form. The question was raised by a few people as to whether this was good design.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lukew.com/ff/entry.asp?1007"&gt;Luke Wroblewski&lt;/a&gt; (in collaboration with &lt;a href="http://vast.com"&gt;Vast.com&lt;/a&gt;) did some research and came up with astounding results that the conversion ratio rose some &lt;strong&gt;25-40%&lt;/strong&gt; when a Mad Libs style form was used. That&amp;#8217;s an impressive, but &lt;strong&gt;meaningless&lt;/strong&gt; number. Don&amp;#8217;t get me wrong, I&amp;#8217;m very happy that &lt;a href="http://huffduffer.com/"&gt;HuffDuffer&lt;/a&gt; has found something that works for them. But lets step back for a second and analyse why the results that &lt;a href="http://vast.com"&gt;Vast.com&lt;/a&gt; got might be this way.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a thought; maybe it&amp;#8217;s just because its a completely novel approach to a signup form. But can you really see this becoming the standard way to do signup forms? How long do you think it will be before this becomes more annoying than amusing? So quit jibber jabbering about how good it is and take a look at the long term picture. Mad Libs style forms are not something you can take and apply elsewhere with guaranteed results.&lt;/p&gt;
&lt;p&gt;To be fair, I&amp;#8217;m biased against filling in the blanks. I hated the premise at school and I will probably continue to hate the practice until it, or I, ceases to exist.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2010/03/24/ruby-non-greedy-matching-or-how-interro-saved-the-day/' rel='bookmark' title='Permanent Link: Ruby non-greedy matching (OR how interro saved the day)'&gt;Ruby non-greedy matching (OR how interro saved the day)&lt;/a&gt; &lt;small&gt;I&amp;#39;ve spend most of the afternoon working on a complex...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/10/25/getting-started-with-google-maps/' rel='bookmark' title='Permanent Link: Getting started with Google Maps'&gt;Getting started with Google Maps&lt;/a&gt; &lt;small&gt;My first few searches turned up some fairly unpolished methods...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/eTOVon_x4Z4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/03/07/why-mad-libs-style-signup-forms-are-just-a-gimmick/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/03/07/why-mad-libs-style-signup-forms-are-just-a-gimmick/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/03/07/why-mad-libs-style-signup-forms-are-just-a-gimmick/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Security wake up call]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/3ihmndTMqm0/" />
		<id>http://www.coreguardian.org/?p=394</id>
		<updated>2010-03-05T22:51:36Z</updated>
		<published>2010-03-05T22:51:36Z</published>
		<category scheme="http://www.coreguardian.org" term="security" /><category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="ebay" /><category scheme="http://www.coreguardian.org" term="email" /><category scheme="http://www.coreguardian.org" term="hacking" /><category scheme="http://www.coreguardian.org" term="hotmail" /><category scheme="http://www.coreguardian.org" term="phishing" />		<summary type="html"><![CDATA[I don&#8217;t think that I&#8217;ve had this much adrenalin pumping through my system on a Saturday morning in quite a while. My girlfriend signed into her email (as she does most mornings), to discover an email from eBay Live Support asking for a code. She called me over and a few seconds later the email [...]


Related posts:<ol><li><a href='http://www.coreguardian.org/2009/12/17/rockyou-gets-rocked-by-hackers/' rel='bookmark' title='Permanent Link: RockYou gets rocked by hackers'>RockYou gets rocked by hackers</a> <small>(And I&#8217;m hilarious) Seems that simple lessons don&#8217;t get learned....</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/03/06/security-wake-up-call/">&lt;p&gt;I don&amp;#8217;t think that I&amp;#8217;ve had this much adrenalin pumping through my system on a Saturday morning in quite a while. My girlfriend signed into her email (as she does most mornings), to discover an email from eBay Live Support asking for a code. She called me over and a few seconds later the email vanished. What happened after that point is a blur of password resets, both her and the would be hacker trying to gain control of the hotmail and through it the eBay account.&lt;/p&gt;
&lt;p&gt;There were paranoid moments when passwords wouldn&amp;#8217;t work, but in the end she&amp;#8217;s still in control of the accounts. Just about every account she owns has now had the password and details changed to help protect it.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s intrusive though. How exactly did the attacker break into the account? Not phishing, Cherie is well aware of those type of malicious emails. Guessing the security questions? Maybe.&lt;/p&gt;
&lt;p&gt;That raises other concerns though, email addresses become repositories of knowledge for our online lives. Just about every account you sign up for online has to have an email account linked to it, that means many details about your online life are there in fragments. We&amp;#8217;ll never know exactly what the hacker had access to (albeit briefly).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m personally going to be reviewing all my accounts to make sure that they&amp;#8217;re secure, and I&amp;#8217;d advise you to do the same.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/12/17/rockyou-gets-rocked-by-hackers/' rel='bookmark' title='Permanent Link: RockYou gets rocked by hackers'&gt;RockYou gets rocked by hackers&lt;/a&gt; &lt;small&gt;(And I&amp;#8217;m hilarious) Seems that simple lessons don&amp;#8217;t get learned....&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/3ihmndTMqm0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/03/06/security-wake-up-call/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/03/06/security-wake-up-call/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/03/06/security-wake-up-call/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[vertis pushed to master at vertis/active_documentum]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/gPiM1O_Hbpw/401845884" />
		<id>http://vertis.tumblr.com/post/401845884</id>
		<updated>2010-02-24T04:59:00Z</updated>
		<published>2010-02-21T04:11:54Z</published>
		<category scheme="http://www.coreguardian.org" term="life_stream" />		<summary type="html"><![CDATA[<a href="http://github.com/vertis/active_documentum/commits/master">vertis pushed to master at vertis/active_documentum</a>


Related posts:<ol><li><a href='http://www.coreguardian.org/2009/11/30/activedocumentum/' rel='bookmark' title='Permanent Link: ActiveDocumentum'>ActiveDocumentum</a> <small>I&#8217;ve finally decided to release ActiveDocumentum.  ActiveDocumentum is a Ruby...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://vertis.tumblr.com/post/401845884">&lt;p&gt;&lt;a href="http://github.com/vertis/active_documentum/commits/master"&gt;vertis pushed to master at vertis/active_documentum&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/11/30/activedocumentum/' rel='bookmark' title='Permanent Link: ActiveDocumentum'&gt;ActiveDocumentum&lt;/a&gt; &lt;small&gt;I&amp;#8217;ve finally decided to release ActiveDocumentum.  ActiveDocumentum is a Ruby...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/gPiM1O_Hbpw" height="1" width="1"/&gt;</content>
<source>
	<title>Ruby. Content Management. Stuff</title>
	<link rel="alternate" type="text/html" href="http://vertis.tumblr.com/" />
	<link rel="self" href="http://vertis.tumblr.com/rss" />
	<id>http://vertis.tumblr.com/rss</id>
</source>
		<link rel="replies" type="text/html" href="http://vertis.tumblr.com/post/401845884#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/02/21/vertis-pushed-to-master-at-vertisactive_documentum/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://vertis.tumblr.com/post/401845884</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Sinatra on Java]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/A2HmyQP64_k/" />
		<id>http://www.coreguardian.org/?p=310</id>
		<updated>2010-02-21T11:43:41Z</updated>
		<published>2010-02-21T04:10:28Z</published>
		<category scheme="http://www.coreguardian.org" term="application servers" /><category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="geronimo" /><category scheme="http://www.coreguardian.org" term="glassfish" /><category scheme="http://www.coreguardian.org" term="haml" /><category scheme="http://www.coreguardian.org" term="java" /><category scheme="http://www.coreguardian.org" term="jboss" /><category scheme="http://www.coreguardian.org" term="jruby" /><category scheme="http://www.coreguardian.org" term="rack" /><category scheme="http://www.coreguardian.org" term="ruby" /><category scheme="http://www.coreguardian.org" term="sinatra" /><category scheme="http://www.coreguardian.org" term="tomcat" /><category scheme="http://www.coreguardian.org" term="warbler" /><category scheme="http://www.coreguardian.org" term="weblogic" /><category scheme="http://www.coreguardian.org" term="websphere" />		<summary type="html"><![CDATA[With JRuby and Warbler it&#8217;s possible to get Sinatra, or any WebApp based on Rack, running on a myriad of different Java application servers. There are of course gotchas when it comes to using Warbler with the many different app servers, so this is a definitive guide to everything you have to do to get [...]


Related posts:<ol><li><a href='http://www.coreguardian.org/2009/09/09/rack-nomethoderror-undefined-method-call-for-nilnilclass/' rel='bookmark' title='Permanent Link: Rack &#8211; NoMethodError: undefined method `call&#8217; for nil:NilClass'>Rack &#8211; NoMethodError: undefined method `call&#8217; for nil:NilClass</a> <small>Turns out Rack doesn&#8217;t read minds. I just spent the...</small></li>
<li><a href='http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/' rel='bookmark' title='Permanent Link: Lighter weight deployment with git-deploy'>Lighter weight deployment with git-deploy</a> <small>Up until now I&#8217;ve been using a fairly standard capistrano...</small></li>
<li><a href='http://www.coreguardian.org/2009/11/30/activedocumentum/' rel='bookmark' title='Permanent Link: ActiveDocumentum'>ActiveDocumentum</a> <small>I&#8217;ve finally decided to release ActiveDocumentum.  ActiveDocumentum is a Ruby...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/02/21/sinatra-on-java/">&lt;p&gt;With &lt;a href="http://www.jruby.org/"&gt;JRuby&lt;/a&gt; and Warbler it&amp;#8217;s possible to get &lt;a href="http://www.sinatrarb.org"&gt;Sinatra&lt;/a&gt;, or any WebApp based on Rack, running on a myriad of different Java application servers. There are of course gotchas when it comes to using Warbler with the many different app servers, so this is a definitive guide to everything you have to do to get a simple &lt;a href="http://www.sinatrarb.org"&gt;Sinatra&lt;/a&gt; app running on the various application servers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why &lt;a href="http://www.sinatrarb.org"&gt;Sinatra&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are examples of how to get Rails running on Tomcat and Websphere floating around the web, but I find Rails overkill for small projects. With that in mind, it&amp;#8217;s worth looking at how to get Sinatra running on java application servers. Besides the weight of rails, Sinatra is a nice, easy to learn framework.&lt;/p&gt;
&lt;p&gt;Start by installing &lt;a href="http://www.sinatrarb.org"&gt;Sinatra&lt;/a&gt; and Warbler. You don&amp;#8217;t have to be using JRuby to install Warbler, the install will download a gem of the jruby jars.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Install Sinatra and Warbler&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets start by installing the required gems.&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ sudo gem install sinatra warbler haml&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Haml isn&amp;#8217;t strictly required, but the template I&amp;#8217;m going to use has views generated in haml, so if you&amp;#8217;re following the tutorial closely you&amp;#8217;ll want to install it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Create a project folder (and structure)&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;I usually keep a sinatra project template handy. So I&amp;#8217;m going to clone my existing template off github. You can create a more minimal example than the one I&amp;#8217;ll download, this will get the job done though.&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ git clone git://github.com/vertis/sinatra-example.git deploy_test&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;TODO: Details about the project&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Check that our page is displayed&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ rackup&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Go to http://localhost:9292/ and you should see our default page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generate the warble config&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ mkdir config &amp;amp;&amp;amp; warble config&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets look at the config file that was generated:&lt;/p&gt;
&lt;script src="http://gist.github.com/250634.js"&gt;&lt;/script&gt;
&lt;p&gt;If you tried packaging and installing this now, it would fail miserably because, the &amp;#8216;init.rb&amp;#8217; file would not be included. The generated warble.rb only includes the following&lt;/p&gt;
&lt;p&gt;config.dirs = %w(app config lib log vendor tmp)&lt;/p&gt;
&lt;p&gt;In addition to this the gems that we installed above would not be install. Here is same config with the lines we need (and the other cruft removed).&lt;/p&gt;
&lt;script src="http://gist.github.com/250647.js"&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;Package up the War file&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ warble&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;From here on in we&amp;#8217;ll be looking at any gotchas, when deploying to the different Application Servers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deploy to Glassfish and test (effort: moderate &amp;#8211; working: yes)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can get Suns open source application server from http://glassfish.org. The current stable version of Glassfish 2.1.1, though Glassfish 3 is in active development. The installer comes packaged as a jar file. You can run the installer with&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ java -Xmx256m -jar glassfish-installer-v2.1.1-b31g-linux.jar&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;&lt;span style="color: #000000;"&gt;After accepting the license it should put all the files in a folder called &amp;#8216;glassfish&amp;#8217; in the current directory.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;$ cd glassfish&lt;br /&gt;
You need to run the following commands to finish the setup:&lt;/p&gt;
&lt;p&gt;$ chmod -R +x lib/ant/bin&lt;br /&gt;
$ lib/ant/bin/ant -f setup.xml&lt;/p&gt;
&lt;p&gt;Once the software is installed you can start the domain with:&lt;/p&gt;
&lt;p&gt;$ bin/asaadmin start-domain domain1&lt;/p&gt;
&lt;p&gt;And use either the admin console or the autodeploy directory to deploy the war file.&lt;/p&gt;
&lt;p&gt;Glassfish now has a working copy of our application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Deploy to JBoss and test (effort: n/a &amp;#8211; working: no)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;JBoss has a community and an enterprise edition. For the purposes of this test we&amp;#8217;ll be using the community edition. The current stable version of JBoss AS is 5.1.0 GA. You can get a copy of JBoss from &lt;a href="http://www.jboss.org"&gt;http://www.jboss.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Getting started is as simple as unzipping the archive and running:&lt;/p&gt;
&lt;p&gt;$ cd jboss-5.1.0.GA&lt;/p&gt;
&lt;p&gt;$ bin/run.sh&lt;/p&gt;
&lt;p&gt;You can then use the admin console to deploy the application. One gotcha here, the first time I deployed the application using the console I got the following nasty message:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Application initialization failed: no such file to load &amp;#8212; rack&lt;br /&gt;
from /opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-rack-0.9.5.jar/vendor/rack.rb:1&lt;br /&gt;
from /opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-rack-0.9.5.jar/vendor/rack.rb:22:in `require&amp;#8217;&lt;br /&gt;
from /opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-rack-0.9.5.jar/jruby/rack/booter.rb:22:in `boot!&amp;#8217;&lt;br /&gt;
from /opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-rack-0.9.5.jar/jruby/rack/boot/rack.rb:9&lt;br /&gt;
from /opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-rack-0.9.5.jar/jruby/rack/boot/rack.rb:1:in `load&amp;#8217;&lt;br /&gt;
from &amp;lt;script&amp;gt;:1&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Turns out that after some digging there is an open jruby bug about the issue -  &lt;a href="http://jira.codehaus.org/browse/JRUBY-3935"&gt;http://jira.codehaus.org/browse/JRUBY-3935&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also did a bit of digging through the logs and found:&lt;/p&gt;
&lt;p&gt;16:27:50,703 ERROR [STDERR] Warning: JRuby home &amp;#8220;/opt/application_servers/jboss-5.1.0.GA/server/default/deploy/deploy_test.war/WEB-INF/lib/jruby-stdlib-1.4.0.jar/META-INF/jruby.home&amp;#8221; does not exist, using /tmp&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve not managed to find a solution to this problem. I will revisit this at some point in the future. After googling a little it may be possible to just revert to a few older versions that seemed to work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Deploy to Jetty and test (effort: easy &amp;#8211; working: yes)&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The current version of Jetty is 7.0.1.v20091125, though the version that comes as part of your Linux distro may not be so up to date. You can either install it using your favorite package manager, or if you&amp;#8217;re on Windows get it from the homepage at &lt;a href="http://www.mortbay.org"&gt;http://www.mortbay.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve installed Jetty copy the generated war file to the webapps folder, and run:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ bin/jetty.sh&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You should be able to go to http://localhost:8080/deploy_test&lt;/p&gt;
&lt;p&gt;Congratulations you now have a working copy of your sinatra app on Jetty.&lt;br /&gt;
&lt;strong&gt; Deploy to Tomcat and test (effort: easy &amp;#8211; working: yes)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The current stable version of Tomcat is 6.0.20. You can either install it using your favorite package manager, or if you&amp;#8217;re on Windows get it from the homepage at &lt;a href="http://tomcat.apache.org"&gt;http://tomcat.apache.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You shouldn&amp;#8217;t have to make any changes to get our web app to work on Tomcat. Once you&amp;#8217;ve installed Tomcat copy the generated war file to the webapps folder, and run:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #339966;"&gt;$ bin/startup.sh&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You should be able to go to http://localhost:8080/deploy_test&lt;/p&gt;
&lt;p&gt;Tomcat really is the bread and butter of Java Application Servers, especially outside the Enterprise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Deploy to Websphere and test (effort: hard &amp;#8211; working: yes)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: Websphere 6.1.0.11 was the first application server I ever deployed Sinatra too, it failed miserably. I spent a long time debugging and playing with it to make it work properly. The biggest problem stems from the fact that the default way of using rack as configured by warbler doesn&amp;#8217;t work.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Start by logging into the administration console, it should be something like &amp;#8211; http://localhost:9043/ibm/console&lt;/p&gt;
&lt;p&gt;Click on &amp;#8216;Servers&amp;#8217; and when it expands select &amp;#8216;Application Servers&amp;#8217;. From here you can setup a new server instance that we can use for our testing. Call the instance something like &amp;#8216;deploy01&amp;#8242;. You can follow the default creation steps all the way through.&lt;/p&gt;
&lt;p&gt;Once you have a server instance to test on, you can deploy a new application. The big gotcha as mentioned above is that you can&amp;#8217;t use filters, the good news is that it&amp;#8217;s quite easy to switch out the rack filters for a rack servlet. Rather than duplicate information that already exists, I&amp;#8217;ll link to the place I learned to deploy warbler to websphere, &lt;a href="http://clint-hill.com/2008/11/26/jruby-on-rails-and-websphere/"&gt;http://clint-hill.com/2008/11/26/jruby-on-rails-and-websphere/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Websphere is not the easiest application server to setup in general, but once you get it all configured it is fairly robust. Worth the effort if you want an application server you won&amp;#8217;t have to restart constantly (as can be the case with Documentum on Tomcat).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Deploy to Weblogic and test (effort: n/a &amp;#8211; working: no)&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Setting up Oracle Weblogic 10.3.2 was nothing short of awesome. The install process is intuitive and speedy, though the size is quite large, at ~600Mb,  compared to smaller cousins such as Tomcat. There is a wizard that walks you through the process of setting up your first domain, what Tomcat would call an instance and Websphere would call a profile, once the software is installed. I chose the default options for everything and had a running Weblogic server in about 20mins (including download).&lt;/p&gt;
&lt;p&gt;My previous experience with Weblogic, was the version bundled with Documentum D6SP1. I&amp;#8217;ve found both that version and the current fully fledged Oracle version to be a joy to work with.&lt;/p&gt;
&lt;p&gt;Once the installation process is finished you can find the administration console at http://localhost:7001/console, you can then login using the username/password you picked during installation.&lt;/p&gt;
&lt;p&gt;From the admin console it is a simple matter of clicking on &amp;#8216;Deployments&amp;#8217; on the left and then when the screen loads clicking &amp;#8216;install&amp;#8217;, browse to the directory with the deploy_test.war file in it and start the install.&lt;/p&gt;
&lt;p&gt;You should now be able to access the deployed application at http://localhost:7001/deploy_test&amp;#8230;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Application initialization failed: no such file to load &amp;#8212; rack from C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/deploy_test/qwtgi/war/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack.rb:1 from C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/deploy_test/qwtgi/war/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack.rb:22:in `require&amp;#8217; from C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/deploy_test/qwtgi/war/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/booter.rb:22:in `boot!&amp;#8217; from C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/deploy_test/qwtgi/war/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/boot/rack.rb:9 from C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/deploy_test/qwtgi/war/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/boot/rack.rb:1:in `load&amp;#8217; from&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Clearly thats not going to be the case though. This issue is very similar to the error message received for JBoss.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not a bad scorecard really. Of all the Java application servers that I tested, only JBoss and Weblogic proved to be a problem. I&amp;#8217;ll be retesting these two periodically to see if support has been improved (there are open tickets with JRuby). Until then I hope that this has been useful.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/09/09/rack-nomethoderror-undefined-method-call-for-nilnilclass/' rel='bookmark' title='Permanent Link: Rack &amp;#8211; NoMethodError: undefined method `call&amp;#8217; for nil:NilClass'&gt;Rack &amp;#8211; NoMethodError: undefined method `call&amp;#8217; for nil:NilClass&lt;/a&gt; &lt;small&gt;Turns out Rack doesn&amp;#8217;t read minds. I just spent the...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/' rel='bookmark' title='Permanent Link: Lighter weight deployment with git-deploy'&gt;Lighter weight deployment with git-deploy&lt;/a&gt; &lt;small&gt;Up until now I&amp;#8217;ve been using a fairly standard capistrano...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/11/30/activedocumentum/' rel='bookmark' title='Permanent Link: ActiveDocumentum'&gt;ActiveDocumentum&lt;/a&gt; &lt;small&gt;I&amp;#8217;ve finally decided to release ActiveDocumentum.  ActiveDocumentum is a Ruby...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/A2HmyQP64_k" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/02/21/sinatra-on-java/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/02/21/sinatra-on-java/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/02/21/sinatra-on-java/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Exploring Documentum RESTful Services &#8211; Part 2]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/rwCcRNSNWWE/" />
		<id>http://www.coreguardian.org/?p=371</id>
		<updated>2010-02-21T07:42:47Z</updated>
		<published>2010-02-19T03:16:12Z</published>
		<category scheme="http://www.coreguardian.org" term="content management" /><category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="ajax" /><category scheme="http://www.coreguardian.org" term="documentum" /><category scheme="http://www.coreguardian.org" term="javascript" /><category scheme="http://www.coreguardian.org" term="jquery" /><category scheme="http://www.coreguardian.org" term="json" /><category scheme="http://www.coreguardian.org" term="nginx" /><category scheme="http://www.coreguardian.org" term="rest" /><category scheme="http://www.coreguardian.org" term="reverse proxy" /><category scheme="http://www.coreguardian.org" term="web services" />		<summary type="html"><![CDATA[I originally published this post to the Early Access Area for Documentum RESTful Services. In the second part of my exploration of Documentum RESTful Services I promised that we&#8217;d delve into browsing around the docbase. Rather do that with ruby I thought I&#8217;d grab a copy of JQuery and have a look at what it [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/02/19/exploring-documentum-restful-services-part-2/">&lt;p&gt;&lt;em&gt;&lt;strong&gt;I originally published this post to the Early Access Area for Documentum RESTful Services.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the second part of my exploration of Documentum RESTful Services I  promised that we&amp;#8217;d delve into browsing around the docbase. Rather do  that with ruby I thought I&amp;#8217;d grab a copy of &lt;a href="http://www.jquery.com"&gt;JQuery&lt;/a&gt; and have a look at what it takes to access the services using what is an increasingly popular javascript library. The  most important part of delivering on this is the JQuery call:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;$.getJSON(path, ...);&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;The  important thing here is that because of concerns about cross-site  scripting we can only call local paths. While getJSON allows remote  paths now with the help of JSONP style callbacks, those require server  side cooperation to work. I don&amp;#8217;t know that they&amp;#8217;re not implemented in  Documentum RESTful Services, but flipping through the documentation I  couldn&amp;#8217;t find anything of that nature.&lt;/p&gt;
&lt;p&gt;Rather than  creating a War for one html file, I decided to show off nginx. Nginx is a  superb webserver, and more importantly in this case, a reverse proxy.  It has gotten a lot of attention in the Ruby on Rails community, which  is where I fell in love with it. After grabbing a copy of nginx it&amp;#8217;s  simply a matter of doing a minor adjustment to the nginx.conf file.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;location /resources {
  proxy_pass   http://127.0.0.1:8080/resources;
}
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;This  will mean that anything below the /resources directory on our webserver  is passed off to the tomcat instance on 8080. We can start nginx, and  discover it works perfectly. Now that we can use just a path to  reference the services, lets get started. We start with a fairly blank  html file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; &amp;lt;html&amp;gt;                                                                 
 &amp;lt;head&amp;gt;                                                                 
 &amp;lt;script type="text/javascript" src="jquery-1.3.2.js"&amp;gt;&amp;lt;/script&amp;gt;         
 &amp;lt;script type="text/javascript"&amp;gt;                                        
   // we will add our javascript code here
   $(document).ready(function() {
        // do stuff when DOM is ready
   });  
 &amp;lt;/script&amp;gt;                                                              
 &amp;lt;/head&amp;gt;                                                                
 &amp;lt;body&amp;gt;                                                                 
   &amp;lt;div id="results"&amp;gt;&amp;lt;/div&amp;gt;                                         
 &amp;lt;/body&amp;gt;                                                                
 &amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Notice  the included jquery.js, the call the $(document).ready, and the results  div. We&amp;#8217;re going to use the call I mentioned earlier &amp;#8216;getJSON&amp;#8217; to  populate the results div with the results of calling the &amp;#8216;folders&amp;#8217;  resource with no arguments. Lets look at the code.&lt;/p&gt;
&lt;pre&gt;
&lt;blockquote&gt;

$.getJSON("/resources/core/repositories/test_repo/folders.json",
       function(data){
       $.each(data.dataPackage.dataObject, function(i,item){
           $("#results").append(item.properties.object_name+"&amp;lt;br/&amp;gt;");
       });
});
&lt;/blockquote&gt;
&lt;/pre&gt;
&lt;p&gt;If  you put the above html file in the right place and run the example  you&amp;#8217;ll be prompted for the password, just like you would if you actually  went to the resource endpoint itself, then you&amp;#8217;ll see a nice list of  the root cabinets. Suppose we want to more than just display the root  cabinets though, that we want to use the returned results to allow us to  click around the docbase. Here is an example that does just that:&lt;/p&gt;
&lt;pre&gt;
&lt;/pre&gt;
&lt;script src="http://gist.github.com/310189.js"&gt;&lt;/script&gt;
&lt;p&gt;It&amp;#8217;s  very rough, and doesn&amp;#8217;t take into account many variables, such as  relationships that are returned aren&amp;#8217;t necessarily folders. But it does illustrate the ability to access Documentum using libraries like jQuery now.&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/rwCcRNSNWWE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/02/19/exploring-documentum-restful-services-part-2/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/02/19/exploring-documentum-restful-services-part-2/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/02/19/exploring-documentum-restful-services-part-2/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Copy the structure but not the data.]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/jGl6VCYoC0s/379338929" />
		<id>http://vertis.tumblr.com/post/379338929</id>
		<updated>2010-02-12T03:42:13Z</updated>
		<published>2010-02-09T04:28:08Z</published>
		<category scheme="http://www.coreguardian.org" term="uncategorized" /><category scheme="http://www.coreguardian.org" term="document management" /><category scheme="http://www.coreguardian.org" term="high volume server" /><category scheme="http://www.coreguardian.org" term="offline load" /><category scheme="http://www.coreguardian.org" term="prototype" /><category scheme="http://www.coreguardian.org" term="sql" /><category scheme="http://www.coreguardian.org" term="syntax" /><category scheme="http://www.coreguardian.org" term="work" />		<summary type="html"><![CDATA[<p>I’m working on a prototype at the moment that requires me to insert data into offline tables (offline as far as Documentum is concerned). The examples that I’ve found all resort to specifying the exact structure of the table.</p>
<p>create table DMI_OBJECT_TYPEx (</p>
<p>R_OBJECT_ID VARCHAR2(16) NOT NULL,</p>
<p>I_TYPE NUMBER(10,0) NOT NULL,</p>
<p>I_PARTITION NUMBER(10,0) NULL);</p>

<p>The example above is smaller than most of the tables I have to create. The weakness with this is that you have to look up the table structure. The writers probably chose this method because the much simpler syntax shown below also brings any data that is in the table.</p>
<p>CREATE TABLE DMI_OBJECT_TYPEx AS SELECT * FROM DMI_OBJECT_TYPE;</p>
<p>My initial thought was why not copy the table and then just truncate it, but after a bit of searching I stumbled upon the <a href="http://www.vbrad.com/article.aspx?id=14">solution</a>. Essentially adding a WHERE clause to the end of the query that never evaluates to TRUE enables us to take the structure without the data.</p>
<p>CREATE TABLE DMI_OBJECT_TYPEx AS SELECT * FROM DMI_OBJECT_TYPE WHERE 1=2;</p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://vertis.tumblr.com/post/379338929">I’m working on a prototype at the moment that requires me to insert data into offline tables (offline as far as Documentum is concerned). The examples that I’ve found all resort to specifying the exact structure of the table.

create table DMI_OBJECT_TYPEx (

R_OBJECT_ID VARCHAR2(16) NOT NULL,

I_TYPE NUMBER(10,0) NOT NULL,

I_PARTITION NUMBER(10,0) NULL);

The example above is smaller than most of the tables I have to create. The weakness with this is that you have to look up the table structure. The writers probably chose this method because the much simpler syntax shown below also brings any data that is in the table.

CREATE TABLE DMI_OBJECT_TYPEx AS SELECT * FROM DMI_OBJECT_TYPE;

My initial thought was why not copy the table and then just truncate it, but after a bit of searching I stumbled upon the &lt;a href="http://www.vbrad.com/article.aspx?id=14"&gt;solution&lt;/a&gt;. Essentially adding a WHERE clause to the end of the query that never evaluates to TRUE enables us to take the structure without the data.

CREATE TABLE DMI_OBJECT_TYPEx AS SELECT * FROM DMI_OBJECT_TYPE WHERE 1=2;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/jGl6VCYoC0s" height="1" width="1"/&gt;</content>
<source>
	<title>Ruby. Content Management. Stuff</title>
	<link rel="alternate" type="text/html" href="http://vertis.tumblr.com/" />
	<link rel="self" href="http://vertis.tumblr.com/rss" />
	<id>http://vertis.tumblr.com/rss</id>
</source>
		<link rel="replies" type="text/html" href="http://vertis.tumblr.com/post/379338929#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/02/09/copy-the-structure-but-not-the-data/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://vertis.tumblr.com/post/379338929</feedburner:origLink></entry>
		<entry>
		<author>
			<name>vertis</name>
					</author>
		<title type="html"><![CDATA[Lighter weight deployment with git-deploy]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coreguardian/~3/WLHebXK9AOM/" />
		<id>http://www.coreguardian.org/?p=351</id>
		<updated>2010-02-01T05:34:16Z</updated>
		<published>2010-02-01T05:34:16Z</published>
		<category scheme="http://www.coreguardian.org" term="development" /><category scheme="http://www.coreguardian.org" term="technology" /><category scheme="http://www.coreguardian.org" term="bloat" /><category scheme="http://www.coreguardian.org" term="bugs" /><category scheme="http://www.coreguardian.org" term="capistrano" /><category scheme="http://www.coreguardian.org" term="deployment" /><category scheme="http://www.coreguardian.org" term="git" /><category scheme="http://www.coreguardian.org" term="lightweight" /><category scheme="http://www.coreguardian.org" term="maintenance" /><category scheme="http://www.coreguardian.org" term="migration" /><category scheme="http://www.coreguardian.org" term="push" /><category scheme="http://www.coreguardian.org" term="rails" /><category scheme="http://www.coreguardian.org" term="ruby" /><category scheme="http://www.coreguardian.org" term="rubygem" />		<summary type="html"><![CDATA[Up until now I&#8217;ve been using a fairly standard capistrano deploy.rb. The problem is that as we speak I&#8217;m trying to deploy a patch from my Windows work machine and it&#8217;s not working. The ethics of fixing one of my project from home aside, this is a problem. When I try and deploy the following [...]


Related posts:<ol><li><a href='http://www.coreguardian.org/2009/09/09/rack-nomethoderror-undefined-method-call-for-nilnilclass/' rel='bookmark' title='Permanent Link: Rack &#8211; NoMethodError: undefined method `call&#8217; for nil:NilClass'>Rack &#8211; NoMethodError: undefined method `call&#8217; for nil:NilClass</a> <small>Turns out Rack doesn&#8217;t read minds. I just spent the...</small></li>
<li><a href='http://www.coreguardian.org/2010/02/21/sinatra-on-java/' rel='bookmark' title='Permanent Link: Sinatra on Java'>Sinatra on Java</a> <small>With JRuby and Warbler it&#8217;s possible to get Sinatra, or...</small></li>
<li><a href='http://www.coreguardian.org/2009/10/22/the-api-challenge/' rel='bookmark' title='Permanent Link: The API Challenge'>The API Challenge</a> <small>One of my favorite finds this year is Programmable Web,...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></summary>
		<content type="html" xml:base="http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/">&lt;p&gt;Up until now I&amp;#8217;ve been using a fairly standard capistrano deploy.rb. The problem is that as we speak I&amp;#8217;m trying to deploy a patch from my Windows work machine and it&amp;#8217;s not working. The ethics of fixing one of my project from home aside, this is a problem. When I try and deploy the following error  comes up&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;can&amp;#8217;t convert Net::SSH::Authentication::Pageant::Socket into IO (TypeError)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The change I was trying to deploy stops in its tracks. After quite a bit of searching I found a &lt;a href="http://thread.gmane.org/gmane.comp.lang.ruby.capistrano.general/5804/focus=5807"&gt;thread&lt;/a&gt; about the error that dates back to Capistrano 2.5.3&amp;#8230; from 2008. What a shining example of open source.&lt;/p&gt;
&lt;p&gt;To be fair the error isn&amp;#8217;t necessarily in Capistrano, it may in fact be in Net::SSH. The sad thing is that we&amp;#8217;re over a year later, and nothing has been done to fix the problem. Is the number of people that use Ruby from Windows machines so low that no-one has managed to fix it in a year?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not expecting Jamis to fix it. I get that he has too much to do, and doesn&amp;#8217;t have time to give out a bunch of freebie support, but I&amp;#8217;m now faced with the choice of either trying to fix the problem, a task I don&amp;#8217;t currently have time for, or ditching capistrano.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve considered switching to heroku in the past and just never made the leap. For a start the app in question has to many moving parts for heroku. One thing I did like though was the notion that to deploy all I had to do was &amp;#8216;git push target master&amp;#8217;  and the app would be updated and deployed.&lt;/p&gt;
&lt;p&gt;After toying around with rolling my own solution, I stumbled upon &lt;a href="http://www.github.com/mislav/git-deploy"&gt;mislav&amp;#8217;s gem&lt;/a&gt;. It lacks some of the features that I&amp;#8217;m looking for, but its a good deal closer to the level that I need. It lacks the bloat of capistrano, which is important, because the biggest barrier to me getting in and fixing capistrano would be the size of the library and knowing where to start.&lt;/p&gt;
&lt;p&gt;I very quickly migrated my existing application to use git-deploy. It&amp;#8217;s not perfect for every problem, particularly if you&amp;#8217;re doing multi stage deployments, etc, but at least I&amp;#8217;ll be able to do a deployment everywhere I can get access to git now.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/09/09/rack-nomethoderror-undefined-method-call-for-nilnilclass/' rel='bookmark' title='Permanent Link: Rack &amp;#8211; NoMethodError: undefined method `call&amp;#8217; for nil:NilClass'&gt;Rack &amp;#8211; NoMethodError: undefined method `call&amp;#8217; for nil:NilClass&lt;/a&gt; &lt;small&gt;Turns out Rack doesn&amp;#8217;t read minds. I just spent the...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.coreguardian.org/2010/02/21/sinatra-on-java/' rel='bookmark' title='Permanent Link: Sinatra on Java'&gt;Sinatra on Java&lt;/a&gt; &lt;small&gt;With JRuby and Warbler it&amp;#8217;s possible to get Sinatra, or...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.coreguardian.org/2009/10/22/the-api-challenge/' rel='bookmark' title='Permanent Link: The API Challenge'&gt;The API Challenge&lt;/a&gt; &lt;small&gt;One of my favorite finds this year is Programmable Web,...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/coreguardian/~4/WLHebXK9AOM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.coreguardian.org/2010/02/01/lighter-weight-deployment-with-git-deploy/</feedburner:origLink></entry>
	</feed>
