<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>ruski.co.za</title>
    <description>an adventure in web technologies</description>
    <link>http://blog.ruski.co.za/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.14</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://blog.ruski.co.za/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Russell van der Walt</dc:creator>
    <dc:title>ruski.co.za</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rusvdw" /><feedburner:info uri="rusvdw" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Mono Tools for Visual Studio on Ubuntu</title>
      <description>&lt;p&gt;&lt;img style="margin: 0px 0px 20px 20px; display: inline" src="http://www.mono-project.com/files/8/8d/Mono-gorilla-aqua.100px.png" alt="Image:mono-gorilla-aqua.100px.png" align="right" /&gt;In order to debug and deploy .NET applications using the &lt;a href="http://www.go-mono.com/monovs/"&gt;Mono Tools for Visual Studio&lt;/a&gt;, there are 2 components that need to be installed. Firstly there is the plugin for Visual Studio on Windows, and there is the monovs-server that needs to run on the target Linux system.&lt;/p&gt;
&lt;p&gt;Installing the Visual Studio plugin is of course as easy as it gets, as the Mono guys have provided a Windows Installer file for our convenience. You can &lt;a href="http://www.go-mono.com/monovs/"&gt;download it here&lt;/a&gt; from the official project page.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re using openSUSE, installing the monovs-server part is quite easy too. Novell has provided a &lt;a href="http://www.mono-project.com/GettingStartedWithMonoVS"&gt;1click RPM installer&lt;/a&gt; (or alternatively you can downloaded an openSUSE virtual image for VMWare or Virtual PC). If however you&amp;rsquo;re not using openSUSE (especially a non-RPM system like Ubuntu), things can get a little tricky.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve managed to hack it so it works on Ubuntu, so what follows should get you up and running quite quickly.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Installing monovs-server on Ubuntu&lt;/h3&gt;
&lt;p&gt;The monovs-server is the Linux server application that allows the Visual Studio plugin to connect to the Linux box so that applications can be deployed and debugged remotely. Luckily for us, the monovs-server application is a Mono application itself, and thus should run on any system or distribution that has a working Mono runtime installed. If you don&amp;rsquo;t yet have a working Mono installation, have&amp;nbsp; a look at &lt;a href="http://www.go-mono.com/monovs/"&gt;my instructions here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re going to be doing this from the shell, so login to your Ubuntu Server via SSH or open a terminal window from your desktop.&lt;/p&gt;
&lt;p&gt;All these instructions assume that you have root privileges, so if you're not logged in as root, enter the following and enter you password when prompted.&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ sudo bash&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lets install some dependencies and 7zip that we&amp;rsquo;re going to need later on:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ apt-get install libncurses-dev p7zip-full&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve installed Mono using my instructions, you are also going to need to compile and install the Mono debugger module. ONLY DO THIS if your Mono was installed by compiling it. If you&amp;rsquo;re running on the Mono that came with Ubuntu, you can (and should) skip this step.&lt;/p&gt;
&lt;p&gt;Lets create a folder, download the debugger package, extract it and compile it:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ mkdir /src    $ cd /src     $ wget http://ftp.novell.com/pub/mono/sources/mono-debugger/mono-debugger-2.4.2.1.tar.bz2 $ tar –xvf mono-debugger-2.4.2.1.tar.bz2     $ cd mono-debugger-2.4.2.1     $ ./configure --prefix=/usr/local; make; make install&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;That should get installing the debugger out of the way.&lt;/p&gt;
&lt;p&gt;Next we need to download and extract the monovs-server RPM and manually install the files, as Ubuntu doesn&amp;rsquo;t support RPM files. It took a lot of digging to find this RPM, as at the time of writing none of this has been documented anywhere.&lt;/p&gt;
&lt;p&gt;Lets start by creating a temporary folder to extract the files into:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /tmp    $ mkdir monovs     $ cd monovs&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now we download the RPM:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ wget http://ftp.novell.com/pub/mono/monovs/latest/openSUSE_11.0/noarch/monovs-server-1.0.4410-1.1.noarch.rpm&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;We now have to extract the files contained in the RPM. The RPM consists of a number of layers of wrappers, so we extract them all till we get to the good bits:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ 7z x monovs-server-1.0.4410-1.1.noarch.rpm    $ 7z x monovs-server-1.0.4410-1.1.noarch.cpio.lzma     $ 7z x monovs-server-1.0.4410-1.1.noarch.cpio&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Once that&amp;rsquo;s done, you&amp;rsquo;ll have a set of folders that contain the files in the RPM. They are:&lt;/p&gt;
&lt;pre&gt;usr/bin/monovs-server&lt;/pre&gt;
&lt;pre&gt;usr/lib/monovs-server/Mono.Packager.dll&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/Mono.Packager.dll.mdb&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/Mono.Ssdp.dll&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/Mono.Ssdp.dll.mdb&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/Mono.TextTemplating.dll&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-debug-server.exe&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-debug-server.exe.mdb&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-server.exe&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-server.exe.config&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-server.exe.mdb&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-web-server.exe&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/monovs-web-server.exe.mdb&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/RemotingContract.dll&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/aspnet.spec.tt&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/desktop.tt&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/exe.spec.tt&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/library.spec.tt&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/winexe.spec.tt&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/lib/monovs-server/templates/wrapper.tt&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;&lt;span style="white-space: normal"&gt;&lt;span style="white-space: pre"&gt;usr/share/pkgconfig/mono.packager.pc&lt;span style="white-space: normal"&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="white-space: pre"&gt;usr/share/pkgconfig/remotingcontract.pc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;We now need to move these files to the correct location on our system. The easiest way to do that is to issue a simple copy command:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cp -r usr/ /&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now that all the files are in the correct location, we start the monovs-server:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ monovs-server&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You should see something like the following displayed:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;Using config file: /usr/lib/monovs-server/monovs-server.exe.config    Listening at: 192.168.1.21:8805, manager port range 8806..8815, webserver port range 8816..8872, using ssdp, using tcp-pipe channel&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s it, the monovs-server is now listening for connections from Visual Studio. Now you can use the &lt;a href="http://go-mono.com/monovs/guides/blog_engine_round_trip/Default.aspx"&gt;tutorials on the Mono Tools of VS website&lt;/a&gt; to deploy and debug your .NET applications on Ubuntu!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/hyCsJbORmLo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/hyCsJbORmLo/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/11/10/Mono-Tools-for-Visual-Studio-on-Ubuntu.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=c96bb3c5-43f5-4a21-8ae6-6f7ea25c2849</guid>
      <pubDate>Tue, 10 Nov 2009 22:51:00 -0600</pubDate>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=c96bb3c5-43f5-4a21-8ae6-6f7ea25c2849</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=c96bb3c5-43f5-4a21-8ae6-6f7ea25c2849</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/11/10/Mono-Tools-for-Visual-Studio-on-Ubuntu.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=c96bb3c5-43f5-4a21-8ae6-6f7ea25c2849</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=c96bb3c5-43f5-4a21-8ae6-6f7ea25c2849</feedburner:origLink></item>
    <item>
      <title>Mono Tools for Visual Studio Released</title>
      <description>&lt;p&gt;The guys at the Mono Project have released their &lt;a href="http://www.go-mono.com/monovs/"&gt;Mono Tools for Visual Studio&lt;/a&gt;. This must be one of the most anticipated projects of the year for me yet!&lt;/p&gt;
&lt;p&gt;According to the official project page:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mono Tools for Visual Studio is a commercial add-in for Microsoft&amp;trade; Visual Studio&amp;trade; that enables developers to write .NET applications for non-Windows platforms within their preferred development environment. It allows developers to build, debug and deploy .NET applications on Linux, while continuing to leverage the extensive ecosystem of code, libraries, and tools available for .NET.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While there&amp;rsquo;s a fair bit of marketing speak in there (I tune out pretty much whenever I hear the words &amp;ldquo;leverage&amp;rdquo; and &amp;ldquo;ecosystem&amp;rdquo;), the benefits are actually quite simple.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can now remotely deploy and debug .NET applications on Mono directly from within Visual Studio!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t begin to tell you how much help this is going to be in working on BlogEngine.NET on Linux. Unfortunately this capability isn&amp;rsquo;t open-source or free, but as a Visual Studio developer you&amp;rsquo;re probably going to be used to paying for features. Starting at $99 I guess it&amp;rsquo;s not too hefty a price to pay if you&amp;rsquo;re serious about using C# on Mono and Linux.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s some of the awesome things you can do with it right now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directly deploy a .NET application to a remote Linux machine. &lt;/li&gt;
&lt;li&gt;Debug and step through your code in Visual Studio as you run on a Linux box. &lt;/li&gt;
&lt;li&gt;Built in portability checker for existing .NET applications. &lt;/li&gt;
&lt;li&gt;Package your application as an .rpm for installation on distributions that support RPM&amp;rsquo;s (not Ubuntu unfortunately). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, I&amp;rsquo;d suggest you go visit &lt;a href="http://tirania.org/blog/archive/2009/Nov-10.html"&gt;Miguel de Icaza&amp;rsquo;s blog&lt;/a&gt;, and also the &lt;a href="http://www.go-mono.com/monovs/"&gt;official product page&lt;/a&gt; at the Mono project.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll be following up this post shortly with a guide to getting it all to work on Ubuntu.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/U8e_k8Ma690" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/U8e_k8Ma690/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/11/10/monovs-released.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=21fad09c-0847-4aa3-a466-5af2980ca023</guid>
      <pubDate>Tue, 10 Nov 2009 20:32:00 -0600</pubDate>
      <category>C#</category>
      <category>Linux</category>
      <category>Mono</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=21fad09c-0847-4aa3-a466-5af2980ca023</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=21fad09c-0847-4aa3-a466-5af2980ca023</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/11/10/monovs-released.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=21fad09c-0847-4aa3-a466-5af2980ca023</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=21fad09c-0847-4aa3-a466-5af2980ca023</feedburner:origLink></item>
    <item>
      <title>A brand new theme!</title>
      <description>&lt;p&gt;I’ve finally gotten around to creating a new theme for this blog. I’ve been feeling a bit of pressure &lt;a href="http://www.nyveldt.com/blog/post/BE-Theme-Tip-Make-the-front-page-look-different.aspx"&gt;after Al did an absolutely stunning remake of his blog&lt;/a&gt; a couple of months ago.&lt;/p&gt;  &lt;p&gt;With each theme I do for BlogEngine.NET, I can’t help but be more and more impressed with how easy it is. &lt;/p&gt;  &lt;p&gt;Al also has some great tips for BlogEngine.NET theme designers. Have a a look at his &lt;a href="http://www.nyveldt.com/blog/post/BlogEngineNET-Creating-Themes-Webcast.aspx"&gt;creating themes webcast&lt;/a&gt; and some tips &lt;a href="http://www.nyveldt.com/blog/post/BE-Theme-Tip-Adding-default-images-for-each-category.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://www.nyveldt.com/blog/post/BE-Theme-Tip-Make-the-front-page-look-different.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/Q-b17Rn9joA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/Q-b17Rn9joA/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/11/04/A-brand-new-theme!.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=e8911e6c-d3d1-486d-978c-0b8442a4a455</guid>
      <pubDate>Wed, 04 Nov 2009 02:42:36 -0600</pubDate>
      <category>BlogEngine.NET</category>
      <category>Themes</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=e8911e6c-d3d1-486d-978c-0b8442a4a455</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=e8911e6c-d3d1-486d-978c-0b8442a4a455</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/11/04/A-brand-new-theme!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=e8911e6c-d3d1-486d-978c-0b8442a4a455</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=e8911e6c-d3d1-486d-978c-0b8442a4a455</feedburner:origLink></item>
    <item>
      <title>Mono Compile &amp; Install Script</title>
      <description>&lt;p&gt;I&amp;rsquo;ve finally put together a bash script to automatically download, compile and install Mono on Ubuntu. At the time of writing, it installs Mono 2.4.2.3. Should this be outdated by the time you read this, you can simply modify the install script to download the latest files.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A word of warning:&lt;/strong&gt; This script will remove any previous installations of Mono done via apt-get or Synaptic. This means that existing Mono applications may cease to function or be removed entirely. I would suggest only running this on Ubuntu Server, where visual apps aren&amp;rsquo;t an issue.&lt;/p&gt;
&lt;p&gt;First, make sure you&amp;rsquo;re running with root privileges:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ sudo bash&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Then let&amp;rsquo;s download the script from my blog:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ wget http://blog.ruski.co.za/files/install-mono.sh&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Before we can execute the script, we need to give the file execute permissions:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ chmod 700 install-mono.sh&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now we can execute the script:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ ./install-mono.sh&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The script will now go off and do all the bits that it needs to install Mono. This may take a good couple of minutes.&lt;/p&gt;
&lt;p&gt;For those who&amp;rsquo;re interested, the contents of the script is below:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;#!/bin/bash   apt-get remove mono-common    apt-get update    apt-get install build-essential pkg-config libglib2.0-dev bison libcairo2-dev libungif4-dev libjpeg62-dev libtiff4-dev gettext apache2-threaded-dev&lt;br /&gt;mkdir /src   mkdir /src/monoscript    cd /src/monoscript&lt;br /&gt;wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.4.2.tar.bz2 wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.4.2.3.tar.bz2 wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.4.2.tar.bz2 wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.4.2.tar.bz2&lt;br /&gt;tar -xvf libgdiplus-2.4.2.tar.bz2   tar -xvf mono-2.4.2.3.tar.bz2    tar -xvf xsp-2.4.2.tar.bz2    tar -xvf mod_mono-2.4.2.tar.bz2&lt;br /&gt;# compile libgdipluss   cd libgdiplus-2.4.2    ./configure --prefix=/usr/local; make; make install    sh -c "echo /usr/local/lib &lt;span class="kwrd"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /etc/ld.so.conf"    /sbin/ldconfig&lt;br /&gt;# compile mono   cd ../mono-2.4.2.3    ./configure --prefix=/usr/local; make; make install&lt;br /&gt;# compile xsp   cd ../xsp-2.4.2    ./configure --prefix=/usr/local; make; make install&lt;br /&gt;# compile mod_mono   cd ../mod_mono-2.4.2    ./configure --prefix=/usr/local; make; make install&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You will still need to configure apache2, so use the rest of the instructions on this page: &lt;a href="http://blog.ruski.co.za/page/Install-Mono-on-Ubuntu.aspx"&gt;Install Mono 2.4 on Ubuntu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you have any issues with the script, let me know in the comments.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/WcXNIPoM-j0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/WcXNIPoM-j0/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/10/14/Mono-Compile-Install-Script.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=4f8fce34-d4d3-4c58-b973-c7d6df192a9e</guid>
      <pubDate>Wed, 14 Oct 2009 04:16:00 -0600</pubDate>
      <category>Linux</category>
      <category>Mono</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=4f8fce34-d4d3-4c58-b973-c7d6df192a9e</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=4f8fce34-d4d3-4c58-b973-c7d6df192a9e</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/10/14/Mono-Compile-Install-Script.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=4f8fce34-d4d3-4c58-b973-c7d6df192a9e</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=4f8fce34-d4d3-4c58-b973-c7d6df192a9e</feedburner:origLink></item>
    <item>
      <title>Checking for broken links before deploying</title>
      <description>&lt;p&gt;When you’re developing a large website, you often find yourself with a couple of broken links floating around on your site. As most developers working on dynamic sites generally don’t think about it, your first indication that you have a problem is usually only after deployment.&lt;/p&gt;  &lt;p&gt;Either you’re unlucky enough to have it brought to your attention by a customer, or you discover it yourself using a tool like &lt;a href="https://www.google.com/webmasters/tools/"&gt;Google’s Webmaster Tools&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ruski.co.za/image.axd?picture=image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ruski.co.za/image.axd?picture=image_thumb.png" width="397" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is exactly what happened to me while working on our new &lt;a href="http://www.stayunlimited.com/"&gt;Cape Town Accommodation&lt;/a&gt; venture &lt;a href="http://www.stayunlimited.com"&gt;www.stayunlimited.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The webmaster tools will allow you to drill into the info and find the offending links. Now you happily go off and fix the problem in your site and deploy again. &lt;/p&gt;  &lt;p&gt;But hang on a second. How can you be sure that you haven’t created more broken links in the process of fixing the problem you initially identified? With a dynamic site making heavy use of URL rewriting this is a major possibility (and it happens to be exactly what happened to me).&lt;/p&gt;  &lt;p&gt;Obviously you need to test that your site is now broken link free. You can be optimistic about it and wait for Google to re-index your site so you can check the webmaster tools again (probably not a very good idea). Or you can use one of the many online link checkers available to scan your site. But that isn’t that great a solution either, because at this point you’ve already deployed the site.&lt;/p&gt;  &lt;p&gt;First prize then would be to check your site for broken links in your development environment &lt;em&gt;before&lt;/em&gt; deploying. There are a number of tools available for doing this, but most are commercial and not free of charge. The &lt;a href="http://www.softwareqatest.com/qatweb1.html#LINK"&gt;SoftwareQATest.com&lt;/a&gt; website has a number of tools listed if you’re interested.&lt;/p&gt;  &lt;p&gt;From their list I discovered the excellent freeware &lt;a href="http://home.snafu.de/tilman/xenulink.html"&gt;Xenu&lt;/a&gt; utility by Tilman Hausherr. This little Windows app will scan through your locally deployed website and highlight any broken links, allowing you to fix them before deploying!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ruski.co.za/image.axd?picture=image_1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ruski.co.za/image.axd?picture=image_thumb_1.png" width="529" height="339" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What more could you ask for?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/4o3p1TfbeKQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/4o3p1TfbeKQ/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/09/08/Checking-for-broken-links-before-deploying.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=1407b311-0d7b-4b79-be9e-b8f47b96dc1b</guid>
      <pubDate>Tue, 08 Sep 2009 20:57:46 -0600</pubDate>
      <category>ASP.NET</category>
      <category>Internet</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=1407b311-0d7b-4b79-be9e-b8f47b96dc1b</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=1407b311-0d7b-4b79-be9e-b8f47b96dc1b</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/09/08/Checking-for-broken-links-before-deploying.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=1407b311-0d7b-4b79-be9e-b8f47b96dc1b</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=1407b311-0d7b-4b79-be9e-b8f47b96dc1b</feedburner:origLink></item>
    <item>
      <title>Tokyo Cabinet / Tyrant .NET bindings</title>
      <description>&lt;p&gt;My efforts at evaluating &lt;a href="http://tokyocabinet.sourceforge.net/"&gt;Tokyo Cabinet&lt;/a&gt; hit a bit of a dead-end when I realised there were no .NET bindings for it. I suppose I could have evaluated it using Ruby or Python, but that would have just been putting off the inevitable. At some stage I would need .NET bindings if I was to use it in a project.&lt;/p&gt;  &lt;p&gt;So I’ve gone ahead and implemented the TokyoTyrant binary network protocol in a .NET wrapper. I’ve open-sourced my efforts, and you can download the source from CodePlex at &lt;a href="http://tokyotyrant.codeplex.com"&gt;http://tokyotyrant.codeplex.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I am mostly interested in using Tokyo Cabinet as a document database, so my implementation fully supports the table database mode of Tokyo Cabinet. It’s a full implementation though, so there is support for it’s various key/value modes too.&lt;/p&gt;  &lt;p&gt;Mono is fully supported and there is a comprehensive example project, so getting up and running should be easy.&lt;/p&gt;  &lt;p&gt;Give the library a spin and let me know if you have any (hopefully constructive) criticism.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/73tOf1eCl4I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/73tOf1eCl4I/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/07/25/Tokyo-Cabinet-Tyrant-NET-bindings.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=79f3591a-a3e0-4532-aa25-e17622152f39</guid>
      <pubDate>Sat, 25 Jul 2009 09:00:39 -0600</pubDate>
      <category>Tokyo Cabinet</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=79f3591a-a3e0-4532-aa25-e17622152f39</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=79f3591a-a3e0-4532-aa25-e17622152f39</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/07/25/Tokyo-Cabinet-Tyrant-NET-bindings.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=79f3591a-a3e0-4532-aa25-e17622152f39</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=79f3591a-a3e0-4532-aa25-e17622152f39</feedburner:origLink></item>
    <item>
      <title>Install Tokyo Tyrant on Ubuntu (with Lua)</title>
      <description>&lt;p&gt;I&amp;rsquo;ve been getting increasingly interested in alternative databases of late. With alternative I mean non-relational databases of course.&lt;/p&gt;
&lt;p&gt;There are a number of document / key value stores in development at the moment. They include projects like HBase, CouchDB, MongoDB and much more.&lt;/p&gt;
&lt;p&gt;What has really grabbed my attention at the moment is Tokyo Cabinet. It&amp;rsquo;s a fascinating datastore that promises excellent performance along with great data security features like master-master replication.&lt;/p&gt;
&lt;p&gt;This post isn&amp;rsquo;t about the features of &lt;a href="http://tokyocabinet.sourceforge.net/"&gt;Tokyo Cabinet&lt;/a&gt;, it&amp;rsquo;s about getting it installed so you can start playing with it yourself. The Igvita blog has a great write-up about why Tokyo Cabinet is relevant, so head over to &lt;a href="http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/"&gt;Tokyo Cabinet: Beyond Key-Value Store&lt;/a&gt; for the juicy details. Once you&amp;rsquo;re impressed, head back here to install it and start playing!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The latest sources for Tokyo Cabinet at time of writing is 1.4.29 and Tokyo Tyrant is 1.1.31.&lt;/p&gt;
&lt;p&gt;First, lets install some build dependencies:&lt;/p&gt;
&lt;p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 16px 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;span style="text-align: left; line-height: 19px; font-family: georgia; color: #333333; font-size: 13px"&gt;&lt;div class="code"&gt;
&lt;br /&gt;sudo apt-get install checkinstall build-essential libbz2-dev zlib1g-dev libreadline5-dev&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ mkdir /src    $ cd /src&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;We need to install Lua first. Download the sources, extract them and change into the source folder:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /src$ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz$ tar zxf lua-5.1.4.tar.gz$ cd lua-5.1.4&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now lets compile it.&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ make linux test    $ make install&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Once that&amp;rsquo;s done, it should print out something like the following:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;Hello world, from Lua 5.1!&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now we download and compile Tokyo Cabinet (latest version at time of writing is 1.4.29):&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /src    $ wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.29.tar.gz $ tar xvf tokyocabinet-1.4.29.tar.gz     $ cd tokyocabinet-1.4.29     $ ./configure; make; make install     &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Next up is Tokyo Tyrant (latest version at time of writing is 1.1.31):&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /src    $ wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.31.tar.gz $ tar xvf tokyotyrant-1.1.31.tar.gz     $ cd tokyotyrant-1.1.31     $ ./configure --enable-lua; make; make install&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;To test that Tokyo Tyrant is installed and working, type the following:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ ./ttserver&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You should see something like the following:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;2009-07-15T09:57:06-06:00       SYSTEM  --------- logging started [5469] --------    2009-07-15T09:57:06-06:00       SYSTEM  server configuration: host=(any) port=1978     2009-07-15T09:57:06-06:00       SYSTEM  opening the database: *     2009-07-15T09:57:06-06:00       SYSTEM  service started: 5469     2009-07-15T09:57:06-06:00       INFO    timer thread 1 started     2009-07-15T09:57:06-06:00       INFO    worker thread 1 started     2009-07-15T09:57:06-06:00       INFO    worker thread 2 started     2009-07-15T09:57:06-06:00       INFO    worker thread 3 started     2009-07-15T09:57:06-06:00       INFO    worker thread 4 started     2009-07-15T09:57:06-06:00       INFO    worker thread 5 started     2009-07-15T09:57:06-06:00       INFO    worker thread 6 started     2009-07-15T09:57:06-06:00       INFO    worker thread 7 started     2009-07-15T09:57:06-06:00       INFO    worker thread 8 started     2009-07-15T09:57:06-06:00       SYSTEM  listening started&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;To end the server, simply press Ctrl-C.&lt;/p&gt;
&lt;p&gt;Of course, chances are you want the Tyrant server to start on bootup. To do this, we copy the ttservctl script to the /etc/init.d/ directory, make it executable and tell Ubuntu to start it at boot time:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cp /usr/local/sbin/ttservctl /etc/init.d    $ chmod +x /etc/init.d/ttservctl     $ update-rc.d myscript start 51 S .&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget the dot at the end of that last line.&lt;/p&gt;
&lt;p&gt;You can now also use /etc/init.d/ttservctl/ to stop, start and restart the service.&lt;/p&gt;
&lt;p&gt;Start the server:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;/etc/init.d/ttservctl start&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Stop the server:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;/etc/init.d/ttservctl stop&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Restart the server:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;/etc/init.d/ttservctl restart&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now that you have it installed, you can connect to it and use it with one of the available language bindings. Currently there are Ruby, Python, Perl and Java interfaces available. See the &lt;a href="http://tokyocabinet.sourceforge.net/"&gt;Tokyo Cabinet&lt;/a&gt; page for more details on using those.&lt;/p&gt;
&lt;p&gt;References&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lua.org/faq.html"&gt;http://www.lua.org/faq.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://openwferu.rubyforge.org/tokyo.html"&gt;&lt;span style="color: #0066cc;"&gt;http://openwferu.rubyforge.org/tokyo.html&lt;/span&gt;&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://techblog.ovidiudan.com/2009/05/installing-tokyo-tyrant-on-ubuntu-9.html"&gt;&lt;span style="color: #0066cc;"&gt;http://techblog.ovidiudan.com/2009/05/installing-tokyo-tyrant-on-ubuntu-9.html&lt;/span&gt;&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.ubuntu.com/community/UbuntuBootupHowto"&gt;&lt;span style="color: #0066cc;"&gt;https://help.ubuntu.com/community/UbuntuBootupHowto&lt;/span&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/6IaPpBgt_4k" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/6IaPpBgt_4k/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/07/24/Install-Tokyo-Tyrant-on-Ubuntu-(with-Lua).aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=43499aad-7c07-4fa5-ab65-c1860c2a547f</guid>
      <pubDate>Fri, 24 Jul 2009 05:21:00 -0600</pubDate>
      <category>Linux</category>
      <category>Tokyo Cabinet</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=43499aad-7c07-4fa5-ab65-c1860c2a547f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=43499aad-7c07-4fa5-ab65-c1860c2a547f</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/07/24/Install-Tokyo-Tyrant-on-Ubuntu-(with-Lua).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=43499aad-7c07-4fa5-ab65-c1860c2a547f</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=43499aad-7c07-4fa5-ab65-c1860c2a547f</feedburner:origLink></item>
    <item>
      <title>Compiling Mono 2.4.2.1 on Ubuntu</title>
      <description>&lt;p&gt;The Mono team has just &lt;a href="http://mono-project.com/Main_Page"&gt;released Mono 2.4.2.1&lt;/a&gt;. This release is of particular significance because it contains support for ASP.NET MVC. That’s great news for me as I am now thoroughly addicted to MVC.&lt;/p&gt;  &lt;p&gt;Mono 2.4.2.1 will install using the instructions in my existing tutorial, but I did have some trouble compiling the new release on my own server.&lt;/p&gt;  &lt;p&gt;In particular, I had a SIGSEGV error while compiling Mono. I got around that by updating my system. So&amp;#160; make sure that update your system before compilation using “apt-get upgrade”.&lt;/p&gt;  &lt;p&gt;Secondly, I ran out of memory while compiling again. It seems that as the mono documentation gets bigger, the memory required for compilation just gets more and more. I managed to compile with 450MB of free memory this time.&lt;/p&gt;  &lt;p&gt;So head on over to my tutorial on &lt;a href="http://blog.ruski.co.za/page/Install-Mono-on-Ubuntu.aspx"&gt;Installing Mono on Ubuntu&lt;/a&gt; and give it a go yourself.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/DsrKpCKTlBA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/DsrKpCKTlBA/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/07/16/Compiling-Mono-2421-on-Ubuntu.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=523a61fb-da82-4beb-adf5-1569f7afdd30</guid>
      <pubDate>Thu, 16 Jul 2009 04:50:29 -0600</pubDate>
      <category>Mono</category>
      <category>Linux</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=523a61fb-da82-4beb-adf5-1569f7afdd30</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=523a61fb-da82-4beb-adf5-1569f7afdd30</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/07/16/Compiling-Mono-2421-on-Ubuntu.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=523a61fb-da82-4beb-adf5-1569f7afdd30</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=523a61fb-da82-4beb-adf5-1569f7afdd30</feedburner:origLink></item>
    <item>
      <title>Online Avatars</title>
      <description>&lt;p&gt;I've had some questions about my avatar, and no, I did not create it myself. It comes from an online avatar/character generator created by the very talented &lt;a href="http://rasterboy.com/" target="_blank"&gt;Rasterboy&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Check out his &lt;a href="http://unique.rasterboy.com/" target="_blank"&gt;Unique character generator here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Every comment I leave on my blog and those of other's display my avatar because I have a Gravatar account.&lt;/p&gt; &lt;p&gt;From their site: &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font: 16px 'Times New Roman'; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; color: rgb(68,68,68); line-height: 20px; font-family: verdana; text-align: left"&gt;A gravatar, or&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;g&lt;/b&gt;lobally&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;r&lt;/b&gt;ecognized&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;avatar&lt;/b&gt;, is quite simply an image that follows you from site to site appearing beside your name when you do things.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Go check &lt;a href="http://en.gravatar.com/" target="_blank"&gt;Gravatar out here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/d3PN2n-qRgc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/d3PN2n-qRgc/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/05/21/Online-Avatars.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=8e464307-bfd9-45ec-8f00-0d871725116f</guid>
      <pubDate>Thu, 21 May 2009 20:09:38 -0600</pubDate>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=8e464307-bfd9-45ec-8f00-0d871725116f</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=8e464307-bfd9-45ec-8f00-0d871725116f</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/05/21/Online-Avatars.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=8e464307-bfd9-45ec-8f00-0d871725116f</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=8e464307-bfd9-45ec-8f00-0d871725116f</feedburner:origLink></item>
    <item>
      <title>Behaviour Driven Development for Dummies</title>
      <description>&lt;p&gt;If you've noticed all the talk about &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank"&gt;Behaviour Driven Development&lt;/a&gt; (BDD) on the interwebs, you've probably had a look at it and tried to wrap your mind around it.&lt;/p&gt; &lt;p&gt;Like me, you may have decided that it looks interesting, but told yourself that you'll get back to it someday because of the sheer lack of good introductory information available. &lt;/p&gt; &lt;p&gt;Well that someday is now, as &lt;a href="http://blog.wekeroad.com/" target="_blank"&gt;Rob Conery&lt;/a&gt; has put together an amazing screencast that explains it in detail with truly useful and understandable examples. In fact, he's done such a good job of it that I'm completely sold. I can't wait to integrate some BDD goodness into my next project.&lt;/p&gt; &lt;p&gt;To see for yourself, go check out Rob's most excellent screencast here: &lt;a href="http://blog.wekeroad.com/mvc-storefront/kona-3/"&gt;&lt;font color="#0000ff"&gt;http://blog.wekeroad.com/mvc-storefront/kona-3/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/fPGDZoL8sG0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/fPGDZoL8sG0/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/05/14/Behaviour-Driven-Development-for-Dummies.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=7703f45d-16d5-4d51-9b2d-522f2590eb0d</guid>
      <pubDate>Thu, 14 May 2009 21:51:52 -0600</pubDate>
      <category>Design &amp; Architecture</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=7703f45d-16d5-4d51-9b2d-522f2590eb0d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=7703f45d-16d5-4d51-9b2d-522f2590eb0d</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/05/14/Behaviour-Driven-Development-for-Dummies.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=7703f45d-16d5-4d51-9b2d-522f2590eb0d</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=7703f45d-16d5-4d51-9b2d-522f2590eb0d</feedburner:origLink></item>
    <item>
      <title>Elixir Theme for BE.NET</title>
      <description>&lt;p&gt;&lt;a href="http://whalesalad.com/" target="_blank"&gt;Michael Whalen&lt;/a&gt; has graciously allowed me to port his Elixir theme to BlogEngine.NET. This previously WordPress only theme is now available for your BlogEngine.NET enjoyment.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ruski.co.za/image.axd?picture=whalesalad.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://blog.ruski.co.za/image.axd?picture=whalesalad_thumb.png" border="0" alt="whalesalad" width="387" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Michael originally released the theme in 5 different colours. I've gone a little bit further and added the ability to dynamically change the colour. So you now have 7 colours to choose from, or you can set it to automatically change colour every day. One for every day of the week! I've also added the ability to dynamically swap between the left and right layout.&lt;/p&gt;
&lt;p&gt;To install the theme you simply extract the contents of the zip file into the BlogEngine.NET Themes folder. Then select Elixir as your theme from the settings page.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ruski.co.za/?theme=Elixir" target="_blank"&gt;Click here&lt;/a&gt; to preview the theme.&lt;/p&gt;
&lt;p&gt;Download:&amp;nbsp;&lt;a href="http://blog.ruski.co.za/file.axd?file=2009%2f4%2fElixir.zip"&gt;Elixir.zip (625.81 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let me know in the comments how the theme pans out for you.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/rmdoKZ_Erdw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/rmdoKZ_Erdw/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/04/22/Elixir-Theme-for-BENET.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=4dc474ce-e216-4215-a8f9-7e7d5f755e0e</guid>
      <pubDate>Wed, 22 Apr 2009 03:55:00 -0600</pubDate>
      <category>BlogEngine.NET</category>
      <category>Themes</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=4dc474ce-e216-4215-a8f9-7e7d5f755e0e</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=4dc474ce-e216-4215-a8f9-7e7d5f755e0e</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/04/22/Elixir-Theme-for-BENET.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=4dc474ce-e216-4215-a8f9-7e7d5f755e0e</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=4dc474ce-e216-4215-a8f9-7e7d5f755e0e</feedburner:origLink></item>
    <item>
      <title>VirtualBox: Why aren't you using it yet?</title>
      <description>&lt;p&gt;&lt;img style="border: 0; margin-left: 10px; margin-right: 10px; float: right;" src="http://blog.ruski.co.za/image.axd?picture=2009%2f4%2fvirtualbox.JPG" alt="" width="300" /&gt;If you're a Windows user and you've been messing around in the Linux world like I have, you've probably tried a number of virtualization solutions. The most popular of these being Virtual PC from Microsoft or one of VMWare's products.&lt;/p&gt;
&lt;p&gt;But have you ever wished you could have the virtualization features of VMWare Server with the ease and simplicity of Virtual PC? It turns out now you can, and if you're still using either VMWare or Microsoft's offerings, you've been missing out.&lt;/p&gt;
&lt;p&gt;There's another little known player in the virtualization market that you need to take notice of: &lt;a href="http://www.virtualbox.org/" target="_blank"&gt;VirtualBox&lt;/a&gt; from Sun.&lt;/p&gt;
&lt;p&gt;VirtualBox is a dual proprietary and open-source product. This means that they provide an open source version with everything you need, but also provide a commercial version with some extras (so they can make a bit of money from the product). The commercial version also happens to be free for personal use, so there's nothing stopping you from using it either.&lt;/p&gt;
&lt;p&gt;The first thing you'll notice when downloading and installing Virtual Box is that (like Virtual PC) it's pretty slim on the download at 60MB. It installs in a jiffy and you'll be up and running in no time. The next think you'll notice may not be important to you, but it is to me: it actually looks like a commercial Windows application and is very intuitive to use (especially if you've used either Virtual PC or VMWare before).&lt;/p&gt;
&lt;p&gt;Unlike Virtual PC, VirtualBox is under active development. This translates into the fact that they support almost all popular operating systems out of the box, including official support for Windows 7 (which hasn't even been released yet). Ubuntu also installs without any glitches, unlike on Virtual PC which requires a bunch of hacks. I guess it helps that they're not pushing a particular operating system. VirtualBox supports 32bit and 64bit guest operating systems and comes with virtual machine additions that work seamlessly for Linux, Windows, Solaris and OS/2 guests. There's even 3D acceleration support for Linux guests in the latest release.&lt;/p&gt;
&lt;p&gt;Everyone that uses virtualization is going to be concerned with performance, and I'm happy to report that VirtualBox kicks butt in that regard. My own tests have shown much snappier performance than what I've gotten used to, but if you don't want to take my word for it, have a look at Michal Strehovsky's blog. He's done a &lt;a href="http://migeel.sk/blog/2007/10/24/virtual-machines-performance-comparison/" target="_blank"&gt;performance comparison&lt;/a&gt; utilizing a number of benchmarks, and VirtualBox comes out on top in every category.&lt;/p&gt;
&lt;p&gt;I've kept the best for last though. VirtualBox loads and runs both VMWare .vmdk and Virtual PC .vhd images with no conversion required. Any reason you've had not to try it should have quickly evaporated with that news.&lt;/p&gt;
&lt;p&gt;So to summarize, you're pretty much getting VMWare features with the convenience of Virtual PC. Throw in better performance than its competing free products and you have a winner in my book.&lt;/p&gt;
&lt;p&gt;VirtualBox has completely won me over and I think it may just do the same for you. Go give it &lt;a href="http://www.virtualbox.org/" target="_blank"&gt;a try&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/ggi0hW31N3Y" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/ggi0hW31N3Y/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/04/20/virtualbox.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=3dc7d66b-18dd-43be-a587-d08909fe43f3</guid>
      <pubDate>Mon, 20 Apr 2009 07:16:00 -0600</pubDate>
      <category>Linux</category>
      <category>Windows</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=3dc7d66b-18dd-43be-a587-d08909fe43f3</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=3dc7d66b-18dd-43be-a587-d08909fe43f3</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/04/20/virtualbox.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=3dc7d66b-18dd-43be-a587-d08909fe43f3</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=3dc7d66b-18dd-43be-a587-d08909fe43f3</feedburner:origLink></item>
    <item>
      <title>Ubuntu Without VMWare in Windows</title>
      <description>&lt;p&gt;&lt;a href="http://blog.ruski.co.za/image.axd?picture=2009%2f4%2f800px-Ubuntu_on_Windows_-_running_Synaptic_and_nautilus.png"&gt;&lt;img style="float: right; margin-left: 10px; margin-right: 10px;" title="Synaptic and Nautilus running on Vista" src="http://blog.ruski.co.za/image.axd?picture=2009%2f4%2f800px-Ubuntu_on_Windows_-_running_Synaptic_and_nautilus.png" border="0" alt="Synaptic and Nautilus running on Vista" width="300" /&gt;&lt;/a&gt;If you're a Windows user and you've been meaning to mess around with Linux (particularly Ubuntu), you're now very much in luck.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.demonccc.com.ar/" target="_blank"&gt;Claudio C&amp;eacute;sar S&amp;aacute;nchez Tejeda&lt;/a&gt; has put together a CoLinux package of Ubuntu 8.04 Hardy Heron called &lt;a href="http://portableubuntu.sourceforge.net/" target="_blank"&gt;Portable Ubuntu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Cooperative_Linux" target="_blank"&gt;CoLinux&lt;/a&gt; allows you to run a Linux operating system that cooperates with your existing Windows installation. This means that you don't have to dual-boot or fire up a Virtual Machine in order to experiment with Linux anymore. You can run Linux almost the same way you would run any other Windows application. And to sweeten the deal, any Linux app you run in this environment will integrate into your Windows desktop, thus allowing you to overlap Linux apps with Windows apps. It even incorporates seamless copy and paste.&lt;/p&gt;
&lt;p&gt;CoLinux clearly beats the pants of virtualization and finally makes it extremely easy to test the waters with Linux as a Windows user.&lt;/p&gt;
&lt;p&gt;This is all possible because of the modified CoLinux kernel which cooperatively schedules resources with the Windows NT kernel, rather than having the computer resources delegated by the host computer. The desktop integration is possible because of &lt;a href="http://en.wikipedia.org/wiki/Xming" target="_blank"&gt;Xming&lt;/a&gt;, a Windows implementation of the Linux X Window server.&lt;/p&gt;
&lt;h2&gt;Installing Portable Ubuntu&lt;/h2&gt;
&lt;p&gt;Installation is straightforward. Simply download the Portable Ubuntu archive from SourceForge &lt;a href="http://downloads.sourceforge.net/portableubuntu/Portable_Ubuntu.exe?modtime=1221687705&amp;amp;big_mirror=0" target="_blank"&gt;here&lt;/a&gt;, extract it to a folder and run the &lt;strong&gt;run_portable_ubuntu.bat&lt;/strong&gt; file. Portable Ubuntu will even run from a Flash drive on any Windows machine you stick it in.&lt;/p&gt;
&lt;p&gt;After a couple of seconds or so you'll get a splash screen while the Ubuntu operating system boots up in the background. Once that is done you'll have the Ubuntu taskbar at the top of your screen from which you can launch and install Ubuntu applications. It only works on 32bit systems though, if you're on a 64bit Vista or XP system you're out of luck. What is also awesome about this is that you don't even need to configure an internet connection, it will piggy back of your Windows machine's connection.&lt;/p&gt;
&lt;p&gt;If you're planning on installing software and messing with your Ubuntu system you'll need the root password: 123456&lt;/p&gt;
&lt;h2&gt;Installing Mono&lt;/h2&gt;
&lt;p&gt;Mono will install successfully using my existing instructions &lt;a href="http://blog.ruski.co.za/page/Install-Mono-on-Ubuntu.aspx" target="_blank"&gt;here&lt;/a&gt;, but only if you increase the drive space!&lt;/p&gt;
&lt;p&gt;When just installed your Ubuntu drive space will be limited to about 400 MB. This obviously isn't enough to install a lot of software in, so if you plan to install Mono you'll want to extend the drive image size. I've put together a little tutorial on how to do this &lt;a href="http://blog.ruski.co.za/page/Resize-a-Portable-Ubuntu-Image.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once that's sorted and you've gotten Mono installed, have a look at getting BlogEngine.NET installed from the instructions &lt;a href="http://blog.ruski.co.za/page/Installing-BlogEngineNET-on-MonoLinux.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And who knows, when you see it all work painlessly for yourself you might be hosting your next blog on an inexpensive Linux VPS before you know it :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/Jk4G7O5NgFU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/Jk4G7O5NgFU/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/04/15/Ubuntu-Without-VMWare-in-Windows.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=07cd8eb5-b7c2-4922-9629-1b53f0c8737e</guid>
      <pubDate>Wed, 15 Apr 2009 04:49:00 -0600</pubDate>
      <category>Linux</category>
      <category>Mono</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=07cd8eb5-b7c2-4922-9629-1b53f0c8737e</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=07cd8eb5-b7c2-4922-9629-1b53f0c8737e</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/04/15/Ubuntu-Without-VMWare-in-Windows.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=07cd8eb5-b7c2-4922-9629-1b53f0c8737e</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=07cd8eb5-b7c2-4922-9629-1b53f0c8737e</feedburner:origLink></item>
    <item>
      <title>BlogEngine.NET 1.5 Released</title>
      <description>&lt;p&gt;&lt;img src="http://blog.ruski.co.za/image.axd?picture=2009/4/logo80.gif" align="right"&gt; We've just released the final version of BlogEngine.NET 1.5 to the public. You can read more about the changes and improvements at &lt;a href="http://madskristensen.net/post/BlogEngineNET-15-final-release.aspx" target="_blank"&gt;Mads Kristensen's&lt;/a&gt; blog.&lt;/p&gt; &lt;p&gt;With this release we've worked hard to ensure that the application works out of the box on Linux using Mono. There is no compilation to be done and no configuration settings to tweak. It just works.&lt;/p&gt; &lt;p&gt;For those wishing to try this out, I've created a little tutorial called &lt;a href="http://blog.ruski.co.za/page/Installing-BlogEngineNET-on-MonoLinux.aspx" target="_blank"&gt;Installing BlogEngine.NET on Mono/Linux&lt;/a&gt;. As you will see there is hardly anything to it, it's just that easy.&lt;/p&gt; &lt;p&gt;So go on, give it a try and let us know how it pans out for you!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/sAedvuTaN6o" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/sAedvuTaN6o/post.aspx</link>
      <author>russell</author>
      <comments>http://blog.ruski.co.za/post/2009/04/13/BlogEngineNET-15-Released.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=a43cf594-1a33-4c0e-86e4-5bc26048a7d7</guid>
      <pubDate>Mon, 13 Apr 2009 22:47:46 -0600</pubDate>
      <category>BlogEngine.NET</category>
      <category>Linux</category>
      <category>Mono</category>
      <dc:publisher>russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=a43cf594-1a33-4c0e-86e4-5bc26048a7d7</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=a43cf594-1a33-4c0e-86e4-5bc26048a7d7</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/04/13/BlogEngineNET-15-Released.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=a43cf594-1a33-4c0e-86e4-5bc26048a7d7</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=a43cf594-1a33-4c0e-86e4-5bc26048a7d7</feedburner:origLink></item>
    <item>
      <title>Linking folders for FTP in Ubuntu</title>
      <description>&lt;p&gt;If you've installed an FTP daemon on your Ubuntu server, you'll have probably set it up so that users are rooted to their own FTP directory on the server. But what if you'd like an FTP user to have access to other directories on the server? A symbolic link sounds like it would work, but I'm afraid it won't. You'll have to mount the folder you're interested in to the user's FTP folder.&lt;/p&gt;
&lt;p&gt;Assume that we've got a user called "russell" and you've set up your FTP so that he has his own FTP folder at /var/ftp/russell/. Also assume that you want to give him access to the /var/www/ folder so that he can update the web sites on your server.&lt;/p&gt;
&lt;p&gt;We're going to mount a folder into a subdirectory in his FTP directory, so create a suitable directory for that:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /var/ftp/russell$ mkdir www&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now we mount the /var/www directory into /var/ftp/russell/www/:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ mount --bind /var/www /var/ftp/russell/www&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Making It Persist&lt;/h3&gt;
&lt;p&gt;Unfortunately this command will only last until the next reboot, so you're going to have to add it to a startup script. First lets change to our home directory so we can create the script:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd ~&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Then lets create a script called "mountftp":&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ nano mountftp&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Enter the following into your script (obviously replacing any paths with ones on your own system):&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;#! /bin/shmount --bind /var/www /var/ftp/russell/www&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now save the file and exit Nano. To make the script execute at boot time, we will have to copy it to the /etc/init.d folder and let ubuntu know we want it executed.&lt;/p&gt;
&lt;p&gt;So copy the script to /etc/init.d and give it execute permissions:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cp mountftp /etc/init.d/$ chmod +x /etc/init.d/mountftp&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Next we need to tell Ubuntu about the script:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;$ cd /etc/init.d$ update-rc.d mountftp defaults&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You should see output similar to this:&lt;/p&gt;
&lt;p&gt;&lt;div class="code"&gt;
&lt;br /&gt;Adding system startup for /etc/init.d/mountftp ...   /etc/rc0.d/K20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc1.d/K20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc6.d/K20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc2.d/S20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc3.d/S20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc4.d/S20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp   /etc/rc5.d/S20mountftp -&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ../init.d/mountftp&lt;br /&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;And that's it, your ftp directories will now be restored on every reboot.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/rusvdw/~4/FwrH1mzC7cg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/rusvdw/~3/FwrH1mzC7cg/post.aspx</link>
      <author>Russell</author>
      <comments>http://blog.ruski.co.za/post/2009/04/12/Linking-folders-for-FTP-in-Ubuntu.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.ruski.co.za/post.aspx?id=b66d18e3-fd9f-40d3-a7d8-79a02f95252c</guid>
      <pubDate>Sun, 12 Apr 2009 23:53:00 -0600</pubDate>
      <category>Linux</category>
      <dc:publisher>Russell</dc:publisher>
      <pingback:server>http://blog.ruski.co.za/pingback.axd</pingback:server>
      <pingback:target>http://blog.ruski.co.za/post.aspx?id=b66d18e3-fd9f-40d3-a7d8-79a02f95252c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.ruski.co.za/trackback.axd?id=b66d18e3-fd9f-40d3-a7d8-79a02f95252c</trackback:ping>
      <wfw:comment>http://blog.ruski.co.za/post/2009/04/12/Linking-folders-for-FTP-in-Ubuntu.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.ruski.co.za/syndication.axd?post=b66d18e3-fd9f-40d3-a7d8-79a02f95252c</wfw:commentRss>
    <feedburner:origLink>http://blog.ruski.co.za/post.aspx?id=b66d18e3-fd9f-40d3-a7d8-79a02f95252c</feedburner:origLink></item>
  </channel>
</rss>
