Ben Langhinrichs

Photograph of Ben Langhinrichs

IBM Champion logo

E-mail address - Ben Langhinrichs






April, 2019
SMTWTFS
 01 02 03 04 05 06
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Search the weblog





























Genii Weblog


Civility in critiquing the ideas of others is no vice. Rudeness in defending your own ideas is no virtue.


Wed 13 Feb 2019, 04:05 PM
Mix together my last two posts, Formula language in a JavaScript world: JSON db lookups and Choices in your on-the-fly data retrieval, and you get an odd but powerful concoction I have nicknamed @MQRY (Midas Query formulas). All this took to implement was current working code in the Midas C++ API exposed in formula language calls. Consider this the art of the possible. 
 
Since formula language calls can be made from LotusScript, Java, and Javascript using calls to evaluate, and can also be used in computed text, computed fields, etc, this makes a versatile general query tool. Selection of documents and values can be as broad as across multiple databases and as narrow as retrieving elements from inside rich text, or both at once. In this case, the two calls would return exactly the same data as in my  Choices post.
 
Would you like to see something like this in Notes/Domino 11? How about in Domino 8.5/9/10/11?
 
 
REM {Example of handlng query and retrieval in one call, returning JSON};
json := @DbCommand("MQRY":"NoCache"; 
  @DbName:"SELECT MaintVerNum=\"9.0.1 FP10\""; 
  "SPRnumber,APARID,Client_Server,OfficialDesc,Project,Regression{B},SecurityIssue{B},TRIAGEMODDATE"; 
  "IncludeUNID='Yes' Sort='Yes' Title='SPRNumber' Format='json' JSONFormat='Mongodb' ");
 
 
REM {Example of handlng query and retrieval in one call, returning XML};
xml := @DbCommand("MQRY":"NoCache"; 
  @DbName:"SELECT MaintVerNum=\"9.0.1 FP10\""; 
  "SPRnumber,APARID,Client_Server,OfficialDesc,Project,Regression{B},SecurityIssue{B},TRIAGEMODDATE"; 
  "IncludeUNID='Yes' Sort='Yes' Title='SPRNumber' Format='xml' ");
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Wed 13 Feb 2019, 11:08 AM
While it is fun to write about proof-of-concept features, let's talk for a moment about what you can do with the Midas LSX right now, because that is pretty awesome as well. To be clear, the XML option here will be Version 5.60 which is due out any day now, while the JSON and CSV are there now.
 
Scenario: Collect custom-specified data on-the-fly and return it in various formats
 
We may want the data returned as a file or as a stream. If we wanted to import the data into some other application, we might use CSV. If we wanted to stream it in a REST API for some other processing, we might return it as JSON. If we want to use it with a webpage generated using XSLT, we might return it as XML.
 
For this example, let's say we want a few selected fields from every SPR in the FixList db, but only the fixes in Version 9.0.1 FP10. We pass that information in, and in about five lines of LotusScript code, we return the following. I told Midas to sort by SPR to make it easier to read, but usually order doesn't matter in actual applications. Of course, you can try this yourself by requesting a Midas LSX evaluation and using the data-driven sample dbs to avoid coding altogether..
 
 
 
JSON for apps that retrieve and process in JavaScript (e.g., roll-your-own REST API)
 
Inline JPEG image
 
 
 
 
XML for apps that use XML for processing (e.g.,with XSLT transformations)
 
Inline JPEG image
 
 
 
CSV for apps that load data in for processing (e.g., business intelligence visualizations)
 
Inline JPEG image
 
Try this and other data retrieval by requesting a Midas LSX evaluation and letting us know what you would like to accomplish.
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Mon 11 Feb 2019, 11:11 AM
As my last post showed, I am working on a bunch of issues surrounding REST APIs in an evolving Notes/Domino world where JavaScript and DERN./NERD stacks and REST apis are a primary focus. There are some JSON parsing classes in LotusScript in 10.0.1. But there are still numerous places where it might be easier to use formula language, such as in computed text or computed field formula. In this case, I am assuming the url returns a JSON array of Notes rendered to JSON in the same basic format as Domino Access Services. With that in mind, is there a place in such a future for something like this proof-of-concept?
 
 
It may well be that HCL will add in such functionality, or something like it. In fact, I hope they do. Given that possibility, is there any reason for me to play with this? Well, two reasons. 
 
One is that HCL may not build it, and I'd like it in Notes 9 and beyond as well as Notes 11 or 12. 
 
Two is that it is only a small extension conceptually to replace "URL":"url" with alternate different parameters that use our Midas data mining and rendering technology to pull from multiple databases or from rich text fields with strong rendering. That might be exceedingly powerful even if HCL adds formula language counterparts to NotesJsonNavigator, NotesJsonElement, NotesJsonArray, and NotesJsonObject.
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Thu 7 Feb 2019, 02:51 PM
I thought it might be fun to see how the Midas LSX programming model might work as a REST API interface. No particular customer request, but definitely consistent with some of HCL's vision for Domino 11 and even low code development.. Here are a few results of my playing. I want to be clear, this isn't in a released product, and may not be. If anything, it is a demonstration about how flexible Midas programming can be. This required very little work other than adding a JSON parser and making Midas C++ API calls.
 
 
Results of GET with /testit.nsf/api/genii/8108D92AE62C4C9485257BCF006F2FEC/Body/Table.1/Row.2
 
Inline JPEG image
 
 
What that initial rich text field looks like
 
Inline JPEG image
 
 
 
JSON to use in PATCH with /testit.nsf/api/genii/8108D92AE62C4C9485257BCF006F2FEC/Body/Table.1/Row.2
 
Inline JPEG image
 
 
 
Results of subsequent GET with /testit.nsf/api/genii/8108D92AE62C4C9485257BCF006F2FEC/Body/Table.1/Row.2
 
Inline JPEG image
 
 
Modified rich text field after this patch
 
Inline JPEG image
 
 
Doing the same basic logic in LotusScript (for comparison for those who know Midas LSX)
 
' *** Code below is untested
 
Call rtitem.Connect("", "testit.nsf", "8108D92AE62C4C9485257BCF006F2FEC", "Body")
Set rttable = rtitem.DefineChunk("Table 1; Row 2)
 
' *** Get column one data
Set rtcell = rttable.DefineSubChunk("Inside Column 1)
col1text = rtcell.UnformattedText
col1html = rtcell.GenerateHTML(...)
 
' *** Get column two data
Call rtcell.GetNextTarget()
col2text = rtcell.UnformattedText
col2html = rtcell.GenerateHTML(...)
 
' *** Get column three data
Call rtcell.GetNextTarget()
col3text = rtcell.UnformattedText
col3html = rtcell.GenerateHTML(...)
 
 
' *** Change column one data
Set rtcell = rttable.DefineSubChunk("Inside Column 1)
Call rtcell.ChangeFont("+Italic")
 
' *** No change to column two data
Call rtcell.GetNextTarget()
 
' *** Change column Three data
Call rtcell.GetNextTarget()
Call rtcell.Text = "A terrific debut"
 
rtitem.Save
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Thu 10 Jan 2019, 03:38 PM
Continuing on from yesterday's post, I should emphasize that the best rendering in the world only works if the target supports the CSS and HTML that make up the page. When we are talking about email that goes outside of your Notes network, even to others within your company who may be reading on Gmail or Outlook 365 or a mobile device, not everything is supported that you might find in a web page on a modern browser. Therefore, when CoexLinks Fidelity renders an email to MIME to leave Notes, it has to build in logic to allow it to degrade gracefully and minimally.
 
All of the following except the first are rendered to MIME by CoexLinks Fidelity, and then sent out through the normal Domino channels. There are many other email clients or devices, but this should give a sense of what kind of degradations might be expected and how they are handled. As an example, in Office 365, the background of the table rows that are gradients is set to whichever of the gradient colors best contrasts with the text within. The PC Gmail and two mobile examples are all from the same email displayed in various ways.
 
When we can't make it perfect, we make it as good as possible. In all our products.
 
 
 
Notes client (rich text)
Inline JPEG image
 
 
Gmail on Firefox on PC
Inline JPEG image
 
 
 
Office 365
Inline JPEG image
 
 
 
Gmail app on Samsung J23 phone
Inline JPEG image
 
 
 
Email app on Samsung J23 phone
Inline JPEG image
 
 
 
In comparison, the ordinary Notes 10 MIME rendering is uniformly degraded across all mail 
Inline JPEG image

Copyright © 2019 Genii Software Ltd.

Tags:

Tue 8 Jan 2019, 10:13 PM
I'm glad to see the Domino Jams taking place, but since not everybody will even move to IBM Notes/Domino 10 in the near future, note that this demo would look the same if run in Notes/Domino 7 or 8 or 8.5 or 9 or 10. And yes, you can rest assured it will work in HCL Notes/Domino 11 when that comes around.
 
The fact of the matter is, if everybody would stick to simple text in Notes, there would be no need for Genii Software's products. In fact, if everybody carefully built their rich text content with web rendering in mind, there would be less need for Genii Software's products. But there would also be little need for Notes. 
 
The fact is, people out there use all sorts of rich text constructs, thinking that whatever they create will keep looking the way it should. This sample was built around an actual customer issue from December, though I adapted it for demo purposes to be both generic and easy to visualize. The customer used the gradient colors for the title rows and had no borders except a table border. Easy enough to imitate, but not so easy for the Domino web engine to render. I am building demos showing this and other documents based on actual customer issues rendered for use in email, mobile apps, JSON, web apps, XPages apps. The results vary some, but in all cases, the Genii products come very close to rendering the customer's data the way it was built. (Note: this was not from rich text a person created by hand, but a rendered form, which is often the source of complex content.)
 
Can you spot the differences? If so, do you think your employees, partners, and customers might as well?
 
 
 
Inline JPEG image

Copyright © 2019 Genii Software Ltd.

Tags: