<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Lotus Shade of Yellow</title>
    <link>http://lsoy.posterous.com</link>
    <description>some things IBM - many things Lotus - work - life - family</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#c39389c02" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/lsoy" /><feedburner:info uri="lsoy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Thu, 09 Feb 2012 13:05:26 -0800</pubDate>
      <title>Vertically stacking members in Dojo List Text Box</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/poKYOQrwe6M/vertically-stacking-members-in-dojo-list-text</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/vertically-stacking-members-in-dojo-list-text</guid>
      <description>&lt;p&gt;
	&lt;p&gt;The extension library provides the Dojo List Text Box (djextListTextBox) control that, connected to a value picker, makes it possible to create a list whose members are easy to remove. Using the oneUI v2.1, the default display is similar to this:&lt;p /&gt;  &lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f090684" height="61" src="http://getfile4.posterous.com/getfile/files.posterous.com/lsoy/Dlr3UwSSIJLFMIYjVlxhWYtn2jWwWWNLqitrEL8yfekNfdo9AFdcD2FFSswf/0F090684.gif" width="304" /&gt;
&lt;/div&gt;
&lt;br /&gt; But, what if you instead wanted list members to be stacked vertically? Something like this:&lt;p /&gt;  &lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f769684" height="108" src="http://getfile9.posterous.com/getfile/files.posterous.com/lsoy/wXDbW5dATHzDvVpEXEhBFXqDXI7W66lOKugFs1IZUwdCGkV1FvgBZCMB7fiJ/0F769684.gif" width="151" /&gt;
&lt;/div&gt;
&lt;p /&gt;  With some CSS, it is actually quite easy to accomplish. First, put your djextListTextBox inside a panel and give it a style class, let's call it verticalStack. Then, edit your existing or create a new style sheet and add following:&lt;p /&gt;  &amp;nbsp;.verticalStack span {&lt;br /&gt; 	display: block;&lt;br /&gt; 	margin-left: 0px !important;&lt;br /&gt; }&lt;br /&gt; .verticalStack a span {&lt;br /&gt; 	display: inline;;&lt;br /&gt; }&lt;p /&gt;  What does it all mean? If you take a look at the HTML code that the Dojo List Text Box control generates, you'll see that each list member is actually a &amp;lt;span&amp;gt; tag, which in turn contains an &amp;lt;a&amp;gt; tag that contains a &amp;lt;span&amp;gt; tag.&lt;p /&gt;  So, the CSS says that each &amp;lt;span&amp;gt; in the &amp;lt;div&amp;gt; &amp;nbsp;with class verticalStack should have block display style. &amp;lt;span&amp;gt; tags usually have inline display style, which means that multiple &amp;lt;span&amp;gt; tags are displayed in a row, one after the other. display: block will force them to behave like &amp;lt;p&amp;gt; or &amp;lt;div&amp;gt; tags and display one beneath the other.&lt;p /&gt;  Now, there is a &amp;lt;span&amp;gt; within the &amp;lt;a&amp;gt; tag. And it is also affected by the block display. And that makes the close button (little x) to be displayed beneath the rest of the list member. This is taken care of by the .verticalStack a span style, which returns normal, inline, display style to all &amp;lt;span&amp;gt; tags that are within a &amp;lt;a&amp;gt; tag that is within an element with .verticalStack class applied.&lt;p /&gt;  Finally, using the original style, each list member has applied left margin of 5 pixels to make separetion between consecutive members.We use margin-left: 0px !important to remove that margin and make our members nicely align. The CSS is hierarchical and there are styles higher in the hierarchy that would take precedence, so we need to use !important.&lt;p /&gt;  That's all that is needed. Have in mind that this works if you are using oneUI, but it should point you in the right direction even if you are using other layout. And, by applying some more CSS you can easily make it look even better:&lt;p /&gt;  &lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f926975" height="206" src="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/o2PmFH7avac7N5PwzjXzwHOV8pTwW6JctuumqaC5fYiQZJJLY9ReNXC64c1q/0F926975.gif" width="411" /&gt;
&lt;/div&gt;
&lt;br /&gt; &lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/vertically-stacking-members-in-dojo-list-text"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/vertically-stacking-members-in-dojo-list-text#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/poKYOQrwe6M" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/gif" height="61" width="304" url="http://getfile4.posterous.com/getfile/files.posterous.com/lsoy/Dlr3UwSSIJLFMIYjVlxhWYtn2jWwWWNLqitrEL8yfekNfdo9AFdcD2FFSswf/0F090684.gif">
        <media:thumbnail height="61" width="304" url="http://getfile4.posterous.com/getfile/files.posterous.com/lsoy/Dlr3UwSSIJLFMIYjVlxhWYtn2jWwWWNLqitrEL8yfekNfdo9AFdcD2FFSswf/0F090684.gif" />
      </media:content>
      <media:content type="image/gif" height="108" width="151" url="http://getfile9.posterous.com/getfile/files.posterous.com/lsoy/wXDbW5dATHzDvVpEXEhBFXqDXI7W66lOKugFs1IZUwdCGkV1FvgBZCMB7fiJ/0F769684.gif">
        <media:thumbnail height="108" width="151" url="http://getfile9.posterous.com/getfile/files.posterous.com/lsoy/wXDbW5dATHzDvVpEXEhBFXqDXI7W66lOKugFs1IZUwdCGkV1FvgBZCMB7fiJ/0F769684.gif" />
      </media:content>
      <media:content type="image/gif" height="206" width="411" url="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/o2PmFH7avac7N5PwzjXzwHOV8pTwW6JctuumqaC5fYiQZJJLY9ReNXC64c1q/0F926975.gif">
        <media:thumbnail height="206" width="411" url="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/o2PmFH7avac7N5PwzjXzwHOV8pTwW6JctuumqaC5fYiQZJJLY9ReNXC64c1q/0F926975.gif" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/vertically-stacking-members-in-dojo-list-text</feedburner:origLink></item>
    <item>
      <pubDate>Sun, 05 Feb 2012 23:41:31 -0800</pubDate>
      <title>How expensive is view.getColumnValues()?</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/7ZmK_pwZ8Bs/how-expensive-is-viewgetcolumnvalues</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/how-expensive-is-viewgetcolumnvalues</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I need expert help and advice.&lt;/p&gt;
&lt;p&gt;In the &lt;a href="http://lsoy.posterous.com/tag/applicationisborn"&gt;application we are building&lt;/a&gt;, among other things, we keep record of all payments. One of the resources is an XPage that shows all payments due within certain number of days from 'today'.&lt;/p&gt;
&lt;p&gt;This is how we did it: we already have a Domino view that displays all unpaid payments. We don't like creating a Domino view for each new requirement, so we decided to reuse this one. I wrote some Java code to go through all of these payments, find those that fall within the given time period and then extract interesting data (i.e. client name, due amount, due date) into a hash map. This hash map is saved in the view scope and used as data source for a repeat control on the XPage.&lt;/p&gt;
&lt;p&gt;We also evaluated a solution with full-text database search, but one of the requirements is that when a new payment is added or a payment is paid, the XPage must display those changes immediately. Which means that delay between payment change and full-text index update is unacceptable. And we didn't think that constantly forcing index update was a good idea either.&lt;/p&gt;
&lt;p&gt;Our current solution works well, but I don't like to go through all documents each time I reload the XPage. Now, the view is small and lean (only one sorted column) and it will hardly ever have more than a hundred documents, so the computation is quick. Still, I would like to perform the computation only when the view has changed. One of the solutions that occured to me is this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get view.&lt;/li&gt;
&lt;li&gt;Get all column values for the first column (&lt;span style="color: #808080; font-family: courier, courier-new;"&gt;view.getColumnValues(0);&lt;/span&gt;).&lt;/li&gt;
&lt;li&gt;Calculate the hash value of the column values.&lt;/li&gt;
&lt;li&gt;Get previously calculated hash value from the session/application scope and compare the two.&lt;/li&gt;
&lt;li&gt;If the hash values are the same, do nothing - the existing hash map with payment details is still valid.&lt;/li&gt;
&lt;li&gt;If the hash values are different, perform full computation, update the hash map with payment details and update the hash value.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Is this a sound approach? It should be less intensive than the current solution, but is there a better way to do this? How expensive is the &lt;span style="color: #808080; font-family: courier, courier-new;"&gt;view.getColumnValues()&lt;/span&gt; call?&lt;/p&gt;
&lt;p&gt;Any comments would&amp;nbsp; be greatly appreciated.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/how-expensive-is-viewgetcolumnvalues"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/how-expensive-is-viewgetcolumnvalues#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/7ZmK_pwZ8Bs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/how-expensive-is-viewgetcolumnvalues</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 11 Jan 2012 10:06:00 -0800</pubDate>
      <title>Guide: Installing Mercurial server on Red Hat Enterprise Linux</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/y3HW2Z8zu3Y/guide-installing-mercurial-server-on-red-hat</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/guide-installing-mercurial-server-on-red-hat</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;: The credit for this guide goes to the guys who figured out all the difficult parts: &lt;/span&gt;&lt;a href="http://jake.murzy.com/"&gt;&lt;span style="font-family: sans-serif;"&gt;Jake Murzy&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;and &lt;/span&gt;&lt;a href="http://billcarroll.posterous.com/"&gt;&lt;span style="font-family: sans-serif;"&gt;Bill Carroll&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;for solving Red Hat related issues and &lt;/span&gt;&lt;a href="http://www.qtzar.com/blogs/qtzar.nsf"&gt;&lt;span style="font-family: sans-serif;"&gt;Declan Sciolla-Lynch&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;for showing how to integrate Apache and Domino LDAP. I only brought it all together in one blog post. &lt;/span&gt;&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;If you are using Mercurial as a source control system, you probably wish you had a central repository with which all of the developers could sync. You might use one of the public domain servers, but chances are that you would want your own server that is completely under your control. Declan &lt;/span&gt;&lt;a href="http://www.qtzar.com/blogs/qtzar.nsf/byTag.xsp?tag=Mercurial"&gt;&lt;span style="font-family: sans-serif;"&gt;has showed&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;how to install and configure Mercurial on Ubuntu server. But, what if you use Red Hat or some of its clones, like CentOS or Scientific Linux? Mercurial, being built for Debian, won't install on a Red Hat-based system and. But, don't despair - it is actually quite easy to install it on Red Hat. Just follow the steps.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;This guide is tested using Red Hat, CentOS and Scientific Linux, both versions 5.x and 6.x, but only 32-bit. The rest is based on CentOS 6, but you can choose whicever you prefer, as there is no difference between them for our purpose.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;I won't go into installation of the server itself. It has become straight forward, even for Linux beginners. When you install, it is enough to choose Basic Server as a the installation type. This will install basic things, without much overhead. If you wish, choose Gnome / KDE desktop and X Window System (and anything else for that matter), so that you can have GUI. You won't need GUI to install Mercurial, though.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Even though it is not advisable, I have logged in as root and performed all of the following tasks.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;I suggest that you update complete system before proceeding, simply issue the following in terminal:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum update&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;OK, now it's time to do some business. First let's install Apache server and confirm version&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum install httpd&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# httpd -v&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Server version: Apache/2.2.15 (Unix)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Server built: &amp;nbsp; Jul &amp;nbsp;7 2011 11:27:40&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now, the Python should already be installed. Let's check the version:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# python -V&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Python 2.6.5&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;You can have several Python environments installed on the server (something like JRE), depending on what different applications demand. Mercurial works fine with this version and we won't be running any conflicting applications, so we'll use this system installation.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;We'll be building Mercurial and &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;mod_wsgi&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;from source, so we need some tools and libraries.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Make &lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;should already be installed on the system, let's check:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# make -v&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;GNU Make 3.81&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;If not, install by running&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum install make&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now, install gcc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum install gcc&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Install rpm-build&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;# yum install rpm-build&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Install the libraries:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum install httpd-devel&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# yum install python-devel&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now cd to a temporary / download directory. I usually use /tmp for this:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /tmp&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Download mod_wsgi source:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# wget &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&lt;a href="http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz"&gt;http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Unpack:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# tar xvfz mod_wsgi-3.3.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Build the module:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd mod_wsgi-3.3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# ./configure&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# make&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;(You will see some warnings here, but it is OK.)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# make install&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;This will install the library&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;mod_wsgi.so&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;in &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;/etc/httpd/modules&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now we need to do the similar thing with docutils.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /tmp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# wget &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&lt;a href="http://prdownloads.sourceforge.net/docutils/docutils-0.8.1.tar.gz?download"&gt;http://prdownloads.sourceforge.net/docutils/docutils-0.8.1.tar.gz?download&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# tar xvfz docutils-0.8.1.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd docutils-0.8.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# ./setup.py install&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;This will install &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;docutils &lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;in &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;/usr/lib/python2.6/site-packages/docutils&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;We can now finally start installing Mercurial. We are going to make an rpm file, which you can keep and use to install Mercurial on other servers.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /tmp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# wget &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&lt;a href="http://mercurial.selenic.com/release/mercurial-2.0.2.tar.gz"&gt;http://mercurial.selenic.com/release/mercurial-2.0.2.tar.gz&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# tar xvfz mercurial-2.0.2.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now you need to edit the file &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;mercurial-2.0.2/contrib/mercurial.spec&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;. Open this file in text editor and search for the line starting with "Version:" (near the top of the file) and replace "snapshot" with "2.0.2".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Then, go several lines down until you come to line starting with "BuildRequires:". Remove "python-docutils &amp;gt;= 0.5" from the list, so that the line looks like this:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;BuildRequires: python &amp;gt;= 2.4, python-devel, make, gcc, gettext&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;(For some reason, rpm-build does not see the docutils that we built in previous step, so we need to remove it as a prerequisite. But, it is there and Mercurial will use it.)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;If you are feeling geeky, you can do the same by issuing the following in the terminal:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /tmp/mercurial-2.0.2/contrib/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# sed -i -e's/snapshot/2.0.2/' mercurial.spec&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# sed -i -e's/, python-docutils &amp;gt;= 0.5//' mercurial.spec&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Piece of cake :-)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now, we need to repackage everything:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# tar cvf - mercurial-2.0.2 | gzip &amp;gt; mercurial-2.0.2.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Create the rpm:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# rpmbuild -tb mercurial-2.0.2.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;If everything goes well, you'll see &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;+ exit 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;as the last line. We have our rpm now, we are almost there.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;The created rpm could be in a few places. If you were doing everything like me and as the root, then yours should be in&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;/root/rpmbuild/RPMS/i386/&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# ls /root/rpmbuild/RPMS/i386/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;mercurial-2.0.2-0.i386.rpm&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now we can install and check version:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# rpm -ivh /root/rpmbuild/RPMS/i386/mercurial-2.0.2-0.i386.rpm&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Preparing... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;########################################### [100%]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp;1:mercurial &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;########################################### [100%]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;[root@code1 tmp]# hg --version&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Mercurial Distributed SCM (version 2.0.2)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;And that was installation done. Now it's time to configure it.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Open &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;/etc/httpd/conf/httpd.conf&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;in a text editor (you might want to make a copy first).&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;First, set these values (I show you my values, you should enter yours):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;ServerAdmin &lt;a href="mailto:admin@cs-computing.com"&gt;admin@cs-computing.com&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;ServerName code1.cs-computing.com:80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;NameVirtualHost *:80&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;(You will need to uncomment ServerName and NameVirtualHost)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Find section with number of LoadModule lines. Add the following:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;LoadModule wsgi_module modules/mod_wsgi.so&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Find section with AddHandler lines. Add the following:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;AddHandler wsgi-script .wsgi&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;(In case that you installed specific version of Python to be used with Mercurial, add something like this as well:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;WSGIPythonHome /usr/lib/python2.7&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now, scroll all the way to the end, and let's add following VirtualHosts:&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;First, an empty declaration, to trap requests with unrecognized host name:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Then, add a declaration for our Mercurial server (in my environment, the server's host name is code1.cs-computing.com. However, I also created a DNS Alias hg.cs-computing.com that points to code1.cs-computing.com and which I use to access the Mercurial server):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; ServerName hg.cs-computing.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; ErrorLog /var/log/httpd/hg.cs-computing.com-error_log&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; CustomLog /var/log/httpd/hg.cs-computing.com-access_log common&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; WSGIScriptAlias / /var/www/vhosts/hg.cs-computing.com/cgi-bin/hgweb.wsgi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;We need to create directories to hold our Mercurial repositories (repos) and configurations (cgi-bin):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /var/www/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# mkdir -p vhosts/hg.cs-computing.com/cgi-bin&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# mkdir -p vhosts/hg.cs-computing.com/repos&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Copy file&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;hgweb.wsgi&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;from unpacked Mercurial source package to the cgi-bin directory:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cp /tmp/mercurial-2.0.2/contrib/hgweb.wsgi /var/www/vhosts/hg.cs-computing.com/cgi-bin/&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Open hgweb.wsgi in text editor and edit line starting with config to read:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;config = "/var/www/vhosts/hg.cs-computing.com/cgi-bin/hgweb.config"&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Create new file called&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;hgweb.config&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;in &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;/var/www/vhosts/hg.cs-computing.com/cgi-bin&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# touch vhosts/hg.cs-computing.com/cgi-bin/hgweb.config&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Open this file in text editor and add the following:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;[paths]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;/ = /var/www/vhosts/hg.cs-computing.com/repos/**&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;[web]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;allow_push = *&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;push_ssl = false&lt;/span&gt;&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;We are nearing the end, hold on! :-)&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;It' time to create a test repo.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# cd /var/www/vhosts/hg.cs-computing.com/repos/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# hg init hgtest&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;We need to change owner and permissions (since we are running this as root):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# chgrp -R apache hgtest/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# chmod -R g+rwx hgtest/&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Start the Apache:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# service httpd start&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Starting httpd: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ &amp;nbsp;OK &amp;nbsp;]&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Open your browser and enter the address that you used for your Mercurial virtual host (hg.cs-computing.com in my case). You should see the Mercurial repos:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/viIqoQyNdGsH8AJErdryTedIAjJRAC9dKx6iOHnoWyENfFqwoq0TxAxjBa6E/11112732.gif"&gt;&lt;img alt="11112732" height="354" src="http://getfile4.posterous.com/getfile/files.posterous.com/lsoy/i0IoS6g9qk1Vuq5GmWZyKC2ckXqbzAClIARPpliWWL7NxGmKR2X8UMEk3Zi2/11112732.gif.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;So, now you have working Mercurial server. We only need to add some sort of authentication. Let's use Domino LDAP, just like Declan did in his series. There is no special steps required to configure Domino LDAP, it should just work.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Open&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&amp;nbsp;/etc/httpd/conf/httpd.conf&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;in a text editor and scroll down to the definition of Mercurial virtual host. Add directory specification to the VirtualHost specification, so that it looks like this one:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; ServerName hg.cs-computing.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; ErrorLog /var/log/httpd/hg.cs-computing.com-error_log&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; CustomLog /var/log/httpd/hg.cs-computing.com-access_log common&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; WSGIScriptAlias / /var/www/vhosts/hg.cs-computing.com/cgi-bin/hgweb.wsgi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;Directory "/var/www/vhosts/hg.cs-computing.com/"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthType Basic&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthBasicProvider ldap&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthzLDAPAuthoritative on&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthName "Mercurial Server: Login with your Domino credentials"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthLDAPURL "ldap://ldap.cs-computing.com:389/O=Computing?CN"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Require valid-user&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Some explanations:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;AuthType Basic&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;says how to send password. Basic means in clear text, so this is not the most secure environment, but enough for our testing.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;AuthBasicProvider ldap&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;says Apache to use LDAP for authorization. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;&amp;nbsp;AuthzLDAPAuthoritative on&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;means that LDAP is only way to authorize with this server. If we had some other mean of authentication (e.g. Apache built-in users), that we could set this to off and the Apache would first try with LDAP and if it fails continue with other options. (BTW, this is default).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;AuthName "Mercurial Server: Login with your Domino credentials"&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;- this will be shown on login window.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;AuthLDAPURL "ldap://ldap.cs-computing.com:389/O=Computing?CN"&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;- URL to your LDAP server. In this case we are looking from the top of the directory tree (O=Computing) and are using common name (CN) to authenticate. The other parameters that Declan has in his example are all defaults, so I didn't use them.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Require valid-user&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;- means that any user that successfully authenticates will have access.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Save the file and restart the Apache:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;# service httpd restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Stopping httpd: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ &amp;nbsp;OK &amp;nbsp;]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-family: Courier New;"&gt;Starting httpd: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ &amp;nbsp;OK &amp;nbsp;]&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Now try to log in. The Apache should ask for user name and password. Log in as you would in Notes client or iNotes.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;And that's all! We now have Mercurial server running on a Red Hat server, with LDAP authentication, waiting for XPages stuff :-) &lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;Let me know if something is not clear or you encounter problems. I'll do my best to help you.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/guide-installing-mercurial-server-on-red-hat"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/guide-installing-mercurial-server-on-red-hat#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/y3HW2Z8zu3Y" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/gif" height="619" width="874" url="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/viIqoQyNdGsH8AJErdryTedIAjJRAC9dKx6iOHnoWyENfFqwoq0TxAxjBa6E/11112732.gif">
        <media:thumbnail height="354" width="500" url="http://getfile4.posterous.com/getfile/files.posterous.com/lsoy/i0IoS6g9qk1Vuq5GmWZyKC2ckXqbzAClIARPpliWWL7NxGmKR2X8UMEk3Zi2/11112732.gif.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/guide-installing-mercurial-server-on-red-hat</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 04 Jan 2012 10:34:00 -0800</pubDate>
      <title>An application is born: Part 4 - Requirement Management</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/TspOtYUqeNs/an-application-is-born-part-4-requirement-man</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="font-family: sans-serif; font-size: small;"&gt;It's been quite a while since the last post, but we haven't been sitting with our arms crossed. Far from it - we have actually successfully finished our first sprint! More about that in the next post.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; The topic of today's post is requirement management. For me, a requirement has been synonymous with a short, unambiguous, comprehensible sentence describing a (sometimes very limited) set of functionality. Each requirement has to be testable, verifiable and traceable both up and down in the requirement hierarchy. In large projects, the requirements are collected in dozens of requirement specifications documents - for hardware, for software, for interfaces and all of that repeated on various abstraction levels. It is not unusual that there are hundreds or thousands of requirements describing a single product. System analysts then browse through all these documents (or a requirement management application if they are lucky to have one), trying to make sure that requirements really describe system that customer ordered, that there are no conflicting requirements, that test cases have been assigned to all requirements. A very difficult and demanding task and the one that often has direct influence on project's outcome.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; Enter the world of agile software development. And forget most of what you know about requirement management. In most of the agile development, requirements take on a different form. Requirements are longer and often describe large sets of functionality. In fact, they are not even called requirements but user stories. User stories describe what customer wants and do so in terms that customer understands. It is the customer that writes the stories and it is the customer that writes how to test the stories. User stories are written in everyday language and are hence more prone to ambiguity and vague formulations. How can they then replace "traditional" requirements?&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; The answer is simple and lies at the core of the whole agile development process - communication, communication, communication. The user stories are not meant to be truth carved in stone (which is often the case with traditional requirements and changing them requires starting a massive change management process). Instead they are meant to provide a topic of discussion between the customer and the developers. During the course of this discussion, the customer's needs become more evident, more precise and easier to transform into the language that developers understand.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; This discussion occurs immediately before the functions described by the stories are implemented. In the case of Scrum, the discussion happens in what is called Sprint Planning meeting, usually once a month. During this meeting, the team of developers, together with the customer representative choose what stories to implement based on the customer's business priorities. The functions described in these stories are then discussed over and over again, until there is a mutual agreement and understanding about what the story represents. The details that emerge during the discussion are sometimes converted into new stories, but more often they are simply remembered by all involved. Scrum is not about documenting what is clearly evident and understood. After all, the stories are to be implemented, tested and demonstrated in one month (or less) and everybody should be able to remember what was said for such short period.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; When we do first requirement analysis and user story gathering, we use paper note cards that we fill-in by hand (template attached). The user story gathering is most often done by the customer representative (Product Owner in Scrum terms) and the team leader (Scrum Master). On the front side, they fill descriptive title, description and importance. On the back side, they fill how the story is tested. One example is given below:&lt;/span&gt;&lt;p /&gt;  &lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; As you can see, we are trying to use the "As a _____, I want to ______, because ______." form as much as possible, because we found out that it helped us to write good stories. Notice that this card has additional fields, such as ID, Link to and Story points, but at the time of initial story gathering, they are rarely used.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; After the user stories are identified and gathered, the Scrum Master will transfer them into electronic form. We use simple spreadsheet for this. This spreadsheet is essentially Product Backlog that describes everything that is going to be developed. Once in the spreadsheet, the stories continue to live. They are constantly read, discussed and rewritten. The product owner moves them up and down, thus indicating their importance. When the time comes for Sprint Planning meeting, we print the stories directly from the spreadsheet and use them for further discussion and estimation.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; And, based on what we saw in our first sprint, this technique works very well. During our sprint planning meeting we focused only on top priority stories. We estimated how many stories we could finish and made sure that we understood what the customer wants, but also that customer understood what she would get.&lt;/span&gt;&lt;p /&gt; &lt;span style="font-size: small;"&gt; &lt;span style="font-family: sans-serif;"&gt;If you want to learn more about user stories, I can warmly recommend &lt;/span&gt;&lt;a href="http://www.amazon.com/User-Stories-Applied-Software-Development/dp/0321205685/ref=sr_1_1?ie=UTF8&amp;amp;qid=1325688187&amp;amp;sr=8-1"&gt;&lt;span style="font-family: sans-serif;"&gt;User Stories Applied by Mike Cohn&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;. Another great resource that covers practical implementation of Scrum is &lt;/span&gt;&lt;a href="http://www.amazon.com/Scrum-Trenches-Enterprise-Software-Development/dp/1430322640/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1325688223&amp;amp;sr=1-1"&gt;&lt;span style="font-family: sans-serif;"&gt;Scrum and XP from the Trenches by Henrik Kniberg&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;. Lastly, you can &lt;/span&gt;&lt;a href="http://blog.crisp.se/2007/12/18/henrikkniberg/1197973740000"&gt;&lt;span style="font-family: sans-serif;"&gt;download Excel, OpenOffice and Google Docs versions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: sans-serif;"&gt;&amp;nbsp;of the product backlog template from Henrik Kniberg's blog.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt; &lt;span style="font-family: sans-serif; font-size: small;"&gt; Coming next: Our first sprint.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://getfile5.posterous.com/getfile/files.posterous.com/lsoy/FwBJhOdULnFyi9tFsHcmSq3ciGDayYmgotEIEZcBEWoH4fx1aXj2QOB3lULb/0F012471.jpg"&gt;&lt;img alt="0f012471" height="289" src="http://getfile7.posterous.com/getfile/files.posterous.com/lsoy/koLHUg7JmgynSMzLKke3cSx8TGhlf6beKqRb0YAxWniA7ffbB2Dy1pGTLiCG/0F012471.jpg.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;a href="http://getfile2.posterous.com/getfile/files.posterous.com/lsoy/wKF3zhNWDOHIcOyZcjxAwxFfM033yGYgJympmBBYcPibf7ps6e5fiTM5ywlP/0F922202.jpg"&gt;&lt;img alt="0f922202" height="287" src="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/RpSoH6Tntp6I9QLLdvCUSOJgNyvNmSKYHkHC3rHaniS8hyysaCCjsggoWQn9/0F922202.jpg.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;div class='p_see_full_gallery'&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man"&gt;See the full gallery on Posterous&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;div class='p_embed p_file_embed'&gt;
&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man"&gt;&lt;img alt="" src="http://posterous.com/images/filetypes/pdf.png" /&gt;&lt;/a&gt;
&lt;div class='p_embed_description'&gt;
&lt;strong&gt;User_Story_Template.pdf&lt;/strong&gt;
&lt;a href="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-01-04/GcvvbsebBbxDAcxCAkrdzktGaJEnlIjdBnxpCcqAvuliyFmdncgyqEjyoJEl/User_Story_Template.pdf"&gt;Download this file&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/TspOtYUqeNs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/jpeg" height="511" width="884" url="http://getfile5.posterous.com/getfile/files.posterous.com/lsoy/FwBJhOdULnFyi9tFsHcmSq3ciGDayYmgotEIEZcBEWoH4fx1aXj2QOB3lULb/0F012471.jpg">
        <media:thumbnail height="289" width="500" url="http://getfile7.posterous.com/getfile/files.posterous.com/lsoy/koLHUg7JmgynSMzLKke3cSx8TGhlf6beKqRb0YAxWniA7ffbB2Dy1pGTLiCG/0F012471.jpg.scaled.500.jpg" />
      </media:content>
      <media:content type="image/jpeg" height="506" width="883" url="http://getfile2.posterous.com/getfile/files.posterous.com/lsoy/wKF3zhNWDOHIcOyZcjxAwxFfM033yGYgJympmBBYcPibf7ps6e5fiTM5ywlP/0F922202.jpg">
        <media:thumbnail height="287" width="500" url="http://getfile3.posterous.com/getfile/files.posterous.com/lsoy/RpSoH6Tntp6I9QLLdvCUSOJgNyvNmSKYHkHC3rHaniS8hyysaCCjsggoWQn9/0F922202.jpg.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/an-application-is-born-part-4-requirement-man</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 07 Nov 2011 04:30:05 -0800</pubDate>
      <title>An application is born: Part 3 - Tools</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/27ahckA_RuE/an-application-is-born-part-3-tools</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/an-application-is-born-part-3-tools</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Let's see what tools we need for developing our application. &lt;p /&gt;  &lt;b&gt;Development environment&lt;/b&gt;&lt;p /&gt;  First, let's take a quick look at how our development environment looked until recently. We were mainly developing for the Notes client, so 99.99% of the development work was done in the Domino Designer. &lt;p /&gt;  On the lifecycle management front, we were using &lt;a href="http://www.teamstudio.com/Develop/developCIAO/tabid/120/Default.aspx"&gt;Teamstudio CIAO!&lt;/a&gt;&amp;nbsp; for source control and our own, in-house developed, applications for bug tracking and release management. These applications were nicely integrated with CIAO! and the whole environment worked well. We had one development server where development and testing was done and we deployed finished application templates from this server to our production servers. &lt;p /&gt;  As I said before, application development is not our core business and in these financially difficult times we were - unfortunately - forced to abandon CIAO!. It was time to re-think our development environment. And the timing was right - IBM announced support for source control starting in the Domino Designer 8.5.2 (which improved in 8.5.3) and the slow but seemingly inevitable switch to XPages and Java made it easier to use well established source control systems such as CVS, Mercurial and Git (to name but a few).&lt;p /&gt;  So, we had to choose what source / version control tool to use instead of CIAO! We evaluated these: &lt;/p&gt;&lt;ol type="1" style="padding-left: 18pt;"&gt; &lt;li&gt;&lt;a href="http://subversion.apache.org/"&gt;SVN&lt;/a&gt;, a representative of &amp;quot;classic&amp;quot; check-out / check-in tools. &amp;nbsp;In my previous job, we used Continuus (which had been acquired by Telelogic, which was then acquired by IBM and incorporated in the IBM Rational family), not very friendly tool to use and difficult to manage. I must admit that SVN is light years from Continuus, the server is extremely easy to set-up (use &lt;a href="http://www.ubersvn.com/"&gt;uberSVN&lt;/a&gt;&amp;nbsp;and it is as close to one-click setup as you'll ever get) and the integration with Domino Designer client is great (&lt;a href="http://heidloff.net/home.nsf/dx/09192011040807AMNHEBK6.htm"&gt;as demonstrated by Niklas Heidloff&lt;/a&gt;); &lt;/li&gt;&lt;li&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;, a representative of the new kind of distributed version control tools. For someone coming from the rigid world of check-out / check-in tools, it took me some time to bend my mind around it (&amp;quot;There is no spoon.&amp;quot;), but once that was done the rest was easy. The Mercurial server is not as easy to install and configure as SVN, but is not an impossible task. If you need help, Declan Lynch has &lt;a href="http://www.qtzar.com/blogs/qtzar.nsf/byTag.xsp?tag=Mercurial"&gt;a tutorial for Ubuntu&lt;/a&gt;&amp;nbsp;and if you need help with setting up Mercurial on Red Hat / CentOS, let me know and I'll help you.&lt;br /&gt; Unfortunately, I couldn't make &lt;a href="http://code.google.com/a/eclipselabs.org/p/mercurialeclipse/"&gt;MercurialEclipse&lt;/a&gt;&amp;nbsp;plug-in (client connector) to work in Domino Designer. The latest version of the plug-in won't even show up in the Designer. The older version do show up and can be configured, but as soon as one tries to use it, the connector fails. I tried all possible combinations with no success. &lt;/li&gt;&lt;li&gt;&lt;a href="https://jazz.net/projects/rational-team-concert/"&gt;IBM Rational Team Concert&lt;/a&gt;&amp;nbsp;(RTC) is a massive tool used for managing complete development (planning, following, tracking, automatic software builds, source control) and represents only one third of the complete suite for Collaborative Lifecycle Management (there are also requirement management and testing / verification modules). We spent the least time with this one. The source control tool is somewhere between SVN and Mercurial, but we couldn't understand it quite well in the little time we had. We also failed completely trying to install the RTC Eclipse plug-in in Domino Designer. It seems that the gap between Eclipse and Domino Designer is too big for plug-in installation. You might still want to check this tool, however, as it offers very much functionality and it comes free for up to 10 developers.&lt;/li&gt;&lt;/ol&gt; &lt;br /&gt; We felt that IBM RTC was too big and cumbersome for us. It would take substantial amount of time and energy for us to master it and then to keep it updated during the development so that we can realize its full benefits. We needed something simpler.&lt;p /&gt;  So, what would it be? SVN or Mercurial? Mercurial won. There is no specific reason, as we haven't used any of them long enough to be able to judge them fairly. &amp;nbsp;At the end, there was such a trivial thing as a great tutorial to tip the scales in Mercurial's favor. Here's the tutorial (one of the best I've ever read); I warmly recommend it to anyone interested in Mercurial or facing the same decisions as we did: &lt;a href="http://hginit.com/index.html"&gt;Hg Init&lt;/a&gt;.&lt;p /&gt;  But, what about the (non-existing) connectors? Well, we decided to use &lt;a href="http://tortoisehg.bitbucket.org/"&gt;TortoiseHg&lt;/a&gt;&amp;nbsp;desktop connectors. The difference between using TortoiseHg and MercurialEclipse is not that big, anyway. In Eclipse, If you use MercurialEclipse and want to work with Mercurial repositories, then you need to switch to a special Team Synchronization perspective. When I want to work with Mercurial repositories in the Domino Designer I simply start TortoiseHg Workbench. Either way, you only need one mouse click to switch your work context completely, from coding to synchronizing.&lt;br /&gt; TortoiseHg is fast, stable and can do everything that MercurialEclipse can do. We configured the Domino Designer to automatically keep the on-disk project in sync with the nsf. That way we have one step less to perform. And because of the way Mercurial works, one doesn't need to worry that untested changes would break the build, as one always commit to local repository first.. If there is any interest, I could write a more detailed description of our Domino Designer / Mercurial setup.&lt;p /&gt;  We are keeping the rest of the lifecycle management infrastructure as-is. We won't have the same tight integration as before, but we'll manage.&lt;p /&gt;  One of the most important requirements that customer has for the future application is that it must be very user friendly and very fast and efficient to use. Which means that it will be a lot of changes and refinements of the application GUI. With that in mind we decided to invest in a GUI sketching tool and we opted for &lt;a href="http://balsamiq.com/"&gt;Balsamiq Mockups&lt;/a&gt;. Fast, easy and fun to use, it already proved its worth.&lt;p /&gt;  Before I wrap-up this section on our development environment, let me shortly address the Domino Designer. We are going to perform the major part of coding and developing using the Domino Designer. But, in case that we choose XPages path (No, we still haven't decided - there is some chance, albeit slim, that we shall choose traditional development for the Notes client) we are thinking about doing as much as possible of Java coding and development in the Eclipse client and then using finished libraries in the Designer. That way we can take advantage of all the benefits that the Eclipse offers for development, testing and deployment. Has anybody done anything similar? Any thoughts?&lt;p /&gt;  &lt;b&gt;Documentation&lt;/b&gt;&lt;p /&gt;  This one is easy - Google Docs. Google Docs make it very easy for us to collaborate and share documents with our customer. They also provide implicit version control and track authors and changes. What more could one ask for?&lt;p /&gt;  In those cases when we need more robust editors or explicit version control, we are going to use IBM Lotus Symphony and Quickr repositories.&lt;p /&gt;  &lt;b&gt;Project Management&lt;/b&gt;&lt;p /&gt;  We are using Scrum as project management framework, so we need some tools for planning, following and managing. We have evaluated a couple of them.&lt;p /&gt;  One of the is the already mentioned IBM Rational Team Concert. The RTC provides support for creating release and sprint plans, &amp;nbsp;product and sprint backlogs, progress charts, user stories and epics, impediments and some other useful artifacts. But, these functions come at the cost - the overhead of learning, setting up and managing the tool is rather large. Scrum is all about transparency, simplicity and manageability - and dividing work in small enough chunks so that no special tools and extensive documentation are needed to manage it. In that respect, having to learn a complicated tool to manage it felt a bit wrong. Furthermore, despite all of the features, the tool felt too rigid at times, not allowing us to do things the way that we wanted.&lt;p /&gt;  Another tool that we evaluated was the &lt;a href="http://www.rallydev.com/agile_products/editions/community/"&gt;Rally Community Edition&lt;/a&gt;. This is a web-based tool and it is easier to use and faster to get-going than the RTC, while providing the same (Scrum) functions and features. And like the RTC it is free for up to 10 developers, but it is limited to a single project (no such restriction for the RTC).&lt;br /&gt; And, even though the Rally was easier to use that the RTC, it still felt awkward to have to go through the click-here-fill-text-click-there routine for every little thing.&lt;p /&gt;  So, after reading a bit more and looking at some other tools, we decided that we actually don't need any special tool to support Scrum - we need a spreadsheet on Google Docs for our product backlog and whiteboard to keep track of sprint backlog and related tasks. It is as simple as that.&lt;p /&gt;  And that brings us to the end of this part. To sum it up, these are the tools that we are going to use: Domino Designer for coding (maybe with some help from Eclipse), Mercurial and TortoiseHg for source version control, Balsamiq for GUI mockups, our own applications for bug tracking and release management, Google Docs for documentation, sharing and collaboration, and once again Google Docs for Scrum planning and managing.&lt;p /&gt;  Coming next: Requirement management the Scrum way.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-3-tools"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/an-application-is-born-part-3-tools#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/27ahckA_RuE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/an-application-is-born-part-3-tools</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 18 Oct 2011 15:17:30 -0700</pubDate>
      <title>An application is born: Part 2 - Methodology</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/B2_OIy7Thzk/an-application-is-born-part-2-methodology</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/an-application-is-born-part-2-methodology</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Why do we need methodology? The aim of methodology is to provide us with means - methods, processes, procedures and tools - to accomplish a goal. If we talk about software development, then the goal is to deliver applications that fulfil customers' requirements, on time and within budget. And to do that consistently, release after release, application after application.&lt;br /&gt; Now, the problem with software development is that it is such a fluid and vaguely defined problem space. There are so many unknowns, so many changes that keep popping up throughout the development cycle that we can never truly grasp and fully understand either the problem or the possible solutions. The software development is, in many ways, what &lt;a href="http://en.wikipedia.org/wiki/Herbert_Simon"&gt;Herbert Simon&lt;/a&gt;&amp;nbsp;would call an ill structured problem. Just think about it - we have ever changing and sometimes conflicting customer requirements, we have technology that improves at the pace that is impossible to keep up with, we have human factor to deal with. All of this means that it is more than necessary to introduce some kind of method in the process of software development.&lt;p /&gt;  As I already said, my background is in defence industry. Defence industry is traditionally very conservative when it comes to product development. We used the &lt;a href="http://en.wikipedia.org/wiki/V-Model_%28software_development%29"&gt;V-model&lt;/a&gt;&amp;nbsp;of development, which is a variant of the &lt;a href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;waterfall model&lt;/a&gt;. In this model, every development activity (analysis, design, testing) is clearly separated and done in sequence. The progress of every activity is reviewed at predefined milestones (such as Preliminary Design Review or Critical Design Review) and the result is documented in lengthy written reports. Then, the next-in-chain team takes over.&lt;p /&gt;  This methodology is suited for big projects where very strict and formal project management is required. Clearly, majority of software projects do not fall in this category. That is why we saw a number of methodologies introduced in the late 1990s, with the single goal of making software development easier and more successful. Some of these methodologies can be put in the Agile category and they share &lt;a href="http://agilemanifesto.org/principles.html"&gt;the twelve principles of Agile software&lt;/a&gt;&amp;nbsp; as their foundation.&lt;p /&gt;  One of these methodologies is &lt;a href="http://www.scrum.org/"&gt;Scrum&lt;/a&gt;&amp;nbsp;and we are going to use it to guide us in developing our application. Why Scrum? To give a short answer - because it best fills our needs. This is the methodology that we can best implement, having in mind our very limited resources - and I am aware that we still won't be able to realize all of the benefits. For that we would require a larger (around 7 persons), cross-functional team with analysts, GUI specialists, programmers, testers.&lt;p /&gt;  The Scrum is also diametrically opposite to the traditional methodologies, such as the V-model that I used before. Gone are the traditional requirements, design documents are deprecated, everything is done with as little documentation as possible and we - the developers - are supposed to manage ourselves. If you are interested in Scrum, I encourage you to read &lt;a href="http://www.scrum.org/scrumguides/"&gt;the Scrum Guide&lt;/a&gt;. It is a short (17 pages) document that is essentially a complete definition of Scrum. The Scrum Guide says that Scrum is simple to understand, but extremely difficult to master.&lt;p /&gt;  I also want to clarify one thing - neither Scrum nor the V-model are methodologies in the true meaning of the word. Neither prescribes tools or procedures for solving problems at hand. Instead, they should be more correctly described as frameworks. It is up to each and every team / project to decide how to solve, organize and manage everyday activities. For example, we used MIL-STD-490A and MIL-STD-498 to flesh out the V-model. In the following posts I will write more about our implementation of Scrum and the progress we make.&lt;p /&gt;  Coming next: Tools.&lt;p /&gt;  &lt;p /&gt;  &lt;br /&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-2-methodology"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/an-application-is-born-part-2-methodology#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/B2_OIy7Thzk" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/an-application-is-born-part-2-methodology</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 07 Oct 2011 00:29:00 -0700</pubDate>
      <title>LotusScript Symphony API broken in 8.5.3?</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/0aNwCaC71f0/lotusscript-symphony-api-broken-in-853</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/lotusscript-symphony-api-broken-in-853</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: sans-serif;"&gt;It seems that LotusScript Symphony API is broken in Notes 8.5.3. Our applications that use it (and that have worked fine ever since the API was introduced) stopped working and are popping out the error message that the USE or USELX module *symphonycfglsx cannot be loaded:&lt;/span&gt;&lt;p /&gt;  &lt;br /&gt; &lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f226131" height="35" src="http://posterous.com/getfile/files.posterous.com/lsoy/K9TtinVvNxTKH3EV8lBDpr3eFBcHmj04i4yX6kks9zHpiNUwvkvirVwGEsU9/0F226131.gif" width="250" /&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f498282" height="44" src="http://posterous.com/getfile/files.posterous.com/lsoy/8lDpFyx8CN99lh88C3EsEMGjewsXsCl43lIrv4Hbca9cxxNVCrn5188gAnpf/0F498282.gif" width="346" /&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;p /&gt;  &lt;br /&gt; &lt;span style="font-family: sans-serif;"&gt;Those applications that use the UNO API work as they should. I've seen that some others have reported this issue as well. Anybody else seeing this?&lt;/span&gt;&lt;p /&gt;  &lt;span style="font-family: sans-serif;"&gt;And, does anybody know which version of Symphony is in the 8.5.3&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;? It would seem that it is 3.0.0:&lt;/span&gt;&lt;p /&gt;  &lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="0f914180" height="135" src="http://posterous.com/getfile/files.posterous.com/lsoy/MRsylLOJInNjzmrDBWVUnLMRaT9vOt3k95s28YSF5VW1ODtnMRnOpuS7PtVB/0F914180.gif" width="380" /&gt;
&lt;/div&gt;
&lt;p /&gt;  &lt;span style="font-family: sans-serif;"&gt;I tried installing Symphony FP3 yesterday, but it fails saying that it cannot find compatible version and points out that current version is 8.5.3. I think that the FP3 fix pack installer (for Windows anyway) only works with Notes 8.5.2. Maybe it is possible to manually update the installation, but I haven't tried that.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/lotusscript-symphony-api-broken-in-853"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/lotusscript-symphony-api-broken-in-853#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/0aNwCaC71f0" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/gif" height="35" width="250" url="http://getfile8.posterous.com/getfile/files.posterous.com/lsoy/K9TtinVvNxTKH3EV8lBDpr3eFBcHmj04i4yX6kks9zHpiNUwvkvirVwGEsU9/0F226131.gif">
        <media:thumbnail height="35" width="250" url="http://getfile8.posterous.com/getfile/files.posterous.com/lsoy/K9TtinVvNxTKH3EV8lBDpr3eFBcHmj04i4yX6kks9zHpiNUwvkvirVwGEsU9/0F226131.gif" />
      </media:content>
      <media:content type="image/gif" height="135" width="380" url="http://getfile7.posterous.com/getfile/files.posterous.com/lsoy/MRsylLOJInNjzmrDBWVUnLMRaT9vOt3k95s28YSF5VW1ODtnMRnOpuS7PtVB/0F914180.gif">
        <media:thumbnail height="135" width="380" url="http://getfile7.posterous.com/getfile/files.posterous.com/lsoy/MRsylLOJInNjzmrDBWVUnLMRaT9vOt3k95s28YSF5VW1ODtnMRnOpuS7PtVB/0F914180.gif" />
      </media:content>
      <media:content type="image/gif" height="44" width="346" url="http://getfile2.posterous.com/getfile/files.posterous.com/lsoy/8lDpFyx8CN99lh88C3EsEMGjewsXsCl43lIrv4Hbca9cxxNVCrn5188gAnpf/0F498282.gif">
        <media:thumbnail height="44" width="346" url="http://getfile2.posterous.com/getfile/files.posterous.com/lsoy/8lDpFyx8CN99lh88C3EsEMGjewsXsCl43lIrv4Hbca9cxxNVCrn5188gAnpf/0F498282.gif" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/lotusscript-symphony-api-broken-in-853</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 04 Oct 2011 03:21:55 -0700</pubDate>
      <title>Solved: Symphony 3.0 installer for Lotus Notes (Domino Collaboration Express)</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/pHfhh3obTZg/solved-symphony-30-installer-for-lotus-notes</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/solved-symphony-30-installer-for-lotus-notes</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Almost a year ago, &lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-licensi"&gt;I wrote&lt;/a&gt;&amp;nbsp;that Domino Collaboration Express users were not able to download Symphony installers from the Passport Advantage site.&lt;p /&gt;  It turned out to be a problem with licensing, and IBM promised to fix it by the time 8.5.3 ships. Well, today is that day and I am happy to say that IBM kept the promise: installers for both stand-alone and embedded versions of Symphony are now available for download for Domino Collaboration (and I believe Messaging as well) Express users.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/solved-symphony-30-installer-for-lotus-notes"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/solved-symphony-30-installer-for-lotus-notes#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/pHfhh3obTZg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/solved-symphony-30-installer-for-lotus-notes</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 03 Oct 2011 01:56:53 -0700</pubDate>
      <title>An application is born: Part 1 - Background</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/B9qxrlGW6OM/an-application-is-born-part-1-background</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/an-application-is-born-part-1-background</guid>
      <description>&lt;p&gt;
	&lt;p&gt;So, we are going to&lt;a href="http://lsoy.posterous.com/an-application-is-born-prologue"&gt;&amp;nbsp;build an application&lt;/a&gt;. Exciting!&lt;br /&gt; First, let me provide you with some background information. It will help you to better understand the challenges we are facing and decisions that we make.&lt;p /&gt;  &lt;b&gt;The customer&lt;/b&gt;&lt;br /&gt; The customer is a crossover between a fitness and a wellness centre. We have had a good professional relations with them for a number of years. They are demanding, but they understand that IT has its own rules and are willing to learn and listen to somebody who knows more about it. They know about our experience (i.e. the lack of it) but they are confident that we'll be able to build their application. With that in mind, we agreed upon a very generous time plan that should allow us to breath freely, but which also guarantees that they will have an application before Hell freezes over.&lt;p /&gt;  &lt;b&gt;The application&lt;/b&gt;&lt;br /&gt; The application is a client tracking application. Something like a CRM, but heavily customized according to their needs. It should contain a list of their clients with general data, but also some specific items, like height, weight and calory intake. For every client a complete history of contracts, payments, treatments, exercises, measurements is to be kept with possibility to do various reports and analyses. The customer already has an application for this purpose, but it is not being used as it is not user friendly and flexible enough. So, they currently use pre-printed forms that are filled-in by hand. A very fast and convenient way, but they are starting to have problems with physical archiving of all the paper. Also, finding information from some time ago is often an impossible task.&lt;br /&gt; The most important requirement that the customer has is that the new application must be simple and fast to use. To enter information in the application should be as fast and simple as writing it on the paper, or as close to it as possible.&lt;p /&gt;  &lt;b&gt;The development team&lt;/b&gt;&lt;br /&gt; Well, there is no development team. As I already wrote, application development is not our core business. It is only one colleague and I that are going to work part-time on the application. So maybe (and just maybe), I could count that there will be equivalent of one full-time developer working on the application. And that's not much. That means that we can't do much in a given period of time. But what worries me more is that we may not have enough knowledge and experience between ourselves to pull this through. I will try to mitigate this risk through (creative) requirements management and methodology support. Another risk looking farther down the road is application support. I am afraid that once we &amp;quot;finish&amp;quot; (I am aware that there is no such thing as finished application) the application, the management is going to move us to other duties, with no one left to support the application. That is something that I will have to deal with and try to persuade the management that we can make money on application development. &lt;p /&gt;  And that was the general background. Coming next: Methodology.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-part-1-background"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/an-application-is-born-part-1-background#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/B9qxrlGW6OM" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/an-application-is-born-part-1-background</feedburner:origLink></item>
    <item>
      <pubDate>Sat, 01 Oct 2011 01:05:18 -0700</pubDate>
      <title>An application is born: Prologue</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/QTSxYYulyYM/an-application-is-born-prologue</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/an-application-is-born-prologue</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I am not an application developer. And I am not an administrator. I am electronics engineer who by chance ended up with an IBM Business Partner and learned to know Lotus Notes / Domino. And I liked it - stable, reliable, easy to upgrade from administrative point of view. And easy to use as a development platform. Security, deployment, all those difficult to master things were taken care of by the platform. I still remember my first programming experiences with Domino Document Manager. And the joy when I successfully connected a sales tracking application developed in Lotus Workflow &amp;nbsp;with document libraries in the Domino Document Manager.&lt;p /&gt;  Lot of time has passed since, and I have become a better developer. I made several business applications that we use in our company. One of those applications is even used by external customers in their own business environment. But, application development is not our core business and development of those applications was ad-hoc, without elaborate development process. No analysis, no design, no testing or documentation. Don't get me wrong: I've done all those things, but in a limited, unstructured and inconsistent way.&lt;br /&gt; And since my background is electronics system development in defence industry, that kind of disorder was not to my liking. Back then, every step, every move, every thought that we made was according to some rule, standard, methodology or procedure. And everything was meticulously documented. &lt;p /&gt;  So, I have always wanted to implement a proper application development ecosystem for Lotus Notes/Domino in our company. And to develop applications using it. Lately, things have started to move in that direction. We were approached by a client who wanted a specific business application. We accepted the job and we understand that we must do it properly if we are to succeed.&lt;p /&gt;  In a series of articles to follow this one, I will be writing about the upcoming application and our efforts to develop it properly and &amp;quot;by the book&amp;quot;. Whatever that book might be :-)&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/an-application-is-born-prologue"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/an-application-is-born-prologue#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/QTSxYYulyYM" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/an-application-is-born-prologue</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 15 Aug 2011 06:44:38 -0700</pubDate>
      <title>Resolved: iNotes problems with Domino 8.5.2 FP3</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/ZIO0GXTFS-Y/resolved-inotes-problems-with-domino-852-fp3</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/resolved-inotes-problems-with-domino-852-fp3</guid>
      <description>&lt;p&gt;
	&lt;p&gt;This has been around for a week or so, but since I wrote about the problem, then it is only fair to write about the solution as well.&lt;p /&gt;  So, if you experience problems with iNotes after upgrading to 8.5.2 FP3, head over to IBM support site, download and install the fix:&lt;p /&gt;  &lt;a href="https://www-304.ibm.com/support/docview.wss?uid=swg21508250"&gt;https://www-304.ibm.com/support/docview.wss?uid=swg21508250&lt;/a&gt;&lt;p /&gt;  We've done that and it works fine for us.&lt;br /&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/resolved-inotes-problems-with-domino-852-fp3"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/resolved-inotes-problems-with-domino-852-fp3#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/ZIO0GXTFS-Y" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/resolved-inotes-problems-with-domino-852-fp3</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 25 Jul 2011 00:01:00 -0700</pubDate>
      <title>Best place for coding XPages?</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/7KLhphlRwmk/best-place-for-coding-xpages</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/best-place-for-coding-xpages</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="Dsc_7149" height="640" src="http://posterous.com/getfile/files.posterous.com/lsoy/vZkol5VJbNfX7PIQByxBXWrDRCxWq9Jv649L7IDjo0eMiw8h1P98T3O1dZP5/DSC_7149.jpg" width="414" /&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: sans-serif; font-size: small;"&gt;Well, this is definitely my favorite so far: Podvr&amp;scaron;ke beach, island of Murter, Crotia.&lt;/span&gt;&lt;br /&gt; &lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/best-place-for-coding-xpages"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/best-place-for-coding-xpages#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/7KLhphlRwmk" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/jpeg" height="640" width="414" url="http://getfile0.posterous.com/getfile/files.posterous.com/lsoy/vZkol5VJbNfX7PIQByxBXWrDRCxWq9Jv649L7IDjo0eMiw8h1P98T3O1dZP5/DSC_7149.jpg">
        <media:thumbnail height="640" width="414" url="http://getfile0.posterous.com/getfile/files.posterous.com/lsoy/vZkol5VJbNfX7PIQByxBXWrDRCxWq9Jv649L7IDjo0eMiw8h1P98T3O1dZP5/DSC_7149.jpg" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/best-place-for-coding-xpages</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 21 Jul 2011 01:42:18 -0700</pubDate>
      <title>Update 2: iNotes problems with Domino 8.5.2 FP3</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/ifa6O0w24-o/update-2-inotes-problems-with-domino-852-fp3</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/update-2-inotes-problems-with-domino-852-fp3</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I've got iNotes working on our server. &lt;p /&gt;  Our environment:&lt;br /&gt; RHEL 5.6 32-bit (VMware virtual machine), English locale&lt;br /&gt; Domino 8.5.2 upgraded to FP2 and then to FP3, English&lt;p /&gt;  We are using Daniel Nashed's&lt;a href="http://www.nashcom.de/nshweb/pages/startscript.htm"&gt;&amp;nbsp;start/stop scripts for Domino&lt;/a&gt;&amp;nbsp;and there we set Domino locale to bs_BA.UTF8.&lt;br /&gt; When I comment out the locale setting (i.e. Domino works with the default English locale), the iNotes works fine (including in Firefox 4).&lt;br /&gt; If I set any other locale (e.g. de_DE), iNotes stops working.&lt;p /&gt;  So, it seems that this is something that affects Domino servers running on a locale other than English. If you can, change the locale of your Domino server to English and see if that solves it.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/update-2-inotes-problems-with-domino-852-fp3"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/update-2-inotes-problems-with-domino-852-fp3#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/ifa6O0w24-o" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/update-2-inotes-problems-with-domino-852-fp3</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 20 Jul 2011 00:45:43 -0700</pubDate>
      <title>Update: iNotes problems with Domino 8.5.2. FP3</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/oNsBU3YdEnQ/update-inotes-problems-with-domino-852-fp3</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/update-inotes-problems-with-domino-852-fp3</guid>
      <description>&lt;p&gt;
	&lt;p&gt;At first, it seemed that this could be a problem with Linux servers, &amp;nbsp;but users on other platforms &lt;a href="http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllThreadedWeb/132EBC8155FF7741852578D20025A9BB?opendocument"&gt;have also reported&lt;/a&gt;&amp;nbsp;the same issue.&lt;p /&gt;  So, it is platform independent, some are affected and some are not. While we try to figure out why this happens, we restored Forms85.nsf to previous version in order to get iNotes working again.&lt;p /&gt;  Forms85.nsf is located in &lt;i&gt;DominoData&lt;/i&gt;\iNotes folder. You can find previous version of the Forms85.nsf in the &lt;i&gt;DominoData&lt;/i&gt;\iNotes\852FP2 folder (if you don't have 852FP2, you might have 852FP1 or 85020 folders).&lt;p /&gt;  What you loose by going this way is the newly added support for Firefox 4 (among other things), but the iNotes will at least work. If Firefox 4 support is important, there is &lt;a href="https://www-304.ibm.com/support/docview.wss?uid=swg21474006"&gt;Interim Fix 401.8HF6 for iNotes 8.5.2 Fix Pack 2&lt;/a&gt;&amp;nbsp;or you can install &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/remote-xul-manager/"&gt;Remote XUL Manager&lt;/a&gt;&amp;nbsp;and add your domain to the white list (I tried both and they worked fine).&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/update-inotes-problems-with-domino-852-fp3"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/update-inotes-problems-with-domino-852-fp3#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/oNsBU3YdEnQ" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/update-inotes-problems-with-domino-852-fp3</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 19 Jul 2011 03:15:25 -0700</pubDate>
      <title>iNotes problems after upgrading to Domino FP3</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/jHJ2wV-MGp0/inotes-problems-after-upgrading-to-domino-fp3</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/inotes-problems-after-upgrading-to-domino-fp3</guid>
      <description>&lt;p&gt;
	&lt;p&gt;We have just upgraded our Domino servers to FP3 and the iNotes is broken. This is what you see when you try to access mail:&lt;p /&gt;  &lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/lsoy/KTy5P6bXRgfdvhKgX2EGXJ3qiKtIgfbqVDuz0APzHIdwM3HJKSNQgfGSx16W/0F943972.gif"&gt;&lt;img alt="0f943972" height="174" src="http://posterous.com/getfile/files.posterous.com/lsoy/0NTxRG8Xx9AS4MgBbUAMdlQnAniabofaExMK7Zw5Opx41mWwSngch7P9CVbf/0F943972.gif.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p /&gt;  The server is Red Hat Enterprise Linux 5.6, Domino server was 8.5.2 FP2 prior to upgrade.&lt;p /&gt;  The same behavior is encountered for both Full and Lite modes, but the ultra-light mode works fine.&lt;p /&gt;  We checked with Firefox 4 and Internet Explorer 9 and both displayed the same problem.&lt;p /&gt;  Others are also &lt;a href="http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllThreadedWeb/132EBC8155FF7741852578D20025A9BB?opendocument"&gt;reporting the same problem&lt;/a&gt;, so be aware of this.&lt;p /&gt;  &lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/inotes-problems-after-upgrading-to-domino-fp3"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/inotes-problems-after-upgrading-to-domino-fp3#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/jHJ2wV-MGp0" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/gif" height="215" width="618" url="http://getfile5.posterous.com/getfile/files.posterous.com/lsoy/KTy5P6bXRgfdvhKgX2EGXJ3qiKtIgfbqVDuz0APzHIdwM3HJKSNQgfGSx16W/0F943972.gif">
        <media:thumbnail height="174" width="500" url="http://getfile6.posterous.com/getfile/files.posterous.com/lsoy/0NTxRG8Xx9AS4MgBbUAMdlQnAniabofaExMK7Zw5Opx41mWwSngch7P9CVbf/0F943972.gif.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/inotes-problems-after-upgrading-to-domino-fp3</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 08 Mar 2011 05:17:51 -0800</pubDate>
      <title>Virtualizing Lotus Domino on VMware</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/7jt6-MlR0Ks/virtualizing-lotus-domino-on-vmware</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/virtualizing-lotus-domino-on-vmware</guid>
      <description>&lt;p&gt;
	&lt;p&gt;IBM &lt;a href="http://www.ibm.com/developerworks/lotus/documentation/dominovmware/?cmp=dw&amp;amp;cpb=dwlot&amp;amp;ct=dwnew&amp;amp;cr=dwnen&amp;amp;ccy=zz&amp;amp;csr=030311"&gt;has released a white paper&lt;/a&gt; describing test results of a Lotus Domino 8.5.1 environment running on VMware vSphere 4. The white paper is quite exhaustive and covers some interesting scenarios.&lt;p /&gt;  Highlights: &lt;/p&gt;&lt;ul type="disc" style="padding-left: 18pt;"&gt; &lt;li&gt;you can run Domino server with 4000 average mail users in a virtual machine with 1 vCPU and 8 GB RAM, &lt;/li&gt;&lt;li&gt;even though Nehalem CPUs are faster, you'll do very well with older CPUs as well, &lt;/li&gt;&lt;li&gt;disk configuration is important (critical), just like in physical systems, &lt;/li&gt;&lt;li&gt;if your disk subsystem is slow, add more RAM - it really helps, &lt;/li&gt;&lt;li&gt;if your users have large mail files, add more RAM, &lt;/li&gt;&lt;li&gt;HTTP is much more demanding than NRPC.&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt; Interestingly, one would expect IBM servers and storage to be used, but not so. The servers were from Dell and the storage from NetApp, perhaps giving even more credibility to the test results.&lt;p /&gt;  We have been running our Domino servers on the VMware plaform for several years now and never had any problem. We are very small though, and it is good to see that Domino can be successfully virtualized on VMware even for larger environments.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/virtualizing-lotus-domino-on-vmware"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/virtualizing-lotus-domino-on-vmware#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/7jt6-MlR0Ks" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/virtualizing-lotus-domino-on-vmware</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 25 Nov 2010 03:27:00 -0800</pubDate>
      <title>Communicating Notes applications</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/4adPEUadwTo/communicating-notes-applications</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/communicating-notes-applications</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Every so often, a Notes application needs to access external data. While the data may reside in virtually any external repository, in this post we'll only consider other Notes applications (or databases as they were often called prior to Notes 8.0).&lt;p /&gt;Reasons for accessing other Notes applications may be various, but it most often comes to manageability and flexibility. Instead of developing one giant application that does everything a company or a department needs, we split the required functions in smaller chunks that are easier to develop, maintain, manage, support and use.&lt;p /&gt;Let's take the notion of customer as an example. Many business processes need to know about the customers, some need to update existing or create new customer records. These business processes are supported by specific line-of-business applications - different sales tracking or help desk or project management applications, to name but a few.&lt;p /&gt;Now imagine how inefficient it would be if each and every of these application were to keep its own customer records. Poor application users - they would need to input the same customer data multiple time into various systems and applications. And since that would be a job done by different users, we would inevitably end up with errors: in one application we would have IBM, in another I.B.M. while in the third International Business Machines. We humans easily understand that this is the same customer, but an application trying to correlate data from these different systems will see three different customers.&lt;p /&gt;What we usually do to rectify this situation is to make an application to hold common customer details: customer name, address, contact persons etc. And we make those details available to other applications. We enter details once, store and share them with all that need them.&lt;p /&gt;Nothing new or groundbreaking there, just plain common sense. It has been done numerous times before.&lt;p /&gt;So, how do Notes applications share data? How do they communicate?&lt;p /&gt;We who develop on Domino platform are very lucky. Domino has many functions that make data sharing between applications easy - we have very robust security that keeps data safe and we have flexible communication mechanisms that make it easy to access data - whether it is on the same server or on the other side of the Earth. And we have programming features in Formula language and LotusScript that make developing such data-sharing applications easy.&lt;p /&gt;In vast majority of cases, we develop just as if the data was in the same database &amp;ndash; same calls, same methods, same principles. We simply point Domino server to another database. A couple of common examples:&lt;p /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use @DbColumn to retrieve contents of a view column.&lt;br /&gt;This is often used to populate choices in a dialog list. For example, you could use it to access application with customer details and get a list of customer names. The names are then displayed as a dialog list. All that is required to get data from another application is&amp;nbsp; formula similar to this:&lt;p /&gt;&lt;span style="color: #0000ff;"&gt;@DbColumn("";"Server/Acme":"customers.nsf";"CustomersByName";1)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Use LotusScript to create document in another application.&lt;br /&gt;Imagine that a customer wants an entry created in log application each time a support request is saved in Help Desk application. You could put code similar to this in the PostSave event of the support request form in the Help Desk application:&lt;p /&gt;&lt;span style="color: #0000ff;"&gt;Dim w As New NotesUIWorkspace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Dim s As New NotesSession&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Dim LogDb As NotesDatabase&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Dim ThisUIDoc As NotesUIDocument&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Dim LogDoc As NotesDocument&lt;/span&gt;&lt;p /&gt;&lt;span style="color: #0000ff;"&gt;Set ThisUIDoc = w.CurrentDocument&lt;br /&gt;Set LogDb = s.GetDatabase("Server/Acme", "log.nsf")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Set LogDoc = LogDb.CreateDocument&lt;/span&gt;&lt;p /&gt;&lt;span style="color: #0000ff;"&gt;Call LogDoc.ReplaceItemValue("Form", "log")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Call LogDoc.ReplaceItemValue("Comment", ThisUIDoc.FieldGetText("RequestDescription"))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Call LogDoc.ReplaceItemValue("LoggedBy", s.UserName)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Call LogDoc.ReplaceItemValue("LoggedOn", Now())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Call LogDoc.Save(True, True)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;These two, as well as many other similar, approaches are regularly used in Notes applications. And they work well (please do see Disclaimer at the bottom).&lt;p /&gt;But, can you spot a problem with both of them? Yes, it is those hard-coded values all over the place.&lt;/p&gt;
&lt;p&gt;In a production application you would make it possible to define server name and database location, probably in a profile document. Then you could do something like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;Server := @GetProfileField("Settings"; "DBServer");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;DB := @GetProfileField("Settings"; "DBPath");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;@DbColumn("";"Server":"DB";"CustomersByName";1)&lt;/span&gt;&lt;p /&gt;This way, at least, you wouldn't need to change code each time your target database moves. But what about those other values? They pose two different problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, you would need to know names of design elements from the target database which you are going to use: forms, views, fields. You would also need to know what columns a view has and what their content is. Usually, this is not big deal.&lt;/li&gt;
&lt;li&gt;Second, what if something in the target database changes? What if some field changes name or a column is deleted from a view?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;If you are in charge of both applications then you can try to find a middle way that will allow you to make necessary changes in one database without causing too much changes in the other(s). But if you are not, and the target database changes in a major way, then you may be looking at some quite extensive code re-write. If you take a look at some of IBM templates that ship with Lotus Notes, you will probably find some strange looking design decisions: they are there for backward compatibility. However, the vendor from whom you purchased your target application may not be that kind, forcing you to re-write your code.&lt;p /&gt;What can be done about that?&lt;p /&gt;I was thinking about this lately and thought how it would be nice if we could have something like public methods in OO programming or stored procedures in SQL for our own Notes applications.&lt;p /&gt;We would expose (i.e. made public) methods (functions, subroutines) for other applications to use. These methods would take a list of arguments and return values or perform some action in target database.&lt;p /&gt;Wouldn't it be nice if you could, for example, call &lt;span style="color: #0000ff;"&gt;getCustomerNames()&lt;/span&gt; method in a customer application and get back a list with all customer names. Or if you could call &lt;span style="color: #0000ff;"&gt;createLogDoc(ThisUIDoc.FieldGetText("RequestDescription"), s.UserName)&lt;/span&gt; to create a log entry in the log application.&lt;p /&gt;See where it goes? If you have any experience in OO programming, the concepts will be very familiar. It goes to hide implementation details from the caller by publishing a public, non-changing, interface.&lt;p /&gt;Now, I no longer need to know the view name and the fact that customer names are stored in column 1 in order to get list of customer names. Nor do I need to know form and fields names in order to save a log entry. The implementation details could be changing on a daily basis. And I wouldn't care as long as the call (interface) remained the same.&lt;p /&gt;But, how do you do that in a Notes application? As far as I can tell, the only way is to use web services. Web services were &amp;ldquo;invented&amp;rdquo; to make possible exactly that we are looking for: to allow applications to talk to each other and exchange data using standard &amp;ldquo;language&amp;rdquo;. The first application does not need to know anything about the second: on what OS it runs, in what programming language it was written or how does it implement requested functions. The only thing that matters is that they both speak the same &amp;ldquo;web services&amp;rdquo; language and are aware of functions that each other can perform.&lt;p /&gt;Web services were introduced in Lotus Domino in version 7. I recommend you to read the two-part (&lt;a href="https://www.ibm.com/developerworks/lotus/library/web-services1/"&gt;part 1&lt;/a&gt;, &lt;a href="http://www.ibm.com/developerworks/lotus/library/web-services2/"&gt;part 2&lt;/a&gt;) article written by Julian Robichaux over there at developerWorks. It will give you a nice foundation for further work with web services.&lt;p /&gt;In the next post, I will show how we can use web services to make communication between Notes applications more robust and future-proof by using web services. When web services first appeared in version 7, the Designer only had support for web service providers. Fortunately, that has changed and I will show you how easy it is to create both web service providers and consumers in Domino 8.5.x.&lt;p /&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: &lt;span style="color: #000000;"&gt;All code shown in this post if for illustration only. It would need to be made more robust for production use. At the very least, you would need to implement error handling and do some performance optimisations. If you need help in doing that, let me know and I will be more than happy to help you.&lt;/span&gt;&lt;/span&gt;&lt;p /&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/communicating-notes-applications"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/communicating-notes-applications#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/4adPEUadwTo" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/communicating-notes-applications</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 18 Nov 2010 03:48:00 -0800</pubDate>
      <title>My favourite certificate</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/-UP1fvRvmm4/my-favourite-certificate</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/my-favourite-certificate</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="font-family: sans-serif; font-size: small;"&gt;No, it's not Lotus Notes Developer, but something much more fun...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/lsoy/UVRAf0rP8ivg6c7dw6fQUxijUm4exHHwpQ6UezWwIQrhEXNxh6KaqNKmkJxE/sauna.png"&gt;&lt;img alt="Sauna" height="707" src="http://posterous.com/getfile/files.posterous.com/lsoy/pHOcub7yVCgBOGjXaiB2mBxWf807FIFCx20uwuNInBTGNptR4il0ncgsetH7/sauna.png.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/my-favourite-certificate"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/my-favourite-certificate#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/-UP1fvRvmm4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
      <media:content type="image/png" height="877" width="620" url="http://getfile8.posterous.com/getfile/files.posterous.com/lsoy/UVRAf0rP8ivg6c7dw6fQUxijUm4exHHwpQ6UezWwIQrhEXNxh6KaqNKmkJxE/sauna.png">
        <media:thumbnail height="707" width="500" url="http://getfile9.posterous.com/getfile/files.posterous.com/lsoy/pHOcub7yVCgBOGjXaiB2mBxWf807FIFCx20uwuNInBTGNptR4il0ncgsetH7/sauna.png.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://lsoy.posterous.com/my-favourite-certificate</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 17 Nov 2010 00:32:40 -0800</pubDate>
      <title>Symphony 3.0 installer for Lotus Notes - licensing clarification</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/MUhOkY52_pA/symphony-30-installer-for-lotus-notes-licensi</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-licensi</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Eric Otchet, Lotus Product Manager - Symphony, kindly offered his help in solving &lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-another"&gt;the licensing issue with Symphony 3 installers for a Domino Collaboration Express customer&lt;/a&gt;.&lt;p /&gt;  As it turns out, there is an issue with the Domino Collaboration Express licensing structure. For whatever reason, Symphony has been left out of it. All other entitlements are included, such as limited use Quickr and Sametime or Tivoli Directory Integrator, but no Symphony. It hasn't been said explicitly, but I suppose the same applies to Domino Messaging Express licences.&lt;p /&gt;  Eric acknowledged this as a mistake that IBM is looking at fixing. It will surely be fixed for Lotus Notes 8.5.3 release. They are also looking at finding an interim fix, but there are no promises if or when it would be available.&lt;p /&gt;  So there you have it - if you are using Domino Collaboration Express you don't have access to Symphony 3.0 installers for Lotus Notes. You can wait until 8.5.3 or simply install the standalone version.&lt;p /&gt; &lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-licensi"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-licensi#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/MUhOkY52_pA" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-licensi</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 12 Nov 2010 04:36:32 -0800</pubDate>
      <title>Symphony 3.0 installer for Lotus Notes - another case of absurd licensing</title>
      <link>http://feedproxy.google.com/~r/lsoy/~3/WVUdZFrJLU4/symphony-30-installer-for-lotus-notes-another</link>
      <guid isPermaLink="false">http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-another</guid>
      <description>&lt;p&gt;
	&lt;p&gt;As many of you are aware, Symphony 3.0 installers for Lotus Notes 8.5.x are out. &lt;a href="http://www.slug.es/blogslug.nsf/dx/fiesta-day-for-lotus-symphony-installers-for-lotus-notes-8.5.x-add-on-packs-and-a-bonus-new-traveler-server.htm"&gt;Albert Buendia&lt;/a&gt; and &lt;a href="http://www.johndavidhead.com/jhead/johnhead.nsf/dx/ibm-lotus-symphony-3.0-installer-and-editor-component-for-notes-8.5.x-ships"&gt;John D. Head&lt;/a&gt; have already reported about it.&lt;p /&gt;  So, I told one of our customers to go to Passport Advantage site and look for the installers. Soon afterwards, he called back and said that there was no installer or Symphony related download whatsoever. I logged in myself and I couldn't find it either - neither by using part number nor description.&lt;p /&gt;  I sent an e-mail to PA support asking for help. They replied promptly, telling me that the customer is not entitled to Symphony installers. The customer has Domino Collaboration Express and only Lotus Notes client licences are entitled to the installer. What?!?&lt;p /&gt;  So, how does my client update Symphony in Lotus Notes? Does he need to wait for the new release of Lotus Notes?&lt;p /&gt;  Now, I know that Lotus Notes users are entitled to support for Symphony, which IBM normally charges. And maybe Domino Express users don't have (or shouldn't have) that benefit, so that's why they don't have access to the part numbers mentioned by Albert and David.&lt;p /&gt;  But they should really be able to update Symphony - there are three ways to do it: open new part numbers on the Passport Advantage for Symphony installers without support; release installers on the Symphony website together with the stand-alone product, expand entitlement for Domino Express. Oh, there is the fourth also: don't do anything.&lt;p /&gt;  I really do hope that IBM is going to do one of the first three things. Soon.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-another"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-another#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/lsoy/~4/WVUdZFrJLU4" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/62919/SasaBrkic.JPG</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/1lRd0v3Krfz</posterous:profileUrl>
        <posterous:firstName>Saša</posterous:firstName>
        <posterous:lastName>Brkić</posterous:lastName>
        <posterous:nickName>Sasa</posterous:nickName>
        <posterous:displayName>Saša Brkić</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://lsoy.posterous.com/symphony-30-installer-for-lotus-notes-another</feedburner:origLink></item>
  </channel>
</rss>

