<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>Über Conf</title>
    <link>http://uberconf.com</link>
    <description>The best value in the Java/Open Source conferencing space hands down</description>
    <item>
      <title>Mastering Node</title>
      <link>http://uberconf.com/blog/mike_girouard/2010/09/mastering_node?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;@codepo8 was kind enough to &lt;a href="http://twitter.com/codepo8/status/23058550098"&gt;share a link&lt;/a&gt; to &lt;a href="http://visionmedia.github.com/masteringnode/"&gt;Mastering Node&lt;/a&gt;, an open source eBook on NodeJS.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s still a work in progress, but it&amp;#8217;s the most complete I&amp;#8217;ve seen so far. There&amp;#8217;s no formal table of contents, but if you peek at the &lt;a href="http://github.com/visionmedia/masteringnode/blob/master/Makefile"&gt;Makefile&lt;/a&gt;, you can get a clear idea on the topics covered so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing Node&lt;/li&gt;
&lt;li&gt;CommonJS Module System&lt;/li&gt;
&lt;li&gt;Globals&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Buffers&lt;/li&gt;
&lt;li&gt;Streams&lt;/li&gt;
&lt;li&gt;File System&lt;/li&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;Connect&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The easiest thing to to is to clone the repo and build the book (htmldoc req&amp;#8217;d) that way you always have the latest and greatest. If you&amp;#8217;re lazy, just browse the repo&amp;#8217;s &lt;code&gt;.md&lt;/code&gt; files or download the PDF that is already built.&lt;/p&gt;
&lt;p&gt;via &lt;a href="http://visionmedia.github.com/masteringnode/"&gt;Mastering Node&lt;/a&gt; and &lt;a href="http://twitter.com/codepo8/status/23058550098"&gt;@codepo8&lt;/a&gt;&lt;/p&gt;
&lt;div style='clear:both'&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"&gt;Share this post&lt;/a&gt; &lt;/p&gt;</description>
      <pubDate>Mon, 06 Sep 2010 13:00:21 CDT</pubDate>
      <guid isPermaLink="true">http://www.lovemikeg.com/?p=305</guid>
      <dc:creator>Mike Girouard</dc:creator>
    </item>
    <item>
      <title>Story of my life…</title>
      <link>http://uberconf.com/blog/mike_girouard/2010/09/story_of_my_life_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;via &lt;a href="http://www.toothpastefordinner.com/archives/2010/Aug/?#1408"&gt;Toothpaste For Dinner &amp;#8211; ARCHIVE: Aug 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.toothpastefordinner.com/archives/2010/Aug/?#1408"&gt;&lt;img src="http://www.lovemikeg.com/wp-content/uploads/2010/09/great-ideas.gif" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style='clear:both'&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"&gt;Share this post&lt;/a&gt; &lt;/p&gt;</description>
      <pubDate>Mon, 06 Sep 2010 11:00:20 CDT</pubDate>
      <guid isPermaLink="true">http://www.lovemikeg.com/?p=298</guid>
      <dc:creator>Mike Girouard</dc:creator>
    </item>
    <item>
      <title>The Agile Guerilla Series</title>
      <link>http://uberconf.com/blog/matt_stine/2010/09/the_agile_guerilla_series?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I recently completed a series of articles for Agile Zone entitled &amp;#8220;The Agile Guerilla.&amp;#8221; Those of you that have seen me on the No Fluff Just Stuff tour this year may recognize a talk by the same name. They are one and the same concept: my attempt to reach the masses with strategies for introducing change, specifically moving to agility, into organizations from the grassroots level.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a list of the complete set of articles for your convenience!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/agile-guerilla" target="_blank"&gt;The Agile Guerilla&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/show-dont-tell-persuade-dont" target="_blank"&gt;Show (Don&amp;#8217;t Tell), Persuade (Don&amp;#8217;t Preach)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/going-guerilla-where-start" target="_blank"&gt;Going Guerilla: Where to Start&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/guerillas-workflow" target="_blank"&gt;The Guerilla&amp;#8217;s Workflow&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/guerilla-tdd" target="_blank"&gt;Guerilla TDD &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/guerilla-continuous" target="_blank"&gt;Guerilla Continous Integration&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://agile.dzone.com/articles/so-what-are-you-waiting-go" target="_blank"&gt;So What Are You Waiting For? GO BANANAS!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/381/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/381/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;amp;blog=58954&amp;amp;post=381&amp;amp;subd=mattstine&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
      <pubDate>Mon, 06 Sep 2010 08:00:22 CDT</pubDate>
      <guid isPermaLink="true">http://mattstine.com/?p=381</guid>
      <dc:creator>Matt Stine</dc:creator>
    </item>
    <item>
      <title>First place [Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2010/09/first_place_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/4960011179/" title="First place"&gt;&lt;img src="http://farm5.static.flickr.com/4120/4960011179_e9161acab8_m.jpg" width="240" height="179" alt="First place" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/KnklZNy_blM" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 05 Sep 2010 16:00:15 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/4960011179</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>[Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2010/09/_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/4960019077/" title=" "&gt;&lt;img src="http://farm5.static.flickr.com/4126/4960019077_035d178366_m.jpg" width="240" height="179" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/0Nj5LxtNmrA" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 05 Sep 2010 13:00:16 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/4960019077</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>What has Maven ever done for us?</title>
      <link>http://uberconf.com/blog/john_smart/2010/09/what_has_maven_ever_done_for_us_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;em&gt;Notes from the People's Popular Anti-Maven Front of Java General Meeting&lt;/em&gt;&lt;/p&gt;

&lt;b&gt;REG:&lt;/b&gt; All these years. Maven has bled us dry with convoluted XML files, forced us to respect the Maven way, and made us download the internet at every build. And what has Maven ever given us in return?!&lt;/p&gt;
&lt;div style="float:right"&gt;&lt;img src="http://www.wakaleo.com/images/judean-peoples-front.jpg"/&gt;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #1:&lt;/b&gt; Standard directory structures?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; What?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #1:&lt;/b&gt; Standard directory structures.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; Oh. Yeah, yeah. It did give us that. Uh, that's true. Yeah.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #2:&lt;/b&gt; And common build targets across projects. Remember how hard it use to be with Ant, to figure out how to build a new project?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; Yeah. All right. I'll grant you, standard directory structures and common build targets are two things that Maven has done well.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #2:&lt;/b&gt; And Declarative Dependency Management.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; Yeah. Well, obviously, Declarative Dependency Management. I mean, Declarative Dependency Management goes without saying, doesn't it - everyone wants to do that now. But apart from Standard Directory Structures, common build targets, and Declarative Dependency Management--&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #3:&lt;/b&gt; Common artifact naming conventions?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #1:&lt;/b&gt; Code quality reporting&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #2:&lt;/b&gt; Yeah, Sonar&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; Yeah, yeah. All right. Fair enough.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #4:&lt;/b&gt; Enterprise Repositories?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #2:&lt;/b&gt; Yeah, you can actually publish your JAR files without using email, now. They're the ones who came up with that.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; All right, but apart from Standard Directory Structures, common build targets, and Declarative Dependency Management, a common artifact naming convention, code quality reporting, Sonar, Enterprise Repositories, what has Maven ever done for us?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;JAVA COMMANDO #1:&lt;/b&gt; Groovy pom files?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;REG:&lt;/b&gt; Oh. Shut up!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check out the original version &lt;a href="http://www.youtube.com/watch?v=ExWfh6sGyso"&gt;here&lt;/a&gt;.&lt;/em&gt;
&lt;/p&gt;</description>
      <pubDate>Sun, 05 Sep 2010 11:00:32 CDT</pubDate>
      <guid isPermaLink="true">http://www.wakaleo.com/blog/283-what-has-maven-ever-done-for-us</guid>
      <dc:creator>John Smart</dc:creator>
    </item>
    <item>
      <title>Unofficial IRC channel for WebSphere eXtreme Scale</title>
      <link>http://uberconf.com/blog/billy_newport/2010/09/unofficial_irc_channel_for_websphere_extreme_scale_1?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I'm making an IRC channel on the IRC server ircnet.eversible.com called #ibmwxs&lt;/p&gt;
&lt;p&gt;I'll be hanging there as often as I can and hopefully you to.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dev/websphere/~4/1IYeS_jdXb8" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 05 Sep 2010 08:00:22 CDT</pubDate>
      <guid isPermaLink="true">tag:typepad.com,2003:post-6a00d83452595969e20133f38f34bc970b</guid>
      <dc:creator>Billy Newport</dc:creator>
    </item>
    <item>
      <title>PrettyFaces 3.1.0 released: URL-rewriting for Servlet &amp; JSF</title>
      <link>http://uberconf.com/blog/lincoln_baxter_iii/2010/09/prettyfaces_3_1_0_released_url_rewriting_for_servlet__jsf?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;center&gt;&lt;/p&gt;&lt;div class="featured"&gt;» &lt;a href="http://ocpsoft.com/prettyfaces/"&gt;Get PrettyFaces!&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/center&gt;&lt;/p&gt;&lt;h2&gt;Features &amp;amp; Enhancements:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Introducing URL mapping configuration with annotations&lt;/strong&gt; (&lt;a href="http://ocpsoft.com/prettyfaces/annotations-support-is-coming-to-prettyfaces-url-rewriting/"&gt;tutorial&lt;/a&gt; + &lt;a href="http://ocpsoft.com/docs/prettyfaces/snapshot/en-US/html/Configuration.html#config.annotations"&gt;docs&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Added path and query-parameter validation wth managed bean methods (#50 + r353)&lt;/li&gt;&lt;li&gt;Added support for JSF2 redirects using ExternalContext (r305)&lt;/li&gt;&lt;li&gt;Added support for arrays as query parameters (r278)&lt;/li&gt;&lt;/ul&gt;&lt;div class="featured"&gt;Special thanks to &lt;a target="_blank" href="http://chkal.blogspot.com/"&gt;Christian Kaltepoth&lt;/a&gt; for his incredible annotations configuration system, and for fixing more bugs than any other project member over the past 3 months!&lt;/div&gt;&lt;h2&gt;Regression impact:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The URL query string is now included in rewrite-rules; this allows for finer control of the rewriting engine (Any prior rewrite rules should be revised and re-tested)&lt;/li&gt;&lt;li&gt;PrettyContext.getCurrentURL() has been replaced with PrettyContext.getRequestURL() and PrettyContext.getRequestQueryString()&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Bugfixes:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Resolved Mojarra warning &amp;#8220;Request path &amp;#8216;/faces/url.xhtml&amp;#8217; begins with one or more occurrences of the FacesServlet prefix path mapping &amp;#8216;/faces&amp;#8217;.&amp;#8221; when using path mapping (&lt;a href="http://code.google.com/p/prettyfaces/issues/detail?id=43"&gt;#43&lt;/a&gt; + r379)&lt;/li&gt;&lt;li&gt;Resolved Deployment warning on Geronimo (&lt;a href="http://code.google.com/p/prettyfaces/issues/detail?id=58"&gt;#58&lt;/a&gt; + r364)&lt;/li&gt;&lt;li&gt;URL Path Expressions now match correctly when more than one expression is used between path segments (r362)&lt;/li&gt;&lt;li&gt;Resolved ClassNotFoundException with JSF 1.2 on JBoss6 (&lt;a href="http://code.google.com/p/prettyfaces/issues/detail?id=54"&gt;#54&lt;/a&gt; + r360)&lt;/li&gt;&lt;li&gt;Resolved failed deployment due to ClassNotFoundException on Geronimo (&lt;a href="http://code.google.com/p/prettyfaces/issues/detail?id=59"&gt;#59&lt;/a&gt; + r369)&lt;/li&gt;&lt;/ul&gt;</description>
      <pubDate>Sat, 04 Sep 2010 16:00:23 CDT</pubDate>
      <guid isPermaLink="true">http://ocpsoft.com/?p=1555</guid>
      <dc:creator>Lincoln Baxter III</dc:creator>
    </item>
    <item>
      <title>RichFaces 4.0 M2 is now available</title>
      <link>http://uberconf.com/blog/max_katz/2010/09/richfaces_4_0_m2_is_now_available?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;RichFaces 4 is one more milestone closer to GA. This week JBoss and Exadel teams have released RichFaces 4 Milestone 2. This milestone includes:&lt;/p&gt;
&lt;ul style="padding:0em"&gt;
&lt;li&gt;New components: accordion, autocomplete, inplaceInput, and inputNumberSlider&lt;/li&gt;
&lt;li&gt;Large scale stabilization to our core and CDK modules.&lt;/li&gt;
&lt;li&gt;The RichFaces Showcase Demo now includes all the components&lt;/li&gt;
&lt;li&gt;Support for cloud deployment is coming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, head to this &lt;a href="http://in.relation.to/16789.lace"&gt;post&lt;/a&gt; by &lt;a href="http://in.relation.to/Bloggers/Jay"&gt;Jay Balunas&lt;/a&gt;. There is more information on Milestone 3 plans as well as final release. &lt;/p&gt;
&lt;p&gt;If your team considering RichFaces 4, to get them up to speed faster, consider &lt;a href="http://mkblog.exadel.com/jsfrichfaces-training/"&gt;on-site RichFaces training or 1-day RichFaces 3 to 4 workshop&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Two other RichFaces events coming up:&lt;/p&gt;
&lt;ul style="padding:0em"&gt;
&lt;li&gt;Workshop: &lt;a href="http://mkblog.exadel.com/2010/08/richfaces-workshop-in-germany/"&gt;RichFaces 4 workshop at Herbstcampus in Nuremberg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Webinar: &lt;a href="https://inquiries.redhat.com/go/redhat/20100908AJAXApplicationswithJSF2andtheNewRichFaces4"&gt;Ajax Applications with JSF 2 and the New RichFaces 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Sat, 04 Sep 2010 13:00:25 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=2335</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Unofficial IRC channel for WebSphere eXtreme Scale</title>
      <link>http://uberconf.com/blog/billy_newport/2010/09/unofficial_irc_channel_for_websphere_extreme_scale?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I'm making an IRC channel on the IRC server ircnet.eversible.com called #ibmwxs&lt;/p&gt;
&lt;p&gt;I'll be hanging there as often as I can and hopefully you to.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dev/websphere/~4/1IYeS_jdXb8" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 04 Sep 2010 11:00:19 CDT</pubDate>
      <guid isPermaLink="true">tag:typepad.com,2003:post-6a00d83452595969e20133f38f34bc970b</guid>
      <dc:creator>Billy Newport</dc:creator>
    </item>
    <item>
      <title>9 Useful PHP Functions and Features You Need to Know</title>
      <link>http://uberconf.com/blog/mike_girouard/2010/09/9_useful_php_functions_and_features_you_need_to_know?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Nettuts+ a good one today: &lt;a href="http://net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/"&gt;9 Useful PHP Functions and Features You Need to Know&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A few good ones are on there which I didn&amp;#8217;t know about like &lt;code&gt;&lt;a href="http://php.net/glob"&gt;glob()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://php.net/scandir"&gt;scandir()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://php.net/gzcompress"&gt;gzcompress()&lt;/a&gt;&lt;/code&gt;/&lt;code&gt;&lt;a href="http://php.net/gzuncompress"&gt;gzuncompress()&lt;/a&gt;&lt;/code&gt; and I&amp;#8217;m surprised that I never knew about  &lt;code&gt;&lt;a href="http://php.net/register_shutdown_function"&gt;register_shutdown_function()&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;div style='clear:both'&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"&gt;Share this post&lt;/a&gt; &lt;/p&gt;</description>
      <pubDate>Sat, 04 Sep 2010 08:00:21 CDT</pubDate>
      <guid isPermaLink="true">http://www.lovemikeg.com/?p=292</guid>
      <dc:creator>Mike Girouard</dc:creator>
    </item>
    <item>
      <title>A Quick Intro to mongosniff</title>
      <link>http://uberconf.com/blog/mike_girouard/2010/09/a_quick_intro_to_mongosniff?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Kristina (MongoDB&amp;#8217;s author of the PHP and Perl driver) has published a quick and excellent &lt;a href="http://www.snailinaturtleneck.com/blog/2010/09/02/a-quick-intro-to-mongosniff/"&gt;introduction to &lt;/a&gt;&lt;code&gt;&lt;a href="http://www.snailinaturtleneck.com/blog/2010/09/02/a-quick-intro-to-mongosniff/"&gt;mongosniff&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Writing an application on top of a framework on top of a driver on top of the database is a bit like playing telephone: you say “insert foo” and the database says “purple monkey dishwasher.” mongosniff lets you see exactly what the database is hearing and saying.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I wasn&amp;#8217;t even aware of this little gem of a tool. I&amp;#8217;ve been stuck in a few situations where I&amp;#8217;ve often wondered what was going on in the background.&lt;/p&gt;
&lt;p&gt;via &lt;a href="http://www.snailinaturtleneck.com/blog/2010/09/02/a-quick-intro-to-mongosniff/"&gt;A Quick Intro to mongosniff&lt;/a&gt;.&lt;/p&gt;
&lt;div style='clear:both'&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"&gt;Share this post&lt;/a&gt; &lt;/p&gt;</description>
      <pubDate>Fri, 03 Sep 2010 16:00:17 CDT</pubDate>
      <guid isPermaLink="true">http://www.lovemikeg.com/?p=287</guid>
      <dc:creator>Mike Girouard</dc:creator>
    </item>
    <item>
      <title>Sharding with Hibernate</title>
      <link>http://uberconf.com/blog/andrew_glover/2010/09/sharding_with_hibernate?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;As I&amp;#8217;ve &lt;a href="http://thediscoblog.com/2010/08/03/think-twice-before-sharding/"&gt;pointed out before&lt;/a&gt;, &lt;a href="http://www.javaworld.com/podcasts/jtech/2008/072408jtech.html"&gt;sharding&lt;/a&gt; isn&amp;#8217;t for everyone, but it&amp;#8217;s one way that relational systems can meet the demands of huge data. For some shops, sharding means being able to keep a trusted database like MySQL in place without sacrificing data scalability or system performance. In this installment of the &lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=Java+development+2.0:"&gt;Java development 2.0 series&lt;/a&gt;, dubbed &amp;#8220;&lt;a href="http://www.ibm.com/developerworks/java/library/j-javadev2-11/"&gt;Sharding with Hibernate Shards&lt;/a&gt;&amp;#8221; find out when sharding works, and when it doesn&amp;#8217;t, and then get your hands busy sharding a simple Hibernate &amp;#038; Spring application capable of handling terabytes of data.&lt;/p&gt;
                                 &lt;p&gt;&lt;center&gt;Looking to spin up Continuous Integration &lt;em&gt;quickly&lt;/em&gt;? Check out &lt;a href="http://www.ciinabox.com"&gt;www.ciinabox.com&lt;/a&gt;.&lt;/center&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 03 Sep 2010 13:00:26 CDT</pubDate>
      <guid isPermaLink="true">http://thediscoblog.com/?p=1247</guid>
      <dc:creator>Andrew Glover</dc:creator>
    </item>
    <item>
      <title>Indieconf</title>
      <link>http://uberconf.com/blog/mike_girouard/2010/09/indieconf?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://indieconf.com/"&gt;indieconf &amp;#8211; the independent and web freelancer conference&lt;/a&gt; looks like a really awesome conference. If you&amp;#8217;re a participant in the conference season (either as a speaker or attendee) this is one to add to your list.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s pretty much no reason to &lt;em&gt;not&lt;/em&gt; go: It&amp;#8217;s one day, on a Saturday, and only $99.&lt;/p&gt;
&lt;p&gt;So far the sessions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Legal Issues in Software Development&lt;/li&gt;
&lt;li&gt;Pricing Your Services&lt;/li&gt;
&lt;li&gt;Marketing Through Publishing&lt;/li&gt;
&lt;li&gt;Top 10 Misconceptions of Software Freelancing&lt;/li&gt;
&lt;li&gt;Marketing Yourself as a Freelancer on an Online Community&lt;/li&gt;
&lt;li&gt;Driving Yourself to Success&lt;/li&gt;
&lt;li&gt;Retooling Your Workflow (Or: Git + Tickets = Happiness)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8230; and it appears that their &lt;a href="http://indieconf.com/submit/"&gt;CFP is still open&lt;/a&gt; (also very tempting).&lt;/p&gt;
&lt;div style='clear:both'&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"&gt;Share this post&lt;/a&gt; &lt;/p&gt;</description>
      <pubDate>Fri, 03 Sep 2010 11:00:30 CDT</pubDate>
      <guid isPermaLink="true">http://www.lovemikeg.com/?p=284</guid>
      <dc:creator>Mike Girouard</dc:creator>
    </item>
    <item>
      <title>Links for 2010-09-02 [del.icio.us]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2010/09/links_for_2010_09_02_del_icio_us_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gabbertalk.com/"&gt;GabberTalk&lt;/a&gt;&lt;br/&gt;
Need chat? Check this out.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt;&lt;br/&gt;
An interesting abstraction of JavaScript.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jade-lang.com/"&gt;Jade&lt;/a&gt;&lt;br/&gt;
Templating for node.js&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/fjQQOqhZEZI" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 03 Sep 2010 08:00:33 CDT</pubDate>
      <guid isPermaLink="true">http://del.icio.us/aarongustafson#2010-09-02</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Ouch [Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2010/08/ouch_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/4942990743/" title="Ouch"&gt;&lt;img src="http://farm5.static.flickr.com/4116/4942990743_5f97ea3415_m.jpg" width="160" height="240" alt="Ouch" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/6r-5Ws2MWrY" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 Sep 2010 16:00:12 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/4942990743</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>I don't unit test my classes</title>
      <link>http://uberconf.com/blog/john_smart/2010/08/i_don_t_unit_test_my_classes?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I don't unit test my classes. I don't even unit-test my methods. You'll be hard-put to find the word "test" in my source code. And I never, ever create a new JUnit Test Case  Eclipse.&lt;/p&gt;
&lt;div style="float:right"&gt;&lt;img src="http://www.wakaleo.com/images/smilie-stamp.png"/&gt;&lt;/div&gt;
&lt;p&gt;I prefer to test how my application &lt;em&gt;behaves&lt;/em&gt;. And I find it makes a huge difference.&lt;/p&gt;

&lt;p&gt;So how does that work? Well, I usually start off with a user story. Or, more precisely, with an acceptance test criteria. But I could have started with detailed specifications - it doesn't really matter. The point is, I'm starting with some requirements - in other words, a description of what my code is supposed to &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In practice, I will usually try to automate the acceptance criteria. Maybe a high-level test that steps through the whole user story to give a picture of where we are going. Automating the high-level test criteria, even incompletely, is a great idea, as it gives you a set of goal posts, an idea of what you are supposed to achieve for this requirement. It also forces you to think about the requirements in very concrete terms. I'll elaborate on this approach (which is known as Acceptance-Test-Driven-Development, or ATDD) in another article. I won't focus on domain modeling, or domain-driven-development, or high-level architecture workshops, or any other of the numerous technical activities that might end up going between the high-level requirements and the actual coding - all these have their place, but I don't want to discuss them here. In this article, I want to focus on the more low-level tests.
&lt;/p&gt;

&lt;p&gt;
I start off the actual coding by creating a new test class. But I don't call this class &lt;code&gt;AccountTest&lt;/code&gt; or &lt;code&gt;GizmoTest&lt;/code&gt;, or any other name with the word "Test" in it for that matter. I prefer to name my test after the feature I am trying to implement: &lt;code&gt;WhenAnAccountManagerConsultsTheClientDetails&lt;/code&gt; &lt;code&gt;WhenAClientTransfersMoneyBetweenAccounts&lt;/code&gt;, or &lt;code&gt;WhenTheGizmoSpinsInAClockwiseDirection&lt;/code&gt;. I might need several such test classes to fully explore the feature I'm working on. And I might need to drill down, later on, into more technical details. But the essential approach is this: it's all about providing context.
&lt;/p&gt;

&lt;p&gt;This is by no means just a formality. Naming the class well forces me to think about the feature I'm trying to implement. And it's harder than it sounds. But it gets me thinking about what the application will do in practice, and is the first step in the detailed design process.
&lt;/p&gt;

&lt;p&gt;Next, I drill down into the details. What exactly should the code do? I typically express this in the form sentence-like structures, very similar to the acceptance criteria. If I need to, I'll add some extra ones to clarify the requirements further. This is pretty standard TDD-stuff - nothing fancy here. The important thing is to make sure each one contains a context, an action and an expected outcome:
&lt;ul&gt;
  &lt;li&gt;When the account manager clicks on the client name the client details page should be displayed&lt;/li&gt;
  &lt;li&gt;When the source account has insufficient funds, the transfer is refused and no money is deducted from the source account&lt;/li&gt;
  &lt;li&gt;When the gizmo reaches 10 RPS, the red flashing light goes on.&lt;/li&gt;
  &lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
Sometimes the name of the class acts as a context, so you can get away with just the action and the expected outcome. But there should be an action and an expected outcome expressed somewhere.
&lt;/p&gt;

&lt;p&gt;Each of these sentences becomes a test. The exact form of the test will depend on your project. For Java projects, JUnit 4 will work fine, as will nUnit for .Net code. For the higher-level tests I am more inclined to use a dedicated BDD framework such as &lt;a href="http://www.easyb.org"&gt;easyb&lt;/a&gt; or &lt;a href="http://www.jbehave.org"&gt;JBehave&lt;/a&gt;. For Groovy and Grails, Spock is a great developer-focused BDD tool. And Ruby developers are very fond of RSpec and Cucumber. But even if you don't want to open a new tool box, you can still take advantage of this approach - just pay attention to your test names!
&lt;/p&gt;

&lt;p&gt;In JUnit 4 code, for example, the tests might look something like this:
&lt;code&gt;&lt;span style="whitespace:normal"&gt;
public void whenTheUserClicksOnTheClientNameTheDetailsPageShouldAppear(){
   ...
}&lt;/span&gt;
&lt;/code&gt;

or

&lt;code&gt;&lt;span style="whitespace:normal"&gt;
public void whenTheSourceAccountHasInsufficientFundsTheTranferIsNotDone() {
   ...
}&lt;/span&gt;
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;And now that I have a good idea about what I am supposed to be coding, I can start to think about classes and methods. Indeed, how could I start to code, if I don't understand the problem? &lt;/p&gt;

&lt;div style="float:left"&gt;&lt;img src="http://www.wakaleo.com/images/eclipse-test-names.png"/&gt;&lt;/div&gt;

&lt;p&gt;With a bit of care, this approach also give you a clean, well-organized, and above all working set of examples covering in detail how the different features that make up the application have been implemented, and how classes used to build the application are meant to be used. The class names and the method names read like a narrative. All you need to do is to organize them into sensible packages (for example, by feature).&lt;/p&gt;

&lt;p&gt;So I'm not actually testing my classes, or my methods. I'm testing the behaviour of my application - I just happen to be doing it by exercising classes and method calls. And the same approach applies at any level - I could be implementing web tests using page objects, or writing a low-level technical module. The same principles apply.&lt;/p&gt;

&lt;p&gt;This approach is of course not new - it's known as Behaviour-Driven Development, and there are some great tools out there to help you formalize the process. No matter what tool or language you are using, I would recommend &lt;a href="http://www.pragprog.com/titles/achbd/the-rspec-book"&gt;'The Rspec Book'&lt;/a&gt;, by Dan North and friends, as a good introduction to the general approach.
&lt;/p&gt;</description>
      <pubDate>Thu, 02 Sep 2010 13:00:15 CDT</pubDate>
      <guid isPermaLink="true">http://www.wakaleo.com/blog/282-i-dont-unit-test-my-classes</guid>
      <dc:creator>John Smart</dc:creator>
    </item>
    <item>
      <title>Come to Relevance and Be Excellent</title>
      <link>http://uberconf.com/blog/stuart_halloway/2010/08/come_to_relevance_and_be_excellent?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Earlier, we posted that we were seeking some new &lt;a href="http://thinkrelevance.com/blog/2010/08/16/company-seeking-conductors.html"&gt;PMs&lt;/a&gt; for the Relevance team.  At that time, I mentioned that we were always looking for great technical folk as well.  I think that deserves its own post.&lt;/p&gt;

&lt;p&gt;Our team is growing &lt;a href="http://thinkrelevance.com/blog/2010/07/19/welcome-new-teammates.html"&gt;pretty&lt;/a&gt; &lt;a href="http://thinkrelevance.com/blog/2010/08/17/welcome-more-new-team-members.html"&gt;fast&lt;/a&gt;.  Our combination of technology platforms and deep devotion to the people side of software is resonating really well with our customers and we want to encourage and enable that growth.  So what are we looking for?  I'm glad you asked.&lt;/p&gt;

&lt;p&gt;Are you excellent at Ruby and/or Clojure? Can you work sitting next to somebody who is at least as smart as you, pairing on solutions to wicked problems?  Do you want to work on open source or community projects 20% of the time? Can you jump back and forth between small apps for early-stage startups and giant systems for Fortune 100 companies?  How good are you at ping pong? Can you demonstrate a history of having an impact on the projects you contribute to? Do you practice TDD and have strong opinions about testing frameworks (we have an ongoing war over Cucumber here, and we need more combatants)?  Have you read &lt;a href="http://www.amazon.com/Cryptonomicon-Neal-Stephenson/dp/0060512806"&gt;Cryptonomicon&lt;/a&gt;, &lt;a href="http://www.amazon.com/Daemon-Daniel-Suarez/dp/0451228731"&gt;Daemon&lt;/a&gt; or &lt;a href="http://www.amazon.com/Black-Swan-Impact-Highly-Improbable/dp/1400063515"&gt;The Black Swan&lt;/a&gt;? Do you like to speak at conferences or write awesome blog posts about cool technology? Are you comfortable getting direct feedback about your work? How many of the founders of GitHub can you name?&lt;/p&gt;

&lt;p&gt;If you found yourself in the questions above, we want to talk with you.  We're looking for full-time or contract technologists.  We especially want people who can work in our Durham office, or who live in DC.  Come be part of something growing, special and fun.&lt;/p&gt;

&lt;p&gt;Drop us a line at &lt;a href="mailto:jobs@thinkrelevance.com"&gt;jobs@thinkrelevance.com&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-llc/~4/DsJi9wxkGKo" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 Sep 2010 11:00:20 CDT</pubDate>
      <guid isPermaLink="true">http://thinkrelevance.com/blog/2010/08/31/come-to-relevance-and-be-excellent</guid>
      <dc:creator>Stuart Halloway</dc:creator>
    </item>
    <item>
      <title>Exadel Tiggr mockups – dynamic widgets</title>
      <link>http://uberconf.com/blog/max_katz/2010/09/exadel_tiggr_mockups__dynamic_widgets?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;One of the neat features in &lt;a href="http://tiggr.exadel.com"&gt;Exadel Tiggr mockup creation and sharing tool&lt;/a&gt; is dynamic widgets. Let me explain. Let&amp;#8217;s say you have a tab panel with three tabs. Different content goes into the three tabs. When designing mockups, there is no simple way to show what content/widgets go into the first tab, the second and so on. With Tiggr is very simple because the tab widget is dynamic. In other words, you can click on the tab and switch between them. This way you can place different content into the tabs during design as in real application.  &lt;/p&gt;
&lt;p&gt;First tab:&lt;br /&gt;
&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2010/09/screenshot_068.png" alt="" title="screenshot_068" width="371" height="174" class="alignleft size-full wp-image-2326" /&gt;&lt;/p&gt;
&lt;p&gt;Second tab:&lt;br /&gt;
&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2010/09/screenshot_069.png" alt="" title="screenshot_069" width="369" height="175" class="alignleft size-full wp-image-2327" /&gt;&lt;/p&gt;
&lt;p&gt;Third tab:&lt;br /&gt;
&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2010/09/screenshot_070.png" alt="" title="screenshot_070" width="366" height="175" class="alignleft size-full wp-image-2328" /&gt;&lt;/p&gt;
&lt;p&gt;To edit tab label, just double-click on the text. And, to add/remove tabs, click on the tab and invoke the context-menu as shown:&lt;br /&gt;
&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2010/09/screenshot_072.png" alt="" title="screenshot_072" width="449" height="185" class="alignleft size-full wp-image-2331" /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Sep 2010 08:00:23 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=2325</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>MongoDB and CouchDB: vastly different queries</title>
      <link>http://uberconf.com/blog/andrew_glover/2010/09/mongodb_and_couchdb_vastly_different_queries?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;div style="float:right; padding-left:1.0em; padding-top:0.0em;"&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=thdibl-20&amp;#038;o=1&amp;#038;p=8&amp;#038;l=as1&amp;#038;asins=0596155891&amp;#038;fc1=000000&amp;#038;IS2=1&amp;#038;lt1=_blank&amp;#038;m=amazon&amp;#038;lc1=0000FF&amp;#038;bc1=000000&amp;#038;bg1=FFFFFF&amp;#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Both &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt; and &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; are document-oriented datastores. They both work with &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; documents. They both are usually thrown into the &lt;a href="http://nosql-database.org/"&gt;NoSQL bucket&lt;/a&gt;. They&amp;#8217;re both hip. But that&amp;#8217;s &lt;a href="http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB"&gt;where the similarities, for the most part, stop&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;When it comes to queries, both couldn&amp;#8217;t be any more different. CouchDB requires &lt;a href="http://www.ibm.com/developerworks/java/library/j-javadev2-5/index.html"&gt;pre-defined views&lt;/a&gt; (which are essentially JavaScript &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;MapReduce&lt;/a&gt; functions) and MongoDB supports dynamic-&lt;a href="http://www.mongodb.org/display/DOCS/Querying"&gt;queries&lt;/a&gt; (basically what you&amp;#8217;re used to with normal RDBMS ad-hoc SQL queries). What&amp;#8217;s more, when it comes to queries, CouchDB&amp;#8217;s API is &lt;a href="http://thediscoblog.com/2008/07/22/restful-services-without-the-sweat/"&gt;RESTful&lt;/a&gt;, while MongoDB&amp;#8217;s API is more native &amp;#8212; that is, you essentially issue a query using a driver in the code of your choice. &lt;/p&gt;
&lt;p&gt;For example, with CouchDB, in order to insert some data, I can use a tool like Groovy&amp;#8217;s &lt;a href="http://thediscoblog.com/2009/06/02/resting-easy-with-groovys-httpbuilder/"&gt;RESTClient&lt;/a&gt; and issue a RESTful post like so:&lt;/p&gt;
&lt;pre class="brush: groovy;"&gt;
import static groovyx.net.http.ContentType.JSON
import groovyx.net.http.RESTClient

def client = new RESTClient(&amp;quot;http://localhost:5498/&amp;quot;)
response = client.put(path: &amp;quot;parking_tickets/1234334325&amp;quot;,
  contentType: JSON,
  requestContentType:  JSON,
  body: [officer: &amp;quot;Robert Grey&amp;quot;,
         location: &amp;quot;199 Castle Dr&amp;quot;,
         vehicle_plate: &amp;quot;New York 77777&amp;quot;,
         offense: &amp;quot;Parked in no parking zone&amp;quot;,
         date: &amp;quot;2010/07/31&amp;quot;])
&lt;/pre&gt;
&lt;p&gt;Note, in this case, I have to delineate a ID for this parking ticket (1234334325) (I can, incidentally, ask CouchDB for a UUID too by issuing an HTTP GET to the &lt;code&gt;/_uuids&lt;/code&gt; path). &lt;/p&gt;
&lt;p&gt;If I wish to find all tickets issued by Officer Grey, for example, I must define a &lt;em&gt;view&lt;/em&gt;. Views are simply URLs that execute JavaScript MapReduce functions. Accordingly, I can quickly code a function to grab any document whose officer property is &amp;#8220;Robert Grey&amp;#8221; like so:&lt;/p&gt;
&lt;pre class="brush: jscript;"&gt;
function(doc) {
  if(doc.officer == &amp;quot;Robert Grey&amp;quot;){
    emit(null, doc);
  }
}
&lt;/pre&gt;
&lt;p&gt;I have to give this view a name; consequently, when I issue an HTPP GET request to that view&amp;#8217;s name, I can expect at least one document:&lt;/p&gt;
&lt;pre class="brush: groovy;"&gt;
response = client.get(path: &amp;quot;parking_tickets/_view/by_name/officer_grey&amp;quot;,
        contentType: JSON, requestContentType: JSON)

assert response.data.total_rows == 1
response.data.rows.each{
   assert it.value.officer == &amp;quot;Robert Grey&amp;quot;
}
&lt;/pre&gt;
&lt;p&gt;In summary, with CouchDB, I can&amp;#8217;t quickly issue an ad-hoc RESTful call to obtain some bit of information &amp;#8212; I must &lt;em&gt;first&lt;/em&gt; &lt;a href="http://sitr.us/2009/06/30/database-queries-the-couchdb-way.html"&gt;define a query&lt;/a&gt; (aka view) and then expose it to the outside world. In contrast, &lt;a href="http://myadventuresincoding.wordpress.com/2010/03/07/mongodb-queries-in-java-using-conditional-operators/"&gt;MongoDB works much like you&amp;#8217;ve been used to&lt;/a&gt; with normal databases: you can query for what ever your heart desires at runtime. &lt;/p&gt;
&lt;p&gt;For example, I can add the same instance of a parking ticket using MongoDB&amp;#8217;s native Java driver (there are better options for working with MongoDB, by the way) like so:&lt;/p&gt;
&lt;pre class="brush: java;"&gt;
DBCollection coll = db.getCollection(&amp;quot;parking_tickets&amp;quot;);
BasicDBObject doc = new BasicDBObject();

doc.put(&amp;quot;officer&amp;quot;, &amp;quot;Robert Grey&amp;quot;);
doc.put(&amp;quot;location&amp;quot;, &amp;quot;199 Castle Dr&amp;quot;);
doc.put(&amp;quot;vehicle_plate&amp;quot;, &amp;quot;New York 77777&amp;quot;);
//...
coll.insert(doc);
&lt;/pre&gt;
&lt;p&gt;I can subsequently find any ticket issued by Officer Robert Smith by simply issuing a query on the &lt;code&gt;officer&lt;/code&gt; property like so:&lt;/p&gt;
&lt;pre class="brush: java;"&gt;
BasicDBObject query = new BasicDBObject();
query.put(&amp;quot;officer&amp;quot;, &amp;quot;Robert Smith&amp;quot;);
DBCursor cur = coll.find(query);
 while (cur.hasNext()) {
   System.out.println(cur.next());
 }
&lt;/pre&gt;
&lt;p&gt;Thus, while both document-oriented datastores have &lt;a href="http://www.slideshare.net/gabriele.lana/couchdb-vs-mongodb-2982288"&gt;some similarities&lt;/a&gt;, then it comes to querying, they are vastly different. CouchDB requires the usage of MapReduce while MongoDB allows for more dynamically oriented queries (MongoDB also supports MapReduce).  Can you dig it?&lt;/p&gt;
                                 &lt;p&gt;&lt;center&gt;Looking to spin up Continuous Integration &lt;em&gt;quickly&lt;/em&gt;? Check out &lt;a href="http://www.ciinabox.com"&gt;www.ciinabox.com&lt;/a&gt;.&lt;/center&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 01 Sep 2010 16:00:15 CDT</pubDate>
      <guid isPermaLink="true">http://thediscoblog.com/?p=1207</guid>
      <dc:creator>Andrew Glover</dc:creator>
    </item>
  </channel>
</rss>

