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

<channel>
	<title>Nikolay Botev's Blog</title>
	<atom:link href="http://bonovox.be/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://bonovox.be/blog</link>
	<description></description>
	<lastBuildDate>Thu, 17 May 2012 10:57:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>The History of Many-core</title>
		<link>http://bonovox.be/blog/?p=115</link>
		<comments>http://bonovox.be/blog/?p=115#comments</comments>
		<pubDate>Wed, 25 Apr 2012 04:21:43 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[history computer architecture manycore]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=115</guid>
		<description><![CDATA[<p>When looking for a good reference to back the &#8220;many-core problem&#8221; assertion in my Master&#8217;s <a href="https://docs.google.com/document/d/1QY2WXoZcv0FxU9W-YRdTAFXUNKd_yMt3IG_sLHnnJwA/edit">thesis</a>, this the best I could find as a prime source. <a href="http://newscenter.lbl.gov/wp-content/uploads/2008/07/yelick-berkeleyview-july081.pdf">Multicore: Fallout of a Hardware Revolution</a> holds an excellent description of the reasons behind the shift from increasing clock speeds to multiplying the numbers of cores in modern [...]]]></description>
			<content:encoded><![CDATA[<p>When looking for a good reference to back the &#8220;many-core problem&#8221; assertion in my Master&#8217;s <a href="https://docs.google.com/document/d/1QY2WXoZcv0FxU9W-YRdTAFXUNKd_yMt3IG_sLHnnJwA/edit">thesis</a>, this the best I could find as a prime source. <a href="http://newscenter.lbl.gov/wp-content/uploads/2008/07/yelick-berkeleyview-july081.pdf">Multicore: Fallout of a Hardware Revolution</a> holds an excellent description of the reasons behind the shift from increasing clock speeds to multiplying the numbers of cores in modern CPUs.</p>
<p>In particular:</p>
<p>&#8220;Hidden concurrency burns power<br />
 Speculation, dynamic dependence checking, etc.<br />
 Push parallelism discovery to software (compilers and<br />
application programmers) to save power&#8221;</p>
<p>&#8230;and a <a href="http://www.paralogos.com/DeadSuper/">hidden treasure</a> of information on the history of all modern processor architecture optimization techniques.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=115</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Value Objects in Newspeak</title>
		<link>http://bonovox.be/blog/?p=62</link>
		<comments>http://bonovox.be/blog/?p=62#comments</comments>
		<pubDate>Mon, 21 Nov 2011 23:32:39 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Actors]]></category>
		<category><![CDATA[Newspeak]]></category>
		<category><![CDATA[Thesis]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=62</guid>
		<description><![CDATA[<p>This is a quick dump of a rough design sketch for Value objects in Newspeak, which builds upon section 3.1.1 of the current version of the Newspeak language specification.</p> Value classes allow explicit intent. The class declaration is automatically annotated with metadata that expresses the intent for instances to be value objects. Value classes use [...]]]></description>
			<content:encoded><![CDATA[<p>This is a quick dump of a rough design sketch for Value objects in Newspeak, which builds upon section 3.1.1 of the current version of the Newspeak language specification.</p>
<ol>
<li>Value classes allow explicit intent. The class declaration is automatically annotated with metadata that expresses the intent for instances to be value objects.</li>
<li>Value classes use special syntax that introduces the said metadata annotation (e.g. valueclass X instead of class X).</li>
<li>Value classes can only be mixed in with other Value classes.</li>
<li>Value classes can only have immutable slots.</li>
<li>The root of the value classes is Value, which extends from Object. The Value class overrides the ==  method and delegates it to =. The Value class overrides = to compare all the slots recursively using =. The Value class overrides the asString method to give a neat stringified representation of the Value object in a JSON-like format. Value class computations for =, asString bottom out on built-in Value classes, like Number, Character, String etc. (overriding = and asString is explicitly inspired by the behavior of case classes in Scala).</li>
<li><strong>The Value class overrides the identityHash method to delegate to the hash method, and overrides the hash methods with some simple, yet-to-be-determined, recursive hashing algorithm (e.g. XOR-ing the hashes of all the slots).</strong></li>
<li>Value objects can only point to other Value objects.</li>
<li>Value class declarations can only be nested inside other Value class declarations.<br />
<strong>Update 2/10/2012: Another option that seems very attractive right now would be to allow value class declarations to be lexically nested inside non-value class declarations but cut off from the non-value part of their lexical scope (the enclosing object chain stops at the outermost value class, excluding all enclosing non-value classes).</strong></li>
<li>This implies the enclosing object of a Value class is always a value object.</li>
<li>Simply annotating a class declaration as &#8220;&lt;Value&gt;&#8221; is not enough. Syntax is required for valueclass declarations in order to ensure that Value classes always extend other Value classes. This allows a Value class with no explicit superclass clause to implicitly extend the built-in Value class, instead of Object, which is the default superclass for regular classes.</li>
<li>The constraints on Value objects and Value classes are verified at mixin application time (the superclass is a Value class), and object construction time (all slots contain other Value objects).</li>
<li><strong>The enclosing object does not need to be verified at mixin application time, because the enclosing scope of a Value class declaration can be verified at compile time.</strong></li>
<li>Value classes are also Value objects.</li>
<li>nil is a Value object.</li>
<li>Value class declarations can contain nested non-value (regular) class declarations. More generally speaking, Value objects can produce (act as factories for) non-value objects.<br />
<strong>Update 2/10/2012: An important corollary of the above is that non-value classes enclosed in a value object are value objects themselves.</strong></li>
<li>Value objects are awesome! They are containers for data and the unit of data transfer between Actors in Newspeak, and also the building block for immutable data structures.</li>
<li><em><strong>Update 11/24/2011:</strong></em></li>
</ol>
<ol>
<li>Every class whose enclosing object is a value object is also a value object (but not necessarily a value class!).<br />
<strong>Update 11/27/2011:</strong><br />
Justification for the above is: if multiple equivalent instances of a value class are indistinguishable, then all of the instances&#8217; constituent parts, nested classes included, must be indistinguishable as well. Think (a == b), but (a NestedClass == b NestedClass) not &#8211; this is unacceptable!</li>
<li>We must determine rules for when closure and activation objects are value objects, so we can safely deal with simultaneous slots in value classes (at construction time, the closure object that captures each simultaneous slot initializer must be a value object, then at lazy evaluation time, the result must be a value object, otherwise an exception is thrown and the simultaneous slot is not resolved).<br />
<strong>Update  2/10/2012: One alternative that comes to mind but does not seem very attractive would be to have special syntax for closures that are value objects, say {{ &#8230; }} denotes a closure that is always a value object and has no access to enclosing mutable state.<br />
A more attractive alternative would be to extend the syntax for object literals to support value object literals. All of a sudden object literals appear much more important than before. For example, value-object closures and/or object literals make it possible to build  a Scala-like parallel collections library on top of actors.<br />
Actually the above is not quite correct: a Scala-like parallel collections library in newspeak would benefit more from value class literals that can be nested inside non-value classes</strong></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=62</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>References and Actors</title>
		<link>http://bonovox.be/blog/?p=48</link>
		<comments>http://bonovox.be/blog/?p=48#comments</comments>
		<pubDate>Wed, 31 Aug 2011 05:32:30 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Actors]]></category>
		<category><![CDATA[Thesis]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=48</guid>
		<description><![CDATA[<p>In E, references are distinct from the objects they designate. This might seem apparent, but it is not necessarily so. In traditional languages like Java, first-class references are almost indistinguishable from the objects they designate. They are internally represented as 4- to 8-byte pointers and while there is a distinction between reference equality (two references [...]]]></description>
			<content:encoded><![CDATA[<p>In E, references are distinct from the objects they designate. This might seem apparent, but it is not necessarily so. In traditional languages like Java, first-class references are almost indistinguishable from the objects they designate. They are internally represented as 4- to 8-byte pointers and while there is a distinction between reference equality (two references pointing to the same object) and object equality (two distinct objects with identical/indistinguishable contents and behavior), there is not much else to worry about.</p>
<p>In E, however, the rabbit hole goes deeper. There are multiple *types* of references. The word type might be a misnomer but I find it as one good way to think about references. In the E thesis, there is no discussion of types of references, but rather states that a reference can be in:</p>
<ul>
<li>Local Promise</li>
<li>Remote Promise</li>
<li>Near Reference</li>
<li>Far Reference</li>
<li>Broken Reference</li>
</ul>
<p>In this discussion reference type is a synonym for reference state. The reason the term state seems more appropriate is that a single reference goes through several transitions between states in the course of its lifetime. In other words, a reference can switch types.</p>
<p>The problem this poses for an implementation is that references in different states hold different information. A near reference is the simplest case, the familiar reference from Java &#8211; it holds the address of an object within the current VM&#8217;s heap. A promise however, holds an unbounded list of pending messages and whenResolved listeners. A far reference holds whatever information is necessary to transmit messages to its target object, including potentially a distinct queue of messages pending delivery. A broken reference holds exception information regarding the reason for the reference breakage.</p>
<p>Classes are a natural way to think about implementing each different state of a promise &#8211; the information and behavior for each state of a reference is represented by a distinct class. The problem arises when the reference needs to switch states, therefore the need arises for an object to change its class dynamically, which is not traditionally available functionality in object-oriented programming languages.</p>
<p>Another problem is the possibility that references might chain. In other words, the possibility that a reference might point to another reference, instead of directly pointing to an object. A promise might get resolved to another promise. Or, even more disturbingly, a far reference might point to a promise reference. This possibility of chaining is actually excluded in the reference states model presented by Miller. Instead of a promise resolving to another promise, the promise reference simply makes a state transition, or in other words, the reference <strong>becomes</strong> the other promise, instead of pointing to it. In a similar fashion, a promise will get deserialized as a promise <strong>for the same result</strong> as the original promise, instead of being deserialized as a far reference to a promise (which would introduce chaining of references).</p>
<p>This, in essence, leads to an important conclusion. The serialization/deserialization implementation must include special handling logic for references in different states. For instance:</p>
<ul>
<li>Near reference might have to be deserialized as a far reference</li>
<li>Near promise is deserialized as a remote promise <strong>linked to the same resolver</strong> as the original near promise</li>
</ul>
<p>etc.</p>
<p>Furthermore, the resolution logic must handle the distinct cases as well, in order to handle the different state transitions possible that originate from the promise states:</p>
<ul>
<li><strong>Become</strong> another promise (for a new result)</li>
<li>Resolve to and <strong>become</strong> a far or near reference</li>
</ul>
<p>As already discussed, the most natural way to implement the different reference states is as classes. At this point the notion of reference states as types comes into the picture. References are objects in our runtime VM but they are a distinct type of proxy objects that provide special services and require distinct treatment from regular application objects. As explained above, for deserialization and resolution purposes, we need to be able to distinguish between a near reference to an application object and a near reference to a reference object (since fundamentally the runtime VM only provides primitive support for near references, and the other reference states are reified as regular objects). Furthermore, it is clear from the examples above that we also need to be able to distinguish between the different *types* of reference states (Local Promise vs Remote Promise vs Far Reference etc).</p>
<p>Since in Newspeak, there is no global namespace for classes, and at runtime all classes are simply a dynamic aggregation of mixin applications, we cannot test the class names of objects. Conceptually this would be equivalent to having some sort of type system anyway. But this is exactly what we need &#8211; to be able to distinguish between different types of objects (one per reference state), albeit a very restricted set.</p>
<p>Since the Past and Actors libraries are a core part of the language, I propose to meet the need for type checking using the following idiom, which is slightly different from the is* message idiom for arbitrary objects, already implemented in the NewseakObject doesNotUnderstand: protocol. The idea is that since the Past and Actors libraries are singleton modules and the sole managers of instances of objects that represent reference states, and not likely candidates for extension by applications, we can simply test for class equality like this:</p>
<pre>(obj class = Promise)</pre>
<p>where obj is an object whose type is being tested and Promise is a reference to the class instance local to the current singleton module instance. Naturally,</p>
<pre>Promise new</pre>
<p>is exclusively used to construct Promises from within the Past module, for example.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Openness</title>
		<link>http://bonovox.be/blog/?p=22</link>
		<comments>http://bonovox.be/blog/?p=22#comments</comments>
		<pubDate>Sat, 19 Feb 2011 07:45:26 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=22</guid>
		<description><![CDATA[<p>I am a firm believer in openness. That is the reason I believe open source has such great value. The way I see it, the word open in &#8220;open source&#8221; does not just refer to the source code: it also means open communication, open structure, open management&#8230; openness in every aspect of a project.</p> <p>Yet, [...]]]></description>
			<content:encoded><![CDATA[<p>I am a firm believer in openness. That is the reason I believe open source has such great value. The way I see it, the word open in &#8220;open source&#8221; does not just refer to the source code: it also means open communication, open structure, open management&#8230; openness in every aspect of a project.</p>
<p>Yet, in one of my own projects I failed to abide by my own principle. Two years ago, at the end of the summer of 2008, I left my small <a href="http://code.google.com/soc/">GSoC</a> project &#8211; a split editor for Eclipse, in the state of a working prototype to begin a full-time job and join a master&#8217;s program. For two years now I have neglected the split editor project and kept in complete silence to the point that people have even <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=8009#c137">forgotten</a> that there was ever anyone involved in this effort.</p>
<p>I am now nearing the end of my master&#8217;s program and with all classwork completed am getting ready to begin work on a thesis. Before I do that, however, I wanted to clarify the state of affairs of my split editor work. I have not forgotten about it, and I am determined to complete it eventually. Although I will not have any time to dedicate to this work for another year, it is first on my queue of side projects after completing my master&#8217;s.</p>
<p>Actually, if anyone is willing to pick up the work now, I will be more than willing to provide whatever support I can. Here are the patches with my latest work, updated against the current Eclipse release as of the time of writing &#8211; 3.6.1 (R3_6_1 label in CVS):</p>
<p><a href="http://bonovox.be/blog/wp-content/uploads/2011/02/spliteditor-patches.zip">spliteditor-patches.zip</a></p>
<p>The file contains four separate patches for the four Eclipse plugin projects involved in the split editor implementation:</p>
<ul>
<li>org.eclipse.ui.workbench &#8211; this project contains the bulk of the split editor work.</li>
<li>org.eclipse.ui,</li>
<li>org.eclipse.ui.editors,</li>
<li>org.eclipse.jdt.ui &#8211; the above three projects contain mostly configuration changes to activate the split editor for Java and Text editors.</li>
</ul>
<p>To see the split editor in action, check out these four projects from the Eclipse CVS repo (at label R3_6_1), apply the patches and start up an Eclipse launch configuration. If you want to try this but get lost or none of this makes sense, post a comment here and I will be happy to provide more detail.</p>
<p>I have always wanted to make it very easy for people to try out and experience the split editor at the earliest possible stage of its development (at which it stands currently &#8211; there are quite a few <a href="http://wiki.eclipse.org/Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE#Issue_Tracker">known</a> bugs). The best way I see for this would be to share a custom build of Eclipse with the split editor work compiled in. Unfortunately, I have never been able to successfully <a href="http://wiki.eclipse.org/Platform-releng-sourcebuild35">build</a> Eclipse from source. I gave it a shot two years ago, and more recently, I spent the last two months frantically trying to build the Eclipse 3.6/3.5/3.7 SDKs, without <a href="http://www.eclipse.org/forums/index.php?t=msg&amp;goto=654080">any</a> success. It seems like I am <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319460">not</a> alone in this. If at any point fortune strikes me, you can be certain that Eclipse packages with split editor support will appear here immediately. If anyone is willing and able to help with this, please get in touch!</p>
<p>Peace</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=22</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source food</title>
		<link>http://bonovox.be/blog/?p=12</link>
		<comments>http://bonovox.be/blog/?p=12#comments</comments>
		<pubDate>Wed, 28 Jan 2009 06:01:00 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/2009/01/27/open-source-food/</guid>
		<description><![CDATA[<p>If there is such a thing as Open Source food, then <a href="http://rawusa.org/facts.html">this</a> must be it.</p>]]></description>
			<content:encoded><![CDATA[<p>If there is such a thing as Open Source food, then <a href="http://rawusa.org/facts.html">this</a> must be it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=12</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrated split editor prototype</title>
		<link>http://bonovox.be/blog/?p=11</link>
		<comments>http://bonovox.be/blog/?p=11#comments</comments>
		<pubDate>Wed, 03 Sep 2008 06:04:14 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=11</guid>
		<description><![CDATA[<p>A new split editor prototype that is integrated into the Eclipse workbench API has been available as a patch on the <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244364">Eclipse Bugzilla</a> for some time now. Unfortunately, I have not able to create an easily deployable plugin that can be installed easily in any Eclipse 3.4 distribution (by copying to the dropins or [...]]]></description>
			<content:encoded><![CDATA[<p>A new split editor prototype that is integrated into the Eclipse workbench API has been available as a patch on the <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244364">Eclipse Bugzilla</a> for some time now. Unfortunately, I have not able to create an easily deployable plugin that can be installed easily in any Eclipse 3.4 distribution (by copying to the dropins or plugins directories). Even if I did I would probably have to worry about the legal aspects of redistributing Eclipse code, since the plugin will no longer only contain my code.</p>
<p>That said, you can test out the latest split editor by checking out the o.e.ui.workbench project in Eclipse, applying the patch from <a href="https://bugs.eclipse.org/bugs/attachment.cgi?id=110149">bugzilla</a>, and debuggin Eclipse from Eclipse. There are no immediately visible changes, but it would be very helpful to have as many people as possible test the split editor in everyday use. I do not expect a lot of users to go through the above procedure, however, and so I will keep trying to get an easily installable package out.</p>
<p>Next time I will talk about the internal integration design of the split editor because I believe this is the most interesting part of all. This will be of particular interest to Eclipse plugin developers who want to know how to enable editor splitting for their custom editors.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=11</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stalemate</title>
		<link>http://bonovox.be/blog/?p=10</link>
		<comments>http://bonovox.be/blog/?p=10#comments</comments>
		<pubDate>Wed, 09 Jul 2008 06:43:59 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=10</guid>
		<description><![CDATA[<p>There is no new Java split editor yet.</p> <p>I got overwhelmed by new issues that I discovered while testing last week&#8217;s prototype including the fact that most preference changes <a href="http://wiki.eclipse.org/index.php?title=Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE#Preferences">do not propagate to both editors or cause exceptions</a>.</p> <p>I am looking into the alternative MultiEditor-based approach and this is leading me to some interesting [...]]]></description>
			<content:encoded><![CDATA[<p>There is no new Java split editor yet.</p>
<p>I got overwhelmed by new issues that I discovered while testing last week&#8217;s prototype including the fact that most preference changes <a href="http://wiki.eclipse.org/index.php?title=Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE#Preferences">do not propagate to both editors or cause exceptions</a>.</p>
<p>I am looking into the alternative MultiEditor-based approach and this is leading me to some interesting ideas that I am about to try out&#8230; so there should be interesting split-editor-related stuff coming soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=10</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working prototype of Eclipse split editor</title>
		<link>http://bonovox.be/blog/?p=4</link>
		<comments>http://bonovox.be/blog/?p=4#comments</comments>
		<pubDate>Tue, 01 Jul 2008 06:55:24 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=4</guid>
		<description><![CDATA[<p>The first working prototype of a working split editor is <a href="http://bonovox.be/org.eclipse.spliteditor/org.eclipse.spliteditor_3.4.0.200806302201.jar">here</a>. You can download it and play with it in Eclipse 3.4.</p> <p>Basic functions like text cursor, current line highlight (these did not work in the first prototype), undo/redo, cut/copy/paste, status bar items (insert mode, line and column numbers) work fine and stay in [...]]]></description>
			<content:encoded><![CDATA[<p>The first working prototype of a working split editor is <a href="http://bonovox.be/org.eclipse.spliteditor/org.eclipse.spliteditor_3.4.0.200806302201.jar">here</a>. You can download it and play with it in Eclipse 3.4.</p>
<p>Basic functions like text cursor, current line highlight (these did not work in the first prototype), undo/redo, cut/copy/paste, status bar items (insert mode, line and column numbers) work fine and stay in sync when switching between the top and bottom half of the split editor.</p>
<p>There are also some known issues:</p>
<ul>
<li>Ctrl+Left/Right/Home/End keyboard shortcuts always operate on the top part of the split editor, even if the cursor is (blinking) in the bottom half.</li>
<li>Navigating back and forth using the Alt-Left/Right keys browser-style does not remember the correct editor along with the location and doe not move between the top/bottom half of the editor. I actually have no plans of fixing this. This problem also occurs when opening multiple editor tabs.</li>
</ul>
<p>Here are some images that demonstrate how to open and use the split editor.</p>
<p>First select the Open With dialog&#8230;<br />
<img class="alignnone size-full wp-image-5" title="Split Editor 1" src="http://bonovox.be/blog/wp-content/uploads/2008/06/se1.png" alt="Split Editor 1" width="500" height="298" /></p>
<p>Then select the [Split Text Editor] option&#8230;<br />
<img class="alignnone size-full wp-image-6" title="se2" src="http://bonovox.be/blog/wp-content/uploads/2008/06/se2.png" alt="" width="359" height="442" /></p>
<p>Split the Editor by clicking and dragging on the narrow line that runs all the way across above the first line.<br />
<img class="alignnone size-full wp-image-7" title="se3" src="http://bonovox.be/blog/wp-content/uploads/2008/06/se3.png" alt="" width="500" height="358" /></p>
<p>And there you go&#8230; long live the split editor!<br />
<img class="alignnone size-full wp-image-8" title="se4" src="http://bonovox.be/blog/wp-content/uploads/2008/06/se4.png" alt="" width="500" height="326" /></p>
<p>You can try different commands out and see if they work when you move between the two sides (top and bottom) of the editor&#8230;<br />
<img class="alignnone size-full wp-image-9" title="se5" src="http://bonovox.be/blog/wp-content/uploads/2008/06/se5.png" alt="" width="500" height="274" /></p>
<p>That&#8217;s it for now. Enjoy!</p>
<p><strong>Bonus </strong>The plugin now includes source code so you can see the kind of monster that lurks in the background to make editor splitting work.</p>
<p><strong>Up Next</strong> Next up is a java code splitter, after I resolve the remaining known issues with basic editing functionality. I will also put up an update site for faster/easier delivery of future updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=4</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>First split editor prototypes available</title>
		<link>http://bonovox.be/blog/?p=3</link>
		<comments>http://bonovox.be/blog/?p=3#comments</comments>
		<pubDate>Wed, 25 Jun 2008 02:40:43 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[eclipse gsoc spliteditor]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=3</guid>
		<description><![CDATA[<p>In the true spirit of &#8220;release early, release often&#8221; I am making my first prototype of a split editor available now as an Eclipse <a href="http://bonovox.be/org.eclipse.spliteditor/2008-06-23/plugins/org.eclipse.spliteditor_3.4.0.jar">plugin</a>. The plugin works in the new <a href="http://www.eclipse.org/ganymede/">Eclipse 3.4 Ganymede</a>. Download, place in your Eclipse dropins directory and you&#8217;re set to go.</p> <p>Instructions on how to test the plugin [...]]]></description>
			<content:encoded><![CDATA[<p>In the true spirit of &#8220;release early, release often&#8221; I am making my first prototype of a split editor available now as an Eclipse <a href="http://bonovox.be/org.eclipse.spliteditor/2008-06-23/plugins/org.eclipse.spliteditor_3.4.0.jar">plugin</a>. The plugin works in the new <a href="http://www.eclipse.org/ganymede/">Eclipse 3.4 Ganymede</a>. Download, place in your Eclipse dropins directory and you&#8217;re set to go.</p>
<p>Instructions on how to test the plugin are available on the <a href="http://wiki.eclipse.org/index.php?title=Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE#Implementations">wiki</a>.</p>
<p>Keep in mind that this is a <strong>very</strong> early prototype and it barely works. There are a lot of issues. If you do download it, please feel free to share your experience with me by posting your (encouraging/bashful/hateful/frustrated/&#8230;) comment to this blog or the wiki.</p>
<p>There will be lots more in the coming weeks, so stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=3</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://bonovox.be/blog/?p=1</link>
		<comments>http://bonovox.be/blog/?p=1#comments</comments>
		<pubDate>Tue, 24 Jun 2008 07:57:54 +0000</pubDate>
		<dc:creator>nikolay_botev</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bonovox.be/blog/?p=1</guid>
		<description><![CDATA[<p>Welcome! I am working on implementing a <a href="http://bugs.eclipse.org/8009">split editor</a> for <a href="http://www.eclipse.org">Eclipse</a> as part of <a href="http://code.google.com/soc/2008/">Google Summer of Code 2008</a>.</p> <p>I will track my progress on the project in this blog and on the <a href="http://wiki.eclipse.org/index.php?title=Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE">Eclipse Wiki page</a> dedicated to my project.</p> <p>Stay tuned!</p>]]></description>
			<content:encoded><![CDATA[<p>Welcome! I am working on implementing a <a href="http://bugs.eclipse.org/8009">split editor</a> for <a href="http://www.eclipse.org">Eclipse</a> as part of <a href="http://code.google.com/soc/2008/">Google Summer of Code 2008</a>.</p>
<p>I will track my progress on the project in this blog and on the <a href="http://wiki.eclipse.org/index.php?title=Implement_Split_File_Editor_Functionality_for_the_Eclipse_IDE">Eclipse Wiki page</a> dedicated to my project.</p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://bonovox.be/blog/?feed=rss2&#038;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

