Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://lostinxpages.com/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  9. >
  10.  
  11. <channel>
  12. <title>Lost in XPages, Soon to be Found</title>
  13. <atom:link href="https://lostinxpages.com/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://lostinxpages.com</link>
  15. <description>An exploration of IBM Notes Xpages development</description>
  16. <lastBuildDate>Wed, 01 Nov 2017 15:47:06 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>hourly</sy:updatePeriod>
  19. <sy:updateFrequency>1</sy:updateFrequency>
  20. <generator>http://wordpress.com/</generator>
  21. <cloud domain='lostinxpages.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  22. <image>
  23. <url>https://s2.wp.com/i/buttonw-com.png</url>
  24. <title>Lost in XPages, Soon to be Found</title>
  25. <link>https://lostinxpages.com</link>
  26. </image>
  27. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://lostinxpages.com/osd.xml" title="Lost in XPages, Soon to be Found" />
  28. <atom:link rel='hub' href='https://lostinxpages.com/?pushpress=hub'/>
  29. <item>
  30. <title>A more direct way of creating an Outlook mail item from the Notes client</title>
  31. <link>https://lostinxpages.com/2017/11/01/a-more-direct-way-of-creating-an-outlook-mail-item-from-the-notes-client/</link>
  32. <comments>https://lostinxpages.com/2017/11/01/a-more-direct-way-of-creating-an-outlook-mail-item-from-the-notes-client/#respond</comments>
  33. <pubDate>Wed, 01 Nov 2017 14:54:21 +0000</pubDate>
  34. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  35. <category><![CDATA[Old Notes]]></category>
  36. <category><![CDATA[Utilities]]></category>
  37. <category><![CDATA[LotusScript]]></category>
  38. <category><![CDATA[MailItem]]></category>
  39. <category><![CDATA[Outlook]]></category>
  40. <category><![CDATA[Tami Fries]]></category>
  41.  
  42. <guid isPermaLink="false">http://lostinxpages.com/?p=570</guid>
  43. <description><![CDATA[The best thing about being in software development is learning something new every day. The most humiliating thing in software development is learning that you did something the hard way when there&#8217;s a far easier way to do it. That happens most days as well! So, I was explaining to my manager, Tami Fries, and [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=570&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  44. <content:encoded><![CDATA[<p>The best thing about being in software development is learning something new every day. The most humiliating thing in software development is learning that you did something the hard way when there&#8217;s a far easier way to do it. That happens most days as well!</p>
  45. <p>So, I was explaining to my manager, Tami Fries, and one of our business users that <a href="https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/">my method for opening an Outlook message</a> for the end users was a little sloppy, in that it would open two browser tabs (or windows, depending on configuration) before opening the Outlook message. I wondered in the back of my mind if it had to be done that way. They agreed that my helpful message on one of the tabs and titling the tab &#8216;Close Me&#8217; would probably not generate any confusion. Nonetheless, I wondered.</p>
  46. <p>I remembered vaguely that when I was creating Excel spreadsheets from Notes and silently emailing them in the background from the FAA to Office Depot, that I had to add an extra line of code to make Excel <strong>not</strong> appear as an active window. So, I looked at the documentation again and found that all I had to do was use the <a href="https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-display-method-outlook">Display method of the MailItem object</a>.</p>
  47. <p>Here&#8217;s the code fragment that generates the Outlook message and <em>displays</em> it for further editing. (Note that I used br without the angled brackets in the HTML, since it was reading the HTML and inserting blank lines into the code snippet, but you&#8217;ll want those when you drop this into your LotusScript.)</p>
  48. <pre class="brush: jscript; title: ; notranslate">...
  49. Dim outlook As Variant
  50. Dim message As Variant
  51. Dim itemType As Integer
  52.  
  53. Set outlook = CreateObject(&quot;Outlook.Application&quot;)
  54.  
  55. If ( outlook Is Nothing ) Then
  56. Call ws.Urlopen(shareViaMailToURL(subject, doc))
  57. Else
  58. body = &quot;Here is a link to &quot; &amp; subject
  59. body = &quot;Your approval has been requested for changes made using &quot; &amp; changeOrderNumber (0) &amp; &quot; in &quot; &amp; thisdb.Title
  60. body = body &amp; &quot;br br&quot;// replace with the angled bracketed HTML for two line breaks
  61. body = body &amp; &quot;Please review these changes and approve, provide comments, or request more time to review within five business days of this notification. Otherwise, the change will be considered approved as per DAI policy.&quot;
  62. body = body &amp; &quot;br br&quot;// replace with the angled bracketed HTML for two line breaks
  63. body = body &amp; &quot;The pending change approval form and links to draft documents can be found here: &quot;
  64. body = body &amp; &quot;br br&quot;// replace with the angled bracketed HTML for two line breaks
  65. body = body &amp; &quot;Notes:///&quot; &amp; thisdb.ReplicaID &amp; &quot;/0/&quot; &amp; doc.UniversalID
  66.  
  67. ' 0 is mail item '
  68. itemType = 0
  69. Set message = outlook.CreateItem(itemType)
  70. message.Subject = subject
  71. message.HTMLBody = body
  72. message.Display
  73. End If
  74. ...</pre>
  75. <p>The shareViaMailToURL is intended to run if the user doesn&#8217;t have Outlook, so that it will use the previously supplied code to open the mailto URL using the code in that <a href="https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/">earlier post</a>.</p>
  76. <p>So incredibly simple in either method.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/570/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=570&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  77. <wfw:commentRss>https://lostinxpages.com/2017/11/01/a-more-direct-way-of-creating-an-outlook-mail-item-from-the-notes-client/feed/</wfw:commentRss>
  78. <slash:comments>0</slash:comments>
  79. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  80. <media:title type="html">habap</media:title>
  81. </media:content>
  82. </item>
  83. <item>
  84. <title>Sending an automated mail using Outlook from a Notes agent</title>
  85. <link>https://lostinxpages.com/2017/09/12/sending-an-automated-mail-using-outlook-from-a-notes-agent/</link>
  86. <comments>https://lostinxpages.com/2017/09/12/sending-an-automated-mail-using-outlook-from-a-notes-agent/#comments</comments>
  87. <pubDate>Tue, 12 Sep 2017 23:14:45 +0000</pubDate>
  88. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  89. <category><![CDATA[Old Notes]]></category>
  90. <category><![CDATA[Utilities]]></category>
  91. <category><![CDATA[LotusScript]]></category>
  92. <category><![CDATA[MailItem]]></category>
  93. <category><![CDATA[OLE]]></category>
  94. <category><![CDATA[Outlook]]></category>
  95. <category><![CDATA[Stack Overflow]]></category>
  96.  
  97. <guid isPermaLink="false">http://lostinxpages.com/?p=563</guid>
  98. <description><![CDATA[One of the greatest hurdles we&#8217;ve had in our transition from being a Notes mail shop to an Outlook mail shop remaining a Notes application shop is automated emails. When someone clicks a button to approve a document in a workflow, I want the system to quietly notify the pertinent parties without bothering the user. [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=563&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  99. <content:encoded><![CDATA[<p>One of the greatest hurdles we&#8217;ve had in our transition from being a Notes mail shop to an Outlook mail shop remaining a Notes application shop is automated emails. When someone clicks a button to approve a document in a workflow, I want the system to quietly notify the pertinent parties without bothering the user.</p>
  100. <p>Before I arrived, none of our applications did that. Every time someone wanted an email to accompany the request for approval, an email was opened in the Notes client using formula language. The code did assign the recipients and add text with a doclink, but the user had to click &#8216;Send&#8217; for the message to go onward. This did allow them to add explanatory text and choose to route the message to a different approver if someone was not available, so it did have advantages. However, not every message ought to sent that way and we can keep the user inside our application by popping up dialogs to customize or select different recipients, or&#8230; whatever flexibility we&#8217;d like to provide.</p>
  101. <p>So, a number of the applications I&#8217;ve designed, or modified from the original, send notices via Notes mail, generated quietly in the background by LotusScript. 2016 rolls around and our organization makes a strategic move away from Notes mail and into Outlook. I spent a year thinking there was no way for me to keep those notifications without dancing around about Notes mail files and replication. The other day, I wondered if I could use OLE to create the Outlook messages and send them without the user needed to intervene. Shockingly, it didn&#8217;t even take me a day to figure out how to do it.</p>
  102. <p>The hardest part was figuring out that passing in 0 for the item type needed to specifically be an <strong>integer</strong>, not just a zero. If figured this out when I created a task using 3. Since it understood that 3 was an integer, I just created itemType as an integer and then 0 really was 0. (Got the clue from <a href="https://stackoverflow.com/questions/19551883/what-are-all-the-properties-that-i-can-assign-to-with-outlook-with-vba">someone&#8217;s commented code on Stack Overflow</a>, of course)</p>
  103. <p>Here&#8217;s the list of Outlook items you can create, with links so you can examine the events, properties and methods:</p>
  104. <div class="responsiveTableWrapper">
  105. <table>
  106. <thead>
  107. <tr>
  108. <th><strong>Name</strong></th>
  109. <th><strong>Value</strong></th>
  110. <th><strong>Description</strong></th>
  111. </tr>
  112. </thead>
  113. <tbody>
  114. <tr>
  115. <td><strong>olAppointmentItem</strong></td>
  116. <td>1</td>
  117. <td>An <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/appointmentitem-object-outlook">AppointmentItem</a></strong> object.</td>
  118. </tr>
  119. <tr>
  120. <td><strong>olContactItem</strong></td>
  121. <td>2</td>
  122. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/contactitem-object-outlook">ContactItem</a></strong> object.</td>
  123. </tr>
  124. <tr>
  125. <td><strong>olDistributionListItem</strong></td>
  126. <td>7</td>
  127. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/distlistitem-object-outlook">DistListItem</a></strong> object.</td>
  128. </tr>
  129. <tr>
  130. <td><strong>olJournalItem</strong></td>
  131. <td>4</td>
  132. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/journalitem-object-outlook">JournalItem</a></strong> object.</td>
  133. </tr>
  134. <tr>
  135. <td><strong>olMailItem</strong></td>
  136. <td>0</td>
  137. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/mailitem-object-outlook">MailItem</a></strong> object.</td>
  138. </tr>
  139. <tr>
  140. <td><strong>olNoteItem</strong></td>
  141. <td>5</td>
  142. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/noteitem-object-outlook">NoteItem</a></strong> object.</td>
  143. </tr>
  144. <tr>
  145. <td><strong>olPostItem</strong></td>
  146. <td>6</td>
  147. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/postitem-object-outlook">PostItem</a></strong> object.</td>
  148. </tr>
  149. <tr>
  150. <td><strong>olTaskItem</strong></td>
  151. <td>3</td>
  152. <td>A <strong><a href="https://msdn.microsoft.com/VBA/Outlook-VBA/articles/taskitem-object-outlook">TaskItem</a></strong> object.</td>
  153. </tr>
  154. </tbody>
  155. </table>
  156. </div>
  157. <pre class="brush: jscript; title: ; notranslate">%REM
  158. Agent Send Outlook Mail
  159. Created Sep 12, 2017 by David Navarre
  160. Description: This Agent creates and sends an Outlook mail message in the background
  161. %END REM
  162. Option Public
  163. Option Declare
  164.  
  165. Sub Initialize
  166. Dim outlook As Variant
  167. Dim message As Variant
  168. Dim itemType As Integer
  169. Dim reason As String
  170.  
  171. On Error GoTo errorhandler
  172.  
  173. Set outlook = CreateObject(&quot;Outlook.Application&quot;)
  174. ' 0 is mail item '
  175. itemType = 0
  176. Set message = outlook.CreateItem(itemType)
  177. message.To = &quot;[email protected]&quot;
  178. message.Subject = &quot;This is my test&quot;
  179. message.HTMLBody = &quot;&lt;b&gt;Body bolded&lt;/b&gt; and some not&quot;
  180. message.Send
  181.  
  182. exiting:
  183. Exit Sub
  184. errorhandler:' report all errors in a messagebox '
  185. reason = &quot;Error #&quot; &amp; CStr (Err) &amp; &quot; (&quot; &amp; Error &amp; &quot;) on line &quot; &amp; CStr (Erl)
  186. MessageBox reason, 16, &quot;Error&quot;
  187. Resume exiting
  188. End Sub</pre>
  189. <p>The most amusing thing to me is that I got my initial clue <a href="http://www.vbforums.com/showthread.php?437617-Using-MS-Outlook-to-Send-email-programmatically">from a post made way back in 2006</a>. Sometimes, I feel like I&#8217;m starting all over again. I guess that&#8217;s a good thing, because learning new stuff was always fun (this was too!) and not as intimidating as it sometimes seems when I think about having to learn something new. It&#8217;s been nice to be in the upper branches of the knowledge tree, but the truth is that what always separated me from other folks was not what I already knew, but how fast I could learn something new.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/563/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=563&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  190. <wfw:commentRss>https://lostinxpages.com/2017/09/12/sending-an-automated-mail-using-outlook-from-a-notes-agent/feed/</wfw:commentRss>
  191. <slash:comments>4</slash:comments>
  192. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  193. <media:title type="html">habap</media:title>
  194. </media:content>
  195. </item>
  196. <item>
  197. <title>Breweries and tap rooms for #MWLUG</title>
  198. <link>https://lostinxpages.com/2017/07/29/breweries-and-tap-rooms-for-mwlug/</link>
  199. <comments>https://lostinxpages.com/2017/07/29/breweries-and-tap-rooms-for-mwlug/#respond</comments>
  200. <pubDate>Sat, 29 Jul 2017 16:49:42 +0000</pubDate>
  201. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  202. <category><![CDATA[Conferences]]></category>
  203. <category><![CDATA[Beer]]></category>
  204. <category><![CDATA[MWLUG]]></category>
  205.  
  206. <guid isPermaLink="false">http://lostinxpages.com/?p=561</guid>
  207. <description><![CDATA[OK, so we&#8217;ve discussed restaurants nearby, but MWLUG includes so many beer lovers that I know some of you will be eager to venture further afield for interesting beer. None of these are in walking distance. What we already know In Friday&#8217;s post, I mentioned the Cap City Brewing Company in Shirlington as a viable [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=561&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  208. <content:encoded><![CDATA[<p>OK, so <a href="https://lostinxpages.com/2017/07/27/so-where-can-i-go-for-dinner-near-mwlug/">we&#8217;ve discussed restaurants nearby</a>, but MWLUG includes so many beer lovers that I know some of you will be eager to venture further afield for interesting beer. None of these are in walking distance.</p>
  209. <h4>What we already know</h4>
  210. <p>In Friday&#8217;s post, I mentioned the <a href="https://www.yelp.com/biz/capitol-city-brewing-company-arlington">Cap City Brewing Company</a> in Shirlington as a viable dinner option in the midst of a good restaurant scene. Shirlington is either a short Uber/Lyft ride from the hotel or just across the footbridge out the back of Wednesday night&#8217;s brewery tour at <a href="https://www.yelp.com/biz/new-district-brewing-arlington?osq=brewpub">New District Brewing</a>.</p>
  211. <h4>Where everyone knows your name</h4>
  212. <p>OK, at <a href="https://www.yelp.com/biz/fat-city-kitchen-alexandria">Fat City Kitchen</a>, they won&#8217;t already know YOUR name, but they know mine. There are a dozen taps, mostly microbrews (the others are Guiness and Yuengling, IIRC) and probably 80 other beers by the bottle or can. Matt can mix anything you can think of (I go for the &#8216;City 75&#8217;, which is similar to the French 75, while Melissa digs the Grapefruit Collins), Farrah and the rest of the staff keep you smiling with full glasses. The food is excellent and we love about half a mile from it.</p>
  213. <h4>Where I can get some beers to bring to the hotel</h4>
  214. <p>Our favorite wine shop, <a href="http://unwinedva.com/products/beer.htm">Unwined</a>, is just across the highway off King Street. Besides the excellent wine selection, they have a large selection of beers, including a growler filling station. Yes, bring your own growler in and fill it up, or buy a growler there. According to the link , they&#8217;ve got a saison and 3 IPAs on tap right now. Another place where mentioning that you know Dave and Melissa will make them smile!</p>
  215. <h4>Where else could we have gone for a brewery tour</h4>
  216. <p>Another place that&#8217;s near my house (stumbling distance?) is <a href="https://www.yelp.com/biz/port-city-brewing-company-alexandria?osq=brewpub">Port City Brewing Company</a>. Way back in the day, Alexandria was actually nicknamed &#8220;the Port City&#8221; because so much trade came in over it&#8217;s docks. Then the 19th century started&#8230;. The brewery was named <a href="https://www.washingtonpost.com/news/going-out-guide/wp/2015/09/28/its-official-port-city-is-the-best-small-brewery-in-america/?utm_term=.bc530078f6fd">Small Brewery of the Year in 2015</a>, so likely worthy of a pilgrimage. I love their Porter, though it&#8217;s not exactly an August beer. The tap list is less heavily weighted towards IPAs than it was a few years ago, but <a href="http://www.portcitybrewing.com/the-taplist/">they&#8217;ve got 11 beers</a> on it.</p>
  217. <h4>Arlington, please!</h4>
  218. <p>Some of the fellows that I&#8217;ve played softball and baseball with are into beer as much as I&#8217;m into wine. They had a happy hour at <a href="https://www.yelp.com/biz/crafthouse-arlington?osq=brewpub">Crafthouse</a> over in Arlington and the draft beer selection was very nice.</p>
  219. <h4>Maybe not yet</h4>
  220. <p>Earlier this year, <a href="https://www.yelp.com/biz/portner-brewhouse-alexandria?osq=brewpub">Portner Brewhouse</a> opened about a mile from our house. We went during the &#8216;soft opening&#8217; and loved the food. The brewery inside seems to have been a gimmick or something that they thought &#8220;couldn&#8217;t be that hard&#8221;. Sitting next to a fellow who sells brewing equipment, he let us know that what he could see wasn&#8217;t the top grade equipment. No, that&#8217;s too polite. He said that he thought they did it on the cheap. He heartily recommended New District, so we&#8217;re on the right path for Wednesday night.</p>
  221. <h4>Final thoughts</h4>
  222. <p>Of course, there are other options further afield, but I generally haven&#8217;t been there, so wouldn&#8217;t have useful input. The best beer spot in the DC area closed recently. The Brickskellar in Dupont Circle had hundreds of beers on their menu and they even had live music on the weekends. Feel free to questions about certain parts of town, as I&#8217;ve been here for 27 years and used to go everywhere in Arlington, Alexandria and DC.</p>
  223. <p>I&#8217;ll be out of town before MWLUG, returning on Monday night. If you&#8217;re interested in some assistance with getting beer and wine from Unwined or beer from Port City (they do have Sixtels, which are only 41 pints), I may be able to help. Otherwise, or for evening adventures, getting to any of these should be easy via Uber, Lyft, or some other conveyance.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/561/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=561&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  224. <wfw:commentRss>https://lostinxpages.com/2017/07/29/breweries-and-tap-rooms-for-mwlug/feed/</wfw:commentRss>
  225. <slash:comments>0</slash:comments>
  226. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  227. <media:title type="html">habap</media:title>
  228. </media:content>
  229. </item>
  230. <item>
  231. <title>So where can I go for dinner near #MWLUG?</title>
  232. <link>https://lostinxpages.com/2017/07/27/so-where-can-i-go-for-dinner-near-mwlug/</link>
  233. <comments>https://lostinxpages.com/2017/07/27/so-where-can-i-go-for-dinner-near-mwlug/#comments</comments>
  234. <pubDate>Thu, 27 Jul 2017 22:02:38 +0000</pubDate>
  235. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  236. <category><![CDATA[Conferences]]></category>
  237. <category><![CDATA[MWLUG]]></category>
  238.  
  239. <guid isPermaLink="false">http://lostinxpages.com/?p=559</guid>
  240. <description><![CDATA[For MWLUG 2017, we&#8217;re in my lovely city of Alexandria, Virginia, just outside Washington, DC. Some folks will come early, some will stay late, some will choose to dine out while they&#8217;re here. So, I wanted to offer some mild advice to make your search for a good meal easier. Man, I want it to [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=559&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  241. <content:encoded><![CDATA[<p>For MWLUG 2017, we&#8217;re in my lovely city of Alexandria, Virginia, just outside Washington, DC. Some folks will come early, some will stay late, some will choose to dine out while they&#8217;re here. So, I wanted to offer some mild advice to make your search for a good meal easier.</p>
  242. <h4>Man, I want it to be close</h4>
  243. <p>Well, the easiest is right in the hotel. I&#8217;ve heard good things about <a href="https://www.yelp.com/biz/finn-and-porter-restaurant-alexandria">Finn &amp; Porter</a>, but I&#8217;ve not eaten there. I&#8217;m sure everyone will stop in for a drink, so while you consider your options elsewhere, check the menu. Remember to tip your bartenders and waitresses well! The next closest is one I&#8217;ve been to very often. Well, a few times a year. <a href="https://www.yelp.com/biz/clydes-at-mark-center-alexandria-6">Clyde&#8217;s</a> is on the way home from my mother-in-law&#8217;s house, so we have stopped for a drink on the way home occasionally. The food is outstanding. If you like oysters, they always have a good list. There are good wines available and the bartenders mix up some fine cocktails. You can walk to and from Clyde&#8217;s (0.4 miles).</p>
  244. <p><strong>I really wish I hadn&#8217;t left home</strong></p>
  245. <p>Yes, there is a <a href="https://www.yelp.com/biz/tgi-fridays-alexandria-12?osq=Restaurants">TGI Friday&#8217;s</a> and I have heard they do wear the appropriate amount of flair. It&#8217;s a mile, so you could walk.</p>
  246. <h4>Beer, beer and more beer</h4>
  247. <p>I really like <a href="https://www.yelp.com/biz/capitol-city-brewing-company-arlington?osq=Restaurants">Cap City Brewing</a> in Shirlington. Get yourself some pretzels and enjoy a few cold ones. Cap City opened early on in the micro-brew era, so it may not be &#8216;different&#8217; enough if that&#8217;s important to you. On the other hand, longevity does indicate a certain level of quality. Take an Uber over to Shirlington, or wander over after our time at <a href="http://www.newdistrictbrewing.com/">New District Brewing</a>. (Half a mile from New District, 10 minute drive from the hotel to Shirlington).</p>
  248. <h4><strong>I want to open a cheese shop</strong></h4>
  249. <p>Nearby in Shirlington, <a href="https://www.yelp.com/biz/cheesetique-arlington-2?osq=Restaurants">Cheesetique</a> started as a cheese shop that had some wines and snacks. Then, they morphed into a cheese and wine shop where you could have a meal. Now, it is really a good restaurant with amazing cheese and pretty good wine.</p>
  250. <h4>Everything seems to be headed to Shirlington, but I want something different</h4>
  251. <p>If you&#8217;re seeking something other than beer and wine as the draw, Shirlington has many restaurants these days. <a href="https://www.yelp.com/biz/busboys-and-poets-arlington-2">Busboys &amp; Poets</a> will always fill you up with delicious comfort food and also has some literature or might even have a poetry reading. <a href="https://www.yelp.com/biz/carlyle-arlington?osq=Restaurants">Carlyle</a> is an old standby &#8211; a little pricey for me. We&#8217;ve loved eating at every location of <a href="https://www.cafepizzaiolo.com/">Cafe Pizzaiolo</a>, including the one that they had right in our neighborhood for a few years. <a href="https://www.yelp.com/biz/guapos-restaurant-arlington?osq=Restaurants">Guapo&#8217;s</a> is great for Mexican food. There are a bunch of other restaurants, so it&#8217;s a good area to choose &#8212; keeping in mind it is just a half mile from Wednesday night&#8217;s brewery.</p>
  252. <h4>It has to be French, bien sur!</h4>
  253. <p>Two choices if time, distance and money aren&#8217;t real priorities: <a href="https://www.yelp.com/biz/le-diplomate-washington?osq=french">Le Diplomate</a> in DC or <a href="https://www.yelp.com/biz/la-c%C3%B4te-d-or-caf%C3%A9-arlington-3?osq=french">La Cote d&#8217;Or</a> in Falls Church. Great for me, because the wine lists are very good (longer and more expensive downtown, shorter and more reasonable in Fall Church) and the food is unbeatable.</p>
  254. <h4>Other ideas</h4>
  255. <p>You could head to Crystal City or Pentagon Row, which are near the Crystal City and Pentagon Row metro stops. Another good choice is the Clarendon areas in Arlington, which is very walkable once you&#8217;re there. Old Town Alexandria has dozens of restaurants and true nightlife.</p>
  256. <p>Hope these ideas help!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/559/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=559&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  257. <wfw:commentRss>https://lostinxpages.com/2017/07/27/so-where-can-i-go-for-dinner-near-mwlug/feed/</wfw:commentRss>
  258. <slash:comments>1</slash:comments>
  259. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  260. <media:title type="html">habap</media:title>
  261. </media:content>
  262. </item>
  263. <item>
  264. <title>Creating a meeting notice in Outlook from the Notes client</title>
  265. <link>https://lostinxpages.com/2017/06/23/creating-a-meeting-notice-in-outlook-from-the-notes-client/</link>
  266. <comments>https://lostinxpages.com/2017/06/23/creating-a-meeting-notice-in-outlook-from-the-notes-client/#respond</comments>
  267. <pubDate>Fri, 23 Jun 2017 17:23:51 +0000</pubDate>
  268. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  269. <category><![CDATA[Old Notes]]></category>
  270. <category><![CDATA[Utilities]]></category>
  271. <category><![CDATA[calendar invite]]></category>
  272. <category><![CDATA[calendaring]]></category>
  273. <category><![CDATA[iCal]]></category>
  274. <category><![CDATA[LotusScript]]></category>
  275. <category><![CDATA[meeting notice]]></category>
  276. <category><![CDATA[Outlook]]></category>
  277.  
  278. <guid isPermaLink="false">http://lostinxpages.com/?p=544</guid>
  279. <description><![CDATA[Another task in our migration to Outlook as the mail client is creating Outlook calendar entries and meeting notices directly from the Notes client. Fortunately, it&#8217;s been two years since I wrote about how to do this in the UI in Notes, so I don&#8217;t feel like that was wasted time. I was exciting to [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=544&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  280. <content:encoded><![CDATA[<p>Another task in our migration to Outlook as the mail client is creating Outlook calendar entries and meeting notices directly from the Notes client. Fortunately, it&#8217;s been two years since I wrote about <a href="https://lostinxpages.com/2015/01/15/creating-a-meeting-in-the-ui-in-ibmnotes/">how to do this in the UI in Notes</a>, so I don&#8217;t feel like that was wasted time. I was exciting to solve the problem and&#8230; oddly enough, solving this one was fun as well. It helped that creating an iCal entry is far simpler than the gyrations we had to go through to create one in Notes. As noted previously, thereĀ  aren&#8217;t a whole lot of required values to generate in order to have an ICS file that you can open in the UI as a meeting notice/calendar invite.</p>
  281. <pre class="brush: jscript; title: ; notranslate">BEGIN:VCALENDAR
  282. BEGIN:VEVENT
  283. DTSTART:20170622T211500
  284. DTEND:20170622T221500
  285. ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;Required Person/Company&quot;;RSVP=TRUE:mailto:[email protected]
  286. ATTENDEE;ROLE=OPT-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:[email protected]
  287. SUMMARY:2017 Q2 QPR: Agribusiness Competitiveness Enhancement via file
  288. UID:AC1804D765C782CD8525814500073F3720170620T104326
  289. END:VEVENT
  290. END:VCALENDAR</pre>
  291. <p><a href="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg"><img data-attachment-id="545" data-permalink="https://lostinxpages.com/2017/06/23/creating-a-meeting-notice-in-outlook-from-the-notes-client/sendupdate/" data-orig-file="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg?w=690" data-orig-size="292,416" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;David Navarre&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1498053614&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SendUpdate" data-image-description="" data-medium-file="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg?w=690?w=211" data-large-file="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg?w=690?w=292" class="alignright wp-image-545 size-full" src="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg?w=690" alt="" srcset="https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg 292w, https://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg?w=105 105w" sizes="(max-width: 292px) 100vw, 292px"   /></a>Now, keep in mind that this iCal file is a mere fragment. If you sent that file to someone, they get the same behaviour you get &#8212; it thinks they&#8217;re the meeting organizer and doesn&#8217;t save it to their calendar unless they send the &#8216;update&#8217;. The key parameter we leave off is that we don&#8217;t set METHOD, since setting that to PUBLISH or REQUEST proved problematic in the Outlook client. If we leave it off, Outlook will allow us to treat it like a brand new calendar entry we&#8217;ve created, except that the send button will say &#8216;Send Update&#8217;.</p>
  292. <p>So, let&#8217;s review those values in our fragment&#8230;</p>
  293. <h4>Objects</h4>
  294. <p>First, the calendar and event objects are encapsulated. Nothing fancy there.</p>
  295. <pre class="brush: jscript; title: ; notranslate">BEGIN:VCALENDAR
  296. BEGIN:VEVENT
  297. END:VEVENT
  298. END:VCALENDAR</pre>
  299. <h4>Meeting times</h4>
  300. <p>Then we have our start and end times, formatted with date first (YYYYMMDD) then a separator (T) and then the time (HHMMSS). You can include time zone information, but we&#8217;re creating this in Outlook and allowing the UI to finish everything for us. So, if the user wants to change the time zone, they can do that in Outlook.</p>
  301. <pre class="brush: jscript; title: ; notranslate">DTSTART:20170622T211500
  302. DTEND:20170622T221500</pre>
  303. <h4>Attendees</h4>
  304. <p>The one required value for our needs in the attendees is the mailto value. Without that, it won&#8217;t know who to send the invite to and it simply ignores any other item in that list.</p>
  305. <pre class="brush: jscript; title: ; notranslate">ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=&quot;Meeting Chair/Company&quot;;RSVP=TRUE:mailto:[email protected]
  306. ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;Required Person/Company&quot;;RSVP=TRUE:mailto:[email protected]
  307. ATTENDEE;ROLE=OPT-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:[email protected]</pre>
  308. <p>ROLE is not required and can be CHAIR, REQ-PARTICIPANT (required participant), OPT-PARTICIPANT (optional participant) or even NON-PARTICIPANT (for FYI only).</p>
  309. <p>PARTSTAT is not required. There are several values for an attendee in a VEVENT for their participant status, but we&#8217;re only concerned with two. Either &#8220;NEEDS-ACTION&#8221; for attendees that we don&#8217;t know when we create the meeting notice whether they&#8217;ve agreed to attend or &#8220;ACCEPTED&#8221; which we&#8217;d typically only use for the person creating the meeting notice.</p>
  310. <p>CN is, of course, familiar to us as Notes developers, but it applies here to whatever will be displayed as the attendee name. In my experience, Outlook can parse the abbreviated name and display just the attendee&#8217;s common name. That might be our Outlook configuration, but I would assume it&#8217;s common.</p>
  311. <p>RSVP would be either true or false, indicating whether you want a response from the attendee. In my case, we always want it from the attendees, other than the current user.</p>
  312. <h4>Title and description</h4>
  313. <p>I got fooled by this one. In my sample ICS files, I thought there was just an odd carriage return, but the DESCRIPTION value is basically the body or details of the event, while the SUMMARY is what appears in the subject line for the meeting.</p>
  314. <pre class="brush: jscript; title: ; notranslate">SUMMARY:2017 Q2 QPR: Agribusiness Competitiveness Enhancement via file</pre>
  315. <h4>Meeting ID</h4>
  316. <p>I&#8217;m guessing that Outlook computes the unique meeting ID itself, but in my code, I generate from the Notes document&#8217;s unique ID and then, in order to ensure that subsequent meetings concerning the same document get different IDs, I&#8217;m appending a creation time-stamp.</p>
  317. <pre class="brush: jscript; title: ; notranslate">UID:AC1804D765C782CD8525814500073F3720170620T104326</pre>
  318. <p>So, the agent I wrote that generates the new meeting notice is pretty straight-forward. The <a href="https://lostinxpages.com/2017/06/21/getting-email-addresses-from-the-notes-address-book/">getEmailAddress function</a> was described and detailed in a prior blog post and my Utilities script library only provides the logging functions here. Like <a href="https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/">my mailto agent</a>, this one relies on the creation of a file in the Notes data directory and opening it using a browser.</p>
  319. <h4>The agent</h4>
  320. <p>First, you can look over the main part of the agent&#8230;</p>
  321. <pre class="brush: jscript; title: ; notranslate">%REM
  322. Agent (Send Calendar Invites)
  323. Created Jun 20, 2017 by David Navarre/DAI
  324. Description: This Agent creates a calendar invite, listing participants and optional participants
  325. %END REM
  326. Option Public
  327. Option Declare
  328. Use &quot;Utilities&quot;
  329.  
  330. Dim session As NotesSession
  331. Sub Initialize
  332. Dim ws As New NotesUIWorkspace
  333. ' Dim thisdb As NotesDatabase declared in Utilities script library '
  334. Dim uidoc As NotesUIDocument
  335. Dim qprdoc As NotesDocument
  336. Dim history As NotesRichTextItem
  337. Dim chairName As NotesName
  338. Dim recipientName As NotesName
  339. Dim projectName As Variant
  340. Dim fiscalYearAndQuarter As Variant
  341. Dim participants As Variant
  342. Dim participantsOptional As Variant
  343. Dim subject As String
  344. Dim answer As Variant
  345. Dim reason As String
  346. Dim unid As String
  347. On Error GoTo errorhandler
  348. set session = New NotesSession
  349. Call StartAgentLogging ( session )
  350.  
  351. If ( openAddressBooks () ) Then
  352. agentLog.Logaction(&quot;Address books opened&quot;)
  353. End If
  354.  
  355. Set thisdb = session.CurrentDatabase
  356. Set uidoc = ws.CurrentDocument
  357.  
  358. reason = &quot;This will create a meeting invite for you to send to participants.&quot;
  359. If uidoc.Editmode Then
  360. reason = reason + Chr$(10) + &quot;The QPR will switch to read-only mode.&quot;
  361. reason = reason + Chr$(10) + &quot;If you close and re-open it, you can edit it again.&quot;
  362. End If
  363. reason = reason + Chr$(10) + &quot;Continue?&quot;
  364. answer = ws.Prompt ( PROMPT_YESNO, &quot;Continue?&quot;, reason )
  365. If answer = 0 Then
  366. Exit Sub
  367. End If
  368. If uidoc.Editmode Then
  369. Call uidoc.Save()
  370. uidoc.Editmode = False
  371. Set qprDoc = uidoc.Document
  372. unid = qprDoc.Universalid
  373. Call uidoc.Close(True)
  374. Set qprDoc = thisdb.Getdocumentbyunid(unid)
  375. Set uidoc = ws.Editdocument(False, qprDoc, True)
  376. Else
  377. Set qprDoc = uidoc.Document
  378. End If
  379. Dim fileName As String
  380. Dim dataDirectoryPath As String
  381. Dim url As String
  382. Dim fileNumber As Integer
  383. fileNumber = 1
  384. dataDirectoryPath = session.Getenvironmentstring(&quot;Directory&quot;, True)
  385. fileName = dataDirectoryPath &amp; &quot;\QPRInvite.ics&quot;
  386. Open fileName For Output As fileNumber
  387. Print # fileNumber, {BEGIN:VCALENDAR}
  388. Print # fileNumber, {BEGIN:VEVENT}
  389. Print # fileNumber, {DTSTART:} &amp; getMeetingTime ( &quot;Start&quot;, qprDoc ) '20170620T211500
  390. Print # fileNumber, {DTEND:}  &amp; getMeetingTime ( &quot;End&quot;, qprDoc ) '20170620T221500
  391.  
  392. ' Chair '
  393. Set chairName = New NotesName ( session.Effectiveusername )
  394. ' when you send the invite from Outlook, it makes you the chair '
  395. ' this line is here to show how you would format an attendee line for the chair '
  396. ' Print # fileNumber, {ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=&quot;} &amp; chairName.Abbreviated &amp; {&quot;;RSVP=TRUE:mailto:} &amp; getEmailAddress ( chairName.Abbreviated ) '
  397. ' Required participants '
  398. participants = qprDoc.Getitemvalue ( &quot;Participants&quot; )
  399. ForAll entry In participants
  400. Set recipientName = New NotesName ( entry )
  401. If Not ( chairName.Abbreviated = recipientName.Abbreviated ) Then
  402. Print # fileNumber, {ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;} &amp; recipientName.Abbreviated &amp; {&quot;;RSVP=TRUE:mailto:} &amp; getEmailAddress ( recipientName.Abbreviated )
  403. End If
  404. End ForAll
  405. ' Optional participants '
  406. participantsOptional = qprDoc.Getitemvalue ( &quot;ParticipantsOptional&quot; )
  407. ForAll entry In participantsOptional
  408. Set recipientName = New NotesName ( entry )
  409. Print # fileNumber, {ATTENDEE;ROLE=OPT-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;} &amp; recipientName.Abbreviated &amp; {&quot;;RSVP=TRUE:mailto:} &amp; getEmailAddress ( recipientName.Abbreviated )
  410. End ForAll
  411.  
  412. projectName = qprDoc.Getitemvalue(&quot;ProjectName&quot;)
  413. fiscalYearAndQuarter = qprDoc.Getitemvalue(&quot;FiscalYearAndQuarter&quot;)
  414. subject = fiscalYearAndQuarter(0) &amp; &quot; QPR: &quot; &amp; projectName (0)
  415. Print # fileNumber, {DESCRIPTION:} &amp; subject ' this is the body of the message
  416. Print # fileNumber, {SUMMARY:} &amp; subject ' this is the meeting name
  417.  
  418. ' assign a unique ID to meeting using the unid of the document with the current date-time appended '
  419. ' in case user creates multiple meetings for the same QPR '
  420. Print # fileNumber, {UID:} &amp; qprdoc.Universalid &amp; getMeetingTime ( &quot;Now&quot;, qprDoc )
  421.  
  422. Print # fileNumber, {END:VEVENT}
  423. Print # fileNumber, {END:VCALENDAR}
  424. Close # fileNumber
  425. url = &quot;file:///&quot; &amp; fileName
  426. Call ws.Urlopen(url)
  427. Set history = qprDoc.Getfirstitem(&quot;History&quot;)
  428. Call history.Appendtext(Now &amp; &quot; - Meeting notice created by &quot; &amp; session.Commonusername)
  429. Call history.Addnewline(1, True)
  430. Call qprDoc.Replaceitemvalue(&quot;NoticeFlag&quot;, 1)
  431. Call qprDoc.Save(True, False)
  432.  
  433. exiting:
  434. Exit Sub
  435. errorhandler:' report all errors in a messagebox '
  436. reason = &quot;Error #&quot; &amp; CStr (Err) &amp; &quot; (&quot; &amp; Error &amp; &quot;) on line &quot; &amp; CStr (Erl)
  437. MessageBox reason, 16, &quot;Error&quot;
  438. Call agentLog.LogAction ( reason )
  439. Resume exiting ' transfers control to the exiting label
  440. End Sub</pre>
  441. <h4>getMeetingTime</h4>
  442. <p>The getMeetingTime function just returns the requested date-time in the format YYYYMMDDTHHMMSS, so it can be included in the creation of the ICS file.</p>
  443. <pre class="brush: jscript; title: ; notranslate">%REM
  444. Function getMeetingTime
  445. Description: This Function returns a string in the format YYYYMMDDTHHMMSS
  446. If it is the start time, the values from the source document are used -- 20170622T211500
  447. If it is the end time, it is adjusted one hour later -- 20170622T221500
  448. If it is the &quot;Now&quot; time, it returns a string for the current date and time -- 20170620T094326
  449. %END REM
  450. Function getMeetingTime ( startOrEnd As String, qprDoc As NotesDocument ) As String
  451. Dim thisNotesDateTime As NotesDateTime
  452. Dim qprDate As Variant
  453. Dim qprTime As Variant
  454. Dim timeString, dateString As Variant
  455. Dim reason As String
  456.  
  457. On Error Goto errorhandler
  458.  
  459. Set qprDate = qprDoc.Getfirstitem(&quot;QPRDate&quot;)
  460. Set qprTime = qprDoc.Getfirstitem(&quot;QPRTime&quot;)
  461. dateString = qprDate.Text
  462. timeString = qprTime.Text
  463. Set thisNotesDateTime = New NotesDateTime ( dateString &amp; &quot; &quot; &amp; timeString )
  464. Select Case startOrEnd
  465. Case &quot;End&quot;
  466. Call thisNotesDateTime.AdjustHour (1)
  467. Case &quot;Now&quot;
  468. Set thisNotesDateTime = New NotesDateTime ( Now )
  469. Case else
  470. ' keep thisNotesDateTime as set on the source document '
  471. End Select
  472. dateString = thisNotesDateTime.DateOnly
  473. timeString = thisNotesDateTime.TimeOnly
  474. getMeetingTime = CStr ( Year ( dateString ) )
  475. getMeetingTime = getMeetingTime &amp; Right$ ( &quot;0&quot; &amp; CStr ( Month ( dateString ) ), 2 )
  476. getMeetingTime = getMeetingTime &amp; Right$ ( &quot;0&quot; &amp; CStr ( Day ( dateString ) ), 2 )
  477. getMeetingTime = getMeetingTime &amp; &quot;T&quot;
  478. getMeetingTime = getMeetingTime &amp; Right$ ( &quot;0&quot; &amp; CStr ( Hour ( timeString ) ), 2 )
  479. getMeetingTime = getMeetingTime &amp; Right$ ( &quot;0&quot; &amp; CStr ( Minute ( timeString ) ), 2 )
  480. getMeetingTime = getMeetingTime &amp; Right$ ( &quot;0&quot; &amp; CStr ( Second ( timeString ) ), 2 )
  481.  
  482. exiting:
  483. Call agentLog.LogAction ( &quot;-------&quot; )
  484. Call agentLog.LogAction ( &quot;-------&quot; )
  485. Exit Function
  486. errorhandler:' report all errors in a messagebox '
  487. reason = &quot;Function getMeetingTime: &quot;
  488. reason = reason &amp; &quot;Error #&quot; &amp; Cstr (Err) &amp; &quot; (&quot; &amp; Error &amp; &quot;) on line &quot; &amp; Cstr (Erl)
  489. Messagebox reason, 16, &quot;Error&quot;
  490. Call agentLog.LogAction ( reason )
  491. Resume exiting
  492. End Function</pre>
  493. <p>While this did take me a few days to sort out, I&#8217;m pretty happy with the result. Our configuration has users sharing one &#8220;migration&#8221; mail file, so that users who are already on Outlook still retain a mail file and can send email. Unfortunately, that means any email from them that we create in the UI is going to have values pointing back to the &#8220;migration&#8221; mail file. I spent my first few days on this trying to spoof the mail.box by changing Principal, ReplyTo, $InetAddress and Chair when sending via Notes calendaring. While changing Chair did make it appear to come from the current user, it always displayed the email address from the &#8220;migration&#8221; mail file. It might have been getting caught in our spam filter on the way to Outlook, as my test user on Notes was still receiving the notices. Nonetheless, by switching to using Outlook as the UI, it not only took away that problem, but was far simpler and future-proofed my application. As I look at these tools I&#8217;ve created in LotusScript to generate mail messages and calendar entries, I know that it&#8217;s but a short step to doing them in server-side Javascript or maybe in Java.</p>
  494. <p>There is hope for the Notes gurus of old. We just have to keep learning!</p>
  495. <p><a href="https://tools.ietf.org/html/rfc2446">iCal RFC (documentation?)</a></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/544/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=544&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  496. <wfw:commentRss>https://lostinxpages.com/2017/06/23/creating-a-meeting-notice-in-outlook-from-the-notes-client/feed/</wfw:commentRss>
  497. <slash:comments>0</slash:comments>
  498. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  499. <media:title type="html">habap</media:title>
  500. </media:content>
  501.  
  502. <media:content url="http://lostinxpages.files.wordpress.com/2017/06/sendupdate.jpg" medium="image" />
  503. </item>
  504. <item>
  505. <title>Getting email addresses from the Notes address book</title>
  506. <link>https://lostinxpages.com/2017/06/21/getting-email-addresses-from-the-notes-address-book/</link>
  507. <comments>https://lostinxpages.com/2017/06/21/getting-email-addresses-from-the-notes-address-book/#comments</comments>
  508. <pubDate>Wed, 21 Jun 2017 16:50:40 +0000</pubDate>
  509. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  510. <category><![CDATA[Old Notes]]></category>
  511. <category><![CDATA[Utilities]]></category>
  512. <category><![CDATA[@DBLookup]]></category>
  513. <category><![CDATA[address book]]></category>
  514. <category><![CDATA[Ben Langhinrichs]]></category>
  515. <category><![CDATA[getEmailAddress]]></category>
  516. <category><![CDATA[internet address]]></category>
  517. <category><![CDATA[LotusScript]]></category>
  518. <category><![CDATA[names.nsf]]></category>
  519.  
  520. <guid isPermaLink="false">http://lostinxpages.com/?p=537</guid>
  521. <description><![CDATA[As we work to get our Notes applications functioning smoothly with our Outlook mail, I&#8217;m finding ways to keep the close binding between Notes applications and the user&#8217;s mail. It&#8217;s so much easier to click a button to generate an email associated to a particular Notes document than to copy-paste a document link. We&#8217;ve got [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=537&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  522. <content:encoded><![CDATA[<p>As we work to get our Notes applications functioning smoothly with our Outlook mail, I&#8217;m finding ways to keep the close binding between Notes applications and the user&#8217;s mail. It&#8217;s so much easier to click a button to generate an email associated to a particular Notes document than to copy-paste a document link.</p>
  523. <p>We&#8217;ve got a Notes form for the Quarterly Project Report. Each quarter, various key members on the project are supposed to have a call to review the project. The form itself is ponderous, having something like 700 fields, but (using hide-whens) can be distilled down to a manageable number for the meeting&#8217;s agenda. The Notes names of the expected participants are computed from other documents within the database, though the fields are editable. In switching from <a href="https://lostinxpages.com/2015/01/15/creating-a-meeting-in-the-ui-in-ibmnotes/">using Notes mail to generate the meeting notice</a> to Outlook, I ended up switching to using <a href="http://www.kanzaki.com/docs/ical/">iCal</a>.</p>
  524. <p>It turns out that <strong>iCal is a far simpler way</strong> to initiate the meeting notice in the UI. All I need is something like this in an ICS file to have it open in my Outlook client as a meeting notice for me to send (as an update, but more on that in another post)</p>
  525. <pre class="brush: jscript; title: ; notranslate">BEGIN:VCALENDAR
  526. BEGIN:VEVENT
  527. DTSTART:20170622T211500
  528. DTEND:20170622T221500
  529. ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;David Navarre/Company&quot;;RSVP=TRUE:mailto:[email protected]
  530. ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=&quot;Another Person/Company&quot;;RSVP=TRUE:mailto:[email protected]
  531. ATTENDEE;ROLE=OPT-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:[email protected]
  532. DESCRIPTION:
  533. SUMMARY:2017 Q2 QPR: Agribusiness Competitiveness Enhancement via file
  534. UID:AC1804D765C782CD8525814500073F37
  535. END:VEVENT
  536. END:VCALENDAR</pre>
  537. <p>One of the hurdles is that we need to have email addresses as well as names for all of the attendees. If you leave the mailto blank or put the Notes name there, it ignores it. Since our address book is still available in Notes and contains everyone&#8217;s email address, I thought I&#8217;d just google how to do it. Sadly, it wasn&#8217;t out there, so I took a few minutes and modified some script in the help documentation (<a href="https://www.ibm.com/support/knowledgecenter/de/SSVRGU_8.5.3/com.ibm.designer.domino.main.doc/H_EXAMPLES_ADDRESSBOOKS_PROPERTY.html">Examples: AddressBooks property</a>) to create a function to do the lookup.</p>
  538. <pre class="brush: jscript; title: ; notranslate">%REM
  539. Function getEmailAddress
  540. Description: This Function returns a string that is the email address from the address books
  541.  
  542. IMPORTANT: all address books are stored in the NotesDatabase list, addressBookList, which must be called BEFORE calling the getEmailAddress function
  543.  
  544. %END REM
  545. Function getEmailAddress ( recipientName As String ) As String
  546. Dim view As NotesView
  547. Dim doc As NotesDocument
  548. Dim internetAddress As Variant
  549. Dim found As Boolean
  550. Dim reason As String
  551.  
  552. On Error Goto errorhandler
  553.  
  554. ' if already an internet address, just return that value '
  555. If ( InStr ( recipientName, &quot;@&quot; ) ) Then
  556. getEmailAddress = recipientName
  557. Exit function
  558. End If
  559.  
  560. getEmailAddress = &quot;&quot;
  561. found = False
  562. ForAll addressBook In addressBookList
  563. ' all address books are stored in the NotesDatabase list, addressBookList, which must be called BEFORE calling the getEmailAddress function '
  564. ' check every Domino Directory, until found '
  565. If ( addressBook.IsPublicAddressBook ) And ( Not found ) Then
  566. ' look up name in the VIMPeople view of address book '
  567. Set view = addressBook.GetView( &quot;($VIMPeople)&quot; )
  568. If not ( view Is Nothing ) Then
  569. Set doc = view.GetDocumentByKey( recipientName )
  570. ' if person is found, get their internet addrress and stop '
  571. If Not ( doc Is Nothing ) Then
  572. internetAddress = doc.Getitemvalue(&quot;InternetAddress&quot;)
  573. If ( internetAddress (0) &lt;&gt; &quot;&quot; ) Then
  574. getEmailAddress = internetAddress (0)
  575. found = True
  576. Exit ForAll
  577. End If
  578. End If
  579. End If
  580. End If
  581. End ForAll
  582. ' if found is still False, the person was not found '
  583. If Not found Then
  584. MessageBox ( &quot;Unable to locate &quot; &amp; recipientName &amp; &quot; in the address book, using &quot; &amp; recipientName &amp; &quot; as their email addresss&quot; )
  585. getEmailAddress = recipientName
  586. End If
  587.  
  588. exiting:
  589. Exit Function
  590. errorhandler:' report all errors in a messagebox '
  591. reason = &quot;Function getEmailAddress: &quot;
  592. reason = reason &amp; &quot;Error #&quot; &amp; Cstr (Err) &amp; &quot; (&quot; &amp; Error &amp; &quot;) on line &quot; &amp; Cstr (Erl)
  593. Messagebox reason, 16, &quot;Error&quot;
  594. Resume exiting
  595. End Function</pre>
  596. <p>Hope someone else finds this useful&#8230;.</p>
  597. <h4>Addendum</h4>
  598. <pre>Dim addressBookList List As NotesDatabase</pre>
  599. <p>As Ben pointed out, re-opening every address book every time you want the email address is incredibly inefficient. So, declare a global variable for the address books and use the following function to open them. The code in getEmailAddress now reflects this&#8230;.</p>
  600. <pre class="brush: jscript; title: ; notranslate">%REM
  601. Function openAddressBooks
  602. Description: This Function assigns all address books to a NotesDatabase list and opens them
  603. %END REM
  604. Function openAddressBooks ( ) As Boolean
  605. Dim reason As String
  606.  
  607. On Error Goto errorhandler
  608.  
  609. openAddressBooks = False
  610. ForAll addressBook In session.Addressbooks
  611. ' open every Domino Directory '
  612. If ( addressBook.IsPublicAddressBook ) Then
  613. Set addressBookList (addressBook.FileName) = addressBook
  614. Call addressBookList (addressBook.FileName).Open( &quot;&quot;, &quot;&quot; )
  615. End If
  616. End ForAll
  617. openAddressBooks = True
  618.  
  619. exiting:
  620. Call agentLog.LogAction ( &quot;-------&quot; )
  621. Call agentLog.LogAction ( &quot;-------&quot; )
  622. Exit Function
  623. errorhandler:' report all errors in a messagebox '
  624. reason = &quot;Error #&quot; &amp; Cstr (Err) &amp; &quot; (&quot; &amp; Error &amp; &quot;) on line &quot; &amp; Cstr (Erl)
  625. Messagebox reason, 16, &quot;Error&quot;
  626. Call agentLog.LogAction ( reason )
  627. Resume exiting
  628. End Function</pre><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/537/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=537&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  629. <wfw:commentRss>https://lostinxpages.com/2017/06/21/getting-email-addresses-from-the-notes-address-book/feed/</wfw:commentRss>
  630. <slash:comments>3</slash:comments>
  631. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  632. <media:title type="html">habap</media:title>
  633. </media:content>
  634. </item>
  635. <item>
  636. <title>Progammatically opening a mailto link from the Notes client</title>
  637. <link>https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/</link>
  638. <comments>https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/#comments</comments>
  639. <pubDate>Fri, 02 Jun 2017 21:35:46 +0000</pubDate>
  640. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  641. <category><![CDATA[Client-Side Javascript]]></category>
  642. <category><![CDATA[Old Notes]]></category>
  643. <category><![CDATA[mailto]]></category>
  644. <category><![CDATA[NotesUIWorkspace]]></category>
  645. <category><![CDATA[Outlook]]></category>
  646. <category><![CDATA[URLOpen]]></category>
  647.  
  648. <guid isPermaLink="false">http://lostinxpages.com/?p=475</guid>
  649. <description><![CDATA[Our company has been transitioning from Notes mail to Outlook for a little while. One of the hurdles for me has been getting Notes to send mail when the user no longer has a Notes mail file and also wants to send any editable emails via the Outlook client. Today, I&#8217;d like to have a [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=475&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  650. <content:encoded><![CDATA[<p>Our company has been transitioning from Notes mail to Outlook for a little while. One of the hurdles for me has been getting Notes to send mail when the user no longer has a Notes mail file and also wants to send any editable emails via the Outlook client. Today, I&#8217;d like to have a look at my latest solution to opening those editable emails in the Outlook client.</p>
  651. <p>If you try using @URLOpen or ws.URLOpen, you&#8217;ll find that despite having set the default email to Outlook, Notes insists on opening a Notes document to send the mail. If you put the mailto link into a browser, it opens in the default mail client, Outlook, formatted properly. If you programmatically open a http link, it opens in the default browser. Yet, frustratingly, it won&#8217;t take that same mailto link that works in the browser and open it from LotusScript or a formula. So, we have to cheat.</p>
  652. <h3>mailto syntax</h3>
  653. <p>As a quick review, mailto links are actually very simple.</p>
  654. <p>There are five components to the link, but none are required.</p>
  655. <p><strong>mailto:<em>[email protected] </em></strong>Simply list the recipients email addresses. Outlook seems to prefer that you separate them with semi-colons, though most syntax guides suggest commas.</p>
  656. <p>The other four are passed as parameters in the query string. So, before you use any of them, you have to use a question mark to separate the query string from the URL, then separate each parameter with an ampersand (&amp;).</p>
  657. <p><strong>cc=<em>[email protected] </em></strong>or <strong>bcc=<em>[email protected] </em></strong>You can add carbon-copy folks or blind-copy folks in the same way.</p>
  658. <p><strong>subject=<em>That%20issue </em></strong>The subject line should be encoded so that there are no spaces and any unusual characters pass through to the email rather than disrupt the syntax of the query string.</p>
  659. <p><strong>body=<em>The%20contents%20of%20email</em> </strong>The body is, of course, the most important thing to us and we can simply compute the values to be used. Links back to Notes documents to be opened in the Notes client can even be used, so long as you provide a proper <em>notes://</em> URL.</p>
  660. <h3>Hard coded example</h3>
  661. <p>If we create a HTML document, store it locally and open it programmatically, it will execute any javascript we&#8217;ve got on the page as browsers ought to do. So, we can make it open the mailto link if our page has the following:</p>
  662. <pre class="brush: jscript; title: ; notranslate">&lt;script type=&quot;text/javascript&quot;&gt;
  663. subject = &quot;Change Order for your approval&quot;;
  664. body = &quot;Your approval has been requested for changes made... &quot;;
  665. body = body + &quot;%0A%0A&quot;;
  666. body = body + &quot;Please review these changes and approve, provide comments, or request more time to review within five business days of this notification. Otherwise, the change will be considered approved as per DAI policy.&quot;;
  667. body = body + &quot;%0A%0A&quot;;
  668. body = body + &quot;The pending change approval form and links to draft documents can be found here: &quot;;
  669. body = body + &quot;%0A&quot;;
  670. body = body + &quot;Notes:///852580E9007624A0/0/B82A2F4ABF0D56818525808400601DBE&quot;;
  671. mailtoString = &quot;mailto:[email protected]?subject=&quot; + subject + &quot;&amp;body=&quot; + body;
  672.  
  673. window.open(mailtoString)&lt;/script&gt;</pre>
  674. <h3>Sample code</h3>
  675. <p>So, all we have to do is generate the mailtoString, put it into a new HTML document and open it via NotesUIWorkspace.URLOpen to get our document to open and popup the Outlook client, populated with the correct information.</p>
  676. <pre class="brush: jscript; title: ; notranslate">Sub Click(Source As Button)
  677. Dim ws As New NotesUIWorkspace
  678. Dim session As New NotesSession
  679. Dim thisdb As NotesDatabase
  680. Dim uidoc As NotesUIDocument
  681. Dim approver As Variant
  682. Dim approverNames As String
  683. Dim i As Integer
  684.  
  685. Set thisdb = session.CurrentDatabase
  686. Set uidoc = ws.CurrentDocument
  687. Set doc = uidoc.Document
  688.  
  689. For i = 1 To 6
  690. approver = doc.getItemValue( &quot;Approver&quot;&amp;i )
  691. If i = 1 Then
  692. approverNames = approver (0)
  693. Else
  694. If ( approver (0) &lt;&gt; &quot;&quot; ) Then
  695. approverNames = approverNames &amp; &quot;;&quot; &amp; approver (0)
  696. End If
  697. End If
  698. Next
  699. Dim subject As String
  700. Dim body As String
  701. Dim mailtoString As String
  702. Dim changeOrderNumber As Variant
  703.  
  704. changeOrderNumber = doc.getItemValue (&quot;CONum&quot; )
  705. subject = &quot;Change Order &quot; &amp; changeOrderNumber (0) &amp; &quot; for your approval in &quot; &amp; thisdb.Title
  706. subject = Replace ( subject, &quot; &quot;, &quot;%20&quot; )
  707. body = &quot;Your approval has been requested for changes made using &quot; &amp; changeOrderNumber (0) &amp; &quot; in &quot; &amp; thisdb.Title
  708. body = body &amp; &quot;%0A%0A&quot;
  709. body = body &amp; &quot;Please review these changes and approve, provide comments, or request more time to review within five business days of this notification. Otherwise, the change will be considered approved as per DAI policy.&quot;
  710. body = body &amp; &quot;%0A%0A&quot;
  711. body = body &amp; &quot;The pending change approval form and links to draft documents can be found here: &quot;
  712. body = body &amp; &quot;%0A&quot;
  713. body = body &amp; &quot;Notes:///&quot; &amp; thisdb.ReplicaID &amp; &quot;/0/&quot; &amp; doc.UniversalID
  714. body = Replace ( body, &quot; &quot;, &quot;%20&quot; )
  715.  
  716. mailtoString = &quot;mailto:&quot; &amp; approverNames &amp; &quot;?subject=&quot; &amp; subject &amp; &quot;&amp;body=&quot; &amp; body
  717.  
  718. Dim fileName As String
  719. Dim dataDirectoryPath As String
  720. Dim url As String
  721. Dim fileNumber As Integer
  722.  
  723. fileNumber = 1
  724.  
  725. dataDirectoryPath = session.Getenvironmentstring(&quot;Directory&quot;, True)
  726. fileName = dataDirectoryPath &amp; &quot;\mailto.htm&quot;
  727.  
  728. Open fileName For Output As fileNumber
  729.  
  730. Print # fileNumber, {&lt;script type=&quot;text/javascript&quot;&gt;}
  731. Print # fileNumber, {mailtoString = &quot;} &amp; mailtoString {&quot;}
  732. Print # fileNumber, {window.open(mailtoString)&lt;/script&gt;}
  733.  
  734. Close # fileNumber
  735.  
  736. url = &quot;file:///&quot; &amp; fileName
  737. Call ws.Urlopen(url)
  738.  
  739. End Sub</pre><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/475/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=475&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  740. <wfw:commentRss>https://lostinxpages.com/2017/06/02/progammatically-opening-a-mailto-link-from-the-notes-client/feed/</wfw:commentRss>
  741. <slash:comments>3</slash:comments>
  742. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  743. <media:title type="html">habap</media:title>
  744. </media:content>
  745. </item>
  746. <item>
  747. <title>What good is the internet of things to people who don&#8217;t have internet?</title>
  748. <link>https://lostinxpages.com/2017/02/21/what-good-is-the-internet-of-things-to-people-who-dont-have-internet/</link>
  749. <comments>https://lostinxpages.com/2017/02/21/what-good-is-the-internet-of-things-to-people-who-dont-have-internet/#respond</comments>
  750. <pubDate>Tue, 21 Feb 2017 17:36:30 +0000</pubDate>
  751. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  752. <category><![CDATA[General Interest]]></category>
  753. <category><![CDATA[Cambodia]]></category>
  754. <category><![CDATA[DAI]]></category>
  755. <category><![CDATA[Internet of Things]]></category>
  756. <category><![CDATA[Rob Ryan-Silva]]></category>
  757.  
  758. <guid isPermaLink="false">http://lostinxpages.com/?p=472</guid>
  759. <description><![CDATA[While preparing for a panel discussion this morning, Tami suggested that I check out the blogs by our technology team at DAI. Rob Ryan-Silva wrote an excellent think piece on using the Internet of Things to help people who have no access to the internet. In Cambodia, they relied on human intervention to get out [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=472&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  760. <content:encoded><![CDATA[<p>While preparing for a panel discussion this morning, Tami suggested that I check out the blogs by our technology team at DAI. Rob Ryan-Silva wrote an excellent think piece on using the Internet of Things to help people who have no access to the internet. In Cambodia, they relied on human intervention to get out flood warnings. That&#8217;s not always reliable, but Rob was able to <a href="https://dai-global-digital.com/what-good-is-the-internet-of-things-to-people-who-dont-have-internet.html">use IoT to come up with an automated solution&#8230;.</a></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/472/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=472&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  761. <wfw:commentRss>https://lostinxpages.com/2017/02/21/what-good-is-the-internet-of-things-to-people-who-dont-have-internet/feed/</wfw:commentRss>
  762. <slash:comments>0</slash:comments>
  763. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  764. <media:title type="html">habap</media:title>
  765. </media:content>
  766. </item>
  767. <item>
  768. <title>An apparent theme: application agnosticism</title>
  769. <link>https://lostinxpages.com/2016/08/19/an-apparent-theme-agnosticism/</link>
  770. <comments>https://lostinxpages.com/2016/08/19/an-apparent-theme-agnosticism/#respond</comments>
  771. <pubDate>Fri, 19 Aug 2016 13:55:36 +0000</pubDate>
  772. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  773. <category><![CDATA[Conferences]]></category>
  774. <category><![CDATA[General Interest]]></category>
  775. <category><![CDATA[Xpages]]></category>
  776. <category><![CDATA[MWLUG]]></category>
  777.  
  778. <guid isPermaLink="false">http://lostinxpages.com/?p=466</guid>
  779. <description><![CDATA[As always, I&#8217;m enjoying learning new things and seeing old friends (and some new ones!) at MWLUG. There have been sessions that talked about accessing and displaying data from within Notes without using Notes or XPages and sessions about accessing non-Notes data using XPages. Much of the excitement is about having data exposed via a [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=466&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  780. <content:encoded><![CDATA[<p>As always, I&#8217;m enjoying learning new things and seeing old friends (and some new ones!) at MWLUG. There have been sessions that talked about accessing and displaying data from within Notes without using Notes or XPages and sessions about accessing non-Notes data using XPages. Much of the excitement is about having data exposed via a REST service and using a good front end tool to display it. So, in some senses, we are talking about not needing Notes at all.</p>
  781. <p>Earlier this summer, our company&#8217;s Vice President of the Office of Information Management and Technology announced that we&#8217;re actually moving away from the Notes client for mail. While I knew that this was a possibility, I&#8217;d thought we were still just looking at allowing folks to choose other mail applications to access their mail. Of course, allowing multiple mail applications either tosses some of your users to the wolves of &#8216;no support&#8217; or complicates things immeasurably for support. So, it does make sense and was not particularly unexpected. Nonetheless, it still surprised me.</p>
  782. <p>The core of our Notes use has always applications anyway. Our business relies on a lot of people working disconnected and, as such, the Notes replication model has been key to our need for Notes. So, we&#8217;ll be keeping the Notes client on machines for all those people who work disconnected, but much of our access had already moved to the browser. So, in a sense the work I do was moving in this direction as well.</p>
  783. <p>So, the agnosticism is where we&#8217;re all going, it seems. I guess the mantra remains &#8212; use the best tool for the job.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/466/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=466&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  784. <wfw:commentRss>https://lostinxpages.com/2016/08/19/an-apparent-theme-agnosticism/feed/</wfw:commentRss>
  785. <slash:comments>0</slash:comments>
  786. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  787. <media:title type="html">habap</media:title>
  788. </media:content>
  789. </item>
  790. <item>
  791. <title>Sessions for #MWLUG2016</title>
  792. <link>https://lostinxpages.com/2016/07/01/sessions-for-mwlug2016/</link>
  793. <comments>https://lostinxpages.com/2016/07/01/sessions-for-mwlug2016/#respond</comments>
  794. <pubDate>Fri, 01 Jul 2016 14:54:21 +0000</pubDate>
  795. <dc:creator><![CDATA[David Navarre]]></dc:creator>
  796. <category><![CDATA[Conferences]]></category>
  797. <category><![CDATA[Java]]></category>
  798. <category><![CDATA[Xpages]]></category>
  799. <category><![CDATA[A New Way to Work]]></category>
  800. <category><![CDATA[Bootstrap]]></category>
  801. <category><![CDATA[Devin Olson]]></category>
  802. <category><![CDATA[Elvis Lezcano]]></category>
  803. <category><![CDATA[Eric McCormick]]></category>
  804. <category><![CDATA[Graphs]]></category>
  805. <category><![CDATA[jQuery]]></category>
  806. <category><![CDATA[Julian Robichaux]]></category>
  807. <category><![CDATA[Karl-Henry Martinsson]]></category>
  808. <category><![CDATA[Kathy Brown]]></category>
  809. <category><![CDATA[Mark Roden]]></category>
  810. <category><![CDATA[Mike McGarel]]></category>
  811. <category><![CDATA[MWLUG]]></category>
  812. <category><![CDATA[Nathan T Freeman]]></category>
  813. <category><![CDATA[REST]]></category>
  814.  
  815. <guid isPermaLink="false">http://lostinxpages.com/?p=461</guid>
  816. <description><![CDATA[Looking over the announced sessions for MWLUG 2016 down in Austin, I&#8217;m excited. There&#8217;s a good mix of things you can use today and road maps you can apply in the future. I&#8217;m a developer, so all the Development and Best Practices sessions look interesting. The tough part will be picking which ones to attend [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=461&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  817. <content:encoded><![CDATA[<p>Looking over the announced <a href="http://mwlug.com/mwlug/mwlug.nsf/sessions.xsp">sessions</a> for MWLUG 2016 down in Austin, I&#8217;m excited. There&#8217;s a good mix of things you can use today and road maps you can apply in the future. I&#8217;m a developer, so all the Development and Best Practices sessions look interesting. The tough part will be picking which ones to attend (and record!)</p>
  818. <p>Five sessions that jumped off the page at me are, in no particular order:</p>
  819. <p><strong>Debugging Java In Your Domino Applications</strong> with Julian Robichaux &#8212; Java just kills me sometimes. Heck, all of XPages does, but learning more about how to debug and troubleshoot is always useful.</p>
  820. <p><strong>Extreme Development: Pair Programming</strong> with Devin Olson and Mike McGarel &#8212; Now that Elvis Lezcano is aboard at DAI, we might have a chance to do some of this. He&#8217;s the smartest developer I&#8217;ve worked with, which I why this is the third job we&#8217;ve had together.</p>
  821. <p><strong>Think Outside The Box</strong> with Karl-Henry Martinsson &#8212; We&#8217;ve just been breaking into using REST services with jQuery and Bootstrap to present data, so getting someone else&#8217;s take on it will expand my ability to combine data from multiple databases to dazzle our users. (see Kathy&#8217;s session on dashboards for ideas she&#8217;s using for us)</p>
  822. <p><strong>Getting Your Hands on Graphs</strong> with Nathan Freeman &#8212; I have loved all the conceptual sessions and want to learn more. If Nathan can get me to understand, there&#8217;s no telling how far we can go!</p>
  823. <p><strong>A Modernized Developer&#8217;s Workflow with Domino/XPages</strong> with Eric McCormick &#8212; Workflow has always been a great strength of Notes, so getting modernized by someone who&#8217;s not spouting theory, but displaying methods in practice is exciting.</p>
  824. <p>Now, before anyone complains about me not mentioning their sessions&#8230;. I&#8217;d like to sit in on about&#8230; 27 sessions. Since Marky has made no progress on the time machine and IBM doesn&#8217;t have anyone working replication of people instead of just data and design, I think I only get about a dozen sessions.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lostinxpages.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lostinxpages.wordpress.com/461/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=lostinxpages.com&#038;blog=46534584&#038;post=461&#038;subd=lostinxpages&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  825. <wfw:commentRss>https://lostinxpages.com/2016/07/01/sessions-for-mwlug2016/feed/</wfw:commentRss>
  826. <slash:comments>0</slash:comments>
  827. <media:content url="http://1.gravatar.com/avatar/deb5781b7343da77e1203b1312a9dbc0?s=96&#38;d=identicon&#38;r=G" medium="image">
  828. <media:title type="html">habap</media:title>
  829. </media:content>
  830. </item>
  831. </channel>
  832. </rss>
  833.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//lostinxpages.com/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda