Genii Weblog


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


Thu 26 Mar 2020, 03:47 PM
Yesterday, in my post From REST to Notes db in two seconds, I showed how you could pull data from a REST API and create an "instant" database. But, of course, the devil is in the details, and not all formats work particularly well. I have a special interest in Salesforce as a lot of friends have started to work for them or with the software, so I decided to show how some sample Salesforce data including custom fields would translate.
 
I should note, these demos are currently done in LotusScript with the Midas LSX in an unreleased version. We are building them into Exciton Power for Node.js. Both should be available in a matter of weeks, and any feedback would be greatly appreciated.
 
First, the data itself. Assume that the following was pulled in a query from a Salesforce REST API. It is only one of the records, but they all look like this.
 
Inline JPEG image
 
There are a number of default choices we make for you. There is a display title which is different than the Notes item sometimes, which is yet again different than the JSON value. For example, the "attributes" value is a JSON object, so how should we save it? How should we display it in Notes? Here are a few of the rules we follow:
 
1) For the "attributes"  object, we save two separate internal items:  attributes.type with the value "Merchandise__c", and  attributes.url with the value "/services/data/v20.0/sobjects/Merchandise__c/a00D0000008oWP8IAM". That looks like this:
Inline JPEG image
 
 
2) On the form, we skip object items called "type" even though we save them in the document. We include an editable text field called attributes.url, but we use the name Attributes (url)as the prompt. That looks like:
Inline JPEG image
 
3) In the view, we skip the objects entirely. Thus, the Id is the first column shown, even though the  attributes.url item exists on the documents. 
Inline JPEG image
 
While we are looking at the view, note that the "OwnerId" item has a title Owner Id of but is saved as an item called OwnerId. We use the capitalization to add spacing here if it appears to be proper-cased. Another thing to note is that "Price__c" item has a title of Price but is saved under the name Price__c. We recognize that Salesforce adds those suffixes, and we keep them for data purposes but don't see a need to display them. 
 
4) Another thing to note is that a boolean (true/false) value such as "IsDeleted": true is saved as text "true", In the view, it is centered, and on the form, it shows as a radio button:
 
Inline JPEG image
 
There are many other small assumptions we make, some of which can be overridden with properties, but we are not done. We haven't entirely decided whether presumed date fields should be stored as such (probably), and whether we should be able to handle other special cases like the Salesforce suffix (maybe). The more examples we try, the more we learn and tweak.
 
If you have a REST API data source you use regularly or would be interested in using, let us know and we can see how well it fits.

Copyright © 2020 Genii Software Ltd.

Tags:

Wed 25 Mar 2020, 01:51 PM
A few days ago, Karl-Henry Martinsson (aka "TexasSwede") wrote an excellent post showing how you could use the new JSON classes in LotusScript to retrieve current state date on the pandemic. I encourage you to read it, and to see how the classes work and can be used with any JSON data, usually derived from a REST API.
 
As I have been talking about high value methods, I thought I'd show how chaining a few together can take the JSON result of a REST API from almost any system out there that provides one, and turn it into a Notes db with a minimum of effort. But rather than a simple drab form, I show how you can make the form look good and be more functional. 
 
A few advantages to this approach:
 
1) You don't have to learn almost anything about JSON;
2) You don't have to build a custom script for each REST API;
3) You can get down-and-dirty with the business logic, not the logistics.
4) You can develop a spiffy (or corporate-approved) look-and-feel to use over and over
5) You can even use this in Notes 9 (with slight changes to get the data)  because your company is slower than the last hour before quitting time.
 
If you want to skip to the demo, here it is. I'll show the code below it.
 
 
 
 
I'll show the more complex agent first, then the simpler agent.
 
Final agent:
 
Inline JPEG image
 
 
Simpler agent:
 
Inline JPEG image
 
You can see the images in higher resolution by view them by themselves.
 
 

Copyright © 2020 Genii Software Ltd.

Tags:

Thu 19 Mar 2020, 01:05 PM
 
Inline JPEG image
 
Talk is cheap, so as a follow-up on my post, Mind the Gap - A mid-level development manifesto, I wanted to show an example that we are adding to both the Midas LSX (LotusScript) and Exciton Power (Node.js and more).
 
A major draw of our Midas LSX has always been its simplicity combined with power. Developers just venturing into LotusScript could build fairly complex applications and do high-level tasks in a few lines of code. Now, we are taking that approach even further, and adding more high value methods that meet the needs of mid-level developers, while being powerful enough for pro coders to use as well. All the mid-level value methods from Midas are still in place, and some of those were pretty high value already, but these high value methods encapsulate a set of tasks into a single call mostly driven by data, not code.
 
Today's example is AppendFieldsWithJSON. This deceptively simply method allows the developer to populate fields on a form in a variety for formats, and allows styling based on a rich set of optional parameters. In the demo below, I start with the form design in the node-demo.nsf sample database from the AppDev Pack 1.3. In that sample, the forms are basic, only really intended to hold data, not to display or edit it. I decided to show how you could dynamically create a form with the same fields (and more) using a simple JSON array of values. The goal is similar to the goal of HCL Volt, but at a level where a mid-level developer can build up a toolkit combining the automatic generation of design with the business logic needed for their individual company. Also, as we'll see in future posts, the resulting form elements can be further manipulated and enhanced with existing mid-level methods.
 
Through the demo, I show how you can tweak the script to build up to a fancier form, all using the same AppendFieldsWithJSON call. I show how you can easily add additional fields just by adding them to the JSON value. For example, the image at the top includes the simple text fields and one number field from the node-demo.nsf Contact form plus a new computed FullName field.
 
Because this process is data-driven, you can make a script that follows company guidelines and includes all sorts of common features and styles, but then dynamically create the form fields wherever you like. There will likely be additional demos for this high value method, as it can actually do much more than I show here.
 
 
 
 

Copyright © 2020 Genii Software Ltd.

Tags:

Thu 19 Mar 2020, 10:06 AM
Inline JPEG image
 
Low-Code and Pro-Code Advances
HCL has done a great job building up the infrastructure for Domino 11, and has made good progress toward a micro-services architecture, basic Node.js support, and other goodies for pro coders. Simultaneously, they've been adding value for low coders/citizen developers with HCL Volt. But as they have acknowledged many times, there is too much of a gap between the two. It is difficult to make the leap from citizen developer to pro coder. If anything, the gap is widening, and HCL doesn't seem to have particularly good answers for how to fill that gap. They have plans, but not the grand vision required.
 
The need is great and urgent
This is a problem. As governments and companies grapple with the increasingly long-term implications of the COVID-19 pandemic on their need for running distributed enterprises, they will need developers who are closer to the business end than the tech end, or the very mid-level developers who are left out or marginalized by recent app dev efforts. There is no time to waste, and plenty of other companies trying to meet the needs with solutions and technologies no where near as mature or complete as Domino.
 
Defining what is needed
We need APIs and technologies to bridge the gap. They need to be powerful, yet simple. They need to be intuitive enough that somebody who didn't study software in college can pick it up, but still flexible enough that somebody who did study software in college can use it. We need APIs that focus on Domino-specific functionality, not simply general web or business tech. We need APIs that allow dynamic design, rapid evolution, and a pathway from day one to forever.
 
The Domino development future isn't built around LotusScript and formula language anymore, but a vast amount of LotusScript is still out there. So, we need APIs that bridge the gaps between LotusScript and formula language and the more widely accepted languages, JavaScript, Java, Python, TypeScript, Go, and so forth. We need APIs that allow mid-level and pro-coders to tap into the vast libraries of modules in NPM and Apache Maven and others. We need APIs that allow mid-level and pro-code developers to take results and logic from these shared modules and libraries and use them inside Notes/Domino quickly and completely. We need APIs that allow quick and seamless integration with other software packages and platforms. While the AppDev Pack is a good starting point, it deals with Domino as if it is nothing more than a data store, when it is really a design and application store. We need APIs that recognize those features and use them effectively, inside and outside of Domino. We need APIs that work on any device, that allow both server and client-side logic, and all within a secure framework.
 
If HCL doesn't meet the need, we must
The world is in chaos and will be for a long time. For the sake of our customers, our companies, and ourselves, we need to make this work. At Genii Software, we have a long history of building for the mid-level developer, and helping the citizen developer become a mid-level developer, and eventually a pro-coder. We cannot and will not wait to see if HCL can meet this need all by itself. Keeping businesses intact, functioning and moving forward is our primary goal, and Notes/Domino is the best platform for accomplishing that, but only if we can tap into its strengths. Creative, new applications built around collaboration and distributed, secure enterprises are needed now, today, perhaps even yesterday. Of course, Genii Software isn't the only ISV developing solutions in this area. If you are aware of others, please mention them in the comments so people know. Let's do this! 
 
Update: Watch a demo of one of the API methods we are trying out in my new post: High value methods: AppendFieldsWithJSON.
 

Copyright © 2020 Genii Software Ltd.

Tags:

Mon 16 Mar 2020, 06:33 PM
Inline JPEG image
 
The world is in crisis, and there's little doubt that for many of us, things will get worse before they get better. For some, much worse. We will be sorely tested, but we will prevail. (Though some of our leaders may not survive the mistakes they have made.)
 
But those of us in the high tech world have a ray of light to offer. There will be unprecedented new demand for collaboration, communication, and networking to keep the world running while we are all hunkered down in the backs of our individual caves, hoping the saber tooth tiger will please go away soon. Universities who have not previously understood the power and importance of remote learning are getting educated in a hurry. Companies that have mostly used face-to-face meetings as a way to ensure communication and solid business relationships must pivot rapidly to a world where most of their workers are remote for extended time periods, and all while the challenges facing their business are higher than ever before.
 
We can help. As Tom Lehrer would put it, we can do well by doing good. Notes/Domino, Connections, and Sametime are all products with a long history of meeting needs just like these, and have been recently enhanced to better serve those needs today. But that's not enough. We have a rare pause in our frenetic, hectic work lives to spend a little more time, first with our families and loved ones, but then with technologies we may not have learned yet, and integrations we may not have built yet, and toolkits which we may not have modernized yet.
 
We should seize this opportunity, not because we want to take advantage of calamity, but because we can help to alleviate it somewhat. We can help businesses survive the challenges, and even thrive with their newly isolated work forces. We have the technology and we have the energy. We need to find the creativity to solve the problems brought on with this new world paradigm. Most of us feel a little hopeless in the face of this virus, and there is precious little we can do about the crisis itself, but we can help companies face the ramifications. Perhaps we'll even feel a little more empowered if we do.
 
Certainly, we must take care of ourselves and loved ones, we must wash our hands, cough into our elbows, and maintain our social distance. But we can also take this adversity and turn it into a chance to do something more, something bigger.
 
Let's do this thing.
 

Copyright © 2020 Genii Software Ltd.

Tags:

Mon 9 Mar 2020, 02:49 PM
 
 
Given a fair amount of interest in our two Exciton Boost videos (see first and second), I thought I'd reopen the beta to others who might want to try Exciton Boost for themselves. I am sending out a new beta version today, so let me know soon. Also, the first Exciton Power beta should be ready soon, and it is open to anybody in the Exciton Boost beta program.
 
No special sign up form, they just get spammed.If you would be interested in participating in the beta, or even if you just have questions, contact me by e-mail at 
 

Copyright © 2020 Genii Software Ltd.