Ben Langhinrichs

Photograph of Ben Langhinrichs

IBM Champion logo

E-mail address - Ben Langhinrichs






May, 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 31

Search the weblog





























Genii Weblog


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


Tue 21 May 2019, 09:21 AM
Inline GIF image
 
I've noticed a few times recently something we haven't seen much in a while: new people needing to learn/understand Notes admin or development, or just needing to understand what Notes/Domino is all about. If all goes well, this may happen more and more. But we need a better answer than suggesting they go out and see "all the content online". We need to start thinking about being more organized. With luck, HCL and partners like TLCC will offer the right courses or content, but right now the content out there is often dated, obsolete, too advanced, too confusing, or lacking in context for a new user. 
 
We need to ask ourselves, what should an admin, developer, or manager read first? What provides enough roadmap that they'll understand the context of all that information. We don't have an amazing resource like Saleforce's Trailhead that is already highly organized and streamlined, so we're going to have to play catch up. Saying "there's lots of great content online" is useless to people starting out who don't know where to start, what to trust, and how to focus. As ISVs and BPs, and for those who work for HCL, these are our potential customers, so helping them is also a first step to building relationships with them. We've been an old buddy network for so long, we aren't always prepared to welcome and guide the newbies. But doing so will help all of us, so let's get prepared. Put together a solid resource sheet ahead of time, and you may develop a relationship with a customer that needs you as much as you need them. If you offer training materials, courses, etc., make sure it is clear what is needed for someone either new to Notes/Domino (and Sametime, etc,.) or who has not used it in years. Also, spruce it up and make sure it is up-to-date.
 
Have you ever thought about the fact that the word noob is just the word boon turned around? If we can turn around these noobs, they can be boons to our business and the community. 
 
Of course, if any of you can build a magical experience like Trailhead for Notes/Domino, do so and I'll happily send people to you. In the meantime, let's do the best with what we have.

Copyright © 2019 Genii Software Ltd.

Tags:

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: