Genii Weblog


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


Thu 27 Jun 2019, 10:50 AM
Watching as HCL has taken over development of the ICS products, it has been encouraging to see signs of a focus not just on new features, but on follow-through with features that are already there. Sometimes, that is a commitment to fixing bugs, but sometimes it goes deeper. If HCL really wants to make these products a success again, that commitment and focus must continue. Because the fact is, IBM did just fine adding features. They listened to customers and added features for years. Where they lost their focus was on the follow-through to make sure each feature was complete and fully integrated.
 
Let me show an example. IBM has strongly espoused a commitment to standards, accessibility, and internationalization. Hardly surprising given its strong international customer base as well as the burgeoning regional and international requirements for accommodation of those with different disabilities. But in recent years, IBM has often added the appropriate feature but not followed through.
 
 
I) Here's the feature (language tagging for accessibility and search)
 
Take a look at the following seemingly identical lines:
 
L'eau monte au fur et à mesure de la fonte des nieges.  <-- Untagged, so defaults to English as the post is in English
 
L'eau monte au fur et à mesure de la fonte des nieges.  <-- Language tagged as 'French' using the text properties
 
Inline JPEG image
 
IBM added language tagging several versions ago, and it solved a customer problem with Notes content and accessibility. Watch the video below to see the difference in how a screen reader would read this line depending on whether it is tagged as English (or defaults to it because the page is English) or tagged as French:
 
 
 
II) But where's the follow-through?
 
So, IBM has added the feature and it works well in the Notes client. But what if that same content is displayed on the web or a mobile device or sent through email? Domino completely ignores the language tagging.
 
Rendered by Domino HTTP. Note that there is no lang attribute on the <font> tag:
 
Inline JPEG image
 
Rendered by the Midas LSX. Note the lang attribute on the second <span> tag where it belows.
 
Inline JPEG image
 
 
But that is not the only way that IBM failed to follow through. This language tagging is only available on text inside a rich text field. You can't set it on text in a simple text field such as the subject. You can't set in anywhere in the form design. You can't even set it in the field properties so that an entire field is tagged. A very useful feature, but without the follow-through, it just leads to aggravation and workarounds and people abandoning the product.
 
 
III) Will HCL do better?
 
That is the multi-billion dollar question. I see positive signs, and the HCL people I talk to very much want to do better, but there are a lot of holes left and a lot of follow-through unfollowed. It is encouraging to see efforts such as the Redesigning Templates project, because that is another area where follow-through has been lacking, It is also encouraging to see HCL work with business partners and ISVs, as IBM sometimes resisted that, and this is too much to do alone.
 
For now, I'd encourage other business partners and developers and admins to submit ideas to HCL that are not simply new features or bug fixes, but also follow-through enhancements on accessibility, privacy, spit-and-polish, etc.
 
 
IV) Can Genii products help?
 
Yes and no. Language tagging support has been added to all our products, so if language is tagged it will be rendered in email by CoexLinks Fidelity, in applications by AppsFidelity, and in exports by the Midas LSX and CoexLinks Migrate. But while we can provide workarounds for some form issues, we can't add tagging to design. We can't change interface issues or make it easier to set the language for an entire document or rich text field or text field. Those things are up to HCL and up to customers and partners to request.
 
By the way, there are many, many other issues with accessibility. This is just an example to give an idea of where a feature is there, but with a little extra effort could be far more useful.
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Thu 13 Jun 2019, 11:03 PM
This is my second post in the series introduced in Delving deeper into your data - Intro in which I show how the Midas LSX can be used to query deep into Notes data and return results in JSON or XML for manual or programmatic purposes.  In Part 1, I showed how to search across all graphics in the Body fields of a database, returning only those that met some criteria in a JSON result set. In this, I show how the Midas LSX can expand to handle multiple databases, and how the results could also be XML if that were desired. I expand on the flexibility of formulas using chunk properties. So, let's look at the second question I posed in the intro: 
 
How would I find all doclinks in our three sales dbs that point to our product db? Or the ones that don't?
 
As before, I am using databases that are available in place of an actual sales dbs and product db. For the purpose of this demo, I use the Business Partner forums for 2006, 2007, and 2008. In place of the product db, I'll use the Fix List database, as people occasionally put links to specific SPRs and such.  Results for all three dbs will be returned together. We will cycle through rich text chunks with a target of 'Doclink', and since the replica id for the fix list db is 8525692D0056EDAF, we will make the chunk filter formula (see Part 1 for more details on that) we would use would be @ChunkStr(LinkReplicaID) = "8525692D0056EDAF". (If we wanted all the doclinks that pointed anywhere else, we'd use != instead of =.)
 
Now, what do we want in our result set? I decided to add the Subject of the document, but then rather than giving you individual pieces, I used a formula to generate the Notes URL. It has to be clever enough to only use the replica id if it is a db link, only the replica id and view id if it is a view link, but use all three if it is a regular doclink. The formula I used was:
 
"notes:///" + @ChunkStr(LinkReplicaID) + @If(@ChunkStr(LinkViewUniversalID)="00000000000000000000000000000000"; ""; "/" + @ChunkStr(LinkViewUniversalID) + @If(@ChunkStr(LinkNoteUniversalID) = "00000000000000000000000000000000"; ""; "/" + @ChunkStr(LinkNoteUniversalID)))=NotesURL
 
Now, let's see what this looks like as a simple result set in XML.
 
Inline JPEG image
 
or we could return the same result set as JSON:
 
Inline JPEG image
 
We could have sorted the results for either. but by default a result set generated from a selection formula is order independent, as both XML and JSON are in this kind of task.
 
Now, what if we needed each of the results to have more complete document information? For JSON, we'd use the Domino format which included doc information. For XML, we'd set a parameter called DominoMetadata='Yes'. If we generated the same two results with these changes, we'd get:
 
Inline JPEG image
 
or the same result set in JSON using the Domino format:
 
Inline JPEG image
 
 
 

Copyright © 2019 Genii Software Ltd.

Tags:

Mon 10 Jun 2019, 04:58 PM
On Friday, I posted Delving deeper into your data - Intro, in which I introduced the series and its goals. I started by suggesting a series of questions or queries we might want to answer that all go deeper than you can with DQL or selection formulas or views. My purpose is to explain more about how the Midas LSX can answer these sorts of questions, and how it can provide the answers in convenient JSON or XML form. The first question: 
 
How would I find all the product images in our offerings database that do not have corporate's dictated 1.91:1 aspect ratio or that are under 450 pixels wide?
 
To answer this, we have to iterate through the documents. While we could narrow down that set using a view or selection formula or DQL, I'm going to assume we are checking all the documents. The Midas part comes in when we go inside the document and inside one or more rich text fields to iterate through the images. Take a look at the Export Directive from our Export to JSON sample db, a data driven way of harnessing the Midas engine without having to write any code. The numbers below match the numbers of the image below:
 
1) Select all the documents (this is where we could use various criteria including DQL.
2) Specify what values we want to show up in the JSON. Both methods for getting a chunk property are used.
3) We have chosen to split the result by chunk, so we have to specify the rich text field and the target type. We will use 'Graphic' which refers to any image. See the Midas 101 - Chunk Definitionspost for more details - the fact that it was written 16 years ago should give you an idea of how durable the chunk concept has proven to be.
4) The chunk filter formula is like a selection formula for chunks. If it evaluates to True, the image is included and a record is written to JSON for this result. If not, it is skipped.
5) The JSON format to use is specified. There is a Midas-defined default format, but you can change to MongoDB or Salesforce or any of the others.
 
Inline JPEG image
 
Now, you may have noticed that in my chunk selection formula, I did basically the opposite of the question. That is because I don't have a product database with images, so instead I used one of the old Business Partner forum databases from 2007, and I will look for any images in the 13000+ documents in that db to see if there are images that are in the correct range and over the specified size. It turns out, there are six of them. See the JSON result set below. This took about 10 seconds, though there are lots of optimization details I ignored for the sake of this demo.
 
I'm going to leave this here without a lot more discussion, but please don't hesitate to ask in the comments or by email if you want clarification or are curious about the features. By the way, the actual chunk filter formula to answer the original question would be @ChunkNum(GraphicRatio) != 1.91 | @ChunkNum(GraphicWidthPX) < 450, but I'm guessing you figured that out for yourself.
 
Inline JPEG image
 

Copyright © 2019 Genii Software Ltd.

Tags:

Fri 7 Jun 2019, 12:33 PM
We live in a data driven world, and finding the useful data means searching.. Google (aka Alphabet) is a hugely valuable company because they figured out how to offer better searching on data. When HCL/IBM wanted to reignite interest in Notes/Domino, one of their highly publicized new features was DQL, because it offers faster and better searches on data.
 
Yet, there are some searches on Domino data that are painfully hard to do or painfully slow to execute, For that reason, I wanted to do a series on how the Midas engine allows better, deeper searches into your data, and how it can harness DQL or other techniques to get at that data quickly and efficiently. Also, how the results can be delivered as JSON or XML or other formats, depending on what you need.
 
But rather than starting with a demo, I'm going to pose a few questions which will be addressed in the following posts.
 
1) How would I find all the product images in our offerings database that do not have corporate's dictated 1.91:1 aspect ratio or that are under 450 pixels wide?
 
2) How would I find all doclinks in our three sales dbs that point to our product db? Or the ones that don't?
 
3) How would I see what bullet point items we've used in the ten highest earning proposals? In the ten lowest earning?
 
4) Given our accessibility rules, which graphics in our four public-facing dbs have heights greater than 1 pixel but no alt text?
 
5) Are there any unredacted credit card numbers appear in our discussion and job posting databases? How about only in certain views?
 
6) Are there any zero size attachments in our discussion databases? Any greater than 10MG in size? How about greater than 4MG in size from before 2017?
 
Each of these should be answerable without writing a lot of code, ideally using a data-driven approach, and the results should be available in JSON or XML.
 
Inline GIF image
 

Copyright © 2019 Genii Software Ltd.

Tags:

Tue 4 Jun 2019, 11:34 AM
Inline JPEG image
 
Twenty-two years ago, I quit my stable job at a prestigious international law firm, leaving behind my reliable salary and excellent benefits to try to make it on my own. My wife and three young kids depended on me, so it was scary, but I'd just recently released my quirky new software product and hoped it would exceed the success of my earlier Notes product, the @YourCommand toolkit, which had brought in a nice supplemental income but not enough to pay the mortgage and feed the hungry mouths.
 
That quirky new software was the Midas Rich Text LSX. Those were heady days in the Lotus Notes world with Version 4 flying high and its exciting addition of LotusScript making Notes developers and customers drool with excitement. (Didn't take much in those days.) Having extended formula language with my first product, it seemed a natural to extend this new scripting language, but I had no idea whether companies really wanted to make rich text jump through hoops.
 
I guess they did. 
 
I was thinking about this as I received a new order today for Midas, now called the Midas LSX as it does more than just rich text tricks. I also sent off a half dozen invoices for Midas maintenance contracts and agreed to a large proposed Midas trial at another company. I have other products as well, even one that has made more money (looking at you, CoexLinks Fidelity), but the incredible longevity of the Midas LSX still astonishes me, and the range of products that have spun off Midas already (both custom and public) is inspiring.
 
So, I guess they still do.
 
Thank you all, and don't count Midas out for some major surprises in the near future, including some with a very modern Notes/Domino 11 twist.

Copyright © 2019 Genii Software Ltd.

Tags: