Recent Open-Source Project Updates  

By Jesse Gallagher | 9/7/24 10:01 AM | Development - Notes / Domino | Added by Roberto Boccadoro

I've released a spate of open-source project updates recently, and I figured it'd be good to round up what's new. Most of them are utilitarian in nature - mostly fixes for things that crop up with Domino 14 and Java > 8 - but the first one is larger.

Radomly removed JAR resources: the reason   

By Oliver Busse | 9/6/24 6:50 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Remember my last post about Domino Designer just randomly removing JAR resources from the NSF? I first thought it was something with the ODP and Git but I was wrong. It turned out that you don't even have to work with an ODP or even Git to run into this problem. The real cause of this is still unclear, I add this to the various hiccups of Domino Designer that we all got used to. There's a solution....

Issue with old Domino JAVA agent  

By Patrick Kwinten | 8/29/24 11:37 AM | Development - Notes / Domino | Added by Oliver Busse

I got the request to extend the summary report in the email message that a scheduled Domino agent is sending out. In the report some lists of missing data in the database needs to be added so users can work more efficient. So what do we do?

XPages to Web App Redux: 2  

By Paul Withers | 8/21/24 6:45 AM | Development - Notes / Domino | Added by Roberto Boccadoro

XPages to Web App Redux: Part Two - Dev Tools Many Domino developers may not have used anything other than Domino Designer. We’re stepping into a different world of development here. So we’ll be using different tools. Plural.

XPages to Web App Revisited: Part One - Introduction  

By Paul Withers | 8/19/24 7:47 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Many years ago I wrote a series of blog posts on the topic of XPages to web app. At the time my target technology was Vaadin running in an OSGi plugin on Domino HTTP server (initially) and then CrossWorlds - Daniele Vistalli’s innovative approach to use Domino data via OpenNTF Domino API on a Websphere Liberty server running as a sidecar to Domino. My experience of developing with Vaadin lagged behind the technology, because it quickly evolved not only to Java 8 (and undoubtedly beyond) but used annotations which required Servlet 3.0. Today there are a variety of options for web application. Adjacent to Domino is Jesse Gallagher’s JakartaEE approach. Domino REST API can host applications as well. Frameworks like Angular and React have gained prominence. JSP is still seen in some places, but seems to have slipped from prominence. But after my session at Engage with Stephan Wissel, and particularly the rapid evolution of browser support over the last few years, my target is traditional web, hosted in Domino REST API’s server.

Domino REST API Proxy Problems  

By Paul Withers | 8/1/24 6:36 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Earlier this week I was working with Domino REST API for a personal project and encountered what appeared to be a bug. It was a very strange issue, but one that had a simple cause that was ultimately easy to verify. In this case, Domino REST API’s `/lists/{name}’ endpoint was resulting in unexpected results. For certain views on the server I was using, e.g. a view with a name “vwFoo” was returning expected results. But for hidden views, e.g. “(luKeys)” I was getting a 405 “Method Not ALlowed” error when accessing via Postman.

Domino RESTAPI Bug and WorkAround  

By Keith Brooks | 7/31/24 6:47 AM | Development - Notes / Domino | Added by Roberto Boccadoro

This is not my usual line of thought as an Admin, but sometimes, AdminOps is better than DevOps because troubleshooting is not an exact science. While customers over the last year or so have been asking about the HCL Domino REST API, my reply is usually something like, I can install it, but you are on your own afterward, or I point them to a Developer friend. To be fair, HCL will help them/me with getting started or "where is/How do I" questions. But this is about the bug my client and I discovered and how to work around it.

Pretty-Printing JSON in the (Desktop) Notes Client and Domino  

By Jesse Gallagher | 7/29/24 3:21 AM | Development - Notes / Domino | Added by Roberto Boccadoro

In the OpenNTF Discord (join if you haven't!), Daniel Nashed brought up a task he was facing: in the Notes client, writing pretty-printed JSON. LotusScript has its NotesJSON* classes that can process JSON in their stark way, but the stringify output is meant for machine reading and doesn't include whitespace and line breaks, making it ill-suited for things like configuration files or other things a human might read or edit. Since the goal is to get it working in the full Notes client and not Nomad, Java is on the table, but Java - for dumb historical reasons - has no proper built-in JSON library. However, as of 12.something HCL shunted IBM Commons down to the global classpath in order to support the "share Java design elements between XPages and agents" feature. Among many other things, IBM Commons includes a JSON library that can suit. I wrote a post almost a decade ago talking about this library and its limited nature, but it's nonetheless less limited than the LotusScript classes, and it's up to the task. There are a couple ways to go about this, depending on your needs, but for now I'll just cover the basic case here of "I have a string of JSON and want to format it".

Pretty-Printing JSON in Notes Client and Domino  

By Daniel Nashed | 7/29/24 3:20 AM | Development - Notes / Domino | Added by Roberto Boccadoro

The Lotus Script class for reading and writing JSON is that easy. There are not many examples and some functionality is missing. JSON can be either condensed without any new lines and indentation. That's great when you use it for back-end processing or REST services. Why is pretty printing important But in some cases you need pretty formatted JSON. Specially when you want to maintain it manually and extend it. For example for Domino OTS JSON files :-) When you use JSON based configuration pretty printed JSON is very helpful. Condensed JSON is also difficult to check into Git. Everything looks modified when it is a single line.

Developing for Research  

By Paul Withers | 7/25/24 1:30 AM | Development - Notes / Domino | Added by Roberto Boccadoro

It’s been nearly five years since I joined HCL Labs, progressing currently to Associate Director - Research. In that time I’ve been involved in: setting up HCL’s Open Source Project Office researching the state of rich text editing on the web (as I covered in a session at Collabsphere in 2020) leading the modernisation of language, extensions and tooling of LotusScript as VoltScript integrating VoltScript into Volt MX Foundry as a first-class language adapter web components and a variety of other projects This has covered some degree of coding in a variety of languages and frameworks. But there are significant differences between traditional product-focused development and development for research. And it’s useful to highlight those differences, because it takes a certain mind-set and skill-set.

Mindoo - Demo application for Domino JNA Views to play with  

By Karsten Lehmann | 7/18/24 11:42 AM | Development - Notes / Domino | Added by Serdar Basegmez

Today I attended the "Developer Variety Hour" webinar of OpenNTF and did a demo of the new Virtual View API of Domino JNA. I built a small web application that combines a Sunburst diagram (taken from the D3 website, enhanced by a training session with Anthropics Claude AI chat :-) ) with a categorized view, built on top of a Bootstrap 5 table.

Multiple emails control for Xpages  

By Patrick Kwinten | 6/20/24 3:29 AM | Development - Notes / Domino | Added by Roberto Boccadoro

For a project I received a request to enable to enter multiple emails in a field. These emails are not all registered in the Names & Address Book (NAB) but they come from a 'concurrent' email system e.g. helpdesk@domain.com or groupXYZ@domain.com so a standard names picker was no option. I feared already a support nightmare without any entry validation, because the field was going to be used to send notifications. Here is the list of requirements: Easy to write email. Display of default value(s) or default list options (provided by the application). Support to enter multiple emails. Easy to remove email(s). Validation of the provided emails.

Mindoo - The pain of reading data as a Domino developer - and solutions  

By Karsten Lehmann | 6/20/24 3:04 AM | Development - Notes / Domino | Added by Serdar Basegmez

On my endless path of reinventing the wheel regarding Domino APIs, my latest adventure has once again led me to find efficient and powerful ways to query Domino data. For many years, this topic has been a pain point for me. Back in the IBM Design Partner program, I wrote many entries in the discussions database, asking IBM core development for better and faster ways to read Domino data.

NoSQL schema design  

By Stephan Wissel | 6/10/24 1:31 PM | Development - Notes / Domino | Added by Roberto Boccadoro

NoSQL schema design - A question that pops up frequently in developer discussions is 'how to structure your data in a NoSQL way?'. To shed a light on this, we have a look at the approach invented 50 years ago and still an all time favorite.

XPages JEE 3.0  

By Jesse Gallagher | 6/10/24 1:29 PM | Development - Notes / Domino | Added by Roberto Boccadoro

Today, I uploaded the release version of 3.0.0 of the XPages Jakarta EE Support project. It's been proving stable in my use since the last beta, and so I think this is as good a time as any to release it properly.

Classic Domino and HTML 5  

By Jesper Kiær | 5/28/24 8:21 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Sometimes a simple web application based on classic Domino is in place. However Domino has not been updated in this area for many years. If you create a form and use it on the web it will create a very old HTML document type. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> In 2024 you probably want to use HTML 5 and some of the newer features in it. Fortunately you can change it to HTML 5.

XPages JEE 3.0 Beta 4  

By Jesse Gallagher | 5/23/24 10:43 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Earlier today, I uploaded beta 4 of XPages JEE 3.0 to GitHub. I've been taking a slow approach to this release due to its "breaking changes" nature, but I think it's just about ready for release. Domino 14 Like previous betas, this release requires Domino 14 (and Notes 14 for development), since it moves to a baseline of Jakarta EE 10, which in turn requires Java 11. Doing this let me get rid of some extra shim code that was needed to support both Domino 14 and previous versions, and also let me move to some newer language constructs. If you're interested in the sorts of things that the new versions of Java brought, check out the OpenNTF webinar from April, where I talked about just that.

Quick Tip: Did you know? DDE uses .gitignore  

By Oliver Busse | 5/23/24 10:42 AM | Development - Notes / Domino | Added by Roberto Boccadoro

ne thing I recently found out is that Domino Designer respects the .gitignore of your on-disk-project (ODP). In general it’s obviously helpful that this file is respected in your local repositories and with your favourite git client. I wasn’t aware though that Domino Designer also uses this file to decide whether or not to import a resource from the ODP into the NSF.

Development Containers - the fine print  

By Stephan Wissel | 5/13/24 4:30 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Development Containers are supposed to liberate your development environment from a specific local installation, like container technology liberated your runtimes (a.k.a YAMLed them into Docker or Kubernetes). Development != Runtime Containerization for development has some overlap and quite some difference to containerization for production:

Adventures in AI  

By Paul Withers | 5/2/24 9:23 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Those who were at Engage will have seen some of the experimentation I’ve been doing with AI in the context of VoltScript. In the OGS Jason demoed how I used it to provide code for a loop, correcting it with information about APIs specific to VoltScript. Before my VoltScript session, I showed two videos demonstrating how I’ve used AI to add value to the VoltScript coding experience, firstly by checking unit tests for code coverage and then by checking code complexity of functions in VoltScript Collections.

My slides from Engage 2024  

By Heiko Voigt | 4/30/24 2:15 AM | Development - Notes / Domino | Added by Oliver Busse

Hello, here are my slides from Engage about Building an app with ChatGPT using the HCL Domino REST APIs.

Running MkDocs in a container  

By Oliver Busse | 4/18/24 11:40 PM | Development - Notes / Domino | Added by Roberto Boccadoro

I recently used mkdocs again, the lovely documentation framework which comes with several useful plugins, nice styling and built-in PDF and static website generation. Sometimes it is a bit tricky to get everything installed on your machine to make in running, such as Python 3 and several add-ons, so you may want to run it inside a container.

Maven build with multiple Java versions   

By Stephan Wissel | 4/17/24 4:02 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Imagine, you are tasked with maintaining a Java application that needs to run on more than one Java version. You want to ensure that it compiles, tests and builds on all of them. This is our story, buckle up, there are a few moving parts

The iPhora Journey - Part 8 - Flow-based Programming  

By Richard Moy | 4/17/24 3:58 AM | Development - Notes / Domino | Added by Roberto Boccadoro

As developers, most of us create applications through the conscious act of programming, either procedural, as many of us old-timers grew up with, or object-oriented, which we grudgingly had to admit was better. This is true whether we are using Java, LotusScript, C++ or Rust on Domino. (By the way, does anyone remember Pascal? When I was in school, I remember being told it was the language of the future, but for some reason it didn't seem to survive past the MTV era). But in the last decade, there are some new developments in the programming world that we need to take into account... and no, I'm not talking about AI.

Simplifying the Maven Build of the NSF File Server Project  

By Jesse Gallagher | 4/11/24 5:13 AM | Development - Notes / Domino | Added by Roberto Boccadoro

When working on NSF File Server project that I talked about the other day, I took a slightly-different tack as far as building it than I did in the past, and I think it's worth going over some of that in case it's useful for others.

Eclipse Java Debugging  

By Paul Withers | 3/22/24 4:24 AM | Development - Notes / Domino | Added by Roberto Boccadoro

When XPages came to Domino it introduced many Domino developers to Java. Because the IDE was based on Eclipse, it also introduced Domino developers to standard elements of Java development on Eclipse.

Adding Code Coverage Reports To Domino-Container-Run Tests  

By Jesse Gallagher | 3/12/24 2:08 AM | Development - Notes / Domino | Added by Roberto Boccadoro

When you're writing test suites for your code, it can be very useful to use a tool to analyze the code coverage of your tests. While people can get a little obsessive about coverage percents, there's certainly no denying that it's helpful to know how much of your code is actually run when testing, and also being able to look down into the specifics of what is covered.

Attention, REST service user!  

By Oliver Busse | 2/22/24 1:19 AM | Development - Notes / Domino | Added by Roberto Boccadoro

I lately came across a problem with Domino 14, but it turned out that this issue applies to 12.0.2 FP3 as well. When you use the REST service control from the Extension Library to provide a custom REST service, you will get an exception which has nothing to do with anything in your XPage or your Java code. The root cause is yet to be examined, but the defect article is already up:

XPages JEE 2.15.0 and Plans for JEE 10 and 11  

By Jesse Gallagher | 2/22/24 1:09 AM | Development - Notes / Domino | Added by Roberto Boccadoro

Today, I released version 2.15.0 of the XPages Jakarta EE project. As is often the case lately, this version contains bug fixes but also a few notable features: You can now specify Servlets in WEB-INF/web.xml (as opposed to just via the @WebServlet annotation. This is helpful for defining a Servlet when the actual implementation is in a JAR or when following non-annotation-based examples You can now specify context-param values in WEB-INF/web.xml in the NSF and META-INF/web-fragment.xml in JAR design elements, which will be available to JSP, JSF, JAX-RS, @WebServlet-annotated Servlets, and web.xml-defined Servlets Added @BooleanStorage annotation for NoSQL entities to define how boolean values are converted to note items Added CRUD operations for calendar events to NoSQL, around a few new methods on Repository. This exposes some of the capabilities of NotesCalendar and can be used for, for example, providing an iCalendar feed based on a mail database. To go with that, XPages JEE also re-exports iCal4J as included in the Domino stack for NSF use, though this API is... not smooth The first two here are focused around bringing NSFs more in line with "normal" Jakarta EE applications, while the latter are some nice improvements for the NoSQL driver. I hope to put the last one in particular to good use - for example, OpenNTF's site will be able to provide a calendar of webinars and other events that we can manage internally using a normal Notes calendar, and that sounds nice to me.

XPages Date Field Issue: Solving the One-Day Jump on Every Save  

By Martin Pradny | 2/16/24 11:17 AM | Development - Notes / Domino | Added by Oliver Busse

A user reported a very strange issue - when a document with a date field is saved, it changes the value one day to the past. With every save. But only for some dates, not all. It turned out to be a mystery that goes deep into XPages and Notes/Java APIs.