<?xml version="1.0" encoding="iso-8859-1" ?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://www.geniisoft.com/showcase.nsf/GeniiBlog">
  <title>Genii Software Blog</title>
  <link>http://www.GeniiSoft.com/showcase.nsf/GeniiBlog</link>

<description>Personal insights into the world of IT from Ben Langhinrichs</description>

<image rdf:resource="http://www.geniisoft.com/showcase.nsf/weblog_sm.jpg" />
  <items>
    <rdf:Seq>
	
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20090619-0928" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20061026-0932" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060914-0726" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060829-1048" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060814-1150" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060629-0949" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060427-1141" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060423-0829" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060323-1129" />
<rdf:li resource="http://www.GeniiSoft.com/showcase.nsf/archive/20060223-1005" />

    </rdf:Seq>
  </items>
</channel>	

  <dc:description>Genii Software's business and development weblog</dc:description>
  <dc:language>en-us</dc:language> 
  <dc:publisher>Genii Software</dc:publisher>
  <dc:creator>Ben Langhinrichs (mailto:Ben@GeniiSoft.com)</dc:creator>
  <dc:rights>Copyright &#169; 2005  Genii Software Ltd.</dc:rights>
  <image rdf:about="http://www.geniisoft.com/showcase.nsf/weblog_sm.jpg">
    <title>Genii Inside/Insight</title> 
    <url>http://www.geniisoft.com/showcase.nsf/weblog_sm.jpg</url> 
    <link>http://www.geniisoft.com/showcase.nsf/GeniiBlog</link> 
  </image>
	
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20090619-0928"><title>SNTT: Inner and Outer margins in Notes</title><dc:date>2009-06-19T09:28:19-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20090619-0928</link><description><![CDATA[ <div><img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="111" width="147" alt="Show and Tell Thursday logo" hspace="20" style=" border-style:solid;border-color:rgb(0,0,255);border-width:3;margin: 0 20 12 6;padding:8;" align='left'>It feels like forever since I last posted a Show and Tell Thursday post, so of course when I finally get around to it, I don't get to it until Friday.&nbsp;&nbsp;Nonetheless, this is a handy feature that I have wanted to mention for a while and not gotten to.&nbsp;&nbsp;It may well be one that some people know about, and others say &quot;Wow, I never noticed that.&quot;<br><br>The property boxes in Lotus Notes are often very densely packed, and occasionally, a valuable feature is disguised in plain sight in an attempt to conserve space.&nbsp;&nbsp;This is certainly true on the border tab used for images, tables (table border, not cell border) and paragraphs.&nbsp;&nbsp;I'll start with images, because they are very easy to see and use.</div><div><br><br><br>(read on) to see how the effect (shown here) is created.</div>]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20061026-0932"><title>SNTT: Centering content in a frame or box</title><dc:date>2006-10-26T09:32:19-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20061026-0932</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="114" width="131" alt="Show and Tell Thursday logo" border="0"><br>In the absence of any clue whether my readers know about this or not, the problem is how to center text or other content both vertically and horizontally in a frame or box of set height and width so that it will work in either the Notes client or on the web... (read on)]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060914-0726"><title>SNTT: Follow up on Lsi_info (and GetThreadInfo)</title><dc:date>2006-09-14T07:26:47-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060914-0726</link><description><![CDATA[ Back in 2004, I posted about Lsi_info called&nbsp;<a href="http://www.GeniiSoft.com/showcase.nsf/archive/20040427-1043" target="_blank"><font color='#0000ff'><u>Calling all detectives - hacking Lsi_info together</u></font></a>.&nbsp;&nbsp;A recent response from Markus Fundel prompts my SNTT post for today...<br><br><img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" alt="Show and tell Thursday logo" border="0" align='right'>The documented GetThreadInfo method has an undocumented (although fairly widely known) cousin called Lsi_info.&nbsp;&nbsp;The Lsi_info method has been around much longer, and has a number of possible parameters beyond those GetThreadInfo, none of which are documented formally.&nbsp;&nbsp;This is a list of what I have been able to determine (or guess) based on the feedback of a number of people in the thread mentioned above.<br><br>IMPORTANT NOTE: Lsi_info is not thread safe!&nbsp;&nbsp;If you are going to be calling these from multiple agents and such, use only the documented constants and use GetThreadInfo.<br><br>OK, for those willing to live on the bleeding edge who want to be able to debug more, including potential memory leaks, here is a list of some values and there assumed meanings.&nbsp;&nbsp;The first group are in dark blue and are the documented set (both in the Help file and in the&nbsp;<b>LSPRCVAL.LSS</b> file.&nbsp;&nbsp;The others are less certain, but still may help you.&nbsp;&nbsp;I particularly recommend 50, 51, 52 for tracking memory leaks with API programs and that sort of thing.<br><br> (read on)]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060829-1048"><title>SNTT: Hidden magic voodoo ritual to make your db act like Help db with layout and links</title><dc:date>2006-08-29T10:48:38-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060829-1048</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" border="0" align='right' /><font color='Black'>A developer in the IBM Business Partner Forum (Dietmar Hoehmann of IT-Con Beratung und Service, to be exact) posted a series of wishes, including this old favorite</font><blockquote><font color='Black'>The help databases display in a custom window with a special layout. I want this option for my applications, too.</font></blockquote><font color='Black'>Mark Jourdain of IBM responded, and described the hidden magic voodoo ritual (my description, not his) that is described in Technote #1095308.&nbsp;&nbsp;I thought reprinting this would be a good Show 'n Tell Thursday contribution, even worthy of being printed a couple of days early:<br><br><br><br><br>(read on)]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060814-1150"><title>If all you care about is Show and Tell Thursday posts...</title><dc:date>2006-08-14T11:50:19-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060814-1150</link><description><![CDATA[ I added a special feed (mostly so Richard can add it to<a href="http://www.rhs.com/web/blog/gregate/v3test.nsf" target="_blank"><font color='#0000ff'><u> his aggregator</u></font></a>) for the Show and Tell Thursday posts.&nbsp;&nbsp;The feed is at <a target="_new" href="http://www.geniisoft.com/showcase.nsf/SNTTBlogStories.xml">http://www.geniisoft.com/showcase.nsf/SNTTBlogStories.xml</a> for those interested.]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060629-0949"><title>SNTT: Sorting by last name first the right way</title><dc:date>2006-06-29T09:49:06-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060629-0949</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" alt="Show and Tell Thursday" border="0" align='right' />I posted this long ago in a couple of competitive bouts with&nbsp;<a href="http://www.lotusgeek.com" target="_blank"><font color='#0000ff'><u>Rocky</u></font></a>, but they are handy tips and might well have gotten mised by those who might use them as opposed to just watching the show.&nbsp;&nbsp;This requires @Functions which were introduced in ND6, so don't try it with R5.<b><br /><br />Original Requirement (Categorized View)</b><br /><br />Let's assume you have a database with people's names contained in multi-value text list field called&nbsp;<b>Attendees</b>.&nbsp;&nbsp;Now, you want to categorize documents by attendee, so you can see which sessions Roger Hebert is in, for example.&nbsp;&nbsp;Since the&nbsp;<b>Attendees</b> field is stored as a multi-value list, such as &quot;Thomas Duff&quot;:&quot;Joe Litton&quot;, this would seem easily handled by a categorized column with a formula such as<br /><br /><b>Original Formula</b><font color='#0000ff'><br /><br />@RightBack</font>(Attendees;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)+<font color='#ff00ff'>&quot;, &quot;</font>+<font color='#0000ff'>@LeftBack</font>(Attendees;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)<br /><br />which works great until you see attendees with names such as &quot;Cees van der Woude&quot;.&nbsp;&nbsp;Well, we don't want the &quot;Cees van der Woude&quot; to be returned as &quot;Woude, Cees van der&quot; because that would be both inaccurate and culturally ignorant.&nbsp;&nbsp;So, how do we handle this?&nbsp;&nbsp;Also, how do we handle entries such as &quot;N/A&quot;, which leaders put for any person for whom they didn't get a correct name?&nbsp;&nbsp;If this were a single value, the formula could handle these exceptions more easily, but the multi-value list makes it very hard.&nbsp;&nbsp;Also, there are a few really odd names such as Cindy Lou Who van der Pelt.<br /><br />But in Notes 6, the @Transform function was added,&nbsp;which does indeed allow us to act as if this is a single value instead of a list.&nbsp;&nbsp;Let's see if we can come up with a formula for our categorized column that handles these exceptions cleanly.&nbsp;&nbsp;<br /><br /><b>A much better Solution to Original Requirement</b><br /><br />The following column formula is used in the column to be categorized, with the sorting handled by the view engine.<br /><br /><font color='#0000ff'>@Transform</font>(Attendees;&nbsp;<font color='#ff00ff'>&quot;A&quot;</font>;<br /><font color='#0000ff'>@If</font>(A =&nbsp;<font color='#ff00ff'>&quot;N/A&quot;</font>:<font color='#ff00ff'>&quot;&quot;</font>;&nbsp;<font color='#ff00ff'>&quot;N/A&quot;</font>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>@Do</font>(R:=<font color='#0000ff'>@Transform</font>(<font color='#0000ff'>@Explode</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>);&nbsp;<font color='#ff00ff'>&quot;W&quot;</font>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>@If</font>(<font color='#0000ff'>@Matches</font>(W;&nbsp;<font color='#ff00ff'>&quot;{a-z}*&quot;</font>); W+<font color='#0000ff'>@RightBack</font>(A; W)+<font color='#ff00ff'>&quot;, &quot;</font>+<font color='#0000ff'>@LeftBack</font>(A; W);&nbsp;<font color='#0000ff'>@Nothing</font>));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>@If</font> (<font color='#0000ff'>@Trim</font>(R) !=&nbsp;<font color='#ff00ff'>&quot;&quot;</font>;&nbsp;<font color='#0000ff'>@Trim</font>(R)[1];&nbsp;<font color='#0000ff'>@RightBack</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)+<font color='#ff00ff'>&quot;, &quot;</font>+<font color='#0000ff'>@LeftBack</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)))));<br /><br />That works well, and will handle all of the special cases, so long as the initial words in last names, such as &quot;van&quot; in &quot;van der pelt&quot; start with lowercase letters.<br /><br /><b>New Requirement (List displayed in a document)</b><br />But then you decide that inside each document, you would like the list sorted by last name first as well, but not shown that way.&nbsp;&nbsp;In other words:<br /><br /><font color='#ff0000'><b>Joe Litton</b></font><br /><font color='#ff0000'><b>Cindy Lou Who</b></font><br /><font color='#ff0000'><b>Mary Jane van der Welten</b></font><br /><font color='#ff0000'><b>Tom Duff</b></font><br /><font color='#ff0000'><b>Ben Langhinrichs</b></font><br /><font color='#ff0000'><b>Harry Belafonte</b></font><br /><br />should be listed as<br /><br /><font color='#ff0000'><b>Harry Belafonte</b></font><br /><font color='#ff0000'><b>Tom Duff</b></font><br /><font color='#ff0000'><b>Ben Langhinrichs</b></font><br /><font color='#ff0000'><b>Joe Litton</b></font><br /><font color='#ff0000'><b>Mary Jane van der Welten</b></font><br /><font color='#ff0000'><b>Cindy Lou Who</b></font><br /><br />This requires an adaption using the @Sort method, and a bit of slight of hand.<br /><br /><b>Solution to New Requirement</b><br />sorted_by_last :=&nbsp;<font color='#0000ff'>@Sort</font>(<font color='#0000ff'>@Transform</font>(Attendees;&nbsp;<font color='#ff00ff'>&quot;A&quot;</font>;<br /><font color='#0000ff'>@If</font>(<font color='#0000ff'>@Do</font>(R:=<font color='#0000ff'>@Transform</font>(<font color='#0000ff'>@Explode</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>);&nbsp;<font color='#ff00ff'>&quot;W&quot;</font>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>@If</font>(<font color='#0000ff'>@Matches</font>(W;&nbsp;<font color='#ff00ff'>&quot;{a-z}*&quot;</font>); W+<font color='#0000ff'>@RightBack</font>(A; W)+<font color='#ff00ff'>&quot;, &quot;</font>+<font color='#0000ff'>@LeftBack</font>(A; W);&nbsp;<font color='#0000ff'>@Nothing</font>));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>@If</font> (<font color='#0000ff'>@Trim</font>(R) !=&nbsp;<font color='#ff00ff'>&quot;&quot;</font>;&nbsp;<font color='#0000ff'>@Trim</font>(R)[1];&nbsp;<font color='#0000ff'>@RightBack</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)+<font color='#ff00ff'>&quot;, &quot;</font>+<font color='#0000ff'>@LeftBack</font>(A;&nbsp;<font color='#ff00ff'>&quot; &quot;</font>)))));<br />sorted :=&nbsp;<font color='#0000ff'>@Trim</font>(<font color='#0000ff'>@RightBack</font>(sorted_by_last;&nbsp;<font color='#ff00ff'>&quot;,&quot;</font>)+<font color='#ff00ff'>&quot; &quot;</font>+<font color='#0000ff'>@LeftBack</font>(sorted_by_last;&nbsp;<font color='#ff00ff'>&quot;,&quot;</font>));<br /><br />Yeah, just what you were thinking, right?&nbsp;&nbsp;The key is using the @Transform we used above, but then recreating the original after sorting.&nbsp;&nbsp;Geeky, but effective.]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060427-1141"><title>Making db link hotspots from your bookmarks (with Midas)</title><dc:date>2006-04-27T11:41:00-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060427-1141</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" alt="Show and tell Thursday" border="0" align='right' />This came up as a request from the IBM Business Partner forum, but I thought I'd share it.&nbsp;&nbsp;Alan Lepofsky asked:<blockquote>After working with Notes at IBM for over a decade, I have several hundred DB icons on my Workspace.&nbsp;&nbsp;&nbsp;I'd say I only use a dozen or so on a daily basis.<br /><br />I'd like to dramatically clean up my Workspace, remove icons, even remove entire pages.&nbsp;&nbsp;&nbsp;However, I know the day I do it is going to be the day I need &quot;that link I was sent a few years ago about X&quot;.<br /><br />I'm thinking an agent could scans all the tabs, and creates a document (or email) with links to all my DBs.&nbsp;&nbsp;&nbsp;I can then save that document as a backup.</blockquote><br /><br />So, here goes.&nbsp;&nbsp;This tip requires use of our&nbsp;<a href="http://www.GeniiSoft.com/showcase.nsf/MidasLSX" target="_blank"><font color='#0000ff'><u>Midas Rich Text LSX</u></font></a>, but if you happen to already have it (a heck of a lot of people do, and probably a fairly high percentage of my readers, but if you don't, why not?):<br /><br /><font color='#0000ff'>Option Public</font><br /><font color='#0000ff'>Option Declare</font><br /><font color='#0000ff'>Uselsx</font> &quot;*lsxrtc&quot;<br /><br /><font color='#0000ff'>Sub</font> Initialize<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> session&nbsp;<font color='#0000ff'>As</font>&nbsp;<font color='#0000ff'>New</font> NotesSession<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> db&nbsp;<font color='#0000ff'>As</font> NotesDatabase<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> doc&nbsp;<font color='#0000ff'>As</font> NotesDocument<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> currentdb&nbsp;<font color='#0000ff'>As</font> NotesDatabase<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> newdoc&nbsp;<font color='#0000ff'>As</font> NotesDocument<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> view&nbsp;<font color='#0000ff'>As</font> NotesView<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> rtitem&nbsp;<font color='#0000ff'>As</font>&nbsp;<font color='#0000ff'>New</font> GeniiRTItem<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font>&nbsp;<font color='#0000ff'>new</font>_rtitem&nbsp;<font color='#0000ff'>As</font>&nbsp;<font color='#0000ff'>New</font> GeniiRTItem<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Dim</font> count&nbsp;<font color='#0000ff'>As</font>&nbsp;<font color='#0000ff'>Integer</font><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> currentdb&nbsp;<font color='#0000ff'>=</font> session.CurrentDatabase<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> newdoc&nbsp;<font color='#0000ff'>=</font> New NotesDocument<font color='#0000ff'>(</font>currentdb<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;newdoc.Form&nbsp;<font color='#0000ff'>=</font> &quot;Example Form&quot;<br />&nbsp;&nbsp;&nbsp;newdoc.Subject&nbsp;<font color='#0000ff'>=</font> &quot;Bookmarks&quot;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font>&nbsp;<font color='#0000ff'>new</font>_rtitem.CreateBackend<font color='#0000ff'>(</font>newdoc.Handle<font color='#0000ff'>,</font> &quot;Body&quot;<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> db&nbsp;<font color='#0000ff'>=</font>&nbsp;<font color='#0000ff'>New</font> NotesDatabase<font color='#0000ff'>(</font>&quot;&quot;<font color='#0000ff'>,</font> &quot;&quot;<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font> db.<font color='#0000ff'>Open(</font>&quot;&quot;<font color='#0000ff'>,</font> &quot;bookmark.nsf&quot;<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> view&nbsp;<font color='#0000ff'>=</font> db.GetView<font color='#0000ff'>(</font>&quot;<font color='#0000ff'>(</font>All Bookmarks<font color='#0000ff'>)</font>&quot;<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> doc&nbsp;<font color='#0000ff'>=</font> view.GetFirstDocument<br />&nbsp;&nbsp;&nbsp;count&nbsp;<font color='#0000ff'>=</font> 0<br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>While</font>&nbsp;<font color='#0000ff'>Not</font>&nbsp;<font color='#0000ff'>(</font>doc&nbsp;<font color='#0000ff'>Is</font>&nbsp;<font color='#0000ff'>Nothing)</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;<font color='#0000ff'>=</font> count + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font> rtitem.ConnectBackend<font color='#0000ff'>(</font>doc.Handle<font color='#0000ff'>,</font> &quot;URL&quot;<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>If</font> rtitem.Everything.LinkReplicaID &lt;&gt; &quot;&quot;&nbsp;<font color='#0000ff'>Then</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Print</font> doc.Title<font color='#0000ff'>(</font>0<font color='#0000ff'>)</font>+&quot;:&quot;+rtitem.Everything.LinkReplicaID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font>&nbsp;<font color='#0000ff'>new</font>_rtitem.Everything.AppendLink<font color='#0000ff'>(</font>doc.Title<font color='#0000ff'>(</font>0<font color='#0000ff'>),</font> rtitem.Everything.LinkReplicaID<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>If</font> count&nbsp;<font color='#0000ff'>Mod</font> 5&nbsp;<font color='#0000ff'>=</font> 0&nbsp;<font color='#0000ff'>Then</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font>&nbsp;<font color='#0000ff'>new</font>_rtitem.Everything.AppendNewlines<font color='#0000ff'>(</font>0<font color='#0000ff'>,</font>&nbsp;<font color='#0000ff'>True)</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Else</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font>&nbsp;<font color='#0000ff'>new</font>_rtitem.Everything.AppendNewlines<font color='#0000ff'>(</font>1<font color='#0000ff'>,</font>&nbsp;<font color='#0000ff'>False)</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>End</font>&nbsp;<font color='#0000ff'>If</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Else</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Print</font> doc.Title<font color='#0000ff'>(</font>0<font color='#0000ff'>)</font>+&quot;:undefined&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>End</font>&nbsp;<font color='#0000ff'>If</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Set</font> doc&nbsp;<font color='#0000ff'>=</font> view.GetNextDocument<font color='#0000ff'>(</font>doc<font color='#0000ff'>)</font><br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Wend</font><br />&nbsp;&nbsp;&nbsp;<font color='#0000ff'>Call</font>&nbsp;<font color='#0000ff'>new</font>_rtitem.Save<br /><font color='#0000ff'>End</font>&nbsp;<font color='#0000ff'>Sub</font><br />]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060423-0829"><title>Why bugs don't get fixed</title><dc:date>2006-04-23T08:29:11-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060423-0829</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" alt="Show and Tell Thursday (any day)" border="0" align='left' />I have decided that expecting myself to actually post Show 'N Tell Thursday posts on Thursdays could lead to my not fixing bugs in a timely manner (see #10 below when you get to it), and so have decided to ignore the day of the week and simply post when and how I like, but I'll still use the graphic because it looks cool and isn't animated or noisy and doesn't spread kitty litter all over the place.<br /><br />Oh yes, and I may update this post a few times to try to make it a bit more coherent.&nbsp;&nbsp;If you don't like bloggers who edit their posts, you may want to avert your eyes for a few days and come back then.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><font size='3'><b>Why bugs don't get fixed</b></font><br /><br />It is a common question asked on the various forums I read, &quot;Why hasn't [fill in the blank] bug gotten fixed, even though it has been around forever?&quot; and since the forums are Lotus Notes forums, the questions tend to be about Lotus Notes bugs.&nbsp;&nbsp;The funny thing is, if you hang around on Exchange forums, you hear the same questions, and the same with Oracle forums and pretty much anywhere else, including open source forums where the obvious answer is &quot;because you didn't get off your lazy bum and fix it&quot;.<br /><br />But in most of these cases, the software is not open source, and the lazy bums are perceived to belong to IBM... or Microsoft... or [name of software company].&nbsp;&nbsp;<br /><br />(read on)<br /><p>Technorati Tags: <a href="http://technorati.com/tag/Show-n-Tell+Thursday/">Show-n-Tell Thursday</a>, <a href="http://technorati.com/tag/LotusNotes/">Lotus Notes</a>, 
<a href="http://technorati.com/tag/SnTT/">SnTT</a></p>]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060323-1129"><title>Show 'N Tell Thursday: Writing better hide-when formulas</title><dc:date>2006-03-23T11:29:27-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060323-1129</link><description><![CDATA[ <img src="http://www.GeniiSoft.com/showcase.nsf/ShownTellThursBowTie.jpg?OpenImageResource" height="227" width="262" alt="Show and Tell Thursday" border="0" align='right' />This is a repeat of one of my more popular tips (see&nbsp;<a href="http://www.GeniiSoft.com/showcase.nsf/archive/20040407-0623" target="_blank"><fontcolor='#0000ff'><u>here</u></font></a>), but since people never see it until I point them to it, it probably deserves repeating:<br /><br />It has always surprised me how many questions are raised in the various Notes/Domino forums about hide-when formulas.&nbsp;&nbsp;No, I don't mean the (many) about hide-when formula bugs.&nbsp;&nbsp;I mean the basic process of creating a hide-when formula that does what the user wants.&nbsp;&nbsp;I think that part of the problem is that many non-developers have the need to create a hide-when formula on occasion, and that another part is that people think in terms of &quot;Show When&quot;, not &quot;Hide When&quot;.&nbsp;&nbsp;In any case, I thought I would write a short primer about hide-when formulas to link to when people are confused.<br /><br /><br /><br /><br /><br /><br /><br /><b>Basic Rules for Hide-When formulas</b><ol type="1"><li type="1">Hide-when formulas effect entire paragraphs (a table cell starts with a paragraph, so this is true in table cells as well, although a table cell may have multiple paragraphs.&nbsp;&nbsp;See&nbsp;<a href="http://www.GeniiSoft.com/showcase.nsf/archive/20030819-1204" target="_new"><fontcolor='#0000ff'><u>more on paragraphs</u></font></a>).</li><li type="1">A hide-when formula should always either be a condition (e.g.,&nbsp;<b>Status = &quot;Pending&quot;</b>) or return a @Yes or @No (or @True or @False, which are equivalent).</li><li type="1">Multiple conditions should be combined with an ampersand,&nbsp;<b>&amp;</b>, if&nbsp;<i>all</i> the conditions must be true in order to hide the paragraph, or with a vertical bar,&nbsp;<b>|</b>, if&nbsp;<i>any one</i> of the conditions must be true to hide the paragraph.&nbsp;&nbsp;For example, if we should hide the paragraph when either Status is &quot;Pending&quot; or Override is &quot;Denied&quot;, the formula should be&nbsp;<b>Status = &quot;Pending&quot; | Override = &quot;Denied&quot;</b>.</li><li type="1">If you have mixed conditions, use parentheses to separate the &quot;and&quot; and &quot;or&quot; parts.&nbsp;&nbsp;For example, if the paragraph should be hidden when either Status is &quot;Pending&quot; or Override is &quot;Denied, but not when the document is being edited, the formula should be&nbsp;<b>(Status = &quot;Pending&quot; | Override = &quot;Denied&quot;) &amp; !@IsDocBeingEdited</b>.</li></ol><br /><br /><b>Tips for Simpler Hide-When formulas</b><ol type="1"><li type="1">Do not use an @If unless you really, really need to.&nbsp;&nbsp;The formula&nbsp;<b>@If(Status = &quot;Pending&quot;; @True; @False)</b> should be simplified to&nbsp;<b>Status = &quot;Pending&quot;</b>.</li><li type="1">Formula language allows you to check against a list of names at one time, so the formula&nbsp;<b>Status = &quot;Pending&quot; | Status = &quot;Denied&quot; | Status = &quot;Reviewed&quot;</b> should be simplified to&nbsp;<b>Status = &quot;Pending&quot;:&quot;Denied&quot;:&quot;Reviewed&quot;</b>, with the colon between the items being a list separator.</li><li type="1">If it is very hard to describe the &quot;hide when&quot; condition, but easy to describe the &quot;show when&quot; condition, just put the &quot;show when&quot; condition in parentheses and use an exclamation mark, which means &quot;not&quot; in front.&nbsp;&nbsp;Thus, if the paragraph should be shown (not hidden) when the Type is 1 or the document is being edited, you can use&nbsp;<b>!(Type=1|@IsDocBeingEdited)</b> instead of trying to figure out the inverse.</li><li type="1">Beware of mixed conditions.&nbsp;&nbsp;If you have a formula which says&nbsp;<b>Status = &quot;Denied&quot; | Type = 3 &amp; @IsDocBeingEdited</b>, how do you know whether the proper meaning is&nbsp;<b>(Status = &quot;Denied&quot; | Type = 3) &amp; @IsDocBeingEdited</b> or&nbsp;<b>Status = &quot;Denied&quot; | (Type = 3 &amp; @IsDocBeingEdited)</b>, which have very different meanings.&nbsp;&nbsp;If you assume the first interpretation, your paragraph may be hidden whenever you are in edit mode, but if you assume the second, it will only be hidden in edit mode when the Type is 3.</li><li type="1">Try &quot;talking the formula&quot;.&nbsp;&nbsp;If you have a formula which says&nbsp;<b>Status = &quot;Denied&quot; | Type = 3</b>, and you try to say it out loud as &quot;Hide this paragraph if Status is &quot;Denied&quot; or Type is 3&quot;, you may catch that what you wanted was &quot;Hide this paragraph if Status is &quot;Denied&quot;&nbsp;<b>and</b> Type is 3&quot;, which should be&nbsp;<b>Status = &quot;Denied&quot; &amp; Type = 3</b>.</li></ol><br /><br /><b>Special Tips for Hide-When formulas in rich text fields</b><br /><br />While most people use hide-when formulas on forms, pages and subforms, they are also used in regular rich text fields.&nbsp;&nbsp;Additionally, a rich text field on a form with a hide-when formula inherits that hide-when formula.&nbsp;&nbsp;These tips are particularly useful for hide-when formulas in rich text fields and for hide-when formulas on forms which include rich text fields.<br /><ol type="1"><li type="1">Include a &quot;back door&quot;.&nbsp;&nbsp;A hide-when formula on a form includes an implicit assumption that you can always see the hidden paragraph when designing the form.&nbsp;&nbsp;There is no such assumption with rich text fields.&nbsp;&nbsp;If your formula would have been&nbsp;<b>Donations = 0.0</b>, make it&nbsp;<b>Donations = 0.0 &amp; (!@IsDocBeingEdited)</b>.&nbsp;&nbsp;Then, you can still see the paragraph when editing.&nbsp;&nbsp;Another option is to check a special role, so that when that role is set, you can see all hidden paragraphs.&nbsp;&nbsp;If you don't do this, you may find hidden paragraphs that you can't ever find again.</li><li type="1">Be clear you are using hide-when formulas with users (or admin or somebody).&nbsp;&nbsp;People don't expect hide-when formulas, and won't be very happy if they feel &quot;fooled&quot;.</li></ol><br /><br /><b>Tidbits from the Gold Forums</b><br /><br />These are tips from others posting in the Gold Forums.&nbsp;&nbsp;They offer different ideas and suggestions that might be useful.&nbsp;&nbsp;I provide links back to the original post to allow reading the whole thread.<br /><br /><a href="http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/ad51f766b28199fd85256e36005f7ed2?OpenDocument" target="_new"><fontcolor='#0000ff'><u>Bill Ernest 10.Feb.04</u></font></a> - Another way to use &quot;show when&quot; logic:&nbsp;<blockquote>I usually find it a lot easier to write them like this...<br /><br />Show := @IsMember(&quot;{IT]&quot;;@UserRoles) | @IsMember(&quot;[VisSystemBoard]&quot;;@UserRoles);<br />!Show</blockquote><br /><br /><a href="http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/bff9577917765bc885256e6d004b4b60?OpenDocument" target="_new"><fontcolor='#0000ff'><u>Andre Guirard 05.Apr.04</u></font></a> - @ThisName doesn't work in hide-whens:&nbsp;<blockquote>The problem in this case is that the hide formula is not considered a formula&nbsp;<i>of the field</i>. There is no field context in which this formula executes. The hide formula applies to the&nbsp;<i>text paragraph</i>. In your case, perhaps there's nothing in the paragraph except one field. But there might be several fields and some text or other objects besides. In that case, to which field does @This... refer?</blockquote><br /><br /><a href="http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/cacc3abc01c71f5b85256e40001414d3?OpenDocument" target="_new"><fontcolor='#0000ff'><u>Warren Gamley 19.Feb.04</u></font></a> - Easy way to refresh hide formula from a button:&nbsp;<blockquote>I have a button that I need to click in order to display a hidden paragraph. I have it working so that when I click the button, I have to then click somewhere on the form before the paragraph is displayed. Is there a way to do it so that it appears immediately when the button is pressed?<br /><br /><b>... [Warren answers his own question] ...</b><br /><br />I think I figured out a way.&nbsp;&nbsp;Placing...<br /><br />@Command([RefreshHideFormulas]);<br /><br />... on the button seems to do the trick.</blockquote><br /><hr width="100%" size="4" align=left align=right align=center noshade style="color: rgb(0,0,255);" />This post is likely to be a work in progress.&nbsp;&nbsp;Any other tips or hints or strong suggestions about writing better hide-when formulas hide-when ?]]></description></item>
<item rdf:about="http://www.GeniiSoft.com/showcase.nsf/archive/20060223-1005"><title>Show and Tell Thursday - Integrating web editor with Domino (without CoexEdit)</title><dc:date>2006-02-23T10:05:20-05:00</dc:date><dc:creator>Ben Langhinrichs</dc:creator><link>http://www.GeniiSoft.com/showcase.nsf/archive/20060223-1005</link><description><![CDATA[ As part of my presentation at the EntwicklerCamp 2006, I created a database that demonstrates how to integrate FCKeditor, a very powerful open source WYSIWYG web editor, with Domino, including the ability to import local images, attach files, and even create doclinks, all without the need for&nbsp;<a href="http://www.GeniiSoft.com/showcase.nsf/CoexEdit" target="_blank"><font color='#0000ff'><u>CoexEdit</u></font></a>.&nbsp;&nbsp;All for free (as in beer, which usually isn't).&nbsp;&nbsp;Of course, because it doesn't use CoexEdit, this is a web only solution and has a few other implications I will get into, but it is still a fairly awesome and easy to use integration... (read on)

<br /><br />Technorati: <a href="http://technorati.com/tag/Show-n-tell+thursday" rel="tag">Show-n-tell Thursday</a><br />]]></description></item>
 
  </rdf:RDF>
