<?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>Developers blog &#187; yvv</title>
	<atom:link href="http://www.realdevelopers.com/blog/author/vladimir/feed" rel="self" type="application/rss+xml" />
	<link>http://www.realdevelopers.com/blog</link>
	<description>realdevelopers.com</description>
	<lastBuildDate>Wed, 14 Sep 2011 21:38:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Javascript and XHTML. Allowing special symbols (&amp; and </title>
		<link>http://www.realdevelopers.com/blog/code/javascript-and-xhtml-allowing-special-symbols-and</link>
		<comments>http://www.realdevelopers.com/blog/code/javascript-and-xhtml-allowing-special-symbols-and#comments</comments>
		<pubDate>Mon, 01 Mar 2010 16:26:12 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=847</guid>
		<description><![CDATA[Although it may seem to be obvious for experienced web page authors, it was a discovery for me: XHTML does not understand special symbols &#8220;&#38;&#8221; and &#8220;&#60;&#8221; if written directly. So it&#8217;s impossible for example to perform &#8220;and&#8221; operation (&#38;&#38;) in javascript on the page.
There are two solutions for that:
1) Use CDATA for such sections [...]]]></description>
			<content:encoded><![CDATA[<p>Although it may seem to be obvious for experienced web page authors, it was a discovery for me: XHTML does not understand special symbols &#8220;&amp;&#8221; and &#8220;&lt;&#8221; if written directly. So it&#8217;s impossible for example to perform &#8220;and&#8221; operation (&amp;&amp;) in javascript on the page.</p>
<p>There are two solutions for that:</p>
<p>1) Use CDATA for such sections of data, f.e.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;script type=&quot;text/javascript&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; //&lt;![CDATA[
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;function enableDisableRegisterButton(element1, element2) {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; registerButtonWrapper.disabled = !(element1.checked &amp;&amp; element2.checked);
</div>
</li>
<li class="li2">
<div class="de2">...
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;}
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ]]&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/script&gt;</div>
</li>
</ol>
</div>
<p><span id="more-847"></span><br />
or 2) Use escaped HTML sequences</p>
<div class="dean_ch">
<ol>
<li>
<pre class="de1" style="margin:0;">&#038; : &amp;amp;</pre>
</li>
<li>
<pre class="de1" style="margin:0;">> : &amp;lt;</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/code/javascript-and-xhtml-allowing-special-symbols-and/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facelet code completion in IDE.</title>
		<link>http://www.realdevelopers.com/blog/code/facelet-code-completion-in-ide</link>
		<comments>http://www.realdevelopers.com/blog/code/facelet-code-completion-in-ide#comments</comments>
		<pubDate>Fri, 26 Feb 2010 11:23:52 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[code completion]]></category>
		<category><![CDATA[facelets]]></category>
		<category><![CDATA[IDE]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=833</guid>
		<description><![CDATA[When we are editing web pages in our favourite IDE we expect that it will provide code completion support for all tags and their attributes we use. It is true for plain HTML pages as well as for JSPs and of course XHTMLs. How does code completion works? Very simple: we need to include tag [...]]]></description>
			<content:encoded><![CDATA[<p>When we are editing web pages in our favourite IDE we expect that it will provide code completion support for all tags and their attributes we use. It is true for plain HTML pages as well as for JSPs and of course XHTMLs. How does code completion works? Very simple: we need to include tag library in page template and that&#8217;s it! IDE should analyze this tag library and use tag metadata to provide code completion for page author automatically. Of course tag library should contain all neccessary information for tags, their attributes, functions, etc.</p>
<p>When we create tag library for JSP everything is straightforward: tag library schema support all this information. So we simply create something like that:<span id="more-833"></span></p>
<p><strong>Listing 1.</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;taglib</span> <span class="re0">xmlns</span>=<span class="st0">&quot;http://java.sun.com/xml/ns/j2ee&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">xmlns:xsi</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">xsi:schemaLocation</span>=<span class="st0">&quot;http://java.sun.com/xml/ns/j2ee</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd&quot;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">version</span>=<span class="st0">&quot;2.0&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;description<span class="re2">&gt;</span></span></span>description<span class="sc3"><span class="re1">&lt;/description<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;display-name<span class="re2">&gt;</span></span></span>My Tag Library<span class="sc3"><span class="re1">&lt;/display-name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;tlib-version<span class="re2">&gt;</span></span></span>1.0<span class="sc3"><span class="re1">&lt;/tlib-version<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;short-name<span class="re2">&gt;</span></span></span>mytl<span class="sc3"><span class="re1">&lt;/short-name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc3"><span class="re1">&lt;uri<span class="re2">&gt;</span></span></span>http://my.site.com/tags/mytaglibrary<span class="sc3"><span class="re1">&lt;/uri<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;tag<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;name<span class="re2">&gt;</span></span></span>inputText<span class="sc3"><span class="re1">&lt;/name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;tag-class<span class="re2">&gt;</span></span></span>com.mysite.my.taglib.InputTextTag<span class="sc3"><span class="re1">&lt;/tag-class<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;body-content<span class="re2">&gt;</span></span></span>empty<span class="sc3"><span class="re1">&lt;/body-content<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="sc3"><span class="re1">&lt;attribute<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;name<span class="re2">&gt;</span></span></span>type<span class="sc3"><span class="re1">&lt;/name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;required<span class="re2">&gt;</span></span></span>true<span class="sc3"><span class="re1">&lt;/required<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;rtexprvalue<span class="re2">&gt;</span></span></span>false<span class="sc3"><span class="re1">&lt;/rtexprvalue<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/attribute<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&#8230;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/tag<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/taglib<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>and in page template we include this tag library using taglib directive:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;</span>%@ taglib <span class="re0">prefix</span>=<span class="st0">&quot;mytl&quot;</span> <span class="re0">uri</span>=<span class="st0">&quot;http://my.site.com/tags/mytaglibrary&quot;</span> %<span class="re2">&gt;</span></span></div>
</li>
</ol>
</div>
<p>After that IDE does all the magic and when we try to insert new tag it helps us to correctly type it, reveals all its possible attributes, their state, etc.</p>
<h3>Problem with facelet code completion.</h3>
<p>What happens when we try to do the same thing for facelets? Problem is that <a href="http://java.sun.com/dtd/facelet-taglib_1_0.dtd">facelet taglib DTD</a> <strong>does NOT</strong> support attributes and their special settings. According to it, it supports only name of component/renderer, converter or validator. These names are then looked up in faces-config.xml and are mapped to appropriate java classes. Then facelet framework invokes getters/setters on these classes using reflection API.</p>
<p><strong>Listing 2.</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;facelet-taglib<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;namespace<span class="re2">&gt;</span></span></span>http://ng.conject.com/jsf/facelets<span class="sc3"><span class="re1">&lt;/namespace<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;tag<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;tag-name<span class="re2">&gt;</span></span></span>input<span class="sc3"><span class="re1">&lt;/tag-name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="sc3"><span class="re1">&lt;component<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;component-type<span class="re2">&gt;</span></span></span>InputComponent<span class="sc3"><span class="re1">&lt;/component-type<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;renderer-type<span class="re2">&gt;</span></span></span>InputRenderer<span class="sc3"><span class="re1">&lt;/renderer-type<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/component<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/tag<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/facelet-taglib<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>What&#8217;s inconvenient in this approach is the lack of full support of code completion. IDE doesn&#8217;t know about tag attributes and their special settings, so it can&#8217;t help page author in fullfilling correct data. That leads to lot&#8217;s of typos, which can be found only during runtime.</p>
<h3>Solution.</h3>
<p>How to avoid it? I did it by creating another &#8220;dummy&#8221; tag library. It&#8217;s very similar to the one above with the exception that no tag class is specified. TLD is USED at runtime, it only helps to enable code completion and validation for tag attributes in IDE. Small excerpt from it:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;tlib-version<span class="re2">&gt;</span></span></span>1.0<span class="sc3"><span class="re1">&lt;/tlib-version<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;short-name<span class="re2">&gt;</span></span></span>ngfl<span class="sc3"><span class="re1">&lt;/short-name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;uri<span class="re2">&gt;</span></span></span>http://ng.conject.com/tags/ng-facelets<span class="sc3"><span class="re1">&lt;/uri<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="sc3"><span class="re1">&lt;tag<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;name<span class="re2">&gt;</span></span></span>msg<span class="sc3"><span class="re1">&lt;/name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="coMULTI">&lt;!&#8211; No tag class needed &#8211; we are using it in facelets only &#8211;&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;tag-class</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;body-content<span class="re2">&gt;</span></span></span>empty<span class="sc3"><span class="re1">&lt;/body-content<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="sc3"><span class="re1">&lt;attribute<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;name<span class="re2">&gt;</span></span></span>key<span class="sc3"><span class="re1">&lt;/name<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;required<span class="re2">&gt;</span></span></span>true<span class="sc3"><span class="re1">&lt;/required<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/attribute<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/tag<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Now it&#8217;s time to do final thing: let&#8217;s make sure your IDE reads exactly this &#8220;dummy&#8221; tld and not the one in Listing 2. For that we need to map URI of facelet tag library to the location of dummy tag library. In IDEA it is done like that:</p>
<p>1) File-&gt;Settings-&gt;Resources<br />
2) Add external resource (&lt;facelet_taglib_uri -&gt; &lt;path_to_dummy_taglibrary&gt;)<br />
3) Enable &#8220;Project-related&#8217; checkbox.</p>
<p><img src="http://www.realdevelopers.com/blog/wp-content/uploads/2010/02/Screenshot10.png" alt="Registering dummy tag library in IntelliJ IDEA" width="640" height="480" /></p>
<p>That&#8217;s it! Now when you edit your xhtml IDE provides you with full code completion support for all your tags and functions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/code/facelet-code-completion-in-ide/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facelets vs JSP</title>
		<link>http://www.realdevelopers.com/blog/development/facelets-vs-jsp</link>
		<comments>http://www.realdevelopers.com/blog/development/facelets-vs-jsp#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:45:31 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[facelets]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=818</guid>
		<description><![CDATA[This blog entry opens a series of short articles describing my studying of facelets and attempts to apply it in our platform.

First of all, why does our platform need facelets? Currently we are using JSPs with custom JSF tags inside so what's the problem with combining JSF and JSP?]]></description>
			<content:encoded><![CDATA[<p>This blog entry opens a series of short articles describing my studying of facelets and attempts to apply it in our platform.</p>
<h3><span style="color: #000000;"><strong>Problem using JSF with JSPs.</strong></span></h3>
<p>First of all, why does our platform need facelets? Currently we are using JSPs with custom JSF tags inside so what&#8217;s the problem with combining JSF and JSP? There are lots of good articles related to this topic, so I won&#8217;t be repeating their authors. I&#8217;ll just briefly sum up main idea.</p>
<ul>
<li>JSP&#8217;s goal is to produce static and dynamic content based on HTML/scriptlet mixture; technically speaking JSP produces a servlet. JSP page is processed in one pass from top to bottom, with JSP action elements processed in the order in which they appear in the page.</li>
<p><span id="more-818"></span></ul>
<ul>
<li>JSF maintains component tree where components are created, asked to process their input (if any), and then asked to render themselves. These three actions must be processed separately in a well-defined order.</li>
</ul>
<p>The root cause of all confusion is that the life cycle of the JSF component model is independent from the life cycle of the JSP-produced servlet. So using JSF components via JSF custom tags lead to the problem that component creation and rendering happens in parallel, causing all kinds of bugs (see <a href="http://onjava.com/lpt/a/4919">&#8220;Improving JSF by Dumping JSP&#8221;</a>).</p>
<p>Ok&#8230;then how do we (still) manage to survive with JSPs in our platform? Apart from God&#8217;s help we are relying on custom-made hacks. Hacks are integrated in all parts of JSP-JSF bridge; if some day I have a courage I could possibly write an article describing most interesting ones. All in all, main drawback of these hacks is that view layer in our application became slow, clumsy and what&#8217;s even worse &#8211; hard to maintain and upgrade. And it&#8217;s getting worse with each iteration.<br />
<strong><br />
</strong></p>
<h3><strong>What&#8217;s so special with facelets?</strong></h3>
<p><a href="https://facelets.dev.java.net">Facelets</a> is a view technology for JSF that replaces the standard view handler which deals with JSP pages. It is built from the ground up with the JSF component life cycle in mind. With Facelets, you produce templates that build a component tree, not a servlet. Facelets is a powerful templating system that allows you to define JSF views using HTML-style templates, reduces the amount of code necessary to integrate components into the view  (see <a href="http://www.ibm.com/developerworks/java/library/j-facelets">&#8220;Facelets fits JSF like a glove&#8221;</a> for more detailed information).<br />
By using facelets in our platform we&#8217;ll become closer to native JSF life cycle. Fast templating and possibility to create reusable composition components will allow us to keep DRY principle while developing new pages. Developing web part of our application should significantly reduce programmer efforts and (who knows?) may become a real joy for him (isn&#8217;t it what a Real Developer wants <img src='http://www.realdevelopers.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/development/facelets-vs-jsp/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interoffice Pairing &#8211; Day Four</title>
		<link>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-four</link>
		<comments>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-four#comments</comments>
		<pubDate>Mon, 02 Mar 2009 17:36:16 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[legacy code]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=133</guid>
		<description><![CDATA[Tobi gives us some hints how to improve our ant script (there&#8217;s better ant task which we can use). Let&#8217;s see.. surely it&#8217;s better, let&#8217;s introduce it&#8230;done! Looks much nicer indeed. Ok, seems like the work is done..but wait, something tells us that we can do even more in this task. There&#8217;s still a possibility to insert [...]]]></description>
			<content:encoded><![CDATA[<p>Tobi gives us some hints how to improve our ant script (there&#8217;s better ant task which we can use). Let&#8217;s see.. surely it&#8217;s better, let&#8217;s introduce it&#8230;done! Looks much nicer indeed. Ok, seems like the work is done..but wait, something tells us that we can do even more in this task. There&#8217;s still a possibility to insert incorrect data via deprecate constructor. We quickly get rid from it. There&#8217;s also some legacy code which I want to delete as well. Like that? No way &#8211; says Tobi, this stuff is still used from hidden corners of NG, don&#8217;t delete it. Let&#8217;s have a look..o-la-la, indeed there is still a lot of strange functionality which I even didn&#8217;t know about. It seems to be too diffcult to refactor it this time. <span id="more-133"></span></p>
<p>We revert deletion of legacy code support. Phew, ok &#8211; story seems to be done. Let&#8217;s measure performance once again&#8230; Bingo, results are still very good, no test fails, we can commit our code to trunk!</p>
<p><strong>Resume</strong></p>
<p>Story is done, signed off and committed to trunk. I feel myself satisfied with results we achieved but even more I&#8217;m pleased with the way we worked during last 4 days. It seemed to be a bit chaotic and funny in the beginning, but then everything went pretty fast and we were all tuned on the same wave. The difference between in-office and inter-office pair programming was practically invisible after we established environment. Everybody knew what his teammate is doing, everybody could follow his colleague&#8217;s ideas and bring his own ones. Everybody discuss them and finally team comes up with certain solution. Nice try!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-four/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interoffice Pairing &#8211; Day Three</title>
		<link>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-three</link>
		<comments>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-three#comments</comments>
		<pubDate>Fri, 27 Feb 2009 18:22:48 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[remote]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=131</guid>
		<description><![CDATA[I check my mails and found commit from Tobi where he refactored our yesterday&#8217;s code. We are a bit confused and decide to wait for him in order to clarify his changes. Meanwhile I setup RealVNC on my Windows, Andrea and Christoph successfully log to it. Desktop sharing now works pretty good for both sides! Tobi comes [...]]]></description>
			<content:encoded><![CDATA[<p>I check my mails and found commit from Tobi where he refactored our yesterday&#8217;s code. We are a bit confused and decide to wait for him in order to clarify his changes. Meanwhile I setup RealVNC on my Windows, Andrea and Christoph successfully log to it. Desktop sharing now works pretty good for both sides! Tobi comes and we understand that his changes were done due to separation of concerns in classes. Ok, we are not agreed, we try to refactor the code in the way we see it. Damn, it&#8217;s not that simple as it seemed to be for the first time! Each solution has it&#8217;s benefits and drawbacks. Ok, we leave the code as it is now and check it with <a href="http://www.ej-technologies.com/products/jprofiler/overview.html">JProfiler</a>. Results are outstanding, with having cached classes map we double improve performance! Now we quickly do ant target which automatically generates persistent classes&#8230;done. It&#8217;s too late now, so we agree to continue on Monday.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-three/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interoffice Pairing &#8211; Day Two</title>
		<link>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-two</link>
		<comments>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-two#comments</comments>
		<pubDate>Thu, 26 Feb 2009 17:14:28 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[remote]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=129</guid>
		<description><![CDATA[We are trying to setup VNC server on my side. For some reason Andrea cannot connect to my linux vnc server&#8230; &#60;gulp&#62;
Ok, let&#8217;s continue working in &#8220;secretary-boss&#8221; style once again.. No it&#8217;s a bit quicker, we begin to better understand each other. Christoph joins us, now we are three in the developers chat now! Initial task [...]]]></description>
			<content:encoded><![CDATA[<p>We are trying to setup VNC server on my side. For some reason Andrea cannot connect to my linux vnc server&#8230; &lt;gulp&gt;</p>
<p>Ok, let&#8217;s continue working in &#8220;secretary-boss&#8221; style once again.. No it&#8217;s a bit quicker, we begin to better understand each other. Christoph joins us, now we are three in the developers chat now! Initial task is quickly done, but now we think if we can improve our implementation even more. I want to take active part in coding not just by typing ideas in skype, but also in IDE. That leads us to establishing alternative VNC server. Christoph uses Windows and RealVNC. I try to connect to his server &#8211; bingo! I can even type there. We exchange several good ideas about code refactoring and found new task to implement &#8211; automatic generation and validation of persistent classes with ant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-two/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interoffice Pairing &#8211; Day One</title>
		<link>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-one</link>
		<comments>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-one#comments</comments>
		<pubDate>Wed, 25 Feb 2009 17:07:46 +0000</pubDate>
		<dc:creator>yvv</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[remote]]></category>

		<guid isPermaLink="false">http://www.realdevelopers.com/blog/?p=127</guid>
		<description><![CDATA[I&#8217;m very curious about our inter-office (Munich and St. Petersburg) pair programming. Will it work or no? How will it go? Where should we start with?
First idea is to establish chat and voice chat as well &#8211; skype seems to be the best candidate. Also we should somehow establish desktop sharing. Andrea tells me that she [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very curious about our inter-office (Munich and St. Petersburg) pair programming. Will it work or no? How will it go? Where should we start with?</p>
<p>First idea is to establish chat and voice chat as well &#8211; skype seems to be the best candidate. Also we should somehow establish desktop sharing. Andrea tells me that she already set up some VNC server on her MAC. I never worked with VNC software before, so a quick search in google gives me several good candidates to start with (<a href="http://www.realvnc.com/">RealVNC</a> for Windows and <a href="http://www.tightvnc.com/">tightvnc</a> for linux). Set up clients on both OS. Trying to use RealVNC &#8211; oops, it cannot connect to VNC server on MAC. <span id="more-127"></span></p>
<p>After investigation it appeared that there&#8217;s a<a href="http://rclermont.blogspot.com/2008/01/using-ubuntu-vnc-client-to-connect-to.html"> known problem</a> with connecting to MAC via VNC protocol. Workarounds don&#8217;t work. <a href="http://lifehacker.com/software/how-to/remote-control-leopard-with-tightvnc-319528.php">Trying to use tightvnc</a>&#8230;works fine! I can see Andrea&#8217;s desktop, can even manipulate her mouse, but not keyboard. We decide to establish &#8220;secretary-boss&#8221; approach for the first try. Andrea types and I watch her typing and correct or propose new ideas. Pretty funny, but a bit slow and non-effective way. Let&#8217;s see what will be tomorrow&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.realdevelopers.com/blog/development/interoffice-pairing-day-one/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

