| Recent Blog Posts
[INFOGRAPHIC] Managed Application Hosting for your Domino Application|
Mon, Apr 27th 2015 1:57p Paul Withers
The post [INFOGRAPHIC] Managed Application Hosting for your Domino Application appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
[VIDEO] Managed Application Hosting for your Domino Application|
Mon, Apr 27th 2015 12:42p Paul Withers
The post [VIDEO] Managed Application Hosting for your Domino Application appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
Pushing Changes to Java Agents|
Thu, Apr 23rd 2015 7:36a Paul Withers
In more recent projects I’ve written my agents in Java. Although it meant copying some code across (and in some cases, rewriting it a bit because the agents were not using OpenNTF Domino API), it helped keep muscle memory.
However, I encountered some strange behaviour when refreshing design of the databases. LotusScript agents were fine, XPages were fine, XPages Java code was fine. But changes were not picked up on agents.
It turns out refreshing design does not work for updating Java agen
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part Three)|
Thu, Apr 16th 2015 8:25a Paul Withers
In the previous two parts I covered the background of XOTS, using a basic tasklet to return a result, and using a basic tasklet to run a background task allowing the user to continue working with the application while the background task completed.
In that example the background task did not take a huge amount of time, so it might be worth waiting for the task to complete. But it was iterating over all the states and getting a list of names for contacts in those states. Wouldn’t it be more
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part Two)|
Wed, Apr 15th 2015 9:15a Paul Withers
Yesterday I blogged introducing where we are with XOTS in OpenNTF Domino API, plus a short example about how to create a tasklet and call it. The example was a bit “hello world” – why would you want to call a tasklet to get the current username, when it’s possible and much easier to do that directly in your XPages code?
But it gave the basics of creating a background tasklet and accessing the outcome immediately. So let’s go further with an example that runs a backg
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part One)|
Tue, Apr 14th 2015 8:13a Paul Withers
OpenNTF Domino API has provided a number of significant enhancements. One of the more recent is XOTS. As its name suggests, XOTS brings together XPages and DOTS.
At this point I think it’s worthwhile backtracking and giving some background on DOTS, which many XPages developers will not have utilised. DOTS came in with 8.5.3 and runs within OSGi to allow code that is outside of the NSF to run and return a response, but still interacting with NSFs. The (only officially supported) implementat
Engage, Graphs, CrossWorlds and Vaadin|
Wed, Apr 8th 2015 6:46p Paul Withers
Last week I delivered a session at Engage with Daniele Vistalli entitled Jedi and Sith: OpenNTF Domino API and CrossWorlds. The session covered different aspects related to developments within OpenNTF Domino API over the last year, one of which Nathan T Freeman covered in greater depth during his session entitled The Graph Revolution. It finally brought together a variety of new techniques into a demo application: the Tinkerpop extension within OpenNTF Domino API to bring graph databases to Domi
New Release of Extension Library, Including MapPicker and CollectionPicker|
Thu, Mar 26th 2015 6:30a Paul Withers
This week IBM released the twelfth 9.0.1 release of the Extension Library. It’s great to see the inclusion of mapValuePicker and collectionValuePicker tags. That has proved the completion of a journey almost two years in the making, since I first blogged a tutorial series on doing this, back in May 2013. At the time they were just Java classes used to compute the value of the dataProvider. They were then submitted onto XSnippets, again as Java classes to compute the dataProvider. With some
Managed Beans, Scopes and Lifetimes|
Mon, Mar 23rd 2015 6:27a Paul Withers
A colleague asked me last week about the managed beans and whether a requestScoped bean would be loaded for every request. It’s something I had inadvertently already proved but forgotten. It’s always worth clarifying though and of relevance to more than just managed beans, but anything defined in the faces-config.
All objects defined in the faces-config are defined as a variable name mapping to a class. So for a managed bean like this:
IBM Connections 5 Cumulative Refresh 2 New Functions and Fixes|
Fri, Feb 27th 2015 12:30p Paul Withers
The following information was published by IBM on 24th February 2015. The information is only available in a restricted wiki, so we’re reproducing it here.
IBM Connections 5.0 CR2 includes new functions that may be optionally used or enabled by making changes to the configuration files.
IBM Connections 5.0 CR2 includes new functions that may be optionally used or enabled by making changes to the configuration files. This document lists each function, along with a brief des
Adding Themes to XPages Dojo Charts|
Fri, Feb 27th 2015 9:59a Paul Withers
However, when trying to add a different theme last week, I found the code I have used previously didn’t work. This comprised creating a new instance of dojox.charting.Theme on the fly, assigni
A Case of Case|
Mon, Feb 23rd 2015 11:19a Paul Withers
We all know that XPages URLs are case sensitive. So for a page “Domino_ViewState.xsp”, you cannot use “domino_viewstate.xsp”.
However, what’s not so widely known is that the URLs are only case sensitive after the first character. So both “Domino_ViewState.xsp” and “domino_ViewState.xsp” will work for opening the XPage. However, although both will work, there can then be problems with functionality that uses those values as strings.
One of tho
[INFOGRAPHIC] HCM – Hindsight or Insight?|
Sun, Feb 15th 2015 8:41p Paul Withers
The post [INFOGRAPHIC] HCM – Hindsight or Insight? appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
Scoped Variables, Implicit Variables and Repeat Controls|
Thu, Feb 5th 2015 7:29a Paul Withers
Last week I spoke with Tony McGuckin at IBM Connect. This blog post is explaining a problem I had recently, the cause, the investigation and the resolution two possible resolutions. All relate to content I covered in that session, particularly around the JSF lifecycle. It’s also why the JSF lifecycle is something I always cover at the very start of the Troubleshooting XPages element of the XPages training course I’ve developed and delivered for Intec.
The problem was I ha
IBM ConnectED 2015 Session Slides|
Mon, Feb 2nd 2015 5:10p Paul Withers
Last week I delivered two sessions at ConnectED. Here are the session slides.
MAS103 XPages Performance & Scalability
BP106 From XPages Hero To OSGi Guru: Taking The Scary Out Of Building Extension Libraries
The post IBM ConnectED 2015 Session Slides appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
IBM ConnectED (Not Lotusphere) Reflections|
Thu, Jan 29th 2015 12:01p Paul Withers
It’s been a busy week as always. So now the dust has settled here are a few thoughts.
No Matter What Changes, The Community Persists
Our community is an awesome thing, often mentioned with envy by those working outside what was ICS and is now ESS (Enterprise Social Solutions). Over recent years there have been some notable exceptions at our January event. I think we’ll have to wait some months, if not longer, to see the impact of the structural changes within IBM. And IBM are yet to
IBM ConnectED 2015|
Wed, Jan 21st 2015 8:10a Paul Withers
In just a short few days, fellow IBM Champion Tim Malone and myself (Paul Withers) will be heading off to IBM ConnectED. With one less day but just as much to do, it’s likely to be even more hectic than ever. Here’s a summary of things I intend to be involved in.
OpenNTF Domino API / CrossWorlds
One of the key aspects for the week for me is to touch base with the OpenNTF Domino API team and particularly get up to speed with CrossWorlds. CrossWorlds was a new project that came into be
Single Copy XPage Design and Development Best Practice Challenges|
Tue, Jan 6th 2015 5:15a Paul Withers
For the first time I’ve got an application that would benefit from Single Copy XPage Design. The challenge is how to develop that in a way that can best be managed via source control and deployed through development, test and live environments. That’s because, unlike design inheritance, Single Copy XPage Design is set in Domino Designer, in the Application Properties, on the XPages tab.
There are two issues here:
The literal path is stored in the design, so all environments need to
SourceTree and Git/Mercurial: Important Information|
Fri, Dec 19th 2014 8:09a Paul Withers
For anyone who has used the slides from my Show and Tell on source control in January or the subsequent NotesIn9 episode, the recommended Git / Mercurial client was SourceTree. It’s an excellent tool for those who prefer a GUI and runs on Windows and Mac. The advice at the time was to use the embedded Git / Mercurial. For most XPages developers, who were only pushing and retrieving files via SourceTree, that was adequate.
However, overnight I became aware of a security vulnerability with G
XPages OSGi Plugins 3: Configuring for Domino|
Wed, Dec 17th 2014 2:12p Paul Withers
The next step is to configure it for work with Domino. Thankfully, Nathan Freeman has done a great job at making it very easy to do so. I’ll go through the installation first and then explain what’s set. You need to download and install XPages SDK for Eclipse RCP project from OpenNTF into Eclipse. This is an Update Site, something else Domino Developers should already be familiar with. The only difference is that instead of File > Application > Install, you select Help > Ins
XPages OSGi Plugins 2: Installing the IDE (Eclipse)|
Wed, Dec 17th 2014 1:38p Paul Withers
The recommended IDE (Integrated Development Environment) for looking at plugins is Eclipse. You can open them in Domino Designer, but I prefer to keep my development environment clean – I have enough Notes Applications and On Disk Projects there, without confusing the matter further. Plus, if you’re looking to debug them, Eclipse is a better place from which to do that.
Eclipse can be installed on Windows, Linux or MacOS. Its versions are based on alphabetical names, so the latest is
TLS Workaround for Firefox|
Thu, Dec 11th 2014 9:32a Paul Withers
Earlier this week I was prompted to upgrade Firefox and I’m now on 34.0.5. Suddenly I was unable to access some Domino servers and got this message when connecting via https:
Needless to say, this is not going to be a problem with Domino 9.0.1 FP2 IF2. But for some projects I need to develop against older versions of Domino. There is a workaround, though the caveats regarding security should be raised.
In the address bar, type “about:config” and press enter. You will be warne
CKEditor Keyboard Shortcuts|
Wed, Dec 10th 2014 11:24a Paul Withers
One aspect in which browsers are significantly poor compared to rich client applications like the Notes Client is in keyboard shortcuts. WAI-ARIA roles exist for specific areas of a page, like navigation. But browser manufacturers seem to have done nothing to help those who prefer to (or have to) use the keyboard instead of the mouse. Keyboard shortcuts exist, but only for the browser menus, not for content within the browsing container. Similarly I’m not aware of any standard functionalit
XPages OSGi Plugins 1: An Introduction|
Thu, Dec 4th 2014 1:49p Paul Withers
Recently I’ve realised that for all the host of materials there have been on XPages, there are not the same amount of materials for OSGi Plugin investigation. John Dalsgaard and John Cooper have blogged some, but most of the blogs tend to focus on building plugins. Indeed that’s also the focus of my upcoming session with Christian Guedemann at IBM ConnectED.
But that doesn’t tend to be the way I’ve learned things. I tend to look at examples, pick them apart, see what they
Intec’s IBM Champions Renewed|
Thu, Dec 4th 2014 1:44p Paul Withers
It’s great news that both myself and Tim Malone have been renewed as IBM Champions for 2015. I’ve been an IBM Champion every year since 2011, but I still strive to be an active member of the community. My involvement has ramped up significantly since I started blogging in 2009 and it’s a pleasure to work for a company that supports my community involvement so enthusiastically.
Tim may not be as visible to Domino developers or administrators, but he has become more visible speak
Speaking At IBM ConnectED|
Fri, Nov 28th 2014 2:17p Paul Withers
Yesterday I heard that I was accepted for two sessions for IBM ConnectED at the end of January. They are:
Title: XPages Performance and Scalability
Conference/Track: Track 7: Master Classes
Speaker(s): Tony McGuckin; Paul Withers
Abstract: This session by Tony McGuckin and IBM Champion Paul Withers is a deep dive on key aspects of the XPages application development framework which will enable you to tune your applications for optimal performance and scalability for any given use case. Learn h
OpenNTF Domino API: New Release and Serializing Databases / Documents|
Wed, Sep 3rd 2014 6:12a Paul Withers
Nathan has uploaded a new release of OpenNTF Domino API. There are a few significant differences in the upload this time.
Firstly there is a separate install for Designer Client and Domino Server. That’s to minimise the footprint for the server. Those who have used M4.5 may have noticed the Javadoc support was lost, because we were packaging org.openntf.domino as a jar and incorporating that in the plugin. That meant Domino Designer “couldn’t see” the source files, from w
Why My XPages Buttons Are Only Ever “Buttons”|
Fri, Aug 22nd 2014 8:15a Paul Withers
Buttons in XPages are interesting and potentially dangerous elements. They’re dangerous, mainly to less experienced XPages developers, because they have this apparently helpful combo box that immediately attracts the eye for Button type.
Cancel is useful, but to be honest I never set that. All it does, if you look at the source pane, is set immediate=”true”. Based on the level of understanding I’ve got now of tuning events, it makes more sense to set that on the Events
Quick Tip to Quickly Jump To Where You Need to Work|
Mon, Aug 18th 2014 6:12a Paul Withers
Moment of most celebrated enlightenment usually comes from putting together a frustration with a piece of knowledge gleaned for a completely unrelated reason. A couple of days ago I had such an epiphany.
Often when I’m developing I need to check something somewhere else on the XPage or Custom Control. Or I need to add a custom property to a Custom Control, for which I need to position the cursor on the xp:view element of the Custom Control in order to see the Custom Properties panel. But I
10 Reasons All Companies Should Use Open Source|
Fri, Aug 15th 2014 6:12a Paul Withers
After one of my sessions at IBM Connect I was approached by a developer whose company would not use open source. The comment made me despair more than a little and has festered for some time. I’ve used code and projects from OpenNTF for many, many years before subsequently contributing to OpenNTF. Obviously as a contributor to and now director of OpenNTF my personal opinion on whether or not open source should be used is clear. Not allowing your developers to use open source is like expect
The Perils of getColumnValues().get(0)|
Sun, Jul 20th 2014 4:12p Paul Withers
Bill F posed a good question on StackOverflow about the issue of object.recycle and when to use it. It’s un understandable question and one I hit years ago after crashing a server looping through 20,000 documents in a search. I raised a PMR, got a response directing me to technotes on recycling in Java. Searching help, wikis and other places gave me no documentation on recycling in SSJS, which gave me reason to believe I was the first to hit the problem in XPages. So I blogged about it at
XPages Build Project Investigations Improvement|
Wed, Jul 9th 2014 7:15a Paul Withers
Some time ago I wrote about how you have to build twice if you have Build Automatically switched off, then open an application in Designer and make a change – the first build was incremental.
Just to revisit, I would always recommend having Build Automatically switched off unless you’re in an instance of Designer that can only ever have access to a local Domino server or local applications. Building a database remotely is not quick. Building a database has been known to break it if t
Triggering an EventHandler from Another Button|
Tue, Jul 8th 2014 7:15a Paul Withers
Today there was a question on StackOverflow about how to trigger an eventHandler of control A from control B. I knew I’d done it before, but couldn’t remember where and couldn’t find where I’d blogged on it. So here is the way I originally did it and the better way.
The Padawan’s Way
Once you start going to the source pane, you see much more than you do in the Design pane. One of those things you see is that you can click on an xp:eventHandler component and you see
What Happens When An XPage Loads?|
Wed, Jul 2nd 2014 4:11p Paul Withers
There have been a few questions lately on StackOverflow trying to troubleshoot activity during the initial page load. So I thought I’d write a post to try to clarify the process. This certainly helps me pre-empt some functionality and provides an explanation for some of the questions I’ve seen. Using code from Jesse Gallagher’s XPages Scaffolding in projects has really helped give me this understanding, so I’d like to give Jesse a shoutout for his work.
ViewHandlers and C
10 Steps to deploying a successful social business platform Step 10 – Dismantle delivery team|
Mon, Jun 16th 2014 1:12p Paul Withers
If all has gone to plan, then a point will be reached (between two–three years on) where it is sensible to dismantle the delivery team and to replace them with platform managers from the different de-partments as the collaborative community matures.
This does not necessarily mean that personnel who worked in the delivery team are no longer required, but rather that the role will have changed from a design and development role to a second line platform support and maintenance position.
10 Steps to deploying a successful social business platform Step 9: Now paint the bridge from the other end|
Mon, Jun 16th 2014 1:12p Paul Withers
With an established group of champions and leaders in place and 2nd wavers starting to make use of the platform, the delivery team can now look at the next phase of the platform development and follow many of the steps completed above. In terms of the next phase, much will depend on the nature of the business and its priorities. That said, there are today a number of digital developments that all companies will be obliged to evaluate:
Social media integration with social business;
Document Wrappers, Combo Boxes and Blank Fields|
Fri, Jun 13th 2014 7:12a Paul Withers
In a recent project I’ve extended the document wrapper Tim Tripcony showed in his NotesIn9 series on XPages and Java. Previously I’ve just used the dominoDocument datasource on the XPage. Today I was battling with a problem when editing a document that had been created in Notes. I was getting the very helpful message “Validation Error: Value is not valid”, with no help on which field it was referring to.
I eventually tracked it down to a Combo Box. On the underlying docum
10 Steps to deploying a successful social business platform Step 8: Use platform analytics to inform next action|
Fri, Jun 13th 2014 6:12a Paul Withers
Just as there is no real ‘go live date’ for a collaboration platform, there is also no end of project date. The collaboration community grows and needs to be maintained at all times. With most 2nd wavers now on the platform, usage and interaction will mushroom and this is the point where the delivery team needs to be able to gather platform analytics which they can share with the business and which will inform their next actions.
So, for example, an HR initiative around talent management can
10 Steps to deploying a successful social business platform Step 5: Identify champions and leaders|
Wed, Jun 4th 2014 8:15a Paul Withers
As a result of the immersion workshops the delivery team will be pleasantly surprised to see natural platform champions and leaders emerge. These are people who are either regular users of networking technology in their private lives (champions), or they are people who can immediately see the business benefits to be gained from this way of working (leaders).
Identifying and ‘recruiting’ these people to help develop the company’s collaboration goal is the number one priority of the delivery
10 Steps to deploying a successful social business platform Step 7: Roll out in phases|
Wed, Jun 4th 2014 8:15a Paul Withers
There is no definitive ‘live date’ for a social business platform. With both 1st and 2nd wavers it is necessary to develop it in stages. After all, these people will be busy with their respective jobs and the time that they can devote to the platform in the early stages will vary enormously. This is the art of the community manager – the ability to work with users to identify a few simple business tasks that can be performed solely in the platform. They should then assist the business to c
10 Steps to deploying a successful social business platform Step 6: Seed content in consulted structure|
Wed, Jun 4th 2014 8:15a Paul Withers
Working with the 1st wavers, the delivery team can begin to create the platform structure that will increase chances of successful adoption. They should decide how many communities there needs to be, which ones will be private, and which ones will be public. They should cover a range of house-keeping topics and should agree best practices based on the specific company culture for things like tagging conventions, user profiles, blogs, wikis, and file sharing.
Most important of all, however, is th
A Cool Use for Component’s Binding Property|
Tue, Jun 3rd 2014 8:15a Paul Withers
A few months ago Tim Tripcony blogged about a component’s binding property which was followed up with a NotesIn9 episode. On Tim’s blog, Jesse Gallagher asked if it had led to any cool app-structuring breakthroughs.
While preparing some XPages training materials, I realised there was one cool use of a component’s binding property that is very powerful. And it’s actually been around for quite some time without us really realising it.
With the Extension Library, there is th
Enabling Enums in a Value Picker|
Mon, Jun 2nd 2014 7:15a Paul Withers
Last week Jesse Gallagher blogged about using enums in a combo box. For those who are not familiar with enums, if you’ve started using Java it’s well worth reviewing the article where I covered them.
Thankfully I was involved in a chat around that topic with Jesse and Nathan. I had previously written code to create an ArrayList from an enum, because I was using an enum for options for my Keyword documents. But Jesse’s solution is far more elegant, not least because it uses the
10 Steps to deploying a successful social business platform Step 4: Run immersion workshops (NOT training sessions)|
Thu, May 29th 2014 6:12a Paul Withers
With the social business scenarios in place it is time to share these with the rest of the organisation and gather feedback. This is best done by running what I like to call ‘immersion workshops’. These are relaxed, informal sessions where users can try out the platform (with the guidance of the delivery team) by logging in under fictitious names and working through a number of carefully designed tasks.
It is important to differentiate these workshops from traditional training sessions. You
10 Steps to deploying a successful social business platform Step 3: Use social to deliver social|
Thu, May 29th 2014 6:12a Paul Withers
Once the important decision to create a dedicated delivery team has been made, the important thing is for the team to ‘drink its own champagne’. This means ‘using social to deliver social’ by creating from day one a private community in the platform to discuss and plan the roll out of the platform to the rest of the company. This necessarily entails a rapid weaning off of email for the delivery team’s communication with each other. By doing all their work in the social business communi
10 Steps to deploying a successful social business platform Step 2: Create a dedicated delivery team|
Wed, May 28th 2014 11:11a Paul Withers
Unless and until an organisation creates a budget for a dedicated social business delivery team, user adoption will wax and wane and eventually tail off. The delivery team is a group of people (roughly 1 for every 1000 employees) who work full time on the user engagement and sustained adoption challenges relating to the roll-out of a social business platform.
The delivery team will have ownership of the collaboration platform to begin with. They should work directly with all the organisational d
10 Steps to deploying a successful social business platform Step 1: Culture Shift|
Mon, May 26th 2014 4:12p Paul Withers
Understand your culture in terms of collaboration and create a social business strategy that is in harmony with it. Simply making the technology available to employees is not enough; in fact it is a recipe for failure.
70 % of social business deployments are failing today due to the lack of a social business strategy.
Creating a truly open and vibrant collaboration culture takes time and it is not easy. Let’s be clear, in terms of organisational impact, social business will have a bigger impac
Collaboration culture – Solving the user adoption challenge|
Fri, May 23rd 2014 6:11a Paul Withers
Before we can discuss how organisations get their employees to meaningfully engage with a collaboration platform (user adoption), we need to briefly address the question of why collaborate at all?
Fortunately we are in the middle of a perfect storm in terms of both organisational and consumer shift. The digital technology that we use to do our jobs and to run our personal affairs is dove-tailing at speed. And this is making it easier by the minute for people to understand the social business imp
Java getAllDocumentsByKey / getAllEntriesByKey Problem With Doubles|
Tue, May 20th 2014 6:11a Paul Withers
I try to avoid using the word “bug” too freely, because those who live by the word “bug” may die by the word “bug”! After all, we’re software developers whose own software may include bugs. Use the word freely and we can’t complain when others also do.
But a little while ago I was battling a strange problem which I’ve been able to isolate. I was using getAllDocumentsByKey, passing a Vector comprising a String, a Double and another Double. (To
Tim Tripcony: A Brilliant Intellect and A Great Personality|
Mon, May 12th 2014 4:12p Paul Withers
As many others in the community, I am devastated at the tragic news from Scott Hooks of the passing of Tim Tripcony. I first met Tim in person some years ago at BLUG, although I had since co-hosted an episode of The XCast in which he appeared and he had already contributed many comments on my blog. Tim’s infectious personality and his audacious willingness to push the boundaries of XPages was bound to impress anyone. And when I learned that this guru who was already living deep in the bowe
Understanding XPages Views|
Fri, May 9th 2014 7:12a Paul Withers
Over the last few days my understanding of views and an XPages display of content has become much clearer. I don’t think I’m the only one who has confused the boundaries between the various moving parts and not fully understood the granularity involved. But the objects all have a clear place and function, and when you break down what’s being specified where, it’s all very logical and sensible. At that point, expectations become more realistic. The three elements are the
DataViews and Nested Repeats|
Thu, May 8th 2014 7:12a Paul Withers
The DataView is an extremely powerful control that was added with the Extension Library. I was never a huge fan of the View Control. It was limited in its datasources and layouts. But the DataView accepts any datasource, provides a nice out-of-the-box layout as well as allowing flexibility with facets. Unsurprisingly it took up a large portion of Chapter 7 (which I wrote) in the XPages Extension Library book.
But a couple of times now I’ve come across errors when nesting repeats within the
Fully Understanding Rendered Property and Components With Events|
Wed, May 7th 2014 5:11p Paul Withers
Some time ago I posted about the number of times the rendered property gets calculated during the JSF lifecycle and the benefits of partial execution. (One caveat is that I haven’t re-tried that since 8.5.x, so more optimisation may have been built into the XPages runtime engine.)
One way of optimising calculations in the rendered property is to ensure they are not run during other phases of the lifecycle. I have always been a little confused about why it is calculated so many times. The a