<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Claus Conrad &#187; Howto</title>
	<atom:link href="http://www.clausconrad.com/blog/category/howto/feed" rel="self" type="application/rss+xml" />
	<link>http://www.clausconrad.com</link>
	<description></description>
	<lastBuildDate>Sat, 15 Oct 2011 10:50:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Skype as a SIP gateway</title>
		<link>http://www.clausconrad.com/blog/skype-as-a-sip-gateway</link>
		<comments>http://www.clausconrad.com/blog/skype-as-a-sip-gateway#comments</comments>
		<pubDate>Sat, 06 Aug 2011 12:27:52 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=434</guid>
		<description><![CDATA[Skype can now be used as a SIP gateway, enabling integration with legacy phones and PBX. A new business product, Skype Connect is a regular SIP gateway, albeit one that is connected to the Skype network. For 4.95 a line/month professional users and enterprises can receive calls from Skype users on regular phones (connected to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Skype can now be used as a SIP gateway, enabling integration with legacy phones and PBX.</p>
<p>A new business product, Skype Connect is a regular SIP gateway, albeit one that is connected to the Skype network. For 4.95 a line/month professional users and enterprises can receive calls from Skype users on regular phones (connected to a SIP VoIP router or software/hardware SIP PBX), receive calls from Skype landline numbers (&#8220;Skype-In numbers&#8221;) and route their outgoing calls at cheap Skype rates.</p>
<p>For more information, visit <a href="http://www.skype.com/intl/en/business/skype-connect/">Skype Connect</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/skype-as-a-sip-gateway/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personalize your Google+ URL</title>
		<link>http://www.clausconrad.com/blog/personalize-your-googleplus-url</link>
		<comments>http://www.clausconrad.com/blog/personalize-your-googleplus-url#comments</comments>
		<pubDate>Sat, 09 Jul 2011 18:00:18 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[google+]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=432</guid>
		<description><![CDATA[Shortly after the launch of the Google+ project, GPlus.to began to offer personal URLs to Google+ profiles. If you have your own domain, here&#8217;s a way to an even more personalized Google+ profile URL. Credits for this idea should go to Thomas Rosenstand instead of me. Redirect www.yourdomain.com/+ to your Google+ profile &#8211; if your [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Shortly after the launch of the Google+ project, GPlus.to began to offer personal URLs to Google+ profiles. If you have your own domain, here&#8217;s a way to an even more personalized Google+ profile URL.</p>
<p>Credits for this idea should go to <a href="http://www.thomas-rosenstand.dk/+">Thomas Rosenstand</a> instead of me. Redirect www.yourdomain.com/+ to your Google+ profile &#8211; if your web server runs Apache, this can be achieved by inserting the following line in the domains <code>.htaccess</code> file or the servers <code>httpd.conf</code> (<code>apache2.conf</code> on Debian-based operating systems, such as Ubuntu):</p>
<p><code>Redirect permanent /+ https://plus.google.com/107098868976669747695/posts</code></p>
<p>If you had to use the <code>.htaccess</code> file, that should be all. If you used a server-wide configuration file (and I would recommend so for better performance), remember to reload the settings. This can be achieved by restarting Apache, for example:</p>
<p><code>sudo apache2ctl restart</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/personalize-your-googleplus-url/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr backup tools</title>
		<link>http://www.clausconrad.com/blog/flickr-backup-tools</link>
		<comments>http://www.clausconrad.com/blog/flickr-backup-tools#comments</comments>
		<pubDate>Mon, 27 Jun 2011 19:10:40 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=429</guid>
		<description><![CDATA[Backing up my Flickr photos has been on my to-do list for a while. Today I finally researched solutions; these two applications appear to be the best ones: FlickrEditA free, cross-platform GUI tool written in Java. Bulkr / Bulkr ProA cross-platform tool written in Adobe Air. Both versions can download all your photos incrementally. The [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Backing up my Flickr photos has been on my to-do list for a while. Today I finally researched solutions; these two applications appear to be the best ones:</p>
<ul>
<li><a href="http://sunkencity.org/flickredit">FlickrEdit</a><br />A free, cross-platform GUI tool written in Java.</li>
<li><a href="http://clipyourphotos.com/bulkr">Bulkr / Bulkr Pro</a><br />A cross-platform tool written in Adobe Air. Both versions can download all your photos incrementally. The paid Pro version supports more features, such as downloading the original sizes and metadata (tags, titles, descriptions, etc.).</li>
</ul>
<p>There are a couple of handfuls more applications claiming to being able to create Flickr backups. I chose these two because they are cross-platform &#8211; I don&#8217;t want to be forced to use a specific operating system in the future or to re-download all my pictures using another tool. In the end, I decided to try Bulkr Pro as its website looked more polished (shame on me) and, being a developer, I prefer Flash over Java any time. On a more objective note, Bulkr Pro features an impressive list of testimonials and does only thing (backing up Flickr photos) instead of a whole list of features &#8211; something that always makes me assume it does that thing better than other multi-purpose tools. I guess I am really biased :/</p>
<p>Suffice it to say that Bulkr worked really well and fast, so I purchased the Pro version and it didn&#8217;t let me down, downloading my 2,823 photos in a couple of hours. I would have prefered an option to generate XML files (instead of plain text files) with metadata for each image, but the format generated by Bulkr Pro seems easy enough to parse, if I ever need to restore to Flickr.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/flickr-backup-tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rsync between network drives?</title>
		<link>http://www.clausconrad.com/blog/rsync-between-network-drives</link>
		<comments>http://www.clausconrad.com/blog/rsync-between-network-drives#comments</comments>
		<pubDate>Wed, 27 Apr 2011 11:08:36 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=422</guid>
		<description><![CDATA[Use the --size-only flag to avoid downloading remote files for checksum generation.]]></description>
			<content:encoded><![CDATA[<p></p><p>Use the <code>--size-only</code> flag to avoid downloading remote files for checksum generation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/rsync-between-network-drives/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why don&#8217;t browsers ship with jQuery?</title>
		<link>http://www.clausconrad.com/blog/why-dont-browsers-ship-with-jquery</link>
		<comments>http://www.clausconrad.com/blog/why-dont-browsers-ship-with-jquery#comments</comments>
		<pubDate>Fri, 18 Mar 2011 11:21:52 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=403</guid>
		<description><![CDATA[This is really not so much a blog entry as it is a question&#8230; why don&#8217;t browsers &#8220;ship&#8221; with jQuery and other common frameworks? Years ago, browser vendors competed over JavaScript engine features, nowadays they compete over JavaScript engine performance. Thanks to cross-browser frameworks (with jQuery being the most prominent) features and compatibility are no [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This is really not so much a blog entry as it is a question&#8230; why don&#8217;t browsers &#8220;ship&#8221; with jQuery and other common frameworks?</p>
<p>Years ago, browser vendors competed over JavaScript engine features, nowadays they compete over JavaScript engine performance. Thanks to cross-browser frameworks (with jQuery being the most prominent) features and compatibility are no longer an issue. Isn&#8217;t it time for browser vendors to compete on features such as pre-loading different JS framework versions and replacing remote loads of these with already cached versions?</p>
<p>In the meantime, I hope every web developer sticks to a CDN-hosted version of these libraries. The <a href="http://code.google.com/apis/libraries/devguide.html">Google Libraries API</a> is a well-known jQuery host by now, but Microsoft also hosts a couple of libraries for you at their <a href="http://www.asp.net/ajaxLibrary/CDN.ashx">ASP.NET CDN</a>. Beware though that using one of these CDN&#8217;s just for one or two requests might result in yet another DNS query upon loading your site. To me, the caching advantage is worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/why-dont-browsers-ship-with-jquery/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List of source code hosting services</title>
		<link>http://www.clausconrad.com/blog/list-of-source-code-hosting-services</link>
		<comments>http://www.clausconrad.com/blog/list-of-source-code-hosting-services#comments</comments>
		<pubDate>Mon, 28 Feb 2011 20:04:48 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=396</guid>
		<description><![CDATA[All services in this list offer free source code hosting to open-source projects, and some also have free starter plans available. Name Supported VCS Other features Notes Assembla Subversion, Git, Mercurial Wiki, Issue tracking Bitbucket Mercurial Wiki, Issue tracking CodePlex Mercurial, Subversion, Team Foundation Server Wiki, Issue tracking Open-source only Github Git Wiki, Issue tracking, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>All services in this list offer free source code hosting to open-source projects, and some also have free starter plans available.</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Supported VCS</th>
<th>Other features</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="http://www.assembla.com/">Assembla</a></td>
<td>Subversion, Git, Mercurial</td>
<td>Wiki, Issue tracking</td>
<td></td>
</tr>
<tr>
<td><a href="http://www.bitbucket.org/">Bitbucket</a></td>
<td>Mercurial</td>
<td>Wiki, Issue tracking</td>
<td></td>
</tr>
<tr>
<td><a href="http://www.codeplex.com/">CodePlex</a></td>
<td>Mercurial, Subversion, Team Foundation Server</td>
<td>Wiki, Issue tracking</td>
<td>Open-source only</td>
</tr>
<tr>
<td><a href="http://www.github.com/">Github</a></td>
<td>Git</td>
<td>Wiki, Issue tracking, Code review</td>
<td></td>
</tr>
<tr>
<td><a href="http://code.google.com/hosting/">Google Code</a></td>
<td>Subversion, Mercurial</td>
<td>Wiki, Issue tracking</td>
<td>Open-source only</td>
</tr>
<tr>
<td><a href="http://www.kilnhg.com/">Kiln</a></td>
<td>Mercurial</td>
<td>Wiki*, Issue tracking*, Code review*</td>
<td>* through integration with FogBugz</td>
</tr>
<tr>
<td><a href="http://sourceforge.net/">SourceForge</a></td>
<td>Subversion, Git, Mercurial</td>
<td>Wiki, Issue tracking, Forums</td>
<td>Open-source only</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/list-of-source-code-hosting-services/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft online services</title>
		<link>http://www.clausconrad.com/blog/microsoft-online-services</link>
		<comments>http://www.clausconrad.com/blog/microsoft-online-services#comments</comments>
		<pubDate>Sat, 19 Feb 2011 12:02:28 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=386</guid>
		<description><![CDATA[Navigating the plethora of Microsoft&#8217;s online solutions can be confusing. Here&#8217;s a high-level overview to help you choose. Document-centric services Office Live Workspace Microsoft&#8217;s first try at online editing of documents, Office Live Workspace was free for all kinds of users. The service has been discontinued in January 2011 and was replaced with &#8220;Office Web [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Navigating the plethora of Microsoft&#8217;s online solutions can be confusing. Here&#8217;s a high-level overview to help you choose.</p>
<h2>Document-centric services</h2>
<h3>Office Live Workspace</h3>
<p>Microsoft&#8217;s first try at online editing of documents, Office Live Workspace was free for all kinds of users. The service has been discontinued in January 2011 and was replaced with &#8220;Office Web Apps on SkyDrive&#8221;.</p>
<h3>Office Web Apps on SkyDrive</h3>
<p>Targeted towards home users and students, this free solution allows users to view and edit documents through most web browsers, share them and collaborate on Office documents with others.</p>
<p>Documents from SkyDrive can easily be opened in the full versions of Word, Excel and PowerPoint, if the user has them installed, but purchasing these applications is not required to use Office Web Apps on SkyDrive.</p>
<p>Go to <a href="http://www.officelive.com/">Office Web Apps on SkyDrive</a></p>
<h3>docs.com</h3>
<p>Like Office Web Apps on SkyDrive, docs.com lets home users create and share Office documents for free and through a web browser. The main difference is a deep integration of docs.com with Facebook, making docs.com a more attractive solution for social collaboration with Facebook friends, classmates and coworkers.</p>
<p>Go to <a href="http://docs.com/">docs.com</a></p>
<h3>Office Web Apps on-premises</h3>
<p>Business users who purchase Office 2010 through volume licensing can run Office Web Apps for their users on own servers by installing SharePoint 2010.</p>
<p>Learn more about <a href="http://technet.microsoft.com/en-US/office/ee815687.aspx">deploying Office Web Apps</a></p>
<h2>E-mail centric services</h2>
<h3>Windows Live Hotmail</h3>
<p>One of the world&#8217;s most popular e-mail services for personal use, Hotmail gives users a huge inbox accessible through most web browsers and the choice of an address under one of hotmail.com or several other domains.</p>
<p>Go to <a href="http://www.hotmail.com/">Windows Live Hotmail</a></p>
<h3>Windows Live for your domain</h3>
<p>A free solution for groups which includes Hotmail with a group-owned domain. Targeted towards personal users such as football clubs.</p>
<p>Sign up for <a href="http://explore.live.com/windows-live-admin-center">Windows Live for your domain</a> at the Windows Live Admin Center</p>
<h3>Office Live Small Business</h3>
<p>This solution for small businesses includes Microsoft-hosted e-mail under a business-owned domain, website hosting and online document storage (though apparently no editing), all for free. Additional storage space can be purchased for a small fee.</p>
<p>Office Live Small Business is still available, but will be replaced with Office 365 for small businesses after October 2011.</p>
<p>Read more about <a href="http://smallbusiness.officelive.com/en-us/">Office Live Small Business</a></p>
<h3>Microsoft Online Services</h3>
<p>Microsoft Online Services is a professional line of hosted services sold directly by Microsoft and targeted towards businesses of any size. Offerings include mix-and-match services such as hosted Exchange, SharePoint, Office Live Meeting, Dynamics CRM, Windows InTune and more, priced per service, user and month.</p>
<p>Read more about <a href="http://www.microsoft.com/online/">Microsoft Online Services</a></p>
<h3>Office 365</h3>
<p>Currently in beta, Office 365 seems to be meant to replace the functionality currently offered through Office Live Small Business and Microsoft Online Services. It is going to offer hosted Exchange, SharePoint and Lync services together with licenses to run Office Professional Plus on customer workstations at different service levels priced between $2 and $27 per user and month.</p>
<p>Go to <a href="http://office365.microsoft.com/en-US/online-services.aspx">Office 365</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/microsoft-online-services/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing Mercurial on IIS 7</title>
		<link>http://www.clausconrad.com/blog/installing-mercurial-on-iis-7</link>
		<comments>http://www.clausconrad.com/blog/installing-mercurial-on-iis-7#comments</comments>
		<pubDate>Fri, 04 Feb 2011 23:05:18 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=378</guid>
		<description><![CDATA[Here&#8217;s how I got a Mercurial server up and running using Windows 2008 and IIS 7: Download ActiveState ActivePython 2.6.6.18. Choose the 32-bit version regardless of the Windows flavor. Install ActivePython using the default installation path of C:\Python26. Download the binary version of PyWin32 Install PyWin32 using the default installation path of C:\Python26 Download the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here&#8217;s how I got a Mercurial server up and running using Windows 2008 and IIS 7:</p>
<ol>
<li>Download <a href="http://downloads.activestate.com/ActivePython/releases/2.6.6.18/ActivePython-2.6.6.18-win32-x86.msi" target="_blank">ActiveState ActivePython 2.6.6.18</a>. Choose the 32-bit version regardless of the Windows flavor.</li>
<li>Install ActivePython using the default installation path of C:\Python26.</li>
<li>Download the binary version of <a href="http://downloads.sourceforge.net/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpywin32%2Ffiles%2Fpywin32%2FBuild%2520214%2F&amp;ts=1296839298&amp;use_mirror=heanet" target="_blank">PyWin32</a></li>
<li>Install PyWin32 using the default installation path of C:\Python26</li>
<li>Download the source code of <a href="http://mercurial.selenic.com/release/mercurial-1.7.5.tar.gz" target="_blank">Mercurial</a></li>
<li>Extract Mercurial to C:\Mercurial_src</li>
<li>Open a cmd window and change directory to the above folder:<br />
<code>C:<br />
cd \Mercurial_src</code></li>
<li>Run the following commands:<br />
<code>python setup.py --pure build_py -c -d . build_ext -i build_mo --force<br />
python setup.py --pure install --force</em></code></p>
<li>Download <a href="http://isapi-wsgi.googlecode.com/files/isapi_wsgi-0.4.2.win32.exe" target="_blank">isapi-wsgi</a></li>
<li>Install isapi-wsgi using the default installation path of C:\Python26</li>
<li>Create a folder for a new website somewhere:<br />
<code>C:\<br />
mkdir \inetpub\hg.mydomain.com</code></li>
<li>Copy C:\Mercurial_src\contrib\win32\hgwebdir_wsgi.py to the new website&#8217;s root folder:<br />
<code>cp  C:\Mercurial_src\contrib\win32\hgwebdir_wsgi.py C:\inetpub\hg.mydomain.com\</code></li>
<li>Open hgwebdir_wsgi.py in a text editor, and configure the following settings:<br />
<code>hgweb_config = r'C:\inetpub\hg.mydomain.com\hgweb.config'<br />
path_prefix = 0</code></li>
<li>Create a folder for the repositories somewhere:<br />
<code>C:<br />
mkdir \Repositories </code></li>
<li>Create <em>C:\inetpub\hg.mydomain.com\hgweb.config</em> with this content:<br />
<code>[paths]<br />
/ = C:\Repositories\*</code></li>
<li>Execute python hgwebdir_wsgi.py which will generate a DLL shim called _hgwebdir_wsgi.dll:<br />
<code>C:<br />
cd \inetpub\hg.mydomain.com<br />
python  hgwebdir_wsgi.py</code></li>
<li>Start IIS Manager:<br />
<code>inetmgr </code></li>
<li>Create an application pool; set its .NET version to &#8220;No Managed code&#8221; and enable 32-bit apps under &#8220;Advanced Settings&#8221;</li>
<li>Create a website with the root folder C:\inetpub\hg.mydomain.com and set its application pool to the newly created application pool</li>
<li>Double-click &#8220;Handler Mappings&#8221;</li>
<li>Click &#8220;Add Wildcard Script Map&#8221;</li>
<li>As Executable choose the dll file in C:\inetpub\hg.mydomain.com (it was created when you ran hgwebdir_wsgi.py previously)</li>
<li>As name enter &#8220;Mercurial-ISAPI&#8221; (it doesn&#8217;t matter really)</li>
<li>Click &#8220;OK&#8221; and &#8220;Yes&#8221; to allow this ISAPI extension</li>
<li>Browse to your new website in a browser and you should now be greeted by Mercurial</li>
<li>Create a repository in your repositories path:<br />
<code>C:<br />
cd \Repositories<br />
hg init testrepo</code></li>
<li>Browse to your new website again and the repository &#8220;testrepo&#8221; should now be displayed</li>
<li>Don&#8217;t forget to set up authentication in IIS Manager to only allow authorized developers to access the repositories.</li>
<li>Restart IIS:<br />
<code>iisreset</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/installing-mercurial-on-iis-7/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Debugging Pyramid with PyCharm</title>
		<link>http://www.clausconrad.com/blog/debugging-pyramid-with-pycharm</link>
		<comments>http://www.clausconrad.com/blog/debugging-pyramid-with-pycharm#comments</comments>
		<pubDate>Sun, 30 Jan 2011 18:45:10 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[pycharm]]></category>
		<category><![CDATA[pyramid]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=373</guid>
		<description><![CDATA[I recently came across the PyCharm IDE and almost instantly fell in love. PyCharm is made by JetBrains, the developers of IntelliJ IDEA and ReSharper &#8211; these guys have proven their ability to create full-featured, developer-friendly IDEs in the past and its obvious they used their knowledge to create PyCharm, too. While PyCharm supports Django [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I recently came across the PyCharm IDE and almost instantly fell in love.</p>
<p>PyCharm is made by JetBrains, the developers of IntelliJ IDEA and ReSharper &#8211; these guys have proven their ability to create full-featured, developer-friendly IDEs in the past and its obvious they used their knowledge to create PyCharm, too.</p>
<p>While PyCharm supports Django and GAE out of the box, it can certainly be used for other frameworks. Sean has written some excellent <a href="http://byatool.com/python/how-to-debug-pylons-with-pycharm/">instructions to debug Pylons with PyCharm</a> and the steps required to debug Pyramid are exactly the same:</p>
<ol>
<li>Click &#8220;Run&#8221; &gt; &#8220;Edit Configurations&#8221;</li>
<li>Press &#8220;Insert&#8221; and choose &#8220;Python&#8221;</li>
<li>Give the configuration a name, e. g. <em>Pyramid</em></li>
<li>Insert the script to <em>paster</em>:<br /><code>C:\Python27\Scripts\paster-script.py</code></li>
<li>Insert the script parameters WITHOUT <em>&#8211;reload</em>:<br /><code>serve C:\path\to\development.ini</code></li>
<li>Choose the right Python interpreter from the dropdown</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/debugging-pyramid-with-pycharm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A workaround for Jungle Disk restore problems</title>
		<link>http://www.clausconrad.com/blog/workaround-jungle-disk-restore-problems</link>
		<comments>http://www.clausconrad.com/blog/workaround-jungle-disk-restore-problems#comments</comments>
		<pubDate>Fri, 21 Jan 2011 09:51:50 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[jungledisk]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=368</guid>
		<description><![CDATA[When trying to restore a backup taken using Jungle Disk Server Edition on a workstation running Jungle Disk Desktop Edition I received the following error message: Could not download and open the backup vault database Error Details (Jungle Disk Desktop 3.12 Win64) ------------------------ xOverwriteFailed - Failed to rename backup database to final name (file in [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When trying to restore a backup taken using Jungle Disk Server Edition on a workstation running Jungle Disk Desktop Edition I received the following error message:</p>
<pre>Could not download and open the backup vault database

Error Details (Jungle Disk Desktop 3.12 Win64)
------------------------
xOverwriteFailed - Failed to rename backup database to final name (file in use?): C:\ProgramData\JungleDisk\cache\cfjd2-us-mmdb\XXXXXXXXXXXXXXXXXXXX-backup.db
Exception Code: xOverwriteFailed (144)
Time: 20-01-2011 21:09:03 (GMT+1)
Detailed Message: Failed to rename backup database to final name (file in use?): C:\ProgramData\JungleDisk\cache\cfjd2-us-mmdb\XXXXXXXXXXXXXXXXXXXX-backup.db
Error Location: BlockBackupManager.cpp:1062 BlockBackupManager::ExecuteDownloadAndOpenDatabase
via BlockBackupManager.cpp:1098 BlockBackupManager::ExecuteDownloadAndOpenDatabase</pre>
<p>To solve this problem I had to follow these steps:</p>
<ol>
<li>Stop the Jungle Disk service on the restore machine</li>
<li>Rename/delete the &#8220;cache&#8221; folder from C:\ProgramData\JungleDisk</li>
<li>Start the Jungle Disk service</li>
<li>Click &#8220;Restore files&#8221; in the vault&#8217;s menu in Jungle Disk monitor</li>
<li>The vault database is downloaded &#8211; twice. During the second download, click &#8220;Cancel&#8221;.</li>
<li>Click &#8220;Restore files&#8221; again.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/workaround-jungle-disk-restore-problems/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Jungle Disk Desktop Edition on Ubuntu 10.10 Linux</title>
		<link>http://www.clausconrad.com/blog/installing-jungle-disk-desktop-edition-linux</link>
		<comments>http://www.clausconrad.com/blog/installing-jungle-disk-desktop-edition-linux#comments</comments>
		<pubDate>Sun, 16 Jan 2011 12:15:24 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[jungledisk]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=365</guid>
		<description><![CDATA[I had a few problems installing Jungle Disk Desktop Edition on Ubuntu Linux 10.10, probably all related to the fact that my device ran a stripped-down installation of the operating system without X libraries. Here&#8217;s what I had to do to get it running: Find the right download for this operating-system on https://www.jungledisk.com/downloads/personal/desktop/linux/:wget http://downloads.jungledisk.com/jungledisk/junglediskdesktop_312-0_amd64.deb Install [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I had a few problems installing Jungle Disk Desktop Edition on Ubuntu Linux 10.10, probably all related to the fact that my device ran a stripped-down installation of the operating system without X libraries. Here&#8217;s what I had to do to get it running:</p>
<ol>
<li>Find the right download for this operating-system on <a href="https://www.jungledisk.com/downloads/personal/desktop/linux/">https://www.jungledisk.com/downloads/personal/desktop/linux/</a>:<br /><code>wget <a href="http://downloads.jungledisk.com/jungledisk/junglediskdesktop_312-0_amd64.deb">http://downloads.jungledisk.com/jungledisk/junglediskdesktop_312-0_amd64.deb</a></code></li>
<li>Install the package:<br /><code>sudo dpkg -i junglediskdesktop_312-0_amd64.deb</code></li>
<li>Install missing libraries:<br /><code>sudo apt-get install libgtk2.0-0 libxxf86vm1 libsm6 libnotify1</code></li>
<li>Now running the software succeeded:<br /><code>junglediskdesktop</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/installing-jungle-disk-desktop-edition-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CommunityServer 2008.5 Blogs API reference</title>
		<link>http://www.clausconrad.com/blog/communityserver-2008-5-blogs-api-reference</link>
		<comments>http://www.clausconrad.com/blog/communityserver-2008-5-blogs-api-reference#comments</comments>
		<pubDate>Mon, 18 Oct 2010 16:39:10 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[communityserver]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=332</guid>
		<description><![CDATA[Some details about the blog API in CommunityServer 2008. Blogs GET /api/blogs.ashx/blogs/ Returns a paged list of all blogs visible to the current user. Response Status: 200 OK &#60;BlogList&#62; &#60;Blog&#62; ... &#60;/Blog&#62; ...&#60;/BlogList&#62; Parameters PageSize Integer Number of blogs per page Optional PageIndex Integer Page number Optional GET /api/blogs.ashx/blogs/{blogId} Returns data about a specific blog. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Some details about the blog API in CommunityServer 2008.</p>
<h3>Blogs</h3>
<h4><strong>GET /api/blogs.ashx/blogs/</strong></h4>
<p>Returns a paged list of all blogs visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;BlogList&gt;  &lt;Blog&gt;    ...   &lt;/Blog&gt;  ...&lt;/BlogList&gt;</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of blogs per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4><strong>GET /api/blogs.ashx/blogs/</strong>{blogId}</h4>
<p>Returns data about a specific blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Blog&gt;    ...   &lt;/Blog&gt;
</pre>
<h4><strong>GET /api/blogs.ashx/blogs/</strong>{blogKey}</h4>
<p>Returns data about a specific blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Blog&gt;    ...   &lt;/Blog&gt;
</pre>
<h4><strong>GET /api/blogs.ashx/blogs/</strong>{blogQuery}</h4>
<p>Returns a paged list of blogs matching the query parameter(s) visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;BlogList&gt;  &lt;Blog&gt;    ...   &lt;/Blog&gt;  ...&lt;/BlogList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>Name</td>
<td>String</td>
<td>Name or part of the name of the blog. Wildcard character is &quot;%&quot;.</td>
<td>Optional</td>
</tr>
<tr>
<td>IsActive</td>
<td>Boolean</td>
<td>Whether the blog is active</td>
<td>Optional</td>
</tr>
<tr>
<td>AccessLevel</td>
<td>Enum</td>
<td>&quot;View&quot;, &quot;Post&quot;</td>
<td>Optional</td>
</tr>
<tr>
<td>Ids</td>
<td>Integer[]</td>
<td>Comma-separated list of blog IDs.</td>
<td>Optional</td>
</tr>
<tr>
<td>Keys</td>
<td>String[]</td>
<td>Comma-separated list of blog keys.</td>
<td>Optional</td>
</tr>
<tr>
<td>GroupIDs</td>
<td>Integer[]</td>
<td>Comma-separated list of blog group IDs</td>
<td>Optional</td>
</tr>
<tr>
<td>SortBy</td>
<td>String</td>
<td>Can be set to &quot;Name&quot;, &quot;LastPost&quot;, &quot;Post&quot;, &quot;SortOrder&quot; or &quot;Thread&quot;</td>
<td>Optional</td>
</tr>
<tr>
<td>Order</td>
<td>String</td>
<td>The sort order for the &quot;SortBy&quot; parameter. Can be set to &quot;Ascending&quot; or &quot;Descending&quot;.</td>
<td>Optional</td>
</tr>
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of blogs per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4><strong>GET /api/blogs.ashx/blogs/</strong>{blogId}/members</h4>
<p>Returns a list of members of the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;MembershipList&gt;  &lt;Member&gt;    ...   &lt;/Member&gt;  ...&lt;/MembershipList&gt;
</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/members/{userId}</h4>
<p>Returns the specified member of the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Member&gt;    ...   &lt;/Member&gt;</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts</h4>
<p>Returns a paged list of posts in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;BlogPostList&gt;  &lt;BlogPost&gt;    ...   &lt;/BlogPost&gt;  ...&lt;/BlogPostList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of posts per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}</h4>
<p>Returns the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;BlogPost&gt;    ...   &lt;/BlogPost&gt;
</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/comments</h4>
<p>Returns a paged list of comments for the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;CommentList&gt;  &lt;Comment&gt;    ...   &lt;/Comment&gt;  ...&lt;/CommentList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of comments per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/comments/{blogPostCommentId}</h4>
<p>Returns the specified comment for the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Comment&gt;    ...   &lt;/Comment&gt;
</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/trackbacks</h4>
<p>Returns a paged list of trackbacks for the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;TrackbackList&gt;  &lt;Trackback&gt;    ...   &lt;/Trackback&gt;  ...&lt;/TrackbackList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of trackbacks per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/trackbacks/{trackbackId}</h4>
<p>Returns the specified trackback for the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Trackback&gt;    ...   &lt;/Trackback&gt;
</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/ratings</h4>
<p>Returns a list of ratings for the specified post in the specified blog.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;RatingList Sum=&quot;X&quot; Average=&quot;Y&quot;&gt;  &lt;Rating&gt;    ...   &lt;/Rating&gt;  ...&lt;/RatingList&gt;
</pre>
<h4>GET /api/blogs.ashx/blogs/{blogId}/posts/{blogPostId}/ratings/{username}</h4>
<p>Returns rating by user with {username} for the specified post in the specified blog.</p>
<p>If the user doesn&#8217;t exist or didn&#8217;t rate the post, the whole list of ratings for the specified post is returned!</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;int&gt;  X&lt;/int&gt;
</pre>
<h3>Blog Posts</h3>
<h4>GET /api/blogs.ashx/posts/{blogPostId}</h4>
<p>Returns the specified post.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;BlogPost&gt;    ...   &lt;/BlogPost&gt;</pre>
<h4><strong>GET /api/blogs.ashx/posts/{blogPostQuery}</strong></h4>
<p>Returns a paged list of posts matching the query parameter(s) visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;BlogPostList&gt;  &lt;BlogPost&gt;    ...   &lt;/BlogPost&gt;  ...&lt;/BlogPostList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>IsActive</td>
<td>Boolean</td>
<td>Whether the post is active</td>
<td>Optional</td>
</tr>
<tr>
<td>BlogIds</td>
<td>Integer[]</td>
<td>Comma-separated list of blog IDs.</td>
<td>Optional</td>
</tr>
<tr>
<td>Keywords</td>
<td>String[]</td>
<td>Comma-separated list of keywords. All keywords must be matched.</td>
<td>Optional</td>
</tr>
<tr>
<td>SortBy</td>
<td>String</td>
<td>Can be set to &quot;MostComments&quot;, &quot;MostRecent&quot; or &quot;MostViewed&quot;</td>
<td>Optional</td>
</tr>
<tr>
<td>Order</td>
<td>String</td>
<td>The sort order for the &quot;SortBy&quot; parameter. Can be set to &quot;Ascending&quot; or &quot;Descending&quot;.</td>
<td>Optional</td>
</tr>
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of posts per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4>GET /api/blogs.ashx/posts/{blogPostId}/comments</h4>
<p>Returns a paged list of comments for the specified post.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;CommentList&gt;  &lt;Comment&gt;    ...   &lt;/Comment&gt;  ...&lt;/CommentList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of comments per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h4>GET /api/blogs.ashx/posts/{blogPostId}/trackbacks</h4>
<p>Returns a paged list of trackbacks for the specified post.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;TrackbackList&gt;  &lt;Trackback&gt;    ...   &lt;/Trackback&gt;  ...&lt;/TrackbackList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of trackbacks per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h3>Blog Comments</h3>
<h4>GET /api/blogs.ashx/comments/{blogPostCommentId}</h4>
<p>Returns the specified comment.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Comment&gt;    ...   &lt;/Comment&gt;
</pre>
<h4>
  PUT /api/blogs.ashx/comments/</h4>
<p>Creates the sent comment.</p>
<h4>Request</h4>
<pre>  &lt;Comment&gt;    ...   &lt;/Comment&gt;</pre>
<h4><strong>GET /api/blogs.ashx/comments/{blogPostCommentQuery}</strong></h4>
<p>Returns a paged list of comments matching the query parameter(s) visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;CommentList&gt;  &lt;Comment&gt;    ...   &lt;/Comment&gt;  ...&lt;/CommentList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>IsActive</td>
<td>Boolean</td>
<td>Whether the comment is active</td>
<td>Optional</td>
</tr>
<tr>
<td>PostId</td>
<td>Integer</td>
<td>ID of a blog post. If specified, only comments for that post are shown.</td>
<td>Optional</td>
</tr>
<tr>
<td>Keywords</td>
<td>String[]</td>
<td>Comma-separated list of keywords. All keywords must be matched.</td>
<td>Optional</td>
</tr>
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of comments per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h3>Blog Trackbacks</h3>
<h4>GET /api/blogs.ashx/trackbacks/{trackbackId}</h4>
<p>Returns the specified trackback.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;Trackback&gt;    ...   &lt;/Trackback&gt;</pre>
<h4><strong>GET /api/blogs.ashx/trackbacks/{trackbackQuery}</strong></h4>
<p>Returns a paged list of trackbacks matching the query parameter(s) visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;TrackbackList&gt;  &lt;Trackback&gt;    ...   &lt;/Trackback&gt;  ...&lt;/TrackbackList&gt;
</pre>
<h4>Parameters</h4>
<table border="1">
<tr>
<td>PostId</td>
<td>Integer</td>
<td>ID of a blog post. If specified, only trackbacks for that post are shown.</td>
<td>Optional</td>
</tr>
<tr>
<td>Keywords</td>
<td>String[]</td>
<td>Comma-separated list of keywords. All keywords must be matched.</td>
<td>Optional</td>
</tr>
<tr>
<td>PageSize</td>
<td>Integer</td>
<td>Number of trackbacks per page</td>
<td>Optional</td>
</tr>
<tr>
<td>PageIndex</td>
<td>Integer</td>
<td>Page number</td>
<td>Optional</td>
</tr>
</table>
<h3>Blog Groups</h3>
<p><strong>GET /api/blogs.ashx/bloggroups/</strong></p>
<p>Returns a list of all blog groups visible to the current user.</p>
<h4>Response</h4>
<pre>Status: 200 OK &lt;BlogGroupList&gt;  &lt;BlogGroup&gt;    ...   &lt;/BlogGroup&gt;  ...&lt;/BlogGroupList&gt;</pre>
<p><strong>GET /api/blogs.ashx/bloggroups/{blogGroupId}</strong></p>
<p>Returns data about the specified blog group.</p>
<h4>Response</h4>
<pre>Status: 200 OK  &lt;BlogGroup&gt;    ...   &lt;/BlogGroup&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/communityserver-2008-5-blogs-api-reference/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XBMC on Asrock Ion 330HT</title>
		<link>http://www.clausconrad.com/blog/xbmc-on-asrock-ion-330ht</link>
		<comments>http://www.clausconrad.com/blog/xbmc-on-asrock-ion-330ht#comments</comments>
		<pubDate>Sun, 27 Jun 2010 15:23:41 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=300</guid>
		<description><![CDATA[The Asrock ION 330 HT makes a nice little HTPC, but installing XBMC on it can be daunting for Linux newbies. Here&#8217;s how I managed to get most everything working. This guide is for the second edition of the Asrock ION 330HT, the one that includes WLAN and a remote control (and an integrated infra-red [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The <a href="http://www.asrock.com/nettop/overview.asp?Model=ION%20330HT">Asrock ION 330 HT</a> makes a nice little HTPC, but installing <a href="http://xbmc.org/">XBMC</a> on it can be daunting for Linux newbies. Here&#8217;s how I managed to get most everything working.</p>
<p><span id="more-300"></span>
<p>This guide is for the second edition of the Asrock ION 330HT, the one that includes WLAN and a remote control (and an integrated infra-red receiver). It&#8217;s mostly these new components that can pose problems. While Windows generally has better driver support for new hardware, I am using Linux because the Windows version of XBMC doesn&#8217;t have good hardware acceleration yet &#8211; which means HD movies would play sloppy, if at all.</p>
<ol>
<li>Start by installing <a href="http://ftp.ds.karen.hj.se/ubuntu-releases/karmic/ubuntu-9.10-desktop-i386.iso">Ubuntu 9.10</a> from a USB stick or CD. There is <a href="http://news.softpedia.com/news/Installing-Ubuntu-9-10-126370.shtml">an</a> <a href="http://www.unixnewbie.org/how-to-install-ubuntu-9-10/">abundance</a> <a href="http://www.youtube.com/watch?v=J4nJQfVknzg">of</a> <a href="http://www.youtube.com/watch?v=GHYKLlc4kXw">tutorials</a> that describe this step, so I won&#8217;t go into further details except recommending to choose &#8220;Automatic log-on&#8221; during the setup so you won&#8217;t have to type a password every time you boot the device.</li>
<li>Upon restarting, connect to your network. After entering the WLAN key Ubuntu will ask for a password to protect the key. Do not enter anything or you will have to enter this password upon each reboot. Confirm that you want to use &#8220;Unsafe storage&#8221;.</li>
<li>To get the infra-red receiver working, install these:<br />
<code>sudo aptitude install lirc lirc-modules-source<br />
wget http://europe.asrock.com/downloadsite/drivers/Nettop/Ubuntu/IR(9.10).zip<br />
unzip IR(9.10).zip<br />
sudo dpkg -i lirc-nct677x-1.0.4-ubuntu9.10.deb lirc-nct677x-src-1.0.4-ubuntu9.10.deb</code></li>
<li>The infra-red receiver should now be working, however when we later update the kernel it will stop working. To avoid this, enter the following commands:<br />
<code>sudo dkms add -m lirc-nct677x-src -v 1.0.4-ubuntu9.10<br />
sudo dkms build add -m lirc-nct677x-src -v 1.0.4-ubuntu9.10<br />
sudo dkms install add -m lirc-nct677x-src -v 1.0.4-ubuntu9.10<br />
sudo reboot</code><br />
This will allow the system to automatically recompile the infra-red receiver driver when the kernel gets updated.</li>
<li>After the system has rebooted, lets update all other software to the newest versions:<br /><code>sudo aptitude update<br />
sudo aptitude upgrade<br />
sudo reboot</code></li>
<li>After the system reboots, you can now install xmbc like this:<br />
<code>sudo add-apt-repository ppa:team-xbmc/ppa<br />
sudo aptitude update<br />
sudo aptitude install xbmc xbmc-standalone<br />
sudo aptitude install xbmc-eventclients-*<br />
sudo aptitude install xbmc-scripts-*</code></li>
<li>Install PolicyKit to allow power management:<br />
<code>sudo aptitude install policykit policykit-gnome</code><br />
In the following commands, replace &#8220;xbmc&#8221; with your username:<br />
<code>sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.suspend<br />
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.hibernate<br />
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.reboot<br />
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.shutdown<br />
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.reboot-multiple-sessions<br />
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.shutdown-multiple-sessions<br />
sudo apt-get install policykit-1 devicekit-power<br />
sudo nano /var/lib/polkit-1/localauthority/50-local.d/custom-actions.pkla</code><br />
This has opened a new file in the editor, paste the following lines in there and replace every occurence of &#8220;xbmc&#8221; with your username:<br />
<code>[Actions for xbmc user]<br />
Identity=unix-user:xbmc<br />
Action=org.freedesktop.devicekit.disks.*;org.freed esktop.devicekit.power.*;org.freedesktop.consoleki t.system.*;org.freedesktop.hal.storage.mount-removable;org.freedesktop.hal.device.volume<br />
ResultActive=yes<br />
ResultAny=auth_admin<br />
ResultInactive=yes</code><br />
Finally save the file using <em>Ctrl+X</em>, press <em>Y</em> and <em>Enter</em>.</li>
<li>Now install the Nvidia driver to get hardware acceleration &#8211; a must for playing back mostly anything:<br />
<code>sudo nano /etc/apt/sources.list</code><br />
The file has been opened in the editor, scroll to the bottom of it and paste this line:<br />
<code>deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu karmic main</code><br />
Finally save the file using <em>Ctrl+X</em>, press <em>Y</em> and <em>Enter</em>. Then run these commands:<br />
<code>sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com CEC06767<br />
sudo aptitude update<br />
sudo aptitude install nvidia-190-modaliases nvidia-glx-190<br />
sudo nvidia-xconfig -s --no-logo --force-generate<br />
sudo reboot</code><br />
After the system reboots, the Nvidia driver should be active.</li>
<li>In order to avoid sound problems, unmute all outputs like this:<br />
<code>alsamixer</code><br />
In this application, use the left and right arrow keys to navigate between the columns. When the box above the cursor displays <em style="color:Red">MM</em> it means this output is currently muted; if so unmute it by pressing <em>M</em> on the keyboard. Repeat for all muted columns until you don&#8217;t see any more boxes with the text <em style="color:Red">MM</em> on the screen. Then press <em>Escape</em> to exit the program. Finally save the settings with this command:<br />
<code>alsactl store 0</code><br />
Now, go to &#8220;System&#8221; &gt; &#8220;Preferences&#8221; &gt; and click &#8220;Sound Preferences&#8221;. Click on the &#8220;Hardware&#8221; tab and under &#8220;Profile&#8221; choose: &#8220;Digital Stereo (HDMI) Output + Analog Stereo Input&#8221;. Apply and close the &#8220;Sound Preferences&#8221;.</li>
<li>Audio, video and IR are now working fine, but the wireless connection is still unstable and freezes often. To fix this enter:<br />
<code>sudo apt-get install linux-backports-modules-karmic</code><br />
The above command might give some errors about modules not being built. To fix this:<br />
<code>sudo apt-get install linux-headers-2.6.31-22-generic</code><br />
Now the IR and video driver should have been compiled for the new kernel, and we can continue to install the updated WLAN drivers:<br />
<code>sudo apt-get install linux-backports-modules-wireless-karmic-generic<br />
sudo apt-get install wireless-tools<br />
sudo apt-get install wicd<br />
sudo reboot</code></li>
<li>After the system reboots there will be a new network management widget in the menu. Go to the Options in that widget, click &#8220;Preferences&#8221; next to your wireless network, and enter and save the network key again.</li>
</ol>
<p>After the above steps the following works stable for me: Video (hardware acceleration), the WLAN connection and the remote control. There is still a slight problem with audio, whenever I play a movie that contains AC3 or DTS sound I have to press the &#8220;Windows&#8221; button on the remote (to get to the movie menu) and navigate to the sound icon, then press OK on &#8220;Output Stereo signal to all speakers&#8221;. Only then am I able to output AC3 or DTS to the receiver over HDMI. It&#8217;s a minor nuisance but if anyone knows how to fix this please leave a comment. Thanks for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/xbmc-on-asrock-ion-330ht/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Migrating a bunch of WordPress blogs to a single WordPress 3.0 multi-site installation</title>
		<link>http://www.clausconrad.com/blog/migrating-a-bunch-of-wordpress-blogs-to-a-single-wordpress-3-multi-site-installation</link>
		<comments>http://www.clausconrad.com/blog/migrating-a-bunch-of-wordpress-blogs-to-a-single-wordpress-3-multi-site-installation#comments</comments>
		<pubDate>Sat, 12 Jun 2010 23:22:38 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/?p=295</guid>
		<description><![CDATA[General setup: Set up WordPress as usual Follow http://wptheming.com/2010/03/wordpress-3-0-enable-network/ to enable multi-site; use sub-directory config Change wp-config.php and .htaccess as described in the admin Follow http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial/ to enable domain mapping For each site: Log in to the control panel Upgrade site to 3.0 by copying files over and reloading the control panel Add the site on [...]]]></description>
			<content:encoded><![CDATA[<p></p><h2>General setup:</h2>
<ol>
<li><span style="font-family: Helvetica, Verdana, sans-serif;">Set up WordPress as usual</span></li>
<li><span style="font-family: Helvetica, Verdana, sans-serif;">Follow </span><a href="http://wptheming.com/2010/03/wordpress-3-0-enable-network/" target="_blank">http://wptheming.com/2010/03/wordpress-3-0-enable-network/</a> to enable multi-site; use sub-directory config</li>
<li>Change wp-config.php and .htaccess as described in the admin</li>
<li>Follow <a href="http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial/" target="_blank">http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial/</a> to enable domain mapping</li>
</ol>
<h2>For each site:</h2>
<ol>
<li>Log in to the control panel</li>
<li>Upgrade site to 3.0 by copying files over and reloading the control panel</li>
<li>Add the site on the WPMU installation</li>
<li>Map the domains</li>
<li>Add domain to hosts file</li>
<li>Export database to a file</li>
<li>Edit the file, remove wp_options, wp_usermeta and wp_users tables from dump</li>
<li>Rename prefixes from wp_ to wp_X_ where X is the blog id</li>
<li>Import SQL into new database</li>
<li>UPDATE wp_{ID}_posts SET post_author = 1</li>
<li>Switch theme</li>
<li>Move uploads and change post image path</li>
<li>Reenable plugins</li>
<li>Reenable widgets</li>
<li>Restore options</li>
<li>Check no broken Media</li>
</ol>
<h2>Especially in case of Thesis 1.7:</h2>
<p>For Thesis, also see <a href="http://www.clausconrad.com/blog/thesis-customizations-i-like">http://www.clausconrad.com/blog/thesis-customizations-i-like</a> to fix thumbs and post images.</p>
<p><a href="http://www.binaryturf.com/using-thesis-theme-with-a-wordpress-multisite-installation/" target="_blank">http://www.binaryturf.com/using-thesis-theme-with-a-wordpress-multisite-installation/</a></p>
<p><a href="http://www.kristarella.com/2009/09/using-thesis-with-wpmu/" target="_blank">http://www.kristarella.com/2009/09/using-thesis-with-wpmu/</a></p>
<ol>
<li>Restore Thesis options</li>
<li>Copy rotator images (if used)</li>
<li>Copy custom.css</li>
<li>Restore OpenHook</li>
<li>chmod 666 custom/blog-name/custom.css</li>
<li>chmod 775 custom/blog-name/cache</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/migrating-a-bunch-of-wordpress-blogs-to-a-single-wordpress-3-multi-site-installation/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lease .NET development tools</title>
		<link>http://www.clausconrad.com/blog/lease-net-development-tools</link>
		<comments>http://www.clausconrad.com/blog/lease-net-development-tools#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:29:50 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.clausconrad.com/blog/lease-net-development-tools</guid>
		<description><![CDATA[The Microsoft Action Pack Subscription (MAPS) has been a cheap way for very small businesses and self-employed technicians as well as students to get their hands on many of Microsoft&#8217;s software offerings for a small yearly fee. Now the software giant introduced a similar discount for self-employed developers, featuring some of the same software that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The Microsoft Action Pack Subscription (MAPS) has been a cheap way for very small businesses and self-employed technicians as well as students to get their hands on many of Microsoft&#8217;s software offerings for a small yearly fee.</p>
<p>Now the software giant introduced a similar discount for self-employed developers, featuring some of the same software that makes up the regular MAPS subscription as well as valuable MSDN subscriptions with Visual Studio and other pricey development tools. The new program called &#8220;Action Pack Development and Design&#8221; is available immediately for web development and design companies through <a href="https://partner.microsoft.com/global/program/40132997">https://partner.microsoft.com/global/program/40132997</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clausconrad.com/blog/lease-net-development-tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc
Database Caching 1/21 queries in 0.020 seconds using apc

Served from: www.clausconrad.com @ 2012-02-05 15:02:17 -->
