<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Monologue</title>
    <description>The voices of Mono</description>
    <link>http://www.go-mono.com/monologue/</link>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Monologue worker: b-diddy powered</generator>
    <item>
      <title>Unity Technologies: Unity 3 coming soon!</title>
      <description> 
In the Unite 2009 conference keynote we promised you that Unity would be picking up speed, and it has: Unity has become a powerhouse in the game industry and beyond. Nobody else is as active in democratizing sweet game technology to as many developers, and enabling them to target as many consumers. Unity has been [...]</description>
      <link>http://blogs.unity3d.com/2010/03/09/unity-3-coming-soon/</link>
      <category>Rants &amp; Raves</category>
      <author>Unity_x0020_Technologies@monologue.go-mono.com</author>
      <comments>http://blogs.unity3d.com/2010/03/09/unity-3-coming-soon/#comments</comments>
      <guid isPermaLink="false">http://blogs.unity3d.com/?p=2510</guid>
      <pubDate>Tue, 09 Mar 2010 20:38:27 GMT</pubDate>
    </item>
    <item>
      <title>Craig Dunn: Anatomy of a c# iPhone app (with MonoTouch)</title>
      <description>Wow - it has been a long time since my last post... and with good reason ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_Ba76y6K7kvs/S5YZjrYMH-I/AAAAAAAABKc/HEqnTzu1ZH8/s1600-h/BookCover.png" target="20100308"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 100px; FLOAT: left; HEIGHT: 129px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446568900081491938" border="0" alt="" src="http://3.bp.blogspot.com/_Ba76y6K7kvs/S5YZjrYMH-I/AAAAAAAABKc/HEqnTzu1ZH8/s200/BookCover.png" /&gt;&lt;/a&gt;Firstly I've been busily writing (along with Wally, Chris, Martin &amp;amp; Rory) for Wrox' upcoming &lt;a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-047063782X.html"&gt;&lt;b&gt;Professional iPhone Programming with MonoTouch and .NET/C#&lt;/b&gt;&lt;/a&gt; which is available for pre-order on &lt;a href="http://www.amazon.com/Professional-iPhone-Programming-MonoTouch-NET/dp/047063782X/"&gt;Amazon&lt;/a&gt;. If you are interested in developing for the iPhone using C# and the .NET Framework it should be a great addition to all the resources already out there on the web.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_Ba76y6K7kvs/S5YaXxsqbzI/AAAAAAAABKk/J1_Ehh4TjQ4/s1600-h/MIX10_logo.png" target="20100308"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 72px; FLOAT: left; HEIGHT: 82px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446569795131174706" border="0" alt="" src="http://2.bp.blogspot.com/_Ba76y6K7kvs/S5YaXxsqbzI/AAAAAAAABKk/J1_Ehh4TjQ4/s200/MIX10_logo.png" /&gt;&lt;/a&gt;&lt;a href="itms://itunes.apple.com/us/app/mix10/id357234402?mt=8" target="20100308"&gt;&lt;img align="right" src="http://mix10.confapp.com/Images/app-store_150x49.png" /&gt;&lt;/a&gt;Secondly I've been working on an iPhone app for &lt;a href="http://live.visitmix.com/" target="20100308"&gt;MIX10&lt;/a&gt; in Las Vegas next week (with help from Chris, Miguel &amp;amp; Geoff). It is now &lt;a href="http://itunes.apple.com/au/app/mix10/id357234402?mt=8" target="20100308"&gt;&lt;b&gt;available FREE on the AppStore&lt;/b&gt;&lt;/a&gt; and has a website at &lt;a href="http://mix10.confapp.com/" target="20100308"&gt;mix10.confapp.com&lt;/a&gt;. Whether you are heading to MIX or just curious about C# and &lt;a href="http://monotouch.net/" target="20100308"&gt;MonoTouch&lt;/a&gt; on the iPhone, why not download and give it a try?&lt;br /&gt;&lt;br /&gt;Since the MIX10.app was first 'announced' on &lt;a href="http://twitter.com/#search?q=%23mix10" target="20100308"&gt;twitter #MIX10&lt;/a&gt; there have been a number of requests for the source code. Unfortunately the source isn't public at the moment, however that doesn't mean we can't talk about "how it works". To start with, the MIX10.app is based on two previous &lt;b&gt;iPhone apps written in C# with &lt;a href="http://monotouch.net/" target="20100308"&gt;MonoTouch&lt;/a&gt;&lt;/b&gt;, and whose source code &lt;i&gt;is&lt;/i&gt; available: &lt;ul&gt;&lt;li&gt;&lt;b&gt;Monospace09&lt;/b&gt; code is on &lt;a href="http://github.com/conceptdev/Monospace09" target="20100308"&gt;github&lt;/a&gt; and is discussed on my &lt;a href="http://conceptdev.blogspot.com/2009/10/monotouch-for-monospace.html" target="20100308"&gt;blog&lt;/a&gt; (and &lt;a href="http://conceptdev.blogspot.com/2009/10/monotouch-flip-flop-with-uiview.html" target="20100308"&gt;here&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;PDC09&lt;/b&gt; is on &lt;a href="http://github.com/conceptdev/PDC09" target="20100308"&gt;github&lt;/a&gt; and discussed in this &lt;a href="http://conceptdev.blogspot.com/2009/11/another-monotouch-conference-app-pdc09.html"&gt;post&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;If you have an Intel Mac (with Snow Leopard) then you can download both the Apple SDK and the MonoTouch trial version for free and get both these C# .NET examples running in the iPhone Simulator for yourself. To deploy on a real iPhone requires certificates and licences (from Apple and Novell/MonoTouch respectively).&lt;br /&gt;&lt;br /&gt;&lt;b style="COLOR: darkred"&gt;MIX10.app&lt;/b&gt;&lt;br /&gt;Here's the overall class diagram for the MIX10.app (with the views shown too). Even without seeing the code it's clear that the classes themselves are not overly complex (ie. few methods are required; and inheritance can be leveraged to share common functionality).&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_Ba76y6K7kvs/S5YhojaQiwI/AAAAAAAABLM/guJuZfRSyJI/s1600-h/ClassDiagram2a.png" target="20100308"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 286px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446577779935054594" border="0" alt="" src="http://3.bp.blogspot.com/_Ba76y6K7kvs/S5YhojaQiwI/AAAAAAAABLM/guJuZfRSyJI/s400/ClassDiagram2a.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The MIX10.app also uses Miguel's &lt;a href="http://github.com/migueldeicaza/MonoTouch.Dialog" target="20100308"&gt;MonoTouch.Dialog framwork&lt;/a&gt; and he's posted a snippet of code on &lt;a href="http://gist.github.com/312933" target="20100308"&gt;gist.github&lt;/a&gt; which is responsible for this screen (on the left)&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_Ba76y6K7kvs/S5Yee3hqS7I/AAAAAAAABK0/y6t0R4voi80/s1600-h/IMG_1073.PNG" target="20100308"&gt;&lt;img align="left" style="MARGIN: 0px 10px 10px 0px; WIDTH: 134px; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446574315001236402" border="0" alt="" src="http://2.bp.blogspot.com/_Ba76y6K7kvs/S5Yee3hqS7I/AAAAAAAABK0/y6t0R4voi80/s200/IMG_1073.PNG" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5Yezxm4-_I/AAAAAAAABK8/2N6lfvVy6T0/s1600-h/IMG_1068.PNG" target="20100308"&gt;&lt;img style="WIDTH: 134px; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446574674189810674" border="0" alt="" align="right" src="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5Yezxm4-_I/AAAAAAAABK8/2N6lfvVy6T0/s200/IMG_1068.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And he also posted &lt;a href="http://tirania.org/blog/archive/2010/Feb-23.html" target="20100308"&gt;this code&lt;/a&gt; which creates the 'My Schedule' view on the right. Pretty neat use of Linq, eh? I'm not sure I've seen such an expressive user-interface expressed in so few lines of code before...&lt;pre style="PADDING-BOTTOM: 15px; LINE-HEIGHT: 110%; MARGIN: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; FONT-FAMILY: 'Courier New', Courier; FONT-SIZE: small; PADDING-TOP: 15px"&gt;public class FavoritesViewController : DialogViewController {&lt;br /&gt;  public FavoritesViewController () : base (null) { }&lt;br /&gt;  public override void ViewWillAppear (bool animated)&lt;br /&gt;  {&lt;br /&gt;    var favs = AppDelegate.UserData.GetFavoriteCodes();&lt;br /&gt;    Root = new RootElement ("Favorites") {&lt;br /&gt;      from s in AppDelegate.ConferenceData.Sessions&lt;br /&gt;        where favs.Contains(s.Code)&lt;br /&gt;        group s by s.Start into g&lt;br /&gt;        orderby g.Key&lt;br /&gt;        select new Section (MakeCaption ("", g.Key)) {&lt;br /&gt;          from hs in g&lt;br /&gt;            select (Element) new SessionElement (hs)&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;The object model closely follows the data available from the &lt;a href="http://api.visitmix.com/"&gt;api.visitmix.com&lt;/a&gt; site's OData and RSS feeds. These are plain vanilla C# objects which also run on the server to download and package the data for the iPhone - the object graph is serialized by a .NET application on Windows Server 2003, downloaded by the WebClient class on the iPhone (thanks to MonoTouch) and &lt;i&gt;de&lt;/i&gt;-serialized ready for display. A perfect example of the cross-platform possibilities facilitated by MonoTouch and having the .NET framework available on both server and mobile device.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5YiCkmt9EI/AAAAAAAABLU/tGmYf7brRxI/s1600-h/ClassDiagramObjects.png" target="20100308"&gt;&lt;img style="WIDTH: 357px; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446578226932347970" border="0" alt="" src="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5YiCkmt9EI/AAAAAAAABLU/tGmYf7brRxI/s400/ClassDiagramObjects.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, here's a quick overview of ALL the screens in the app. Did I mention you should &lt;a href="http://itunes.apple.com/au/app/mix10/id357234402?mt=8" target="20100308"&gt;give it a try&lt;/a&gt;?&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5YhGlPhriI/AAAAAAAABLE/y7V5bJZ9YRI/s1600-h/ALL.png" target="20100308"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 381px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446577196311359010" border="0" alt="" src="http://4.bp.blogspot.com/_Ba76y6K7kvs/S5YhGlPhriI/AAAAAAAABLE/y7V5bJZ9YRI/s400/ALL.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and if you're a Windows Phone Series 7 fan-in-the-making, it should be obvious that having a shared set of services and functionality in C# that can be deployed across iPhones with MonoTouch, and Silverlight/Windows Phone 7 with only UI code needing to be customized is a great way to achieve maximum reach for your apps. The &lt;a href="http://monotouch.net/Roadmap" target="20100308"&gt;MonoTouch Roadmap&lt;/a&gt; is also targetting a Q3 release of &lt;code&gt;MonoDroid&lt;/code&gt;, so with a bit of imagination it isn't hard to see where the future of cross-mobile-device development is heading...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6621561-4496968635893419402?l=conceptdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://conceptdev.blogspot.com/2010/03/anatomy-of-c-iphone-app-with-monotouch.html</link>
      <category domain="http://www.blogger.com/atom/ns#">monotouch</category>
      <category domain="http://www.blogger.com/atom/ns#">ipodtouch</category>
      <category domain="http://www.blogger.com/atom/ns#">iphone</category>
      <author>Craig_x0020_Dunn@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-6621561.post-4496968635893419402</guid>
      <pubDate>Tue, 09 Mar 2010 09:36:00 GMT</pubDate>
    </item>
    <item>
      <title>Lluis Sánchez : Improving in the MonoDevelop user interface</title>
      <description>In the past weeks (actually, months) I've been doing some changes in the MonoDevelop GUI to make it more functional and better looking. Here is the result:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Before&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cHnO0qtZD7s/S5T_w_ThTDI/AAAAAAAABao/vv2FZ14legM/s1600-h/NewGuiBefore.png"&gt;&lt;img src="http://3.bp.blogspot.com/_cHnO0qtZD7s/S5T_w_ThTDI/AAAAAAAABao/vv2FZ14legM/s400/NewGuiBefore.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446259066489883698" style="cursor: pointer; width: 400px; height: 238px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cHnO0qtZD7s/S5Tmsqf2EsI/AAAAAAAABZ4/yD6OZBesVwo/s1600-h/NewGuiBefore.png"&gt;&lt;/a&gt;&lt;b&gt;After&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cHnO0qtZD7s/S5T_4uXh-sI/AAAAAAAABaw/oe0lGxxuTrY/s1600-h/NewGuiAfter.png"&gt;&lt;img src="http://2.bp.blogspot.com/_cHnO0qtZD7s/S5T_4uXh-sI/AAAAAAAABaw/oe0lGxxuTrY/s400/NewGuiAfter.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446259199382256322" style="cursor: pointer; width: 400px; height: 238px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Changes in the Status Bar&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Everything started with the idea of removing the status bar, in order to save space in the main window. The plan was to use something similar to Chrome's status popups, which are visible only when there is actual information to show to the user. However, after playing with the idea and thinking about how would it fit in MonoDevelop, I decided to try something else. Instead of removing the status bar, we would make a better use of the space it takes. So in the new GUI I merged the status bar and the bottom dock bar. The dock bar is the area where the title of pads in auto-hide mode are shown (for example, the Test Results pad in the above screenshots). When you hover over the title, the pad is shown in a popup window, with a nice sliding effect. The bottom dock bar is now shown next to the status bar, growing as more space is required.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5TtMdYR-ZI/AAAAAAAABaI/Q1VhVQB682A/s1600-h/NewGuiStatusBar.png"&gt;&lt;img src="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5TtMdYR-ZI/AAAAAAAABaI/Q1VhVQB682A/s400/NewGuiStatusBar.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446238647698454930" style="cursor: pointer; width: 400px; height: 10px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also added support for custom pad labels. So for example, the Errors List pad now shows the error and warning count, instead of just the "Errors List" label. In this way pads can show some status information while they are minimized.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Less intrusive output pads&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Temporary output pads such as logs for Version Control or Find in Files operations are now shown in autohide mode by default. Until now, those pads were shown docked at the bottom, taking space from the text editor. I also removed the standalone Build Output pad. The build output is now available in the Errors List pad, by clicking on the Build Oputput button:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5T025_r3QI/AAAAAAAABaY/ZKUoTaYwYNc/s1600-h/NewGuiBuildPad.png"&gt;&lt;img src="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5T025_r3QI/AAAAAAAABaY/ZKUoTaYwYNc/s400/NewGuiBuildPad.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446247073515822338" style="cursor: pointer; width: 400px; height: 327px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Visual improvements&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A noticeable visual change is that the main window new has a darker background, with some subtle shading effects. The pads look more "physical" and better delimited. The pad toolbars are now integrated in the docking system, improving the overall visual consistency.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cHnO0qtZD7s/S5TzPTug6xI/AAAAAAAABaQ/Woa9tHuu6SE/s1600-h/NewGuiPadToolbar.png"&gt;&lt;img src="http://4.bp.blogspot.com/_cHnO0qtZD7s/S5TzPTug6xI/AAAAAAAABaQ/Woa9tHuu6SE/s400/NewGuiPadToolbar.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446245293716728594" style="cursor: pointer; width: 288px; height: 299px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Configurable GUI compactness&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing I learned while working in MonoDevelop is that it is hard to find the right balance in the use of padding between the gui components (specifically, between the components shown in the main window). Using more padding makes the GUI more visually pleasant, and the components are better delimited. On the other hand, padding may be a waste of space when working on small resolutions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I added a configuration option for selecting the level of compactness of the GUI. There are five levels, from Very Compact to Very Spacious. So for example, the screenshots shown above are using the 'Spacious' level. In that level, there is some padding always visible between the pads, the window borders and the main menu. There is no such padding in 'Normal' mode.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cHnO0qtZD7s/S5T7gpCeMXI/AAAAAAAABag/t5DmI-D5E8I/s1600-h/NewGuiCompactOptions.png"&gt;&lt;img src="http://3.bp.blogspot.com/_cHnO0qtZD7s/S5T7gpCeMXI/AAAAAAAABag/t5DmI-D5E8I/s400/NewGuiCompactOptions.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446254387588378994" style="cursor: pointer; width: 400px; height: 287px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Zoomable tree views&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MonoDevelop has an option which allows choosing the font to use for the tree view pads such as the Solution pad or the Class pad. Those trees may be large for big projects, so users find it convenient to use a small font, which allows seeing more information at once.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To make font reduction easier and more handy, I added a Zoom capability to the tree pads. So to zoom, all you have to do is hold the Control key and move the mouse wheel up and down (the standard zoom shortcuts can also be used for this, including Control+0 to reset the zoom). This screenshot shows the solution and class pads with different levels of zoom:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5UBJZdcbaI/AAAAAAAABa4/aHzR5IHzGbo/s1600-h/NewGuiZoomableTreeViews.png"&gt;&lt;img src="http://1.bp.blogspot.com/_cHnO0qtZD7s/S5UBJZdcbaI/AAAAAAAABa4/aHzR5IHzGbo/s400/NewGuiZoomableTreeViews.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5446260585339317666" style="cursor: pointer; width: 400px; height: 327px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The changes I described are part of an ongoing effort to make MonoDevelop easier to use. There is more to come. It would be great to have feedback on the changes we are doing, so that we can further fine tune the interface for the 2.4 release.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6440604575561980711-6278917027198806042?l=foodformonkeys.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://foodformonkeys.blogspot.com/2010/03/improving-in-monodevelop-user-interface.html</link>
      <author>Lluis_x0020_Sánchez_x0020_@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-6440604575561980711.post-6278917027198806042</guid>
      <pubDate>Mon, 08 Mar 2010 13:50:00 GMT</pubDate>
    </item>
    <item>
      <title>Simon Guindon: Simon says, Diggify MonoTouch app is coming soon to the AppStore</title>
      <description>The MonoTouch app Project-D has been unveiled as Diggify and is coming soon to the AppStore.</description>
      <link>http://simon.nureality.ca/?p=241</link>
      <category>Diggify</category>
      <category>Mobile</category>
      <category>MonoTouch</category>
      <category>Project-D</category>
      <category>Apple</category>
      <category>iPhone</category>
      <author>Simon_x0020_Guindon@monologue.go-mono.com</author>
      <comments>http://simon.nureality.ca/?p=241#comments</comments>
      <guid isPermaLink="false">http://simon.nureality.ca/?p=241</guid>
      <pubDate>Sun, 07 Mar 2010 21:23:56 GMT</pubDate>
    </item>
    <item>
      <title>Códice Software: Distributed development for Windows programmers</title>
      <description>&lt;p&gt;Each time someone starts writing on &lt;strong&gt;distributed development &lt;/strong&gt;there are some arcane and obscure commands that immediately show up to specify how the changes have to be &lt;em&gt;popped from &lt;/em&gt;or &lt;em&gt;pushed to&lt;/em&gt; some freely available internet repository. And that's fine, but most of the developers out there are more used to right menus, dialogs and options than typing on black consoles. So at the end it looks like &lt;strong&gt;distributed development is something for open source developers working on Linux, and that's obviously not true&lt;/strong&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Let's try to describe the whole picture and how you, as a Windows developer most likely working on a commercial project for your company, can also benefit for the &lt;strong&gt;new trend of going distributed&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Your current scenario&lt;/h2&gt;&lt;p&gt;So, you're using &lt;strong&gt;Visual Studio&lt;/strong&gt; on a daily basis and committing changes to your version control, getting updates from the rest of the team and potentially &lt;strong&gt;creating tons of small feature branches to better isolate your code changes &lt;/strong&gt;(if you didn't embrace yet branching then I bet it will be a great first step before going distributed, but keep reading to check how it will also benefit you).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_z6qpykplUvI/S5EnzPuqz8I/AAAAAAAAAtI/gHFpefT5ZvU/s1600-h/initialsetup.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 328px; height: 210px;" src="http://2.bp.blogspot.com/_z6qpykplUvI/S5EnzPuqz8I/AAAAAAAAAtI/gHFpefT5ZvU/s400/initialsetup.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445177185816727490" /&gt;&lt;/a&gt;You probably have &lt;strong&gt;several workspaces to work on different projects&lt;/strong&gt; or just to focus on different tasks without having to update the whole thing again and again (which should be also fast, but you know?).&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_z6qpykplUvI/S5EoHtfvUFI/AAAAAAAAAtQ/ay3ZufWUT5g/s1600-h/workspaces.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="http://1.bp.blogspot.com/_z6qpykplUvI/S5EoHtfvUFI/AAAAAAAAAtQ/ay3ZufWUT5g/s400/workspaces.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445177537404555346" /&gt;&lt;/a&gt;So basically you go to one of your working copies, make changes from there, and submit there to your central server at the office which lets you forget about how or where the data is stored and it is powerful enough to run very fast and make your life easy :-P.&lt;/p&gt;&lt;h2&gt;What this distributed thing is all about?&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;It's much simpler than you think. Let's start with a nice scenario: suppose you've decided to work at home for a week, avoiding the daily traffic jam and having some spare time at noon to do a break and practice some sports close to your place, sounds good? (Later I'll describe another not so beautiful scenario).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The situation will be something like the following picture, where you've access to your version control server only through a VPN or network connection.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5EoXhwpZXI/AAAAAAAAAtY/eswQ59wEjIM/s1600-h/workingathome.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 277px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5EoXhwpZXI/AAAAAAAAAtY/eswQ59wEjIM/s400/workingathome.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445177809132152178" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The main issues you'll face will be:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;li&gt;Connection can be lost, slowing you down, having to reconnect and simply making you lose time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Connection can be slow: switching to a different branch or simply committing or retrieving changes will be painfully slow.&lt;/li&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;What's the solution? Going distributed. &lt;/strong&gt;Imagine you've your own version control server on your laptop, so you don't have to connect to the office's central server anymore, everything will be extremely fast, no waits, no connections being lost! Of course, since your laptop won't be as powerful as the central server, you don't need a full copy of all the repositories but only certain parts of the ones you'll need to work with, so you can keep making changes and then synchronize them back with the central server when you're back at the office or through the network when you decide to send them back.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S5EojQ9H6bI/AAAAAAAAAtg/Jhjk8T8TJd0/s1600-h/yourownserver.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 383px; height: 400px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S5EojQ9H6bI/AAAAAAAAAtg/Jhjk8T8TJd0/s400/yourownserver.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445178010779511218" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The advantages are clear:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;li&gt;You can move your laptop from work to home (or whatever different locations you can think of) and you'll always be able to continue working seamlessly.&lt;/li&gt;&lt;li&gt;You won't have to wait for changes to be downloaded to your machine from distant locations through slow and unreliable networks.&lt;/li&gt;&lt;li&gt;You're free to continue making changes having full version control support (hey! You can try a poor's man approach just copying a workspace to your laptop, but then you won't be able to access file history, switch branches, make intermediate commits and all this things you get used to when you have version control).&lt;/li&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Alternative scenarios&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;As a professional developer&lt;i&gt; &lt;/i&gt;there are many scenarios where you can benefit from distributed development. The one described above, working at home, is just one of them but there are many other chances like:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;li&gt;Working on the customer's site for some days (or even much longer) and still being able to do controlled changes to the source code.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Attend a demo, event and so on and still be able to try a nice change on the code but doing so in a controlled way.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The multi-site scenario: connecting several teams by using &lt;em&gt;distributed development&lt;/em&gt; between their servers.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Hands on lab: what to do next&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Once the theory is clear, let's just make it happen. Here're the steps we're going to follow:&lt;/p&gt;&lt;br /&gt;&lt;li&gt;Set up a server on your laptop.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Import the repositories you need from the central server.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Start working on your distributed server at your laptop.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Submit your changes back to the central server.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get changes from the central server.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Set up your own "server"&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Depending on the version control system you're using it will require different steps. Let me clarify:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;li&gt;If you're using an open source system like Git you won't have a server as such, it will just be a local copy on a directory (typically your workspace) so set up is fast and easy. You can download the Windows installer from here: &lt;a href="http://code.google.com/p/msysgit"&gt;http://code.google.com/p/msysgit&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you plan to use Mercurial you can find the download here: &lt;a href="http://mercurial.selenic.com/downloads"&gt;http://mercurial.selenic.com/downloads&lt;/a&gt;. Mercurial includes a small HTTP server that allows you to synchronize with other servers and other people to take changes from you.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you plan to use Plastic SCM you can set up the client and server on your machine in less than 45 seconds as you can see in this video: &lt;a href="http://www.youtube.com/watch?v=CVlsVtxZUkk"&gt;http://www.youtube.com/watch?v=CVlsVtxZUkk&lt;/a&gt;. Plastic is meant to be used from a graphical user interface from day one, so it will be pretty straightforward to use (you know I'm obviously biased here, but just check it and judge it yourself).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Unfortunately for Windows developers out there, Team Foundation Server is out of the picture since it simply does not support the distributed workflow. Although it can be installed in less than 45 &lt;strong&gt;minutes&lt;/strong&gt; :-P.&lt;/li&gt;&lt;br /&gt;&lt;p&gt;Your &lt;em&gt;server&lt;/em&gt; (whether is a real one or just a directory with a copy like in Git) will hold your &lt;em&gt;replicated data&lt;/em&gt; and will let you work with your code while you're disconnected.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Replicate from the central server&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Once you've your server set up you need to perform an initial code import from the central server. To make things simpler suppose you're only going to work on a single project while disconnected from the central location. Then you'd have to &lt;em&gt;replicate&lt;/em&gt; (or clone depending on your specific SCM jargon) one single repository into your laptop.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Normally you won't replicate the entire repository but only part of it. What does it mean? Your central repo will contain hundreds if not thousands of feature branches, releases and so on, but it will be enough for you to work distributed if you get the &lt;em&gt;main&lt;/em&gt; or &lt;em&gt;master &lt;/em&gt;branch into your cloned repo.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S5EowcB7mwI/AAAAAAAAAto/ybq9Yacysz0/s1600-h/bigrepos.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 178px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S5EowcB7mwI/AAAAAAAAAto/ybq9Yacysz0/s400/bigrepos.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445178237090765570" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can have a very big central repo with many branches like the one on the previous picture but you only need the main one to start working.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So the &lt;em&gt;clone process &lt;/em&gt;will just mean replicating the remote main branch into a new local repository on your laptop.&lt;br /&gt;&lt;/p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5Eo8ywo3WI/AAAAAAAAAtw/B3YvQdQeqyU/s1600-h/initialimport.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 394px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5Eo8ywo3WI/AAAAAAAAAtw/B3YvQdQeqyU/s400/initialimport.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445178449350679906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="text-align: center"&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;You can do that with Git using the git clone command, or you can do that with Plastic even within Visual Studio as you can see on the following picture.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_z6qpykplUvI/S5EpsyOuaxI/AAAAAAAAAt4/RiW0wvzKyb8/s1600-h/importfromcentralserver.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://1.bp.blogspot.com/_z6qpykplUvI/S5EpsyOuaxI/AAAAAAAAAt4/RiW0wvzKyb8/s400/importfromcentralserver.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445179273842158354" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can see how I've specified &lt;em&gt;centralserver&lt;/em&gt; as the replication source and then a new repository I've just created on my laptop as destination. I click on &lt;em&gt;replicate&lt;/em&gt; and the import process starts, as you can see on the following screenshot. (Remember I'm driving the whole process from within Visual Studio 2010).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5Ep62-sNGI/AAAAAAAAAuA/gFUephc0RrA/s1600-h/importprocess.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5Ep62-sNGI/AAAAAAAAAuA/gFUephc0RrA/s400/importprocess.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445179515635250274" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The initial clone can take a little longer depending on the size of your repos (and the speed of your connection, so it's better if you do it while you're on the same network!), but the good thing is after that all the following operations will be extremely fast.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;And once you're done replicating you can browse the changes on your new repository, which will contain all the &lt;em&gt;commits&lt;/em&gt; (or changesets depending on your SCM) and labels (tags) coming from the central server.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5EqNnFVuSI/AAAAAAAAAuI/0ymWZqtjWKU/s1600-h/afterimport.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5EqNnFVuSI/AAAAAAAAAuI/0ymWZqtjWKU/s400/afterimport.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445179837785684258" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The version control will keep track of &lt;em&gt;which is the source&lt;/em&gt; of each element being replicated. For instance, in the previous screenshot you can see how the selected &lt;em&gt;commit&lt;/em&gt; is coming from the remote repository you've just replicated (check the &lt;em&gt;properties tag&lt;/em&gt;).&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Start working on your laptop disconnected from the central server&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;You've already completed your initial clone, so it's time to start working on your code without having to be slowed down but your central server.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;pattern I'm going to recommend&lt;/strong&gt; is using &lt;strong&gt;feature branches&lt;/strong&gt; (or the good-ol branch per task branching pattern as you can find here: &lt;a href="http://www.cmcrossroads.com/bradapp/acme/branching"&gt;http://www.cmcrossroads.com/bradapp/acme/branching&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;What does it mean? Well, for every bugfix or new feature you're going to implement you'll create a brand new branch, make your changes there and get them integrated into your main branch (or master or trunk depending on your jargon) later.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It's much, much easier than what you might think. Just &lt;em&gt;google for&lt;/em&gt;&lt;br /&gt;  &lt;em&gt;feature branches&lt;/em&gt; if you need more information on the subject, but it's really simple as you'll see.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Creating a new branch is an easy task on any modern version control tool. I'm showing how to do it with Plastic SCM and Visual Studio: I'm going to create a branch from a given &lt;em&gt;changeset&lt;/em&gt; as you can see on the following screenshot. I just right click on the changeset and select &lt;em&gt;create branch from this changeset&lt;/em&gt;. Different SCMs will do it on a different way but as soon as they're ready for branching (which is unfortunately not true for all of them), it won't be hard to do.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5EqkkMBf_I/AAAAAAAAAuQ/dgU-UI0AuL0/s1600-h/createbranch.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5EqkkMBf_I/AAAAAAAAAuQ/dgU-UI0AuL0/s400/createbranch.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445180232145403890" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;With Plastic SCM you'll find a dialog like the following where you can specify some extra data about the branch to create like comments, name and so on.&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;a href="http://2.bp.blogspot.com/_z6qpykplUvI/S5EqtdzBNII/AAAAAAAAAuY/0CZE63wWzq4/s1600-h/createbranchdialog.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 356px; height: 400px;" src="http://2.bp.blogspot.com/_z6qpykplUvI/S5EqtdzBNII/AAAAAAAAAuY/0CZE63wWzq4/s400/createbranchdialog.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445180385048736898" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Since I'm just going to fix a bug on the new branch I give it a meaningful name. &lt;strong&gt;Note:&lt;/strong&gt; it's very important to follow some sort of naming convention for feature branches since you're going to deal with a big number of them. My favorite is giving them a certain prefix and then a number, which is directly taken from the associated issue on the bug/issue tracking system.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After the branch has been created your situation will be something like the following:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S5Eq8xERbEI/AAAAAAAAAug/C8ymytnde-A/s1600-h/afterbranchcreated.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S5Eq8xERbEI/AAAAAAAAAug/C8ymytnde-A/s400/afterbranchcreated.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445180647919414338" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So next step is just &lt;em&gt;switch your workspace to the branch &lt;/em&gt;and start working on it. What does it mean? Well, tell your SCM that the changes you're going to make to fix the code have to go to the branch you've just created. It's not a big deal either!&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S5ErHqR6nKI/AAAAAAAAAuo/kT9-p8fZkag/s1600-h/switchtobranch.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S5ErHqR6nKI/AAAAAAAAAuo/kT9-p8fZkag/s400/switchtobranch.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445180835076152482" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now it's the time of doing some real coding, making changes on your code to fix a given bug or issue. Not hard to do using Visual Studio 2010 (ok, or extremely hard depending on the specific bug!).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_z6qpykplUvI/S5ErYQQ1AXI/AAAAAAAAAuw/3XiJDYvD4vk/s1600-h/makingchangesfromvstudio.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://2.bp.blogspot.com/_z6qpykplUvI/S5ErYQQ1AXI/AAAAAAAAAuw/3XiJDYvD4vk/s400/makingchangesfromvstudio.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445181120150045042" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Visual Studio (from long time ago) comes with the &lt;em&gt;pending checkins&lt;/em&gt; perspective to communicate with your version control and find what you've changed. In my example I've just modified a single file and I'm ready to commit it (and even added a meaningful comment to the change).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you go back to inspecting your repository after your initial commit you'll see something like the following:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_z6qpykplUvI/S5Ers0UGq3I/AAAAAAAAAu4/2J7zDh8wtro/s1600-h/branchexplorerafteryourcheckin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 164px;" src="http://1.bp.blogspot.com/_z6qpykplUvI/S5Ers0UGq3I/AAAAAAAAAu4/2J7zDh8wtro/s400/branchexplorerafteryourcheckin.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445181473424845682" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A couple of interesting things: first there's a new changeset on your branch and your changeset is not replicated (look at the &lt;em&gt;replication source&lt;/em&gt; property on the right).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can do very useful things like inspect the changes you've just made which is one of the good reasons of having your own version control on your laptop!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S5Er34jsSHI/AAAAAAAAAvA/3e_Tpj9FrkM/s1600-h/comparechanges.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S5Er34jsSHI/AAAAAAAAAvA/3e_Tpj9FrkM/s400/comparechanges.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445181663542528114" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can now easily repeat the process to work on different bug fixes, all starting from a well-known point, creating a branch for each of them.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Send your changes to the central server&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;You've been working for a while and you've already fixed a couple of bugs, so it's time to send your changes back to the central server. Hook up to your VPN and then &lt;em&gt;push your changes&lt;/em&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In order to do so: the sequence of steps will vary depending on the SCM of choice. In case you're using Plastic SCM you can do it from the &lt;em&gt;branch explorer&lt;/em&gt; within Visual Studio, simply select the branch you want to push, right click on it and say "push".&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_z6qpykplUvI/S5EsDfV5BVI/AAAAAAAAAvI/_18TsBJlXPw/s1600-h/pushchanges.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://2.bp.blogspot.com/_z6qpykplUvI/S5EsDfV5BVI/AAAAAAAAAvI/_18TsBJlXPw/s400/pushchanges.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5445181862932186450" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And you're done! Repeat the process for every branch you want to submit.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Getting remote changes&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Getting remote changesets from the central server is also pretty straightforward. You'll have to repeat the steps you've completed when setting up your repository but this time instead of getting the entire branch it will only find what's have been modified since the last clone! Faster and easier.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Wrapping up&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;It's been a pretty fast step by step tutorial but I think I've covered the major concepts involved in replication and even some examples on how to achieve it with a specific tool, all within your beloved Visual Studio and without typing a single command!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27232680-6768050301881670403?l=codicesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html</link>
      <category domain="http://www.blogger.com/atom/ns#">distributed</category>
      <author>Códice_x0020_Software@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-27232680.post-6768050301881670403</guid>
      <pubDate>Fri, 05 Mar 2010 15:45:00 GMT</pubDate>
    </item>
    <item>
      <title>Unity Technologies: Unity iPhone 1.6 has left the building!</title>
      <description>We&amp;#8217;re happy to report that highly awaited and much discussed Unity iPhone 1.6 has been released and is available for download.
Yes, it&amp;#8217;s exactly that mysterious build that adds generics support, enables multiplayer for iPhone and noticeably shrinks final binary size. You might have seen some trackbacks on Unity forums.
So what&amp;#8217;s so good about it?
Now imagine [...]</description>
      <link>http://blogs.unity3d.com/2010/03/05/unity-iphone-1-6-has-left-the-building/</link>
      <category>Product News</category>
      <author>Unity_x0020_Technologies@monologue.go-mono.com</author>
      <comments>http://blogs.unity3d.com/2010/03/05/unity-iphone-1-6-has-left-the-building/#comments</comments>
      <guid isPermaLink="false">http://blogs.unity3d.com/?p=2475</guid>
      <pubDate>Fri, 05 Mar 2010 12:46:01 GMT</pubDate>
    </item>
    <item>
      <title>Rafael Teixeira: My little library Mono.GetOptions is being abandoned by Mono</title>
      <description>The biggest lump of code I've contributed to Mono, the Mono.GetOptions library is now being erased from the project.&lt;br /&gt;&lt;br /&gt;It wasn't perfect and it's successor Mono.Options is a very capable replacement even if it doesn't do all the tricks Mono.GetOptions did in its prime.&lt;br /&gt;&lt;br /&gt;Mono.Options is friendly to C# 3.0 features like lambdas, which allows writing code as terse as Mono.GetOptions allowed without using reflection and being a somewhat large dependency, the two main gripes Miguel had with my little library.&lt;br /&gt;&lt;br /&gt;The last of Miguel gripes was about versioning (keeping more than one version in the fold) as some of the needed fixes and planned evolutions for Mono.GetOptions would mean breaking changes, which are better handled by consumers of the library by having distinct major versions with its separate APIs and attached series of minor releases.&lt;br /&gt;&lt;br /&gt;That gets even more complex as you consider that Mono.GetOptions evolution also was tied to Mono releases.&lt;br /&gt;&lt;br /&gt;If memory doesn't fail me, it was Mono.GetOptions and also other libraries imported into the project like SharpZipLib (which is still a problem as Mono is carrying two versions of it, and in this general cleanup process it is going over now we are trying to get rid of at least one of them), that prompted Miguel to change policy and ask for most non core libraries to be developed and released independently from Mono, even if developed by Mono hackers or used in some Mono utility. Better a package dependency (a soft one if possible) than the maintenance burden of embedded libraries.&lt;br /&gt;&lt;br /&gt;Well let me quit reminiscing. Farewell my kid...&lt;br /&gt;&lt;br /&gt;But if you are a loyal user of Mono.GetOptions what should you do?&lt;br /&gt;You can:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Migrate to Mono.Options (or even use it's code directly as Miguel advocated some time ago because it is a lot slimmer than my library).&lt;/li&gt;&lt;li&gt;You can keep a copy of a Mono.GetOptions binary around to distribute with your solution (not an option for open source projects that would like to be accepted into Debian/Ubuntu).&lt;/li&gt;&lt;li&gt;Tell me you would like to see Commons.GetOptions, my own fork of it, get on the air and fly high. Version 1.0 of it has just the namespace change in it, so your migration effort would be minimal. See the &lt;a href="http://groups.google.com/group/managedcommons"&gt;Managed Commons&lt;/a&gt; group for more information.&lt;/li&gt;&lt;/ol&gt;Have nice developments&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4134341-4923410843798714709?l=monoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://monoblog.blogspot.com/2010/03/my-little-library-monogetoptions-is.html</link>
      <author>Rafael_x0020_Teixeira@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4134341.post-4923410843798714709</guid>
      <pubDate>Thu, 04 Mar 2010 20:47:00 GMT</pubDate>
    </item>
    <item>
      <title>Rafael Teixeira: Document Freedom Day '10 is coming</title>
      <description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://documentfreedom.org/"&gt;&lt;img border="0" src="http://documentfreedom.org/images/2/2c/2010-banner-120x60.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4134341-1239330285379792487?l=monoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://monoblog.blogspot.com/2010/03/document-freedom-day-10-is-coming.html</link>
      <author>Rafael_x0020_Teixeira@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4134341.post-1239330285379792487</guid>
      <pubDate>Thu, 04 Mar 2010 19:56:00 GMT</pubDate>
    </item>
    <item>
      <title>Unity Technologies: Unity @ GDC 2010</title>
      <description>GDC is nearly upon us, I can&amp;#8217;t believe it! We&amp;#8217;ve got so much going on  at this year&amp;#8217;s show ? there will be plenty of chances for people to  learn more about Unity throughout next week. I&amp;#8217;m going to give you a rundown of where we&amp;#8217;ll be and what we&amp;#8217;ll be doing.
Booth
Come by [...]</description>
      <link>http://blogs.unity3d.com/2010/03/04/unity-gdc-2010/</link>
      <category>Events</category>
      <author>Unity_x0020_Technologies@monologue.go-mono.com</author>
      <comments>http://blogs.unity3d.com/2010/03/04/unity-gdc-2010/#comments</comments>
      <guid isPermaLink="false">http://blogs.unity3d.com/?p=2405</guid>
      <pubDate>Thu, 04 Mar 2010 09:59:01 GMT</pubDate>
    </item>
    <item>
      <title>Unity Technologies: Unity?s Partner Pavilion at GDC 2010</title>
      <description>In addition to all of our other GDC activities, we&amp;#8217;re going to be joined in our booth with a selection of great partners. This is a win-win opportunity where we&amp;#8217;re able to bring some more exposure to these partners and their presence helps our booth to reflect the diverse ecosystem that surrounds our tool and [...]</description>
      <link>http://blogs.unity3d.com/2010/03/04/unitys-partner-pavilion-at-gdc-2010/</link>
      <category>Events</category>
      <category>Rants &amp; Raves</category>
      <author>Unity_x0020_Technologies@monologue.go-mono.com</author>
      <comments>http://blogs.unity3d.com/2010/03/04/unitys-partner-pavilion-at-gdc-2010/#comments</comments>
      <guid isPermaLink="false">http://blogs.unity3d.com/?p=2391</guid>
      <pubDate>Thu, 04 Mar 2010 09:50:28 GMT</pubDate>
    </item>
    <item>
      <title>Miguel de Icaza: Big Day in MonoLand</title>
      <description>
	&lt;p&gt;Mark Probst found and squashed one of the hardest bugs in
	our
	upcoming &lt;a href="http://www.mono-project.com/Compacting_GC"&gt;garbage
	collector&lt;/a&gt;.  Pablo from Codice has been testing the new GC
	under stress
	and &lt;a href="http://lists.ximian.com/pipermail/mono-devel-list/2010-March/034274.html"&gt;posted
	a nice message&lt;/a&gt; to the list.

	&lt;p&gt;Plenty of great feedback on deprecating old libraries and
	tools from Mono.  We will have a lighter distribution.  As
	things are coming together so fast and we are now well into
	the features we had planned for 3.0, we might end up just
	calling the next version 3.0 instead o 2.8.

	&lt;p&gt;Andreia
	got &lt;a href="http://www.go-mono.com/moonlight"&gt;Moonlight&lt;/a&gt;
	&lt;a href="http://shana.worldofcoding.com/olympics-chrome-1.png"&gt;running&lt;/a&gt;
	&lt;a href="http://shana.worldofcoding.com/olympics-chrome-2.png"&gt;on&lt;/a&gt;
	&lt;a href="http://shana.worldofcoding.com/olympics-chrome-3.png"&gt;Chrome&lt;/a&gt;.
</description>
      <link>http://tirania.org/blog/archive/2010/Mar-03.html</link>
      <author>Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com</author>
      <guid isPermaLink="true">http://tirania.org/blog/archive/2010/Mar-03.html</guid>
      <pubDate>Thu, 04 Mar 2010 04:47:00 GMT</pubDate>
    </item>
    <item>
      <title>Jonathan Pobst: Delayed Transition</title>
      <description>After Comcast's year-long advertising blitz on how their customers were safe from the analog-&gt;digital TV transition, I got a nice letter in the mail today informing me that Comcast is going, *gasp*, all digital.  All I need to be ready for the transition is a digital converter box for every television, which they will gladly rent me!&lt;br /&gt;&lt;br /&gt;Maybe the government will offer vouchers for them.  ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1368115163566068223-6962206377114044735?l=jpobst.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://jpobst.blogspot.com/2010/03/delayed-transition.html</link>
      <author>Jonathan_x0020_Pobst@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-1368115163566068223.post-6962206377114044735</guid>
      <pubDate>Thu, 04 Mar 2010 00:21:00 GMT</pubDate>
    </item>
    <item>
      <title>Mario Carrion: Accessibility in Moonlight</title>
      <description>
			
				
			
		
An important milestone happened on Friday, February 26: Mono Accessibility 2.0 was released. It&amp;#8217;s important because all applications running on Moonlight 2.0, or greater, will be accessible from now on.
Accessibility?
If you are not familiar with this word, Accessibility, it might mean nothing to you and, probably, you will need a more formal definition:
&amp;#8220;Accessibility is a [...]</description>
      <link>http://blog.carrion.ws/2010/03/03/accessibility-in-moonlight/</link>
      <category>english</category>
      <category>2010</category>
      <category>a11y</category>
      <category>accessibility</category>
      <category>c#</category>
      <category>development</category>
      <category>gnome</category>
      <category>march</category>
      <category>mono</category>
      <category>opensuse</category>
      <category>uia</category>
      <author>Mario_x0020_Carrion@monologue.go-mono.com</author>
      <comments>http://blog.carrion.ws/2010/03/03/accessibility-in-moonlight/#comments</comments>
      <guid isPermaLink="false">http://blog.carrion.ws/?p=639</guid>
      <pubDate>Wed, 03 Mar 2010 18:02:27 GMT</pubDate>
    </item>
    <item>
      <title>Gabriel Burt: Banshee Metrics</title>
      <description>Last Wednesday we released &lt;a href="http://banshee-project.org/download/archives/1.5.4/"&gt;Banshee 1.5.4&lt;/a&gt;, which included an opt-in feature to submit anonymous usage data.  Over 500 people have already opted-in!

&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Interesting Stats&lt;/b&gt;&lt;br/&gt;
They are primarily &lt;a href="http://banshee-project.org/download/"&gt;getting Banshee&lt;/a&gt; through the Ubuntu PPA, with a moderate number building from source or using other distributions &amp;mdash; including 20 OS X users.
&lt;center&gt;&lt;table cellspacing="5"&gt;&lt;tr&gt;&lt;td align="right"&gt;383&lt;/td&gt;&lt;td&gt;Ubuntu&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;33&lt;/td&gt;&lt;td&gt;source-tarball&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;27&lt;/td&gt;&lt;td&gt;openSUSE/SLED&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;22&lt;/td&gt;&lt;td&gt;git-checkout&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;20&lt;/td&gt;&lt;td&gt;OS X&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;16&lt;/td&gt;&lt;td&gt;Gentoo&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;

&lt;br/&gt;They are using Banshee in 36 locales, across 30 languages.  Keep in mind the Preference to opt-in is (so far) only translated into 9 languages.
&lt;center&gt;&lt;table cellspacing="5"&gt; &lt;tr&gt;&lt;td align="right"&gt;223&lt;/td&gt;&lt;td&gt;en-US&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;51&lt;/td&gt;&lt;td&gt;en-GB&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;41&lt;/td&gt;&lt;td&gt;de-DE&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;35&lt;/td&gt;&lt;td&gt;unknown&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;21&lt;/td&gt;&lt;td&gt;ru-RU&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;18&lt;/td&gt;&lt;td&gt;it-IT&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;14&lt;/td&gt;&lt;td&gt;fr-FR&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;12&lt;/td&gt;&lt;td&gt;en-CA&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;11&lt;/td&gt;&lt;td&gt;en-AU&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;11&lt;/td&gt;&lt;td&gt;es-ES&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;9&lt;/td&gt;&lt;td&gt;pl-PL&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;8&lt;/td&gt;&lt;td&gt;pt-BR&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;6&lt;/td&gt;&lt;td&gt;es-CL&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;5&lt;/td&gt;&lt;td&gt;es-MX&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;5&lt;/td&gt;&lt;td&gt;nl-NL&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="right"&gt;5&lt;/td&gt;&lt;td&gt;sv-SE&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;

About half have the Banshee window maximized, enable ReplayGain support, show the bottom-left cover art, and show the context pane.
&lt;br/&gt;&lt;br/&gt;
I'm still &lt;a href="http://git.gnome.org/browse/banshee/tree/extras/metrics/"&gt;working on better ways to analyze the data&lt;/a&gt; and extract actionable information.  I plan to have distribution graphs and such soon.  In the meantime, I've posted some &lt;a href="http://banshee-project.org/~gburt/banshee-usage-stats.txt"&gt;more stats here&lt;/a&gt;.  As we get more submissions, add more data points, and get better analysis, we will be able to identify options nobody uses and optimize Banshee for real-world users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33979271-306399061104144558?l=gburt.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://gburt.blogspot.com/2010/03/banshee-metrics.html</link>
      <category>banshee</category>
      <category>mono</category>
      <category>freesoftware</category>
      <category>gnome</category>
      <author>Gabriel_x0020_Burt@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-33979271.post-306399061104144558</guid>
      <pubDate>Wed, 03 Mar 2010 10:18:00 GMT</pubDate>
    </item>
    <item>
      <title>Ivan Zlatev: IBM</title>
      <description>&lt;p&gt;I started at IBM UK (Hursley Labs) on Monday but it is only today that I got my permanent badge with all the security clearance added for the ultra confidential work I will be doing. &lt;img src='http://ivanz.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt;  One of the goodies when working in the restricted area is that only the chosen ones get access to the proper coffee machine which makes excellent espresso coffee only 10p each.&lt;/p&gt;
&lt;div id="attachment_712" class="wp-caption aligncenter" style="width: 317px"&gt;&lt;a href="http://ivanz.com/wp-content/uploads/2010/03/IMG_1933.jpg" rel="shadowbox[post-713];player=img;"&gt;&lt;img class="size-medium wp-image-712" title="IBM" src="http://ivanz.com/wp-content/uploads/2010/03/IMG_1933-225x300.jpg" alt="IBM" width="307" height="410" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;IBM&lt;/p&gt;&lt;/div&gt;
</description>
      <link>http://ivanz.com/2010/03/02/ibm/</link>
      <category>Coding</category>
      <category>Diary</category>
      <category>Technology</category>
      <author>Ivan_x0020_Zlatev@monologue.go-mono.com</author>
      <comments>http://ivanz.com/2010/03/02/ibm/#comments</comments>
      <guid isPermaLink="false">http://ivanz.com/?p=713</guid>
      <pubDate>Tue, 02 Mar 2010 23:05:26 GMT</pubDate>
    </item>
    <item>
      <title>Joe Audette: Some New Training Videos</title>
      <description>&lt;p&gt;
	Just a quick post to let people know about new training videos available. I am making it my focus for this month to produce a lot more tutorials to answer common questions and especially to help developers get started with custom development. I still have a ways to go with the developer tutorials, but thought I would go ahead an post links to videos I&amp;#39;ve completed so far.&lt;/p&gt;
&lt;h3&gt;
	Installation and Configuration&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/manual-installation-in-iis-75-with-mssql.aspx"&gt;Installing mojoPrtal in IIS 7.5 with MS SQL&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/video-hosting-multiple-sites-based-on-host-name.aspx"&gt;Hosting Multiple Sites Based on Host Names - with a primer on DNS resolution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
	Developer Series&lt;/h3&gt;
&lt;p&gt;
	I&amp;#39;ve begun a series of clips where I plan to implement a simple Guestbook feature as a way to cover important concepts.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/getting-the-code-with-tortoisesvn.aspx"&gt;Getting the code from svn trunk&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/source-code-overview-part-1.aspx"&gt;Introduction to the Source Code Part 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/video-source-code-overview-part-2.aspx"&gt;Introduction to the Source Code Part 2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-3-custom-solution.aspx"&gt;Creating a Custom Solution and Project&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-4-hello-web.aspx"&gt;Hello Web Part 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-5-hello-web-part-2.aspx"&gt;Hello Web Part 2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-6-hello-guest-book.aspx"&gt;Guestbook first steps&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-7-concepts-part-1.aspx"&gt;Concepts Part 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-8-concepts-part-2.aspx"&gt;Concepts Part 2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-9-debugging-in-iis.aspx"&gt;Debugging in IIS&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-10-create-a-table-using-the-setup-system.aspx"&gt;Create a Table in the db using the setup system&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-11-using-the-setup-system-to-run-upgrade-scripts.aspx"&gt;Create stored procedures with an upgrade script using the setup system&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-12-generating-a-data-access-class.aspx"&gt;Generating a data access class&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-13-generate-the-business-layer.aspx"&gt;Generate the business layer&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-14-first-guestbook-submission.aspx"&gt;First Guestbook submission achieved&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-15-form-layout.aspx"&gt;Form Layout&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.mojoportal.com/dev-series-16-form-layout-and-data-binding.aspx"&gt;Form Layout Part 2 and data binding&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	Just getting started so far, lots more clips to produce to complete the Guestbook tutorial. I&amp;#39;m planning to cover development of business and data access classes and how to add supporting pages to your feature as well as how to make your feature searchable. I&amp;#39;m working only from an outline not a script, so the videos are mostly improvised and I stumble on a few things here and there, but rather than edit them out, I think it is helpful since you may also stumble a little bit, so learning to work through the stumbles is part of the process.&lt;/p&gt;
&lt;p&gt;
	Each clip will be less than 10 minutes in order to fit them on YouTube, but they are in high definition so the video quality should be pretty decent.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;UPDATE 2010-03-08&lt;/strong&gt; -added items 8 - 17 to the list above.&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://twitter.com/joeaudette" style="color: #6297bc;"&gt;Follow us on twitter&lt;/a&gt; or&amp;nbsp;&lt;a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"&gt;become a fan on Facebook&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://twitter.com/joeaudette" style="color: #6297bc;"&gt;&lt;img alt="follow us on twitter" height="60" src="http://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"&gt;&lt;img alt="become a fan on facebook" height="60" src="http://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;&lt;a href='http://www.mojoportal.com'&gt;Joe Audette&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href='http://www.mojoportal.com/some-new-training-videos-2010-03-02.aspx'&gt;...&lt;/a&gt;</description>
      <link>http://feedproxy.google.com/~r/mojoportal/~3/QblC5DUdGac/some-new-training-videos-2010-03-02.aspx</link>
      <author>Joe_x0020_Audette@monologue.go-mono.com</author>
      <pubDate>Tue, 02 Mar 2010 17:25:37 GMT</pubDate>
    </item>
    <item>
      <title>Aaron Bockover: Lemon Shallot Vinaigrette</title>
      <description>&lt;p&gt;Feeling like an arugula salad today, I needed to also use up two shallots before they went bad, so I concocted this delicious lemon shallot vinaigrette. As the arugula is gone, I may finish the dressing with some fish tonight.&lt;/p&gt;

&lt;p align="center"&gt;&lt;img border="0" alt="Arugula salad with Lemon Shallot Vinaigrette" border="0" src="http://abock.org/blog-images/arugula.jpg"/&gt;&lt;/p&gt;

&lt;p&gt;I rarely measure anything in the kitchen, so all values are approximate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ingredients:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 shallots&lt;/li&gt;
&lt;li&gt;1 cup + 2 tbsp olive oil&lt;/li&gt;
&lt;li&gt;1 cup chopped fresh parsley&lt;/li&gt;
&lt;li&gt;2/3 cup balsamic vinegar&lt;/li&gt;
&lt;li&gt;1/2 large lemon&lt;/li&gt;
&lt;li&gt;1/4 cup freshly grated parmesan cheese&lt;/li&gt;
&lt;li&gt;1 tsp salt&lt;/li&gt;
&lt;li&gt;1 tbsp freshly cracked pepper&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Method:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finely dice the two shallots, sauté over medium heat in the two tablespoons of olive oil until slightly browned and translucent.&lt;/li&gt;
&lt;li&gt;Finely chop the parsley for easier blending.&lt;/li&gt;
&lt;li&gt;Juice half the lemon, and gather about a teaspoon of zest.&lt;/li&gt;
&lt;li&gt;Combine all ingredients into a food processor and emulsify.&lt;/li&gt;
&lt;li&gt;Chill and serve.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <link>http://abock.org/2010/03/01/lemon-shallot-vinaigrette/</link>
      <category>uncategorized</category>
      <category>arugula</category>
      <category>dressing</category>
      <category>food</category>
      <category>recipes</category>
      <category>salad</category>
      <author>Aaron_x0020_Bockover@monologue.go-mono.com</author>
      <comments>http://abock.org/2010/03/01/lemon-shallot-vinaigrette/#comments</comments>
      <guid isPermaLink="false">http://abock.org/?p=279</guid>
      <pubDate>Mon, 01 Mar 2010 17:20:48 GMT</pubDate>
    </item>
    <item>
      <title>Jérémie Laval: Working on Mono with git-svn</title>
      <description>&lt;p align="center"&gt;&lt;img class="size-medium wp-image-807 " title="469147755_bfa4e757de_b" src="http://blog.neteril.org/wp-content/uploads/2010/03/469147755_bfa4e757de_b.jpg" alt="CC by-nd by W. T. L." width="450" height="300" /&gt;&lt;br /&gt;&lt;span style="text-align: center"&gt;CC by-nd by &lt;a href="http://www.flickr.com/people/wtlphotos/"&gt;W. T. L.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I won&amp;#8217;t go here in depth on how to use git, the official hub has already &lt;a href="http://git-scm.com/documentation"&gt;tutorials&lt;/a&gt; to get you started. I&amp;#8217;m more interested here in the workflow you can apply and the tools you can use when working on Mono with git-svn (although it can be mostly used in a general way too).&lt;/p&gt;
&lt;p&gt;Note: this post is heavily based on the &lt;a href="http://www.mono-project.com/Accessibility:_GitSVN:_Workflow"&gt;materials&lt;/a&gt; written by the accessibility team.&lt;/p&gt;
&lt;p&gt;Note²: Prior of everything, your should first read &lt;a href="http://mono-project.com/GitSVN"&gt;this guide&lt;/a&gt; which explains how to setup your git-svn local copy using an existing git mirror. At this point, I expect that you have successfully completed that step.&lt;/p&gt;
&lt;h2&gt;Mirroring your work&lt;/h2&gt;
&lt;p&gt;The workflow I will describe here is rather destructive as you are going to end up merging some bits of git history when sending your commit to Subversion. As such, I strongly advise that you have another git mirror of your work somewhere to act as a backup with all your history.&lt;/p&gt;
&lt;p&gt;You could either go public with your own &lt;a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way"&gt;server&lt;/a&gt;/&lt;a href="http://repo.or.cz/"&gt;repo.or.cz&lt;/a&gt;/&lt;a href="http://github.com/"&gt;github&lt;/a&gt;/&lt;a href="http://gitorious.org/"&gt;gitorious&lt;/a&gt;/whatever or simply use a local copy situated e.g. on another drive.&lt;/p&gt;
&lt;p&gt;In any case, this repository is not really meant for public consumption (i.e. people directly working on your git tree) as it&amp;#8217;s going to be quite unstable with frequent history breaks.&lt;/p&gt;
&lt;p&gt;When you are decided on where you want to host your mirror, add a remote to its location with the &lt;code&gt;git remote&lt;/code&gt; command :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git remote add name foo@yourdomain.org:mcs.git&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you want to update your remote copy, just issue git push with the remote name and mirror option :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git push --mirror name&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Synchronizing with trunk&lt;/h2&gt;
&lt;p&gt;The first thing to know is actually how to pull Subversion revisions back into your local repository. As with any command that have to deal with Subversion, the common prefix to use is &lt;code&gt;git svn&lt;/code&gt;. This action must be done on the master branch so if you are on another one, switch back to master before doing anything else with &lt;code&gt;git checkout&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here, the command we are interested in is &lt;code&gt;git svn rebase&lt;/code&gt;. This command will actually fetch the revisions from trunk, convert them to git commits and replay your local changes (if any) on top of them :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git svn rebase&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Making changes&lt;/h2&gt;
&lt;p&gt;The equivalent of trunk in git is the master branch. This branch should remain clean of any change and should only be used when you are ready to commit your work to Subversion.&lt;/p&gt;
&lt;p&gt;In git, branches are everywhere and are the most straightforward way to organize your changes hierarchically. As such, anything you plan to do should be separated in its own branch with a name like feature-xyz. You can also have feature branch that depends on another feature branch, I will talk about these one later and especially how to merge them back.&lt;/p&gt;
&lt;p&gt;The command :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git checkout -b feature-xyz&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Will switch you to a new branch where you can happily do your stuff.&lt;/p&gt;
&lt;p&gt;What works well here is to follow the scheme : code a piece ? commit ? test ? fix ? commit. It will especially helps when you have to crawl back through your history at a later point with, for instance,&lt;code&gt; git bissect&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Notice that commit message style at this point don&amp;#8217;t matter, use the style that suit you the best because you are the only one who will read them.&lt;/p&gt;
&lt;p&gt;During the lifetime of your development branch, it&amp;#8217;s likely that some change introduced in Subversion will conflict with what you have done. As such, it&amp;#8217;s always a good idea to frequently sync your local copy with Subversion (see above) and then rebase your development branches on top of master.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;git rebase&lt;/code&gt; command exactly serves that purpose and allows to rewrite partially or totally the history of a branch. In practise, this is as simple as issuing from the development branch :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;"&gt;git rebase master&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;As you see, git rebase is powerful tool but it&amp;#8217;s also a destructive one in the sense that it rewrite your history. Rewriting history is the sort of thing that make git crazy when you are trying to pull from a repository modified that way. This is why your git backup should be considered unstable and why you have to always use a mirror or a force option with &lt;code&gt;git push&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Merging work and sending it to Subversion&lt;/h2&gt;
&lt;p&gt;Let&amp;#8217;s say your are happy with what you did, now you would like to send all that stuff to Subversion. Normally, your branch should be filled with small commits with message mainly consisting of &amp;laquo;&amp;nbsp;Ooops&amp;nbsp;&amp;raquo;, &amp;laquo;&amp;nbsp;Added part foo&amp;nbsp;&amp;raquo;  or &amp;laquo;&amp;nbsp;Debugging&amp;nbsp;&amp;raquo; which you definitely don&amp;#8217;t want to see in the Subversion commit.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s why we are going to do a clean summary of the change you made, update the ChangeLogs accordingly and then use a pretty automagically generated log message for the Subversion commit.&lt;/p&gt;
&lt;p&gt;First of all, switch back to master branch. Then issue the following command :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git merge --squash feature-xyz&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;What this do is that it takes the most recent version of the branch tree, generate a diff and then apply it to your master tree without committing. If you check with git status, you will see that these change are notified as &amp;laquo;&amp;nbsp;Going to be committed&amp;nbsp;&amp;raquo;.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s when we use our first tool : &lt;a href="http://neteril.org/~jeremie/clng.py"&gt;clng.py&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I suggest making an alias to it or putting it in a &lt;em&gt;PATH&lt;/em&gt; directory to be able to invoke it directly from the command line.&lt;/p&gt;
&lt;p&gt;As you can notice, the script expects some environment variable to be set. &lt;em&gt;EDITOR&lt;/em&gt; tells which editor you want to use to edit ChangeLog (e.g. emacs), &lt;em&gt;CHANGE_LOG_NAME&lt;/em&gt; contains the name that should be used in the ChangeLog (e.g. John Doe) and, finally, &lt;em&gt;CHANGE_LOG_EMAIL_ADDRESS&lt;/em&gt; contains an email address that will be put in the ChangeLog next to your name (e.g. john.doe@foobar.com).&lt;/p&gt;
&lt;p&gt;When you have set up those environment variable properly, then from the root of the repository (i.e. where the .git directory is), just call the script with no parameter which will prompt you to edit the ChangeLog corresponding to the files you have changed. That time, use a meaningful entry.&lt;/p&gt;
&lt;p&gt;When all ChangeLog have been edited, you still have the option to fine tune them (if you made a typo for instance). When you are finished, call the following command to validate the ChangeLogs :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git add -u&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here now comes the second script, &lt;a href="http://neteril.org/~jeremie/clm.py"&gt;clm.py&lt;/a&gt;, that will gather and pretty print what you added to each ChangeLog. It uses the same environment variables than previously. &lt;/p&gt;
&lt;p&gt;Then, simply type &lt;code&gt;git commit&lt;/code&gt; and copy&amp;amp;paste the commit message given by the script.&lt;/p&gt;
&lt;p&gt;The two last steps are, first, to run again &lt;code&gt;git svn rebase&lt;/code&gt; to make sure that no change got in between while we were doing the merge and, finally, launch the dcommit command to issue your commit to Subversion :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git svn dcommit&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Damn, I stumbled upon a bug&lt;/h2&gt;
&lt;p&gt;It&amp;#8217;s quite usual that during development time, you will notice several bugs in the code that is already on Subversion. Of course you would like to commit the fix right away because it&amp;#8217;s an easy enough one. Only problem is that you are, most of time, stuck in the middle of something else with several changes in your working tree that haven&amp;#8217;t been committed yet !&lt;/p&gt;
&lt;p&gt;Enter &lt;code&gt;git stash&lt;/code&gt;. This command will create a temporary branch were all your current changes are committed and then clean your working tree. That way you can painlessly switch back to your bug fixing branch, make some commits to solve the problem, and then push the fix to trunk with the same procedure as described above.&lt;/p&gt;
&lt;p&gt;Now, it would be nice if what you were doing before take advantage of that fix (maybe it&amp;#8217;s even a prerequisite). Good news is that you can use the same trick as in the sync section with &lt;code&gt;git rebase&lt;/code&gt; to make your branch starts from the commit you just created.&lt;/p&gt;
&lt;h2&gt;Working with a Subversion branch&lt;/h2&gt;
&lt;p&gt;When you commit a fix, you probably want it to also live in the current stable branch of your software (Mono in our case). That require two things. First, you have to tell git-svn where the branch live and, second, you have to backport the fix.&lt;/p&gt;
&lt;p&gt;Normally when you clone the repository in the guide above, you also get all the remote branches with it. If that&amp;#8217;s the case then all is good and you can work from that point. If you don&amp;#8217;t have the remote branch you are interested in, two options. Either you use &lt;code&gt;git fetch&lt;/code&gt; to retrieve all the missing symbols (can take a good deal of time) or you directly put in the config the path of the branch you are interested in. Here is for instance the section to setup your Mono 2.6 branch :&lt;/p&gt;
&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 1735px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"&gt;[svn-remote "mono-2.6"]&lt;/div&gt;
&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 1735px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"&gt;url = svn+ssh://jlaval@mono-cvs.ximian.com/source&lt;/div&gt;
&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 1735px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"&gt;
&lt;p&gt;fetch = branches/mono-2-6/mcs:refs/remotes/git-svn/mono-2-6&lt;/p&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;pre&gt;[svn-remote "mono-2.6"]
  url = svn+ssh://foo@mono-cvs.ximian.com/source
  fetch = branches/mono-2-6/mcs:refs/remotes/git-svn/mono-2-6

[branch "mono-2.6"]
  remote = .
  merge = refs/remotes/git-svn/mono-2-6&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;The only step remaining is to duplicate the change you made to trunk to this maintenance branch which can be easily achieved with the &lt;code&gt;git cherry-pick&lt;/code&gt; command. After the (eventual) conflicts are resolved, just issue &lt;code&gt;git svn dcommit&lt;/code&gt; to validate this change.&lt;/p&gt;
&lt;h2&gt;Merging branch of branch&lt;/h2&gt;
&lt;p&gt;Sometimes, it happens that you are developing two things at the same time and that one of it is based on the second which translate by the fact that one of the branch depends on the other branch.&lt;/p&gt;
&lt;p&gt;In that case, you are certainly going to end up committing the first branch first, continue a bit polishing the second one and ultimately commit it too. Problem is that, when the first branch get committed, the second one should in turn follows trunk/master happening.&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;code&gt;git rebase&lt;/code&gt; comes again to the rescue with the onto switch. Simply merge and commit the first branch as described in the section above and then, from the second development branch, issue :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;git rebase --onto master&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;It will move your second branch to depend on master which should happen flawlessly since the first changes are now mainline.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This post is of course far from exhaustive and if you have any more tip, share it in the comments.&lt;/p&gt;</description>
      <link>http://blog.neteril.org/2010/03/02/working-on-mono-with-git-svn/</link>
      <category>English</category>
      <category>Mono</category>
      <category>Programming</category>
      <author>Jérémie_x0020_Laval@monologue.go-mono.com</author>
      <guid isPermaLink="false">http://blog.neteril.org/?p=804</guid>
      <pubDate>Mon, 01 Mar 2010 16:23:01 GMT</pubDate>
    </item>
    <item>
      <title>Códice Software: Setting up an Oracle backend for Plastic SCM</title>
      <description>As I mentioned on the Plastic SCM 2.9 announcement, now Plastic supports a new backend: Oracle.&lt;br /&gt;Plastic SCM stores all data and metadata on standard database backends, which is great for data integrity and also to allow you running custom reports by simply running standard SQL queries (something you couldn?t obviously do if we were using some cumbersome ad-hoc file based storage).&lt;br /&gt;So far we do support SQL Server (check how to configure it &lt;a href="http://codicesoftware.blogspot.com/2008/08/configure-sql-server-database-backend.html"&gt;here&lt;/a&gt;), MySql (check &lt;a href="http://codicesoftware.blogspot.com/2008/03/how-to-configure-mysql-backend-in.html"&gt;here&lt;/a&gt; for the instructions on how to set it up) and Firebird (which the one included by default).&lt;br /&gt;When you install a Plastic SCM server on both Windows and Linux it will use a Firebird backend by default. On Windows it will use an embedded Firebird instance (which means there won?t be a separate database server process but it will be run by the Plastic process itself) and on Linux it will use a normal Firebird server.&lt;br /&gt;What I?m going to setup here is the following scenario: Plastic server will work with a separate Oracle server (configured on a different machine) as the following graphic shows:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_z6qpykplUvI/S4uyS500FrI/AAAAAAAAAtA/aRkJLbeRaII/s1600-h/oraclesetup.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 347px; height: 333px;" src="http://1.bp.blogspot.com/_z6qpykplUvI/S4uyS500FrI/AAAAAAAAAtA/aRkJLbeRaII/s400/oraclesetup.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443640612437104306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course we could run the Plastic server on the same machine where the Oracle server is installed, but this will give us extra CPU power since we?ll be using two servers instead of one! :-)&lt;br /&gt;Let?s check how to do it:&lt;br /&gt;&lt;li&gt;Stop the Plastic server&lt;br /&gt;&lt;li&gt;Edit/create a db.conf file on the server directory with the right Oracle connection instructions&lt;br /&gt;&lt;li&gt;Check the server can connect against the Oracle instance&lt;br /&gt;&lt;li&gt;Check the client can see the new databases&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Stop the Plastic server&lt;/strong&gt;&lt;br /&gt;If you?re on Windows this is a trivial step: just go to services and stop Plastic SCM.&lt;br /&gt;If you?re on Linux it?s not hard either: su to root and go to the Plastic SCM server installation directory (typically /opt/PlasticSCM/server) and run:&lt;br /&gt;&lt;br /&gt;&lt;pre class="shell"&gt;&lt;br /&gt;$ su root&lt;br /&gt;# cd /opt/PlasticSCM/server&lt;br /&gt;# ./plasticsd stop&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Edit db.conf&lt;br /&gt;If you?re on Linux you?ll have a db.conf file at the server?s directory (/opt/PlasticSCM/server/db.conf). You?ll just have to edit it.&lt;br /&gt;In case you?re on Windows, by default, the file won?t be there, so just create a new one.&lt;br /&gt;Let?s check the contents you?ll have to put for the Oracle connection:&lt;br /&gt;&lt;br /&gt;Note: remember ConnectionString and AdminConnectionString must go on one line, it has been splitted here for the sake of clarity.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;DbConfig&amp;gt;&lt;br /&gt;    &amp;lt;ProviderName&amp;gtoracle&amp;lt;/ProviderName&amp;gt;&lt;br /&gt;    &amp;lt;ConnectionString&amp;gtDirect=true;User={0};Password={0};&lt;br /&gt;       Data Source=oracle.codicefactory.com;&lt;br /&gt;       Port=1521;SID=orcl&lt;br /&gt;    &amp;lt;/ConnectionString&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;AdminConnectionString&amp;gt;Direct=true;User Id=SYS;&lt;br /&gt;       Password=oracle;Data Source=oracle.codicefactory.com;&lt;br /&gt;       SID=orcl;Connect Mode=sysdba&lt;br /&gt;    &amp;lt;/AdminConnectionString&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;DatabaseCreationCommands&amp;gt;&lt;br /&gt;        create smallfile tablespace @PlasticDatabase datafile &lt;br /&gt;          '@PlasticDatabase.dbf' size 10M reuse autoextend on next 10M;&lt;br /&gt;        create user @PlasticDatabase identified by @PlasticDatabase &lt;br /&gt;           default tablespace @PlasticDatabase &lt;br /&gt;           temporary tablespace Temp account&lt;br /&gt;           unlock quota unlimited on @PlasticDatabase;&lt;br /&gt;        grant connect, resource, create session, &lt;br /&gt;           create table, create view, create any index&lt;br /&gt;           to @PlasticDatabase;&lt;br /&gt;    &amp;lt;/DatabaseCreationCommands&amp;gt;&lt;br /&gt;&amp;lt;/DbConfig&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First of all you?ve to specify the kind of backend you?re going to use: that?s the line ?ProviderName? and we specify oracle.&lt;br /&gt;Second you?ve two connection strings: one for the ?regular operations? and one for the ?administrative ones?. What does it mean? Plastic will always connect to Oracle using the first connection string except when it has to create new repositories (for instance during the first start up with the new backend) when it will use the &lt;em&gt;AdminConnectionString&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Why we do this? Because if you?re using an Oracle backend chances are you?re setting it up on a corporate server, which means your IT department will have tight control on it, and they won?t probably like the idea of having an application running with high permissions continuously. So this way we clearly separate the way in which connections are established, which will make your IT team happy.&lt;br /&gt;&lt;br /&gt;Then we?ve the &lt;em&gt;DatabaseCreationCommands&lt;/em&gt; which lets you customize the way in which databases are created.&lt;br /&gt;&lt;br /&gt;By default every Plastic repository will be a tablespace, and we?ll create a user associated to it. You can find the create tablespace and create user sentences there and you can modify them to better adjust to what you really want to achieve.&lt;br /&gt;For instance, the tablespace is created as an small one, but probably you want to create it as a bigfile and also adjust the initial size to something bigger than 10Mb and autoextend with a larger amount too.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Check the server can start with the new configuration parameters&lt;/strong&gt;&lt;br /&gt;Once you?ve edited db.conf the next step is to start up the Plastic server again and check everything is up and running.&lt;br /&gt;While you can directly use the plasticsd script to restart your daemon on Linux or go to services and start the service again (and it will work if you set up everything correctly) I?m going to show you a small trick which is very useful for diagnostics: just run&lt;br /&gt;&lt;br /&gt;&lt;pre class="shell"&gt;&lt;br /&gt;plasticd --console&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And the server will start in console mode. Wait until you read a message telling the server is up and running on check the errors if any.&lt;br /&gt;In case you need detailed information, check the loader.log.txt file which will contain the errors.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Note&lt;/em&gt;: something very useful for diagnostics is modifying your logger configuration (loader.log.conf) to make plasticd output the log on the console, and then rapidly check if something is wrong. Remember to set it back to file logging once you?re done!&lt;br /&gt;&lt;br /&gt;Once you?ve checked you can start up the service/daemon, you can run it with the regular services or ./plasticsd method.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Check you can connect to the new database&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you run a cm lrep command against your server now you should see your new empty databases being created. You must be able to create new repositories too.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Screencast&lt;/strong&gt;&lt;br /&gt;The following screencast we?ve just uploaded to our YouTube channel shows how to set up an Oracle backend on a Linux Plastic server. Check it to see the steps I just have described in action.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nR4TPkAGkIE&amp;hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nR4TPkAGkIE&amp;hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27232680-95999848084323708?l=codicesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://codicesoftware.blogspot.com/2010/03/setting-up-oracle-backend-for-plastic.html</link>
      <category domain="http://www.blogger.com/atom/ns#">backend</category>
      <author>Códice_x0020_Software@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-27232680.post-95999848084323708</guid>
      <pubDate>Mon, 01 Mar 2010 12:23:00 GMT</pubDate>
    </item>
    <item>
      <title>Jordi Mas: gbrainy 1.40</title>
      <description> &lt;p&gt;
Here we have gbrainy 1.40, two months after the previous major version. gbrainy is a game that challenges your logic, verbal, calculation and memory abilities. 
&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img src="http://gent.softcatala.org/jmas/bloc/images/gbrainy_main.png" style="border:0px solid" title="" alt="" class="pivot-image" /&gt;&lt;/p&gt;

&lt;p&gt;
What is new in version 1.40 from the NEWS file: 
&lt;/p&gt;
&lt;blockquote&gt;
	Version 1.4&lt;br /&gt;
	&amp;nbsp;* 2 new logic games&lt;br /&gt;
	&amp;nbsp;* Deprecated Glade and moved to Builder&lt;br /&gt;
	&amp;nbsp;* Mouse support&lt;br /&gt;
	&amp;nbsp;* Better RTL support&lt;br /&gt;
	&amp;nbsp;* Updated and new translations (Hungarian, Afrikaans and Finnish)&lt;br /&gt;
	&amp;nbsp;* Remove dead and legacy code&lt;br /&gt;
	&amp;nbsp;* 12 Bug fixes&lt;br /&gt;
&lt;/blockquote&gt;
gbrainy 1.40 is available for download in source code from:&lt;br /&gt;
&lt;br /&gt;
* &lt;a target="_blank" href="http://gent.softcatala.org/jmas/gbrainy/gbrainy-1.40.tar.gz"&gt;http://gent.softcatala.org/jmas/gbrainy/gbrainy-1.40.tar.gz&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (md5sum fe7b25b08c2004d887f9fd092fba962f)&lt;br /&gt;
&lt;br /&gt;
Additionally, gbrainy is available for &lt;a target="_blank" href="http://live.gnome.org/gbrainy#Download"&gt;all major Linux distributions&lt;/a&gt;. &lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
gbrainy short term plans&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
There a few bugs still pending to be fixed from Bugzilla, and some additional ones coming from the Ubuntu community and others from personal e-mails. I'm planning to release a gbrainy 1.41 in 4/6 weeks. This minor release will contain fixes for these issues plus all the updated and new translations. After this, I will start to work on the next major version. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How to help&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This is a common question that I get. Let me point out some areas where you can help:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Play the game and &lt;a target="_blank" href="http://bugzilla.gnome.org/enter_bug.cgi?product=gbrainy"&gt;provide feedback&lt;/a&gt; about the application.&lt;/li&gt;
	&lt;li&gt;Translation to different languages. Check the current status of &lt;a target="_blank" href="http://l10n.gnome.org/module/gbrainy"&gt;gbrainy translations&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Any development aid, including fixes or new Puzzles for the current system (see the &lt;a target="_blank" href="http://live.gnome.org/gbrainy/Development"&gt;development section&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Ideas for new logic puzzles, memory, calculation trainers or verbal analogies. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you like gbrainy, blog about it and tell your friends! 
&lt;/p&gt;
&lt;p&gt;
Thanks to everyone that has given help or feedback to this version: Siegfried-Angel Gevatter, Sam Tygier, Robert Ancell and also to all the translators.&lt;/p&gt; </description>
      <link>http://gent.softcatala.org/jmas/bloc/pivot/entry.php?id=443&amp;w=jordis_english_bloc</link>
      <category>default, Development</category>
      <author>Jordi_x0020_Mas@monologue.go-mono.com</author>
      <comments>http://gent.softcatala.org/jmas/bloc/pivot/entry.php?id=443&amp;w=jordis_english_bloc#comm</comments>
      <guid isPermaLink="false">443@http://gent.softcatala.org/jmas/bloc/pivot/</guid>
      <pubDate>Sun, 28 Feb 2010 20:26:00 GMT</pubDate>
    </item>
    <item>
      <title>Códice Software: Announcing Plastic SCM 2.9</title>
      <description>Plastic SCM turns 2.9 and it?s ready to download from our site: &lt;a href="http://www.codicesoftware.com/app01/opdownloads2.aspx"&gt;www.plasticscm.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It comes with a bunch of new features and also gets faster specially under heavy load.&lt;br /&gt;Here are some of the new things we?ve included:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Oracle support&lt;/strong&gt;: yes! We?ve added Oracle to the list of our supported database backends. It joins the group integrated by MySql, SqlServer and Firebird. Oracle has been requested several times by corporate users and it brings one of the strongest RDMBs on the market to Plastic deployments. Performance, stability and scalability are the main goals for it, and it works with Windows, Mac OS X and Linux servers.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Pulse continuous integration&lt;/strong&gt; is now supported: we built a plug-in for Zububi?s continuous integration product. It expands the number of supported build solutions we have, together with CruiseControl and FinalBuilder, although others like Hudson (and any product out there being able to run a couple of ?cm? commands) can work with Plastic too.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Proxy server&lt;/strong&gt;: now it?s possible to set up cache servers to reduce network usage while connected to a central server. The proxy simply caches data on demand and avoid re-downloading it again, saving precious network seconds. Note: you know Plastic can work on both distributed and centralized modes, so obviously this feature is useful for people connecting to remote servers and not that much for distributed developers or teams since they already have their data quite close.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Sparse tree and cloaking&lt;/strong&gt; support: now it is possible to download only parts of a repository (ok, it was also doable with selectors, but this way is probably easier) and avoid updating certain files or entire trees by using a cloaked.conf file specifying rules to cloak elements. It?s very useful specially to speed up certain operations (like update) on huge trees and hence avoiding walking through certain parts you know you?re not interested on receiving changes. For advanced users only.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Replication memory footprint has been greatly reduced. Memory usage during replication has been reduced, making it faster and much more predictable than before. Now you can replicate an entire repository and the server won?t even notice it in terms of memory footprint!&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Workspace server is gone! Yes, as you read it, we?ve removed the workspace server component from the picture. Well, in fact, what we?ve done is move it into the client, so performance is dramatically increased. What does it mean? Watch your newly created workspaces and you?ll see a new directory (hidden) named .plastic, it contains workspace information like the selector and the tree with the information about your working copy. This information used to live on the server side, but it has been moved to the client. It dramatically speeds up the system on many scenarios and reduces network usage, which was probably not noticeable on LANs but makes a huge difference for users working against a central server using a VPN. Important note: when you upgrade from Plastic 2.8 to 2.9 the system will recalculate your workspaces in order to move to the new format. It will only happen once and it will be pretty fast (your workspace content won?t be modified, it?s all just about metadata). If you?re using the graphical client you?ll see something like the following:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S4pfCpVlCTI/AAAAAAAAAsg/vgY2VbpwA-8/s1600-h/upgradingworkspaces.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 352px; height: 160px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S4pfCpVlCTI/AAAAAAAAAsg/vgY2VbpwA-8/s400/upgradingworkspaces.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443267598691404082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Sharable workspaces&lt;/strong&gt;: with the modifications made on the workspace it?s now possible to share workspaces: you can place a workspace on a shared network drive or a NFS directory and more than one user can access to it, update it and so on from different machines. Previously it was not doable with Plastic unless you registered the workspace on several locations, and even then it could end up with race conditions. It has been solved. Use it with care, I mean, sharing a workspace can be good for release building purposes but obviously the whole point of having a SCM is being able to manage your own private working copy!&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Changeset walking&lt;/strong&gt;: one of my favorites! You can walk branches changeset by changeset, reading the story they?ve to tell. I?ll post more about it later but think about it: on your own feature branch you?re free to do as many commits as you won?t before hitting the mainline, but it doesn?t prevent you to self document your changes by committing often and with meaningful comments and changes. Let me elaborate a little bit more: suppose you?ve to do a big refactor, you make a whole bunch of changes, then if you review the whole thing at the end, it will be hard to follow, but if you describe every individual modification (considering it as a logical change, potentially involving several files) in a commit, this tool will let you review what you?ve done later, very, very easily.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_z6qpykplUvI/S4pfL9L8KbI/AAAAAAAAAso/btfjJiNryUw/s1600-h/changesetwalking.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://4.bp.blogspot.com/_z6qpykplUvI/S4pfL9L8KbI/AAAAAAAAAso/btfjJiNryUw/s400/changesetwalking.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443267758638508466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Branch explorer enhancements&lt;/strong&gt;: new search functionality landing on branch explorer, together with active information about merge links (click on one and it will tell you where it is coming from) and the long awaited visibility editor.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_z6qpykplUvI/S4pfZijsRNI/AAAAAAAAAsw/0Y4cJjI3ch8/s1600-h/newsearchbar.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 159px;" src="http://3.bp.blogspot.com/_z6qpykplUvI/S4pfZijsRNI/AAAAAAAAAsw/0Y4cJjI3ch8/s400/newsearchbar.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443267992008541394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_z6qpykplUvI/S4pfsJTcOiI/AAAAAAAAAs4/KG9magRegv0/s1600-h/visibilitymode.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 161px;" src="http://1.bp.blogspot.com/_z6qpykplUvI/S4pfsJTcOiI/AAAAAAAAAs4/KG9magRegv0/s400/visibilitymode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443268311647009314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, and that?s basically it, together with a huge number of small tweaks here and there. We run load tests weekly on a 100 nodes cluster, and under really heavy load &lt;strong&gt;Plastic 2.9 is about 30% faster than its predecessor&lt;/strong&gt;.  Not bad! Remember we were already 10 times faster than SVN with 2.8 and make the math.&lt;br /&gt;&lt;br /&gt;And the best thing: Plastic grows but stays easy to use and easy to install. Take a look at the following screencast: I install a Plastic server in less than 45 seconds!! And I make an initial code import after that (the first steps you?d probably do during an evaluation) during the next minute. Easy! Take a look at the latest TFS 2010 and tell me if you can set up the whole slow monster in 45 seconds!! :)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CVlsVtxZUkk&amp;hl=es_ES&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CVlsVtxZUkk&amp;hl=es_ES&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27232680-5947547912236511480?l=codicesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://codicesoftware.blogspot.com/2010/02/announcing-plastic-scm-29.html</link>
      <category domain="http://www.blogger.com/atom/ns#">news</category>
      <author>Códice_x0020_Software@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-27232680.post-5947547912236511480</guid>
      <pubDate>Sun, 28 Feb 2010 12:12:00 GMT</pubDate>
    </item>
    <item>
      <title>C.J. Adams-Collier: Connecting to MySQL with ODBC on Mono</title>
      <description>&lt;p&gt;We had a visitor on #mono today who needed help with his homework.  It seems that &lt;a href="http://www.reggieburnett.com/"&gt;Reggie&lt;/a&gt; is happy to have forgotten everything about using &lt;a href="http://en.wikipedia.org/wiki/ODBC"&gt;ODBC&lt;/a&gt; to connect to MySQL.  I was curious and feeling helpful, so I figured it out.&lt;/p&gt;
&lt;h3&gt;Install the MySQL ODBC driver&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&lt;b&gt;$&lt;/b&gt; sudo apt-get install libmyodbc&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can also grab the package &lt;a href="http://www.mysql.com/downloads/connector/odbc/"&gt;directly from MySQL&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Configure the MySQL ODBC driver&lt;/h3&gt;
&lt;p&gt;ODBC looks in /etc/odbcinst.ini for driver configuration.  In order to let it know about the MySQL ODBC libraries, append the following to your /etc/odbcinst.ini file:&lt;/p&gt;
&lt;pre&gt;
[MySQL]
Description	= MySQL driver
Driver	= /usr/lib/odbc/libmyodbc.so
Setup		= /usr/lib/odbc/libodbcmyS.so
CPTimeout	=
CPReuse	=
&lt;/pre&gt;
&lt;h3&gt;Configure your DSN&lt;/h3&gt;
&lt;p&gt;If you expect that you will be using this database connection often, you may want to create a short name for it, so you don&amp;#8217;t have to enter all of the parameters every time you want to connect.  ODBC uses something called &lt;a href="http://en.wikipedia.org/wiki/Database_Source_Name"&gt;DSN&lt;/a&gt;s (Data Source Names, if I recall correctly) to make it easier on the user.&lt;/p&gt;
&lt;p&gt;If you want to create a DSN, append something like the following to your /etc/odbc.ini file:&lt;/p&gt;
&lt;pre&gt;
[myodbc3]
Driver       = MySQL
Description  = MySQL ODBC 3.51 Driver DSN
Server       = mysql
Port         =
User         = testuser
Password     = password
Database     = test
Option       = 3
Socket       =
&lt;/pre&gt;
&lt;p&gt;You will also need to update the ODBC Data Sources list near the top of the file to mention the new DSN:&lt;/p&gt;
&lt;pre&gt;
[ODBC Data Sources]
myodbc3     = MySQL ODBC 3.51 Driver DSN
&lt;/pre&gt;
&lt;h3&gt;C? ODBC connection example&lt;/h3&gt;
&lt;p&gt;Here is some example code to get you connected:&lt;/p&gt;
&lt;pre class="brush:c-sharp"&gt;
using System;
using System.Data;
using System.Data.Odbc;

class ODBCTest {
  public static void Main(String[] args) {
    // Connection string using explicit parameters
    string ConStr = String.Format(
      "DRIVER={0};SERVER={1};DATABASE={2};UID={3};PWD={4}",
      "{MySQL}","mysql","test","testuser","password" );

    // Connection string using DSN
//  string ConStr = String.Format("DRIVER={0};DSN={1}",
//                                "{MySQL}","myodbc3");                       

    //Create the connection object
    var OdbcCon = new OdbcConnection( ConStr );

    try {
      Console.Write("Opening connection... ");

      //open the database connection
      if (OdbcCon.State == ConnectionState.Closed)
        OdbcCon.Open();

      Console.WriteLine("connection opened!");
    } catch (OdbcException Ex) {
      Console.WriteLine(Ex.Message);
    } finally {
      //close the database connection
      OdbcCon.Close();
    }
  }
}
&lt;/pre&gt;
</description>
      <link>http://wp.colliertech.org/cj/?p=737</link>
      <category>Databases</category>
      <category>Washington State Ubuntu LoCo</category>
      <category>c#</category>
      <category>debian</category>
      <category>irc</category>
      <category>mono</category>
      <category>mysql</category>
      <category>ubuntu</category>
      <author>C.J._x0020_Adams-Collier@monologue.go-mono.com</author>
      <comments>http://wp.colliertech.org/cj/?p=737#comments</comments>
      <guid isPermaLink="false">http://wp.colliertech.org/cj/?p=737</guid>
      <pubDate>Fri, 26 Feb 2010 22:26:44 GMT</pubDate>
    </item>
    <item>
      <title>Brad Taylor: Mono Accessibility 2.0 unleashed!</title>
      <description>&lt;p&gt;Today, I'm proud to announce the 2.0 release of the Mono Accessibility project.  Spanning a year of intensive work and fixing over 500 bugs, this is truly our best release ever.&lt;/p&gt;
&lt;p&gt;This release enables all types of users to access System.Windows.Forms and Silverlight applications from Linux using Orca and other ATK-based Assistive Technologies (ATs), as well as access Linux applications from UI Automation (UIA) based ATs.&lt;/p&gt;
&lt;p&gt;&lt;h3&gt;What's changed since version 1.0?&lt;/h3&gt;&lt;/p&gt;
&lt;p&gt;Added:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;UI Automation provider support for Moonlight&lt;/li&gt;
&lt;li&gt;UI Automation to ATK bridge for Moonlight to allow Moonlight applications to be accessed by Linux ATs&lt;/li&gt;
&lt;li&gt;Complete implementation of the UI Automation Client API, facilitating access to System.Windows.Forms, ATK-based applications and Silverlight controls for UI Automation Clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;h3&gt;What is Mono Accessibility:&lt;/h3&gt;&lt;/p&gt;
&lt;p&gt;The Mono Accessibility project enables Winforms and Silverlight applications to be fully accessible on Linux, and allows Assistive Technologies (ATs) like screen readers and test automation tools that depend on UI Automation APIs to work on Linux.&lt;/p&gt;
&lt;p&gt;Mono Accessibility is released under the MIT/X11 license.&lt;/p&gt;
&lt;p&gt;&lt;h3&gt;Get it!&lt;/h3&gt;&lt;/p&gt;
&lt;p&gt;Mono Accessibility is available for a variety of Linux distributions, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;openSUSE 11.2 - &lt;a href="http://download.opensuse.org/repositories/Mono:/UIA/openSUSE_11.2/mono-uia.ymp"&gt;1-Click Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu Karmic Koala - &lt;a href="https://edge.launchpad.net/~mono-a11y/+archive/ppa"&gt;Package Archive on Launchpad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fedora 12 - &lt;a href="http://download.opensuse.org/repositories/Mono:/UIA:/Fedora/Fedora_12/"&gt;Repository on openSUSE Build Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Other distributions - &lt;a href="http://mono-a11y.org/releases/2.0/sources/"&gt;Source tarballs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;h3&gt;A Note About at-spi2&lt;/h3&gt;&lt;/p&gt;
&lt;p&gt;Accessing GTK+ applications with the UIA Client API requires the most recent development version of the new dbus-based at-spi2, which is known to cause system instability.&lt;/p&gt;
&lt;p&gt;In Fedora, at-spi2 repeatedly causes GDM to segfault. If you do not need this feature, do not install the latest at-spi2 and atk, or our packages which depend on them, which are at-spi-sharp and AtspiUiaSource.&lt;/p&gt;
&lt;p&gt;We are working hard to identify these issues and hope to aid the GNOME Accessibility Team in stabilizing at-spi2 in the near future.&lt;/p&gt;
&lt;p&gt;&lt;h3&gt;Find out more&lt;/h3&gt;&lt;/p&gt;
&lt;p&gt;Navigate to our &lt;a href="http://mono-project.com/Accessibility"&gt;homepage&lt;/a&gt; for all the latest information, and ways to contact us.&lt;/p&gt;
</description>
      <link>http://brad.getcoded.net/blog/entry.php?e=1537848530</link>
      <author>Brad_x0020_Taylor@monologue.go-mono.com</author>
      <comments>http://brad.getcoded.net//blog/entry.php?e=1537848530#comments</comments>
      <pubDate>Fri, 26 Feb 2010 20:37:09 GMT</pubDate>
    </item>
    <item>
      <title>Marc Christensen: SLLUG meeting Feb. 24, 2010: Introduction to Mono</title>
      <description>&lt;p&gt;Tonight&amp;#8217;s Salt Lake Linux Users Group meeting will be an introduction to Mono. See the mono-project for more information.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Novell, Mono is an open source implementation of Microsoft&amp;#8217;s .NET Framework based on the ECMA standards for C# and the [...]&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Mecworks/tech/~3/5v2BKQRWGkw/</link>
      <category>Linux</category>
      <category>Tech</category>
      <author>Marc_x0020_Christensen@monologue.go-mono.com</author>
      <comments>http://blog.mecworks.com/articles/2010/02/24/sllug-meeting-feb-24-2010-introduction-to-mono/#comments</comments>
      <guid isPermaLink="false">http://blog.mecworks.com/articles/2010/02/24/sllug-meeting-feb-24-2010-introduction-to-mono/</guid>
      <pubDate>Wed, 24 Feb 2010 22:12:21 GMT</pubDate>
    </item>
    <item>
      <title>Gabriel Burt: Banshee 1.5.4</title>
      <description>&lt;p&gt;&lt;a href="http://banshee-project.org/download/archives/1.5.4/"&gt;Banshee 1.5.4&lt;/a&gt; is out, with cool new features and lots of fixes!  This is our fifth release in preparation for our big 1.6 release &lt;a href="http://banshee-project.org/about/calendar/"&gt;at the end of March&lt;/a&gt;.&lt;/p&gt;&lt;b&gt;Banshee Community Extensions&lt;/b&gt;&lt;p&gt;We have made a &lt;a href="http://banshee-project.org/download/extensions/"&gt;1.5.4 release of Banshee Community Extensions&lt;/a&gt; as well.  This includes the Alarm Clock, Lyrics, and Mirage extensions, and several others.&lt;/p&gt;&lt;b&gt;Mirage Similarity Engine&lt;/b&gt;&lt;p&gt;The Mirage extension has been modified heavily, dropping the old ?Automatic Playlist Generator? in favor in integration into the playback controller &amp;ndash; adding shuffle-by-similar, and into the Play Queue Auto DJ &amp;ndash; adding fill-by-similar.  Mirage calculates the acoustical similarity between two songs. &lt;center&gt;&lt;img src="http://download.banshee-project.org/shots/1.5.4/fill-by-similar.png" /&gt;
&lt;small&gt;&lt;i&gt;Play Queue Auto DJ, fill by similar&lt;/i&gt;&lt;/small&gt;&lt;/center&gt;&lt;/p&gt;
&lt;b&gt;Anonymous, Opt-in Usage Data&lt;/b&gt;&lt;p&gt;Under Preferences, you can choose to "Improve Banshee by sending anonymous usage data" back to the Banshee developers. This collects information on what version you're running, what OS, library size, slow SQL queries, and a whitelisted subset of your preferences. This information will help us choose better defaults and see what parts of Banshee are used most and can be improved. &lt;center&gt;&lt;img src="http://download.banshee-project.org/shots/1.5.4/metrics-optin-preference.png" /&gt;&lt;/center&gt;The 30+ people running a development version of Banshee and already submitting data are using 11 different language locales, have a median screen resolution of 1440x1024, and a median music library size of 5k songs.  I'm working on some analysis/viz software to crunch the data - stay tuned!&lt;/p&gt;

&lt;b&gt;Other Notable Improvements&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Wikipedia context pane extension enabled by default&lt;/li&gt;&lt;li&gt;Add support for Nokia N900 phones&lt;/li&gt;&lt;li&gt;Coverart for unicode artist/albums now supported&lt;/li&gt;&lt;li&gt;Dropped glade-sharp dep; GNOME 3.0 ready&lt;/li&gt;&lt;li&gt;Add columns showing track sample rate and bits per sample&lt;/li&gt;&lt;li&gt;Option to sort an artist's albums by year, not title&lt;/li&gt;&lt;li&gt;Fixes to GIO backend&lt;/li&gt;&lt;li&gt;Many crash/startup fixes for OS X build&lt;/li&gt;&lt;li&gt;Fix several memory leaks&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;p&gt;As always, check the &lt;a href="http://banshee-project.org/download/archives/1.5.4/"&gt;release notes&lt;/a&gt; for more detailed information, screenshots, and download links.  Thanks to everybody who made this release happen!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33979271-8585146688351942326?l=gburt.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://gburt.blogspot.com/2010/02/banshee-154.html</link>
      <category>banshee</category>
      <category>mono</category>
      <category>freesoftware</category>
      <category>gnome</category>
      <author>Gabriel_x0020_Burt@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-33979271.post-8585146688351942326</guid>
      <pubDate>Wed, 24 Feb 2010 17:12:00 GMT</pubDate>
    </item>
    <item>
      <title>Lluis Sánchez : Loading executables as MonoDevelop projects</title>
      <description>Miguel recently &lt;a href="http://tirania.org/blog/archive/2010/Feb-20.html"&gt;blogged&lt;/a&gt; about a trick for loading an executable assembly as a project inside MonoDevelop. I have now added native support for this feature, which means that it is now possible to directly open a .exe or .dll as a project, or add it to an existing solution. Also, MonoDevelop will get the list of source code files from the debug info of the assembly (when available). For example, this is what you get when you open gmcs.exe:&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cHnO0qtZD7s/S4VR_np_KDI/AAAAAAAABZw/QlMgIZE2ZOw/s1600-h/asm-project.png"&gt;&lt;img src="http://1.bp.blogspot.com/_cHnO0qtZD7s/S4VR_np_KDI/AAAAAAAABZw/QlMgIZE2ZOw/s400/asm-project.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5441845878165809202" style="cursor: pointer; width: 400px; height: 331px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The code just landed in SVN.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6440604575561980711-6527769485725192180?l=foodformonkeys.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://foodformonkeys.blogspot.com/2010/02/loading-executables-as-monodevelop.html</link>
      <author>Lluis_x0020_Sánchez_x0020_@monologue.go-mono.com</author>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-6440604575561980711.post-6527769485725192180</guid>
      <pubDate>Wed, 24 Feb 2010 16:11:00 GMT</pubDate>
    </item>
  </channel>
</rss>