<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Plan 9 and Inferno</title>
		<link>http://gsoc.cat-v.org//blog/</link>
		<description></description>
		<language>en-us</language>
		<generator>Tom Duff's rc, and Kris Maglione's clever hackery</generator>
		<webMaster>Uriel Mangado &lt;uriel99@gmail.com&gt;</webMaster>
		<item>
			<title>Good News</title>
			<author>iru@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-11-10-1_Good_News</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-11-10-1_Good_News</guid>
			<pubDate>Sat, 10 Nov 2007 19:19:38 +0100</pubDate>
			<description><![CDATA[<pre>Oi

I haven't had much time for hacking on o9fs. The university takes most
of my time. But that's not what the post is all about as one can
presume...
The good news is that there are two people testing and reporting bugs
with o9fs which is something every project needs since many times it is not
possible for the author to find every possible problem because of,
besides from other things, his/her own limited test environment.
So, thanks to Matthias Bauer and Christian Kellermann, the project is
again quite active.

iru
</pre>]]></description>
		</item>
		<item>
			<title>Final Update</title>
			<author>katelyn@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-09-25-1_Final_Update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-09-25-1_Final_Update</guid>
			<pubDate>Tue, 25 Sep 2007 03:25:46 +0200</pubDate>
			<description><![CDATA[<pre>I don't know if anyone is still reading this blog, but I wanted to write about
the outcome of my project, how GSoC went for me and my future plans related to
the project.

In case anyone reading this didn't know, I was working on Inferno
authentication, in particular the SPKI infrastructure for Inferno. I completed
the project successfully, and produced the following:

	- An implementation of Inferno authentication for Plan 9 and p9p
	- A SPKI verifier which can produce Inferno certificates
	- A SPKI version of keyfs which stores keys and certificates securely,
	  and allows these to be queried
	- A command which creates SPKI certificates to form part of a chain of
	  delegation of authority
	- I also adapted a program written by my mentor Charles to create a
	  module which performs SPKI reduction.

I'd like to say how GSoC was from the perspective of someone who was never
involved in open source development before. In general, I felt that GSoC went
well for me. I star...
</pre>]]></description>
		</item>
		<item>
			<title>Manual pages</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-31-1_Manual_pages</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-31-1_Manual_pages</guid>
			<pubDate>Fri, 31 Aug 2007 10:07:07 +0200</pubDate>
			<description><![CDATA[<pre>### manual pages

yesterday i wrote the missing manual pages for the [rabin](http://www.ueber.net/who/mjl/tmp/vvman/2/rabin.html) and [vac](http://www.ueber.net/who/mjl/tmp/vvman/2/vac.html) library, and also added some documentation to the [venti](http://www.ueber.net/who/mjl/tmp/vvman/2/venti.html) library.  it can also be found in the mercurial repository of course.
</pre>]]></description>
		</item>
		<item>
			<title>Say Hello to Angled 0.1!</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-22-1_Say_Hello_to_Angled_0.1!</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-22-1_Say_Hello_to_Angled_0.1!</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>I feel I'm in the seventh heaven. After a few sleepless nights struggling with Mozilla's XPCOM, I finally got the 9P Firefox plugin to work.

The plugin is called Angled (an anagram of [Glenda][1], the Plan 9 bunny) and is in a pretty simplistic state right now: you can read any files served by 9P right in your browser window. Let's take a step by step look.

First I startup [Inferno][2] to start a 9P server. ${INFERNO}/usr/anant/home is symlinked to my actual home directory, /Users/anant:

`[theghost anant]$ emu  
; runas nobody {listen -A tcp!localhost!1564 {export /usr/anant/home &}}  
`

Let's see what files are actually there:

`[theghost web9]$ pwd  
/Users/anant/Plan9/web9  
[theghost web9]$ ls  
README TODO js9p php9p  
`

Alright, I open my browser window and type 'ninep://localhost!1564/Plan9/web9/README' into the address bar. I could also say 'tcp!localhost!1564′, but TCP is the only protocol available for Angled, so it would be redundant. Now, for the goodies: Screenshots!

[![Read Text f...
</pre>]]></description>
		</item>
		<item>
			<title>Ventisrv fileformat</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-20-1_Ventisrv_fileformat</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-20-1_Ventisrv_fileformat</guid>
			<pubDate>Mon, 20 Aug 2007 12:32:34 +0200</pubDate>
			<description><![CDATA[<pre>### Ventisrv file format

A few minutes ago I added a document to the ventivac hg repository (doc/ventisrv-fileformat.ms, a troff -ms file) about the file format used by ventisrv.  The format is not very complex, the description should be enough to recover data in case of problems (such as disk failures, or bugs--though note that ventisrv will only ever append data to the index/data file, never overwrite it).  I also made the file available as [ventisrv-fileformat.ps](http://gsoc.cat-v.org/people/mjl/ventisrv-fileformat.ps) (original postscript) and [ventisrv-fileformat.pdf](http://gsoc.cat-v.org/people/mjl/ventisrv-fileformat.pdf) (converted to pdf).

Now getting back to finishing the last bits!
</pre>]]></description>
		</item>
		<item>
			<title>The end.</title>
			<author>nwf@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-08-20-1_The_end.</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-08-20-1_The_end.</guid>
			<pubDate>Mon, 20 Aug 2007 19:58:31 +0200</pubDate>
			<description><![CDATA[<pre>0. The QEMU-on-Plan 9 strategy paper has morphed, growing a lot more discussion of QEMU internals.
The latest version is available
<a href="http://gsoc.cat-v.org/people/nwf/paper-strategy-plus.pdf">here</a>.

1. Changes to libdynld are complete.  The tarball is 
<a href="http://gsoc.cat-v.org/people/nwf/dyngen-nwf.tgz">here</a>.  Some additional commentary is
available 
<a href="http://gsoc.cat-v.org/people/nwf/dynld.txt">here</a>.
</pre>]]></description>
		</item>
		<item>
			<title>FP Final Update</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-20-1_FP_Final_Update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-20-1_FP_Final_Update</guid>
			<pubDate>Mon, 20 Aug 2007 19:55:27 +0200</pubDate>
			<description><![CDATA[<pre>    I have done a snapshot of my code in a tar.gz file, I don't know how to upload this snapshot so I have copied this to my home dir in gsoc.cat-v.org. 

    Finally I have not success with the planning I'd done. Actually the plugin loads and runs libinit and emuinit, but fails while running disinit. I have translated the thread management to pthread, and the problem happens about the exception and error handler, I have problems when calling waserror(), I've seen in the IE plugin that it changes the exception handler, I think that I might do the same but I'm not sure about it.

    The error that I had with the free calls is solved, I was using the __clone proc to create threads, now I use pthread_create and it seems to solve the problem, now I have core dumps of the errors and I can use it to solve the problems.

    About the other goals of the project the status is:

 - Dis files to execute: It's easy to transfer files from Mozilla to the plugin, so I can use it to load a dis file into the plugin and run it, I don't know if I can use the dis file as the imod param...
</pre>]]></description>
		</item>
		<item>
			<title>Plan9 Kernel Booting on OLPC</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-19-1_Plan9_Kernel_Booting_on_OLPC</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-19-1_Plan9_Kernel_Booting_on_OLPC</guid>
			<pubDate>Sun, 19 Aug 2007 14:14:44 +0200</pubDate>
			<description><![CDATA[<pre>Finally we have Plan9 kernel up and running on OLPC !
Here is the screen shot

<br>
<center><a href="http://gsoc.cat-v.org/projects/OLP9C/files/plan9-olpc.jpg"><img src="http://gsoc.cat-v.org/projects/OLP9C/files/plan9-olpc.jpg" width="500" height="400"></a></center>
<br>

</pre>]]></description>
		</item>
		<item>
			<title>Implementing a Protocol in Mozilla</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-18-1_Implementing_a_Protocol_in_Mozilla</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-18-1_Implementing_a_Protocol_in_Mozilla</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>Creating a Firefox extension is nothing short of an adventure. I was able to get started pretty quickly, thanks to [this][1] web-based quick-start wizard, all the boilerplate code was generated in literally no time.

Now, onto the actual functionality of the extension. I have to implement a protocol handler for the 9P protocol, which essentially means you type in "ninep://sources.cs.bell-labs.com/" and start reading files right off the browser window. (ninep:// because a URL can't start with a number)

[This][2] page provides some useful insights and code snippets on the subject of adding a new protocol handler. I was able to get as far as displaying a Glenda image whenever you type in a URL beginning with 'ninep'.

The way this works is you create an XPCOM component th...
</pre>]]></description>
		</item>
		<item>
			<title>Fixing OLPC Crash Problem</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-16-2_Fixing_OLPC_Crash_Problem</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-16-2_Fixing_OLPC_Crash_Problem</guid>
			<pubDate>Thu, 16 Aug 2007 18:37:33 +0200</pubDate>
			<description><![CDATA[<pre>Today I fixed OLPC crash problem.
Problem is with lowraminit() function in memory.c
Plan9 reads BIOS data area to figure out free memory below 640 K.
But since OLPC doesn't have a PC BIOS, I have modified the OLPC 
loader to write to BIOS data area that 639 KB is free.

Also I have updated x86amd table in devarch.c
I have added Geode-LX processor entry to this table.
So that Plan9 will be able to detect Geode processor correctly.
</pre>]]></description>
		</item>
		<item>
			<title>Automated boot script for Plan9 Kernel</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-16-1_Automated_boot_script_for_Plan9_Kernel</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-16-1_Automated_boot_script_for_Plan9_Kernel</guid>
			<pubDate>Thu, 16 Aug 2007 14:01:01 +0200</pubDate>
			<description><![CDATA[<pre>I have created a small forth boot script to automate
booting of plan9 kernel on OLPC.
You need to create /boot directory on USB thumb drive and 
copy [olpc.fth][1] to /boot.

Once open firmware sees disk:/boot/olpc.fth file it will
execute this script as part of its automated boot sequence.

[1]:http://gsoc.cat-v.org/projects/OLP9C/files/olpc.fth
</pre>]]></description>
		</item>
		<item>
			<title>speaksfor</title>
			<author>katelyn@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-08-15-1_speaksfor</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-08-15-1_speaksfor</guid>
			<pubDate>Wed, 15 Aug 2007 22:47:05 +0200</pubDate>
			<description><![CDATA[<pre>Today I completed the speaksfor program. This is an Inferno command which will
be used to create a SPKI certificate which forms part of a SPKI "speaksfor"
chain of delegation of authority. It works like this: the command can be invoked
as

	speaksfor S I [T] [V]

where S is the Subject, I is the Issuer, T is an optional tag and V is the
optional validity of the certificate. Then a certificate is created which states
that Subject S may now speak on behalf of Issuer I regarding the things in the
tag T (by default the Subject may speak for I regarding everything). In other
words, I delegates part of its authority to S.

In practical terms, currently S is the name of a public key stored in keyfs
which I spoke about last time, and I is a public/private key pair read from a
file. The Issuer I then signs the certificate with its private key. Although it
isn't essential for my project, I'd like to extend speaksfor so that it can also
produce name certificates, which would be used to verify that a user is a member
of a grou...
</pre>]]></description>
		</item>
		<item>
			<title>mset</title>
			<author>dhains@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-15-1_mset</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-15-1_mset</guid>
			<pubDate>Wed, 15 Aug 2007 02:21:40 +0200</pubDate>
			<description><![CDATA[<pre>
Just checked in mset, nothing to do really with gsoc, just a quick little mandelbrot set viewer I wrote while learning limbo earlier this year.  At the most, it might be useful as yet another tk/graphics example, but it's fun to play around.
Once I get some spare time I'd like to add some color cycling for fun, some text elements to display the cursor position on the complex plane and the generation of the julia set for a given point on the plane.
</pre>]]></description>
		</item>
		<item>
			<title>Update</title>
			<author>nwf@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-08-14-1_Update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-08-14-1_Update</guid>
			<pubDate>Wed, 15 Aug 2007 01:27:05 +0200</pubDate>
			<description><![CDATA[<pre>Long time, no update.  Sorry about that.

0. The QEMU-on-Plan 9 strategy paper has morphed, growing a lot more discussion of QEMU internals.
The latest version, which is still a draft (and therefore contains some FIXME notes, sorry) is available
<a href="http://gsoc.cat-v.org/people/nwf/paper-strategy-plus.pdf">here</a>.

1. Changes to libdynld are complete.  The tarball is 
<a href="http://gsoc.cat-v.org/people/nwf/dyngen-nwf.tgz">here</a>.  Some additional commentary
on these changes is forthcoming.

2.  With all of this in place, and QEMU's 386 target micro-ops library compiling, my dyngen can emit
the right kind of code for the dynamic translator.  Some comparison is available
<a href="http://gsoc.cat-v.org/people/nwf/plan9-dyngen-first-run.txt">here</a>.
</pre>]]></description>
		</item>
		<item>
			<title>OLPC plan9 kernel Changes</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-14-1_OLPC_plan9_kernel_Changes</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-14-1_OLPC_plan9_kernel_Changes</guid>
			<pubDate>Tue, 14 Aug 2007 19:07:08 +0200</pubDate>
			<description><![CDATA[<pre>Following files are added to /sys/src/9/pc/ which add EGA emulation on top of OLPC linear frame buffer.

font_sun12x22.h<br>
lfbgeometry.h<br>
lfbega.c<br>
olpc-egainit.c<br>
olpc-egalib.c<br>
olpc-ega.h

Following files are modified :

l.s - Here we need to make a new 4 MB page table entry for
mapping OLPC's linear framebuffer. Also instead of calling `main`, `olpc_display_init` is called which prints Plan9 on screen using
EGA emulation code. After that HLT is called so that machine 
won't reboot.

mkfile - Added entries for new EGA code.
</pre>]]></description>
		</item>
		<item>
			<title>Fiddling with Binary in JavaScript</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-13-1_Fiddling_with_Binary_in_JavaScript</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-13-1_Fiddling_with_Binary_in_JavaScript</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>Since ordinary JavaScript cannot directly communicate with a 9P server (over TCP), we decided to go in for a 2-tier approach: A script on the client generates a 9P message which is sent to a server via an XMLHttpRequest. The server then forwards the message to the actual 9P server. Messages from the 9P server to the client are sent in a similar fashion.

All 9P messages are just binary sequences, which means I need some way of representing a 9P message in JavaScript. A character is always 1 byte, so representing characters is not a problem. For representing integers in binary I use the following snippet of code:

`while(num) {  
str[str.length] = String.fromCharCode(num % 256);  
num = Math.floor(num / 256);  
}  
`

where 'num' is the number to be encoded, and str is returned as: str + join("").

This means I can now encode any 9P message as a simple sequence of JavaScript strings. The final string can then be sent al...
</pre>]]></description>
		</item>
		<item>
			<title>FP update</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-13-1_FP_update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-13-1_FP_update</guid>
			<pubDate>Mon, 13 Aug 2007 18:14:41 +0200</pubDate>
			<description><![CDATA[<pre>Process management is all right. I have used pthreads in order to execute inferno's main in a thread while the main thread still runs as a plugin. Emuinit loads, but Firefox crashes when the ksetenv function is called, now I have comment the calls to ksetenv. A proc is created to execute disinit, I'm trying to trace if this disinit is running ok. Kproc works and everything seems to be ok but ksetenvs.

Then I will work in the console, I want to let emu paint the console in the firefox window (using X11), I hope to achieve it tomorrow.
</pre>]]></description>
		</item>
		<item>
			<title>FIREFOX PLUGIN UPDATE</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-12-1_FIREFOX_PLUGIN_UPDATE</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-08-12-1_FIREFOX_PLUGIN_UPDATE</guid>
			<pubDate>Sun, 12 Aug 2007 19:21:13 +0200</pubDate>
			<description><![CDATA[<pre>Inferno Plugin update

I have had many problems with the memory management due to the fact that the plugin is loaded as a shared library. This implies that when the inferno code calls to malloc/free/realloc it calls the malloc/free/realloc functions from libc instead the malloc/free/realloc functions defined in alloc.c. This happens because the plugin is a shared library, and when the inferno code calls malloc, it finds the libc malloc before the inferno's malloc redefinition, idem with free and realloc.

In order to solve this issue I renamed malloc, free and realloc from alloc.c to imalloc, ifree and irealloc, writing the preprocessor directives in fns.h:

    #define malloc(s) imalloc(s)
    #define free(l) ifree(l)
    #define realloc(v,s) irealloc(v,s)


But this result in another problem, there are calls to ifree where its argument is not a memory reference reserved by imalloc, and when it tries to free this memory an "not in pools" error ocurrs. In order to find  where there is ifree calls to free memory reserved by libc malloc instead inferno imalloc I have used the ElectricFence library (thanks Chris), putt...
</pre>]]></description>
		</item>
		<item>
			<title>cocytus update</title>
			<author>dhains@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-11-1_cocytus_update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-11-1_cocytus_update</guid>
			<pubDate>Sat, 11 Aug 2007 03:20:58 +0200</pubDate>
			<description><![CDATA[<pre>
Past few days have been fairly unproductive due to having a few orientation days for school.  This weekend I plan to devote to gsoc, once I see how much I can get down over the weekend, I'll have a good idea of what needs to be done/if completing the project is possible/ etc. on Monday.  I'll update over the weekend and then give a detailed post on Monday describing what is done, what needs to be done, and whether or not I think it's possible to complete.
</pre>]]></description>
		</item>
		<item>
			<title>Booting plan9 on OLPC</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-10-1_Booting_plan9_on_OLPC</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-10-1_Booting_plan9_on_OLPC</guid>
			<pubDate>Wed, 15 Aug 2007 18:25:15 +0200</pubDate>
			<description><![CDATA[<pre>Finally Plan9 kernel is up and running on OLPC !!

Here is the complete procedure to boot plan9 on OLPC:

1. You will need a USB thumb drive and OLPC laptop (of course).

2. Following 3 files are needs, which should be stored on USB drive.

   a. [plan9.ini][1]  : plan9 configuration file <br>
   b. [9pcf][2]       : plan9 kernel <br>
   c. [loader.elf][3] : Bootloader which loads plan9 kernerl (9pcf) on OLPC 

3. When you start the OLPC laptop, you need to interrupt the boot sequence to
   go to open firmware (OFW) command prompt. Here is the procedure:

   a. Hold down the Game key when machine starts. <br>
   b. When asked (on screen) release the game key, after releasing it, 
      OFW will start probing for hardware. <br>
   c. After finishing the probing, OFW will ask you to press Esc key 
      within 3 seconds. Once you press Esc then you will land up to
      OFW command prompt.

4. To check files on attached thumb drive execute following command, <br>
   `dir disk:\`

5. Execute following command to boot loader...
</pre>]]></description>
		</item>
		<item>
			<title>Swapping Endian-ness in JavaScript</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-09-1_Swapping_Endian-ness_in_JavaScript</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-08-09-1_Swapping_Endian-ness_in_JavaScript</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>My [mentor][1] came up with two interesting ways of swapping [endian-ness][2] on JavaScript. The first one he proposed was based on what was "usually done in Plan 9″, something along the lines of:

`b = "\1\1\1\2";  
n = (b.charCodeAt(0) & 0xff) << 24;  
n += (b.charCodeAt(1) & 0xff) << 16;  
n += (b.charCodeAt(2) & 0xff) << 8;  
n += (b.charCodeAt(3) & 0xff);  
`

…which gives us n = 16843010.

Maht then had a look at the series of JavaScript [lectures][3] by [Douglas Crockford][4] at Yahoo!. The first of the series tells us that bit shifting is not faster than simple multiplication. Maht gave me this code snippet doing the same conversion, but using multiplication instead of bit shifts this time:

`b = "\1\1\1\2";  
n = b.charCodeAt(0) * 16777216;  
n += b.charCodeAt(1) * 65536;  
n += b.charCodeAt(2) * 256;  
n += b.charCodeAt(3) * 1;  
`

n, is of course 16843010; the real question is how much longer (or, shorter) did this take.

[Venkman][5] is probably one of the more mature "old-school" JavaScript debuggers out there. [FireBug][6], the relatively modern sibling to Venkman certainly has a few nifty features, but profiling is not one of its strong points. After failing to profile the script in FireBug, I used...
</pre>]]></description>
		</item>
		<item>
			<title>Inferno SPKI</title>
			<author>katelyn@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-08-08-1_Inferno_SPKI</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/katelyn/blog/2007-08-08-1_Inferno_SPKI</guid>
			<pubDate>Wed, 08 Aug 2007 19:22:29 +0200</pubDate>
			<description><![CDATA[<pre>This is my first post on here, and I guess it is about time I posted some news
on my project. My project involves extending the SPKI infrastructure of Inferno
by implementing various file servers and commands. Using SPKI for authentication
improves scalability and provides a way to define group membership using the
"speaks-for" relationship with SPKI certificates.

The first part of my project was not actually related to SPKI, and involved
adding support for Inferno authentication to the factotum of Plan 9 and p9p. I
completed a basic implementation of this, although it would benefit from further
testing.

I then wrote a SPKI verifier. The verifier is implemented as a file server using
file2chan, and accepts a SPKI certificate sequence as input. If the sequence is
verified correctly, the verifier then serves a file containing an Inferno
certificate which can be used to access services.

Right now I am working on a SPKI version of keyfs for Inferno. This keyfs stores
SPKI keys and certificates securely ...
</pre>]]></description>
		</item>
		<item>
			<title>Plan9 kernel image format</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-07-2_Plan9_kernel_image_format</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-07-2_Plan9_kernel_image_format</guid>
			<pubDate>Tue, 07 Aug 2007 21:21:47 +0200</pubDate>
			<description><![CDATA[<pre>Today I decided to leave plan9 ELF booting effort.
Plan9 linker's ELF output is not correct. This is creating
lot of problems. 

So now I am going to write custom boot loader for plan9's kernel.

First thing i need to do is to understand plan9 kernel's format.

Here is the information that i got from a.out.h:

	struct  Exec
	{
		long    magic;          /* magic number */
		long    text;           /* size of text segment */
		long    data;           /* size of initialized data */
		long    bss;            /* size of uninitialized data */
		long    syms;           /* size of symbol table */
		long    entry;          /* entry point */
		long    spsz;           /* size of pc/sp offset table */
		long    pcsz;           /* size of pc/line number table */
	};

I wrote a simple C program to read plan9 kernel image
and print above information from it.

Kernel file image size = text + data + syms + spsz + pcsz

Also another important thing that I found out is that, this header
is in big endian format...
</pre>]]></description>
		</item>
		<item>
			<title>cocytus update</title>
			<author>dhains@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-07-1_cocytus_update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-07-1_cocytus_update</guid>
			<pubDate>Tue, 07 Aug 2007 09:06:32 +0200</pubDate>
			<description><![CDATA[<pre>
Have implemented some of the data structures...not 100% it has everything needed, but will know as soon as the styx operations are implemented which is the next step.  Will begin tomorrow with the fundamental, i.e. read/open/walk.  This should give a good feeling for whether or not everything is working as it should and if the data structures are sufficient.  Write will then be implemented once I am sure the basics are working properly.  A semi-rough timeline would be to get the read/open/walk operations done by Wed-Thurs, then have write working by the end of the week.
</pre>]]></description>
		</item>
		<item>
			<title>Mmu setup problem for kernel startup</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-07-1_Mmu_setup_problem_for_kernel_startup</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-07-1_Mmu_setup_problem_for_kernel_startup</guid>
			<pubDate>Tue, 07 Aug 2007 09:53:57 +0200</pubDate>
			<description><![CDATA[<pre>By default plan9 kernel's text section starts at 0xF0100020 which
is around virtual address 3841 MB. 9load loads kernel at
physical address 0x100020, and then kernel sets up correct memory
mappings using paging.

For OLPC we are using ELF format. OLPC's open firmware determines
start address of ELF's txt section from ELF header. If we compile
kernel in ELF format and ask linker to link its txt section at
0xF0100020 address, then OFW gives page fault, since this address
is not present physically and its not mapped in current page tables.

I am linking ELF kernel at physical address 0x100020. So its
loaded correctly by OFW loader. But once control is transferred to
plan9 kernel, kernel code expects all address above 0xF0100020.
So this is the main problem which needs to be solved.


</pre>]]></description>
		</item>
		<item>
			<title>cocytus update</title>
			<author>dhains@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-06-1_cocytus_update</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-06-1_cocytus_update</guid>
			<pubDate>Mon, 06 Aug 2007 07:03:47 +0200</pubDate>
			<description><![CDATA[<pre>Have the styxserver running, Basically used vacfs as the template for sending and receiving styx messages.  Right now is basically just a skeleton for the file server.  Am working now on implementing the various operations which will need to be performed on the venti side, i.e. this will be the mapping of the styx messages to the venti operations.  Also the data structures invovled are being implemented as well, this step is being done before the operations.  The vac and venti libraries contain some basic structures which will be used, but I will need to implement some things ot keep track fo the modified/unmodified states of the blocks.
</pre>]]></description>
		</item>
		<item>
			<title>Rabin fingerprints</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-06-1_Rabin_fingerprints</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-08-06-1_Rabin_fingerprints</guid>
			<pubDate>Mon, 06 Aug 2007 16:47:47 +0200</pubDate>
			<description><![CDATA[<pre>### rabin fingerprinting

I have been a bit quiet, time to bring some news!  Quite a bit has
happened since the previous post.  The most important change is the new
rabin fingerprinting code which can now be used by vacput, vacget and vacfs
to split blocks not at fixed byte offsets, but at content boundaries.
This code for rabin fingerprinting has actually been in the hg repository
for some time, but I recently changed a few of the parameters making
the block boundaries much better and hadn't yet explained it.  So that's
what is post is about.

#### the algorithm

The rabin fingerprinting algorithm calculates a rolling checksum over
data (a file to store in venti).  The window of the data to look at
is configurable, but typically a few dozen bytes long.  The rabin
module will read through a file, and let the window "slide" over the
data, recalculating the fingerprint each time when advancing a byte.
When the fingerprint assumes a special value, the rabin module considers
the corresponding window position...
</pre>]]></description>
		</item>
		<item>
			<title>Faulty Page Fault Handler</title>
			<author>gammal@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/gammal/blog/2007-08-05-1_Faulty_Page_Fault_Handler</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/gammal/blog/2007-08-05-1_Faulty_Page_Fault_Handler</guid>
			<pubDate>Sun, 05 Aug 2007 04:14:02 +0200</pubDate>
			<description><![CDATA[<pre><p>
I'm still puzzled by the <b><i>“hw tlb loading disabled w/o sw loading available”</i></b> warning displayed b...
</pre>]]></description>
		</item>
		<item>
			<title>back</title>
			<author>iru@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-08-02-1_back</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-08-02-1_back</guid>
			<pubDate>Thu, 02 Aug 2007 20:26:23 +0200</pubDate>
			<description><![CDATA[<pre>Working on o9fs has teached me many more things that I can count, but surely one of the most precious are the real need for simple code. Having no internet for almost two weeks, man pages and source code have been my best friends on the learning process. It could have been a real pain if I wasn't hacking on clean and simple 9P and, even being a unix-like os, the OpenBSD kernel. Even if some people don't like to hear this, good code *is* documentation.

On the technical part the communication framework is almost totally finished and it's pretty usable. The filesystem can mount, resolve names (lookup was such a pain to get 'right'), open, and close files. Next step is working  on Tread related stuff such as read (duh!) and readdir. I spent a great deal of time thinking about how directories should be implemented when the simplest way was obvious: a list of fids.

Before going on th...
</pre>]]></description>
		</item>
		<item>
			<title>Update on the cocytus file server:</title>
			<author>dhains@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-02-1_Update_on_the_cocytus_file_server:</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/dhains/blog/2007-08-02-1_Update_on_the_cocytus_file_server:</guid>
			<pubDate>Thu, 02 Aug 2007 22:51:47 +0200</pubDate>
			<description><![CDATA[<pre>
I've been somewhat of a recluse this summer, so for those of you who don't know, this project aim is to implement a read/write filesystem for Inferno with a Venti backend.
The next few days I will be dissecting vacput (A nice tool written by Oksel) into a lib as it does somethings that we need in the fs, and it is deemed quicker then writing this same functionality from scratch.  Once this is complete we will integrate this lib into a styx server (the fs) and make the appropriate mappings between styx calls and the lib.
The end product should be a fs which mounts a venti root, caches modified blocks in memory until a time that it will sync these modified blocks back to the venti server.  You can think our fs as an overlay for the traditional venti block pointer heirarchy, only it can point to either locally cached modified blocks or pure venti blocks.
</pre>]]></description>
		</item>
		<item>
			<title>Post-mid-term changes</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-08-02-1_Post-mid-term_changes</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-08-02-1_Post-mid-term_changes</guid>
			<pubDate>Thu, 02 Aug 2007 02:24:28 +0200</pubDate>
			<description><![CDATA[<pre>First of all, I want to thank all the students and mentors who have worked hard
to make this GSoC successful.

The mid-term evaluations are over, and there are both good and bad news and
some important changes on how we are going to work from now on.

The good news: some projects have made amazing progress and are well underway
to archive their main goals, congratulations to everyone who got this far.

The bad news: many projects are way behind schedule, and what is worse, due to
lack of open communication it is impossible to estimate what their exact status
is and what changes need to be made to bring them back on track.

During the first half of GSoC everyone got a free hand to organize their
projects in any way they wanted, no requirements were made and there was no
control of how projects were going.

It was probably naive to assume things would work out fine this way, but it
probably was a lesson we needed to learn.

Starting next week every project should at least follow this basic requirements:


* Students should post to their blog or in this list at least twice a week ...
</pre>]]></description>
		</item>
		<item>
			<title>9load page table setup</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-02-1_9load_page_table_setup</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-08-02-1_9load_page_table_setup</guid>
			<pubDate>Thu, 02 Aug 2007 19:49:35 +0200</pubDate>
			<description><![CDATA[<pre>Today i read the code in 9load's l.s file.
I wanted to get information about the way 9load
sets up paging for plan9 kernel. 

I figured out that 9load turns on paging.
It identity maps first 16 MB of memory to 2 GB and above it.

I find this quite odd, normally bootloader never uses 
paging, when kernel gets control it sets up the page tables.

Now my next task is to check the startup code in kernel,
and figure out how it uses this mapping, and if possible
remove dependency from 9loads memory mapping.

</pre>]]></description>
		</item>
		<item>
			<title>Cell Memory Management</title>
			<author>gammal@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/gammal/blog/2007-07-29-1_Cell_Memory_Management</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/gammal/blog/2007-07-29-1_Cell_Memory_Management</guid>
			<pubDate>Sun, 29 Jul 2007 03:47:31 +0200</pubDate>
			<description><![CDATA[<pre>
<p>Several bugs have been identified and fixed in the MMU code. Although the first user process still dies prematurely. I hope that we're close to finding the remaining issues. The simulator output has been very useful, although it's really a tedious task having to single-step through long runs of instructions to find where things go wrong.</p>
<p></p>
<p>Most changes have been done in l.s, an assembly file containing processor initialization code &amp; other essential functions, and mmu.c, which has the MMU code specific to the Cell BE. This is a brief summary of the issues that were solved so far:</p>
<p></p>
<ul>
  <li>As an enhancement, l.s now uses the TLBIA instruction to invalidate the whole TLB, instead of looping through all entries. This is both smaller &amp; faster.</li>
  <li>The simulator was producing warnings about bad values used in specifying the TLB way. I found that a bit-mask used to specify the way had an invalid value.</li>
  <li>We're software-managing the TLB, and I found that in certain places, inconsistency is crea...
</pre>]]></description>
		</item>
		<item>
			<title>init</title>
			<author>iru@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-07-26-1_init</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/iru/blog/2007-07-26-1_init</guid>
			<pubDate>Tue, 26 Jun 2007 20:25:16 +0200</pubDate>
			<description><![CDATA[<pre>
hello, 9.

this is my first post and i'm happy to announce my initial commit to the
o9fs repo. the code is not as clean as i want it to be.

this initial commit brings a new virtual filesystem which issues a 
Tversion message and fake a mount point. after finishing the
communication framework i can get back to the real point (i.e. 9P and
vfs).
if anybody is wiling to give it a try (i doubt it) send me an email
at iru.muzgo!gmail asking for instructions on how to install it.
</pre>]]></description>
		</item>
		<item>
			<title>Mapping 9P to REST</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-26-1_Mapping_9P_to_REST</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-26-1_Mapping_9P_to_REST</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>Now that the PHP bindings to libixp are somewhat usable, I've moved on to the JavaScript portion of my project. The first (and easier!) part of it is to map 9P to a RESTful scheme, so traditional web developers can use 9P without having to learn anything new.

The PHP bindings to libixp was an important pre-requisite to achieve this: presenting a REST interface to an existing 9P serve would require a "bridge" at the middle, to convert REST requests to 9P requests and vice-versa with responses. This "bridge" may be present at any location that is mutually accessible by the client wanting RESTful access and the server providing the 9P service. This bridge can be easily coded in PHP using the new libixp bindings.

To those not...
</pre>]]></description>
		</item>
		<item>
			<title>B4 Laptop Arrived</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-18-1_B4_Laptop_Arrived</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-18-1_B4_Laptop_Arrived</guid>
			<pubDate>Wed, 18 Jul 2007 21:41:36 +0200</pubDate>
			<description><![CDATA[<pre>Today I got the B4 laptop.
Its very fast compared to previous B1 machine.
OLPC is making impressive progress.

I also completed reading about paging and plan9
compiler and assembler papers.

</pre>]]></description>
		</item>
		<item>
			<title>Things to do next</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-12-2_Things_to_do_next</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-12-2_Things_to_do_next</guid>
			<pubDate>Thu, 12 Jul 2007 21:13:54 +0200</pubDate>
			<description><![CDATA[<pre>I found out that plan9 kernel startup point is in l.s file.<br>
9load enables paging and maps first 16 MB of RAM identity mapped.<br>
OFW doesn't support this. Also plan9 assembly is somewhat different than GNU or Intel assembly. Looking at this issue I think I need to read following things first before proceeding further:

1. Paging - Page Tables Setup etc.
2. How to use Plan9 C compiler - Rob Pike
3. A Manual for Plan9 assembler - Rob Pike
</pre>]]></description>
		</item>
		<item>
			<title>Open Firmware Client Interface Information</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-12-1_Open_Firmware_Client_Interface_Information</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-12-1_Open_Firmware_Client_Interface_Information</guid>
			<pubDate>Thu, 12 Jul 2007 11:47:51 +0200</pubDate>
			<description><![CDATA[<pre>While handling control to Operating System; OFW passes address of client interface handler in register EAX. So in Plan9 kernel we need to copy this value from EAX and store it in a variable. And we need to do this before somebody else overwrites EAX register.

Rules for making OFW client interface call from Operating System:

1. CS nad DS selectors should point to flat 4GB segments.
2. EAX should contain pointer to argument array.
3. On return from OFW, EAX contains return value.

</pre>]]></description>
		</item>
		<item>
			<title>Baby dyngen.</title>
			<author>nwf@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-07-11-1_Baby_dyngen.</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-07-11-1_Baby_dyngen.</guid>
			<pubDate>Wed, 11 Jul 2007 03:42:41 +0200</pubDate>
			<description><![CDATA[<pre>Substantive (if demo quality) progress has been made on the dynamic code
translator, dyngen.  Some demo code is available <a
href="http://gsoc.cat-v.org/people/nwf/dyngen-demo.tgz">here</a> (requires
upstream dynld code, mirrored <a
href="http://gsoc.cat-v.org/people/nwf/dynld.tgz">here</a>).  Commentary about
the demo, dyngen, and next steps has been shunted to <a
href="http://gsoc.cat-v.org/people/nwf/dyngen-demo.html">another file</a> so as
not to clog the blog page.

Some updates have been made to the <a
href="http://gsoc.cat-v.org/people/nwf/paper-strategy.pdf">strategy paper</a>
to talk about a new translation buffer strategy (thanks to Eckhardt) and say a
bit more about dynld, including discussion of an extension to make the
immediate value folding dance easier for dyngen.

</pre>]]></description>
		</item>
		<item>
			<title>First OLPC Program</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-10-2_First_OLPC_Program</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-10-2_First_OLPC_Program</guid>
			<pubDate>Tue, 10 Jul 2007 15:23:55 +0200</pubDate>
			<description><![CDATA[<pre>To check whether a program compiled using Plan9's compiler works on OLPC
I wrote following program. This program fills OLPC's screen with Blue color.

    void
    _main(void)
    {
    	int i=0;
    	unsigned short *fb = (unsigned short *) 0xfd000000;
    	for(i=0; i<1200*900;i++)
    	{
    		*fb = 0x0015U
    		fb++;
    	}
    }


Here linear frame buffer start address is 0xfd000000.<br>
OLPC Screen Resolution is 1200x900.<br>
Color Depth is 16 bits.<br>
0x0015U is value for Blue color.<br>

I compiled this program using following commands,

    8c color.c
    8l -H5 -T0x100000 color.8

I got __8.out__ which was in ELF format. I wanted OLPC's open firmware
to load this executable at 1MB so I gave -T0x100000 option to 8l.

To execute this program, copy it to USB disk. Attached this USB disk to OLPC and boot the laptop. You need to p...
</pre>]]></description>
		</item>
		<item>
			<title>Plan9 Tips</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-10-1_Plan9_Tips</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-10-1_Plan9_Tips</guid>
			<pubDate>Tue, 10 Jul 2007 14:49:17 +0200</pubDate>
			<description><![CDATA[<pre>I want to documents some tips here, which are quite useful.

Copying files from Plan9 to Linux using floppy:<br><br>
Create a 1.44 MB floppy image in linux, format it with FAT FS. Use it as 1st floppy disk in qemu. <br>In Plan9, use following commands to access it:<br>
`a:`<br>
`cd /n/a:`

Editing plan9.ini configuration file:<br><br>
Type following command in Plan9,<br>
`9fat:`<br>
`cd /n/9fat`

Command to reboot / halt the system: `reboot fshalt`

For PC 386:<br>
8c - is the C compiler<br>
8a - is the assembler<br>
8l - is the linker<br>

One typically needs to add u.h and libc.h files as headers for C programs.

Important linker options for 8l are: <br>
-H5        = Output is generated with ELF header <br>
-l         = Suppress default loading of startup files. <br>
-T0x100000 = Loads Text section at 1MB 

Default Entry symbol is `_main`

Default Plan9 kernel configuration for PC is `pcf`

Procedure for Compiling kernel:<br>
`cd /sys/src/9/pc` <br>
`mk 'CONF=pcf'`

To compile kernel in ELF format I modified `/sys/src/9/pc/mkfile` ...
</pre>]]></description>
		</item>
		<item>
			<title>Herald the PHP 9P Client</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-09-1_Herald_the_PHP_9P_Client</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-09-1_Herald_the_PHP_9P_Client</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>I've given a few final touches to the 9P client for PHP. All the basic stuff should work (if they don't please let me know!), and I've written a script that shows some of the basic functionality that the client offers. Two actually, [this one][1] for the CLI SAPI and [this one][2] for the Apache2 SAPI. All they do is read files and show directory listings, but the scripts are a good place to see what the API is like, since there's no official documentation yet. I couldn't locate a proper PHP 5 server to actually host the second example, which would have been cool… but now we'll just have to make do with these screenshots I took off my browser (with the script running on my local Apache):

* * *

[  
![Startup Screen][3]][3]  


* * *

Once you've put in the address, you'll get a directory listing of the root:

* * *

[  
![Viewer][4]][4]  


* * *

While the CLI SAPI demo script also handles binary files quite well, this one will just send gibberish to your screen if you click on a binary file (text files work fine though). I'm still trying to figure out what's the best way of determining the MIME type of a file so I can send the appropriate HTTP header before transmitting the data itself,  so your browser would know how to interpret it. As for the server-side of things, the code is still in a state of flux and I'm not decided on what kind of API to offer. I'll probably take a break from this part of the project and move on the JS bindings, and then come back to tie this up in the end. That's not to ...
</pre>]]></description>
		</item>
		<item>
			<title>Hello</title>
			<author>ameya@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-08-1_Hello</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/ameya/blog/2007-07-08-1_Hello</guid>
			<pubDate>Sun, 08 Jul 2007 18:22:29 +0200</pubDate>
			<description><![CDATA[<pre>This my first post !

*Hello* _World_ !!!
</pre>]]></description>
		</item>
		<item>
			<title>Some more on Object Oriented PHP Extensions</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-06-1_Some_more_on_Object_Oriented_PHP_Extensions</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-07-06-1_Some_more_on_Object_Oriented_PHP_Extensions</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>Hopefully this is the last of [the][1] [series][2] on Object Oriented PHP Extensions. We left the last post with a question of how to create objects of a certain class in a method of another. This is especially relevant to the libixp extension, since classes like IxpStat, IxpQid and IxpCFid don't have any constructors of their own, but are rather returned by methods of the IxpClient class. For example, an _open()_ on IxpClient returns a IxpCFid, and the IxpQid is a property of the IxpStat and IxpCFid classes.

How do we get this to work? The helpful folks at #php.pecl on EFNet pointed me to a few [examples][3] in the existing PHP codebase that do this. First, you need to initialize an object - which essentially involves:

  * Calling _ALLOC_ZVAL_ on the zval.
  * Setting the type to OBJECT using _Z_TYPE_P_.
  * Calling _object_init_ex()_, which in turn will call the corresponding _create_object_ method for the class entry.
  * Setting the object's _refcount_ to 1.

Once you've done this, most often you'd need to set up certain properties on the class object. In libixp's case, we need to populate IxpStat's, IxpCFid's or IxpQid's properties. You can create a method to populate each classes properties. I use a set of _PROP_SET_*_ macros to update properties correctly. Check out the [code][4] to clear things up - _object_instantiate()_ is the generic method for allocating memory for a object, and the _PHP_*_initialize()_ set of methods set properties for particular classes. These functions are...
</pre>]]></description>
		</item>
		<item>
			<title>Now what</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-07-03-1_Now_what</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-07-03-1_Now_what</guid>
			<pubDate>Tue, 03 Jul 2007 19:54:02 +0200</pubDate>
			<description><![CDATA[<pre>Once I have a plugin structured program I have to load the VM with it. In order to do it I've written a 'firefox' configuration file, it's a copy of 'emu' configuration file but I've modified it introducing the flags and path's (include's) that it needs to compile inferno as a plugin.
First I modify the mkfile and write a new variable "PLUG", then I put this new variable in the compilation objectives (OBJ variable), I put the 'firefox' config file in the CONFLIST, and I redefine the PLUG variable in 'firefox' so that PLUG point to the plugin structure code files. Then I have a shared object lib of 5 MB where the emu VM and the plugin structured program live together.

Now Mozilla can use this lib, and the plugin loads, on the other hand, emu is not running, it's only loaded but not running.

I could try to run emu writing a mainplugin procedure which is called from the plugin init cycle. This mainplu...
</pre>]]></description>
		</item>
		<item>
			<title>Lets talk about plugins</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-06-27-2_Lets_talk_about_plugins</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-06-27-2_Lets_talk_about_plugins</guid>
			<pubDate>Wed, 27 Jun 2007 22:22:57 +0200</pubDate>
			<description><![CDATA[<pre>Ok, let's talk about plugins,

Firefox plugins are written using the NPAPI (Gecko Plugin API: http://developer.mozilla.org/en/docs/Gecko_Plugin_API_Reference), Mozilla provides an SDK and API in order to let programmers who want to build plugins build it without needing of the entire mozilla source code tree, you can get it here (http://developer.mozilla.org/en/docs/Gecko_SDK). there are a lot of documentation right there, however most of these docs are incomplete. You can find examples and tests of using the npapi (http://developer.mozilla.org/en/docs/Plugins:_Samples_and_Test_Cases).

If I have to be honest, I couldn't even compile these examples without errors, I don't know if I'm a little bit clumsy... Then, what did I do? Well, the npapi is in C++ with O.O. and I want C pure, then I get the SDK and I write my own NPAPI interface, I write a C version of the needed files, based on the Gecko Plugin API Reference.

I wrote two files, "npn_gate.c" and "npp_gate.c", these f...
</pre>]]></description>
		</item>
		<item>
			<title>Getting Inferno-Synth Up and Running</title>
			<author>devin@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/devin/blog/2007-06-27-1_Getting_Inferno-Synth_Up_and_Running</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/devin/blog/2007-06-27-1_Getting_Inferno-Synth_Up_and_Running</guid>
			<pubDate>Sat, 26 Apr 2008 01:02:56 +0200</pubDate>
			<description><![CDATA[<pre>OMG Update!
===========

Yes, ladies and gentlemen, an update!  I will skip the pleasantries and announce, for the second time, I will be posting some updates on the development of [inferno-synth](http://code.google.com/p/inferno-synth).  Perhaps this post is a little premature given I don't even have inferno on this machine yet.  However, I'll be into the mix soon enough.

Cheers,
D
</pre>]]></description>
		</item>
		<item>
			<title>First time</title>
			<author>bnext@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-06-27-1_First_time</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/bnext/blog/2007-06-27-1_First_time</guid>
			<pubDate>Wed, 27 Jun 2007 21:29:25 +0200</pubDate>
			<description><![CDATA[<pre>Hi people!

I'm here, at last. Well, I'm Bnext and I'm building the Inferno Plugin for Mozilla Firefox (IPMF), from now on I hope to update the blog entries daily.

I've uploaded my first code delivery ;)

Ok, that's all, will go to the code :P
</pre>]]></description>
		</item>
		<item>
			<title>Well hello.</title>
			<author>nwf@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-06-22-1_Well_hello.</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/nwf/blog/2007-06-22-1_Well_hello.</guid>
			<pubDate>Fri, 22 Jun 2007 19:00:43 +0200</pubDate>
			<description><![CDATA[<pre>
Apologies for the rather pronounced radio silence up until now, but I have been
working with Eckhardt to produce <a
href="http://gsoc.cat-v.org/people/nwf/paper-strategy.pdf">a strategy
paper</a>.  It identifies what seem to be key hurdles for getting the QEMU code
generator working on Plan 9 (under kencc) and proposes at least one and usually
more solution per problem.

I would deeply appreciate feedback from any and all interested parties.
My email address is nwfilardo@gmail.com.

[Update: now using the absolute path for the paper.  Thanks to Oksel for
pointing out the need.]
</pre>]]></description>
		</item>
		<item>
			<title>Ventisrv compression</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-20-1_Ventisrv_compression</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-20-1_Ventisrv_compression</guid>
			<pubDate>Thu, 12 Jul 2007 14:43:45 +0200</pubDate>
			<description><![CDATA[<pre>### Compression

Work done since my [previous post](http://gsoc.cat-v.org/people/mjl/blog/2007-06-15-1_Vac_tools_in_inferno):  Compression in ventisrv.

As you might know now, ventisrv stores blocks from 1 byte to 56kb
in size on disk.  These blocks are immutable:  cannot be (re)moved
or modified.  The typical block size is 8kb for normal data blocks,
and usually smaller for directory entries and pointer blocks
(but that's outside the scope of this post).  Now [venti from
Plan 9](http://plan9.bell-labs.com/magic/man2html/8/venti),
and the [newer venti from Plan 9 From User
Space](http://swtch.com/plan9port/man/man8/venti.html) try to compress a
block before writing it to disk, and only if compression makes it smaller,
they store it compressed.  This saves disk space for many blocks.

Ventisrv at first did not have the ability to compress blocks, but always
stored them 'raw'.  With the changes of this week, the option `-c` enables
compression.  It isn't on by default because the compression speed limits
write throughput:  Compression is expensive (more so in Limbo then i...
</pre>]]></description>
		</item>
		<item>
			<title>Fixed RSS feeds</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-06-19-1_Fixed_RSS_feeds</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-06-19-1_Fixed_RSS_feeds</guid>
			<pubDate>Tue, 19 Jun 2007 15:27:27 +0200</pubDate>
			<description><![CDATA[<pre>RSS feeds were broken for a while, they should be working properly again, sorry for the inconvenience.
</pre>]]></description>
		</item>
		<item>
			<title>Vac tools in inferno</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-15-1_Vac_tools_in_inferno</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-15-1_Vac_tools_in_inferno</guid>
			<pubDate>Wed, 20 Jun 2007 18:18:36 +0200</pubDate>
			<description><![CDATA[<pre>### news

good news!  the vacget, vacput and vacfs code of the ventivac project is
now in the [inferno-os subversion repository](http://code.google.com/p/inferno-os/source).  many thanks to
charles forstyh.  this makes it very easy to test that code,
so please try it out.  the patch to /appl/lib/venti.b ([mentioned here](http://gsoc.cat-v.org/people/mjl/blog/2007-06-06-1_Starting)) that was needed before, has been included
in inferno-os svn as well, so no more patching is required.

ventisrv and vcache are not in the inferno-os svn, so keep checking
out the ventivac hg repository (it will also contain updates to the
vac tools).

### ventisrv testing

for testing, i've set up a ventisrv on gsoc.cat-v.org.  note that it
is for testing, so don't store your very important data in it, yet.
for example, to write a file to it, try this:

	; vacput -a net!gsoc.cat-v.org!venti welcome.txt
	vac:a39bc0605cc80c7dee50f02c2ef6c502e740c376

now lis...
</pre>]]></description>
		</item>
		<item>
			<title>First general IRC meeting</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-06-14-1_First_general_IRC_meeting</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-06-14-1_First_general_IRC_meeting</guid>
			<pubDate>Thu, 14 Jun 2007 01:58:24 +0200</pubDate>
			<description><![CDATA[<pre>I hope that all your projects are going well. Given that all projects should be
underway by now, and that almost all participants got accounts at
http://gsoc.cat-v.org now it is a good time to  get together in irc and see
what everyone is up to and discuss any issues anyone might have.

Two irc meetings per week are planned, so don't worry too much if you can't
attend one of them. The first one will be tomorrow at 22:00 UTC. The location
as usual is #plan9-gsoc in irc.freenode.org (and don't forget that you probably
can hold of someone there any time of the day or night if you have any
questions or problems.)
</pre>]]></description>
		</item>
		<item>
			<title>More on Object Oriented PHP extensions</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-06-13-1_More_on_Object_Oriented_PHP_extensions</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-06-13-1_More_on_Object_Oriented_PHP_extensions</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>In the [last][1] post, I mentioned that the libixp sources may have to be modified to work around callbacks, but [Kris][2] quickly pointed out that there's a special _aux_ element meant specifically for developers to put whatever they like into. The _aux_ element is automatically passed to every callback function via the Ixp9Req struct:

`struct Ixp9Req {  
Ixp9Conn *conn;  
Fid *fid;  
Fid *newfid;  
Ixp9Req *oldreq;  
Fcall ifcall;  
Fcall ofcall;  
void *aux;  
};`

The aux element is created during the call to ixp_listen:

`IxpConn *ixp_listen(IxpServer *s, int fd, void *aux, void (*read)(IxpConn *c), void (*close)(IxpConn *c));`

Now how do we wrap this functionality in PHP land? The aux f...
</pre>]]></description>
		</item>
		<item>
			<title>Ventisrv bugfix</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-12-2_Ventisrv_bugfix</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-12-2_Ventisrv_bugfix</guid>
			<pubDate>Tue, 12 Jun 2007 18:16:32 +0200</pubDate>
			<description><![CDATA[<pre>a short note again.  i just fixed a bug in ventisrv that caused it to
misread the data file and spew error messages.  that has been fixed now
in the mercurial repository.  there are also a few vacfs changes in there.

so `hg pull` and try again please!
</pre>]]></description>
		</item>
		<item>
			<title>Ventisrv and more</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-12-1_Ventisrv_and_more</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-12-1_Ventisrv_and_more</guid>
			<pubDate>Tue, 12 Jun 2007 00:50:26 +0200</pubDate>
			<description><![CDATA[<pre>some news on the ventivac front.  this post is mostly about how to use
`ventisrv.b`, the (still work in progress) venti server.

most of the code has been cleaned up a bit.  not `vacfs.b` yet though, that
one is next.  the manual pages have been cleared up a bit.  the biggest
difference since my previous post has been that ventisrv is now closer to
being a useful venti server.  it should not be considered stable yet,
and the file format might change as well, but i think it's worth a
try now!

### so, where to start?

the [ventisrv manual page (snapshot version)](http://ueber.net/vac/db235f56a68b2645d9723cf57469622fec46b0ec/ventisrv.html)
should offer a decent introduction.  if anything is unclear after reading
it or questions got raised by it, please let me know so i can clarify
the manual page.

in short, if you want to run a venti server with a data file of 8
gigabytes and an expected mean blocksize of 8 kilobytes, executing the
following commands starts a fresh ventisrv:

	echo -n > data
	echo -n > index # these first two only ...
</pre>]]></description>
		</item>
		<item>
			<title>My laptop at last</title>
			<author>izaki@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-07-1_My_laptop_at_last</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-07-1_My_laptop_at_last</guid>
			<pubDate>Thu, 07 Jun 2007 14:13:35 +0200</pubDate>
			<description><![CDATA[<pre>Well, at last I have my laptop out from the technical service, so I don't have
to share computer anymore. That means bbye lunix for the summer... And also that
I don't have to do any more qemu "magic" to work with two synergy running machines.
</pre>]]></description>
		</item>
		<item>
			<title>Mercurial</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-06-2_Mercurial</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-06-2_Mercurial</guid>
			<pubDate>Wed, 06 Jun 2007 13:56:41 +0200</pubDate>
			<description><![CDATA[<pre>just a short note.  i put the source code so far in mercurial.  it can be found at:

[http://gsoc.cat-v.org/hg/ventivac/](http://gsoc.cat-v.org/hg/ventivac/)

so, a `hg clone http://gsoc.cat-v.org/hg/ventivac/ my-ventivac` should
suffice to get a copy.  see the `README` on how to compile and install.

enjoy!
</pre>]]></description>
		</item>
		<item>
			<title>Starting</title>
			<author>mjl@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-06-1_Starting</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/mjl/blog/2007-06-06-1_Starting</guid>
			<pubDate>Wed, 06 Jun 2007 02:30:01 +0200</pubDate>
			<description><![CDATA[<pre>Hi all.  Here is a first progress report.  To start with, here is some code in action:

[http://ueber.net/vac/bc32a6a6f09395131bec9f34d75e7cfda4b1ffc7/](http://ueber.net/vac/bc32a6a6f09395131bec9f34d75e7cfda4b1ffc7/)

This is an http interface to a venti server.  The files are served by
`vacfs.b`, which is a vac file server a lot like `vacfs` from Plan 9.
The difference is that this one can serve arbitrary vac root scores:  The
root directory appears empty.  Walking to a score tries to open that score
as a vac root score and serves the contents of that vac.  The current
(work in progress, with at least one severe bug, be warned!) `vacfs.b`
can be found in the vac archive referenced above.  As a sidenote, the http
interface is a scgi program that reads directories and prints out html.

There are some more interesting bits in the archive.  But note that these
programs are not final, they may be removed/replaced/redesigned later on.
And when I put this in the mercurial repository, I will also make a proper
directory hierarchy and mkfile.  Here is only a summary of the some...
</pre>]]></description>
		</item>
		<item>
			<title>Updated information</title>
			<author>izaki@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-05-1_Updated_information</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-05-1_Updated_information</guid>
			<pubDate>Tue, 05 Jun 2007 20:56:03 +0200</pubDate>
			<description><![CDATA[<pre>Hello there!

I've been updating the project pages. Take a look at them... What is missing? Any comments or questions you can find me on irc.freenode.net.

Cheers!
</pre>]]></description>
		</item>
		<item>
			<title>On Ken</title>
			<author>kris@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/kris/blog/2007-06-05-1_On_Ken</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/kris/blog/2007-06-05-1_On_Ken</guid>
			<pubDate>Sat, 09 Jun 2007 02:16:24 +0200</pubDate>
			<description><![CDATA[<pre>
The Plan 9 compilers present an interesting challenge in
porting. Because Plan 9 was, and is, a research operating
system, the architects were allowed to throw away convention,
and implement things in the best manner they were able. For
the compilers, this has manifested in a number of ways. The
most visable to the users is that ANSI C has been both
extended and restricted, in ways which Plan 9 programmers
generally find agreeable. But, for the compiler architect and
porter, there are obvious, larger changes, which present
obstacles to porting.

To begin with, the system does not use the standard stack
semantics of any given architecture. This used to read that,
on Plan 9, the stack always grows away from 0, as I was misled
to believe. Actually, on all architectures on Plan 9, the
stack grows towards the lower address range, i.e. 0 Arguments
and local variables are accessed at known offsets from the
stack pointer, and the base register remains free for the
compiler t...
</pre>]]></description>
		</item>
		<item>
			<title>Getting Started</title>
			<author>devin@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/devin/blog/2007-06-05-1_Getting_Started</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/devin/blog/2007-06-05-1_Getting_Started</guid>
			<pubDate>Tue, 05 Jun 2007 19:22:33 +0200</pubDate>
			<description><![CDATA[<pre>Hello everyone!  I am very excited to be working with plan9/inferno on such a unique project.  There have been a number of ideas floating around with respect to the final goal of my [project](http://gsoc.cat-v.org/projects/inferno-synth/ "inferno-synth").  I hope to hash out in the coming days what some of the discussed aspirations for the project are, and more importantly, what is most feasible keeping in mind the time that will be required to develop these ideas.  In the future, the hope is that we will be able to tackle several different ideas simply because the modular aspects of this project lend themselves to connecting with one another in meaningful ways, using the power of the Limbo programming language, and the architecture of the Inferno OS.
</pre>]]></description>
		</item>
		<item>
			<title>New website code and rss feeds</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-06-04_New_website_code_and_rss_feeds</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-06-04_New_website_code_and_rss_feeds</guid>
			<pubDate>Mon, 04 Jun 2007 14:57:36 +0200</pubDate>
			<description><![CDATA[<pre>[Kris](/people/kris/) has been heavily reworking and cleaning up the code that runs this site (now can be found in the hg repo under [werc](/hg/werc)) including implementing rss feeds for all blogs!

There have also been some minor improvements, like automatic blog setup for user and project blog directories and other minor fixes.

Dave Eckhardt proposed that we have a table of projects that tracks the last commit and last blog post for each project, a prototype of this can be found in [/projects/table](/projects/table). 

Enjoy and please report any issues or suggestions in #plan9.
</pre>]]></description>
		</item>
		<item>
			<title>Hello</title>
			<author>kris@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/kris/blog/2007-06-03-1_Hello</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/kris/blog/2007-06-03-1_Hello</guid>
			<pubDate>Thu, 14 Jun 2007 20:38:13 +0200</pubDate>
			<description><![CDATA[<pre>
For anyone interested, there's a `blogpost` script in
`/home/kris/bin` which makes it easy to post to these blogs.
The `-u` option sets the user (default `` `{whoami}``), and
the `-t` option sets the title (defaults to the first line
of your post. If you give a filename (or `-` for stdin),
that is used, otherwise, `$EDITOR` (default `vi`) is run.

Salutations,  
Kris Maglione

</pre>]]></description>
		</item>
		<item>
			<title>Starting up</title>
			<author>izaki@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-02-1_Starting_up</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/izaki/blog/2007-06-02-1_Starting_up</guid>
			<pubDate>Sat, 02 Jun 2007 08:24:22 +0200</pubDate>
			<description><![CDATA[<pre>Hello world!
I'll be posting my GSoC advances here.
Stay connected...
</pre>]]></description>
		</item>
		<item>
			<title>More information about gsoc resources</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-05-31_More_information_about_gsoc_resources</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-05-31_More_information_about_gsoc_resources</guid>
			<pubDate>Thu, 31 May 2007 10:51:08 +0200</pubDate>
			<description><![CDATA[<pre>I have created [a page](/about) that documents the resources and services provided by gsoc.cat-v.org, please take a look and let me know if there is anything else you would like to see.
</pre>]]></description>
		</item>
		<item>
			<title>Mercurial web interface</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-05-30_Mercurial_web_interface</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-05-30_Mercurial_web_interface</guid>
			<pubDate>Wed, 30 May 2007 10:23:16 +0200</pubDate>
			<description><![CDATA[<pre>I have setup the [web interface for the mercurial repos](/hg/), feel free to
start pushing the repos for your projects under /gsoc/hg/.
</pre>]]></description>
		</item>
		<item>
			<title>Making progress</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/uriel/blog/2007-05-30_Making_progress</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/uriel/blog/2007-05-30_Making_progress</guid>
			<pubDate>Wed, 30 May 2007 12:48:50 +0200</pubDate>
			<description><![CDATA[<pre>Have made some progress with the gsoc.cat-v.org site and setup, a handful of
brave souls have got accounts already, and i hope that most of the work left is
to add some real content (I hope others will help out with that ;))

While fixing a bug in the blog code (all six lines of it), I found a neat
trick: Given a list of paths, how to list the full paths of all files in those
dirs ordered by file name:

    ; l = ( /foo /bar/baz/bax /) 
    ; ls $l^'/./' | sort -t. +1

Enough for today, when I wake up I should announce the site to the gsoc list and
try to setup an irc meeting for tomorrow so we can get things going. Thanks to
everyone that helped debug and test things.
</pre>]]></description>
		</item>
		<item>
			<title>Object Oriented PHP Extensions</title>
			<author>anant@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-05-30-1_Object_Oriented_PHP_Extensions</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/anant/blog/2007-05-30-1_Object_Oriented_PHP_Extensions</guid>
			<pubDate>Mon, 15 Oct 2007 01:00:06 +0200</pubDate>
			<description><![CDATA[<pre>Before I begin, if you're using Gentoo Linux, don't forget to [check out][1] the plan9port ebuild I recently made.

The Summer of Code has officially started - and I will begin my blogging with a quick post on creating object-oriented extensions to [PHP][2], which is what the first phase of my project is all about ![:)][3]

There isn't much documentation on building OO extensions apart from the [README][4] series in the PHP source. If you're looking to build a conventional procedural extension, however, I've found that the 3-part [tutorial series][5] on Zend by Sara Golemon is most useful.

I've chosen the [libixp][6] (pronounced as lib9p, get it?) library to wrap over. libixp is a small and clean C library that helps you write 9P servers a...
</pre>]]></description>
		</item>
		<item>
			<title>Hi there</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/uriel/blog/2007-05-28-1_Hi_there</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/uriel/blog/2007-05-28-1_Hi_there</guid>
			<pubDate>Wed, 30 May 2007 13:00:47 +0200</pubDate>
			<description><![CDATA[<pre>Hullo! ^_^
</pre>]]></description>
		</item>
		<item>
			<title>Site is up</title>
			<author>uriel@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/News/2007-05-27_Site_is_up</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/News/2007-05-27_Site_is_up</guid>
			<pubDate>Wed, 20 Jun 2007 07:44:07 +0200</pubDate>
			<description><![CDATA[<pre>The first version of the Plan 9 GSoC site is up!

Things are still being worked on, and most people don't have their accounts
setup yet. The mercurial repos and 9P access will be next.

Update: *Per-project blogs webpages were also broken, I fixed them now, all blogs should be working properly now*.
</pre>]]></description>
		</item>
		<item>
			<title>. 2007-06-27-1 Getting Inferno-Synth Up and Running.md</title>
			<author>devin@noreply.cat-v.org</author>
			<link>http://gsoc.cat-v.org//gsoc/www/people/devin/blog/._2007-06-27-1_Getting_Inferno-Synth_Up_and_Running</link>
                        <guid isPermaLink="true">http://gsoc.cat-v.org//gsoc/www/people/devin/blog/._2007-06-27-1_Getting_Inferno-Synth_Up_and_Running</guid>
			<pubDate>Sat, 26 Apr 2008 01:07:48 +0200</pubDate>
			<description><![CDATA[<pre>
    column = 1;
    line = 6;
}
</pre>]]></description>
		</item>
	</channel>
</rss>
