<?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>My development blog</title>
	<atom:link href="http://www.guztech.nl/wordpress/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guztech.nl/wordpress</link>
	<description>Drifting in virtual reality...</description>
	<lastBuildDate>Sun, 01 Jan 2012 00:46:44 +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>Programming Static RAM with a PIC16F877A</title>
		<link>http://www.guztech.nl/wordpress/index.php/2011/12/programming-static-ram-with-a-pic16f877a/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2011/12/programming-static-ram-with-a-pic16f877a/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 13:01:04 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Microchip]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[PIC16F877A]]></category>
		<category><![CDATA[Z80]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=103</guid>
		<description><![CDATA[I&#8217;m currently working on my own Z80 computer and one crucial part that I don&#8217;t have is ROM, or more precisely, an EPROM programmer. I found that they are very expensive and heard that programming an EPROM chip takes ages, so I needed another solution. Since I have SRAM chips lying around, I thought I&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on my own Z80 computer and one crucial part that I don&#8217;t have is ROM, or more precisely, an EPROM programmer. I found that they are very expensive and heard that programming an EPROM chip takes ages, so I needed another solution.</p>
<p>Since I have SRAM chips lying around, I thought I&#8217;d use one of them to store the program. I would need to load a program into it somehow, and since it&#8217;s volatile memory I would need to  repeat this process every single time after I cut off power from the board.<br />
<span id="more-103"></span><br />
Luckily I also happen to have a couple of Microchip PIC microcontrollers lying around. One of them is the PIC16F877A, a 40-pin 8-bit microcontroller that has a lot of I/O pins and also a USART port. So I used a MAX232 chip and hooked it up to the serial port of my computer. In the end I built this (don&#8217;t mind my horrible schematic drawing skills):</p>
<div id="attachment_120" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2011/12/RAMLoader1.png"><img class="size-medium wp-image-120" title="RAMLoader" src="http://www.guztech.nl/wordpress/wp-content/uploads/2011/12/RAMLoader1-300x142.png" alt="" width="300" height="142" /></a><p class="wp-caption-text">Schematic to upload data to SRAM</p></div>
<p>&nbsp;</p>
<p style="text-align: left;">Address and data busses are connected as follows:</p>
<ul>
<li style="text-align: left;">A0 is connected to RE2.</li>
<li>A1-A7 is connected to PORTB&lt;1:7&gt;.</li>
<li>A8-A13 is connected to PORTA&lt;0:5&gt;.</li>
<li>A14-A15 is connected to PORTE&lt;0:1&gt;.</li>
<li>D0-D7 is connected to PORTD&lt;0:7&gt;.</li>
</ul>
<p>The reason why I didn&#8217;t connect A0 to PORTB&lt;0&gt; is that it can also be used as an external interrupt (which I plan on using later).</p>
<p style="text-align: left;">I used the HI-TECH PIC C compiler to write code that reads 32768 bytes from the serial port and writes it to the RAM chip. Here is the code for those who would like to do something similar:</p>
<pre class="brush:cpp">#include 

// Unsigned char typedef
typedef unsigned char  uchar;
typedef unsigned short ushort;

// Define crystal oscillator frequency
#define _XTAL_FREQ 20000000

// Define baud rate
#define BAUD_RATE 57600

// Define memory size
#define MEM_SIZE 4 * 1024

// Define some useful functions
#define HIBYTE( x ) ( ( uchar )( x &gt;&gt; 8 ) )
#define LOBYTE( x ) ( ( uchar )( x &amp; 0xFF ) )

// Sets up the serial port in asynchronous mode
void SetupSerialPort( void )
{
	// Setup TXSTA register
	TX9	  = 0;	// 8-bit transmission
	TXEN  = 0;	// Transmit disabled
	TXEN  = 1;	// Transmit enabled (effectively resetting it)
	SYNC  = 0;	// Asynchronous mode
	BRGH  = 1;	// Select High Baud Rate

	// Setup RCSTA register
	SPEN  = 1;	// Enable Serial Port
	RX9	  = 0;	// 8-bit transmission
	CREN  = 1;	// Enable continous receive
	ADDEN = 0;	// Disable address detection

	// Setup SPBRG register
	// Divider is calculated as:
	// BAUD_RATE = Fosc / ( 16 * ( DIVIDER + 1 ) )
	// which gives:
	// DIVIDER = ( Fosc / ( 16 * BAUD_RATE ) ) - 1
	// which in the case of a 20MHz Fosc and baud
	// rate of DIVIDER is 20;
	#define DIVIDER ( _XTAL_FREQ / ( 16 * BAUD_RATE ) ) - 1
	#assert DIVIDER == 20
	SPBRG = DIVIDER;

	// Disable RX/TX interrupts
	TXIE = 0;
	RCIE = 0;
}

// Resets the Usart in case of errors
void ClearUsartErrors( void )
{
	// Overrun error
	if( OERR )
	{
		TXEN = 0;
		TXEN = 1;
		CREN = 0;
		CREN = 1;
	}
	// Framing error
	if( FERR )
	{
		uchar dummy = RCREG;
		TXEN = 0;
		TXEN = 1;
	}
}

// Writes a character to the serial port
void PutChar( uchar c )
{
	while( !TXIF )
	{
		ClearUsartErrors();
		CLRWDT();
	}

	TXREG = c;
	__delay_us( 60 );
}

// Reads character from the serial port without timeout
uchar GetChar( void )
{
	while( !RCIF )
	{
		CLRWDT();
		ClearUsartErrors();
	}

	return RCREG;
}

// Configures the ports
void SetupIO( void )
{
	// Set Port A and E to digitil I/O pins
	ADON   = 0;
	ADCON1 = 0b00000110;

	// Set Ports as output
	TRISA = 0x00;
	TRISB = 0x00;
	TRISC = TRISC &amp; 0b11110001;
	TRISD = 0x00;
	TRISE = 0x00;

	// Disable !CS
	RC1 = 1;

	// Disable !WE
	RC2 = 1;

	// Disable !OE
	RC3 = 1;
}

// Writes contents of memory to serial port
void MemoryToSerial( void )
{
	uchar  data;
	ushort address;

	// Set port D as input
	TRISD = 0xFF;

	// Enable !CS
	RC1 = 0;

	// Enable !OE
	RC3 = 0;

	for( address = 0; address &lt; MEM_SIZE; address++ )
	{
		// Set address
		uchar lowAddr  = LOBYTE( address );
 		uchar highAddr = HIBYTE( address );

 		PORTB = lowAddr;
 		RE2	  = lowAddr &amp; 0x01;
 		PORTA = highAddr;
 		RE0	  = ( highAddr &amp; 0x40 ) &gt;&gt; 6;
		RE1   = ( highAddr &amp; 0x80 ) &gt;&gt; 7;

		// Read data
		data = PORTD;

		PutChar( data );
	}
}

// Writes data from serial port to memory
void SerialToMemory( void )
{
	uchar  data;
	ushort address;

	for( address = 0; address &lt; MEM_SIZE; address++ )
 	{
 		// Read data byte
 		data = GetChar();

 		// Set address
 		uchar lowAddr  = LOBYTE( address );
 		uchar highAddr = HIBYTE( address );

 		PORTB = lowAddr;
 		RE2	  = lowAddr &amp; 0x01;
 		PORTA = highAddr;
 		RE0	  = ( highAddr &amp; 0x40 ) &gt;&gt; 6;
		RE1   = ( highAddr &amp; 0x80 ) &gt;&gt; 7;

		// Enable !CS
		RC1 = 0;

		// Enable !WE
		RC2 = 0;

		__delay_us( 1 );

		// Set data
		PORTD = data;

		// Disable !WE
		RC2 = 1;

		// Disable !CS
		RC1 = 1;
	}
}

void main( void )
{
	OPTION_REG = 0xFF;
	CLRWDT();

	SetupSerialPort();
	SetupIO();

	SerialToMemory();
	MemoryToSerial();	

	while( 1 )
	{
		if( GetChar() == 'd' )
		{
			MemoryToSerial();
		}
	}

	return;
}</pre>
<p style="text-align: left;">Here&#8217;s a short video to see it in action:</p>
<p style="text-align: center;"><iframe src="http://www.youtube.com/embed/hYcTKJ_buo4" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2011/12/programming-static-ram-with-a-pic16f877a/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CUDA Raytracer update, now comes with OpenGL flavour</title>
		<link>http://www.guztech.nl/wordpress/index.php/2010/03/cuda-raytracer-update-now-comes-with-opengl-flavour/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2010/03/cuda-raytracer-update-now-comes-with-opengl-flavour/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 18:57:09 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cuda]]></category>
		<category><![CDATA[Raytracing]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=86</guid>
		<description><![CDATA[Well I&#8217;ve been busy with my raytracer again and this time I added OpenGL support and a camera. What I do is: make an OpenGL pixel buffer bind it to CUDA run the raytracer kernel which fills the buffer give it back to OpenGL generate a texture from the buffer set up orthogonal view render [...]]]></description>
			<content:encoded><![CDATA[<p>Well I&#8217;ve been busy with my raytracer again and this time I added OpenGL support and a camera. What I do is:</p>
<ol>
<li>make an OpenGL pixel buffer</li>
<li>bind it to CUDA</li>
<li>run the raytracer kernel which fills the buffer</li>
<li>give it back to OpenGL</li>
<li>generate a texture from the buffer</li>
<li>set up orthogonal view</li>
<li>render a quad with the texture on it</li>
</ol>
<p>The results:</p>
<p><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2010/03/cudatracer1.png"><img class="aligncenter size-medium wp-image-87" title="Cudatracer 1" src="http://www.guztech.nl/wordpress/wp-content/uploads/2010/03/cudatracer1-300x234.png" alt="Suzanne raytraced" width="300" height="234" /></a>and to show that the camera works (somewhat):</p>
<p><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2010/03/cudatracer2.png"><img class="aligncenter size-medium wp-image-88" title="Cudatracer 2" src="http://www.guztech.nl/wordpress/wp-content/uploads/2010/03/cudatracer2-300x234.png" alt="Suzanne from a different angle" width="300" height="234" /></a>For those who want to combine CUDA and OpenGL is highly recommend watching <a title="What Every CUDA Programmer Needs to Know about OpenGL" href="http://nvidia.fullviewmedia.com/GPU2009/1001-valley-1055.html" target="_blank">this video</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2010/03/cuda-raytracer-update-now-comes-with-opengl-flavour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up a git server in Ubuntu with gitosis and using gitextensions on Windows</title>
		<link>http://www.guztech.nl/wordpress/index.php/2010/02/setting-up-a-git-server-in-ubuntu-with-gitosis-and-using-gitextensions-on-windows/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2010/02/setting-up-a-git-server-in-ubuntu-with-gitosis-and-using-gitextensions-on-windows/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:14:53 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitextensions]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=50</guid>
		<description><![CDATA[When writing code, you want to use some sort of version control system. Trust me, you want it. I had a project I worked on for 4 weeks and a couple of hours before the deadline I mad a mistake. I was making a class diagram from existing code and realized that a certain UML [...]]]></description>
			<content:encoded><![CDATA[<p>When writing code, you want to use some sort of version control system. Trust me, you want it. I had a project I worked on for 4 weeks and a couple of hours before the deadline I mad a mistake. I was making a class diagram from existing code and realized that a certain UML tool thinks it&#8217;s a good idea to delete a class from the project folder when you decide that you don&#8217;t want that particular class in your diagram. I guess that makes sense&#8230; on a planet where all software developers are masochists.  Anyway, that little mistake could have been a serious problem (and a simple &#8220;Oops, sorry I deleted all the code by accident, kthxbye&#8221; wouldn&#8217;t have cut it), but luckily I had it stored in my dropbox folder which backs everything up on the dropbox servers and they provide an &#8216;undelete&#8217; option.</p>
<p>I&#8217;ve been trying to setup a git server on my server which runs Ubuntu Server 9.10, but I had a lot of problems partly due to the fact that I couldn&#8217;t find a lot of information when something went wrong. But I&#8217;m a stubborn person so I persevered and succeeded in the end. This post is for those who want to setup a git server on Ubuntu and want to use git on Windows, especially with <a title="Git Extensions" href="http://code.google.com/p/gitextensions/" target="_blank"><span style="color: #0099ff;">Git Extensions</span></a>. This tutorial consists of two parts: setting up the server and setting up gitextensions on Windows, but there will be some switching between the server and the local Windows machine so please pay attention.</p>
<p>There are a lot of tutorials that cover setting up a git server but this one is a full guide to setting up a git server and the tools necessary to work with git on Windows. It also has some information I found on some mailing lists and forum posts that I found after a lot of searching. Still I take no credit for this tutorial for it is merely a collection of information I found. All credit goes to the people who actually tested these steps and bothered putting it on the internet for other people struggling with this. I try to explain everything as thorough as possible so it is a lot of text, but it&#8217;s not hard. Just read carefully and you will have git running in no time!</p>
<h2><span id="more-50"></span><span style="color: #0099ff;">Setting up the git server</span></h2>
<p>The server will use the git repository manager <span style="color: #0099ff;"><a href="http://swik.net/gitosis" target="_blank">Gitosis</a></span>. It&#8217;s easy to setup and it just works <img src='http://www.guztech.nl/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>1. Install Ubuntu Server (or any other flavor of Ubuntu) on your server and select the <span style="color: #0099ff;">OpenSSH Server</span> option when asked which packages you want to install. If you don&#8217;t do this or you forget it, don&#8217;t worry, we can add it with a simple command later.</p>
<p>2. Update your server:</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo apt-get update<br />
sudo apt-get dist-upgrade</em></span></p></blockquote>
<p>You can also do <span style="color: #0099ff;"><em>sudo apt-get upgrade</em></span> if you want, but if you&#8217;ve installed a fresh copy of Ubuntu you might as well fully update it. If you haven&#8217;t installed the <span style="color: #0099ff;">OpenSSH Server</span> option install it with:</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo apt-get install ssh</em></span></p></blockquote>
<p>3. Install the <span style="color: #0099ff;">git-core</span> package so we can use git.</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo apt-get install git-core</em></span></p></blockquote>
<p>4. Install the<span style="color: #0099ff;"> python-setuptools</span> package which is needed by <span style="color: #0099ff;">Gitosis</span>.</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo apt-get install python-setuptools</em></span></p></blockquote>
<p>5. Now we can get <span style="color: #0099ff;">Gitosis </span>and set it up.</p>
<blockquote><p><span style="color: #0099ff;"><em>mkdir ~/src<br />
cd ~/src<br />
git clone git://eagain.net/gitosis.git</em></span></p></blockquote>
<p>If everything went fine you should see something like this:</p>
<blockquote><p><span style="color: #0099ff;"><em>Initialized empty Git repository in /home/oguz286/src/gitosis/.git/<br />
remote: Counting objects: 614, done.<br />
remote: Compressing objects: 100% (183/183), done.<br />
remote: Total 614 (delta 434), reused 594 (delta 422)<br />
Receiving objects: 100% (614/614), 93.82 KiB | 134 KiB/s, done.<br />
Resolving deltas: 100% (434/434), done.</em></span></p></blockquote>
<p>6. Time to install <span style="color: #0099ff;">Gitosis</span>.</p>
<blockquote><p><span style="color: #0099ff;"><em>cd gitosis<br />
sudo python setup.py install</em></span></p></blockquote>
<p>7. Setup the &#8216;git&#8217; user.</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo adduser \<br />
&#8211;system \<br />
&#8211;shell /bin/sh \<br />
&#8211;gecos &#8216;git version control&#8217; \<br />
&#8211;group \<br />
&#8211;disabled-password \<br />
&#8211;home /home/git \<br />
git</em></span></p></blockquote>
<p>The <span style="color: #0099ff;">&#8211;home</span> option need not be <span style="color: #0099ff;">/home/git</span> (I placed it on the RAID5 array in my server, instead of the system disk where the <span style="color: #0099ff;">/home</span> folder resides). Notice that the git user doesn&#8217;t have a password. This is because we will be using ssh keys to access our repositories.</p>
<p><span style="color: #0099ff;">Attention:</span> we will switch to the local machine because we need to generate the ssh keys needed by <span style="color: #0099ff;">Gitosis</span> but we are not with the server just yet.</p>
<h2><span style="color: #0099ff;">Setting up gitextensions on Windows</span></h2>
<p>8. Get <span style="color: #0099ff;"><a title="Git Extensions" href="http://code.google.com/p/gitextensions/" target="_blank">Git  Extensions</a></span> and install it on your local Windows machine.  I opted for the option to only add git to my path, so I recommend you do the same since I&#8217;m not sure if it&#8217;s necessary. The other default options are just fine so don&#8217;t change them.<br />
9. Start <span style="color: #0099ff;">Git Extensions</span> and follow the instructions (you probably need to fill in your name and email address that is shown when you commit something). Now click &#8216;<span style="color: #0099ff;">Remotes-&gt;PuTTY-&gt;Generate or import key</span>&#8216;.</p>
<p>This will open <span style="color: #0099ff;">PuTTYgen</span>, which we will use to generate our ssh keys. Click on &#8216;<span style="color: #0099ff;">Generate</span>&#8216; and follow what&#8217;s on the screen. After some the keys will be generated. Change the &#8216;<span style="color: #0099ff;">Key comment</span>&#8216; section to your username but make sure it has no spaces! This is important because <span style="color: #0099ff;">Gitosis</span> will use it as your username and &#8216;rsa-key-2010xxxx&#8217; is a horrible representation of a user. I chose &#8216;OguzMeteer&#8217; because that is my full name.</p>
<p>Make a new file on your desktop called &#8216;<span style="color: #0099ff;">id_rsa.pub</span>&#8216; and put the long string under the &#8216;Public key for pasting&#8230;&#8217; section in that file and put that file on your server (in this example in the <span style="color: #0099ff;">/tmp</span> folder).</p>
<p>Click on &#8216;<span style="color: #0099ff;">Save private key</span>&#8216; and put the file somewhere safe. You will need it shortly.</p>
<p><span style="color: #0099ff;">Attention:</span> the next step is performed on the server!</p>
<p>8. Add your public key to <span style="color: #0099ff;">Gitosis</span>.</p>
<blockquote><p><em><span style="color: #0099ff;">sudo -H -u git gitosis-init &lt; /tmp/id_rsa.pub</span></em></p></blockquote>
<p>You can do this for each person you want to grant access to your repositories.</p>
<p>If everything went allright you should see something like this (depending on where your git user home is):</p>
<blockquote><p><span style="color: #0099ff;"><em>Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/<br />
Reinitialized  empty Git repository in /home/git/repositories/gitosis-admin.git/</em></span></p></blockquote>
<p>Yes it initializes and re-initializes, so don&#8217;t worry. And with that you are done with the server!<br />
9. Connect to your server.<br />
Use <span style="color: #0099ff;"><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">PuTTY</a></span> to connect to your server once. This is needed because the first time you connect a server who&#8217;s public key is not known on your system it asks you if you want to accept its public key. Select &#8216;yes&#8217; after connecting to your server and then close <span style="color: #0099ff;">PuTTY</span>.<br />
10. Configure <span style="color: #0099ff;">Gitosis</span>.<br />
This is the cool part because we will configure <span style="color: #0099ff;">Gitosis</span> by using git! In <span style="color: #0099ff;">Git Extensions</span> click on &#8216;<span style="color: #0099ff;">Clone repository</span>&#8216;. You will see this:</p>
<p style="text-align: center;"><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/clone.png"><img class="aligncenter size-full wp-image-61" title="clone" src="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/clone.png" alt="Clone repository" width="468" height="248" /></a></p>
<p>For &#8216;<span style="color: #0099ff;">Repository to clone</span>&#8216; fill in:</p>
<blockquote><p><span style="color: #0099ff;"><em>git@yourserverip:gitosis-admin.git</em></span></p></blockquote>
<p><span style="color: #0099ff;">Attention:</span> do not add a &#8216;\&#8217; after it, because then you will get error messages about the command looking dangerous and the server will close the connection! <span style="color: #0099ff;">Git Extensions</span> puts it there sometimes so look out.</p>
<p>&#8216;<span style="color: #0099ff;">Subdirectory to create</span>&#8216; usually is the same name as the repository you want to clone so fill in &#8216;gitosis-admin&#8217;.</p>
<p>Click on &#8216;<span style="color: #0099ff;">Load SSH key</span>&#8216;, select your private key and load it. You will notice that an icon will appear in your taskbar. It is &#8216;Pageant&#8217; and it needs to run when you want to connect to your git repository. Most screw-ups are made here. If it isn&#8217;t running you cannot connect to you repository so make sure it is running. You can also access it through &#8216;<span style="color: #0099ff;">Remotes-&gt;PuTTY-&gt;Start authentication agent</span>&#8216;. If you open it you will see that your private key is in the list and your username that you filled in the comment section is also there.</p>
<p>Finally click on &#8216;<span style="color: #0099ff;">Clone</span>&#8216; and you should get the result you wanted <img src='http://www.guztech.nl/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <span style="color: #0099ff;"> </span></p>
<p style="text-align: center;"><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/clonedone.png"><img class="aligncenter size-full wp-image-64" title="clonedone" src="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/clonedone.png" alt="" width="468" height="217" /></a></p>
<p><span style="color: #0099ff;">Git Extensions</span> asks you if you want to open the repository you just cloned. Do that and you will see the history of the repository (which consists of only 1 commit).</p>
<p>Now you are ready to make your own repositories!</p>
<h2><span style="color: #0099ff;">Setting up repositories</span></h2>
<p>Let&#8217;s say you have a new project called &#8216;<span style="color: #0099ff;">myproject</span>&#8216; and want to make a repository for it on your new server. Open up <span style="color: #0099ff;">gitosis.conf</span> in the directory you cloned it to. Mine contains this:</p>
<blockquote><p><span style="color: #0099ff;"><em>[gitosis]</em></span></p>
<p><em>[group gitosis-admin]<br />
writable = gitosis-admin<br />
members = OguzMeteer</em></p></blockquote>
<p>Let&#8217;s add &#8216;<span style="color: #0099ff;">myproject</span>&#8216; to it. Modify it like this:</p>
<blockquote><p><span style="color: #0099ff;"><em>[gitosis]</em></span></p>
<p><em>[group gitosis-admin]<br />
writable = gitosis-admin<br />
members = OguzMeteer</em></p>
<p><em>[group whatever]<br />
writable = myproject<br />
members = OguzMeteer</em></p></blockquote>
<p>We&#8217;ve made a new group called &#8216;<span style="color: #0099ff;">whatever</span>&#8216;. You can name it whatever you want. What&#8217;s important is the &#8216;<span style="color: #0099ff;">writable</span>&#8216; section where the name of your repository is filled in. &#8216;<span style="color: #0099ff;">members</span>&#8216; obviously is for who has access to the repository. Remember that the name of each member you want to grant access has to be exactly like what you (and they) filled in, in the comment section when generating an ssh key pair (no spaces!).</p>
<p>Now make a folder called <span style="color: #0099ff;">myproject </span>and create a new empty repository in it. To do this click &#8216;<span style="color: #0099ff;">File-&gt;Close</span>&#8216; and then click &#8216;<span style="color: #0099ff;">Create new repository</span>&#8216; in your already opened <span style="color: #0099ff;">Git Extensions</span>. Select your <span style="color: #0099ff;">myproject</span> folder and click &#8216;<span style="color: #0099ff;">Initialize</span>&#8216;. Add some files in the folder and then click &#8216;<span style="color: #0099ff;">Commit</span>&#8216;. Select the files and click &#8216;<span style="color: #0099ff;">Stage selected files</span>&#8216;, write a message and then click &#8216;<span style="color: #0099ff;">Commit</span>&#8216;.</p>
<p>There are only 2 steps left so hang in there! Click &#8216;<span style="color: #0099ff;">Remotes-&gt;Manage remote repositories</span>&#8216; and fill in like in this picture and click &#8216;<span style="color: #0099ff;">Save</span>&#8216;:</p>
<p style="text-align: center;"><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/remote.png"><img class="aligncenter size-full wp-image-80" title="remote" src="http://www.guztech.nl/wordpress/wp-content/uploads/2010/02/remote.png" alt="" width="470" height="181" /></a></p>
<p style="text-align: left;">Click &#8216;<span style="color: #0099ff;">Yes</span>&#8216;. You will probably get an error, but don&#8217;t worry about it.</p>
<p style="text-align: left;">And the final step! Click &#8216;<span style="color: #0099ff;">Commands-&gt;Push</span>&#8216;, select &#8216;<span style="color: #0099ff;">origin</span>&#8216; next to &#8216;<span style="color: #0099ff;">Remote</span>&#8216;. If everything went fine (it should): Congratulations! You have just made a new repository on your server and committed some files <img src='http://www.guztech.nl/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">To be honest, I don&#8217;t really like <span style="color: #0099ff;">Git Extensions</span> because the Explorer integration isn&#8217;t the best there is. There is a program called <span style="color: #0099ff;">TortoiseGit</span> which is similar to <span style="color: #0099ff;">TortoiseSVN</span> for those of you who are familiar with it. It&#8217;s not as good yet, but I will install it as well and use both <span style="color: #0099ff;">Git Extensions </span>and <span style="color: #0099ff;">TortoiseGit</span>. Happy gitting!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2010/02/setting-up-a-git-server-in-ubuntu-with-gitosis-and-using-gitextensions-on-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to use usbhostfs_pc as non-root</title>
		<link>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-use-usbhostfs_pc-as-non-root/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-use-usbhostfs_pc-as-non-root/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 19:48:17 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=41</guid>
		<description><![CDATA[I had some problems on Ubuntu with running usbhostfs_pc as non-root. I searched for an answer and finally came across a solution. 1. First go to System-&#62;Administration-&#62;Users and Groups, type in your root password and you should get to a screen with all of your users. Now click on the &#8216;Manage Groups&#8216; button and then [...]]]></description>
			<content:encoded><![CDATA[<p>I had some problems on Ubuntu with running <span style="color: #0099ff;">usbhostfs_pc</span> as non-root. I searched for an answer and finally came across a solution.</p>
<p>1.  First go to <span style="color: #0099ff;">System</span>-&gt;<span style="color: #0099ff;">Administration</span>-&gt;<span style="color: #0099ff;">Users and Groups</span>, type in your root password and you should get to a screen with all of your users. Now click on the &#8216;<span style="color: #0099ff;">Manage Groups</span>&#8216; button and then on the &#8216;<span style="color: #0099ff;">Add Group</span>&#8216; button. Type &#8216;<span style="color: #0099ff;">psplink</span>&#8216; in the<span style="color: #0099ff;"> Group name</span> section and select your user in the <span style="color: #0099ff;">Group Members</span> section. Click on <span style="color: #0099ff;">O</span><span style="color: #0099ff;">k</span> and then twice on<span style="color: #0099ff;"> Close</span>. Now you have to logoff and log back in for your user to be added to the new group. You can also do this with terminalcommands but quite frankly I forgot how the commands work (since I don&#8217;t add groups and users on a regular basis) and I was too lazy to find out how they work again, so that&#8217;s why I chose the GUI-approach.</p>
<p><span id="more-41"></span>2. Start psplink on your PSP and plug the usb cable in. Type this command in the terminal :</p>
<blockquote><p><span style="color: #0099ff;">lsusb</span></p></blockquote>
<p>Now you should see something like this:</p>
<blockquote><p><span style="color: #0099ff;">Bus 005 Device 005: ID 054c:01c9 Sony Corp.<br />
Bus 005 Device 003: ID 0c45:624f Microdia<br />
Bus 005 Device 001: ID 0000:0000<br />
Bus 001 Device 001: ID 0000:0000<br />
Bus 004 Device 001: ID 0000:0000<br />
Bus 002 Device 004: ID 046d:c019 Logitech, Inc.<br />
Bus 002 Device 001: ID 0000:0000<br />
Bus 003 Device 004: ID 08ff:2580 AuthenTec, Inc.<br />
Bus 003 Device 001: ID 0000:0000</span></p></blockquote>
<p>3. Find the line with <span style="color: #0099ff;">Sony Corp.</span> in it and write down the two hexidecimal numbers in front of it. In my case it&#8217;s <span style="color: #0099ff;">054c</span> and  <span style="color: #0099ff;">01c9</span>. The first number is the<span style="color: #0099ff;"> vendor id</span> and is the same for all PSP&#8217;s and the second number is the <span style="color: #0099ff;">product id</span>, which is hardcoded in usbhostfs_pc so it should be the same for everybody. There is a way to change the <span style="color: #0099ff;">product id</span> by either changing it in the sourcecode and recompiling it or by supplying the wanted product id in the psplink.ini file on your PSP. Here&#8217;s how mine looks like:</p>
<blockquote><p><span style="color: #0099ff;"># Example psplink configuration file.</span></p>
<p># pid=num Set the product ID for hostfs allows you to use multiple PSPs at one time<br />
# Must specify the PID using the -p option of usbhostfs_pc<br />
# pid=0x1C9</p>
<p># pluser=[0 1] Enable the PSPLink user module<br />
pluser=0</p>
<p># resetonexit=[0 1] Specify wheher to reset psplink when sceKernelExitGame<br />
# is called<br />
resetonexit=1</p></blockquote>
<p>So if you wanted to change the <span style="color: #0099ff;">product id</span> (because you have more than 1 PSP for example) you would remove the &#8216;<span style="color: #0099ff;">#</span>&#8216; in front of the <span style="color: #0099ff;">pid=0x1C9</span> line and change the hexidecimal number.</p>
<p>4. Now you need to create a rules file in <span style="color: #0099ff;">/etc/udev/rules.d/</span> so type:</p>
<blockquote><p><span style="color: #0099ff;">cd /etc/udev/rules.d<br />
gksudo gedit 96-psplink.rules</span></p></blockquote>
<p>Now edit this file to look like this:</p>
<blockquote><p><span style="color: #0099ff;">SUBSYSTEM!=&#8221;usb_device&#8221;, GOTO=&#8221;psp_rules_end&#8221;<br />
SYSFS{idVendor}==&#8221;054c&#8221;, SYSFS{idProduct}==&#8221;01c9&#8243;, GROUP=&#8221;psplink&#8221;, MODE=&#8221;0664&#8243;<br />
LABEL=&#8221;psp_rules_end&#8221;</span></p></blockquote>
<p>Pay attention here,  you see the <span style="color: #0099ff;">idVendor </span>and  <span style="color: #0099ff;">idProduct </span> tags in the second line?  Replace the hexidecimal codes  you  got  form the <span style="color: #0099ff;">lsusb</span> command with your own. If you have more than 1 PSP you could create more files like &#8220;96-psplink<span style="color: #0099ff;">2</span>.rules&#8221; for your second PSP. Save the file(s) and disconnect your psp.</p>
<p>5. Now open up a terminal, connect your psp and type:<span style="color: #0099ff;"> </span></p>
<blockquote><p>usbhostfs_pc</p></blockquote>
<p>Or if you have changed your product id:</p>
<blockquote><p><span style="color: #0099ff;">usbhostfs_pc -p &lt;value&gt;</span></p></blockquote>
<p>And it should say &#8220;Connected to device&#8221;. If not, then type this:</p>
<blockquote><p><span style="color: #0099ff;">sudo udevcontrol reload_rules</span></p></blockquote>
<p>If it still doesn&#8217;t work then read the instructions carefully and check if you have made an error and if it still doesn&#8217;t work you can send me and email.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-use-usbhostfs_pc-as-non-root/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to setup the psp toolchain on ubuntu</title>
		<link>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-setup-the-psp-toolchain-on-ubuntu/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-setup-the-psp-toolchain-on-ubuntu/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 19:45:27 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=23</guid>
		<description><![CDATA[[UPDATE] If you want to setup the psp toolchain I recommand using MINPSPW. It supports Windows, GNU/Linux and OpenSolaris and is much easier to setup. You can of course still use this tutorial if you like. I know that there are some guides out there how to setup the psptoolchain but when I followed them [...]]]></description>
			<content:encoded><![CDATA[<p>[UPDATE] If you want to setup the psp toolchain I recommand using <span style="color: #0099ff;"><a href="http://minpspw.sourceforge.net/" target="_self">MINPSPW</a></span>. It supports Windows, GNU/Linux and OpenSolaris and is much easier to setup. You can of course still use this tutorial if you like.</p>
<p>I know that there are some guides out there how to setup the psptoolchain but when I followed them I still had problems compiling SDL programs. So here is my guide to installing the psptoolchain and psplibraries on Linux. I figured these out by myself and with the help of <a href="http://forums.ps2dev.org/viewtopic.php?p=61255&amp;sid=e073ad5a038b10b32df7e0cee5644066#61255" target="_blank"><span style="color: #0099ff;">J.F.&#8217; post</span></a> on the <a href="http://forums.ps2dev.org/" target="_blank"><span style="color: #0099ff;">ps2dev forums</span></a>, so my thanks to him. I assume that you have basic shell knowledge like how to make a folder and how to change folders and stuff like that.</p>
<p><span id="more-23"></span>1. The first step is to have a couple of programs and libraries setup before you can compile the toolchain. These programs are stated in the readme file included in the psptoolchain package, but it wasn&#8217;t complete at the time i downloaded it, so i&#8217;ll write them here just in case. Get these programs and/or libraries (ubuntu users can use <span style="color: #0099ff;">Synaptic Package Manager</span> to install these):</p>
<ul>
<li><span style="color: #0099ff;">autoconf</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">automake v1.9</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">bison</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">flex</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">gcc</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">imagemagick</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">libreadline-dev</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">libusb-dev</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">libtool</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">make</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">ncurses (I have ncurses-base, ncurses-bin, ncurses-hex and ncurses-term)</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">patch</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">readline (readline-common in Synaptic)</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">subversion</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">texinfo</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">wget</span><span style="color: #0099ff;"><br />
</span></li>
<li><span style="color: #0099ff;">(ubuntu-users: build-essential)</span></li>
</ul>
<p>2. Now you have to get the latest psptoolchain (pspsdk is included). Open up a terminal and make a folder somewhere you&#8217;d like to have your downloaded files to reside. I use ~/Downloads where the <span style="color: #0099ff;">~/</span> means that it&#8217;s in my Home folder, so as an absolute path, that would be:<span style="color: #0099ff;"> /home/username/Downloads</span> (username is obviously your own username).</p>
<blockquote><p><span style="color: #0099ff;"><em>mkdir Downloads<br />
cd Downloads<br />
svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain psptoolchain</em></span></p></blockquote>
<p>You will see a message like &#8220;Checked out revision xxxx&#8221; where xxxx is the newest revision, which means you just have succesfully downloaded the last version of the psptoolchain. Read the Readme file located in your Downloads/psptoolchain folder.</p>
<p>3. Time to compile the toolchain, but first you have to set some paths. Type this in the (still open) terminal.</p>
<blockquote><p><span style="color: #0099ff;"><em>cd psptoolchain<br />
export PSPDEV=/usr/local/pspdev<br />
export PATH=$PATH:$PSPDEV/bin</em></span></p></blockquote>
<p>You also need to make the /usr/local/pspdev folder and give it permission to be writable by your user.</p>
<blockquote><p><span style="color: #0099ff;"><em>sudo mkdir -p /usr/local/pspdev<br />
sudo chmod a+rxw /usr/local/pspdev<br />
sudo chown username:group /usr/local/pspdev</em></span></p></blockquote>
<p>Pay attention to the last line. You should replace username with your username and group also with your username (that&#8217;s how i do it).<br />
Now to compile this baby:</p>
<blockquote><p><em><span style="color: #0099ff;">./toolchain.sh</span></em></p></blockquote>
<p>Ok time to sit back and relax, because now it should start compiling without errors and it can take a long time. Most people talk about an average about 3 hours, but on my laptop (Core Duo 2Ghz) it takes about 20-30 minutes. Don&#8217;t close the terminal when it&#8217;s done, we still need it. If by some accident you closed the terminal don&#8217;t worry. Just type those export-lines above here in the terminal and you are good to go.</p>
<p>4. When you have no errors (you should have no errors), it&#8217;s time to download and install the psplibraries package. It contains a collections of libraries such as SDL, SDL_mixer, jpeg, png, zlib etc. I recommend that you download this as well. On the terminal type the following commands:</p>
<blockquote><p><span style="color: #0099ff;"><em>cd ..<br />
svn co svn://svn.ps2dev.org/psp/trunk/psplibraries psplibraries</em></span></p></blockquote>
<p>Now you will have downloaded the lastest psplibraries package. Again read the Readme file inside the psplibraries folder.</p>
<p>5. Time to compile the libraries. Type these commands in the terminal:</p>
<blockquote><p><span style="color: #0099ff;"><em>cd psplibraries<br />
./libraries.sh</em></span></p></blockquote>
<p>And it should compile, again with no errors. On my laptop it takes about 20 minutes to compile so go get something to drink and relax, we are almost done.</p>
<p>6. Last thing you need to do is add a couple of lines to your .bashrc file in your home folder.</p>
<blockquote><p><span style="color: #0099ff;">gedit ~/.bashrc</span></p></blockquote>
<p>Add the following lines at the end of the file (and save of course):</p>
<blockquote><p><span style="color: #0099ff;">export PSPDEV=&#8221;/usr/local/pspdev&#8221;<br />
export PSPSDK=&#8221;$PSPDEV/psp/sdk&#8221;<br />
export PATH=&#8221;$PATH:$PSPDEV/bin:$PSPSDK/bin&#8221;<br />
</span></p></blockquote>
<p>And now you should have everything setup to start developing applications for the psp!</p>
<p>7. (optional) If you also want to use the pspusblink package follow these steps. On the terminal:</p>
<blockquote><p><span style="color: #0099ff;"><em>cd ..<br />
cd psptoolchain/build/psplinkusb<br />
make release</em></span></p></blockquote>
<p>Now go to the release_oe folder inside the pspusblink folder and copy the psplink folder to your psp. On my psp the directory is the PSP/GAME folder, but yours may differ. How to use psplink can be found in the manual found in the pspusblink folder.</p>
<p>Congratulations, everything should be setup and working correctly now! If you have any problems, found a mistake in my guide, just mail me by clicking on the about me link and filling in the form.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2009/12/how-to-setup-the-psp-toolchain-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OguTracer</title>
		<link>http://www.guztech.nl/wordpress/index.php/2009/12/ogutracer/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2009/12/ogutracer/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 19:20:29 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cuda]]></category>
		<category><![CDATA[Raytracing]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=8</guid>
		<description><![CDATA[My raytracer so far is very simple. It uses no acceleration structures and the scene is static. Earlier versions ran on the CPU, but now I use Cuda to use the enormous floating point processing power of my GPU which shortened my rendering times a lot. The raytracer loads a mesh from a 3DS Max [...]]]></description>
			<content:encoded><![CDATA[<p>My raytracer so far is very simple. It uses no acceleration structures and the scene is static. Earlier versions ran on the CPU, but now I use <a title="nVidia Cuda" href="http://www.nvidia.com/object/cuda_home.html" target="_blank">Cuda</a> to use the enormous floating point processing power of my GPU which shortened my rendering times a lot.</p>
<p>The raytracer loads a mesh from a 3DS Max  file, puts a &#8216;room&#8217; around it and renders the scene using only primary rays. Here is an example:</p>
<div id="attachment_9" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.guztech.nl/wordpress/wp-content/uploads/2009/12/output.jpg"><img class="size-medium wp-image-9" title="Raytracer output" src="http://www.guztech.nl/wordpress/wp-content/uploads/2009/12/output-300x225.jpg" alt="Raytracer output" width="300" height="225" /></a><p class="wp-caption-text">Raytracer output</p></div>
<p style="text-align: center;">
<p>The scene above consists of 1034 triangles and renders in 0.693 seconds on my Geforce 8600GT. My CPU needs around 10 seconds to render the same scene with the same detail so using the GPU is much faster.</p>
<p>Right now I&#8217;m in the process of implementing a BHV acceleration structure to make rendering faster. What it basically does is, it puts a bounding box around the mesh and then divides the mesh into two smaller bounding boxes. This process is repeated until some conditions are met (i.e. maximum depth reached) or when each bounding box contains a single traingle. This speeds up rendering because now the rays are checked against the bounding boxes instead of the triangles, and the bounding boxes that do not intersect with the ray don&#8217;t have to be checked.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2009/12/ogutracer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My new blog</title>
		<link>http://www.guztech.nl/wordpress/index.php/2009/12/my-new-blog/</link>
		<comments>http://www.guztech.nl/wordpress/index.php/2009/12/my-new-blog/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 18:18:01 +0000</pubDate>
		<dc:creator>oguz286</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.guztech.nl/wordpress/?p=5</guid>
		<description><![CDATA[I used Joomla before but it offers me too much options, so I switched to WordPress. Hopefully I&#8217;ll be able to post some usefull information about the projects I&#8217;m working on I will &#8216;port&#8217; the posts on my old website to my blog in a short while.]]></description>
			<content:encoded><![CDATA[<p>I used Joomla before but it offers me too much options, so I switched to WordPress. Hopefully I&#8217;ll be able to post some usefull information about the projects I&#8217;m working on <img src='http://www.guztech.nl/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I will &#8216;port&#8217; the posts on my old website to my blog in a short while.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guztech.nl/wordpress/index.php/2009/12/my-new-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

