<?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"
	>

<channel>
	<title>Gregory Haynes</title>
	<atom:link href="http://gregarei.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregarei.com</link>
	<description></description>
	<pubDate>Thu, 02 Oct 2008 06:14:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>New Blog</title>
		<link>http://gregarei.com/2008/10/new-blog/</link>
		<comments>http://gregarei.com/2008/10/new-blog/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 06:14:14 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=35</guid>
		<description><![CDATA[My blog has moved to http://blog.greghaynes.net.  This is due to issues I have run into while transferring Wordpress to my new server.  Although there are many applications which do just this, some interesting choices by the Wordpress developers don&#8217;t allow it to run using the software I would like (most notably, PostgreSQL).  Sorry for the [...]]]></description>
			<content:encoded><![CDATA[<p>My blog has moved to <a title="Gregory Haynes' Blog" href="http://blog.greghaynes.net">http://blog.greghaynes.net</a>.  This is due to issues I have run into while transferring Wordpress to my new server.  Although there are many applications which do just this, some interesting choices by the Wordpress developers don&#8217;t allow it to run using the software I would like (most notably, PostgreSQL).  Sorry for the inconvenience, and hopefully this new blog system works out for the better.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/10/new-blog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kobby GSoC: Connections and Browsing support</title>
		<link>http://gregarei.com/2008/08/kobby-gsoc-connections-and-browsing-support/</link>
		<comments>http://gregarei.com/2008/08/kobby-gsoc-connections-and-browsing-support/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 07:52:16 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Kobby]]></category>

		<category><![CDATA[SoC]]></category>

		<category><![CDATA[libinfinitymm]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=30</guid>
		<description><![CDATA[Its been a couple weeks since I last blogged about Kobby, and much has happened since then.  In my last post I was having issues implementing a Qt socket event plugin for libinfinity, but thanks to some advice from Armin Burgmeier I was able to get this working very quickly.  Since then, I have created [...]]]></description>
			<content:encoded><![CDATA[<p>Its been a couple weeks since I last blogged about <a title="Kobby git repository" href="http://gitorious.org/projects/kobby">Kobby</a>, and much has happened since then.  In my last post I was having issues implementing a Qt socket event plugin for libinfinity, but thanks to some advice from <a title="Armin's personal Blog" href="http://arbur.net/serendipity/">Armin Burgmeier</a> I was able to get this working very quickly.  Since then, I have created and then added some features to the Connection Manager for Kobby to make it a little more user friendly (see below)</p>
<p><img title="Kobby Connection Manager" src="http://farm4.static.flickr.com/3008/2742956539_90c28ebb4c.jpg?v=0" alt="Connection Manager Window for Kobby" width="416" height="349" /></p>
<p>After getting this worked out I started on the next big step, browsing support in libinfinitymm, which not only includes traversing the directory tree of the Infinote server, but also creating and removing nodes.  While looking through the <a title="Infinote Git Repository" href="git://git.0x539.de/git/infinote.git">infinote repository</a> I noticed an awesome test application which creates a sort of interactive shell with the server using the client library, so I decided a great way to go about testing my C++ bindings for the Client Browser portion of libinfinity would be to replicate this test, which I just completed this afternoon.  Hopefully, I will be able to implement a GUI for this by monday (meaning more screenshots) now that all the backend issues seem to be out of the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/08/kobby-gsoc-connections-and-browsing-support/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GSoC: Kobby Week 8</title>
		<link>http://gregarei.com/2008/07/gsoc-kobby-week-8/</link>
		<comments>http://gregarei.com/2008/07/gsoc-kobby-week-8/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 22:48:52 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=22</guid>
		<description><![CDATA[There has been a lot of development work this past week with Kobby.  After posting about some design issues I was attempting to clear up before diving into code, Armin Burgmeier (Creator of infinote) pointed out that the term &#8217;session&#8217; in infinote is used to describe the editing &#8217;session&#8217; of a single document, unlike in [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of development work this past week with Kobby.  After posting about some design issues I was attempting to clear up before diving into code, <a title="Armin's personal blog" href="http://arbur.net/serendipity/">Armin Burgmeier</a> (Creator of <a title="Infinote git repository." href="git://git.0x539.de/git/infinote.git">infinote</a>) pointed out that the term &#8217;session&#8217; in infinote is used to describe the editing &#8217;session&#8217; of a single document, unlike in Kate where it is used to describe a set of documents.  Instead of deciding whether confuse either users or developers, I came up with a new naming scheme for the control dialogs which might actually better represent the actions being performed.</p>
<p>After getting the control dialogs worked out I went to connect the infinote functionality for an XmppConnection and ran into some <a title="sigc++ and Qt error." href="http://osdir.com/ml/sysutils.cfg.devel/2004-01/msg00015.html">issues</a> with sigc++ and Qt.  Luckilly this was a quick (albeit somewhat dirty) fix.  It wasnt much longer before I got the connection functionality working, and ran into the next issue: Needing to use the Glib event system from my Qt app.  Luckilly, libinfinity was designed to allow for the plugging in of any event system by implementing the Io interface the library provides to register sockets to be monitored and the handling callback functions (very cool).  The only issue now is that as far as I can tell, the way this is implemented doesnt doesnt fit well with Glibmm&#8217;s design, meaning I may have to create the C GObject subclass for proxying the C++ wrapper by hand.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/07/gsoc-kobby-week-8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GSoC Phase 2: Kobby Development</title>
		<link>http://gregarei.com/2008/07/gsoc-phase-2-kobby-development/</link>
		<comments>http://gregarei.com/2008/07/gsoc-phase-2-kobby-development/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 01:27:41 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Kobby]]></category>

		<category><![CDATA[SoC]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=10</guid>
		<description><![CDATA[After over a month of working on a C++ wrapper for the infinote libraries I was finally able to start development of the collaborative editing KTextEditor plugin this week.  Its amazing what getting to see some of your development work in action, no matter how little, can do for inspiration.  This week I plan on [...]]]></description>
			<content:encoded><![CDATA[<p>After over a month of working on a C++ wrapper for the infinote libraries I was finally able to start development of the collaborative editing KTextEditor plugin this week.  Its amazing what getting to see some of your development work in action, no matter how little, can do for inspiration.  This week I plan on completing the session management interface and all its appendages (join session dialog, create session dialog, etc&#8230;) and hopefully will have functionality for users to connect to infinote servers by the weeks end.  For those of you wondering what I&#8217;m referring to by session management: The infinote libraries allow for a set of documents, which comprise a session, to be hosted on a server and be collaboratively edited simultaneously.  The Kobby session manager will allow users to join any number of sessions, keeping track of the documents in each editing session and opening/closing  them when joining/leaving an infinote session.  This brings up some design issues:  Because a session could have a large number of documents, downloading and opening all the documents upon joining a session doesn&#8217;t seem like a good idea.  The options I see are (a) creating a document management interface to select documents to open off the infinote server or (b) having a lazy-opening implementation where documents on the server are added to the editing session, but are not pulled off the server until they are actually selected by the user (anyone know for sure if this is possible?).  For now, I&#8217;m going to take the document manager interface route, but the lazy implementation sounds like a tempting project, maybe worthy of an option in the configuration interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/07/gsoc-phase-2-kobby-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing libinfinitymm</title>
		<link>http://gregarei.com/2008/06/introducing-libinfinitymm/</link>
		<comments>http://gregarei.com/2008/06/introducing-libinfinitymm/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 17:11:16 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Kobby]]></category>

		<category><![CDATA[SoC]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=8</guid>
		<description><![CDATA[Now that exams are over I have been able to spend the past week getting to really work on my GSOC project.  In this time I created a c++ wrapper for libinfnity, which is the library my project will be using.  The git repository can be found on Gitorious.  Libinfinity has a [...]]]></description>
			<content:encoded><![CDATA[<p>Now that exams are over I have been able to spend the past week getting to really work on my <a title="Kobby, Collaborative Editing" href="http://code.google.com/soc/2008/kde/appinfo.html?csaid=9433F3446323A693" target="_blank">GSOC project</a>.  In this time I created a c++ wrapper for libinfnity, which is the library my project will be using.  The <a title="Libinfinity mainline" href="http://gitorious.org/projects/libinfinitymm/repos/mainline">git repository</a> can be found on Gitorious.  Libinfinity has a very flexible object oriented design (the online docs are AWOL, so heres <a title="Libinfinity Documentation" href="http://greghaynes.net/libinfinity-docs/">my copy</a>), and should make the rest of my project pretty straightforward.  In order to implement the collaborative editing component you need to just supply an object which implements InfTextBuffer (now Infinity::TextBuffer), so making a Kate Document implement this interface should be a breeze compared to the glib/gmmproc funk I&#8217;ve been dealing with the past week.  For the rest of the week I have a fair amount of testing/code scrubbing to get done, but hopefully not long after i&#8217;ll have some results to show off <img src='http://gregarei.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Now, back to coding.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/06/introducing-libinfinitymm/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wrapping libinfinity</title>
		<link>http://gregarei.com/2008/06/wrapping-libinfinity/</link>
		<comments>http://gregarei.com/2008/06/wrapping-libinfinity/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 20:00:45 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Kobby]]></category>

		<category><![CDATA[SoC]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=6</guid>
		<description><![CDATA[This week I have been working on creating a C++ wrapper for libinfinity.  The library uses a gobject API and is very extensible, so ditching it in favor of a non-glib library would be a real waste.  Luckily, there are tools like gmmproc (an internal glibmm tool) which auto-generates the C++ classes to [...]]]></description>
			<content:encoded><![CDATA[<p>This week I have been working on creating a C++ wrapper for libinfinity.  The library uses a gobject API and is very extensible, so ditching it in favor of a non-glib library would be a real waste.  Luckily, there are tools like gmmproc (an internal glibmm tool) which auto-generates the C++ classes to wrap gobject based libraries, given that you don&#8217;t mind using the gtkmm source code as your documentation.  Aside from having a fun time dissecting various libraries to figure out how to use gmmproc, the application is absolutely awesome.  The tool reads from definition files (which can also be auto-generated from other glibmm/pygtk tools) which store data on the library&#8217;s object names, their member functions, parameters, etc.  and parses .hg and .ccg files which contain C++ code with macros (such as _WRAP_METHOD) into source files which are fed to the compiler.  Some documentation can be found in the gtkmm book: <a title="Wrapping gobject libraries with gmmproc" href="http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-wrapping-c-libraries.html" target="_blank">http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-wrapping-c-libraries.html</a>.  After getting the hang of the tool usage, wrapping the library is a breeze, so a usable version will be on its way very soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/06/wrapping-libinfinity/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kobby, Collaborative Editing</title>
		<link>http://gregarei.com/2008/05/kobby-collaborative-editing/</link>
		<comments>http://gregarei.com/2008/05/kobby-collaborative-editing/#comments</comments>
		<pubDate>Thu, 22 May 2008 23:50:24 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Kobby]]></category>

		<category><![CDATA[SoC]]></category>

		<guid isPermaLink="false">http://gregarei.com/?p=5</guid>
		<description><![CDATA[For this year&#8217;s Google Summer of Code I will be creating a KTextEditor plugin which allows for collaborative document editing.  The proposal abstract can be found at http://code.google.com/soc/2008/kde/appinfo.html?csaid=9433F3446323A693.
The goal of this project is to bring in editor collaboration to KDE. This will allow users to share document trees and watch remote modifications made to [...]]]></description>
			<content:encoded><![CDATA[<p>For this year&#8217;s Google Summer of Code I will be creating a KTextEditor plugin which allows for collaborative document editing.  The proposal abstract can be found at <a title="Kobby proposal abstract" href="http://code.google.com/soc/2008/kde/appinfo.html?csaid=9433F3446323A693" target="_blank">http://code.google.com/soc/2008/kde/appinfo.html?csaid=9433F3446323A693</a>.</p>
<p>The goal of this project is to bring in editor collaboration to KDE. This will allow users to share document trees and watch remote modifications made to them in real time.  More so, in order to do this users will no longer have look outside of the editor or IDE.  While I have had this project in mind it is amazing how many times I wish I had an editor with the ability to do this, mostly while sitting at a cafe trying to help out someone with a piece of code.  This alone has me very excited to get this project working.</p>
<p>Luckily, a very powerful library for all the backend work exists, libinfinity (git://git.0&#215;539.de/git/infinote.git).  This library handles all the network communication and security, synchronization, and document hosting, while providing me with a nice TextBuffer interface to glue my plugin to.  Writing this plugin will be the meat of my work this summer.  Aside from that, I will be adding some nifty client-side features such as document re-visioning, and hopefully adding user access control to the library.</p>
<p>For now, I&#8217;m left trying to clear off my plate as much as possible before schools end so I can really devote a couple months to developing an open source project. <img src='http://gregarei.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/05/kobby-collaborative-editing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trivial java chatroom client / server</title>
		<link>http://gregarei.com/2008/04/trivial-java-chatroom-client-server/</link>
		<comments>http://gregarei.com/2008/04/trivial-java-chatroom-client-server/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 09:18:55 +0000</pubDate>
		<dc:creator>Gregory Haynes</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://greghaynes.net/sites/blog/?p=3</guid>
		<description><![CDATA[This week I hacked out an extremely trivial chat room client and server in java.  The protocol is very close to xmpp, where all messages are in XML and contained within a message tag.  The server model is pretty simple: it just rebroadcasts all messages recieved to all users.  Eventually some sender confirmation can be [...]]]></description>
			<content:encoded><![CDATA[<p>This week I hacked out an extremely trivial chat room client and server in java.  The protocol is very close to xmpp, where all messages are in XML and contained within a message tag.  The server model is pretty simple: it just rebroadcasts all messages recieved to all users.  Eventually some sender confirmation can be added by making the server compare the &#8216;from&#8217; attribute of the opening message tag with the socket it came from.  The server is also single threaded and makes use of Java&#8217;s nonblocking i/o facilities for all read/write operations.  The code for the client and server are completely separate, so if nothing else the server can be useful for other projects.</p>
<p><a title="Chatroom Application" href="http://greghaynes.net/src/chatroomapp.jar" target="_self">chatroomapp.jar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregarei.com/2008/04/trivial-java-chatroom-client-server/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
