<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Matt Roberts</title>
        <link>http://geekswithblogs.net/MattRobertsBlog/Default.aspx</link>
        <description>Rails and .NET</description>
        <language>en-GB</language>
        <copyright>Matt Roberts</copyright>
        <managingEditor>roberts.mattroberts@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Matt Roberts</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/MattRobertsBlog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Apps for Macs</title>
            <category>osx</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2009/06/04/apps-for-macs.aspx</link>
            <description>I own a mac, I'm a fan of macs, but I'm not a mac-fanboy. I think they're bloody great machines, and that OSX is by far the best OS out there, but I appreciate they're not for everyone. Even osx has (cue dramatic pause) .. flaws. Copy a folder somewhere in OSX, and if the folder already exists on the destination it will prompt you to entirely replace that folder - WOT NO MERGE?! Anyway, apart from that minor niggle, OSX is awesome, especially for web development (in rails).&lt;br /&gt;
&lt;br /&gt;
So where am I going with this? Recently a colleague at work has also taken the mac plunge and joined the collective, and so I thought it would be good for me to list the top (free) tools and applications that I couldn't live without on the mac. So, here they are:-&lt;br /&gt;
&lt;br /&gt;
1) Firefox 3 and Safari 4&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151340026*/"&gt;http://www.apple.com/safari/&lt;/a&gt;&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151347019*/"&gt;http://www.mozilla.com/en-US/&lt;/a&gt;&lt;br /&gt;
I can't decide between these, so I use both. Firefox rules for its extensions, while Safari is very fast and slick.&lt;br /&gt;
 &lt;br /&gt;
2) Adium&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151353628*/"&gt;http://adium.im/&lt;/a&gt;&lt;br /&gt;
Adium is a very nice IM client for the mac. Its light, simple, free of crappy adverts and other such bilge, and best of all, its a green duck. Nuff said.&lt;br /&gt;
&lt;br /&gt;
3) iStat Menus&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151361707*/"&gt;http://www.islayer.com/apps/istatmenus/&lt;/a&gt;&lt;br /&gt;
This is a really good system monitoring tool, that sits un-obtrusively in the apple menu, um, thing. Its seriously useful and very configurable, and gives me a reasuring insight into whats happening in the mac&lt;br /&gt;
&lt;br /&gt;
4) Google notifier for mac&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151370997*/"&gt;http://toolbar.google.com/gmail-helper/notifier_mac.html&lt;/a&gt;&lt;br /&gt;
Its a mail / calendar notifier for the mac. From google. Nice.&lt;br /&gt;
&lt;br /&gt;
5) Quicksilver&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151380572*/"&gt;http://thenextweb.com/2009/05/04/quicksilver-mac-greatest-app-time/&lt;/a&gt;&lt;br /&gt;
Ah, the swiss army knife of the mac world. This tool rocks. The blog above is a great write up on Quicksilver, and how to use it.&lt;br /&gt;
&lt;br /&gt;
6) VLC&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151389172*/"&gt;http://www.videolan.org/vlc/&lt;/a&gt;&lt;br /&gt;
Quicktime player is OK, pretty good for .MOV files, but well not that good for other formats. VLC on the other hand is one of those "just works" apps. it plays videos of most formats. It plays them well, and rarely complains. Nice.&lt;br /&gt;
&lt;br /&gt;
7) Tweetie&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151396405*/"&gt;http://www.atebits.com/tweetie-mac/&lt;/a&gt;&lt;br /&gt;
My mac twitter client of choice. Its a shame is ad-supported, but it really is a nice client, does everything I need, and has a good clean UI.&lt;br /&gt;
&lt;br /&gt;
8) Growl.&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151403132*/"&gt;http://growl.info/&lt;/a&gt;&lt;br /&gt;
I can't believe growl isn't actually built into OSX. Its a simple un-obtrusive notification system, that I first heard of when doing automated testing in rails. Turns out a lot of apps support growl notifications. Or maybe growl is just hooking into some central osx notifcation event broker. I dunno, but its very nice, and must be installed.&lt;br /&gt;
&lt;br /&gt;
9) TextMate (or MacVim)&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151413101*/"&gt;http://macromates.com/&lt;/a&gt;&lt;br /&gt;
Damn it. This one isn't free. But, its very cheap, and for your money you get a very very nice text editor. If you know about rails, you already know about this. If you don't want to pay, I also recommend macvim (http://code.google.com/p/macvim/). Its a mac port of VIM, done very nicely, and VIM is very nice, as long as you're prepared to master it. And theres some good rails stuff out there for VIM (http://www.akitaonrails.com/2009/1/4/rails-on-vim-in-english)&lt;br /&gt;
&lt;br /&gt;
10) Transmission&lt;br /&gt;
&lt;a href="javascript:void(0);/*1244151420397*/"&gt;http://www.transmissionbt.com/&lt;/a&gt;&lt;br /&gt;
I used this bittorrent client while I was waiting for uTorrent to be available for the mac. I liked it so much I stayed with it. Its simple, effective, pretty much does what it says on the tin.&lt;br /&gt;
&lt;br /&gt;
Thats it :) By sheer co-incidence it came to 10 applications. I hope you find this list at least marginally useful, and i&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132629"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132629" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/132629.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2009/06/04/apps-for-macs.aspx</guid>
            <pubDate>Fri, 05 Jun 2009 04:39:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/132629.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2009/06/04/apps-for-macs.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/132629.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/132629.aspx</trackback:ping>
        </item>
        <item>
            <title>Get Database rollback powers in your NUnit Tests!</title>
            <category>.net</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/18/get-database-rollback-powers-in-your-nunit-tests.aspx</link>
            <description>&lt;p&gt;Ok - no credit to me for any of this good stuff. All I'm doing here is posting on how to get database rollback working in your Nunit tests.&lt;/p&gt;  &lt;p&gt;Roy Osherove created something called XtUnit - "An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily" - &lt;a href="http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx"&gt;http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;His blog talks you through all the cool stuff that you can do with this framework, like implementing your own attributes to do cool things pre and post method execution. But the thing I wanted more than anything was to add rollback powers to existing NUNit tests, I didn't want to switch to MbUnit to do this, I just wanted to be able to do it with my existing tests.&lt;/p&gt;  &lt;p&gt;It was pretty simple to get working, but the documentation is a tiny bit in-complete, so this is what you need to do.&lt;/p&gt;  &lt;p&gt;I'm in Visual Studio 2008, using LLBLGenPro to talk to the database (obviously you don't need to use LLBLGen Pro, but why the hell not!)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download the binaries. You could download the source but you'll need to migrate it to 2008, and I didn't need the src.&lt;/li&gt;    &lt;li&gt;Reference the binary file that is downloaded in your test project.&lt;/li&gt;    &lt;li&gt;Make sure that your test fixture class derives from ExtensibleFixture&lt;/li&gt;    &lt;li&gt;Add the DataRollBack attribute to your test method&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Done!&lt;/p&gt;  &lt;p&gt;Here's the code for completion. My example as basically adding a row to a table called "GlobalSearch", in case the LLBLGen stuff looks confusing to you.&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; [TestFixture]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Class1 : ExtensibleFixture&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     [Test, DataRollBack]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; TestDataRollBack()&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         var adapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataAccessAdapter(&lt;span style="color: #006080"&gt;"connection string here"&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;, CatalogNameUsage.ForceName, &lt;span style="color: #006080"&gt;""&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Create a new GlobalSearchEntity, save it, then rollback&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;         var g = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GlobalSearchQueueEntity();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         g.RecordId = 100;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         g.ToolCode = &lt;span style="color: #006080"&gt;"TOOLCODE"&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         adapter.SaveEntity(g);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128026"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128026" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/128026.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/18/get-database-rollback-powers-in-your-nunit-tests.aspx</guid>
            <pubDate>Fri, 19 Dec 2008 03:26:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/128026.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/18/get-database-rollback-powers-in-your-nunit-tests.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/128026.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/128026.aspx</trackback:ping>
        </item>
        <item>
            <title>How to make a &amp;quot;protected&amp;quot; method available for &amp;quot;partial&amp;quot; mocking using RhinoMocks</title>
            <category>.net</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/16/how-to-make-a-quotprotectedquot-method-available-for-quotpartialquot-mocking-and-again.aspx</link>
            <description>&lt;p&gt;There are 2 cool things I want to share here...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Partial Mocking&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is a very cool and useful feature of RhinoMocks, which allows you to test part of a class, but have some of it act normally. Its explained very well here: &lt;a href="http://ayende.com/Wiki/(S(gvtu2q45soph42vfyhig2j55))/Rhino+Mocks+Partial+Mocks.ashx"&gt;http://ayende.com/Wiki/(S(gvtu2q45soph42vfyhig2j55))/Rhino+Mocks+Partial+Mocks.ashx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Making "protected" methods available for mocking.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Partial mocks are great, but what do you do when you need to "mock" out a method that isn't visible to your test class - i.e. its private or protected. Well, it turns out you can use a nifty little attribute called InternalsVisibleTo to make any internal methods visible to other assemblies (i.e. your testing assembly). So, in my code, I had a method called &lt;strong&gt;GetRecord&lt;/strong&gt;, which was protected. I changed this to make it &lt;strong&gt;protected internal virtual&lt;/strong&gt;, and added this to my AssemblyInfo.cs file:&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; [assembly: InternalsVisibleTo(&lt;span style="color: #006080"&gt;"NUnitTests"&lt;/span&gt;)] &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; [assembly: InternalsVisibleTo(RhinoMocks.NormalName)] &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; [assembly: InternalsVisibleTo(RhinoMocks.StrongName)] &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;NUnitTests is the name of my assembly that contains the tests for my project. Once this is done and compiled, intellisense lets me mock that protected method. Just for completeness, here is the code that sets up my partial mock:&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; var mocks = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MockRepository(); &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; var globalSearchServiceBase = mocks.PartialMock&amp;lt;ClassToMock&amp;gt;(); &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; Expect.Call(globalSearchServiceBase.GetRecord(1)).IgnoreArguments().Return(GetFakeData()); &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; mocks.ReplayAll(); &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Thats it. Hope that was at least marginally useful to someone :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127972"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127972" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/127972.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/16/how-to-make-a-quotprotectedquot-method-available-for-quotpartialquot-mocking-and-again.aspx</guid>
            <pubDate>Tue, 16 Dec 2008 23:00:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/127972.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/16/how-to-make-a-quotprotectedquot-method-available-for-quotpartialquot-mocking-and-again.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/127972.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/127972.aspx</trackback:ping>
        </item>
        <item>
            <title>CouchDB (with rails)</title>
            <category>rails</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2008/10/04/couchdb-with-rails.aspx</link>
            <description>I've been playing with &lt;a href="http://incubator.apache.org/couchdb/index.html"&gt;CouchDB&lt;/a&gt; a little recently. Its a "schema-free document-oriented database", which sounds pretty weird when all you've ever known is relational databases. At work, we're considering what architecture we want to go with for a new product that needs to be very flexible - the users need to be able to add fields, remove fields, and do all sorts of crazy things with the application.&lt;br /&gt;
&lt;br /&gt;
One of the options we have, is to use something like CouchDB to be able to create an uber-flexible database that can evolve over time, and be very scalable. because our new product will be a SaaS one. Its pretty clear to see why CouchDB fits the bill.&lt;br /&gt;
&lt;br /&gt;
Anyway, its pretty cool, and I wanted to see if I could get started creating a little application in Rails using CouchDB on the back end... It was pretty slow going until I came across this fantastic &lt;a href="https://peepcode.com/products/couchdb-with-rails"&gt;PeepCode Screencast&lt;/a&gt; This screencast goes through the basics of CouchDB, and then goes on to build a nifty notes-esque web application using a CouchDB gem called &lt;a href="http://github.com/jchris/couchrest/tree/master"&gt;CouchRest&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Its a quality peepcode, and the CouchRest gem looks like its really going to help me :)&lt;br /&gt;
&lt;br /&gt;
It'll be interesting to see what kind of take up CouchDB or other schema-free cloud computing databases get in the .NET world, I don't see much happening out there at the moment.&lt;br /&gt;
&lt;br /&gt;
Anyway, watch out for my killer CouchDB-based rails application, coming soon (yeah right!)&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125637"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125637" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/125637.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2008/10/04/couchdb-with-rails.aspx</guid>
            <pubDate>Sun, 05 Oct 2008 05:27:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/125637.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2008/10/04/couchdb-with-rails.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/125637.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/125637.aspx</trackback:ping>
        </item>
        <item>
            <title>Get your (old) COM-based or &amp;quot;ASP.NET with Interop&amp;quot; web app working in Windows Server 2003 R2 64 Bit !</title>
            <category>.net</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2008/04/11/get-your-old-com-based-or-quotasp.net-with-interopquot-web-app.aspx</link>
            <description>&lt;p&gt;&lt;font size="1"&gt;AKA: "Why am I getting 'ActiveX can't create component' when I try to access my COM DLL's"     &lt;br /&gt;AKA: "Why am I getting 'Service Unavailable' when I've set IIS to run in 32 bit compatibility mode.      &lt;br /&gt;AKA "Why do I get 404 errors when I browse to my ASPX pages"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Man that's a long title :) &lt;/p&gt;  &lt;p&gt;So, I recently had to spend some time looking into getting my companies web application working in 64 Bit Windows (2003 R2 to be exact). I eventually got this working, but found the information scattered and incomplete on the interweb, so this little guide should see you through. I hope someone out there finds it useful. &lt;/p&gt;  &lt;p&gt;Starting Point.&lt;/p&gt;  &lt;p&gt;You have windows 2003 R2 64 bit SP1. You have the 64bit version of the .NET framework (V2 or higher) installed. No other changes have been made to IIS - it seems to run just fine for serving .NET and HTML. You install your web application that includes COM, try to run it, and BANG...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Microsoft VBScript runtime error '800a01ad'      &lt;br /&gt;ActiveX component can't create object&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The cause? Its because those COM objects are 32 bit components, and by default IIS won't work with 32 components. You need to tell IIS to run in 32 bit compatibility mode (WOW64). To do this, you need to configure IIS to run in 32 bit compatibility mode, as explained by &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx?mfr=true"&gt;this link&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;But wait! Its not quite that easy! If you do this, then you're telling IIS to run in 32 bit mode, but then you've already got the 64 bit ASP.NET DLL's registered with IIS, so the first time you hit your app, you'll probably see a big fat "Service Unavailable" Error message. If you look in the event log, you'll see your application pools are crashing with this error:&lt;/p&gt;  &lt;pre class="alt"&gt;A process serving application pool 'DefaultAppPool' reported a failure.&lt;br /&gt;The process id was '4156'. The data field contains the error number.&lt;/pre&gt;

&lt;p&gt;So, you need to register the 32 bit ASP.NET DLL's with IIS. But wait! You can't do that before you un-register the existing 64 bit ones.&lt;/p&gt;

&lt;p&gt;Enough waffling. Here's the step-by-step :-&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Un-register the 64 bit ASP.NET DLL's. In a command prompt, navigate to C:\Windows\Framework64\v2.0.50727\ and from there run "aspnet_regiis -u" &lt;/li&gt;

  &lt;li&gt;Set IIS to work in 32 bit compatibility (WOW64) mode: 
    &lt;br /&gt;cscript &lt;var&gt;c&lt;/var&gt;:\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32BitAppOnWin64 1 &lt;/li&gt;

  &lt;li&gt;Register the 32-Bit ASP.NET DLL's. Navigate to C:\Windows\Framework\v2.0.50727\ and from there run "aspnet_regiis -i" &lt;/li&gt;

  &lt;li&gt;Finally, in IIS, Navigate to "Web Service Extensions", and make sure that ASP.NET is "allowed". &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You're done! 
  &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121186"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121186" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/121186.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2008/04/11/get-your-old-com-based-or-quotasp.net-with-interopquot-web-app.aspx</guid>
            <pubDate>Fri, 11 Apr 2008 20:27:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/121186.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2008/04/11/get-your-old-com-based-or-quotasp.net-with-interopquot-web-app.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/121186.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/121186.aspx</trackback:ping>
        </item>
        <item>
            <title>Categories in Rails</title>
            <category>.net</category>
            <category>rails</category>
            <category>software</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2007/12/14/categories-in-rails.aspx</link>
            <description>&lt;p&gt;Rails makes such a nice change from coding in .NET. I mean, I do like .NET and C#, but sometimes its very bloated and can be quite cumbersome to do things. &lt;/p&gt;  &lt;p&gt;Rails, on the other hand, isn't big. Or cumbersome. In fact, its downright lean and to-the-point, unlike my blog posts (what there are of them!). &lt;/p&gt;  &lt;p&gt;Anyway, today we're talking category trees, surely one of the most exciting concepts that there is to talk about. One thing that made me smile recently was the need to list all the categories that a company was tagged to. So, this happens with code that looks like this :-&lt;/p&gt;  &lt;p&gt;&amp;lt;%for cat in @Categories %&amp;gt;    &lt;br /&gt;    &amp;lt;%= cat.name + "&amp;lt;br&amp;gt;" %&amp;gt;     &lt;br /&gt;&amp;lt;% end %&amp;gt; &lt;/p&gt;  &lt;p&gt;.. Where @Categories is a collection of categories from the controller, and is generated like this:&lt;/p&gt;  &lt;p&gt;@Categories = Company.find(params["id"]).Category.find(:all)&lt;/p&gt;  &lt;p&gt;So, this noddy code just lists all cats that the company was tagged to. After deploying this, I was asked to change it so that the full hierarchy of categories was displayed. So instead of "Cat 1", the user wants to see "Root -&amp;gt; Services -&amp;gt; Cat 1". Hmmm, I thought, perhaps I need to write a little recursive method to go and get the parent nodes of each selected category... Turns out that because I was using acts_as_tree in the model (google it!), I was able to solve this with a really simple bit of code added to the category model :-&lt;/p&gt;  &lt;p&gt;    def fullcategoryname    &lt;br /&gt;        self.ancestors().each() { |parent| fullname += parent.name + " / " }     &lt;br /&gt;        fullname += self.name     &lt;br /&gt;  end&lt;/p&gt;  &lt;p&gt;Thats nice! :) Gotta like Ruby.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117702"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117702" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/117702.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2007/12/14/categories-in-rails.aspx</guid>
            <pubDate>Sat, 15 Dec 2007 00:00:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/117702.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2007/12/14/categories-in-rails.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/117702.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/117702.aspx</trackback:ping>
        </item>
        <item>
            <title>Test Post from Windows Live Writer</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2007/10/09/115951.aspx</link>
            <description>&lt;p&gt;Testing from Windows live writer :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115951"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115951" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/115951.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2007/10/09/115951.aspx</guid>
            <pubDate>Tue, 09 Oct 2007 15:28:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/115951.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2007/10/09/115951.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/115951.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/115951.aspx</trackback:ping>
        </item>
        <item>
            <title>Ruby ruby ruby ruby! (on rails)</title>
            <category>rails</category>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2007/04/18/111775.aspx</link>
            <description>I recently decided to play around a bit with Ruby on Rails, its had so much hype so I thought it would be interesting to see how it fares up against ASP.NET programming!&lt;br /&gt;
&lt;br /&gt;
Anyway, I'm only just starting out, but first impressions are very very good indeed! Ruby seems to be a very intuitive language, although I wouldn't say I preferred it to C#. However, the rails framework that deals with all the agile web framework side of things seems awesome!! Really easy to use and get a reasonably complex web site up and running. &lt;br /&gt;
&lt;br /&gt;
I'm going to waffle on a bit more about this in the future, but in the meantime if you're interested in giving it a go on a windows box, its ridiculously easy - you don't even have to "install" any software!! Just do this:&lt;br /&gt;
&lt;br /&gt;
1) Download "InstantRails". &lt;a href="http://instantrails.rubyforge.org/wiki/wiki.pl"&gt;http://instantrails.rubyforge.org/wiki/wiki.pl&lt;/a&gt;&lt;br /&gt;
From the website: &lt;span style="font-style: italic;"&gt;Instant Rails is a one-stop Rails runtime solution containing Ruby, Rails, Apache, and MySQL, all pre-configured and ready to run. No installer, you simply drop it into the directory of your choice and run it. It does not modify your system environment.&lt;/span&gt;&lt;br /&gt;
2) Get a "development environment setup"&lt;br /&gt;
If you're used to being spoilt/abused by Visual Studio and want something all nice and integrated, then you need to get RadRails. RadRails is a free plugin for the excellent-if-sometimes-a-little-too-slow-for-me Eclipse devenv from Sun. It needs the java runtime to work. Anyway, get it from &lt;a href="http://www.radrails.org"&gt;www.radrails.org&lt;/a&gt;&lt;br /&gt;
Alternatively, use VIM with ruby plugins, or something else :)&lt;br /&gt;
3) Follow some tutorials.&lt;br /&gt;
Start here....&lt;br /&gt;
&lt;a href="http://instantrails.rubyforge.org/tutorial/index.html"&gt;instantrails.rubyforge.org/tutorial/index.html&lt;/a&gt;&lt;br /&gt;
Then here....&lt;br /&gt;
&lt;a href="http://www.digitalmediaminute.com/article/1816/top-ruby-on-rails-tutorials"&gt;www.digitalmediaminute.com/article/1816/top-ruby-on-rails-tutorials&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111775"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111775" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/111775.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2007/04/18/111775.aspx</guid>
            <pubDate>Thu, 19 Apr 2007 02:58:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/111775.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2007/04/18/111775.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/111775.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/111775.aspx</trackback:ping>
        </item>
        <item>
            <title>You know its going to be a long day when...</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/04/102731.aspx</link>
            <description>&lt;p&gt;Installing the Visual Studio 2005 Service Pack and you get this.....&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm1.static.flickr.com/141/345203836_0528206906.jpg?v=0"&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102731"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102731" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/102731.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/04/102731.aspx</guid>
            <pubDate>Thu, 04 Jan 2007 20:23:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/102731.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/04/102731.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/102731.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/102731.aspx</trackback:ping>
        </item>
        <item>
            <title>Happy New Year!</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/02/102523.aspx</link>
            <description>&lt;p&gt;Well, its another new year (did I mention that?) I'm going to make a big attempt to update my blog more often than I did towards the end of last year, that was pitiful to be honest.&lt;/p&gt;
 
&lt;p&gt;So, what better way to start the new year than installing some free software to make your development/computing life that bit easier.... Here's my top 5 list of "Stuff I always install when I rebuild my machine":&lt;/p&gt;
 
&lt;ol&gt;
&lt;li&gt;Notepad2. Its my fave notepad replacement, with all the usual syntax highlighting and cool features. Check it out: &lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;http://www.flos-freeware.ch/notepad2.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; TaskSwitchXP. Its a fantastic Alt-Tab replacement with loads of cool features. &lt;a href="http://www.ntwind.com/software/taskswitchxp.html"&gt;http://www.ntwind.com/software/taskswitchxp.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Firefox with extensions. The best browser gets even better when you start playing with extensions. There's so many good ones, but AdBlock and AllInOneSideBar always make my list. For web developers, check out FireBug (&lt;a href="http://www.getfirebug.com/"&gt;http://www.getfirebug.com/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Omea Reader. Its a free RSS reader and much more. I only use it for RSS feeds, and I really like it for that. I used to use SharpReader until I paid attention to the amount of memory it was consuming! &lt;a href="http://www.jetbrains.com/omea/reader/"&gt;http://www.jetbrains.com/omea/reader/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Foxit Reader. For the love of God don't use that horrible piece of bloated tat known as Adobe Reader. There is a better way, and its here: &lt;a href="http://www.foxitsoftware.com/pdf/rd_intro.php"&gt;http://www.foxitsoftware.com/pdf/rd_intro.php&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;&lt;br&gt;
I could go on for another 20 entries here, but these are probably my top ones... Oh, and "Query Express" (http://www.albahari.com/queryexpress.html)... oh and LLBLGen, but thats not free!
 
&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102523"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102523" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/102523.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/02/102523.aspx</guid>
            <pubDate>Wed, 03 Jan 2007 03:31:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/102523.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2007/01/02/102523.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/102523.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/102523.aspx</trackback:ping>
        </item>
        <item>
            <title>&amp;quot;Touching Base&amp;quot;</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2006/10/25/95035.aspx</link>
            <description>&lt;p&gt;I'm just "touching base" with my blog, which basically means if you convert the management speak crap to normal, that I have nothing in particular to say of interest to the world in general.&lt;/p&gt; &lt;p&gt;What I will say is that I'm happily on Firefox 2 now. It seems to boot a lot faster in windows, and I like the subtle changes to the UI (improved tabs etc). I also think that the improved RSS support is pretty cool, those Live Bookmarks are damn useful!&lt;/p&gt; &lt;p&gt;I'm just waiting for the next release of Ubuntu (6.10) to be released, then I'll boot back into Linux and get FF2 installed in that too. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cool Javascript/CSS Sidebar reference&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Almost forgot to mention it, check this cool AJAX powered sidebar refernence for CSS/JScript (and MySQL/PHP too if you're that way inclined)&lt;/p&gt; &lt;p&gt;&lt;a href="http://ql.aonic.net/info.php"&gt;http://ql.aonic.net/info.php&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=95035"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=95035" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/95035.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2006/10/25/95035.aspx</guid>
            <pubDate>Wed, 25 Oct 2006 23:13:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/95035.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2006/10/25/95035.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/95035.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/95035.aspx</trackback:ping>
        </item>
        <item>
            <title>Learnnig To Tpye Agian :-)</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2006/09/04/90210.aspx</link>
            <description>&lt;p&gt;After years and years of my reasoably fast but error prone self-taught four-six fingered typing, I've decided that I really should learn to type properly (i.e. touch type).&lt;/p&gt; &lt;p&gt;Its driving me mad though!! I think it would be much much easier if i hadn't already programmed my brain to use certain fingers for certain keys - I'm loads faster "old stylee" and still very slow (and error prone) new style... I've been at this for a few weeks now and its getting no easier :(&lt;/p&gt; &lt;p&gt;Programming is the worst, just when you get your fingers in the "starting blocks" you have to reach over for the arrow keys or hit some whacky key combination that you can only do by moving your hands somewhere else....&lt;/p&gt; &lt;p&gt;Fingers crossed (or not&amp;nbsp;;))&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=90210"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=90210" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/90210.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2006/09/04/90210.aspx</guid>
            <pubDate>Tue, 05 Sep 2006 01:41:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/90210.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2006/09/04/90210.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/90210.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/90210.aspx</trackback:ping>
        </item>
        <item>
            <title>Testing from Windows Live Writer....</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/31/89858.aspx</link>
            <description>&lt;p&gt;Greetings all. I'm testing out windows live writer as an alternative to w.bloggar for creating blog posts... &lt;/p&gt; &lt;p&gt;First impressions are good... I like the way that it gives me a proper preview as it will look in the web. I also like the UI (very Word-esque), and the fact that I can save drafts etc...&lt;/p&gt; &lt;p&gt;I think I'll be using this from now on! :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89858"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89858" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/89858.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/31/89858.aspx</guid>
            <pubDate>Thu, 31 Aug 2006 18:07:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/89858.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/31/89858.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/89858.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/89858.aspx</trackback:ping>
        </item>
        <item>
            <title>Adventures in Ubuntu - Opinions of a Windows user</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/24/89130.aspx</link>
            <description>&lt;p&gt;I've been a windows user since the days of windows 3.1... windows at college and Amiga Workbench at home :)  Windows 95 was a big improvement, and XP another big step. But I always wondered how life was as a Linux user. I've also been plagued with XP annoyances recently - spyware, anti-virus software and all the security add-ons have been driving me mad! So, recently I "took the plunge", and discovered how much linux has progressed recently. This post is basically just me waffling about my Linux experience.
&lt;/p&gt;

&lt;h2&gt;So....Ubuntu?&lt;/h2&gt;&lt;p&gt;
Ubuntu is a linux distribution. Its become a very popular one recently - and I like it too! Wikipeadi will tell you more: &lt;a href="http://en.wikipedia.org/wiki/Ubuntu_%28Linux_distribution%29" title="WikiPedia link"&gt;WikiPedia link
&lt;/a&gt;&lt;br&gt;I googled for a while to find the distribution that sounded good to me, and this one stood out to me - loads of people were raving about it, it had a nice firendly website, and just looked pretty cool. So...on to the installation...
&lt;/p&gt;

&lt;h2&gt;Installation.&lt;/h2&gt;
&lt;p&gt;I was pretty scared about installing Ubuntu. I have an XP system and I wanted to keep hold of it, and I was worried that I would do something badly wrong and lose my xp partition! I prepared my hard disk by freeing up some space and creating an unformatted partition (40 gig) ready for a linux install. I used windows software to do this, but have since discovered a cool tool called &lt;a href="http://gparted.sourceforge.net/" title="GParted"&gt;GParted&lt;/a&gt;, which can be downloaded as a live CD and used to help you resize your partitions without losing data! All I did was to resize my windows partition to leave to "spare room" on the disk.... sorted.&lt;/p&gt;
&lt;p&gt;
Anyway, once I had that sorted, I downloaded an ISO of Ubuntu, booted into it, and clicked the icon to install it properly. Thats pretty much all I had to do! The scariest thing was when it asked me where to put the installation, its default suggestion if I remember correctly was to delete the entire hard disk. However I simply told it to use the free space, and off it went. It didn't ask me if I wanted to install a boot loader to allow me to boot windows or linux - this worried me, but it turns out that it did it anyway, I guess linux is always going to be more aware of windows because theres a high chance that windows will be on the system already !! OK, so installation done, I booted into Ubuntu to see what worked..... this is the best bit....&lt;/p&gt;

&lt;h3&gt;Everything worked!&lt;/h3&gt;
Yep, I had sound (XP wont find my sound card without drivers), I had the right resolution, I had USB support (insert a memory stick and voila!), I had CD/DVD burning support, l ife was good :) Well apart from my printer, but apparently I can blame Canon for releasing very bad drivers (shame on you!). 

&lt;h2&gt;The UI, and XGL/Compiz&lt;/h2&gt;
Something I had heard loads about recently was XGL and compiz in linux. I've watched some video's showing off xgl/compiz effects, and thought that it looked incredibly cool and potentally useful, so I was looking to find out more. If you have no idea what I am talking about, check out this video and then you'll see what I mean. &lt;a href="http://video.google.co.uk/videoplay?docid=-7587965514994593432&amp;q=xgl" title="Google video link"&gt;Google video link&lt;/a&gt;
Anyway, I followed the "howto" guide on compiz.net  but theres a lot of guides floating around on this now (e.g. &lt;a href="https://help.ubuntu.com/community/CompositeManager/Xgl"&gt;Link&lt;/a&gt;)... To cut a long story short, I struggled at first but soon got the problem sorted and now have very fun (I'm not yet decided how productive) 3d effects on my desktop that frankly make Vista look a bit lame :) The only problem is that my ATI card struggles a bit but thats because ATI have very poor drivers for linux. I'm hoping that will change soon since AMD bought ATI.

&lt;h2&gt;Using It&lt;/h2&gt;
&lt;p&gt;I like using Ubuntu - I can get lost quite quickly but its nice to experience a different operating system. I think if I wasn't computer savvy it would have been a hell of a struggle - you can get to a  point where things can get difficult to set up and need to delve into forums for help - even installing some software can be a challenge, when all I want to do is download something and make it install! That said, any packages (software) that are in the "repositories" are very easy to install - you can use a UI front-end to browse all available software in the repositoriesand then choose what you want - and theres loads of cool stuff in there... For example I found a media player called amaroK, which IMHO is better than even the latest beta of media player in windows - it just works and does everyhting I want really nicely :) Its just less "popular" stuff that might not be in the repository that can get difficult. Luckilly theres a really popular and helpful forum called UbuntuForums.org which will pretty much sort you out or head you in the right direction.&lt;/p&gt;
&lt;p&gt;
Programming in Ubuntu is an interesting experience. I installed Mono and MonoDevelop for developing in .NET in linux. To be fair to them its incredible what they have accomplished and what you can do, but I'm coming from a background of Visual Studio 2005 here, and to be honest once you get used to the tools and features of that IDE its hard to get excited about other ones. Anyway, I quickly got bored of that and am currently toying with the idea of playing with "Ruby On Rails" a little......who knows what will happen with that.&lt;/p&gt;
&lt;p&gt;
Anyway, I waffled on too long now. In summary I think I can safely say I'm quite impressed with Ubuntu. I'm using a fair bit at home and as I get more familiar I might even start to use it more than windows for non .NET tasks... .but I'm not about to jump ship on Windows... at least not yet :-)
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89130"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89130" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/89130.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/24/89130.aspx</guid>
            <pubDate>Fri, 25 Aug 2006 02:43:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/89130.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2006/08/24/89130.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/89130.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/89130.aspx</trackback:ping>
        </item>
        <item>
            <title>Tip: Visualize ADO Recordsets in .NET 2 (via COM Interop)</title>
            <link>http://geekswithblogs.net/MattRobertsBlog/archive/2006/06/09/81284.aspx</link>
            <description>We have a lot of old COM code we interop with, and its ugly debugging the contents of a recordset from within .NET.... but now theres a much nicer way to do it in 2005 :)&lt;br&gt;
All you need to do is load your ADO Recordset into a DataSet, and then use the new visualizer stuff in visual studion 2005 to have a proper look at the contents of that recordset...&lt;br&gt;
Heres how to get the recordset into a DataSet:
&lt;div class="code"&gt;
&lt;font size=2&gt;				&lt;/font&gt;&lt;font color="#008080" size=2&gt;DataSet&lt;/font&gt;&lt;font size=2&gt; ds = &lt;/font&gt;&lt;font color="#0000FF" size=2&gt;new &lt;/font&gt;&lt;font color="#008080" size=2&gt;DataSet&lt;/font&gt;&lt;font size=2&gt;();&lt;br&gt;
				System.Data.OleDb.&lt;/font&gt;&lt;font color="#008080" size=2&gt;OleDbDataAdapter&lt;/font&gt;&lt;font size=2&gt; adapter = &lt;/font&gt;&lt;font color="#0000FF" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; System.Data.OleDb.&lt;/font&gt;&lt;font color="#008080" size=2&gt;OleDbDataAdapter&lt;/font&gt;&lt;font size=2&gt;();&lt;br&gt;
				adapter.Fill(ds,rs,&lt;/font&gt;&lt;font color="#800000" size=2&gt;"ADODB.RecordSet"&lt;/font&gt;&lt;font size=2&gt;);&lt;/font&gt;&lt;br&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=81284"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=81284" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MattRobertsBlog/aggbug/81284.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matt Roberts</dc:creator>
            <guid>http://geekswithblogs.net/MattRobertsBlog/archive/2006/06/09/81284.aspx</guid>
            <pubDate>Fri, 09 Jun 2006 19:21:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/MattRobertsBlog/comments/81284.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/MattRobertsBlog/archive/2006/06/09/81284.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/MattRobertsBlog/comments/commentRss/81284.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/MattRobertsBlog/services/trackbacks/81284.aspx</trackback:ping>
        </item>
    </channel>
</rss>