Hands-on: Your first GraphNSF

With more people talking about the usage of Graph data modelling with data residing in IBM Notes documents there is still a threshold getting started writing your first XPages application using the concept or technology.

I had the opportunity to spend a day or two to setup a simple basic construction, document it and demonstrate and explain it to a couple of developers.

The document is available under the following link:

cover-document

 

Here is the table of content:

toc

The document walks through the setup of the implementation and several design elements for the application.

(Again) I have used the Teamroom application, because it’s common available for IBM Notes Domino. On top of the existing XPages application for a Teamroom I have added several XPages to have a simple app showing the Graph capabilities within the OpenNTF Domino API library.

The result of the tutorial is the option to import Notes data into a Graph DB and have a look and some interaction with it. Of course the end-goal is to get some insight in how to set up a basic construction and understanding of some core Graph terminology and how to translate this to an XPages application.

teamroom_graph

I hope it may help you and if you have questions or are interested exploring graph capabilities I am happy to hear from you!

Add 20 years of experience to your workforce

You can 20 years of experience within IBM Notes and Web development to your workforce by hiring me.

Interested? Read my curriculum vitae on LinkedIn: http://www.linkedin.com/in/patrickkwinten and get in contact.

I am happy to work WITH you !

 

 

Send a message from your XPage application to a Slack channel

Introduction

While everyone is ‘waiting in vain’ for the delivery of Project Toscana organizations have start using Slack as a modern way to send messages within departments.

For an example a operation team is using an instructions quality book build on XPages and it would be great to get notified in your Slack channel when new instructions come in or have been updated. Or you want to highlight a specific instruction just to create extra attention to it (e.g. an increasing number of incoming incidents).

slack_sample

Be creative with use-cases 🙂

Slack integration points

Incoming Webhooks are a simple way to post messages from external sources into Slack. They make use of normal HTTP requests with a JSON payload, which includes the message and a few other optional details described later.

JSON, HTTP request… this sounds doable with XPages! So what are the steps you must take?

Setup your integration

Go to http://yourteam.slack.com/apps/build/custom-integration and click on Incoming Webhooks, then select a channel or user you want to post your messages to.

Setup your message

You have two options for sending data to the Webhook URL above:

  • Send a JSON string as the payload parameter in a POST request
  • Send a JSON string as the body of a POST request

Simple message

For a simple message, your JSON payload could contain a text property at minimum. This is the text that will be posted to the channel e.g.:

payload={"text": "This is a line of text in a channel.\nAnd this is another line of text."}

You can decorate your message with text formatting. You will find descriptions in the custom integration page on Slack.

Message attachments

To display a richly-formatted message attachment in Slack, you can use the same JSON payload as above, but add in an attachments array. Each element of this array is a hash containing the following parameters:

{
	"fallback": "Required text summary of the attachment that is shown by clients that understand attachments but choose not to show them.",

	"text": "Optional text that should appear within the attachment",
	"pretext": "Optional text that should appear above the formatted data",

	"color": "#36a64f", // Can either be one of 'good', 'warning', 'danger', or any hex color code

	// Fields are displayed in a table on the message
	"fields": [
		{
			"title": "Required Field Title", // The title may not contain markup and will be escaped for you
			"value": "Text value of the field. May contain standard message markup and must be escaped as normal. May be multi-line.",
			"short": false // Optional flag indicating whether the `value` is short enough to be displayed side-by-side with other values
		}
	]
}

Send the message

With a simple post request you send the message in JavaScript:

function postMessageToSlack(url){
webhook_url = url;
payload= JSONStr;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', webhook_url, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(payload);
}

XSnippet

This whole approach I have added as an XSnippet on OpenNTF:

https://openntf.org/XSnippets.nsf/snippet.xsp?id=slack-integration

You can customize it to your needs. Basically I have a script block and a button on a custom control. Via the Property Definition tab you can set the desired values. In my example I am sending a message to a Slack channel about a picture / document in my Bildr application (shameless plug).

Here is how the message could look like:

sample_slack_message

Since my XPages app is running on a local development machine it is of no use to send sampel thumbnails of the page, but I could. This also refers to the user icon, which could be the icon of the application.

So grab the snippet and start integrating your XPages with Slack (untill Toscana arrives) !

FYI: I am not aware of any restrictions on the number of message you may send to Slack. Please let me know if you have details on this.

Add 20 years of experience to your workforce

You can 20 years of experience within IBM Notes and Web development to your workforce by hiring me.

Interested? Read my curriculum vitae on LinkedIn: http://www.linkedin.com/in/patrickkwinten and get in contact.

I am happy to work WITH you !

 

Stress testing with ODA Graph

I am very interested in Graph data modelling and with the Graph capabilities in OpenNTF Domino API I decided to setup some demo environments just to get my head around the subject and how you can implement it in XPages and use Notes data.

To my opinion reading Notes data in the Graph database structure can bring interesting new opportunities, far beyond what we can deliver with Views and Collections today.

Oliver Busse has provided a great starting point with his SUTOL demo application so I started with that one.

Besides the implementation and Graph capabilities I am also curious about performance.  So I run some tests on my working demo app. With the help with a simple agent I decided to be gentle and create a set of only 20.000 user documents.

The first test was about returning user profiles (nodes) matching certain properties (relations), presented in a repeat control. Below the list the time to load the filtered set is displayed.

stress01

stress02.JPG

When I compare the result with a normal view filter (by category or FT search) the results where a bit disappointing.

I also noted that navigating through the list was very slow (20 seconds or more returning a new set of rows of 10 documents). More than I expected I received timeouts.

stress03

The reason for this performance is still unknown. I guess there is no index created yet for the user node in the graph db structure. Why navigating through the list is so latent in performance is also a mysterie.

Nevertheless, my demo is up and running so expect more results on Graph in XPages with Notes data in the future on this blog.

Below are sampels of performance using the “traditional” FT search filter capacity in Notes. Notice the difference.

stress04.JPG

stress05.JPG

I would like to thank Oliver Busse for his guidance getting the demo app up and running and for explaining some basic concepts of the implementation.

 

 

 

 

My reflections of IBMConnectED

Yes, or ofcourse, I attended the IBMConnectED 2015 event in Orlando. First start with a summary of sessions I attended:

XPages Performance and Scalability
IBM Domino Applications on Cloud
IBM’s Mobile Collaboration Strategy and Portfolio
IBM ConnectED – A New Way to Engage
IBM Domino – 2015 and Beyond
IBM Domino Applications in Bluemix
The Future of Web Development – Write Once, Run Everywhere with AngularJS and Domino
Mastering Your Logs
IBM Domino App Dev Futures
There’s an API for That! Why and How To Build on the IBM Connections Platform
Yes! You CAN Use Those Cool New Frameworks in Your Mobile Domino Apps!
Considerations for the Cloud
Be Open – Use WebServices And REST In XPages Applications
IBM Domino Application Development – CHALK201
App Throwdown Winner’s Circle
GURUpalooza!
Responsive Application Development for XPages
Build Your Own Apps in Minutes Leveraging IBM Bluemix and IBM Connections
ConnectED Closing Session

That sounds like a lot but have we actually learned or heard something new out there?

IBM killed the master-classes

A class given by an expert to highly talented students

A class may be seen as a course of instruction. In previous editions a master-class tend to be a deep-dive into a subject, where you were taught from a beginner’s level to an expert level. A typical master-class extended the hour, due to the complexity or diversity of the subject.

Often this setup was already worth to attend the conference. However at the 2015 edition subjects where squeezed into a 45 minute time-frame and sometimes presented by an IBM-er so it became a sales pitch in disguise (IBM Domino Applications on Cloud).

When talking with other attendees I heard similar disappointments about the masterclass setup.

Oh my God they (almost) killed the Notes client

Lot’s of Verse at the conference, but the Notes client was mentioned very little. You might wonder if there is a roadmap for Notes?

If you look at the following picture you would think a new edition of the Notes client would appear in 2015:

ibm-connect-2013-messaging-and-collaboration-roadmap-43-638

 

So IBM Verse = Notes Next? I wonder why IBM is not able to tell about their plans for Verse on premise and if it is going to be the future Notes client and how native Notes applications will be delivered in this Verse client. I assume via the Notes browser plugin but the fact that IBM simply ignores these kind of important questions is a slap in the face of current customers to my opinion.

Application development on Bluemix

One of the scarce announcements on the event was the future delivery of XPages and Connections development on the cloud aka Bluemix. This is great and exciting news to my opinion! I understand IBM Notes team can not keep up with bringing new internet related services into their platform but by bringing the platform into an environment that is based on open standards like Bluemix those services will become available for us developers.

Exciting news! I was expecting to have Notes as a data-source in Bluemix but with XPages as a runtime environment this will bring the platform much closer to us.

Meet the developers

The opportunity to meet the developers behind the different products in the Connections portfolio is excellent so I stepped in with some questions of my own.

  • No we are not thinking about a development client for Connections, either make development in Connections easier than it is today :-/
  • No we are not thinking about an admin client for Connections, either try Domain Patrol Social by Infoware or the Connections Administration Toolkit by TimeToAct.
  • No clear roadmap for the social business toolkit. IBM is waiting for requests.

Nevertheless I got help/guidance with other development questions and it was nice to meet the IBM developers who normally help you on StackOverflow.

Application development future

There were some sessions about app dev futures but mainly they were summaries of the recent activities. OK you had Bluemix ofcourse and about responsive design via the Extension Library but nothing about a roadmap or exciting ideas for the Domino Designer client during this event.

Encryption in XPages

This was promised and demonstrated during the App Dev future session. Great & finally!

I would have rather heard about activities on features we do not have today:

  • secured local storage & synchronization (Darwino/Unplugged)
  • more mobile controls (the next billion web users are gonna be mobile http://time.com/3589909/internet-next-billion-mobile/)
  • technologies/modules behind Verse
  • Verse theme for app dev

Just to name a few.

Best session

A bit of a sensitive topic since people were throwing on stage what session they thought to be best. So I rather prefer to highlight the session I enjoy most.

Most enjoyable session

As criteria for my nomination I choose:

  • Presentation skills/confidence of the speaker
  • Topic skills of the speaker
  • Personal reflections of the speaker on the topic
  • Real world examples on the topic
  • Funny quotes / remarks on the topic

And the winner is….

Considerations For The Cloud – BP207
Best Practices
Chris Miller (Connectria)

Although I am not an admin guy (anymore) Chris managed to teach me a lot on moving to the cloud in a fast tempo with a lot of funny references.

Cookiegate, Project Chrome & more

I did not understand the twitter stream about people not having a Pretzel cookie in their lunch-box since I had one in mine. Or was I not to pick up a lunchbox with the label IBM-ers only on it?

Project Chrome held the twitter stream for a while. I am not aware of the outcome. Either that journalist is not to be taken serious any more or an amount of IBM-ers will face the beginning 2015 with a new perspective. Hopefully IBM is wise enough to send out the right type of people and within the Connections portfolio we do not suffer the consequences of it.

It was announced that you could pick up or register for a free certification voucher during IBMConnectED because there wouldn’t be a certification lab at the conference. I would like to thank Daniel Brix for chasing IBM ICS support together and to manage to register myself for such a voucher.

Counting the Notes client phrase

Out of curiosity I counted Tuesday the phrase “Notes client” in presentations. This was rare.

notes client counter

The session from Chris Miller came out as the winner in this ‘challenge’.

Final thoughts

I enjoyed my conference and be able to meet a lot of people with similar interests. From a developer perspective I think the conference was nevertheless a bit poor. I thought IBM would focus in this ConnectED version more on technology and less on softer sections like adaption. The app dev sections were too scarce to my opinion.

The move to more sessions in Swan with smaller rooms caused that some rooms were full and people could not attend it. It happened for me once for the session on internet security. You happen to pay an considerable amount of money for an event in, what IBM calls an intimate setting, and you cannot attend a session. How poor for return for your investment!

Should Notes client customers be uncomfortable about IBM Verse? From what I understood IBM Verse is just a different rendering machine for your inbox adding to features from Connections and Analytics. So it should not be a replacement for the Notes client. But the fact that IBM could not tell anything on the Notes client should worry you. IBM spilled another year on the Notes client roadmap it seems.

Jeff Schick may call he “loves the Notes client”. Is he willing to tell this hooked on a lie detector?

Icon UK (retrospect)

On the Friday 12th of September 2014, I attended the Icon UK in the IBM Southbank Customer Centre, London. This review is a bit late since the attendance was part of my vacation.

Achieving Developer Nirvana With Codename BlueMix

BlueMix is a platform for composing and running virtually any application in the cloud without having to worry about the hardware, software, and networking needed to do so. This means that developers can be left to do what they do best….CODE! By eliminating the need to deal with the infrastructure typically required to deploy an app to the cloud, and providing a catalog packed with services from IBM and its partners, BlueMix allows developers to get their apps in the hands of their users with the lightening speed, quality and innovation their users demand. It doesn’t matter if your next app is targeting web, mobile, or the internet of things, you too can achieve developer nirvana with BlueMix, and it all starts by attending this session!

Ryan Baxter explained and demoed Bluemix. Earlier I have watched some demo’s on YouTube (link 1, link 2, link 3) but a demo with some interaction with the crowd is always nicer.

The question ‘what is in it for me as a Notes specialist?’ was partly answered by Ryan. If I understood it correctly IBM is investigating the options how to integrate Notes with Bluemix. More information on this topic you can start to surface on Mark Roden’s post.

I was not able to attend the Bluemix hands-on workshop. I wonder if that material is still available somewhere?

The Unofficial FAQ for Connections Integration Development.

Developing Connections Plug-ins and applications is full of “What the??” moments, from what browser technologies and versions are supported through to common functions working in different ways in different parts of Connections, any of these can put a real dent in your delivery date but most are easy to cure and avoid with a little bit of hindsight and knowledge, here is that knowledge for you to take home and help you deliver on time.

Mark Myers talked about his experiences on developing and customizing IBM Connections. Shortly summarized: expect surprises.

The lazy administrator, how to make your life easier by using TDI to automate your work

IBM Connections can be the data source or the data destination for many other applications. In this session we will show you how you can use TDI to automate tasks like wiki page creation, maintain Community membership through a Domino application or how to use Profile data for Sametime Business Cards. Come and see how you can reuse data without any headache and how your Admin life gets easier by using TDI scripts.

Klaus Bild talked and demoed how you can use Tivoli Directory Integrator to automate tasks in IBM Connections. A video where Klaus demonstrates the usage of a Notes database to create the data for the assembly line for TDI you can find here.

It was nice to see IBM Notes can play a role in supporting IBM Connections.

Escaping the Yellow Bubble: experiences with rewriting a Domino app using AngularJS and MongoDB

If you haven’t lived under a rock, you probably noticed a huge trend in web application development: client side JavaScript frameworks to build your apps with, using REST APIs to connect to data stores. You probably also noticed that MongoDB, a NoSQL database, has been getting a lot of attention lately. Both technologies are adopted by more developers and companies every day. For a recent project we wondered what it would take to rewrite a well known standard Domino application using the MEAN stack: a combination of MongoDB (NoSQL database), Express (a NodeJS application server), AngularJS (a client side Javascript MVC framework) and NodeJS (JavaScript server). In this session I’ll share my experiences with that process and provide you with practical tips from a long term Domino developer’s perspective. As you might know, I got a lot of love for Domino and XPages, so this won’t be about bashing those. It’s all about keeping your eyes open for what’s happening outside the bubble.

Mark Leusink talked about alternative techniques for Notes and XPages. Although the technical alternatives are there I didn’t really get the impression they compete with a strength of Notes: RAPID APPLICATION DEVELOPMENT.

IBM’s Social Business Transformation

IBM’s leadership in social business software grew from internal roots – the adoption of collaborative technologies and practices inside the organization. In this session, Ed Brill – VP IBM Social Business Transformation – will describe how IBM has adopted a culture of participation, and the practical business benefits from becoming a social business.

Biggest news from Icon UK: Ed Brill is back at ICS? Probably one of the smallest audiences Ed Brill presented in front of, but it was great to hear ‘social’ is still in his veins. Probably the hardest part of social transformation is getting people participating. It is understandable that people are reserved in ‘dare to share’ when business future is under movement.

From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Libraries

You’ve built up standard controls, resources and SSJS/Java libraries you use in your applications. Surely there’s a better way than copying and pasting from NSF to NSF? We’ll show you best practices for setting up a development environment, how to build your code into an OSGi plugin, demystify the XSP Starter Kit, and show how to test, debug and deploy your plugin efficiently.

Paul Withers talked and demoed how to create an OSGi plugin. I am not sure if I followed it all the way.

Thank you

Icon UK had a pleasant atmosphere. Besides the presentations it was nice to meet people who share the same interests. I would like to thank especially Martin MeijerKnut Herrmann and Vanessa Hutchinson. Hope to CU at another event 🙂

Update

On youtube Ryan Baxter demonstrates how to use Domino Data in Bluemix apps: http://www.youtube.com/watch?v=322NPTgUS7E.

New app in town: Rooms & Connections

This post is for all you IBM Notes users:

I assume you all have experienced the problem of finding an available room when you register a new entry in your calendar. Especially with spontaneous meetings it is frustrating not be able to find a room, and if you check at the physical location the room seems to be empty.

You have then the option to start/open your laptop, open one or more the resource reservation applications and find out who has booked the room, contact the person and ask if he/she really needs the room at the moment OR dive in the room and sit uncomfortable because people could appear later and you have to find another room and start the meeting from scratch.

Those days are over! 

The Rooms and Connections app is an indispensable tool to find room information via your smartphone or tablet or book a room.