<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rob Reynolds - The Fervent Coder : UppercuT, SidePOP</title><link>http://devlicio.us/blogs/rob_reynolds/archive/tags/UppercuT/SidePOP/default.aspx</link><description>Tags: UppercuT, SidePOP</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Gems - Package Management For .NET</title><link>http://devlicio.us/blogs/rob_reynolds/archive/2010/07/15/gems-package-management-for-net.aspx</link><pubDate>Fri, 16 Jul 2010 04:27:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:61091</guid><dc:creator>Rob Reynolds</dc:creator><slash:comments>18</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/rob_reynolds/rsscomments.aspx?PostID=61091</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/rob_reynolds/commentapi.aspx?PostID=61091</wfw:comment><comments>http://devlicio.us/blogs/rob_reynolds/archive/2010/07/15/gems-package-management-for-net.aspx#comments</comments><description>&lt;p&gt;The Ruby community has enjoyed a great user experience with a package management system they use called Gems. A gem is a package (or a library), compressed with some additional metadata, and can be either source files or binaries. Let&amp;rsquo;s focus on binary gems. We have the same concept in .NET (DLLs/EXEs). You may have references to other DLLs. When you want to update a reference you are using on a project, you may also need to update its dependencies as well. And so on and so forth. A package management project is meant to help make that easier. It&amp;rsquo;s actually really hard to explain what gems or package management without just showing you. So take a look here:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_5AC297E8.png"&gt;&lt;img height="181" width="455" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_thumb_5F00_0456631C.png" alt="gem install sidepop - installed log4net - installed sidepop" border="0" title="gem install sidepop - installed log4net - installed sidepop" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I type:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;gem install sidepop&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And that&amp;rsquo;s it. It looks and sees that I have a dependency on log4net. Notice how it nicely just pulls down log4net version 1.2.10 as well? &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;I can count on one hand all of the package management projects that have been &lt;a target="_blank" href="http://strangelights.com/blog/archive/2010/05/16/1661.aspx"&gt;started&lt;/a&gt; &lt;a target="_blank" href="http://github.com/dagda1/horn_src"&gt;for&lt;/a&gt; &lt;a target="_blank" href="http://github.com/phatboyg/nu"&gt;.NET&lt;/a&gt;. &lt;a target="_blank" href="http://twitter.com/drusellers"&gt;Dru Sellers&lt;/a&gt;, &lt;a target="_blank" href="http://twitter.com/phatboyg"&gt;Chris Patterson&lt;/a&gt;, and I have talked about package management stuff from time to time. Dru and Chris have been a part of one project (&lt;a target="_blank" href="http://github.com/phatboyg/nu"&gt;Nu&lt;/a&gt;) that has been started several times to start to answer this question. We&amp;rsquo;ve participated on the mailing list for &lt;a target="_blank" href="http://groups.google.com/group/horn-development"&gt;HornGet&lt;/a&gt;. At one point I casually asked why we couldn&amp;rsquo;t just use gems. Other people out there have probably stated the same thing. But no one has really carried the idea forward. Until now.&lt;/p&gt;
&lt;p&gt;Yesterday Dru asked for a &lt;a target="_blank" href="http://code.google.com/p/uppercut/issues/detail?id=16"&gt;gem-ify&lt;/a&gt; feature for &lt;a target="_blank" href="http://projectuppercut.org"&gt;UppercuT&lt;/a&gt;. We started talking and looking at how easy it is to create a gem. Then we figured out how to make the &lt;a target="_blank" href="http://stackoverflow.com/questions/3250794/gems-with-net-applications-how-do-i-set-up-the-executables-so-they-run-without"&gt;executables&lt;/a&gt; piece work as well. This is where you can install a gem and then call the executable from the command line anywhere and get output. From the &lt;a target="_blank" href="http://groups.google.com/group/chucknorrisframework/browse_thread/thread/4f0c0deeadbd61d4"&gt;thread&lt;/a&gt; on &lt;a target="_blank" href="http://groups.google.com/group/chucknorrisframework/"&gt;ChuckNorris&lt;/a&gt; where we talked about this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here is something you might find pretty interesting: &lt;a target="_blank" href="http://rubygems.org/gems/roundhouse"&gt;http://rubygems.org/gems/roundhouse&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://rubygems.org/gems/roundhouse"&gt;&lt;/a&gt;If you have ruby installed, you can install roundhouse now from the command line:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gem install roundhouse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This gives you the opportunity to type this anywhere:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;rh &amp;lt;options&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;&lt;strong&gt;Why Should I Care?&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;If you work with Open Source, you know how much of a pain it can be to update your references. You update one library, say NHibernate, and find out that you also need to update your references to Castle. And possibly, you might then need to update your references to log4net. It can be a painful process. This is the start of answering that question.&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_18034CB0.png"&gt;&lt;img height="221" width="404" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_thumb_5F00_76A3A713.png" align="right" alt="Right now it&amp;#39;s starting to look like the answer for gems in .NET is just gems." border="0" title="Right now it&amp;#39;s starting to look like the answer for gems in .NET is just gems." style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" /&gt;&lt;/a&gt;&lt;/strong&gt;Why Should I Get Excited?&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;It sounds like &lt;a target="_blank" href="http://twitter.com/jeremydmiller/statuses/18628012354"&gt;Jeremy Miller&lt;/a&gt; among others are getting excited about this. And why not? We&amp;rsquo;ve been trying to answer the gems question since Ruby made it so easy. &lt;/p&gt;
&lt;p&gt;The implications of this are awesome! I still haven&amp;rsquo;t fully grokked what we&amp;rsquo;ve just opened up.&amp;nbsp; But it&amp;rsquo;s huge! &lt;/p&gt;
&lt;p&gt;It doesn&amp;rsquo;t get us all of the way there to updating the references in our source code folder. That&amp;rsquo;s where projects, like Nu, are going to start showing up that leverage the idea of using the gems infrastructure to get the libraries from the ruby folders to your source code folder. You are going to see UppercuT come back soon with taking care of getting your gem built with the proper version.&lt;/p&gt;
&lt;p&gt;This is the start of something very cool.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Related Posts&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Before you comment about &amp;ldquo;cluttering&amp;rdquo; the ruby community, please be sure to read this (we&amp;rsquo;re with you on this):&amp;nbsp; &lt;a target="_blank" href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/19/gems-for-net-community-response.aspx" title="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/19/gems-for-net-community-response.aspx"&gt;http://devlicio.us/blogs/rob_reynolds/archive/2010/07/19/gems-for-net-community-response.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/16/how-to-gems-and-net.aspx"&gt;How To - Gems and .NET&lt;/a&gt;&amp;nbsp; and &lt;a target="_blank" href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/17/how-to-gems-and-net-dependencies-references.aspx"&gt;How To &amp;ndash; Gems &amp;amp; .NET - Dependencies (References)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/20/how-to-uppercut-and-gems.aspx"&gt;Walkthrough &amp;ndash; Create Gems Even Easier With a Conventional Build (UppercuT)!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://devlicio.us/blogs/rob_reynolds/archive/2010/07/26/the-future-of-net-open-source-software-delivery.aspx"&gt;The Future is Now!&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=61091" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/RoundhousE/default.aspx">RoundhousE</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/SidePOP/default.aspx">SidePOP</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/UppercuT/default.aspx">UppercuT</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/Development/default.aspx">Development</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/Tools/default.aspx">Tools</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/Gems/default.aspx">Gems</category></item><item><title>Chuck Norris Welcomes You</title><link>http://devlicio.us/blogs/rob_reynolds/archive/2010/04/17/chuck-norris-welcomes-you.aspx</link><pubDate>Sat, 17 Apr 2010 14:57:21 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:57410</guid><dc:creator>Rob Reynolds</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/rob_reynolds/rsscomments.aspx?PostID=57410</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/rob_reynolds/commentapi.aspx?PostID=57410</wfw:comment><comments>http://devlicio.us/blogs/rob_reynolds/archive/2010/04/17/chuck-norris-welcomes-you.aspx#comments</comments><description>&lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;a href="http://www.codesqueeze.com/the-ultimate-top-25-chuck-norris-the-programmer-jokes/" target="_blank"&gt;Chuck Norris doesn’t program with a keyboard. He stares the computer down until it does what he wants.&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_62A08492.png"&gt;&lt;img style="border-right-width:0px;margin:10px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Chuck Norris welcomes you" border="0" alt="Chuck Norris welcomes you" align="right" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rob_5F00_reynolds/image_5F00_thumb_5F00_42091F13.png" width="174" height="320" /&gt;&lt;/a&gt; All things need a name. We’ve tossed around a bunch of names for the framework of tools we’ve been working on, but one we kept coming back to was Chuck Norris. Why did we choose Chuck Norris? Well Chuck Norris sort of chose us. Everything we talked about, the name kept drawing us closer to it. We couldn’t escape Chuck Norris, no matter how hard we tried. So we gave in.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.chucknorrisfacts.com/node/101" target="_blank"&gt;Chuck Norris can divide by zero.&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;strong&gt;What is the &lt;/strong&gt;&lt;a href="http://groups.google.com/group/chucknorrisframework" target="_blank"&gt;&lt;strong&gt;Chuck Norris Framework&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;?&lt;u&gt; &lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://twitter.com/drusellers" target="_blank"&gt;@drusellers&lt;/a&gt; and I have been working on a variety of tools:&lt;/p&gt;  &lt;p&gt;WarmuP - &lt;a href="http://github.com/chucknorris/warmup" target="_blank"&gt;http://github.com/chucknorris/warmup&lt;/a&gt; (Template your entire project/solution and create projects ready to code - From Zero to a Solution with everything in seconds. Your templates, your choices.)     &lt;br /&gt;UppercuT - &lt;a href="http://projectuppercut.org/"&gt;http://projectuppercut.org&lt;/a&gt; (Build with Conventions - Professional Builds in Moments, Not Days!) | Code also at &lt;a title="http://github.com/chucknorris/uppercut" href="http://github.com/chucknorris/uppercut" target="_blank"&gt;http://github.com/chucknorris/uppercut&lt;/a&gt;     &lt;br /&gt;DropkicK - &lt;a href="http://github.com/chucknorris/dropkick" target="_blank"&gt;http://github.com/chucknorris/dropkick&lt;/a&gt; (Deploy Fluently)     &lt;br /&gt;RoundhousE - &lt;a href="http://projectroundhouse.org/"&gt;http://projectroundhouse.org&lt;/a&gt; (Professional Database Management with Versioning) | Code also at &lt;a title="http://github.com/chucknorris/roundhouse" href="http://github.com/chucknorris/roundhouse" target="_blank"&gt;http://github.com/chucknorris/roundhouse&lt;/a&gt;     &lt;br /&gt;SidePOP - &lt;a href="http://sidepop.googlecode.com/"&gt;http://sidepop.googlecode.com&lt;/a&gt; (Does your application need to check email?)     &lt;br /&gt;HeadlocK - &lt;a href="http://github.com/chucknorris/headlock" target="_blank"&gt;http://github.com/chucknorris/headlock&lt;/a&gt; (Hash a directory so you can later know if anything has changed) &lt;/p&gt;  &lt;p&gt;Others – still in concept or vaporware &lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;What’s in a Name?&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;People ask why we choose such violent names for each tool of our framework? At first it was about whipping your code into shape, but after awhile the naming became, “How can we relate this to Chuck Norris?” People also ask why we uppercase the last letter of each name. Well, that’s more about making you ask questions…but there are a few reasons for it. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.codesqueeze.com/the-ultimate-top-25-chuck-norris-the-programmer-jokes" target="_blank"&gt;Project managers never ask Chuck Norris for estimations…ever.&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.codesqueeze.com/the-ultimate-top-25-chuck-norris-the-programmer-jokes/" target="_blank"&gt;The class object inherits from Chuck Norris&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.codesqueeze.com/the-ultimate-top-25-chuck-norris-the-programmer-jokes/" target="_blank"&gt;Chuck Norris doesn’t need garbage collection because he doesn’t call .Dispose(), he calls .DropKick()&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;strong&gt;Call To Action&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;So what are you waiting for? Join the &lt;a href="http://groups.google.com/group/chucknorrisframework" target="_blank"&gt;Google group&lt;/a&gt; today, download and play with the tools. &lt;/p&gt;  &lt;p&gt;And lastly, welcome to Chuck Norris. Or should I say Chuck Norris welcomes you…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=57410" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/RoundhousE/default.aspx">RoundhousE</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/SidePOP/default.aspx">SidePOP</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/UppercuT/default.aspx">UppercuT</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/Development/default.aspx">Development</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/Tools/default.aspx">Tools</category><category domain="http://devlicio.us/blogs/rob_reynolds/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>