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: https://martindonnellyblog.wordpress.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>Mostly App Dev </title>
  13. <atom:link href="https://martindonnellyblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://martindonnellyblog.wordpress.com</link>
  15. <description>Info and opinion on app dev activity in the IBM ICS space</description>
  16. <lastBuildDate>Thu, 13 Dec 2018 20:48:38 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>
  19. hourly </sy:updatePeriod>
  20. <sy:updateFrequency>
  21. 1 </sy:updateFrequency>
  22. <generator>http://wordpress.com/</generator>
  23.  
  24. <image>
  25. <url>https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/cropped-4y7b9020.png?w=32</url>
  26. <title>Mostly App Dev </title>
  27. <link>https://martindonnellyblog.wordpress.com</link>
  28. <width>32</width>
  29. <height>32</height>
  30. </image>
  31. <cloud domain='martindonnellyblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  32. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://martindonnellyblog.wordpress.com/osd.xml" title="Mostly App Dev " />
  33. <atom:link rel='hub' href='https://martindonnellyblog.wordpress.com/?pushpress=hub'/>
  34. <item>
  35. <title>Customizer: Samples Made Simple</title>
  36. <link>https://martindonnellyblog.wordpress.com/2018/12/13/samples-made-simple/</link>
  37. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  38. <pubDate>Thu, 13 Dec 2018 15:24:55 +0000</pubDate>
  39. <category><![CDATA[Uncategorized]]></category>
  40. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=238</guid>
  41.  
  42. <description><![CDATA[Many of us who have written Notes apps over the years remember the Nifty Fifty with a certain fondness. This was a set of 50 template applications that did various useful things out of the Notes R5 box – Stefan Wissel summarizes it very well here in a Nifty Fifty blog post from a number &#8230; <a href="https://martindonnellyblog.wordpress.com/2018/12/13/samples-made-simple/" class="more-link">Continue reading <span class="screen-reader-text">Customizer: Samples Made Simple</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  43. <content:encoded><![CDATA[<p>Many of us who have written Notes apps over the years remember the Nifty Fifty with a certain fondness. This was a set of 50 template applications that did various useful things out of the Notes R5 box – <a href="https://www.wissel.net/">Stefan Wissel</a> summarizes it very well here in <a href="https://www.wissel.net/blog/2009/02/the-nifty-fifty-unearthed.html">a Nifty Fifty blog</a> post from a number of years back. Quite apart from the obvious and immediate functional value that these templates delivered, the educational benefit was quite possibly even greater! Here was a bunch of apps that developers could explore from the inside out, learn from, extend and ultimately make their own. Perfect!</p>
  44. <p>Today many IBM ICS customers are familiar <em>to some extent</em> with Customizer – umm, some tool for adapting the IBM Connections user experience by providing custom client-side CSS and JavaScript, right? Very often, despite real needs, the vague concept around a technology never progresses to anything more concrete for customers because of difficulties getting it up and running.  Maybe some initiative like the Nifty Fifty could help enable the Connections community learn how to customize their environment – i.e. a set of sample CSS/JS customizations that can be easily deployed on-cloud or on-premises that perform simple tasks and come with re-usable source code. And that in a nut shell is what the Nifty Scripties application provides!</p>
  45. <h2>Nifty Scripties</h2>
  46. <p>Let’s start with IBM Connections Cloud. It has an App Catalog that has undergone a number of major upgrades over the past twelve months, transforming it from a somewhat moribund site housing half a dozen apps to something entirely more modern with over thirty applications. The most recent addition to this collection is the Nifty Scripties app, as identified in the following screen display.</p>
  47. <h3>Figure 1. IBM Connections App Catalog Main Page</h3>
  48. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-a.png?w=1200" alt="IBM Connections Catalog Main Page" /><br />
  49. An administrator of a tenant organization in IBM Connections Cloud can find this App Catalog page via the <strong>Admin &gt; Manage Organization &gt; Apps &gt; App Catalog</strong> menu path or by following this URL:</p>
  50. <p><a href="https://apps.%7bdata_center_id%7d.collabserv.com/manage/catalog/apps/allapps/input">https://apps.{data_center_id}.collabserv.com/manage/catalog/apps/allapps/input</a></p>
  51. <p>All application offerings follow the same pattern, namely, click on <strong>Learn More</strong> to get details of the offering and click <strong>Get</strong> to install the application into your organization. Nifty Scripties had already been installed in my cloud organization when this screenshot was taken so it presents a <strong>Configure</strong> button instead which enables you to change some aspects of how the application is deployed.</p>
  52. <p><strong>Note:</strong> Nifty Scripties is a free offering that will be installed at no cost to your organization.</p>
  53. <p>Regardless of whether you are installing from scratch or reconfiguring your installation, you will next be asked if the Nifty Scripties app should be installed for your <strong>Entire Organization </strong>or for selected <strong>Individuals</strong>. Given that this is a collection of samples then you should select <strong>Individuals</strong> so that the modified user experience <em>is not exposed to all users in your organization</em>. This is particularly true if you are experimenting inside a production tenant org. By selecting the <strong>Individuals</strong> option you can target the samples to specific users once installation is complete (e.g. just yourself) and not disrupt the usual experience of regular users.</p>
  54. <p>The next screen lists the 10 separate samples contained within the Nifty Scripties app (okay, 10 rather than 50, but with your help this list will grow :-)). You can choose any combination of the 10 samples to install. It makes sense to install all the samples as you can always enable or disable individual samples later on.</p>
  55. <h3>Figure 2. Nifty Scripties Samples List</h3>
  56. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-b-medium.png?w=1200" alt=" Nifty Scripties Samples List" /><br />
  57. Clicking <strong>Next</strong> and <strong>Finish</strong> completes the installation and you can see the app displayed in the <strong>My Apps</strong> tab. Since Nifty Scripties is a Customizer app it means that you will see the results of installation in the App Registry since all Customizer apps live there. You can navigate to the App Registry from the App Catalog by clicking <strong>Organization Extensions</strong> in the Administration navigator and then following the <strong>new Apps Manager</strong> link.</p>
  58. <p>The final step is to validate that the app is enabled for the correct set of consumers. By default the App Catalog will reduce the audience for the Nifty Scripties app to the admin user who installed the app – or if this email address could not be resolved during the installation process then a dummy email address is used (&#8220;userid1@example.com&#8221;).  You can check the exact setting via the App Registry <strong>Code Editor</strong>. Listing 1 shows the JSON fragment for the Nifty Scripties app container with the relevant match rule highlighted in red.  Be aware that you can add more user entries to the &#8220;user-email&#8221; list or employ user-group references.  For more information on this you can jump to the <a href="https://github.com/ibmcnxdev/customizer/blob/master/docs/IBMConnectionsCustomizer.md#fine-grained-filtering-based-on-user-identity">Fine Grained Filtering based on User Identity</a> section of the online documentation or the <a href="https://martindonnellyblog.wordpress.com/2018/10/17/some-updates-on-ibm-connections-customizer/">Support for Groups</a> blog article.</p>
  59. <h3>Listing 1. Nifty Scripties App &#8211; Default User Match</h3>
  60. <pre><code>{
  61.   "app_id":"com.nifty.scripties",
  62.   "name":"Nifty Scripties App",
  63.   "title":"Nifty Scripties App",
  64.   "description":"Provides the Top Ten Customizer Apps",
  65.   "services":[
  66.      "Customizer"
  67.   ],
  68.  <span style="color:#ff0000;"> "match":{
  69.      "user-email":[
  70.         "martindonnelly@yopmail.com"
  71.      ]
  72.   },</span>
  73.   "state":"enabled",
  74.   "extensions":[ ... ]
  75. }</code></pre>
  76. <p>Once you are satisfied that the match rule meets your needs then you are ready to play around with 10 new Customizer samples – all good to go! This short video (<a href="https://youtu.be/xAggrf9400A">Nifty Scripties Getting Started</a>) walks through everything you have read so far.</p>
  77. <h2>Samples in Action</h2>
  78. <p>Inside the Nifty Scripties JSON you will see a JSON object defined for every extension – i.e. one for every item listed in Figure 2. They all follow the same pattern. Listing 2 shows an example of one such extension:</p>
  79. <h3>Listing 2. Nifty Scripties Extension Example – Search Results in New Window</h3>
  80. <pre style="padding-left:30px;"><code>{
  81.   "ext_id":"com.nifty.scripties.searchResults",
  82.   "name":"Open Search Results in New Window",
  83.   "description":"Open search results in new window",
  84.   "type":"com.ibm.customizer.ui",
  85.   "payload":{
  86.   "include-files":[
  87.      "cnx-search.js"
  88.   ],
  89.   "include-repo":{
  90.      "name":"cnx-searchresults"
  91.      }
  92.   },
  93.   "path":"search"
  94. }</code></pre>
  95. <p>&nbsp;</p>
  96. <p>All extensions are characterized by three general properties: name, type and path.  The name is self-explanatory, the type represents the Customizer extension point (com.ibm.customizer.ui means this is a UI customization and this value is the same for all samples in this app) and the path identifies the IBM Connections app that the customization applies to – ‘<strong>Search’</strong> in this instance.</p>
  97. <p>The payload section contains properties that can refine the behaviour of the extension. Again in this particular instance it is very simple – include the cnx-search.js file in the HTTP response when serving up <strong>Search</strong> pages in IBM Connections.  Some Nifty Scripties extensions may have extra properties depending on the complexity of the use case.</p>
  98. <p>To see this sample in action, do the following:</p>
  99. <ol>
  100. <li>
  101. <pre>Ensure that the extension is in an enabled state and targeted for you</pre>
  102. </li>
  103. <li>
  104. <pre>Navigate to a page in Connections where you can perform a search, e.g. Homepage</pre>
  105. </li>
  106. <li>
  107. <pre>Enter a term in the Search text box and press {CR} or click the Search icon</pre>
  108. </li>
  109. <li>
  110. <pre>When searching completes, click an entry in the results page</pre>
  111. </li>
  112. </ol>
  113. <p>Observe that the content for the result is opened in a new separate tab window in your browser. Ordinarily this content would be loaded into the current page, overwriting the results. Figure 3 shows a screenshot of this scenario along with some assistive callouts.</p>
  114. <h3>Figure 3. Nifty Scripties Sample – Open Search Result in New Window</h3>
  115. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-c.png?w=1200" alt=" Open Search Result in New Window" /><br />
  116. Once you have successfully walked through this customization, you can apply the same pattern to the other extensions in the Nifty Scripties app. Table 1 below provides a functional summary of what each extension does and there is another short video available online that walks through some of the other Nifty Scripties samples (<a href="https://youtu.be/1yaKDdc_1-8">Nifty Scripties in Action</a>).</p>
  117. <h3>Table 1. Sample Summary</h3>
  118. <ol>
  119. <li>Smooth UI Loader reduces screen jitter that can sometimes happen according as many components compete to update a Connections HTML page at runtime. If you are using this extension in conjunction with other Customizer extensions it is important that is loaded first – hence the reason its name is set as “!!Smooth UI Loader”. When an application contains more than one extension, they are loaded alphabetically by name, and the leading “!!” characters force the extension to the front of the queue in this application.</li>
  120. <li>Activity Stream Infinite Scroll replaces the Pager UI with a dynamic refresh mechanism which fetches more entries according as the user navigates towards the end of the displayed list.</li>
  121. <li>Bulk Delete Members from a Community will enable community owners to remove members via a multi-select people picker dialog box as opposed to repeating individual delete operations one by one. A <strong>Bulk Delete Members</strong> button will be rendered in the Community Members page but only to Community owners.</li>
  122. <li>Change CKEditor Font Size will programmatically set the default editor font size to whatever supported font you specify inside the source code JavaScript and CSS include files. In this sample, the font size is specified as 18 pixels in the JavaScript code.</li>
  123. <li>Community Flipcard Layout allows you to toggle between the traditional list view of your Communities and a Card Layout. Each card displays the community icon on the front side and flips over to display summary community information on the reverse side whenever you hover the mouse over it.</li>
  124. <li>Enhanced Activity Stream Notifier will post an update to your homepage when a new message appears in your activity stream. Thus for example if another user @mentions you in a post then a notification is proactively rendered without you having to refresh the homepage. Figure 4 shows a screenshot of how this looks.</li>
  125. <li>Mark Favourite Community renders a heart icon in the title row of each Community entry (see Figure 5). Clicking the icon adds that particular community to a list of favourite communities that can be displayed and selected by clicking Favourite Communities in the Communities navigation bar.</li>
  126. <li>Open Bookmarks in New Window opens the content page associated with any given bookmarked link in new browser window tab, thus leaving the original bookmark view in place.</li>
  127. <li>Open Search Results in New Window is the same concept as #8 but for Search results. This extension is explained in detail in the <a href="#_Samples_in_Action">Samples in Action</a> section and is also featured in the <a href="https://youtu.be/1yaKDdc_1-8">Nifty Scripties in Action video</a>.</li>
  128. <li>Set Orient Me as Homepage will replace the traditional Connections Homepage with the new OrientMe homepage as the default user experience. To do this otherwise requires a ticketed request be processed by IBM Connection Cloud dev ops for your organization. Under the covers this script creates a special setting in the browser’s local storage, as shown later in Figure 6.</li>
  129. </ol>
  130. <h2>Summary</h2>
  131. <p>The objective of Nifty Scripties is to create a simple means of provisioning Customizer samples to organizations in IBM Connections Cloud. On-premises customers can avail of the same samples by copying the resources from the GitHub repositories identified in the Nifty Scripties application JSON and laying that content down under the local Customizer customization folder.</p>
  132. <p>Hopefully this blog article along with the accompanying videos and the screenshots that follow in Appendix 1 will help get you up and running with simple IBM Connections UI customizations.</p>
  133. <h2>Links to Other Useful Resources</h2>
  134. <p><a href="https://github.com/ibmcnxdev/customizer/blob/master/docs/IBMConnectionsCustomizer.md">Customizer Online Documentation</a></p>
  135. <p><a href="https://github.com/ibmcnxdev">IBM Connections Developers GitHub Organization</a></p>
  136. <p><a href="https://github.com/OpenCode4Connections/">OpenCode4 Connections GitHub Organization</a></p>
  137. <p><a href="https://www.youtube.com/playlist?list=PLaDSIoof-i95DcgxaxGgl3tdziBdyEfuE">Customizer Enablement Videos</a> on <a href="https://www.youtube.com/user/OpenNTF/">OpenNTF YouTube Channel</a></p>
  138. <p><a href="https://github.com/ibmcnxdev/global-samples/tree/master/nifty-scripties">App Reg JSON for Nifty Scripties</a></p>
  139. <p><a href="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/NiftyScriptiesBlog-121318.pdf">This Blog Article as a PDF</a></p>
  140. <p><strong> </strong></p>
  141. <h2>Appendix 1</h2>
  142. <h3>Figure 4. Enhanced Activity Stream Notifier</h3>
  143. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-d.png?w=1200" alt="Enhanced Activity Stream Notifier" /></p>
  144. <h3></h3>
  145. <h3>Figure 5. Favourite Communities</h3>
  146. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-e.png?w=1200" alt="Favourite Communities" /></p>
  147. <h3></h3>
  148. <h3>Figure 6. Set Orient Me as Homepage – Local Storage Info</h3>
  149. <p><img class="aligncenter size-full" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-f.png?w=1200" alt="Set Orient Me as Homepage - Debugger" /></p>
  150. ]]></content:encoded>
  151. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/niftyscripties600x300.png" />
  152. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/niftyscripties600x300.png" medium="image">
  153. <media:title type="html">niftyscripties600x300</media:title>
  154. </media:content>
  155.  
  156. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  157. <media:title type="html">mwdonnellyblog</media:title>
  158. </media:content>
  159.  
  160. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-a.png" medium="image">
  161. <media:title type="html">IBM Connections Catalog Main Page</media:title>
  162. </media:content>
  163.  
  164. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-b-medium.png" medium="image">
  165. <media:title type="html"> Nifty Scripties Samples List</media:title>
  166. </media:content>
  167.  
  168. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-c.png" medium="image">
  169. <media:title type="html"> Open Search Result in New Window</media:title>
  170. </media:content>
  171.  
  172. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-d.png" medium="image">
  173. <media:title type="html">Enhanced Activity Stream Notifier</media:title>
  174. </media:content>
  175.  
  176. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-e.png" medium="image">
  177. <media:title type="html">Favourite Communities</media:title>
  178. </media:content>
  179.  
  180. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/12/ns-fig-f.png" medium="image">
  181. <media:title type="html">Set Orient Me as Homepage - Debugger</media:title>
  182. </media:content>
  183. </item>
  184. <item>
  185. <title>Some Updates on Customizer</title>
  186. <link>https://martindonnellyblog.wordpress.com/2018/10/17/some-updates-on-ibm-connections-customizer/</link>
  187. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  188. <pubDate>Wed, 17 Oct 2018 11:19:55 +0000</pubDate>
  189. <category><![CDATA[Uncategorized]]></category>
  190. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=214</guid>
  191.  
  192. <description><![CDATA[Back in February I posted an update to a blog article on IBM Connections Customizer which described a bunch of new enhancements that had been delivered around that time. In the intervening months, the Customizer development squad has been busy working on many other new features so it’s about time to publish the good news &#8230; <a href="https://martindonnellyblog.wordpress.com/2018/10/17/some-updates-on-ibm-connections-customizer/" class="more-link">Continue reading <span class="screen-reader-text">Some Updates on Customizer</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  193. <content:encoded><![CDATA[<p>Back in February I posted an update to <a href="https://www.ibm.com/developerworks/collaboration/library/customizer-intro/index.html">a blog article on IBM Connections Customizer</a> which described a bunch of new enhancements that had been delivered around that time. In the intervening months, the Customizer development squad has been busy working on many other new features so it’s about time to publish the good news on all that cool stuff. This time however the plan is to provide a series of smaller news updates over the coming weeks, each focused on particular aspects of Customizer. Work starts here with this piece on Customizer’s latest selection filtering capabilities.</p>
  194. <h2>Audience Awareness for Apps</h2>
  195. <p>Last time around we talked about how Customizer enables you to target your application to a particular set of users within your organization. By default, a Customizer app is enabled for all users but there are various payload properties that can narrow the audience scope down to specific subsets of users. To recap, take the following Customizer JSON fragment which shows how to reduce the audience to just three users – Jane Doe, John Snow and Joe Schmoe in this example:</p>
  196. <h3>Listing 1. Customizer Application targeting Specific Users by Name</h3>
  197. <pre style="padding-left:30px;">…
  198.    "path":"communities",
  199.    "payload":{
  200.       "match":{
  201.          "user-email":[
  202.             "jane.doe@us.greenwell.com",
  203.             "john.snow@us.greenwell.com",
  204.             "joe.schmoe@ie.greenwell.com"
  205.          ]
  206.       }
  207.    }
  208. …</pre>
  209. <p>This technique effectively creates what’s known as a <em>whitelist</em> for the application – an explicit group of users who can consume the app. Last time around however there was no notion of a <em>blacklist</em> … which can of course be equally useful, albeit in the opposite direction, i.e. an explicit list of user who are <em>excluded</em> from the customization. The <strong>exclude</strong> keyword has been since been added to the Customizer JSON vocabulary to accommodate this use case. As the keyword implies, Customizer <em>does not insert</em> the <strong>include-files</strong> declared in the payload for anyone listed in the <strong>exclude</strong> clause.</p>
  210. <p>The new <strong>exclude </strong>keyword can be applied wherever the <strong>match </strong>keyword is used today. They are mutually exclusively however, i.e. you cannot declare both <strong>match</strong> and <strong>exclude</strong> clauses in the payload of a given extension. In other words, if a user is listed not listed in a whitelist (<strong>match</strong>) they are automatically in the blacklist (an implicit <strong>exclude</strong> set), and vice-versa.</p>
  211. <p>The list of selection criteria for the match/exclude operations has also been expanded. Up to recently these operations were confined to four operands: <strong>url</strong>, <strong>user-name</strong>, <strong>user-email</strong> and <strong>user-id</strong>.  Of these, the three user-centric criteria all worked in the same way – i.e. one or more <em>literal</em> strings that either identified specific user(s) or did not.  Whilst this is all well and good for simple use cases, there was no mechanism for wildcarding user selections or making more broad-based powerful choices … until now.</p>
  212. <h3>Smarter Selections</h3>
  213. <p>One limitation with the example shown in Listing 1 is that is does not scale well to handle large user lists. Suppose a Customizer application wishes to target all the employees of our fictitious Greenwell organization who are based <em>outside</em> of the USA. Obviously this could amount to far more users than is practical to include in a manually maintained list. This use case can now be handled very efficiently by combining the <strong>exclude</strong> blacklist property with a new condition keyword, as shown as follows in Listing 2:</p>
  214. <h3>Listing 2. Customizer Application excluding Users by Geography</h3>
  215. <pre>… 
  216.  "path": "communities",
  217.    "payload":{
  218.       "exclude":{
  219.          "condition":{
  220.             "keyword": "user-email",
  221.             "regex": "@us.greenwell.com"
  222.          }
  223.      }
  224.    }
  225. …</pre>
  226. <p>In essence the new condition clause allows you to apply a regular expression against the data item identified in the keyword property value.  Out of the box, Customizer provides five keywords to handle popular criteria, namely: <strong>user-name</strong>, <strong>user-email</strong>, <strong>user-id</strong>, <strong>user-role</strong> and <strong>user-agent</strong>. By excluding all users whose email address contains &#8220;@us.greenwell.com&#8221;, Customizer has addressed the specified use case of targeting employees not based in the USA.</p>
  227. <p>Another use case might be targeting all users of a particular browser – e.g. you wish to include a FireFox-specific version of a Customizer app. The fragment in Listing 3 shows how this can be achieved by applying a simple condition based on the <strong>user-agent</strong> keyword.</p>
  228. <h3><a name="_Toc525306435"></a>Listing 3. Conditionalizing Extensions based on the Browser Client</h3>
  229. <pre>… 
  230. "path":"communities",
  231. "payload":{
  232.    "match":{
  233.       "condition":{
  234.          "keyword": "user-agent",
  235.          "regex": "Firefox"
  236.       }
  237.    }
  238. }
  239. …</pre>
  240. <p><strong>NOTE</strong>: If the keyword string is not one of the pre-defined out-of-the-box values then Customizer treats it as a <em>header name</em> and will look for the nominated header and apply the regular expression to it, assuming it can be successfully resolved. This extends the filtering power of Customizer to act on totally arbitrary data items – i.e. a selection criterion that just may be very important to you!</p>
  241. <h3>Support for Groups</h3>
  242. <p>To round out the story around audiences and filters for Customizer apps we need to address the issue of groups. Whilst whitelists and blacklists are great for targeting an application at a precise set of users, inevitably this leads to a requirement to support re-usable lists of users (aka groups). In other words, typing in the same list of users over and over again gets old fast!</p>
  243. <p>Suppose the list of three users shown in Listing 1 are a test group for the Customizer apps that you deploy within your organization. Your deployment strategy means that you soft-launch applications to this group of users first in order to get feedback before rolling it out to the wider organization. Ideally you could define a list containing those users and use it in your match/exclude clauses. This is now possible with the latest release of Customizer.</p>
  244. <p>To check it out you first need to define one or more groups and to do this you need to use the IBM Connections App Registry. A user group is an extension point provided by the App Registry Connections service which can be consumed by apps from other services like Customizer, Communities, Files and so on. Listing 4 shows an application with a single extension that defines a group called &#8220;EarlyAdopters&#8221;. Observe that the canonical extension point name is <strong>com.ibm.connections.user.group</strong>. More extensions could be added to this application to define other groups.</p>
  245. <h3>Listing 4. Defining a User Group</h3>
  246. <pre>{
  247.    "name":"My Groups",
  248.    "title":"Various User Groups in my Org",
  249.    "description":"Use these as whitelists/blacklists in other extensions",
  250.    "services":[
  251.       "Connections"
  252.    ],
  253.    "extensions":[
  254.       {
  255.          "name":"EarlyAdopters",
  256.          "type":"com.ibm.connections.user.group",
  257.          "payload":{
  258.             "user-email":[
  259.                "jane.doe@us.greenwell.com",
  260.                "john.snow@us.greenwell.com",
  261.                "joe.schmoe@ie.greenwell.com"
  262.             ]
  263.          },
  264.          "path":"EarlyAdopters"
  265.       }
  266.    ]
  267. }</pre>
  268. <p>The example shown in Listing 1 can now be modified to use the &#8220;EarlyAdopters&#8221; group reference instead of the literal inline user-email list, as follows:</p>
  269. <h3>Listing 5. Customizer Application targeting a User Group</h3>
  270. <pre>…
  271.    "path":"communities",
  272.    "payload":{
  273.       "match":{
  274.          "user-group": "EarlyAdopters"
  275.       }
  276.    }
  277. …</pre>
  278. <p>Great – less typing, copying/pasting and app maintenance!  Even better &#8211; multiple groups may be applied to a match/exclude clause and groups may also be mixed with other user lists&#8230; in which case the union of all users become the target of the application.  Listing 6 shows an example of such an aggregation.</p>
  279. <h3>Listing 6. Customizer Application mixing multiple User Lists</h3>
  280. <pre>…
  281.    "path":"communities",
  282.    "payload":{
  283.       "match":{
  284.           "user-group": [
  285.              "SocialClub",
  286.              "Contactors"
  287.           ],
  288.           "user-email":[
  289.              "molly.randomer@greenwell.com",
  290.              "billy.brolly@greenwell.com"
  291.           ]
  292.      }
  293.    }
  294. …</pre>
  295. <h3>Summary</h3>
  296. <p>The goal of this article is to highlight some of the recent IBM Connections Customizer enhancements that help you to manage the scope of applications through <em>whitelists</em>, <em>blacklists</em>, <em>smarter filtering capabilities</em> and <em>re-usable group references</em>. More detail on any of the topics covered can be found in the documentation and samples provided in the <a href="https://github.com/ibmcnxdev/customizer">IBM Connections Developer GitHub site</a>.</p>
  297. <p>Hopefully the sum of these parts amounts to easier deployments for you and less administration headaches overall. Watch this space for more news on cool Customizer stuff coming your way soon. Next instalment will focus on the latest Customizer assets made available by the Connections development community. Until then… happy customizing!<br />
  298. <span id="more-214"></span></p>
  299. <p><!--more--></p>
  300. <p><!--more--></p>
  301. <p><!--more--></p>
  302. <p><!--more--></p>
  303. <p><!--more--></p>
  304. <p><!--more--></p>
  305. ]]></content:encoded>
  306. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/10/customizerlogo600x300.png" />
  307. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2018/10/customizerlogo600x300.png" medium="image">
  308. <media:title type="html">CustomizerLogo600x300</media:title>
  309. </media:content>
  310.  
  311. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  312. <media:title type="html">mwdonnellyblog</media:title>
  313. </media:content>
  314. </item>
  315. <item>
  316. <title>Time To Customize !</title>
  317. <link>https://martindonnellyblog.wordpress.com/2017/09/14/time-to-customize/</link>
  318. <comments>https://martindonnellyblog.wordpress.com/2017/09/14/time-to-customize/#comments</comments>
  319. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  320. <pubDate>Thu, 14 Sep 2017 12:46:46 +0000</pubDate>
  321. <category><![CDATA[Uncategorized]]></category>
  322. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=195</guid>
  323.  
  324. <description><![CDATA[IBM Connections has a new offering called Customizer coming out soon. As the name suggests, Customizer is designed to help web developers modify the IBM Connections user interface using standard web technologies like JavaScript and CSS. Customizing Connections has never been easy… so how is that changing and how can you try it out? A &#8230; <a href="https://martindonnellyblog.wordpress.com/2017/09/14/time-to-customize/" class="more-link">Continue reading <span class="screen-reader-text">Time To Customize !</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  325. <content:encoded><![CDATA[<p>IBM Connections has a new offering called Customizer coming out soon. As the name suggests, Customizer is designed to help web developers modify the IBM Connections user interface using standard web technologies like JavaScript and CSS. Customizing Connections has never been easy… so how is that changing and how can you try it out?</p>
  326. <p><strong>A Brave New  World</strong></p>
  327. <p>Extensibility is a significant part of the vision for IBM Connections future directions. The latest Connections offerings like OrientMe and ImportantToMe deliver on this by exposing extension points which can be configured in a no-code/low-code manner to enhance the user experience, provide alternative UI behaviours, etc. But what about traditional Connections apps like Communities, Homepage, Profiles, Files and so on? These offerings don’t have extension points but you may still want to change how they look, feel and behave – and that’s where IBM Connections Customizer comes in!</p>
  328. <p><strong>What is Customizer ?</strong></p>
  329. <p>Customizer sits as a proxy between IBM Connections and the end-user, which gives it the ability to intercept and modify requests and responses, and thus customize anything that flows through it. So for instance when Customizer sees a user request for Communities it can ask the IBM Connections App Registry if any customizations exist to modify the response. A customization typically takes the form of injecting JavaScript and/or CSS into the response to modify the UI layout or actions. The full workings and capabilities of Customizer are described in this <a href="https://github.com/ibmcnxdev/customizer/blob/master/docs/IBMConnectionsCustomizer.pdf">online documentation</a> so dive in there to get up to speed with all the cool things you can do.</p>
  330. <p><strong>Can You Use Customizer Today ?</strong></p>
  331. <p>Yes! There is a Customizer Pilot Program running from now until Customizer officially ships which means you can have your IBM Connections Cloud organization enabled for Customizer and start experimenting with extensions immediately. Don’t have an IBM Connections Cloud account? No problem &#8211; create a free trial org on IBM Connections Cloud and ask for it be Customizer enabled.</p>
  332. <p><strong>Three Great Reasons To Get Involved Now !</strong></p>
  333. <p>Prizes, prizes and more prizes! IBM in conjunction with <a href="https://opencode4connections.org/">OpenCode4Connections.org</a> are running an event to jump start community involvement with IBM Connections Customizer. You have one month (Sept 14 to Oct 12) to get set up for Customizer and create some nifty IBM Connections customizations – which can be anything you care to imagine! Then you can submit your customizations to <a href="mailto:contributions@OpenCode4Connections.org?subject=Customizer">contributions@OpenCode4Connections.org</a> for evaluation and the top <strong><em>three</em></strong> entrants will be rewarded with <strong><em>iPad Minis</em></strong>. Winners will be announced at <a href="https://socialconnections.info/">Social Connections in Vienna</a> on October 16/17.</p>
  334. <p><strong>What To Do …</strong></p>
  335. <ol>
  336. <li>Get yourself a Customizer-enabled org… your own or a temporary trial account (see <a href="https://opencode4connections.org/oc4c/customizer.xsp?key=ccc-episode3">here</a>)</li>
  337. <li>Use the online <a href="https://github.com/ibmcnxdev/customizer/tree/master/docs">doc</a>,  <a href="https://www.youtube.com/playlist?list=PLaDSIoof-i95DcgxaxGgl3tdziBdyEfuE">videos</a> and <a href="https://github.com/ibmcnxdev/customizer/tree/master/samples">samples</a> to get up to speed with Customizer</li>
  338. <li>Experiment with some customizations in your IBM Connections Cloud organization</li>
  339. <li>Submit your entries to <a href="mailto:contributions@OpenCode4Connections.org?subject=Customizer">contributions@OpenCode4Connections.org</a> for evaluation</li>
  340. </ol>
  341. <p>Good luck &#8211; there’s never been a better time to get customizing !</p>
  342. <p><strong>Key Resources</strong></p>
  343. <ul>
  344. <li><a href="https://opencode4connections.org">https://opencode4connections.org</a></li>
  345. <li><a href="https://github.com/ibmcnxdev/customizer/">https://github.com/ibmcnxdev/customizer/</a></li>
  346. </ul>
  347. ]]></content:encoded>
  348. <wfw:commentRss>https://martindonnellyblog.wordpress.com/2017/09/14/time-to-customize/feed/</wfw:commentRss>
  349. <slash:comments>2</slash:comments>
  350. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/09/iccbigpic.png" />
  351. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/09/iccbigpic.png" medium="image">
  352. <media:title type="html">ICCBigPic</media:title>
  353. </media:content>
  354.  
  355. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  356. <media:title type="html">mwdonnellyblog</media:title>
  357. </media:content>
  358. </item>
  359. <item>
  360. <title>Engage &#8211; A Great Event !</title>
  361. <link>https://martindonnellyblog.wordpress.com/2017/05/18/engage-2017-what-a-great-event/</link>
  362. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  363. <pubDate>Thu, 18 May 2017 20:21:02 +0000</pubDate>
  364. <category><![CDATA[Uncategorized]]></category>
  365. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=175</guid>
  366.  
  367. <description><![CDATA[A week has passed since the Engage conference at the Elisabeth Center in Antwerp. I had a few days’ vacation right afterwards which gave me time to reflect on what was another hugely successful event organized by IBM champion and community hero Theo Heselmans. Over the past number of years Engage has grown into what &#8230; <a href="https://martindonnellyblog.wordpress.com/2017/05/18/engage-2017-what-a-great-event/" class="more-link">Continue reading <span class="screen-reader-text">Engage &#8211; A Great Event !</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  368. <content:encoded><![CDATA[<p>A week has passed since <a href="https://engage.ug/">the Engage conference</a> at the Elisabeth Center in Antwerp. I had a few days’ vacation right afterwards which gave me time to reflect on what was another hugely successful event organized by <a href="https://www.ibm.com/developerworks/community/blogs/ibmchampion/entry/Recognizing_Lifetime_Achievement?lang=en">IBM champion</a> and community hero <a href="https://twitter.com/theoheselmans">Theo Heselmans</a>. Over the past number of years Engage has grown into what is for me, the most important conference in the IBM ICS calendar. Looking back for a moment, I remember my first Engage conference, or BLUG as it was known at the time, which was held in Brussels in March 2009. I had two app dev presentations focused mostly on XPages, and <a href="https://twitter.com/edbrill">Ed Brill</a> commented afterwards in <a href="http://www.edbrill.com/ebrill/edbrill.nsf/dx/what-was-going-on-at-blug-and-in-brussels">his blog article</a> that they were “packed”.  What is particularly rewarding eight years later is that the event was twice the size, ran for twice as long, and my sessions were still packed!</p>
  369. <p>My first presentation was at 9am on Tuesday morning when <a href="https://twitter.com/B_ROSEN">Barry Rosen</a>, <a href="https://twitter.com/BGleesonIE">Brian Gleeson</a> and I delivered a session entitled <a href="https://engage.ug/engage.nsf/pages/2017_Slides_a/$file/Engage2017_DominoAppDevFuture.pdf">Domino Application Development: Present and Future</a>. Barry kicked off with a summary of the Notes/Domino roadmap and investments and handed over to me to talk about the Feature Pack model as our new continuous delivery vehicle for app dev. Brian and I then traded demos on the new features delivered in FP8 focusing on RDBMS support, <a href="http://getbootstrap.com/">Bootstrap</a> integration for responsive apps, document encryption for XPages web apps and Domino Designer enhancements. Since <a href="https://workspace.ibm.com/">IBM Watson Workspace</a> is a hot topic Brian also demonstrated how easy it is to integrate it with Domino via XPages by pulling and pushing data updates back and forth using simple REST APIs (and then made this even easier by using the <a href="https://www.openntf.org/main.nsf/project.xsp?r=project/Watson%20Work%20Services%20Java%20SDK/releases/54958F6AB453BEEF852581170033626B">Watson Work Service Java SDK</a> from <a href="https://www.openntf.org">OpenNTF</a>). This presentation segued nicely into the Domino App Dev round table at 11.30 – 12.00 … but which actually ran to 12.30 with an overflow of attendees. The discussion was positive and we left with a long list of issues to evaluate right across the app dev spectrum – and we have already started to work on them!</p>
  370. <p><img data-attachment-id="188" data-permalink="https://martindonnellyblog.wordpress.com/2017/05/18/engage-2017-what-a-great-event/theoogs/" data-orig-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png" data-orig-size="850,621" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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="theoogs" data-image-description="" data-image-caption="" data-medium-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=300" data-large-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=850" class="aligncenter size-full wp-image-188" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=1200" alt="Theo Heselmans - Engage OGS"   srcset="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png 850w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=150&amp;h=110 150w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=300&amp;h=219 300w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png?w=768&amp;h=561 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
  371. <p>Right after lunch it was time for a different type of app dev session &#8211; this time it was <a href="https://twitter.com/mvgirl">Maureen Leland</a> and I delivering <a href="https://engage.ug/engage.nsf/Click?Open&amp;e=20170508&amp;s=Dev07&amp;f=2017_Slides_b/$file/Engage2017_SpeedOfPink.pptx">Connections App Dev &#8211; Building at the Speed of Pink</a>. Anyone listening to <a href="https://twitter.com/jasonroygary">Jason Gary</a> extol his <a href="ftp://public.dhe.ibm.com/software/lotus/info/openmic/OpenMic_Pink_Mar2017.mp4">vision of Pink</a> lately can’t help but get excited at the prospect of a radically different and better IBM Connections offering coming down the pike.</p>
  372. <p><img data-attachment-id="192" data-permalink="https://martindonnellyblog.wordpress.com/2017/05/18/engage-2017-what-a-great-event/jrgaryengageogs/" data-orig-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/jrgaryengageogs1.jpg" data-orig-size="606,621" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 6&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1494236940&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.15&quot;,&quot;iso&quot;:&quot;32&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;51.218258333333&quot;,&quot;longitude&quot;:&quot;4.4225083333333&quot;}" data-image-title="jrgaryengageogs" data-image-description="" data-image-caption="" data-medium-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/jrgaryengageogs1.jpg?w=293" data-large-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/jrgaryengageogs1.jpg?w=606" class=" size-full wp-image-192 aligncenter" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/jrgaryengageogs1.jpg?w=1200" alt="jrgaryengageogs"   /></p>
  373. <p>It was the job of Maureen and I to present how app dev fits into this brave new world. I kicked off with the fundamental tenets that everything in Pink needs to be customizable and extensible, that every feature needs to have an API, and that ad-hoc situational apps must be an intrinsic part of the collaborative Connections experience.  This led to a set of demos that extended the Pink Important To Me (ITM) bar. These customizations were based on an extension point design mechanism managed by the Application Registry. The demo showed how to insert your own ITM entries and define your own behaviours. This in turn was followed by a demo of how to customize IBM Connections Cloud as it stands today, based not on extension points (because it doesn’t have any) but on a resource injection project code-named Muse. No sooner was I finished than Maureen showed off how to create situational apps using Project LiveGrid and then went on to demonstrate new JSON-based Connections APIs that modernized older ATOM-based interfaces. I guess that covered a lot of ground in one hour and we finished with just one minute to spare!</p>
  374. <p>Overall I think Engage had a great app dev track. Unfortunately when you are presenting a lot you don’t get to see as many sessions as you would like, but I know that community stalwarts like <a href="https://twitter.com/guedeWebGate">Christian Guedeman</a>, <a href="https://twitter.com/philriand">Philippe Riand</a>, <a href="https://twitter.com/PaulSWithers">Paul Withers</a> et al were very pleased with their presentations.  At the closing session came the best news – Theo announced there would be an Engage 2018 conference, probably in mid-May, although he wouldn’t say where … what a <strong>tease</strong>!</p>
  375. ]]></content:encoded>
  376. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/engage20171.png" />
  377. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/engage20171.png" medium="image">
  378. <media:title type="html">Engage2017</media:title>
  379. </media:content>
  380.  
  381. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  382. <media:title type="html">mwdonnellyblog</media:title>
  383. </media:content>
  384.  
  385. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/theoogs.png" medium="image">
  386. <media:title type="html">Theo Heselmans - Engage OGS</media:title>
  387. </media:content>
  388.  
  389. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/05/jrgaryengageogs1.jpg" medium="image">
  390. <media:title type="html">jrgaryengageogs</media:title>
  391. </media:content>
  392. </item>
  393. <item>
  394. <title>&#8216;F&#8217; is for Feature</title>
  395. <link>https://martindonnellyblog.wordpress.com/2017/03/09/f-is-for-feature/</link>
  396. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  397. <pubDate>Thu, 09 Mar 2017 20:39:11 +0000</pubDate>
  398. <category><![CDATA[Uncategorized]]></category>
  399. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=58</guid>
  400.  
  401. <description><![CDATA[I want to add some more clarifications about IBM 9.0.1 FP8 in response to some blog posts that are out there.  Let&#8217;s start here with Oliver Busse&#8217;s posting: Feature Pack 8 is there &#8211; and here’s the trouble On first reading of this blog post I got the impression that FP8 will break your projects, but &#8230; <a href="https://martindonnellyblog.wordpress.com/2017/03/09/f-is-for-feature/" class="more-link">Continue reading <span class="screen-reader-text">&#8216;F&#8217; is for Feature</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  402. <content:encoded><![CDATA[<p>I want to add some more clarifications about IBM 9.0.1 FP8 in response to some blog posts that are out there.  Let&#8217;s start here with Oliver Busse&#8217;s posting:</p>
  403. <h2 class="lotusHeading"><a href="https://oliverbusse.notesx.net/hp.nsf/blogpost.xsp?documentId=2B3A">Feature Pack 8 is there &#8211; and here’s the trouble</a></h2>
  404. <p>On first reading of this blog post I got the impression that FP8 will break your projects, but on closer inspection, the errors displayed are caused by Java classes wrapping or extending Domino backend Java classes. The big scary Java dialog it shows is as follows <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  405. <p><img data-attachment-id="66" data-permalink="https://martindonnellyblog.wordpress.com/2017/03/09/f-is-for-feature/obusse-errors/" data-orig-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png" data-orig-size="810,333" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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="obusse-errors" data-image-description="" data-image-caption="" data-medium-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=300" data-large-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=810" class="alignnone size-full wp-image-66" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=1200" alt="obusse-errors"   srcset="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png 810w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=150&amp;h=62 150w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=300&amp;h=123 300w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png?w=768&amp;h=316 768w" sizes="(max-width: 810px) 100vw, 810px" /></p>
  406. <p>In order to ship new features IBM must often extend its backend classes to provide new APIs. I recognise a lot of the APIs called out in this screenshot because they are mostly the new ones added in FP8 to give you the capability of decrypting and encrypting documents.  If anyone has <em>built their own Java classes that extend those IBM backend classes</em> then, yes, to target FP8 you absolutely must account for any new APIs and provide an implementation &#8211; this is to be expected. IMHO this is also a fairly advanced use case that does not apply to the typical XPages developer.</p>
  407. <p>Anyway, as Oliver correctly points out, once that is done then your Java code will run fine on FP8. If you deploy that Java library to an older version of Notes/Domino and one of those new specific methods is called then you will get errors. Effectively what this really means is that if you try to decrypt or encrypt a document on older versions of Notes/Domino that don&#8217;t support it, it won&#8217;t work! This has always been true. For example, you cannot use features from Domino 9.0 in an app and have it run on 8.5.  The beauty of FP8 is that the &#8216;F&#8217; is for Feature and not just for Fix anymore. So if you use new FP8 features in your apps then they will not run on older versions of the platform.</p>
  408. <p>This segues quite nicely to a Domino Designer feature that helps manage versioning issues, but I often come across developers that are unaware of it. When you have an application open in Domino Designer take a look at the combo box in <strong>Application Configuration &gt; Xsp Properties &gt; General &gt; Minimum Supported Release</strong>. It looks like this:</p>
  409. <p><img loading="lazy" data-attachment-id="133" data-permalink="https://martindonnellyblog.wordpress.com/2017/03/09/f-is-for-feature/minxspversion/" data-orig-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png" data-orig-size="474,231" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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="MinXspVersion" data-image-description="" data-image-caption="" data-medium-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png?w=300" data-large-file="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png?w=474" class="alignnone size-full wp-image-133" src="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png?w=1200" alt="MinXspVersion"   srcset="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png 474w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png?w=150&amp;h=73 150w, https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png?w=300&amp;h=146 300w" sizes="(max-width: 474px) 100vw, 474px" /></p>
  410. <p>If you need to deploy an application to a server environment that differs from your development environment you can set the required release level here and have the application rebuilt accordingly. If your application uses any features beyond the release level chosen then it will be flagged as an error and you will need to take corrective action. As you can see, this feature has been updated to account for Feature Packs going forward.</p>
  411. <p> </p>
  412. <p> </p>
  413. <p> </p>
  414. <p> </p>
  415. ]]></content:encoded>
  416. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/anotherfp8update3.png" />
  417. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/anotherfp8update3.png" medium="image">
  418. <media:title type="html">AnotherFP8Update</media:title>
  419. </media:content>
  420.  
  421. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  422. <media:title type="html">mwdonnellyblog</media:title>
  423. </media:content>
  424.  
  425. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/obusse-errors.png" medium="image">
  426. <media:title type="html">obusse-errors</media:title>
  427. </media:content>
  428.  
  429. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/minxspversion.png" medium="image">
  430. <media:title type="html">MinXspVersion</media:title>
  431. </media:content>
  432. </item>
  433. <item>
  434. <title>Feature Packs Are Here</title>
  435. <link>https://martindonnellyblog.wordpress.com/2017/03/08/feature-packs-are-here/</link>
  436. <comments>https://martindonnellyblog.wordpress.com/2017/03/08/feature-packs-are-here/#respond</comments>
  437. <dc:creator><![CDATA[mwdonnellyblog]]></dc:creator>
  438. <pubDate>Wed, 08 Mar 2017 13:38:53 +0000</pubDate>
  439. <category><![CDATA[Uncategorized]]></category>
  440. <guid isPermaLink="false">http://martindonnellyblog.wordpress.com/?p=41</guid>
  441.  
  442. <description><![CDATA[Feature Pack 8 for IBM Notes/Domino has finally arrived and brings with it a slew of goodies for the Domino developer. From an XPages perspective alone, FP8 is loaded with the aggregation of all XPages Extension Library releases since 9.0.1 GA – that’s a total of 17 releases all rolled into FP8! Highlights from these &#8230; <a href="https://martindonnellyblog.wordpress.com/2017/03/08/feature-packs-are-here/" class="more-link">Continue reading <span class="screen-reader-text">Feature Packs Are Here</span> <span class="meta-nav">&#8594;</span></a>]]></description>
  443. <content:encoded><![CDATA[<p>Feature Pack 8 for IBM <a href="https://tinyurl.com/Notes901FP8">Notes</a>/<a href="http://tinyurl.com/Domino901FP8">Domino</a> has finally arrived and brings with it a <a href="http://www-10.lotus.com/ldd/fixlist.nsf/8d1c0550e6242b69852570c900549a74/26aa7417bb60f7df852580b40072af2d?OpenDocument">slew of goodies</a> for the Domino developer. From an XPages perspective alone, FP8 is loaded with the aggregation of all XPages Extension Library releases since 9.0.1 GA – that’s a total of 17 releases all rolled into FP8! Highlights from these updates include support for responsive apps through the inclusion of the Bootstrap framework (V3.3.7) along with a bunch of XPages wrapper controls and themes which make it both easy to work with and ready to go out of the box. More good news is that XPages now offers built-in support for relational data sources so your apps can integrate data from not only from Domino but also from most any RDBMS data store out there in a simple and consistent manner.</p>
  444. <p>Integrating the <a href="https://extlib.openntf.org/">Extension Library</a> releases also means that a lot of mini-features and fixes are now included – some of which of course came from you! That is to say, anything that was contributed by the community to the open source layer of XPages via <a href="https://www.openntf.org/">OpenNTF</a> is now part of the Notes/Domino 9.0.1 FP8 core.  And we hope to see a lot more of that in the upcoming feature pack releases!  But it’s not all about the XPages Ext Lib enhancements: new Domino core updates mean that document encryption via secret keys or public/private keys is now supported in XPages. Thus older Notes apps with encrypted documents can be modernized for the web for the very first time.</p>
  445. <p>And then there’s Domino Designer. All of the aforementioned runtime features need design-time tooling in the form of wizards, new controls, properties and preferences… and that’s all in there. So too is all of the Bluemix tooling, much requested features like SSJS editor support for managed beans, new extension points to support cool capabilities like Swiper, custom themes and so forth.  All of these merit in-depth blog posts in their own right and that will happen on this site over the coming weeks and months – so stay tuned – but for now let’s look at the story with Java 1.8 in this feature pack.</p>
  446. <p><strong>It’s Complicated</strong></p>
  447. <p>Well not really. Feature Pack 8 delivers runtime support for Java 1.8, which is to say that all Java-based things like XPages, Notes plug-ins, Java agents and so on, run in a Java 1.8 container. Cool!</p>
  448. <p>If you have installed Domino Designer however and you take a closer look at the Notes base folder you will actually see two JVM directories:</p>
  449. <blockquote>
  450. <pre><span style="color:#808080;">[c:\program files (x86)\ibm\notes]</span>
  451. <span style="color:#808080;">15/02/17  13:31             jvm</span>
  452. <span style="color:#808080;">15/02/17  13:31             jvm1.6</span></pre>
  453. </blockquote>
  454. <p>The 1.6 JVM is laid down by the FP8 installer and the Domino Designer JRE preferences are automatically configured to avail of it. It is provisioned because the version of Eclipse that underpins Domino Designer is too old to work with Java 1.8. Language changes, such as static interface methods, render the 1.8 JDK and the inbuilt Eclipse Java compiler (JDT) incompatible – ouch!</p>
  455. <p>Providing Java 1.6 for Domino Designer means that XPages, Java agents and other Java artifacts can continue to be built successfully but only to the same 1.6 compiler level we have already. Apps based on these will run fine in the 1.8 runtime container but for now it means they cannot take advantage of the latest Java 1.8 features. Remedying this problem requires an upgrade to the underlying version of Eclipse – no mean task – but those of you at IBM Connect would have seen this on the Notes/Domino roadmap as a Feature Pack 9 <strong>candidate</strong>. The plan is to upgrade Eclipse in order to enable Domino Designer to target Java 1.8 properly, at which time the JVM1.6 folder would be removed. All in all, this represents a staged delivery of the Java 1.8 upgrade, i.e. first runtime, then design-time. The two could not happen simultaneously without delaying the FP8 deliverable, which was deemed to be a bad trade-off.</p>
  456. <p>Of course upgrading Eclipse brings with it a whole other set of app dev benefits above and beyond just being able to use Java 1.8 features. There is the possibility of leveraging new code editors or dropping in ultra-modern Eclipse plug-ins to handle things like source control and the like. Now that’s something to look forward to!</p>
  457. ]]></content:encoded>
  458. <wfw:commentRss>https://martindonnellyblog.wordpress.com/2017/03/08/feature-packs-are-here/feed/</wfw:commentRss>
  459. <slash:comments>0</slash:comments>
  460. <media:thumbnail url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/dominoimages.png" />
  461. <media:content url="https://martindonnellyblog.wordpress.com/wp-content/uploads/2017/03/dominoimages.png" medium="image">
  462. <media:title type="html">DominoImages</media:title>
  463. </media:content>
  464.  
  465. <media:content url="https://2.gravatar.com/avatar/5820d9a102895a6b99c99f5f6bb34b34e5872a2aaf4541b6c43bdc1e4f3f9ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
  466. <media:title type="html">mwdonnellyblog</media:title>
  467. </media:content>
  468. </item>
  469. </channel>
  470. </rss>
  471.  

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=https%3A//martindonnellyblog.wordpress.com/feed/

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