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

<channel>
	<title>Lotushints &#187; Uncategorized</title>
	<atom:link href="http://www.lotushints.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lotushints.com</link>
	<description>Lotus Notes tips &#38; tricks you always hoped you will not need</description>
	<lastBuildDate>Wed, 14 Jul 2010 06:00:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Merry Xmas&#8230;</title>
		<link>http://www.lotushints.com/2009/12/merry-xmas/</link>
		<comments>http://www.lotushints.com/2009/12/merry-xmas/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 21:40:15 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=471</guid>
		<description><![CDATA[&#8230; and a happy New year 2011. This concludes my posts for this year and see you all in next one.]]></description>
			<content:encoded><![CDATA[<p>&#8230; and a happy New year 2011.</p>
<p>This concludes my posts for this year and see you all in next one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/12/merry-xmas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A year ago&#8230;</title>
		<link>http://www.lotushints.com/2009/09/a-year-ago/</link>
		<comments>http://www.lotushints.com/2009/09/a-year-ago/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 07:00:53 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=430</guid>
		<description><![CDATA[So it is a year ago and some days since I officially joined blogging community. I started this blog with not many expectations. Just wanted to post my development rants/tips/hints/whatever somewhere in the visible web. I started of writing a post a week. Unfortunately real life started meddling, and that was soon reduced to 1 [...]]]></description>
			<content:encoded><![CDATA[<p>So it is a year ago and some days since I officially joined blogging community. I started this blog with not many expectations. Just wanted to post my development rants/tips/hints/whatever somewhere in the visible web. I started of writing a post a week. Unfortunately real life started meddling, and that was soon reduced to 1 post biweekly. And this is most likely the format I will stick to, as it is damn hard to write something worth reading every 7 days.</p>
<p><span id="more-430"></span></p>
<p>Now to what every geek likes. Statistics. But not more than just enough to wet your nose.</p>
<p>In past year, more than 3300 of you decided to read what was posted here. And some of you even returned for more. Way above my expectations, to be quite honest. Most of you were from USA (1.2K), followed by UK, Germany, Slovenia and India.</p>
<p>FireFox was most used browser (51%), even thought some of you used IE (38%). Which is a bit different from world stats. Not that I mind.</p>
<p>Most read articles would be (in order of views): <a href=" /2009/03/custom-web-forms-part-1-exporting-form-into-dxl/ " target="_blank">Exporting form into DXL</a>, <a href="/2009/04/microsoft-expressions-superview-beta/ " target="_blank">Microsoft Expression Superview Beta</a>, <a href="/category/design-patterns/ " target="_blank">Design patterns series</a> and a rant about <a href="/2009/06/notes-rendering-engine/ " target="_blank">Notes rendering engine</a>. Most surprising is high placement of Microsoft thingy and on blog that focuses on Lotus technology. The fact that DXL is still such a popular topic is not that surprising, as documentation and Notes help are still too vague about that. Thankfully now, there are examples included. When I started using DXL for exporting documents to Wiki and Atom format, that was still not the case.</p>
<p>Unfortunately, my work orientation is lately changing to technologies not connected to Lotus. I do hope I will be able to keep up in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/09/a-year-ago/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turning big ol&#8217; 30 today&#8230;</title>
		<link>http://www.lotushints.com/2009/08/turning-big-ol-30-today/</link>
		<comments>http://www.lotushints.com/2009/08/turning-big-ol-30-today/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 05:35:11 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=421</guid>
		<description><![CDATA[I remember as a kid, thinking that 30 is soooooooooooooooo far away and by then I will be really really old. Looking back, it wooshed by. Mostly. Now, I need to get back to work. Then, later today, a decent meal and couple pints of beer. Hopefully.]]></description>
			<content:encoded><![CDATA[<p>I remember as a kid, thinking that 30 is soooooooooooooooo far away and by then I will be really really old. Looking back, it wooshed by. Mostly.</p>
<p>Now, I need to get back to work. Then, later today, a decent meal and couple pints of beer. Hopefully.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/08/turning-big-ol-30-today/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Moving places</title>
		<link>http://www.lotushints.com/2009/07/moving-places/</link>
		<comments>http://www.lotushints.com/2009/07/moving-places/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 07:00:17 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=381</guid>
		<description><![CDATA[After several efforts, I finally managed to move to my own place. The only problem is that internet doesn&#8217;t work properly. Everything else is just fine. Anyway, hoping to solve issues till next week. Unfortunatelly, this means there will be no post this week.]]></description>
			<content:encoded><![CDATA[<p>After several efforts, I finally managed to move to my own place. The only problem is that internet doesn&#8217;t work properly. Everything else is just fine. Anyway, hoping to solve issues till next week. Unfortunatelly, this means there will be no post this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/07/moving-places/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes rendering engine</title>
		<link>http://www.lotushints.com/2009/06/notes-rendering-engine/</link>
		<comments>http://www.lotushints.com/2009/06/notes-rendering-engine/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 07:00:11 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[rendering]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=372</guid>
		<description><![CDATA[About a year hence, it was time to refresh web design of my company&#8217;s web site. We decided to stick to new and improved web page standards and thus separate style and scripts from content. All well, but one simple thing. Our CMS never forced it&#8217;s users to use HTML in their code. We always [...]]]></description>
			<content:encoded><![CDATA[<p>About a year hence, it was time to refresh web design of my company&#8217;s web site. We decided to stick to new and improved web page standards and thus separate style and scripts from content. All well, but one simple thing. Our CMS never forced it&#8217;s users to use HTML in their code. We always relied on Notes rendering engine to render Notes documents body contents to what should be displayed on the web.</p>
<p>Not a good idea. I don&#8217;t know, when was the last time, someone at IBM took a look at their rendering engine, but this just isn&#8217;t it. Unordered lists don&#8217;t close, leading to a total mess of your layout. On numerous occasions, a div tag marked as pass through text got put to the bottom of contents and not at the spot where it was in the body field, leading to some more confusion. And what killed it for me was a sudden br tag flood in the HTML for no apparent reason. All 6 of them were gone when text was put in the same line as pass through text and appeared right after I put the text back in new line. And all of this appeared randomly, which amused me for a while.</p>
<p>So, I guess it is no wonder, why there are so many CMS application in Notes, where content needs to be entered as HTML. However, in my experience, you as a developer or admin of such system can be glad if a content editor knows how to use Lotus Notes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/06/notes-rendering-engine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Design patterns &#8211; Part 9: Mediator pattern</title>
		<link>http://www.lotushints.com/2009/04/design-patterns-part-9-mediator-pattern/</link>
		<comments>http://www.lotushints.com/2009/04/design-patterns-part-9-mediator-pattern/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 08:00:28 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Code optimization]]></category>
		<category><![CDATA[Intermediate]]></category>
		<category><![CDATA[Lotus Domino]]></category>
		<category><![CDATA[Object-oriented development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[custom classes]]></category>
		<category><![CDATA[LotusScript]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[mediator]]></category>
		<category><![CDATA[object-oriented]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=320</guid>
		<description><![CDATA[This week, I present to you not much used, but quite useful Mediator pattern. Mediator pattern provides a unified interface to set of interfaces in a subsystem. Or, to simplify&#8230; Mediator pattern is mediator for communication between several classes. Example Now, the easiest way to explain this pattern is via example. Example itself is borrowed [...]]]></description>
			<content:encoded><![CDATA[<p>This week, I present to you not much used, but quite useful Mediator pattern.</p>
<blockquote><p><strong>Mediator pattern</strong> provides a unified interface to set of interfaces in a subsystem.</p></blockquote>
<p>Or, to simplify&#8230; Mediator pattern is mediator for communication between several classes.</p>
<p><span id="more-320"></span></p>
<p><strong>Example</strong></p>
<p>Now, the easiest way to explain this pattern is via example. Example itself is borrowed from <a href="http://www.dofactory.com/Patterns/PatternMediator.aspx" target="_blank">dofactory page</a>, but modified to fit LotusScript. It is about a simple support chat room. This chat room has several users of two types: admins and customers. I will call them participants. These participants can communicate amongst each other, presuming, they know user ids.</p>
<p>First, we need a chatroom template class, as we might end up with more than one chat room. Chat room will need to register participants and to be able to deliver messages to them.</p>
<pre>Class CChatroomTemplate
   Sub Register (participant As CParticipant)
   End Sub

   Sub Send (strFrom As String, strTo As String, strMsg As String)
   End Sub
End Class</pre>
<p>As participants need instance of chatroom class and chatroom needs list of participant class instances, we need to create chatroom and participant class frameworks and only then put code into it. Participants need to be able to send and receive messages. Finished classes are displayed below.</p>
<pre>Class CSupportChat As CChatroomTemplate
   m_LMembers List As CParticipant

   Sub Register(participant As CParticipant)
      If (Not Iselement (m_LMembers (participant.UserId))) Then
         Set m_LMembers (participant.UserId) = participant
      End If
      Set participant.Chatroom = Me
   End Sub

   Sub Send (strFrom As String, strTo As String, strMsg As String)
      Dim participant As CParticipant

      If (Not Iselement (m_LMembers (strTo))) Then Exit Sub
      Set participant = m_LMembers (strTo)
      Call participant.Receive (strFrom, strMsg)
   End Sub
End Class

Class CParticipant
   m_chatroom As CSupportChat
   m_strUserId As String

   Property Set Chatroom As CSupportChat
      Set m_chatroom = Chatroom
   End Property

   Property Get UserId As String
      UserId = m_strUserId
   End Property

   Property Set UserId As String
      m_strUserId = UserId
   End Property

   Sub new (strUserId As String)
      m_strUserId = strUserId
   End Sub

   Sub Send (strTo As String, strMsg As String)
      Call m_chatroom.Send (m_strUserId, strTo, strMsg)
   End Sub

   Sub Receive (strFrom As String, strMsg As String)
      Messagebox strFrom &amp; " to " &amp; m_strUserId &amp; ": " &amp; strMsg
   End Sub
End Class</pre>
<p>Now that base classes are set, it is time to create real participant classes. In our case, we need one for admins and one for regular users.</p>
<pre>Class CAdmin As CParticipant
   Sub new (strUserId As String)
   End Sub

   Sub Receive (strFrom As String, strMsg As String)
      Messagebox "Admin message"
      Call CParticipant..Receive (strFrom, strMsg)
   End Sub
End Class

Class CUser As CParticipant
   Sub new (strUserId As String)
   End Sub

   Sub Receive (strFrom As String, strMsg As String)
      Messagebox "User message"
      Call CParticipant..Receive (strFrom, strMsg)
   End Sub
End Class</pre>
<p><strong>Testing the code</strong></p>
<p>For testing purposes, I put it all in agent, created four users (of which one is admin) and sent 3 messages to admin and admin responded to first one. The code is below.</p>
<pre>Sub Initialize
   Dim chatroom As CSupportChat
   Dim user1 As CParticipant
   Dim user2 As CParticipant
   Dim user3 As CParticipant
   Dim user4 As CParticipant

   Set chatroom = New CSupportChat()
   Set user1 = New CUser ("User 1")
   Set user2 = New CUser ("User 2")
   Set user3 = New CUser ("User 3")
   Set user4 = New CAdmin ("Admin 1")

   Call chatroom.Register (user1)
   Call chatroom.Register (user2)
   Call chatroom.Register (user3)
   Call chatroom.Register (user4)

   Call user1.Send ("Admin 1", "Help?")
   Call user4.Send ("User 1", "What's wrong?")
   Call user2.Send ("Admin 1", "My server just crashed!!!")
   Call user3.Send ("Admin 1", "Network died!")
End Sub</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/04/design-patterns-part-9-mediator-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Easter holidays&#8230;</title>
		<link>http://www.lotushints.com/2009/04/happy-easter-holidays/</link>
		<comments>http://www.lotushints.com/2009/04/happy-easter-holidays/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 08:00:02 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=313</guid>
		<description><![CDATA[&#8230;yeah, you noticed&#8230; There won&#8217;t be a post this week. Enjoy your holidays.]]></description>
			<content:encoded><![CDATA[<p>&#8230;yeah, you noticed&#8230; There won&#8217;t be a post this week. Enjoy your holidays.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/04/happy-easter-holidays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Version control and bug tracking</title>
		<link>http://www.lotushints.com/2009/01/version-control-and-bug-tracking/</link>
		<comments>http://www.lotushints.com/2009/01/version-control-and-bug-tracking/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 12:51:10 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Basic]]></category>
		<category><![CDATA[Intermediate]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=169</guid>
		<description><![CDATA[In my years of developing software, I come to realize that what every software development department needs is: some sort of IDE with a compiler version control and bug tracking. Usually you get stuck with IDE with a compiler. Everything else is up to you. But how are things in Lotus Notes? Version control As [...]]]></description>
			<content:encoded><![CDATA[<p>In my years of developing software, I come to realize that what every software development department needs is:</p>
<ul>
<li>some sort of IDE with a compiler</li>
<li>version control</li>
<li>and bug tracking.</li>
</ul>
<p>Usually you get stuck with IDE with a compiler. Everything else is up to you. But how are things in Lotus Notes?<br />
<span id="more-169"></span><br />
<strong>Version control</strong></p>
<p>As expected Lotus Designer doesn&#8217;t have an integrated version control software. Not yet anyway. They are planing to build subclipse to work in new 8.5 designer, but that still needs some time. Also most people are probably still stuck at R7.</p>
<p>Well, one of the things you could use is Teamstudio Ciao!. This is a payed software meaning that either it becomes your department policy to use it or you will never use it. I had a chance of working with Ciao and I have to say that I was less than impressed. But that is just me. I know a lot of people using it without any drawbacks and with lack of tools out there, this is probably the way to go.</p>
<p>Next widely used option is to use separate templates for each and every version of your application. There are two things wrong with this. One is that there is no way any developer would do a new template just for fixing one single agent. Second one is that I am yet to see a consistent template policy.</p>
<p>Another possibility is to copy your database locally and then import it into Subversion (SVN) or perhaps write a script that would periodically do that for you. The thing is that you won&#8217;t be able to just revert to desired version of the database without deleting the existing one. There is one other option. You could export objects (agents, views etc.) as DXL, import it into SVN and then when needed import DXL back to the database. However, DXL is not 100% representation of design elements. Thus I wouldn&#8217;t recommend it.</p>
<p>As mentioned there is a subclipse project that would enable subclipse in Domino Designer 8.5. Subclipse is Eclipse plug-in for Subversion. And since Domino Designer 8.5 is built on Eclipse framework, this would finally solve most of our version control issues.</p>
<p><strong>Bug Tracking</strong></p>
<p>Why bug tracking? Well, I am yet to see software without bugs. And the thing that helps the most is some sort of bug tracking engine. However, oddly enough, this is the part rarely seen and used. Typical bug tracking process should go like this:</p>
<ul>
<li>someone reports a bug</li>
<li>developer is assigned to the bug</li>
<li>developer fixes the bug</li>
<li>third person (inside a company and related to project the bug was reported for) tests the fixed code</li>
<li>bug report is completed.</li>
</ul>
<p>Now, show of hands. How many of you have this process implemented in your development cycle? I thought so. But being a Notes developer, what are your options?</p>
<p>There is a great open source project at openntf.org called <a href="http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/BugTracker">BugTracker</a>. Another option is to use some commercial product like <a href="http://www.trackersuite.com/frame_help_desk_software.html">Trackersuit Help Desk Software</a> or similar.</p>
<p>If you are not attached to domino apps only, there are tons of open source applications for bug tracking. Probably most known amongst them are <a href="http://www.mantisbt.org/">Mantis BugTracker</a> and <a href="http://www.bugzilla.org/download/">Bugzilla</a>.</p>
<p>The most inappropriate systems for bug tracking I have seen thus far are internal forum and wiki. These applications are not meant to be bug trackers. So, please, don&#8217;t use them as such.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/01/version-control-and-bug-tracking/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Got sick :(&#8230;</title>
		<link>http://www.lotushints.com/2009/01/got-sick/</link>
		<comments>http://www.lotushints.com/2009/01/got-sick/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 15:00:00 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=167</guid>
		<description><![CDATA[&#8230; so there will be no post this week. Sorry.]]></description>
			<content:encoded><![CDATA[<p>&#8230; so there will be no post this week. Sorry.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2009/01/got-sick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year!</title>
		<link>http://www.lotushints.com/2008/12/happy-new-year/</link>
		<comments>http://www.lotushints.com/2008/12/happy-new-year/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:06:12 +0000</pubDate>
		<dc:creator>Vladimir Kocjancic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lotushints.com/?p=157</guid>
		<description><![CDATA[I do wish all of you a happy and successful New year 2009. May all your wishes come true and all your code work. Oh, and you have probably noticed, there won&#8217;t be an article this week .]]></description>
			<content:encoded><![CDATA[<p>I do wish all of you a happy and successful New year 2009. May all your wishes come true and all your code work.</p>
<p>Oh, and you have probably noticed, there won&#8217;t be an article this week <img src='http://www.lotushints.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lotushints.com/2008/12/happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
