Skip to content

Index

My Development Tools - Part One: Domino and XPages

I've recently had a new laptop. Since I last had an upgrade of hardware a lot has changed. Back then, I think my development tooling was Domino Designer, a Domino server, and possibly SourceTree. Now the software I needed to install was much more significant. So now is a good time to cover that.

IBM Connect 2017: Embrace Fear

This Is Not a Vendor Pitch

When I began my personal blog last year, I was investigating new technologies beyond the IBM Collaboration Solutions stack. This last week I've been attending and presenting at the conference, including covering one of those new technologies. The experience for me has changed drastically the direction I was heading. But this is not about a vendor's products, this is about the open source technologies I intend to pursue over the next year.

Graph Database News

Last year I blogged about an initiative to take TitanDb to the Apache Foundation as an incubation project. Yesterday, the next step for TitanDb was announced, when the Linux Foundation welcomed JanusGraph, a project which uses TitanDb as its starting point. The current documentation will look familiar to anyone who has investigated TitanDb, but the news will be welcomed by the TitanDb community. So it's worth keeping an eye on the JanusGraph website.

Creating a Java API to Access Watson Work Services

A few weeks ago, IBM announced Watson Workspace, the final name for Project Toscana, and its API Watson Work Services. The product itself has similarities to Slack or Microsoft Teams, but this post is not about discussing a comparison of the products. It's about the API backing it.

Watson Work Services is a REST API that uses GraphQL, a method of querying and posting via REST that focuses on configurability. Whereas traditional REST services have fixed endpoints that take fixed parameters and return fixed data objects, GraphQL is a sort of "API-as-a-service". You call an endpoint, pass a JSON object determining what elements of which data you want to return, include any dynamic variable values. The queries are passed to an engine at a REST service endpoint which parses the JSON passed, replaces any variables with the dynamically passed values, and returns just what the application or user asks for. This may include data from what, in a traditional REST API application, would be from different REST endpoints. For example, to get members and messages from a space, you might need to make a REST call to get the space ID, then another REST call to get its members, and a third to get the messages.

Mixing web.xml and Annotations

Over the last few months a lot of what I've had to do has come from combining frameworks. Usually one of those frameworks is Vaadin. But whenever you're combining frameworks of any kind, it usually means some content is pre-configured, which may conflict with settings in another framework. If you're not familiar with the framework and the technologies in use, it's a lot like looking at hieroglyphics without a Rosetta Stone! The result is a lot of learning on the job.

Making Progress (Bars)

Earlier this week I had problems with high CPU utilisation and had to restart my PC. I took the opportunity to bite the bullet and install some Windows Updates. What I saw brought my mind back to UX and coding of applications. For at least five minutes, the progress displayed as "100% Complete". It prompted me to issue the following tweets:

How To Impress A Technical Evangelist

I've been involved in developing training materials, tutorials, videos, online documentation and even books. So I've gained a full appreciation of the effort involved in not only creating good documentation but maintaining it too. Rene Winkelmeyer wrote a good blog post today about developer experience and his points are very valid.

Over the last couple of years I've seen a number of approaches as I've dug into a variety of new technologies.

Taking Titan to the Next Level

Since earlier this year when I started trying to get a better handle on the breadth of graph database options available for a developer, Titan has been an option I have kept in regular contact with. It's fair to say there has been a lot of uncertainty about the prospects for Titan. But there have been some interesting developments regarding Titan during the summer. IBM Graph has reached GA on Bluemix, albeit with only REST access, which may not appeal to Java developers, particularly those familiar with Titan and comfortable with natively handling vertices and edges. And more recently there has been a lot of work on integrating Titan with ScyllaDb, which provides a long-term option for using Thrift as a communication mechanism between Titan and the backend database.

Why Graph?

The bulk of my experience with application development has been building workflow-related rich client and web applications on NoSQL databases, typically IBM Domino. The challenge in the Notes Client was to provide dashboard-style displays and a good way to display documents for action by the current individual. Private views can be used, but impact database performance. So, typically, the approach is to display views that present a scrollable table of data. Domino's document-level reader security is then used to ensure only the appropriate data is visible. If data is archived appropriately, performance of the database is good enough for many reasonably-sized applications. (Of course, archiving is often omitted from scope of the first phase for the rapidly-developed application, and becomes a case of "out of sight, out of mind".) But with the increasing prevalence of web applications replacing Notes Client applications, the ability to display "my documents" and use structured searches to display a targeted subset of documents was much easier.