Busy, busy – But wait: There is help!

For the last year and a half I have been very busy with different projects, and this blog had to be put on the back burner. And no, despite a number of blog posts about Microsoft Flight Simulator, I have actually not had much time to play it, less than 10 hours since it was released last August. But this leads me to today’s topic: tools that can help you save time.

As a Notes/Domino developer, administrator or power user, you often need to go deeper into the Domino database. This could be tasks like finding and resolving replication contacts, look closer at the fields (including hidden fields) in a document, or quickly locate all documents of a particular type, or matching a particular criteria that you don’t already have a view for. As an administrator you maybe would like to keep several Domino consoles visible side by side, so you can watch what is happening on all your servers at the same time. As a developer, what if you could copy the design of a view or an action bar to numerous other views to make all views look consistent, without having to edit and update every single view manually? Things like that makes your life easier and makes you more efficient, but you don’t have that in the native product.

One set of tools that stands in a class by itself is EZ Suite from Ytria. The EZ Suite tools are extremely powerful, and there is no way I will be able to cover all of them in one blog post. I will focus on some of the functions that have been useful to me, and even with that limitation I have to split this up in multiple blog posts.

The first tool from Ytria I ever tried was scanEZ. We had some issues with a database at my old work (I don’t remember the details anymore), so we purchased a time limited version of scanEZ. I think it was valid for a week, enough for us to salvage the documents in the database. My boss thought the tool could be useful in the future, so he immediately purchased a full license of it for himself. Eventually he purchased a license of EZ Suite for me, and I made frequent use of the tools, both while doing development and server administration, as well as when I had to troubleshoot database issues or replication conflicts.

You can purchase the full suite , or one of several bundles of tools geared to different types of users (developers, administrators or developer with some administration needs). Each tool can also be purchased individually.

The latest version is EZ Suite 20. This version contains a number of new functions and enhancements. Since I haven’t used the tool in the last couple of years, after my license expired, I have not been keeping up with all the new features, but as always Ytria is supporting the latest version of Notes and Domino.
Disclaimer: Ytria generously provided me with a license for the latest version, but I was previously a paying customer, and I have recommended their products for many years.

Let’s start with the first tool from Ytria I was ever exposed to, scanEZ. This tool makes it possible to explore a Domino database in depth, not only the documents but design elements, settings and even deletion stubs (the remains of deleted documents used to delete the document in replicas). Fields can be added, deleted and their content can be changed. You can even change the data type of a field, as well as many other attributes.

In scanEZ you can also look at and modify profile documents and replication conflicts, which often comes in very handy. But there is also a dedicated Conflict Solver tool within scanEZ. It will analyze the database, which can take a little bit of time, but then you can compare the conflict document with the parent and see which fields differs. This may even help you figuring out how the conflict was created, and how you can prevent that in the future.

This only scratched the surface of what scanEZ is capable of. I have not even mentioned the different ways to view and analyze data. You can for example dynamically categorize the documents through drag-and-drop, and even present the data in charts, thanks to the extensive capabilities of scanEZ.

The next tool I want to mention is consoleEZ. The easiest way to describe it is the Domino server console on steroids. You can view multiple consoles simultaneously, and also see a list of the tasks running on them. Your console commands are saved, and you can view them later if you like. It has many features you wish were in Domino Administrator out of the box, and even more features you did not even know you wanted.

You don’t have to be a hard-core administrator to appreciate consoleEZ. It was first released about six years ago, so it is one of the latest additions to EZ Suite. It quickly became one of my favorite tools.

I do quite a bit of modernization of Notes and Domino applications. Often this involves web enabling them, including creating a modern UI using HTML, CSS, and often a framework like Bootstrap. But there are still many Notes databases that works well, and instead of rewriting a lot of the existing logic for the web, a refresh of the Notes client UI is sufficient. This often involves adding a nicer background to the action bars, as well as changes to the views. Just a few small changes can make a huge difference, and make an old application look fresh again.

But even after you come up with a nice, more modern looking design, you have to duplicate it across all the action bars and views in your application. This is where actionBarEZ and viewEZ comes in. Those two tools makes it a breeze to apply a design to many action bars or views or copy the design from one view/action bar and apply it to any view or action bar you want.

Using actionBarEZ you select a number of view, pages or form, and change the properties across all the elements just like you would have done in Domino Designer, but there you can only make the changes on one view, form or page at a time. But the function I found the most useful function is that you can design a nice action bar in one view, then select that design and with the click of one button apply it to any views, forms or pages you like. This has saved me countless hours of work. The functionality of viewEZ is pretty much identical.

Stay tuned for the next part to be published in the next few days.

2 Comments

HCL Volt – A real life use case

The first update to HCL Volt is now available for download. In version 1.0.1 there are a number of improvements, so if you already have Volt installed, get this update from Flexnet. But this post is not about the technical details of Volt. No, it is an example of how I used the product the other day to quickly put together a small application to help with a very specific task.

Last month my wife and I went on a trip to Estes Park in Colorado, where we enjoyed sleeping with open windows, enjoying the fresh cool mountain air. We started talking about getting an RV, to allow us to leave the Texas heat during the summer. My wife started doing some research on different camping trailers, but soon there was too many models, weights, dimensions and features to keep track of easily. I started to create a spreadsheet in Excel to keep track of everything, but a few minutes later I realized I had a much better tool available: HCL Volt.

I started my browser and went to the Volt Application Manager, where I created a new application by importing the Excel spreadsheet I had started on.

Within a few seconds I had the beginning of my application. I added some additional fields, for example to upload images of the floorplans and to store links to the manufacturers webpages with more information.

It took me about 10 minutes to put the whole thing together. I sent my wife the links, and she logged in and started entering data, as she was researching. A little bit later she asked if it would be possible to add some more checkboxes to the list of features I had created. I gave her the access to modify the application, showed her where she needed to go, and she fixed it herself without me having to show her anything. That’s how intuitive Volt is!

We now have a simple but functional tool to record details about any camping trailer we find, and where we can later go back and review the different alternatives.

There is even a built-in summary page where we can see statistics of the different trailers. This is created automatically from the data entered, no code needed. As a matter of fact, I have not written one single line of code in this application.

This is just one example of how you can create a useful application in a few minutes. But don’t take my word for it. Try it yourself for free, no download required!

If you want to get this very affordable add-on product to HCL Domino, contact your HCL Business Partner.

3 Comments

HCL Volt – A new Leap for Domino!

This Monday HCL released HCL Volt for Domino, their entry into the no-code/low-code market. This is a tool that allows the non-developers (a.k.a. Citizen Developers) at a company to build their own applications without having to write any code at all. Later the application can be enhanced with code, perhaps by someone in IT, but a power user, or even a regular user with some knowledge of Excel will quickly feel at home in Volt.

Volt for Domino requires a server with Domino 11 or higher, but the user and developer only needs a web browser, no development tools needs to be installed.

I have created a short video where I am demonstrating how you in a few minutes can take a spreadsheet someone sent you and automagically transform it into a real database application, without one single line of code!

Please let me know what you think about the video, it is my first attempt in this format. I was originally planning comments as voice-over, but I was unable to get my microphone to be loud enough. So I decided to put my comments as sub-titles instead.

 

4 Comments

Domino 11.0.1 is available!

HCL has released Domino 11.0.1, which includes updates to not only the server but also the Notes and Designer client.

So what is new? The version number makes it sound like this is just a version with bug fixes, but nothing could be further from the truth. There are a number of improvements and new capabilities, including new functions as well as enhancements in Domino Designer. Let’s take a quick look at some of the most interesting new functionality.

Part of your entitlement is a Docker-compatible image of Domino 11.0.1. It is available for download through the HCL Licensing Portal (FlexNet). HCL Domino 11.0.1 is pre-installed on this image, which allows you to deploy Domino server containers very quick and easy.

You can now register multiple Active Directory users using the Directory Sync feature, the Domino web server supports Server Name Indication (SNI) and there is support for Subject Alternative Name (SAN) in X.509 certificates. There are also enhancements to DAOS tier 2 storage, where you can move attachments to AWS for longer term storage.

SwiftFile, a tool that automatically sorts incoming mail into different folders based on the content is now finally integrated into the client, not a separate add-on as previously. The administrator can disable SwiftFile through a setting in notes.ini.

A new Java Runtime Environment is also included, as well as an updated version of MarvelClient Essentials from panagenda.

There are some changes to the underlying software used to import and view attachments.

On the security side, the Notes client can now use 128-bit AES for local database encryption, and new Notes IDs must have 1024-bit keys (or stronger).

For my fellow developers out there I want to mention the new method CreateDocumentCollection in the NotesDatabase class. Finally a native method, no more need for a hack to get an empty document collection. There are also improvements to DQL (Domino Query Language), for exaple numeric and date-only terms in queries. A new version of AppDev Pack is also released, version 1.0.4, where domino-db now supports rich text items and running agents in Domino databases.

Your can real more on the HCL Domino Blog.

0 Comments

Keep up with COVID-19 though Domino!

Are you are suddenly sitting at home with nothing to do, due to the corona virus COVID-19? You can’t go to the gym. You can’t go to your favorite computer store to browse all the latest hardware and plan for your next water-cooled build. You can’t go out to eat.

But what you can do is to try out some of the new functionality in HCL Notes and Domino. Today I started a little project where I try to incorporate a number of the latest and coolest functions in a simple but useful application. I hope to be able to create several blog posts about this project over the next few days.

I came up with the idea for this app when someone sent me a link to a web page where information about COVID-19 is aggregated from all US states. I thought it was a neat page, but then I noticed that they have a public API where the numbers are served up. Now things started to become much more interesting! This is what the JSON data looks like:

[
  {
    "state": "AK",
    "positive": 6,
    "negative": 400,
    "pending": null,
    "death": null,
    "total": 406,
    "lastUpdateEt": "3/18 16:30",
    "checkTimeEt": "3/19 15:12"
  },{
    "state": "AL",
    "positive": 68,
    "negative": 28,
    "pending": null,
    "death": 0,
    "total": 96,
    "lastUpdateEt": "3/19 10:45",
    "checkTimeEt": "3/19 15:15"
  },{
    "state": "AR",
    "positive": 46,
    "negative": 310,
    "pending": 113,
    "death": null,
    "total": 469,
    "lastUpdateEt": "3/19 11:23",
    "checkTimeEt": "3/19 15:16"
  },{
    "state": "AS",
    "positive": 0,
    "negative": null,
    "pending": null,
    "death": 0,
    "total": 0,
    "lastUpdateEt": "3/14 00:00",
    "checkTimeEt": "3/19 16:18"
  },{
    "state": "AZ",
    "positive": 44,
    "negative": 175,
    "pending": 130,
    "death": 0,
    "total": 349,
    "lastUpdateEt": "3/19 00:00",
    "checkTimeEt": "3/19 15:18"
  },{
    "state": "CA",
    "positive": 924,
    "negative": 8787,
    "pending": null,
    "death": 18,
    "total": 9711,
    "lastUpdateEt": "3/19 14:25",
    "checkTimeEt": "3/19 15:20"
  }
...

So what could I do with this data? Why not bring it into a Domino database to start with, and then retrieve the data on a schedule, say every hour?

We should then be able to chart the data for each state over time. In order to not store the same data over and over again, I want to check if the data has been modified since the last time the agent ran. I will just use the lastUpdateEt date and time stamp in combination with the state abbreviation to perform a lookup. If I get any result(s) back, the data was already stored.

So how do you read the JSON from the API? In the past I would have used my own HTTP Request class, but this is not needed anymore. This is thanks to the NotesHTTPRequest class, first introduced in Domino 10 and then improved in Domino 11. In Domino 11 the wizards at HCL in Chelmsford added classes to parse JSON. The NotesJSONNavigator is the base of the parser, then you use NotesJSONArray, NotesJSONObject and NotesJSONElement to traverse through a JSON payload. When you get the hang of it, this is much easier than it maybe sounds at first.

So let’s take a look at my code. This is a scheduled agent, running once an hour:

%REM
  Agent Retrieve Data
  Created Mar 19, 2020 by Karl-Henry Martinsson/DBS
%END REM

Option Public
Option Declare

Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim view As NotesView
  Dim http As NotesHTTPRequest
  Dim json As NotesJSONNavigator
  Dim element As NotesJSONElement
  Dim stateArray As NotesJSONArray
  Dim state As NotesJSONObject
  Dim response As Variant
  Dim url As String

  Set db = session.CurrentDatabase
  Set view = db.GetView("LookupExisting")
  Call view.Refresh()

  Set http = session.CreateHTTPRequest()
  url = "https://covidtracking.com/api/states"
  response = http.get(url)
  Set json = session.CreateJSONNavigator(response)
  Set element = json.GetFirstElement()
  Do Until element Is Nothing
    Set state = element.Value
    Call processState(state, db, view)
    Set element = json.GetNextElement()
  Loop
End Sub

Function processState(state As NotesJSONObject, db As NotesDatabase, view As NotesView)
  Dim doc As NotesDocument
  Dim col As NotesViewEntryCollection
  Dim values List As String 
  Dim element As NotesJSONElement
  Dim key As String
  Dim value As String
  Dim stateName As String
  Dim lastUpdate As String 

  Set doc = New NotesDocument(db)
  doc.Form = "StateData"
  Set element = state.GetFirstElement()
  Do Until element Is Nothing 
    key = element.Name
    value = element.Value
    If key="state" Then
      stateName = value
    End If
    If Right$(key,2)="Et" Then
      lastUpdate = Format$(CDat(value),"mm/dd/yyyy hh:nn AM/PM")
      Call doc.ReplaceItemValue("lastUpdated", lastUpdate)
    Else 
      Call doc.ReplaceItemValue(key, value)	
    End If
    Set element = state.GetNextElement()
  Loop
  Set col = view.GetAllEntriesByKey(stateName+"^"+lastUpdate)
  If col.count=0 Then
    Call doc.Save(True,False)
  End If
End Function

This is all the code you need. Yes, I am serious. You can now consume any data on the web, served up by any system with a REST API, straight into Domino, with just a few lines for code.

The NotesHTTPRequest is very straight forward, so there is not much to say about it. But the classes used to parse JSON may need some explanation.
You start with the NotesJSONNavigator. You then use the value property of the NotesJSONElement class to get a value, an array or an object. The array or object is put into a NotesJSONArray or NotesJSONObject object, and you can then traverse down into the JSON structure. This is very powerful and useful, we have all been asking IBM for this functionality for many years. Now HCL delivers!

I created a hidden view for the lookup to avoid the same data stored multiple times. It only contains one (sorted) column, which is used by the lookup:

That is pretty much it.

I also created a view to display the data:

Soon we will do something more fun with the data. I will just let the scheduled agent run for a while and build up my database first. Keep your eyes open for the next post about this project!

4 Comments

Call 32-bit COM Objects from 64-bit Domino

We all know that when you upgrade your Domino environment from 32-bit to 64-bit, any COM objects you use will not work anymore. You thn need to get and install a 64-bit version of the COM object.

But what if there is no 64-bit version? Do you have to stay on 32-bit Domino forever? Or rather, stay on Domino 9.x, since Domino 10 (and probably also the upcoming version 11) are 64-bit only.

Perhaps not. I found this article that describes how to use a 32-bit COM object in a 64-bit environment, like Domino 10. I have not had time to test it myself, but I will probably try it this weekend.

Read all the details at https://techtalk.gfi.com/32bit-object-64bit-environment/.

2 Comments

HCL has impressed me!

It has now been just over four months since it was announced that HCL would purchase the IP (intellectual property) of Notes, Domino, Sametime, Connections, Verse, Traveler, and several other products from IBM.

When the announcement was made in 2017 that HCL would take over development and support of Notes and Domino, many IBM:ers with long experience of developing the products moved over to HCL. I talked to several of them back then, and also at the Factory Tour in July 2018. The excitement was amazing to see, it took me back to the days of Lotusphere in the early 2000’s. They were all very excited about the new opportunity to create new functions and expand/modernize the products. Very quickly the development of Domino 10 took off.

Another thing that impress me is how HCL seeks feedbacks from customers and business partners. Even as HCL is hiring on a large number of new developers, there are still limitations on what they can accomplish. It is very clear that they want to build a product for the customers, and they need to know where to focus their development efforts.  HCL and IBM held a number of jams during the first half of 2018, both online and physically around the world, where customers and business partners could give feedback on functionality and priorities.

On October 10, 2018 Domino 10 was released, with many of the improvements requested implemented. Some additional functions, like the support for node.js, were released a few months later.  I think the decision not to rush out everything is the right one. As a developer, I want all the functions right now, or even better yesterday. But at the same time, I want it to work properly. HCL has done a good job at balancing this, at least this far. I want HCL to continue working this way.

The development of Notes and Domino 11 has already started. As a matter of fact, HCL started working on that version even before Domino 10 was released. Several Domino 11 jams have been taking place already, withmore to come. Version 11 will focus on the client, while version 10 had the focus on the server and development functionality. But we developers have things to look forward to in Notes 11 as well.

One of the items IBM and HCL have been talking about is low-code/no-code rapid development. This is something that we are promised to be available in Domino 11, as a browser-based development environment. It would bring the power of Notes and Domino development back to the “citizen developers”, allowing regular business users to be able to build custom applications/solution without writing any code. This used to be a strength of Notes in earlier versions, but in the late 1990’s IBM moved the development functions from the regular Notes client into a separate IDE, Domino Designer. This took away the ability for regular users to build their own solution, and made them have to rely on the IT department or dedicated developers to build applications. Bringing this back would give a new generation of users access to this powerful platform.

I think it is very important that the new low-code development functionality work seamlessly with traditional Domino development, like HCL is aiming for. Imagine a user in the accounting department who comes up with an ide for an application that would improve their efficiency. The user begins to build a simple application using the Domino low-code/no-code environment. Perhaps a form or two, some simple views and a simple workflow. The development is done in a sectioned off part of the server, as the regular users don’t have access to create database/applications in the general Domino data location. Data is then loaded though an import from an Excel spreadsheet,

When the first iteration of the application is done, the user shows the result to the CFO, who loves it. But there are a couple of functions that would be nice to have, like integration with another, existing Domino application. This is something that the IT department and their developers need to handle. So the application is handed over to them. IT takes a look at the application, and either leaves it in the end-user area on the server or move it over to the general data storage. The assigned developer then opens up Domino Designer or perhaps even Visual Studio Code, and add the code needed. The developer only spends a fraction of the development time previously needed, as the end user already built much of the infrastructure of the application. Another benefit is that the developer does not need to collect requirements for how the full application needs to work, only the small part they are modifying/adding.

The application is updated, and the users can start using it. The IT manager is happy, as the developer only spent an hour or two on the project instead of a couple of days, and can now be moved on to the next project. The CFO and end-users are happy because they got their application built quickly, without having to wait for IT to get the bandwidth to develop a complete application, and they can improve their efficiency and get more done quicker.

If HCL can deliver a low-code/no-code solution like this, perhaps with data storage not only in Domino .NSF files but also with connections to other data stores like perhaps SQL and Mongo DB, this could be an amazing collaborative development platform, where end-users and professional developers work together on improving the application landscape of their company.

I can’t wait to see what HCL delivers later this year!

 

 

 

0 Comments

#DominoForever – Release Day

Finally it is here, the new version of IBM Domino. After the world premiere yesterday in Frankfurt, the world-wide launch is taking place today.

The focus in this release is on application development and administration. Features like self-healing of databases and increase of the maximum database size to 256 GB are among the most popular with administrators, while developers have a number of exciting additions.

The two most talked about features are the new Domino Query Language and node.js integration with Domino. Domino Query Language has been written from the bottom up to be fast, and the demonstrations I have seen confirms this. It is fast, very fast! And it can handle searches that would not only take a long time to create in earlier versions of Domino, but would take forever to run. Now the result comes back in a second, or even less. This really blew my mind when I first saw it earlier this year. John Curtis, the engineer that pretty much single handed wrote this code, did an amazing job, fully on par with when Damien Katz rewrote the formula language in ND6 and increased the performance several times over.

The second big feature of Domino 10 is the integration with node.js through the domino-db connector. It will be delivered in a separate application development pack, which will enter beta this week. This is a slight disappointment, I had been hoping this functionality would be available at the launch. But I rather wait the time that is needed for IBM and HCL to make it a fully stable product, instead of rushing something unfinished to the market.

Another product announced today was Notes for iPad, which makes it possible to run existing Notes applications unmodified on an iPad. All the functions we know and love are supported, like replication, offline access to applications, Lotusscript, Formula language, and more.

To support mobile Notes applications, there are enhancements in Lotusscript, for example camera and GPS support. Lotusscript has also been extended with other new classes, for HTTP requests and JSON parsing directly in native Lotusscript. No need to call Java or system API:s anymore!

HCL has done an amazing job in a short time, and Domino is on its way to become a very powerful and extendable platform for modern web development. A company can now not only deploy their existing business applications on iPads, they can also hire young developers who have experience of node.js and modern frameworks/libraries like Angular and React, and have them develop new solutions that can access existing data in Domino databases. Why use Mongo DB for data storage, when you have the much more secure Domino server available?

Domino 10 is not the end point. Domino 11 will be out next year, and IBM/HCL have committed to a long future for Domino. Forget #domino2025, now it is #DominoForever!

If you were not able to attend any of the launch events, here is the live stream from Frankfurt :

https://m.facebook.com/story.php?story_fbid=310707186390803&id=111720058922703

1 Comment

I’ve Seen Things You People Wouldn’t Believe…

This last week about 50 other specially invited people visited HCL America in Chelmsford, MA for a tour of their Collaboration Workflow Platforms (CWP) office. I was one of the lucky ones, and for two days we got to meet many of the engineers at HCL and see what they were working on around Notes and Domino. There are some parts that are under NDA, but I will talk about what I am allowed to mention.

We got to play with the latest build of Notes 10, compiled that same morning. It included some of the new Lotusscript classes we have heard about before, like the NotesHTTPRequest class and NoteJSONParser class. That functionality had just been added in right before our visit (it is not available in the private beta that was released a few weeks ago), but when I tested it (yes, we got to play with the code right there!) it worked perfectly.

This is a testament to the skills of the HCL developers. Most of them came over from IBM, and you probably know many by name. But there were also new-hires, and HCL is looking to fill many more positions in the US. The investments HCL is doing in this is impressive, and the whole atmosphere was extremely positive and filled with excitement.

We were split up into smaller groups and were treated to a number of very interactive presentations of the directions taken in different areas. The biggest focus was on application development, and with the addition of support for node.s to the platform and the new classes in Lotusscript, the engineers were visibly excited to be able to show off what they have accomplished.

The HCL developers have the right to be excited and proud. We were treated to two major announcements. The first one is a new extremely fast query language called DGQF (Domino General Query Facility). It is not an add-on, but part of the core code. It will be available in Notes/Domino 10, and can be called from everywhere, using Lotusscript, Java, Formula, and Javascript. Initially the searches can be made only in one database at a time, but in the future there will be support for multi-database searches.
At CollabSphere 2018 in just over a week, there will be presentations on DGQF. If you have’t registered yet, do it now. You don’t want to miss this!

The second announcement is under NDA for now, but I would expect for something exciting to be announced at CollabSphere, as well as at later conferences like ICON UK in September.

So stay updated by attending user group conferences during the fall, leading up to the release of Domino 10 at some day in some month, who may or may not contain a 10. I am very excited about the future of Notes and Domino!

 

0 Comments

End of content

No more pages to load